summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build-cmake-conan.yml8
-rw-r--r--.github/workflows/build-switch.yml.bak (renamed from .github/workflows/build-switch.yml)2
-rw-r--r--.github/workflows/reLCS_msvc_amd64.yml (renamed from .github/workflows/reVC_msvc_amd64.yml)14
-rw-r--r--.github/workflows/reLCS_msvc_x86.yml (renamed from .github/workflows/reVC_msvc_x86.yml)16
-rw-r--r--CMakeLists.txt4
-rw-r--r--README.md201
-rw-r--r--conanfile.py18
-rw-r--r--gamefiles/TEXT/ENGLISH.gxtbin0 -> 547152 bytes
-rw-r--r--gamefiles/TEXT/american.gxtbin424134 -> 0 bytes
-rw-r--r--gamefiles/TEXT/french.gxtbin470132 -> 562636 bytes
-rw-r--r--gamefiles/TEXT/german.gxtbin462030 -> 567290 bytes
-rw-r--r--gamefiles/TEXT/italian.gxtbin459086 -> 557928 bytes
-rw-r--r--gamefiles/TEXT/russian.gxtbin420604 -> 0 bytes
-rw-r--r--gamefiles/TEXT/spanish.gxtbin455414 -> 560592 bytes
-rw-r--r--gamefiles/models/fonts_r.txdbin524584 -> 0 bytes
-rw-r--r--gamefiles/models/generic.txdbin1168376 -> 0 bytes
-rw-r--r--gamefiles/models/particle.txdbin2668072 -> 0 bytes
-rw-r--r--premake5.lua965
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/animation/AnimBlendAssocGroup.cpp74
-rw-r--r--src/animation/AnimBlendAssocGroup.h1
-rw-r--r--src/animation/AnimBlendAssociation.cpp6
-rw-r--r--src/animation/AnimBlendAssociation.h1
-rw-r--r--src/animation/AnimManager.cpp942
-rw-r--r--src/animation/AnimManager.h30
-rw-r--r--src/animation/AnimationId.h103
-rw-r--r--src/animation/CutsceneMgr.cpp674
-rw-r--r--src/animation/CutsceneMgr.h128
-rw-r--r--src/animation/CutsceneMgr_overlay.cpp1030
-rw-r--r--src/audio/AudioCollision.h2
-rw-r--r--src/audio/AudioLogic.cpp3560
-rw-r--r--src/audio/AudioManager.cpp93
-rw-r--r--src/audio/AudioManager.h37
-rw-r--r--src/audio/AudioSamples.h15464
-rw-r--r--src/audio/MusicManager.cpp52
-rw-r--r--src/audio/PolRadio.cpp207
-rw-r--r--src/audio/audio_enums.h1286
-rw-r--r--src/audio/sampman.h2533
-rw-r--r--src/audio/sampman_miles.cpp292
-rw-r--r--src/audio/sampman_oal.cpp238
-rw-r--r--src/collision/ColBox.h10
-rw-r--r--src/collision/ColLine.h4
-rw-r--r--src/collision/ColModel.cpp138
-rw-r--r--src/collision/ColModel.h4
-rw-r--r--src/collision/ColPoint.h4
-rw-r--r--src/collision/ColSphere.h5
-rw-r--r--src/collision/ColStore.cpp176
-rw-r--r--src/collision/ColStore.h18
-rw-r--r--src/collision/ColTriangle.h1
-rw-r--r--src/collision/Collision.cpp18
-rw-r--r--src/collision/TempColModels.cpp87
-rw-r--r--src/collision/TempColModels.h15
-rw-r--r--src/control/AutoPilot.cpp2
-rw-r--r--src/control/Bridge.cpp63
-rw-r--r--src/control/Bridge.h4
-rw-r--r--src/control/CarAI.cpp15
-rw-r--r--src/control/CarCtrl.cpp567
-rw-r--r--src/control/CarCtrl.h32
-rw-r--r--src/control/Curves.cpp2
-rw-r--r--src/control/GameLogic.cpp22
-rw-r--r--src/control/GameLogic.h1
-rw-r--r--src/control/Garages.cpp782
-rw-r--r--src/control/Garages.h56
-rw-r--r--src/control/OnscreenTimer.cpp103
-rw-r--r--src/control/OnscreenTimer.h24
-rw-r--r--src/control/PathFind.cpp6
-rw-r--r--src/control/Pickups.cpp24
-rw-r--r--src/control/Pickups.h3
-rw-r--r--src/control/Remote.cpp3
-rw-r--r--src/control/Remote.h2
-rw-r--r--src/control/Replay.cpp2
-rw-r--r--src/control/Replay.h4
-rw-r--r--src/control/Script.cpp1253
-rw-r--r--src/control/Script.h188
-rw-r--r--src/control/Script10.cpp426
-rw-r--r--src/control/Script2.cpp792
-rw-r--r--src/control/Script3.cpp1145
-rw-r--r--src/control/Script4.cpp826
-rw-r--r--src/control/Script5.cpp651
-rw-r--r--src/control/Script6.cpp791
-rw-r--r--src/control/Script7.cpp624
-rw-r--r--src/control/Script8.cpp635
-rw-r--r--src/control/Script9.cpp781
-rw-r--r--src/control/ScriptCommands.h256
-rw-r--r--src/control/ScriptDebug.cpp416
-rw-r--r--src/control/TrafficLights.cpp26
-rw-r--r--src/core/AnimViewer.cpp10
-rw-r--r--src/core/Cam.cpp74
-rw-r--r--src/core/Camera.cpp8
-rw-r--r--src/core/Camera.h1
-rw-r--r--src/core/Clock.cpp9
-rw-r--r--src/core/Clock.h3
-rw-r--r--src/core/FileLoader.cpp119
-rw-r--r--src/core/FileLoader.h1
-rw-r--r--src/core/Frontend.cpp130
-rw-r--r--src/core/Game.cpp83
-rw-r--r--src/core/Game.h10
-rw-r--r--src/core/General.h34
-rw-r--r--src/core/IniFile.cpp7
-rw-r--r--src/core/IniFile.h2
-rw-r--r--src/core/KeyGen.cpp106
-rw-r--r--src/core/KeyGen.h11
-rw-r--r--src/core/Leeds.cpp14
-rw-r--r--src/core/Leeds.h36
-rw-r--r--src/core/Pad.cpp13
-rw-r--r--src/core/Pad.h14
-rw-r--r--src/core/PlayerInfo.cpp6
-rw-r--r--src/core/Radar.cpp215
-rw-r--r--src/core/Radar.h87
-rw-r--r--src/core/Streaming.cpp282
-rw-r--r--src/core/Streaming.h27
-rw-r--r--src/core/World.cpp168
-rw-r--r--src/core/World.h16
-rw-r--r--src/core/Zones.cpp12
-rw-r--r--src/core/common.h14
-rw-r--r--src/core/config.h83
-rw-r--r--src/core/main.cpp115
-rw-r--r--src/core/main.h12
-rw-r--r--src/core/re3.cpp136
-rw-r--r--src/entities/Entity.cpp102
-rw-r--r--src/entities/Entity.h21
-rw-r--r--src/entities/Physical.cpp417
-rw-r--r--src/entities/Physical.h20
-rw-r--r--src/extras/custompipes.cpp10
-rw-r--r--src/extras/custompipes.h20
-rw-r--r--src/extras/custompipes_d3d9.cpp455
-rw-r--r--src/extras/custompipes_gl.cpp440
-rw-r--r--src/extras/postfx.cpp129
-rw-r--r--src/extras/postfx.h9
-rw-r--r--src/extras/shaders/colourfilterLCS.frag20
-rw-r--r--src/extras/shaders/colourfilterLCS_PS.hlsl10
-rw-r--r--src/extras/shaders/colourfilterVC.frag27
-rw-r--r--src/extras/shaders/colourfilterVC_PS.hlsl23
-rw-r--r--src/extras/shaders/leedsBuilding.vert28
-rw-r--r--src/extras/shaders/leedsBuilding_VS.hlsl43
-rw-r--r--src/extras/shaders/leedsBuilding_mobile.vert52
-rw-r--r--src/extras/shaders/leedsBuilding_mobile_VS.hlsl64
-rw-r--r--src/extras/shaders/leedsDefault.frag46
-rw-r--r--src/extras/shaders/leedsDefault.vert51
-rw-r--r--src/extras/shaders/leedsDefault_PS_x.hlsl49
-rw-r--r--src/extras/shaders/leedsDefault_VS_x.hlsl72
-rw-r--r--src/extras/shaders/leedsVehicle_mobile.frag74
-rw-r--r--src/extras/shaders/leedsVehicle_mobile.vert40
-rw-r--r--src/extras/shaders/leedsVehicle_mobile_PS.hlsl53
-rw-r--r--src/extras/shaders/leedsVehicle_mobile_VS.hlsl57
-rw-r--r--src/extras/shaders/make_hlsl.cmd3
-rw-r--r--src/extras/shaders/obj/colourfilterLCS_PS.csobin0 -> 308 bytes
-rw-r--r--src/extras/shaders/obj/colourfilterLCS_PS.inc28
-rw-r--r--src/extras/shaders/obj/colourfilterLCS_frag.inc22
-rw-r--r--src/extras/shaders/obj/colourfilterVC_PS.csobin648 -> 0 bytes
-rw-r--r--src/extras/shaders/obj/colourfilterVC_PS.inc56
-rw-r--r--src/extras/shaders/obj/colourfilterVC_frag.inc29
-rw-r--r--src/extras/shaders/obj/leedsBuilding_VS.csobin0 -> 652 bytes
-rw-r--r--src/extras/shaders/obj/leedsBuilding_VS.inc57
-rw-r--r--src/extras/shaders/obj/leedsBuilding_mobile_VS.csobin0 -> 808 bytes
-rw-r--r--src/extras/shaders/obj/leedsBuilding_mobile_VS.inc70
-rw-r--r--src/extras/shaders/obj/leedsBuilding_mobile_vert.inc54
-rw-r--r--src/extras/shaders/obj/leedsBuilding_vert.inc30
-rw-r--r--src/extras/shaders/obj/leedsDefault_ADD_PS.csobin0 -> 532 bytes
-rw-r--r--src/extras/shaders/obj/leedsDefault_ADD_PS.inc47
-rw-r--r--src/extras/shaders/obj/leedsDefault_BLEND_PS.csobin0 -> 608 bytes
-rw-r--r--src/extras/shaders/obj/leedsDefault_BLEND_PS.inc53
-rw-r--r--src/extras/shaders/obj/leedsDefault_ENV_VS.csobin0 -> 1204 bytes
-rw-r--r--src/extras/shaders/obj/leedsDefault_ENV_VS.inc103
-rw-r--r--src/extras/shaders/obj/leedsDefault_frag.inc48
-rw-r--r--src/extras/shaders/obj/leedsDefault_vert.inc53
-rw-r--r--src/extras/shaders/obj/leedsVehicle_mobile_PS.csobin0 -> 728 bytes
-rw-r--r--src/extras/shaders/obj/leedsVehicle_mobile_PS.inc63
-rw-r--r--src/extras/shaders/obj/leedsVehicle_mobile_VS.csobin0 -> 1556 bytes
-rw-r--r--src/extras/shaders/obj/leedsVehicle_mobile_VS.inc132
-rw-r--r--src/extras/shaders/obj/leedsVehicle_mobile_frag.inc76
-rw-r--r--src/extras/shaders/obj/leedsVehicle_mobile_vert.inc42
-rw-r--r--src/extras/shaders/obj/scale_PS.csobin0 -> 348 bytes
-rw-r--r--src/extras/shaders/obj/scale_PS.inc31
-rw-r--r--src/extras/shaders/obj/scale_frag.inc21
-rw-r--r--src/extras/shaders/scale.frag19
-rw-r--r--src/extras/shaders/scale_PS.hlsl19
-rw-r--r--src/fakerw/fake.cpp5
-rw-r--r--src/fakerw/rpworld.h1
-rw-r--r--src/fakerw/rwcore.h3
-rw-r--r--src/leeds/CustomSoundTrack.cpp12
-rw-r--r--src/leeds/CustomSoundTrack.h20
-rw-r--r--src/leeds/base/memoryManager.cpp75
-rw-r--r--src/leeds/base/memoryManager.h39
-rw-r--r--src/leeds/base/relocatableChunk.cpp38
-rw-r--r--src/leeds/base/relocatableChunk.h55
-rw-r--r--src/leeds/base/sList.h35
-rw-r--r--src/leeds/base/singletonManager.cpp36
-rw-r--r--src/leeds/base/singletonManager.h62
-rw-r--r--src/leeds/smallHeap.cpp20
-rw-r--r--src/leeds/smallHeap.h17
-rw-r--r--src/math/Vector.cpp15
-rw-r--r--src/math/Vector.h11
-rw-r--r--src/math/VuVector.h4
-rw-r--r--src/modelinfo/BaseModelInfo.cpp95
-rw-r--r--src/modelinfo/BaseModelInfo.h30
-rw-r--r--src/modelinfo/ClumpModelInfo.cpp68
-rw-r--r--src/modelinfo/ClumpModelInfo.h9
-rw-r--r--src/modelinfo/MloModelInfo.cpp21
-rw-r--r--src/modelinfo/MloModelInfo.h6
-rw-r--r--src/modelinfo/ModelIndices.cpp16
-rw-r--r--src/modelinfo/ModelIndices.h1170
-rw-r--r--src/modelinfo/ModelInfo.cpp111
-rw-r--r--src/modelinfo/ModelInfo.h21
-rw-r--r--src/modelinfo/PedModelInfo.cpp127
-rw-r--r--src/modelinfo/PedModelInfo.h10
-rw-r--r--src/modelinfo/SimpleModelInfo.cpp216
-rw-r--r--src/modelinfo/SimpleModelInfo.h37
-rw-r--r--src/modelinfo/TimeModelInfo.cpp29
-rw-r--r--src/modelinfo/TimeModelInfo.h9
-rw-r--r--src/modelinfo/VehicleModelInfo.cpp473
-rw-r--r--src/modelinfo/VehicleModelInfo.h49
-rw-r--r--src/modelinfo/WeaponModelInfo.cpp22
-rw-r--r--src/modelinfo/WeaponModelInfo.h10
-rw-r--r--src/modelinfo/XtraCompsModelInfo.cpp21
-rw-r--r--src/modelinfo/XtraCompsModelInfo.h19
-rw-r--r--src/objects/CutsceneObject.cpp3
-rw-r--r--src/objects/CutsceneObject.h1
-rw-r--r--src/objects/Object.h1
-rw-r--r--src/objects/ParticleObject.cpp11
-rw-r--r--src/objects/ParticleObject.h5
-rw-r--r--src/peds/Gangs.cpp35
-rw-r--r--src/peds/Gangs.h18
-rw-r--r--src/peds/Ped.cpp567
-rw-r--r--src/peds/Ped.h170
-rw-r--r--src/peds/PedAI.cpp47
-rw-r--r--src/peds/PedFight.cpp138
-rw-r--r--src/peds/PedType.h8
-rw-r--r--src/peds/PlayerPed.cpp3
-rw-r--r--src/peds/Population.cpp160
-rw-r--r--src/renderer/Coronas.cpp6
-rw-r--r--src/renderer/Fluff.cpp5
-rw-r--r--src/renderer/Font.cpp1016
-rw-r--r--src/renderer/Font.h25
-rw-r--r--src/renderer/Hud.cpp635
-rw-r--r--src/renderer/Hud.h25
-rw-r--r--src/renderer/MBlur.cpp3
-rw-r--r--src/renderer/Particle.cpp1284
-rw-r--r--src/renderer/Particle.h17
-rw-r--r--src/renderer/ParticleMgr.cpp32
-rw-r--r--src/renderer/ParticleMgr.h7
-rw-r--r--src/renderer/ParticleType.h9
-rw-r--r--src/renderer/PlayerSkin.cpp2
-rw-r--r--src/renderer/Renderer.cpp577
-rw-r--r--src/renderer/Renderer.h19
-rw-r--r--src/renderer/Shadows.cpp20
-rw-r--r--src/renderer/Shadows.h2
-rw-r--r--src/renderer/SpecialFX.cpp4
-rw-r--r--src/renderer/Sprite.cpp13
-rw-r--r--src/renderer/Sprite.h2
-rw-r--r--src/renderer/Timecycle.cpp276
-rw-r--r--src/renderer/Timecycle.h1
-rw-r--r--src/renderer/WaterCannon.cpp58
-rw-r--r--src/renderer/WaterCannon.h3
-rw-r--r--src/renderer/WaterCreatures.cpp4
-rw-r--r--src/renderer/WaterCreatures.h3
-rw-r--r--src/renderer/WaterLevel.cpp21
-rw-r--r--src/renderer/WaterLevel.h2
-rw-r--r--src/renderer/Weather.cpp27
-rw-r--r--src/renderer/Weather.h7
-rw-r--r--src/rw/Lights.cpp7
-rw-r--r--src/rw/RwHelper.cpp3
-rw-r--r--src/rw/TexRead.cpp12
-rw-r--r--src/rw/TxdStore.cpp93
-rw-r--r--src/rw/TxdStore.h11
-rw-r--r--src/rw/VisibilityPlugins.cpp250
-rw-r--r--src/rw/VisibilityPlugins.h35
-rw-r--r--src/save/GenericGameStorage.cpp130
-rw-r--r--src/skel/glfw/glfw.cpp10
-rw-r--r--src/skel/skeleton.cpp2
-rw-r--r--src/skel/win/gtalcs.icobin0 -> 2238 bytes
-rw-r--r--src/skel/win/gtavc.icobin81817 -> 0 bytes
-rw-r--r--src/skel/win/win.cpp10
-rw-r--r--src/skel/win/win.rc2
-rw-r--r--src/text/Messages.cpp85
-rw-r--r--src/text/Messages.h4
-rw-r--r--src/text/Text.cpp13
-rw-r--r--src/text/Text.h16
-rw-r--r--src/vehicles/Automobile.cpp1488
-rw-r--r--src/vehicles/Automobile.h8
-rw-r--r--src/vehicles/Bike.cpp44
-rw-r--r--src/vehicles/Bike.h6
-rw-r--r--src/vehicles/Boat.cpp5
-rw-r--r--src/vehicles/Cranes.cpp10
-rw-r--r--src/vehicles/DamageManager.cpp5
-rw-r--r--src/vehicles/DamageManager.h1
-rw-r--r--src/vehicles/Door.cpp55
-rw-r--r--src/vehicles/Door.h19
-rw-r--r--src/vehicles/Ferry.cpp833
-rw-r--r--src/vehicles/Ferry.h143
-rw-r--r--src/vehicles/HandlingMgr.cpp160
-rw-r--r--src/vehicles/HandlingMgr.h93
-rw-r--r--src/vehicles/Heli.cpp2
-rw-r--r--src/vehicles/Plane.cpp6
-rw-r--r--src/vehicles/Plane.h1
-rw-r--r--src/vehicles/Train.cpp88
-rw-r--r--src/vehicles/Transmission.cpp118
-rw-r--r--src/vehicles/Transmission.h2
-rw-r--r--src/vehicles/Vehicle.cpp320
-rw-r--r--src/vehicles/Vehicle.h45
-rw-r--r--src/weapons/ShotInfo.cpp6
-rw-r--r--src/weapons/Weapon.cpp10
-rw-r--r--utils/gxt/ENGLISH.txt18260
-rw-r--r--utils/gxt/american.txt14438
-rw-r--r--utils/gxt/build.bat10
-rw-r--r--utils/gxt/french.txt21800
-rw-r--r--utils/gxt/german.txt22035
-rw-r--r--utils/gxt/italian.txt21923
-rw-r--r--utils/gxt/spanish.txt22255
309 files changed, 99509 insertions, 77888 deletions
diff --git a/.github/workflows/build-cmake-conan.yml b/.github/workflows/build-cmake-conan.yml
index e5e80791..bf9b719f 100644
--- a/.github/workflows/build-cmake-conan.yml
+++ b/.github/workflows/build-cmake-conan.yml
@@ -1,4 +1,4 @@
-name: reVC conan+cmake
+name: reLCS conan+cmake
on:
pull_request:
push:
@@ -96,13 +96,13 @@ jobs:
conan export re3mss miles-sdk/master@
- name: "Download/build dependencies (conan install)"
run: |
- conan install ${{ github.workspace }} reVC/master@ -if build -o reVC:audio=${{ matrix.audio }} -o librw:platform=${{ matrix.platform }} -o librw:gl3_gfxlib=${{ matrix.gl3_gfxlib || 'glfw' }} --build missing -pr:h ./host_profile -pr:b default -s reVC:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
+ conan install ${{ github.workspace }} reLCS/master@ -if build -o reLCS:audio=${{ matrix.audio }} -o librw:platform=${{ matrix.platform }} -o librw:gl3_gfxlib=${{ matrix.gl3_gfxlib || 'glfw' }} --build missing -pr:h ./host_profile -pr:b default -s reLCS:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
env:
CONAN_SYSREQUIRES_MODE: enabled
- - name: "Build reVC (conan build)"
+ - name: "Build reLCS (conan build)"
run: |
conan build ${{ github.workspace }} -if build -bf build -pf package
- - name: "Package reVC (conan package)"
+ - name: "Package reLCS (conan package)"
run: |
conan package ${{ github.workspace }} -if build -bf build -pf package
- name: "Create binary package (cpack)"
diff --git a/.github/workflows/build-switch.yml b/.github/workflows/build-switch.yml.bak
index c0cdcab0..c47c634c 100644
--- a/.github/workflows/build-switch.yml
+++ b/.github/workflows/build-switch.yml.bak
@@ -1,5 +1,5 @@
-name: reVC cmake devkitA64 (Nintendo Switch)
+name: reLCS cmake devkitA64 (Nintendo Switch)
on:
pull_request:
push:
diff --git a/.github/workflows/reVC_msvc_amd64.yml b/.github/workflows/reLCS_msvc_amd64.yml
index a00c5d2c..690c6316 100644
--- a/.github/workflows/reVC_msvc_amd64.yml
+++ b/.github/workflows/reLCS_msvc_amd64.yml
@@ -1,4 +1,4 @@
-name: reVC premake amd64
+name: reLCS premake amd64
on:
pull_request:
@@ -37,14 +37,14 @@ jobs:
./premake5 vs2019 --with-librw --no-full-paths --glfwdir64=${{env.GLFW_BASE}}
- name: Build
run: |
- msbuild -m build/reVC.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}}
+ msbuild -m build/reLCS.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}}
# - name: Pack artifacts
# run: |
- # 7z a reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
+ # 7z a reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
- name: Move binaries to gamefiles
run: |
- mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.exe ./gamefiles/
- mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.pdb ./gamefiles/
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.exe ./gamefiles/
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.pdb ./gamefiles/
- name: Move dynamic dependencies to gamefiles
run: |
mv ./vendor/mpg123/dist/Win64/libmpg123-0.dll ./gamefiles/
@@ -52,12 +52,12 @@ jobs:
- name: Upload artifact to actions
uses: actions/upload-artifact@v2
with:
- name: reVC_${{matrix.buildtype}}_${{matrix.platform}}
+ name: reLCS_${{matrix.buildtype}}_${{matrix.platform}}
path: ./gamefiles/*
# - name: Upload artifact to Bintray
# uses: hpcsc/upload-bintray-docker-action@v1
# with:
-# repository: reVC
+# repository: reLCS
# package: ${{matrix.buildtype}}_${{matrix.platform}}
# version: 1.0-$(echo ${GITHUB_SHA}
# sourcePath: ./bin/${{matrix.platform}}/${{matrix.buildtype}}
diff --git a/.github/workflows/reVC_msvc_x86.yml b/.github/workflows/reLCS_msvc_x86.yml
index 1407aeae..9530f3ef 100644
--- a/.github/workflows/reVC_msvc_x86.yml
+++ b/.github/workflows/reLCS_msvc_x86.yml
@@ -1,4 +1,4 @@
-name: reVC premake x86
+name: reLCS premake x86
on:
pull_request:
@@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
platform: [win-x86-librw_d3d9-mss, win-x86-librw_gl3_glfw-mss, win-x86-librw_d3d9-oal, win-x86-librw_gl3_glfw-oal]
- buildtype: [Debug, Release, Vanilla]
+ buildtype: [Debug, Release]
steps:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
@@ -37,14 +37,14 @@ jobs:
./premake5 vs2019 --with-librw --no-full-paths --glfwdir32=${{env.GLFW_BASE}}
- name: Build
run: |
- msbuild -m build/reVC.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}}
+ msbuild -m build/reLCS.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}}
# - name: Pack artifacts
# run: |
- # 7z a reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
+ # 7z a reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
- name: Move binaries to gamefiles
run: |
- mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.exe ./gamefiles/
- mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.pdb ./gamefiles/
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.exe ./gamefiles/
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.pdb ./gamefiles/
- if: contains(matrix.platform, 'oal')
name: Move dynamic dependencies to gamefiles
run: |
@@ -53,12 +53,12 @@ jobs:
- name: Upload artifact to actions
uses: actions/upload-artifact@v2
with:
- name: reVC_${{matrix.buildtype}}_${{matrix.platform}}
+ name: reLCS_${{matrix.buildtype}}_${{matrix.platform}}
path: ./gamefiles/*
# - name: Upload artifact to Bintray
# uses: hpcsc/upload-bintray-docker-action@v1
# with:
-# repository: reVC
+# repository: reLCS
# package: ${{matrix.buildtype}}_${{matrix.platform}}
# version: 1.0-$(echo ${GITHUB_SHA}
# sourcePath: ./bin/${{matrix.platform}}/${{matrix.buildtype}}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5d29a834..04bc6be2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.14)
-set(EXECUTABLE reVC)
-set(PROJECT REVC)
+set(EXECUTABLE reLCS)
+set(PROJECT RELCS)
project(${EXECUTABLE} C CXX)
set(${PROJECT}_AUTHOR "${PROJECT} Team")
diff --git a/README.md b/README.md
index 9855f7af..b7caed99 100644
--- a/README.md
+++ b/README.md
@@ -1,196 +1,37 @@
-<img src="https://github.com/GTAmodding/re3/blob/miami/res/images/logo_1024.png?raw=true" alt="reVC logo" width="200">
-
-[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmiami&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=miami)
+# reLCS
+[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dlcs&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=lcs)
<a href="https://discord.gg/RFNbjsUMGg"><img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" /></a>
## Intro
-In this repository you'll find the fully reversed source code for GTA III ([master](https://github.com/GTAmodding/re3/tree/master/) branch) and GTA VC ([miami](https://github.com/GTAmodding/re3/tree/miami/) branch).
-
-It has been tested and works on Windows, Linux, MacOS and FreeBSD, on x86, amd64, arm and arm64.\
-Rendering is handled either by original RenderWare (D3D8)
-or the reimplementation [librw](https://github.com/aap/librw) (D3D9, OpenGL 2.1 or above, OpenGL ES 2.0 or above).\
-Audio is done with MSS (using dlls from original GTA) or OpenAL.
-
-We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in touch with us.
-
-## Installation
-
-- reVC requires game assets to work, so you **must** own [a copy of GTA Vice City](https://store.steampowered.com/app/12110/Grand_Theft_Auto_Vice_City/).
-- Build reVC or download the latest build:
- - [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_x86/miami/reVC_Release_win-x86-librw_d3d9-mss.zip)
- - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_d3d9-oal.zip)
- - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_gl3_glfw-oal.zip)
- - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/ubuntu-18.04-gl3.zip)
- - [MacOS 64bit x86-64](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/macos-latest-gl3.zip)
-- Extract the downloaded zip over your GTA VC directory and run reVC. The zip includes the binary, updated and additional gamefiles and in case of OpenAL the required dlls.
-
-## Screenshots
-
-![screen_ 1613087332](https://user-images.githubusercontent.com/1521437/107714111-f84f3200-6ccc-11eb-902e-d757481d579a.png)
-![screen_ 1613086852](https://user-images.githubusercontent.com/1521437/107714115-fa18f580-6ccc-11eb-9de5-eb4cd04865d3.png)
-![screen_ 1613086989](https://user-images.githubusercontent.com/1521437/107714103-f38a7e00-6ccc-11eb-88a3-c8c2033c51d6.png)
-![screen_ 1613087193](https://user-images.githubusercontent.com/1521437/107714106-f4bbab00-6ccc-11eb-96a9-13821d9b9684.png)
-
-## Improvements
-
-We have implemented a number of changes and improvements to the original game.
-They can be configured in `core/config.h`.
-Some of them can be toggled at runtime, some cannot.
-
-* Fixed a lot of smaller and bigger bugs
-* User files (saves and settings) stored in GTA root directory
-* Settings stored in reVC.ini file instead of gta_vc.set
-* Debug menu to do and change various things (Ctrl-M to open)
-* Debug camera (Ctrl-B to toggle)
-* Rotatable camera
-* XInput controller support (Windows)
-* No loading screens between islands ("map memory usage" in menu)
-* Rendering
- * Widescreen support (properly scaled HUD, Menu and FOV)
- * PS2 MatFX (vehicle reflections)
- * PS2 alpha test (better rendering of transparency)
- * Xbox vehicle rendering
- * Xbox world lightmap rendering (needs Xbox map)
- * Xbox ped rim light
- * Xbox screen rain droplets
- * More customizable colourfilter
-* Menu
- * More options
- * Controller configuration menu
- * ...
-* Can load DFFs and TXDs from other platforms, possibly with a performance penalty
-* ...
-
-## To-Do
-
-The following things would be nice to have/do:
-
-* Fix physics for high FPS
-* Improve performance on lower end devices, especially the OpenGL layer on the Raspberry Pi (if you have experience with this, please get in touch)
-* [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port)
-* Xbox port (not quite as important)
-* reverse remaining unused/debug functions
-* compare CodeWarrior build with original binary for more accurate code (very tedious)
-
-## Modding
-
-Asset modifications (models, texture, handling, script, ...) should work the same way as with original GTA for the most part.
-
-Mods that make changes to the code (dll/asi, CLEO, limit adjusters) will *not* work.
-Some things these mods do are already implemented in re3 (much of SkyGFX, GInput, SilentPatch, Widescreen fix),
-others can easily be achieved (increasing limis, see `config.h`),
-others will simply have to be rewritten and integrated into the code directly.
-Sorry for the inconvenience.
-
-## Building from Source
-
-When using premake, you may want to point GTA_VC_RE_DIR environment variable to GTA Vice City root folder if you want the executable to be moved there via post-build script.
-
-Clone the repository with `git clone --recursive -b miami https://github.com/GTAmodding/re3.git reVC`. Then `cd reVC` into the cloned repository.
-
-<details><summary>Linux Premake</summary>
-
-For Linux using premake, proceed: [Building on Linux](https://github.com/GTAmodding/re3/wiki/Building-on-Linux)
-
-</details>
+The aim of this project is to reverse GTA Liberty City Stories.
-<details><summary>Linux Conan</summary>
+## How can I try it?
-Install python and conan, and then run build.
-```
-conan export vendor/librw librw/master@
-mkdir build
-cd build
-conan install .. reVC/master@ -if build -o reVC:audio=openal -o librw:platform=gl3 -o librw:gl3_gfxlib=glfw --build missing -s reVC:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
-conan build .. -if build -bf build -pf package
-```
-</details>
+- reLCS requires game assets to work.
+- Build reLCS or download it from one of the above links (Debug or Release).
+- (Optional) If you want to use optional features, copy the files in /gamefiles folder to your game root folder.
+- Move reLCS.exe to GTA LCS directory and run it.
-<details><summary>MacOS Premake</summary>
+## Preparing the environment for building
-For MacOS using premake, proceed: [Building on MacOS](https://github.com/GTAmodding/re3/wiki/Building-on-MacOS)
+You may want to point GTA_LCS_RE_DIR environment variable to GTA LCS root folder if you want executable to be moved there via post-build script.
-</details>
-
-<details><summary>FreeBSD</summary>
-
-For FreeBSD using premake, proceed: [Building on FreeBSD](https://github.com/GTAmodding/re3/wiki/Building-on-FreeBSD)
-
-</details>
-
-<details><summary>Windows</summary>
-
-Assuming you have Visual Studio 2015/2017/2019:
-- Run one of the `premake-vsXXXX.cmd` variants on root folder.
-- Open build/reVC.sln with Visual Studio and compile the solution.
+- For Linux, proceed: [Building on Linux](https://github.com/GTAmodding/re3/wiki/Building-on-Linux)
+- For FreeBSD, proceed: [Building on FreeBSD](https://github.com/GTAmodding/re3/wiki/Building-on-FreeBSD)
+- For Windows, assuming you have Visual Studio:
+ - Clone the repo using the argument `--recursive`.
+ - Run one of the `premake-vsXXXX.cmd` variants on root folder.
+ - Open the project via Visual Studio
-Microsoft recently discontinued its downloads of the DX9 SDK. You can download an archived version here: https://archive.org/details/dxsdk_jun10
-
-**If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows).
-</details>
+**If you use 64-bit D3D9**: We don't ship 64-bit Dx9 SDK. You need to download it from Microsoft if you don't have it(although it should come pre-installed after some Windows version)
-> :information_source: premake has an `--with-lto` option if you want the project to be compiled with Link Time Optimization.
+There are various settings at the very bottom of [config.h](https://github.com/GTAmodding/re3/tree/lcs/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across.
-> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/miami/src/core/config.h), you may want to take a look there.
+> :information_source: **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows).
-> :information_source: reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw.
-
-If you feel the need, you can also use CodeWarrior 7 to compile reVC using the supplied codewarrior/reVC.mcp project - this requires the original RW34 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference.
+> :information_source: **Did you notice librw?** reLCS uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of reLCS, but you also can use LIBRW enviorenment variable to specify path to your own librw.
## Contributing
-As long as it's not linux/cross-platform skeleton/compatibility layer, all of the code on the repo that's not behind a preprocessor condition(like FIX_BUGS) are **completely** reversed code from original binaries.
-
-We **don't** accept custom codes, as long as it's not wrapped via preprocessor conditions, or it's linux/cross-platform skeleton/compatibility layer.
-
-We accept only these kinds of PRs;
-
-- A new feature that exists in at least one of the GTAs (if it wasn't in III/VC then it doesn't have to be decompilation)
-- Game, UI or UX bug fixes (if it's a fix to original code, it should be behind FIX_BUGS)
-- Platform-specific and/or unused code that's not been reversed yet
-- Makes reversed code more understandable/accurate, as in "which code would produce this assembly".
-- A new cross-platform skeleton/compatibility layer, or improvements to them
-- Translation fixes, for languages original game supported
-- Code that increase maintainability
-
-We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well.
-
-Do not use features from C++11 or later.
-
-
-## History
-
-re3 was started sometime in the spring of 2018,
-initially as a way to test reversed collision and physics code
-inside the game.
-This was done by replacing single functions of the game
-with their reversed counterparts using a dll.
-
-After a bit of work the project lay dormant for about a year
-and was picked up again and pushed to github in May 2019.
-At the time I (aap) had reversed around 10k lines of code and estimated
-the final game to have around 200-250k.
-Others quickly joined the effort (Fire_Head, shfil, erorcun and Nick007J
-in time order, and Serge a bit later) and we made very quick progress
-throughout the summer of 2019
-after which the pace slowed down a bit.
-
-Due to everyone staying home during the start of the Corona pandemic
-everybody had a lot of time to work on re3 again and
-we finally got a standalone exe in April 2020 (around 180k lines by then).
-
-After the initial excitement and fixing and polishing the code further,
-reVC was started in early May 2020 by starting from re3 code,
-not by starting from scratch replacing functions with a dll.
-After a few months of mostly steady progress we considered reVC
-finished in December.
-
-Since then we have started reLCS, which is currently work in progress.
-
-
-## License
+Please read the [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) Document
-We don't feel like we're in a position to give this code a license.\
-The code should only be used for educational, documentation and modding purposes.\
-We do not encourage piracy or commercial use.\
-Please keep derivate work open source and give proper credit.
diff --git a/conanfile.py b/conanfile.py
index c5b74802..69a77503 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -5,8 +5,8 @@ import shutil
import textwrap
-class ReVCConan(ConanFile):
- name = "reVC"
+class ReLCSConan(ConanFile):
+ name = "reLCS"
version = "master"
license = "???" # FIXME: https://github.com/GTAmodding/re3/issues/794
settings = "os", "arch", "compiler", "build_type"
@@ -69,10 +69,10 @@ class ReVCConan(ConanFile):
raise ConanInvalidConfiguration("Only `glfw` is supported as gl3_gfxlib.")
#if not self.options.with_opus:
# if not self.options["libsndfile"].with_external_libs:
- # raise ConanInvalidConfiguration("reVC with opus support requires a libsndfile built with external libs (=ogg/flac/opus/vorbis)")
+ # raise ConanInvalidConfiguration("reLCS with opus support requires a libsndfile built with external libs (=ogg/flac/opus/vorbis)")
@property
- def _reVC_audio(self):
+ def _reLCS_audio(self):
return {
"miles": "MSS",
"openal": "OAL",
@@ -111,16 +111,16 @@ class ReVCConan(ConanFile):
include("{}/conanbuildinfo.cmake")
conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
- add_subdirectory("{}" reVC)
+ add_subdirectory("{}" reLCS)
""").format(self.install_folder.replace("\\", "/"),
self.source_folder.replace("\\", "/")))
except FileNotFoundError:
pass
cmake = CMake(self)
- cmake.definitions["REVC_AUDIO"] = self._reVC_audio
- cmake.definitions["REVC_WITH_OPUS"] = self.options.with_opus
- cmake.definitions["REVC_INSTALL"] = True
- cmake.definitions["REVC_VENDORED_LIBRW"] = False
+ cmake.definitions["RELCS_AUDIO"] = self._reLCS_audio
+ cmake.definitions["RELCS_WITH_OPUS"] = self.options.with_opus
+ cmake.definitions["RELCS_INSTALL"] = True
+ cmake.definitions["RELCS_VENDORED_LIBRW"] = False
env = {}
if self._os_is_playstation2:
cmake.definitions["CMAKE_TOOLCHAIN_FILE"] = self.deps_user_info["ps2dev-cmaketoolchain"].cmake_toolchain_file
diff --git a/gamefiles/TEXT/ENGLISH.gxt b/gamefiles/TEXT/ENGLISH.gxt
new file mode 100644
index 00000000..7fd3750b
--- /dev/null
+++ b/gamefiles/TEXT/ENGLISH.gxt
Binary files differ
diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt
deleted file mode 100644
index ca03b34c..00000000
--- a/gamefiles/TEXT/american.gxt
+++ /dev/null
Binary files differ
diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt
index ece0d8ed..fc4026d6 100644
--- a/gamefiles/TEXT/french.gxt
+++ b/gamefiles/TEXT/french.gxt
Binary files differ
diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt
index fbec75cb..7f087fd0 100644
--- a/gamefiles/TEXT/german.gxt
+++ b/gamefiles/TEXT/german.gxt
Binary files differ
diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt
index 8b6d317c..265bf356 100644
--- a/gamefiles/TEXT/italian.gxt
+++ b/gamefiles/TEXT/italian.gxt
Binary files differ
diff --git a/gamefiles/TEXT/russian.gxt b/gamefiles/TEXT/russian.gxt
deleted file mode 100644
index 375323ba..00000000
--- a/gamefiles/TEXT/russian.gxt
+++ /dev/null
Binary files differ
diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt
index 101e97c6..88191fa7 100644
--- a/gamefiles/TEXT/spanish.gxt
+++ b/gamefiles/TEXT/spanish.gxt
Binary files differ
diff --git a/gamefiles/models/fonts_r.txd b/gamefiles/models/fonts_r.txd
deleted file mode 100644
index b6d50ac2..00000000
--- a/gamefiles/models/fonts_r.txd
+++ /dev/null
Binary files differ
diff --git a/gamefiles/models/generic.txd b/gamefiles/models/generic.txd
deleted file mode 100644
index 885cba15..00000000
--- a/gamefiles/models/generic.txd
+++ /dev/null
Binary files differ
diff --git a/gamefiles/models/particle.txd b/gamefiles/models/particle.txd
deleted file mode 100644
index b0c585f4..00000000
--- a/gamefiles/models/particle.txd
+++ /dev/null
Binary files differ
diff --git a/premake5.lua b/premake5.lua
index 9bb2f52b..4302eae0 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -1,477 +1,488 @@
-newoption {
- trigger = "glfwdir64",
- value = "PATH",
- description = "Directory of glfw",
- default = "vendor/glfw-3.3.2.bin.WIN64",
-}
-
-newoption {
- trigger = "glfwdir32",
- value = "PATH",
- description = "Directory of glfw",
- default = "vendor/glfw-3.3.2.bin.WIN32",
-}
-
-newoption {
- trigger = "with-asan",
- description = "Build with address sanitizer"
-}
-
-newoption {
- trigger = "with-librw",
- description = "Build and use librw from this solution"
-}
-
-newoption {
- trigger = "with-opus",
- description = "Build with opus"
-}
-
-newoption {
- trigger = "with-lto",
- description = "Build with link time optimization"
-}
-
-newoption {
- trigger = "no-git-hash",
- description = "Don't print git commit hash into binary"
-}
-
-newoption {
- trigger = "no-full-paths",
- description = "Don't print full paths into binary"
-}
-
-require("autoconf")
-
-if(_OPTIONS["with-librw"]) then
- Librw = "vendor/librw"
-else
- Librw = os.getenv("LIBRW") or "vendor/librw"
-end
-
-function getsys(a)
- if a == 'windows' then
- return 'win'
- end
- return a
-end
-
-function getarch(a)
- if a == 'x86_64' then
- return 'amd64'
- elseif a == 'ARM' then
- return 'arm'
- elseif a == 'ARM64' then
- return 'arm64'
- end
- return a
-end
-
-workspace "reVC"
- language "C++"
- configurations { "Debug", "Release" }
- startproject "reVC"
- location "build"
- symbols "Full"
- staticruntime "off"
-
- if _OPTIONS["with-asan"] then
- buildoptions { "-fsanitize=address -g3 -fno-omit-frame-pointer" }
- linkoptions { "-fsanitize=address" }
- end
-
- filter { "system:windows" }
- configurations { "Vanilla" }
- platforms {
- "win-x86-RW34_d3d8-mss",
- "win-x86-librw_d3d9-mss",
- "win-x86-librw_gl3_glfw-mss",
- "win-x86-RW34_d3d8-oal",
- "win-x86-librw_d3d9-oal",
- "win-x86-librw_gl3_glfw-oal",
- "win-amd64-librw_d3d9-oal",
- "win-amd64-librw_gl3_glfw-oal",
- }
-
- filter { "system:linux" }
- platforms {
- "linux-x86-librw_gl3_glfw-oal",
- "linux-amd64-librw_gl3_glfw-oal",
- "linux-arm-librw_gl3_glfw-oal",
- "linux-arm64-librw_gl3_glfw-oal",
- }
-
- filter { "system:bsd" }
- platforms {
- "bsd-x86-librw_gl3_glfw-oal",
- "bsd-amd64-librw_gl3_glfw-oal",
- "bsd-arm-librw_gl3_glfw-oal",
- "bsd-arm64-librw_gl3_glfw-oal"
- }
-
- filter { "system:macosx" }
- platforms {
- "macosx-arm64-librw_gl3_glfw-oal",
- "macosx-amd64-librw_gl3_glfw-oal",
- }
-
- filter "configurations:Debug"
- defines { "DEBUG" }
-
- filter "configurations:not Debug"
- defines { "NDEBUG" }
- optimize "Speed"
- if(_OPTIONS["with-lto"]) then
- flags { "LinkTimeOptimization" }
- end
-
- filter { "platforms:win*" }
- system "windows"
-
- filter { "platforms:linux*" }
- system "linux"
-
- filter { "platforms:bsd*" }
- system "bsd"
-
- filter { "platforms:macosx*" }
- system "macosx"
-
- filter { "platforms:*x86*" }
- architecture "x86"
-
- filter { "platforms:*amd64*" }
- architecture "amd64"
-
- filter { "platforms:*arm*" }
- architecture "ARM"
-
- filter { "platforms:macosx-arm64-*", "files:**.cpp"}
- buildoptions { "-target", "arm64-apple-macos11", "-std=gnu++14" }
-
- filter { "platforms:macosx-arm64-*", "files:**.c"}
- buildoptions { "-target", "arm64-apple-macos11" }
-
- filter { "platforms:macosx-amd64-*", "files:**.cpp"}
- buildoptions { "-target", "x86_64-apple-macos10.12", "-std=gnu++14" }
-
- filter { "platforms:macosx-amd64-*", "files:**.c"}
- buildoptions { "-target", "x86_64-apple-macos10.12" }
-
- filter { "platforms:*librw_d3d9*" }
- defines { "RW_D3D9" }
- if(not _OPTIONS["with-librw"]) then
- libdirs { path.join(Librw, "lib/win-%{getarch(cfg.architecture)}-d3d9/%{cfg.buildcfg}") }
- end
-
- filter "platforms:*librw_gl3_glfw*"
- defines { "RW_GL3" }
- if(not _OPTIONS["with-librw"]) then
- libdirs { path.join(Librw, "lib/%{getsys(cfg.system)}-%{getarch(cfg.architecture)}-gl3/%{cfg.buildcfg}") }
- end
-
- filter "platforms:*x86-librw_gl3_glfw*"
- includedirs { path.join(_OPTIONS["glfwdir32"], "include") }
-
- filter "platforms:*amd64-librw_gl3_glfw*"
- includedirs { path.join(_OPTIONS["glfwdir64"], "include") }
-
- filter {}
-
- function setpaths (gamepath, exepath)
- if (gamepath) then
- postbuildcommands {
- '{COPYFILE} "%{cfg.buildtarget.abspath}" "' .. gamepath .. '%{cfg.buildtarget.name}"'
- }
- debugdir (gamepath)
- if (exepath) then
- -- Used VS variable $(TargetFileName) because it doesn't accept premake tokens. Does debugcommand even work outside VS??
- debugcommand (gamepath .. "$(TargetFileName)")
- dir, file = exepath:match'(.*/)(.*)'
- debugdir (gamepath .. (dir or ""))
- end
- end
- end
-
-if(_OPTIONS["with-librw"]) then
-project "librw"
- kind "StaticLib"
- targetname "rw"
- targetdir(path.join(Librw, "lib/%{cfg.platform}/%{cfg.buildcfg}"))
- files { path.join(Librw, "src/*.*") }
- files { path.join(Librw, "src/*/*.*") }
- files { path.join(Librw, "src/gl/*/*.*") }
-
- filter { "platforms:*x86*" }
- architecture "x86"
-
- filter { "platforms:*amd64*" }
- architecture "amd64"
-
- filter "platforms:win*"
- defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" }
- staticruntime "on"
- buildoptions { "/Zc:sizedDealloc-" }
-
- filter "platforms:bsd*"
- includedirs { "/usr/local/include" }
- libdirs { "/usr/local/lib" }
-
- -- Support MacPorts and Homebrew
- filter "platforms:macosx-arm64-*"
- includedirs { "/opt/local/include" }
- includedirs {"/opt/homebrew/include" }
- libdirs { "/opt/local/lib" }
- libdirs { "/opt/homebrew/lib" }
-
- filter "platforms:macosx-amd64-*"
- includedirs { "/opt/local/include" }
- includedirs {"/usr/local/include" }
- libdirs { "/opt/local/lib" }
- libdirs { "/usr/local/lib" }
-
- filter "platforms:*gl3_glfw*"
- staticruntime "off"
-
- filter "platforms:*RW34*"
- flags { "ExcludeFromBuild" }
- filter {}
-end
-
-local function addSrcFiles( prefix )
- return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc"
-end
-
-project "reVC"
- kind "WindowedApp"
- targetname "reVC"
- targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}"
-
- if(_OPTIONS["with-librw"]) then
- dependson "librw"
- end
-
- files { addSrcFiles("src") }
- files { addSrcFiles("src/animation") }
- files { addSrcFiles("src/audio") }
- files { addSrcFiles("src/audio/eax") }
- files { addSrcFiles("src/audio/oal") }
- files { addSrcFiles("src/buildings") }
- files { addSrcFiles("src/collision") }
- files { addSrcFiles("src/control") }
- files { addSrcFiles("src/core") }
- files { addSrcFiles("src/entities") }
- files { addSrcFiles("src/math") }
- files { addSrcFiles("src/modelinfo") }
- files { addSrcFiles("src/objects") }
- files { addSrcFiles("src/peds") }
- files { addSrcFiles("src/renderer") }
- files { addSrcFiles("src/rw") }
- files { addSrcFiles("src/save") }
- files { addSrcFiles("src/skel") }
- files { addSrcFiles("src/skel/glfw") }
- files { addSrcFiles("src/text") }
- files { addSrcFiles("src/vehicles") }
- files { addSrcFiles("src/weapons") }
- files { addSrcFiles("src/extras") }
- if(not _OPTIONS["no-git-hash"]) then
- files { "src/extras/GitSHA1.cpp" } -- this won't be in repo in first build
- else
- removefiles { "src/extras/GitSHA1.cpp" } -- but it will be everytime after
- end
-
- includedirs { "src" }
- includedirs { "src/animation" }
- includedirs { "src/audio" }
- includedirs { "src/audio/eax" }
- includedirs { "src/audio/oal" }
- includedirs { "src/buildings" }
- includedirs { "src/collision" }
- includedirs { "src/control" }
- includedirs { "src/core" }
- includedirs { "src/entities" }
- includedirs { "src/math" }
- includedirs { "src/modelinfo" }
- includedirs { "src/objects" }
- includedirs { "src/peds" }
- includedirs { "src/renderer" }
- includedirs { "src/rw" }
- includedirs { "src/save/" }
- includedirs { "src/skel/" }
- includedirs { "src/skel/glfw" }
- includedirs { "src/text" }
- includedirs { "src/vehicles" }
- includedirs { "src/weapons" }
- includedirs { "src/extras" }
-
- if(not _OPTIONS["no-git-hash"]) then
- defines { "USE_OUR_VERSIONING" }
- end
-
- if _OPTIONS["with-opus"] then
- includedirs { "vendor/ogg/include" }
- includedirs { "vendor/opus/include" }
- includedirs { "vendor/opusfile/include" }
- end
-
- filter "configurations:Vanilla"
- defines { "VANILLA_DEFINES" }
-
- filter "platforms:*mss"
- defines { "AUDIO_MSS" }
- includedirs { "vendor/milessdk/include" }
- libdirs { "vendor/milessdk/lib" }
-
- if _OPTIONS["with-opus"] then
- filter "platforms:win*"
- libdirs { "vendor/ogg/win32/VS2015/Win32/%{cfg.buildcfg}" }
- libdirs { "vendor/opus/win32/VS2015/Win32/%{cfg.buildcfg}" }
- libdirs { "vendor/opusfile/win32/VS2015/Win32/Release-NoHTTP" }
- filter {}
- defines { "AUDIO_OPUS" }
- end
-
- filter "platforms:*oal"
- defines { "AUDIO_OAL" }
-
- filter {}
- if(os.getenv("GTA_VC_RE_DIR")) then
- setpaths(os.getenv("GTA_VC_RE_DIR") .. "/", "%(cfg.buildtarget.name)")
- end
-
- filter "platforms:win*"
- files { addSrcFiles("src/skel/win") }
- includedirs { "src/skel/win" }
- buildoptions { "/Zc:sizedDealloc-" }
- linkoptions "/SAFESEH:NO"
- characterset ("MBCS")
- targetextension ".exe"
- if(_OPTIONS["no-full-paths"]) then
- usefullpaths "off"
- linkoptions "/PDBALTPATH:%_PDB%"
- end
- if(_OPTIONS["with-librw"]) then
- -- external librw is dynamic
- staticruntime "on"
- end
- if(not _OPTIONS["no-git-hash"]) then
- prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' }
- end
-
- filter "platforms:not win*"
- if(not _OPTIONS["no-git-hash"]) then
- prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' }
- end
-
- filter "platforms:win*glfw*"
- staticruntime "off"
-
- filter "platforms:*glfw*"
- premake.modules.autoconf.parameters = "-lglfw -lX11"
- autoconfigure {
- -- iterates all configs and runs on them
- ["dontWrite"] = function (cfg)
- check_symbol_exists(cfg, "haveX11", "glfwGetX11Display", { "X11/Xlib.h", "X11/XKBlib.h", "GLFW/glfw3.h", "GLFW/glfw3native.h" }, "GLFW_EXPOSE_NATIVE_X11")
- if cfg.autoconf["haveX11"] ~= nil and cfg.autoconf["haveX11"] == 1 then
- table.insert(cfg.links, "X11")
- table.insert(cfg.defines, "GET_KEYBOARD_INPUT_FROM_X11")
- end
- end
- }
-
- filter "platforms:win*oal"
- includedirs { "vendor/openal-soft/include" }
- includedirs { "vendor/libsndfile/include" }
- includedirs { "vendor/mpg123/include" }
-
- filter "platforms:win-x86*oal"
- libdirs { "vendor/mpg123/lib/Win32" }
- libdirs { "vendor/libsndfile/lib/Win32" }
- libdirs { "vendor/openal-soft/libs/Win32" }
-
- filter "platforms:win-amd64*oal"
- libdirs { "vendor/mpg123/lib/Win64" }
- libdirs { "vendor/libsndfile/lib/Win64" }
- libdirs { "vendor/openal-soft/libs/Win64" }
-
- filter "platforms:linux*oal"
- links { "openal", "mpg123", "sndfile", "pthread" }
-
- filter "platforms:bsd*oal"
- links { "openal", "mpg123", "sndfile", "pthread" }
-
- filter "platforms:macosx*oal"
- links { "openal", "mpg123", "sndfile", "pthread" }
-
- filter "platforms:macosx-arm64-*oal"
- includedirs { "/opt/homebrew/opt/openal-soft/include" }
- libdirs { "/opt/homebrew/opt/openal-soft/lib" }
-
- filter "platforms:macosx-amd64-*oal"
- includedirs { "/usr/local/opt/openal-soft/include" }
- libdirs { "/usr/local/opt/openal-soft/lib" }
-
- if _OPTIONS["with-opus"] then
- filter {}
- links { "libogg" }
- links { "opus" }
- links { "opusfile" }
- end
-
- filter "platforms:*RW34*"
- includedirs { "sdk/rwsdk/include/d3d8" }
- libdirs { "sdk/rwsdk/lib/d3d8/release" }
- links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtanim", "rtcharse", "rpanisot" }
- defines { "RWLIBS" }
- linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text"
-
- filter "platforms:*librw*"
- defines { "LIBRW" }
- files { addSrcFiles("src/fakerw") }
- includedirs { "src/fakerw" }
- includedirs { Librw }
- if(_OPTIONS["with-librw"]) then
- libdirs { "vendor/librw/lib/%{cfg.platform}/%{cfg.buildcfg}" }
- end
- links { "rw" }
-
- filter "platforms:*d3d9*"
- defines { "USE_D3D9" }
- links { "d3d9" }
-
- filter "platforms:*x86*d3d*"
- includedirs { "sdk/dx8sdk/include" }
- libdirs { "sdk/dx8sdk/lib" }
-
- filter "platforms:win-x86*gl3_glfw*"
- libdirs { path.join(_OPTIONS["glfwdir32"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) }
- links { "opengl32", "glfw3" }
-
- filter "platforms:win-amd64*gl3_glfw*"
- libdirs { path.join(_OPTIONS["glfwdir64"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) }
- links { "opengl32", "glfw3" }
-
- filter "platforms:linux*gl3_glfw*"
- links { "GL", "glfw" }
-
- filter "platforms:bsd*gl3_glfw*"
- links { "GL", "glfw", "sysinfo" }
- includedirs { "/usr/local/include" }
- libdirs { "/usr/local/lib" }
-
- filter "platforms:macosx-arm64-*gl3_glfw*"
- links { "glfw" }
- linkoptions { "-framework OpenGL" }
- includedirs { "/opt/local/include" }
- includedirs {"/opt/homebrew/include" }
- libdirs { "/opt/local/lib" }
- libdirs { "/opt/homebrew/lib" }
-
- filter "platforms:macosx-amd64-*gl3_glfw*"
- links { "glfw" }
- linkoptions { "-framework OpenGL" }
- includedirs { "/opt/local/include" }
- includedirs {"/usr/local/include" }
- libdirs { "/opt/local/lib" }
- libdirs { "/usr/local/lib" }
+newoption {
+ trigger = "glfwdir64",
+ value = "PATH",
+ description = "Directory of glfw",
+ default = "vendor/glfw-3.3.2.bin.WIN64",
+}
+
+newoption {
+ trigger = "glfwdir32",
+ value = "PATH",
+ description = "Directory of glfw",
+ default = "vendor/glfw-3.3.2.bin.WIN32",
+}
+
+newoption {
+ trigger = "with-asan",
+ description = "Build with address sanitizer"
+}
+
+newoption {
+ trigger = "with-librw",
+ description = "Build and use librw from this solution"
+}
+
+newoption {
+ trigger = "with-opus",
+ description = "Build with opus"
+}
+
+newoption {
+ trigger = "with-lto",
+ description = "Build with link time optimization"
+}
+
+newoption {
+ trigger = "no-git-hash",
+ description = "Don't print git commit hash into binary"
+}
+
+newoption {
+ trigger = "no-full-paths",
+ description = "Don't print full paths into binary"
+}
+
+require("autoconf")
+
+if(_OPTIONS["with-librw"]) then
+ Librw = "vendor/librw"
+else
+ Librw = os.getenv("LIBRW") or "vendor/librw"
+end
+
+function getsys(a)
+ if a == 'windows' then
+ return 'win'
+ end
+ return a
+end
+
+function getarch(a)
+ if a == 'x86_64' then
+ return 'amd64'
+ elseif a == 'ARM' then
+ return 'arm'
+ elseif a == 'ARM64' then
+ return 'arm64'
+ end
+ return a
+end
+
+workspace "reLCS"
+ language "C++"
+ configurations { "Debug", "Release" }
+ startproject "reLCS"
+ location "build"
+ symbols "Full"
+ staticruntime "off"
+
+ -- for CVECTORHACK
+ configuration { "gmake*" }
+ buildoptions { "-fpermissive" }
+
+ filter { "platforms:macosx*" }
+ buildoptions { "-Wno-address-of-temporary" }
+
+ if _OPTIONS["with-asan"] then
+ buildoptions { "-fsanitize=address -g3 -fno-omit-frame-pointer" }
+ linkoptions { "-fsanitize=address" }
+ end
+
+ filter { "system:windows" }
+ configurations { "Vanilla" }
+ platforms {
+ "win-x86-RW34_d3d8-mss",
+ "win-x86-librw_d3d9-mss",
+ "win-x86-librw_gl3_glfw-mss",
+ "win-x86-RW34_d3d8-oal",
+ "win-x86-librw_d3d9-oal",
+ "win-x86-librw_gl3_glfw-oal",
+ "win-amd64-librw_d3d9-oal",
+ "win-amd64-librw_gl3_glfw-oal",
+ }
+
+ filter { "system:linux" }
+ platforms {
+ "linux-x86-librw_gl3_glfw-oal",
+ "linux-amd64-librw_gl3_glfw-oal",
+ "linux-arm-librw_gl3_glfw-oal",
+ "linux-arm64-librw_gl3_glfw-oal",
+ }
+
+ filter { "system:bsd" }
+ platforms {
+ "bsd-x86-librw_gl3_glfw-oal",
+ "bsd-amd64-librw_gl3_glfw-oal",
+ "bsd-arm-librw_gl3_glfw-oal",
+ "bsd-arm64-librw_gl3_glfw-oal"
+ }
+
+ filter { "system:macosx" }
+ platforms {
+ "macosx-arm64-librw_gl3_glfw-oal",
+ "macosx-amd64-librw_gl3_glfw-oal",
+ }
+
+ filter "configurations:Debug"
+ defines { "DEBUG" }
+
+ filter "configurations:not Debug"
+ defines { "NDEBUG" }
+ optimize "Speed"
+ if(_OPTIONS["with-lto"]) then
+ flags { "LinkTimeOptimization" }
+ end
+
+ filter { "platforms:win*" }
+ system "windows"
+
+ filter { "platforms:linux*" }
+ system "linux"
+
+ filter { "platforms:bsd*" }
+ system "bsd"
+
+ filter { "platforms:macosx*" }
+ system "macosx"
+
+ filter { "platforms:*x86*" }
+ architecture "x86"
+
+ filter { "platforms:*amd64*" }
+ architecture "amd64"
+
+ filter { "platforms:*arm*" }
+ architecture "ARM"
+
+ filter { "platforms:macosx-arm64-*", "files:**.cpp"}
+ buildoptions { "-target", "arm64-apple-macos11", "-std=gnu++14" }
+
+ filter { "platforms:macosx-arm64-*", "files:**.c"}
+ buildoptions { "-target", "arm64-apple-macos11" }
+
+ filter { "platforms:macosx-amd64-*", "files:**.cpp"}
+ buildoptions { "-target", "x86_64-apple-macos10.12", "-std=gnu++14" }
+
+ filter { "platforms:macosx-amd64-*", "files:**.c"}
+ buildoptions { "-target", "x86_64-apple-macos10.12" }
+
+ filter { "platforms:*librw_d3d9*" }
+ defines { "RW_D3D9" }
+ if(not _OPTIONS["with-librw"]) then
+ libdirs { path.join(Librw, "lib/win-%{getarch(cfg.architecture)}-d3d9/%{cfg.buildcfg}") }
+ end
+
+ filter "platforms:*librw_gl3_glfw*"
+ defines { "RW_GL3" }
+ if(not _OPTIONS["with-librw"]) then
+ libdirs { path.join(Librw, "lib/%{getsys(cfg.system)}-%{getarch(cfg.architecture)}-gl3/%{cfg.buildcfg}") }
+ end
+
+ filter "platforms:*x86-librw_gl3_glfw*"
+ includedirs { path.join(_OPTIONS["glfwdir32"], "include") }
+
+ filter "platforms:*amd64-librw_gl3_glfw*"
+ includedirs { path.join(_OPTIONS["glfwdir64"], "include") }
+
+ filter {}
+
+ function setpaths (gamepath, exepath)
+ if (gamepath) then
+ postbuildcommands {
+ '{COPYFILE} "%{cfg.buildtarget.abspath}" "' .. gamepath .. '%{cfg.buildtarget.name}"'
+ }
+ debugdir (gamepath)
+ if (exepath) then
+ -- Used VS variable $(TargetFileName) because it doesn't accept premake tokens. Does debugcommand even work outside VS??
+ debugcommand (gamepath .. "$(TargetFileName)")
+ dir, file = exepath:match'(.*/)(.*)'
+ debugdir (gamepath .. (dir or ""))
+ end
+ end
+ end
+
+if(_OPTIONS["with-librw"]) then
+project "librw"
+ kind "StaticLib"
+ targetname "rw"
+ targetdir(path.join(Librw, "lib/%{cfg.platform}/%{cfg.buildcfg}"))
+ files { path.join(Librw, "src/*.*") }
+ files { path.join(Librw, "src/*/*.*") }
+ files { path.join(Librw, "src/gl/*/*.*") }
+
+ filter { "platforms:*x86*" }
+ architecture "x86"
+
+ filter { "platforms:*amd64*" }
+ architecture "amd64"
+
+ filter "platforms:win*"
+ defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" }
+ staticruntime "on"
+ buildoptions { "/Zc:sizedDealloc-" }
+
+ filter "platforms:bsd*"
+ includedirs { "/usr/local/include" }
+ libdirs { "/usr/local/lib" }
+
+ -- Support MacPorts and Homebrew
+ filter "platforms:macosx-arm64-*"
+ includedirs { "/opt/local/include" }
+ includedirs {"/opt/homebrew/include" }
+ libdirs { "/opt/local/lib" }
+ libdirs { "/opt/homebrew/lib" }
+
+ filter "platforms:macosx-amd64-*"
+ includedirs { "/opt/local/include" }
+ includedirs {"/usr/local/include" }
+ libdirs { "/opt/local/lib" }
+ libdirs { "/usr/local/lib" }
+
+ filter "platforms:*gl3_glfw*"
+ staticruntime "off"
+
+ filter "platforms:*RW34*"
+ flags { "ExcludeFromBuild" }
+ filter {}
+end
+
+local function addSrcFiles( prefix )
+ return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc"
+end
+
+project "reLCS"
+ kind "WindowedApp"
+ targetname "reLCS"
+ targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}"
+
+ if(_OPTIONS["with-librw"]) then
+ dependson "librw"
+ end
+
+ files { addSrcFiles("src") }
+ files { addSrcFiles("src/animation") }
+ files { addSrcFiles("src/audio") }
+ files { addSrcFiles("src/audio/eax") }
+ files { addSrcFiles("src/audio/oal") }
+ files { addSrcFiles("src/buildings") }
+ files { addSrcFiles("src/collision") }
+ files { addSrcFiles("src/control") }
+ files { addSrcFiles("src/core") }
+ files { addSrcFiles("src/entities") }
+ files { addSrcFiles("src/leeds") }
+ files { addSrcFiles("src/leeds/base") }
+ files { addSrcFiles("src/math") }
+ files { addSrcFiles("src/modelinfo") }
+ files { addSrcFiles("src/objects") }
+ files { addSrcFiles("src/peds") }
+ files { addSrcFiles("src/renderer") }
+ files { addSrcFiles("src/rw") }
+ files { addSrcFiles("src/save") }
+ files { addSrcFiles("src/skel") }
+ files { addSrcFiles("src/skel/glfw") }
+ files { addSrcFiles("src/text") }
+ files { addSrcFiles("src/vehicles") }
+ files { addSrcFiles("src/weapons") }
+ files { addSrcFiles("src/extras") }
+ if(not _OPTIONS["no-git-hash"]) then
+ files { "src/extras/GitSHA1.cpp" } -- this won't be in repo in first build
+ else
+ removefiles { "src/extras/GitSHA1.cpp" } -- but it will be everytime after
+ end
+
+ includedirs { "src" }
+ includedirs { "src/animation" }
+ includedirs { "src/audio" }
+ includedirs { "src/audio/eax" }
+ includedirs { "src/audio/oal" }
+ includedirs { "src/buildings" }
+ includedirs { "src/collision" }
+ includedirs { "src/control" }
+ includedirs { "src/core" }
+ includedirs { "src/entities" }
+ includedirs { "src/leeds" }
+ includedirs { "src/leeds/base" }
+ includedirs { "src/math" }
+ includedirs { "src/modelinfo" }
+ includedirs { "src/objects" }
+ includedirs { "src/peds" }
+ includedirs { "src/renderer" }
+ includedirs { "src/rw" }
+ includedirs { "src/save/" }
+ includedirs { "src/skel/" }
+ includedirs { "src/skel/glfw" }
+ includedirs { "src/text" }
+ includedirs { "src/vehicles" }
+ includedirs { "src/weapons" }
+ includedirs { "src/extras" }
+
+ if(not _OPTIONS["no-git-hash"]) then
+ defines { "USE_OUR_VERSIONING" }
+ end
+
+ if _OPTIONS["with-opus"] then
+ includedirs { "vendor/ogg/include" }
+ includedirs { "vendor/opus/include" }
+ includedirs { "vendor/opusfile/include" }
+ end
+
+ filter "configurations:Vanilla"
+ defines { "VANILLA_DEFINES" }
+
+ filter "platforms:*mss"
+ defines { "AUDIO_MSS" }
+ includedirs { "vendor/milessdk/include" }
+ libdirs { "vendor/milessdk/lib" }
+
+ if _OPTIONS["with-opus"] then
+ filter "platforms:win*"
+ libdirs { "vendor/ogg/win32/VS2015/Win32/%{cfg.buildcfg}" }
+ libdirs { "vendor/opus/win32/VS2015/Win32/%{cfg.buildcfg}" }
+ libdirs { "vendor/opusfile/win32/VS2015/Win32/Release-NoHTTP" }
+ filter {}
+ defines { "AUDIO_OPUS" }
+ end
+
+ filter "platforms:*oal"
+ defines { "AUDIO_OAL" }
+
+ filter {}
+ if(os.getenv("GTA_LCS_RE_DIR")) then
+ setpaths(os.getenv("GTA_LCS_RE_DIR") .. "/", "%(cfg.buildtarget.name)")
+ end
+
+ filter "platforms:win*"
+ files { addSrcFiles("src/skel/win") }
+ includedirs { "src/skel/win" }
+ buildoptions { "/Zc:sizedDealloc-" }
+ linkoptions "/SAFESEH:NO"
+ characterset ("MBCS")
+ targetextension ".exe"
+ if(_OPTIONS["no-full-paths"]) then
+ usefullpaths "off"
+ linkoptions "/PDBALTPATH:%_PDB%"
+ end
+ if(_OPTIONS["with-librw"]) then
+ -- external librw is dynamic
+ staticruntime "on"
+ end
+ if(not _OPTIONS["no-git-hash"]) then
+ prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' }
+ end
+
+ filter "platforms:not win*"
+ if(not _OPTIONS["no-git-hash"]) then
+ prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' }
+ end
+
+ filter "platforms:win*glfw*"
+ staticruntime "off"
+
+ filter "platforms:*glfw*"
+ premake.modules.autoconf.parameters = "-lglfw -lX11"
+ autoconfigure {
+ -- iterates all configs and runs on them
+ ["dontWrite"] = function (cfg)
+ check_symbol_exists(cfg, "haveX11", "glfwGetX11Display", { "X11/Xlib.h", "X11/XKBlib.h", "GLFW/glfw3.h", "GLFW/glfw3native.h" }, "GLFW_EXPOSE_NATIVE_X11")
+ if cfg.autoconf["haveX11"] ~= nil and cfg.autoconf["haveX11"] == 1 then
+ table.insert(cfg.links, "X11")
+ table.insert(cfg.defines, "GET_KEYBOARD_INPUT_FROM_X11")
+ end
+ end
+ }
+
+ filter "platforms:win*oal"
+ includedirs { "vendor/openal-soft/include" }
+ includedirs { "vendor/libsndfile/include" }
+ includedirs { "vendor/mpg123/include" }
+
+ filter "platforms:win-x86*oal"
+ libdirs { "vendor/mpg123/lib/Win32" }
+ libdirs { "vendor/libsndfile/lib/Win32" }
+ libdirs { "vendor/openal-soft/libs/Win32" }
+
+ filter "platforms:win-amd64*oal"
+ libdirs { "vendor/mpg123/lib/Win64" }
+ libdirs { "vendor/libsndfile/lib/Win64" }
+ libdirs { "vendor/openal-soft/libs/Win64" }
+
+ filter "platforms:linux*oal"
+ links { "openal", "mpg123", "sndfile", "pthread" }
+
+ filter "platforms:bsd*oal"
+ links { "openal", "mpg123", "sndfile", "pthread" }
+
+ filter "platforms:macosx*oal"
+ links { "openal", "mpg123", "sndfile", "pthread" }
+
+ filter "platforms:macosx-arm64-*oal"
+ includedirs { "/opt/homebrew/opt/openal-soft/include" }
+ libdirs { "/opt/homebrew/opt/openal-soft/lib" }
+
+ filter "platforms:macosx-amd64-*oal"
+ includedirs { "/usr/local/opt/openal-soft/include" }
+ libdirs { "/usr/local/opt/openal-soft/lib" }
+
+ if _OPTIONS["with-opus"] then
+ filter {}
+ links { "libogg" }
+ links { "opus" }
+ links { "opusfile" }
+ end
+
+ filter "platforms:*RW34*"
+ includedirs { "sdk/rwsdk/include/d3d8" }
+ libdirs { "sdk/rwsdk/lib/d3d8/release" }
+ links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtanim", "rtcharse", "rpanisot" }
+ defines { "RWLIBS" }
+ linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text"
+
+ filter "platforms:*librw*"
+ defines { "LIBRW" }
+ files { addSrcFiles("src/fakerw") }
+ includedirs { "src/fakerw" }
+ includedirs { Librw }
+ if(_OPTIONS["with-librw"]) then
+ libdirs { "vendor/librw/lib/%{cfg.platform}/%{cfg.buildcfg}" }
+ end
+ links { "rw" }
+
+ filter "platforms:*d3d9*"
+ defines { "USE_D3D9" }
+ links { "d3d9" }
+
+ filter "platforms:*x86*d3d*"
+ includedirs { "sdk/dx8sdk/include" }
+ libdirs { "sdk/dx8sdk/lib" }
+
+ filter "platforms:win-x86*gl3_glfw*"
+ libdirs { path.join(_OPTIONS["glfwdir32"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) }
+ links { "opengl32", "glfw3" }
+
+ filter "platforms:win-amd64*gl3_glfw*"
+ libdirs { path.join(_OPTIONS["glfwdir64"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) }
+ links { "opengl32", "glfw3" }
+
+ filter "platforms:linux*gl3_glfw*"
+ links { "GL", "glfw" }
+
+ filter "platforms:bsd*gl3_glfw*"
+ links { "GL", "glfw", "sysinfo" }
+ includedirs { "/usr/local/include" }
+ libdirs { "/usr/local/lib" }
+
+ filter "platforms:macosx-arm64-*gl3_glfw*"
+ links { "glfw" }
+ linkoptions { "-framework OpenGL" }
+ includedirs { "/opt/local/include" }
+ includedirs {"/opt/homebrew/include" }
+ libdirs { "/opt/local/lib" }
+ libdirs { "/opt/homebrew/lib" }
+
+ filter "platforms:macosx-amd64-*gl3_glfw*"
+ links { "glfw" }
+ linkoptions { "-framework OpenGL" }
+ includedirs { "/opt/local/include" }
+ includedirs {"/usr/local/include" }
+ libdirs { "/opt/local/lib" }
+ libdirs { "/usr/local/lib" }
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b605d45b..edd31c0a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -112,6 +112,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang
if (NOT LIBRW_PLATFORM_PS2)
target_compile_options(${EXECUTABLE}
PRIVATE
+ -fpermissive # for CVECTORHACK
+ -Wno-address-of-temporary # for CVECTORHACK
-Wextra
-Wdouble-promotion
-Wpedantic
diff --git a/src/animation/AnimBlendAssocGroup.cpp b/src/animation/AnimBlendAssocGroup.cpp
index 935e7fd6..f56e5f20 100644
--- a/src/animation/AnimBlendAssocGroup.cpp
+++ b/src/animation/AnimBlendAssocGroup.cpp
@@ -18,6 +18,7 @@
#include "RpAnimBlend.h"
#include "AnimBlendAssociation.h"
#include "AnimBlendAssocGroup.h"
+#include "KeyGen.h"
CAnimBlendAssocGroup::CAnimBlendAssocGroup(void)
{
@@ -111,27 +112,34 @@ strcmpIgnoringDigits(const char *s1, const char *s2)
}
}
+extern const char* csPlayerNames[];
+extern const char* playerNames[];
+
CBaseModelInfo*
GetModelFromName(const char *name)
{
int i;
- CBaseModelInfo *mi;
- char playername[32];
-
- if(strncasecmp(name, "CSplay", 6) == 0 &&
- strncasecmp(CModelInfo::GetModelInfo(MI_PLAYER)->GetModelName(), "ig", 2) == 0){
- strcpy(playername, CModelInfo::GetModelInfo(MI_PLAYER)->GetModelName());
- playername[0] = 'C';
- playername[1] = 'S';
- name = playername;
+ CBaseModelInfo* mi;
+ if (CKeyGen::GetUppercaseKey(name) == CKeyGen::GetUppercaseKey("cstoni_a")) {
+ i = 0;
+ while (csPlayerNames[i][0] != '\0') {
+ if (CModelInfo::GetModelInfo(0)->GetNameHashKey() == CKeyGen::GetUppercaseKey(playerNames[i])) {
+ name = csPlayerNames[i];
+ break;
+ }
+ i++;
+ }
}
- for(i = 0; i < MODELINFOSIZE; i++){
+ uint32 hashKey = CKeyGen::GetUppercaseKey(name);
+ for (i = 0; i < CModelInfo::GetNumModelInfos(); i++) {
mi = CModelInfo::GetModelInfo(i);
- if(mi && mi->GetRwObject() && RwObjectGetType(mi->GetRwObject()) == rpCLUMP &&
- strcmpIgnoringDigits(mi->GetModelName(), name))
+ if (mi && mi->GetRwObject()
+ && RwObjectGetType(mi->GetRwObject()) == rpCLUMP &&
+ hashKey == mi->GetNameHashKey())
return mi;
}
+
return nil;
}
@@ -185,3 +193,45 @@ CAnimBlendAssocGroup::CreateAssociations(const char *blockName, RpClump *clump,
}
numAssociations = numAssocs;
}
+
+void
+CAnimBlendAssocGroup::CreateAssociations(const char *blockName, const char *animNames, const char *objectNames, int numChars)
+{
+ if (!objectNames) {
+ CreateAssociations(blockName);
+ return;
+ }
+
+ if (assocList)
+ DestroyAssociations();
+
+ animBlock = CAnimManager::GetAnimationBlock(blockName);
+ assocList = new CAnimBlendAssociation[animBlock->numAnims];
+
+ numAssociations = 0;
+ if (animBlock->numAnims > 0)
+ {
+ int i, j;
+ for (i = 0; i < animBlock->numAnims; i++) {
+ int animId = -1;
+ for (j = 0; j != animBlock->numAnims; j++)
+ if (strcmp(CAnimManager::GetAnimation(i + animBlock->firstIndex)->name, animNames + numChars * j) == 0)
+ animId = j;
+
+ if (animId != -1) {
+ CBaseModelInfo* minfo = GetModelFromName(objectNames + numChars * animId);
+ if (minfo)
+ {
+ RpClump* clump = (RpClump*)minfo->CreateInstance();
+ RpAnimBlendClumpInit(clump);
+ assocList[numAssociations].Init(clump, CAnimManager::GetAnimation(i + animBlock->firstIndex));
+ if (IsClumpSkinned(clump))
+ RpClumpForAllAtomics(clump, AtomicRemoveAnimFromSkinCB, nil);
+ RpClumpDestroy(clump);
+ assocList[numAssociations].animId = i + numAssociations;
+ assocList[numAssociations++].groupId = groupId;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/animation/AnimBlendAssocGroup.h b/src/animation/AnimBlendAssocGroup.h
index 86f0ca18..e264787e 100644
--- a/src/animation/AnimBlendAssocGroup.h
+++ b/src/animation/AnimBlendAssocGroup.h
@@ -21,4 +21,5 @@ public:
CAnimBlendAssociation *CopyAnimation(const char *name);
void CreateAssociations(const char *name);
void CreateAssociations(const char *blockName, RpClump *clump, const char **animNames, int numAssocs);
+ void CreateAssociations(const char *blockName, const char *animNames, const char *objectNames, int numChars);
};
diff --git a/src/animation/AnimBlendAssociation.cpp b/src/animation/AnimBlendAssociation.cpp
index bb4e7bf4..a65f0fc5 100644
--- a/src/animation/AnimBlendAssociation.cpp
+++ b/src/animation/AnimBlendAssociation.cpp
@@ -230,3 +230,9 @@ CAnimBlendAssociation::UpdateBlend(float timeDelta)
return true;
}
+
+void
+CAnimBlendAssociation::Remove()
+{
+ delete this;
+}
diff --git a/src/animation/AnimBlendAssociation.h b/src/animation/AnimBlendAssociation.h
index dbfcb722..da026e01 100644
--- a/src/animation/AnimBlendAssociation.h
+++ b/src/animation/AnimBlendAssociation.h
@@ -81,6 +81,7 @@ public:
void UpdateTimeStep(float timeDelta, float relSpeed);
bool UpdateTime(float timeDelta, float relSpeed);
bool UpdateBlend(float timeDelta);
+ void Remove();
void SetRun(void) { flags |= ASSOC_RUNNING; }
diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp
index f6ac3eb5..d0763ef7 100644
--- a/src/animation/AnimManager.cpp
+++ b/src/animation/AnimManager.cpp
@@ -20,281 +20,373 @@ CAnimBlendAssocGroup *CAnimManager::ms_aAnimAssocGroups;
CLinkList<CAnimBlendHierarchy*> CAnimManager::ms_animCache;
AnimAssocDesc aStdAnimDescs[] = {
- { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
- { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
- { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
- { ANIM_STD_IDLE, ASSOC_REPEAT },
- { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION },
- { ANIM_STD_RUNSTOP1, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_RUNSTOP2, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_IDLE_CAM, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_STD_IDLE_HBHB, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_STD_IDLE_TIRED, ASSOC_REPEAT },
- { ANIM_STD_IDLE_BIGGUN, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_STD_CHAT, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_STD_HAILTAXI, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_KO_FRONT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_STD_KO_LEFT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_STD_KO_BACK, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_STD_KO_RIGHT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_STD_KO_SHOT_FACE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_STD_KO_SHOT_STOMACH, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_KO_SHOT_ARM_L, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_KO_SHOT_ARM_R, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_KO_SHOT_LEG_L, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_KO_SHOT_LEG_R, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_SPINFORWARD_LEFT, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_SPINFORWARD_RIGHT, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_HIGHIMPACT_FRONT, ASSOC_PARTIAL },
- { ANIM_STD_HIGHIMPACT_LEFT, ASSOC_PARTIAL },
- { ANIM_STD_HIGHIMPACT_BACK, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_HIGHIMPACT_RIGHT, ASSOC_PARTIAL },
- { ANIM_STD_HITBYGUN_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_STD_HITBYGUN_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_STD_HITBYGUN_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_STD_HITBYGUN_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_STD_HIT_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_HIT_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_HIT_FLOOR, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_HIT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_CHEST, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_WALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_WALL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HIT_FLOOR_FRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_HIT_BEHIND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_IDLE, ASSOC_REPEAT },
- { ANIM_STD_FIGHT_2IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_SHUFFLE_F, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_FIGHT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_KNEE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_LHOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_ROUNDHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_FIGHT_LONGKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_PARTIAL_PUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_STD_FIGHT_JAB, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_ELBOW_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_ELBOW_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_BKICK_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_BKICK_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_DETONATE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_PARTIALPUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_KICKGROUND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_THROW_UNDER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_FIGHT_SHUFFLE_B, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_JACKEDCAR_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_JACKEDCAR_LO_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_JACKEDCAR_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_JACKEDCAR_LO_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_QUICKJACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_QUICKJACKED, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_CAR_ALIGN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_ALIGNHI_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_OPEN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CARDOOR_LOCKED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_PULL_OUT_PED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_PULL_OUT_PED_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_GET_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_DOOR_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_JUMP_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_GETOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_GETOUT_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_ALIGN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_ALIGNHI_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_OPEN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CARDOOR_LOCKED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_PULL_OUT_PED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_PULL_OUT_PED_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_GET_IN_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_DOOR_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_SHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_SHUFFLE_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_SIT, ASSOC_DELETEFADEDOUT},
- { ANIM_STD_CAR_SIT_LO, ASSOC_DELETEFADEDOUT},
- { ANIM_STD_CAR_SIT_P, ASSOC_DELETEFADEDOUT},
- { ANIM_STD_CAR_SIT_P_LO, ASSOC_DELETEFADEDOUT},
- { ANIM_STD_CAR_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVE_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVE_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVEBY_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVEBY_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVEBY_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_DRIVEBY_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_CAR_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_BOAT_DRIVE, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
- { ANIM_STD_BOAT_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_BOAT_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_BOAT_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_STD_BIKE_PICKUP_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_BIKE_PICKUP_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_BIKE_PULLUP_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_BIKE_PULLUP_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_BIKE_ELBOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_BIKE_ELBOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_BIKE_FALLOFF, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_BIKE_FALLBACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_GETOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_GETOUT_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_CLOSE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CAR_HOOKERTALK, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_STD_TRAIN_GETIN, ASSOC_PARTIAL },
- { ANIM_STD_TRAIN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CRAWLOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_CRAWLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_ROLLOUT_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
- { ANIM_STD_ROLLOUT_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
- { ANIM_STD_GET_UP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_GET_UP_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_GET_UP_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_GET_UP_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_JUMP_LAUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_FALL, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_FALL_COLLAPSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_FALL_ONBACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_FALL_ONFRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_STD_EVADE_STEP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_EVADE_DIVE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_STD_XPRESS_SCRATCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_STD_ROADCROSS, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_STD_TURN180, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_ARREST, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_DROWN, ASSOC_PARTIAL },
- { ANIM_STD_DUCK_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_DUCK_LOW, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_DUCK_WEAPON, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_RBLOCK_SHOOT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_HANDSUP, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_HANDSCOWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_STD_PARTIAL_FUCKU, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_STD_PHONE_IN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_PHONE_OUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_PHONE_TALK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_STD_SEAT_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_SEAT_UP, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_SEAT_IDLE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_SEAT_RVRS, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_ATM, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_ABSEIL, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_IDLE, ASSOC_REPEAT },
+ { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_RUNSTOP1, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_RUNSTOP2, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_IDLE_CAM, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_IDLE_HBHB, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_IDLE_TIRED, ASSOC_REPEAT },
+ { ANIM_STD_IDLE_BIGGUN, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_CHAT, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_HAILTAXI, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_KO_FRONT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_LEFT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_BACK, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_RIGHT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_FACE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_KO_SHOT_STOMACH, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_ARM_L, ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_ARM_R, ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_LEG_L, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_KO_SHOT_LEG_R, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_SPINFORWARD_LEFT, ASSOC_PARTIAL },
+ { ANIM_STD_SPINFORWARD_RIGHT, ASSOC_PARTIAL },
+ { ANIM_STD_HIGHIMPACT_FRONT, ASSOC_PARTIAL },
+ { ANIM_STD_HIGHIMPACT_LEFT, ASSOC_PARTIAL },
+ { ANIM_STD_HIGHIMPACT_BACK, ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_HIGHIMPACT_RIGHT, ASSOC_PARTIAL },
+ { ANIM_STD_HITBYGUN_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HITBYGUN_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HITBYGUN_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HITBYGUN_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HIT_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HIT_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_HIT_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HIT_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_HIT_FLOOR, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_HIT_WALL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HIT_FLOOR_FRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_HIT_BEHIND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_FIGHT_IDLE, ASSOC_REPEAT },
+ { ANIM_STD_FIGHT_2IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_FIGHT_SHUFFLE_F, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_PARTIAL_PUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_FIGHT_ATTACK_A1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_A2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_A3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_B1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_B2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_B3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_A1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_A2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_A3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_B1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_B2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_B3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_DETONATE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PARTIALPUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_KICKGROUND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_THROW_UNDER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_FIGHT_SHUFFLE_B, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_JACKEDCAR_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JACKEDCAR_LO_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JACKEDCAR_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JACKEDCAR_LO_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_QUICKJACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_QUICKJACKED, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGNHI_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_OPEN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CARDOOR_LOCKED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_JUMP_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_GETOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_GETOUT_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGNHI_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_OPEN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CARDOOR_LOCKED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_SHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_SHUFFLE_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_SIT, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_SIT_LO, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_SIT_P, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_SIT_P_LO, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVE_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVE_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_DRIVE, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BIKE_PICKUP_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_PICKUP_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_PULLUP_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_PULLUP_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_ELBOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_ELBOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_FALLOFF, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_BIKE_FALLBACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GETOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_GETOUT_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_HOOKERTALK, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_TRAIN_GETIN, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_TRAIN_GETOUT, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE },
+ { ANIM_STD_CRAWLOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CRAWLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ROLLOUT_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_ROLLOUT_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_GET_UP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GET_UP_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GET_UP_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GET_UP_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_JUMP_LAUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_FALL, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_FALL_COLLAPSE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_FALL_ONBACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_FALL_ONFRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_EVADE_STEP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_EVADE_DIVE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_COMMANDO_ROLL, ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_XPRESS_SCRATCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_STD_ROADCROSS, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_TURN180, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ARREST, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_DROWN, ASSOC_PARTIAL },
+ { ANIM_STD_DUCK_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_DUCK_LOW, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_DUCK_WEAPON, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_RBLOCK_SHOOT, ASSOC_RUNNING },
+ { ANIM_STD_HANDSUP, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HANDSCOWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_PARTIAL_FUCKU, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_PHONE_IN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PHONE_OUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PHONE_TALK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_UP, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_IDLE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_RVRS, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ATM, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ABSEIL, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
};
AnimAssocDesc aVanAnimDescs[] = {
- { ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_GET_IN_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_GET_OUT_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_GET_IN_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_VAN_GET_OUT_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_IN_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_OUT_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_IN_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_OUT_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aCoachAnimDescs[] = {
- { ANIM_STD_COACH_OPEN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_COACH_OPEN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_COACH_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_COACH_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STD_COACH_GET_OUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_OPEN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_OPEN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_GET_OUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aBikeAnimDescs[] = {
- { ANIM_BIKE_RIDE, ASSOC_DELETEFADEDOUT},
- { ANIM_BIKE_READY, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_LEFT, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_RIGHT, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_LEANB, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_LEANF, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_WALKBACK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_JUMPON_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_JUMPON_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_HIT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_GETOFF_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_GETOFF_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_GETOFF_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_BIKE_DRIVEBY_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_DRIVEBY_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_DRIVEBY_FORWARD, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_RIDE_P, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
+ { ANIM_BIKE_RIDE, ASSOC_DELETEFADEDOUT },
+ { ANIM_BIKE_READY, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_LEFT, ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_RIGHT, ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_LEANB, ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_LEANF, ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_WALKBACK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_JUMPON_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_JUMPON_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_HIT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_GETOFF_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_GETOFF_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_GETOFF_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_BIKE_DRIVEBY_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_DRIVEBY_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_DRIVEBY_FORWARD, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_RIDE_P, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
};
AnimAssocDesc aMeleeAnimDescs[] = {
- { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT },
- { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT },
+ { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
};
AnimAssocDesc aSwingAnimDescs[] = {
- { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT },
- { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT },
+ { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aWeaponAnimDescs[] = {
- { ANIM_WEAPON_FIRE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_CROUCHFIRE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_RELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_CROUCHRELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_FIRE_3RD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_EXTRA1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_EXTRA2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aMedicAnimDescs[] = {
- { ANIM_MEDIC_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MEDIC_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aSunbatheAnimDescs[] = {
- { ANIM_SUNBATHE_IDLE, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_SUNBATHE_DOWN, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
- { ANIM_SUNBATHE_UP, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
- { ANIM_SUNBATHE_ESCAPE, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
+ { ANIM_SUNBATHE_IDLE, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_SUNBATHE_DOWN, ASSOC_HAS_X_TRANSLATION | ASSOC_HAS_TRANSLATION | ASSOC_PARTIAL },
+ { ANIM_SUNBATHE_UP, ASSOC_HAS_X_TRANSLATION | ASSOC_HAS_TRANSLATION | ASSOC_PARTIAL },
+ { ANIM_SUNBATHE_ESCAPE, ASSOC_HAS_X_TRANSLATION | ASSOC_HAS_TRANSLATION | ASSOC_PARTIAL },
};
AnimAssocDesc aPlayerIdleAnimDescs[] = {
- { ANIM_PLAYER_IDLE1, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_PLAYER_IDLE2, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_PLAYER_IDLE3, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_PLAYER_IDLE4, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE1, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE2, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE3, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE4, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aRiotAnimDescs[] = {
- { ANIM_RIOT_ANGRY, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_ANGRY_B, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_CHANT, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_PUNCHES, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_SHOUT, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_CHALLENGE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_FUCKYOU, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_ANGRY, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_ANGRY_B, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_CHANT, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_PUNCHES, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_SHOUT, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_CHALLENGE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_FUCKYOU, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aStripAnimDescs[] = {
- { ANIM_STRIP_A, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STRIP_B, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STRIP_C, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STRIP_D, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STRIP_E, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STRIP_F, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_STRIP_G, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
-};
-#ifdef PC_PLAYER_CONTROLS
+ { ANIM_STRIP_A, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STRIP_B, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STRIP_C, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STRIP_D, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STRIP_E, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STRIP_F, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STRIP_G, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+};
AnimAssocDesc aStdAnimDescsSide[] = {
- { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
- { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
- { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
- { ANIM_STD_IDLE, ASSOC_REPEAT },
- { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
+ { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_IDLE, ASSOC_REPEAT },
+ { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
+};
+AnimAssocDesc aMPNoteAnimDescs[] = {
+ { ANIM_MULTIPLAYER_CUTSCENE_MPNOTE, ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aCSMiscAnimDescs[] = {
+ { ANIM_CS_MISC_IDLE_LOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_NO, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_YES, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_CHAT2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_COUGH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_GIGGLE_FEMALE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_TOUGH_CHAT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_CELL_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aDONH2AnimDescs[] = {
+ { ANIM_DONH2_CAMERA, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aDONH3AnimDescs[] = {
+ { ANIM_DONH3_HAPPY, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aJDT2AnimDescs[] = {
+ { ANIM_JDT2_ANXIOUS_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_JDT2_SHRUG, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aJDT4AnimDescs[] = {
+ { ANIM_JDT4_DILDO_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aJDT5AnimDescs[] = {
+ { ANIM_JDT5_CALM_DOWN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_JDT5_POINT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aJDT6AnimDescs[] = {
+ { ANIM_JDT6_PICKUP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_JDT6_KNOCK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aMAR1AnimDescs[] = {
+ { ANIM_MAR1_SKIRT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aMAR2AnimDescs[] = {
+ { ANIM_MAR2_CELL_ANSWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MAR2_CELL_END, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MAR2_CELL_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MAR2_FOOT_TAP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aMAR3AnimDescs[] = {
+ { ANIM_MAR3_HOOCHY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MAR3_NOTE_IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MAR3_NOTE_PICKUP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aSAL1AnimDescs[] = {
+ { ANIM_SAL1_BIREFCASE_DOWN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aSAL2AnimDescs[] = {
+ { ANIM_SAL2_IDLE_SEATED, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL2_SEAT_TO_STAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aSAL3AnimDescs[] = {
+ { ANIM_SAL3_SEATED_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL3_SEATED_IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL3_SIT_DOWN, ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aSAL4AnimDescs[] = {
+ { ANIM_SAL4_DUST_DOWN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL4_GIRL_RUN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aSAL6AnimDescs[] = {
+ { ANIM_SAL6_ANGRY_SEATED, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL6_IDLE_SEATED, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aSAL7AnimDescs[] = {
+ { ANIM_SAL7_LOOKOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aVIC2AnimDescs[] = {
+ { ANIM_VIC2_POINT_ANGRY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aVIC3AnimDescs[] = {
+ { ANIM_VIC3_WAFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_VIC3_PICKUP_ROLL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aVIC4AnimDescs[] = {
+ { ANIM_VIC4_CARRY_BOX, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_VIC4_CELL_LOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_VIC4_CRATE_IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aVIC6AnimDescs[] = {
+ { ANIM_VIC6_CELL_ANGRY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aTouristAnimDescs[] = {
+ { ANIM_TOURIST3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_TOURIST2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_TOURIST1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aMAC2AnimDescs[] = {
+ { ANIM_MAC2_PLEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+};
+AnimAssocDesc aVIC7AnimDescs[] = {
+ { ANIM_VIC7_PROD_WITH_FOOT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
};
-#endif
-char const* aStdAnimations[] = {
+
+char const *aStdAnimations[] = {
"walk_civi",
"run_civi",
"sprint_panic",
@@ -318,8 +410,8 @@ char const* aStdAnimations[] = {
"KO_shot_armR",
"KO_shot_legl",
"KO_shot_legR",
- "KD_left",
- "KD_right",
+ "BIKE_fall_off",
+ "BIKE_fall_off",
"KO_skid_front",
"KO_spin_R",
"KO_skid_back",
@@ -333,30 +425,28 @@ char const* aStdAnimations[] = {
"HIT_back",
"HIT_R",
"FLOOR_hit",
- "HIT_bodyblow",
- "HIT_chest",
- "HIT_head",
- "HIT_walk",
+
"HIT_wall",
"FLOOR_hit_f",
"HIT_behind",
"FIGHTIDLE",
"FIGHT2IDLE",
"FIGHTsh_F",
- "FIGHTbodyblow",
- "FIGHThead",
- "FIGHTkick",
- "FIGHTknee",
- "FIGHTLhook",
- "FIGHTpunch",
- "FIGHTrndhse",
- "FIGHTlngkck",
"FIGHTppunch",
- "FIGHTjab",
- "FIGHTelbowL",
- "FIGHTelbowR",
- "FIGHTbkickL",
- "FIGHTbkickR",
+
+ "l_hook",
+ "r_hook",
+ "uppercut",
+ "headbutt",
+ "frontkick",
+ "roundhouse",
+ "hit_l_hook",
+ "hit_r_hook",
+ "hit_uppercut",
+ "hit_headbutt",
+ "hit_frontkick",
+ "hit_rhouse",
+
"bomber",
"punchR",
"FIGHTppunch",
@@ -426,12 +516,13 @@ char const* aStdAnimations[] = {
"CAR_getoutL_RHS",
"CAR_close_RHS",
"car_hookertalk",
- "idle_stance",
- "idle_stance",
+
+ "TRAIN_getin",
+ "TRAIN_getout",
"CAR_crawloutRHS",
"CAR_crawloutRHS",
"CAR_rollout_LHS",
- "CAR_rollout_LHS",
+ "CAR_rollout_RHS",
"Getup",
"Getup",
"Getup",
@@ -447,6 +538,8 @@ char const* aStdAnimations[] = {
"FALL_front",
"EV_step",
"EV_dive",
+
+ "commando_roll",
"XPRESSscratch",
"roadcross",
"TURN_180",
@@ -469,7 +562,7 @@ char const* aStdAnimations[] = {
"ATM",
"abseil",
};
-char const* aVanAnimations[] = {
+char const *aVanAnimations[] = {
"VAN_openL",
"VAN_getinL",
"VAN_closeL",
@@ -479,14 +572,14 @@ char const* aVanAnimations[] = {
"VAN_close",
"VAN_getout",
};
-char const* aCoachAnimations[] = {
+char const *aCoachAnimations[] = {
"COACH_opnL",
- "COACH_opnL",
- "COACH_inL",
+ "COACH_opnR",
"COACH_inL",
+ "COACH_inR",
"COACH_outL",
};
-char const* aBikesAnimations[] = {
+char const *aBikesAnimations[] = {
"BIKEs_Ride",
"BIKEs_Still",
"BIKEs_Left",
@@ -506,7 +599,7 @@ char const* aBikesAnimations[] = {
"BIKEs_drivebyFT",
"BIKEs_passenger",
};
-char const* aBikevAnimations[] = {
+char const *aBikevAnimations[] = {
"BIKEv_Ride",
"BIKEv_Still",
"BIKEv_Left",
@@ -526,7 +619,7 @@ char const* aBikevAnimations[] = {
"BIKEv_drivebyFT",
"BIKEv_passenger",
};
-char const* aBikehAnimations[] = {
+char const *aBikehAnimations[] = {
"BIKEh_Ride",
"BIKEh_Still",
"BIKEh_Left",
@@ -546,7 +639,7 @@ char const* aBikehAnimations[] = {
"BIKEh_drivebyFT",
"BIKEh_passenger",
};
-char const* aBikedAnimations[] = {
+char const *aBikedAnimations[] = {
"BIKEd_Ride",
"BIKEd_Still",
"BIKEd_Left",
@@ -566,115 +659,123 @@ char const* aBikedAnimations[] = {
"BIKEd_drivebyFT",
"BIKEd_passenger",
};
-char const* aUnarmedAnimations[] = {
+char const *aUnarmedAnimations[] = {
"punchR",
"KICK_floor",
"FIGHTppunch",
};
-char const* aScrewdriverAnimations[] = {
- "FIGHTbodyblow",
- "FIGHTbodyblow",
+char const *aScrewdriverAnimations[] = {
+ "r_hook",
+ "r_hook",
"FIGHTppunch",
"FIGHTIDLE",
- "FIGHTbodyblow",
+ "r_hook",
};
-char const* aKnifeAnimations[] = {
+char const *aKnifeAnimations[] = {
"WEAPON_knife_1",
"WEAPON_knife_2",
"knife_part",
"WEAPON_knifeidle",
"WEAPON_knife_3",
};
-char const* aBaseballbatAnimations[] = {
+char const *aBaseballbatAnimations[] = {
"WEAPON_bat_h",
"WEAPON_bat_v",
"BAT_PART",
"WEAPON_bat_h",
"WEAPON_golfclub",
};
-char const* aGolfclubAnimations[] = {
+char const *aGolfclubAnimations[] = {
"WEAPON_bat_h",
"WEAPON_golfclub",
"BAT_PART",
"WEAPON_bat_h",
"WEAPON_bat_v",
};
-char const* aChainsawAnimations[] = {
+char const *aChainsawAnimations[] = {
"WEAPON_csaw",
"WEAPON_csawlo",
"csaw_part",
};
-char const* aPythonAnimations[] = {
+char const *aPythonAnimations[] = {
"python_fire",
"python_crouchfire",
"python_reload",
"python_crouchreload",
};
-char const* aColtAnimations[] = {
+char const *aColtAnimations[] = {
"colt45_fire",
"colt45_crouchfire",
"colt45_reload",
"colt45_crouchreload",
"colt45_cop",
};
-char const* aShotgunAnimations[] = {
+char const *aShotgunAnimations[] = {
"shotgun_fire",
"shotgun_crouchfire",
};
-char const* aBuddyAnimations[] = {
+char const *aBuddyAnimations[] = {
"buddy_fire",
"buddy_crouchfire",
+ "buddy_reload",
};
-char const* aTecAnimations[] = {
+char const *aTecAnimations[] = {
"TEC_fire",
"TEC_crouchfire",
"TEC_reload",
"TEC_crouchreload",
};
-char const* aUziAnimations[] = {
+char const *aUziAnimations[] = {
"UZI_fire",
"UZI_crouchfire",
"UZI_reload",
"UZI_crouchreload",
};
-char const* aRifleAnimations[] = {
+char const *aRifleAnimations[] = {
"RIFLE_fire",
"RIFLE_crouchfire",
"RIFLE_load",
"RIFLE_crouchload",
};
-char const* aM60Animations[] = {
+char const *aM60Animations[] = {
"M60_fire",
"M60_fire",
"M60_reload",
};
-char const* aSniperAnimations[] = {
- "WEAPON_sniper",
+char const *aSniperAnimations[] = {
+ "sniper_fire",
+ "sniper_fire",
+ "sniper_reload",
};
-char const* aThrowAnimations[] = {
+char const *aThrowAnimations[] = {
"WEAPON_throw",
"WEAPON_throwu",
"WEAPON_start_throw",
};
-char const* aFlamethrowerAnimations[] = {
+char const *aFlamethrowerAnimations[] = {
"FLAME_fire",
};
-char const* aMedicAnimations[] = {
+char const *aRocketLauncherAnimations[] = {
+ "rocket_fire",
+ "rocket_fire",
+ "rocket_reload",
+};
+char const *aMedicAnimations[] = {
"CPR",
};
-char const* aSunbatheAnimations[] = {
+char const *aSunbatheAnimations[] = {
"bather",
"batherdown",
"batherup",
"batherscape",
};
-char const* aPlayerIdleAnimations[] = {
+char const *aPlayerIdleAnimations[] = {
"stretch",
"time",
"shldr",
"strleg",
};
-char const* aRiotAnimations[] = {
+char const *aRiotAnimations[] = {
"riot_angry",
"riot_angry_b",
"riot_chant",
@@ -683,7 +784,7 @@ char const* aRiotAnimations[] = {
"riot_challenge",
"riot_fuku",
};
-char const* aStripAnimations[] = {
+char const *aStripAnimations[] = {
"strip_A",
"strip_B",
"strip_C",
@@ -692,212 +793,287 @@ char const* aStripAnimations[] = {
"strip_F",
"strip_G",
};
-char const* aLanceAnimations[] = {
+char const *aLanceAnimations[] = {
"lance",
};
-char const* aPlayerAnimations[] = {
+char const *aPlayerAnimations[] = {
"walk_player",
"run_player",
"SPRINT_civi",
"IDLE_STANCE",
"walk_start",
};
-char const* aPlayerWithRocketAnimations[] = {
+char const *aPlayerWithRocketAnimations[] = {
"walk_rocket",
"run_rocket",
- "run_rocket",
+ "sprint_rocket",
"idle_rocket",
"walk_start_rocket",
};
-char const* aPlayer1ArmedAnimations[] = {
+char const *aPlayer1ArmedAnimations[] = {
"walk_player",
"run_1armed",
"SPRINT_civi",
"IDLE_STANCE",
"walk_start",
};
-char const* aPlayer2ArmedAnimations[] = {
+char const *aPlayer2ArmedAnimations[] = {
"walk_armed",
"run_armed",
- "run_armed",
+ "playersprint_armed",
"idle_armed",
"walk_start_armed",
};
-char const* aPlayerBBBatAnimations[] = {
- "walk_player",
- "run_player",
- "run_player",
- "IDLE_STANCE",
- "walk_start",
+char const *aAIChainsawAnimations[] = {
+ "walk_aicsaw",
+ "run_aicsaw",
+ "run_aicsaw",
+ "IDLE_csaw",
+ "walk_start_aicsaw",
};
-char const* aPlayerChainsawAnimations[] = {
+char const *aPlayerChainsawAnimations[] = {
"walk_csaw",
"run_csaw",
- "run_csaw",
+ "sprint_csaw",
"IDLE_csaw",
"walk_start_csaw",
};
-char const* aShuffleAnimations[] = {
+char const *aShuffleAnimations[] = {
"WALK_shuffle",
"RUN_civi",
"SPRINT_civi",
"IDLE_STANCE",
};
-char const* aOldAnimations[] = {
+char const *aOldAnimations[] = {
"walk_old",
"run_civi",
"sprint_civi",
"idle_stance",
};
-char const* aGang1Animations[] = {
+char const *aGang1Animations[] = {
"walk_gang1",
"run_gang1",
"sprint_civi",
"idle_stance",
};
-char const* aGang2Animations[] = {
+char const *aGang2Animations[] = {
"walk_gang2",
"run_gang1",
"sprint_civi",
"idle_stance",
};
-char const* aFatAnimations[] = {
+char const *aFatAnimations[] = {
"walk_fat",
"run_civi",
"woman_runpanic",
"idle_stance",
};
-char const* aOldFatAnimations[] = {
+char const *aOldFatAnimations[] = {
"walk_fatold",
"run_fatold",
"woman_runpanic",
"idle_stance",
};
-char const* aJoggerAnimations[] = {
+char const *aJoggerAnimations[] = {
"JOG_maleA",
"run_civi",
"sprint_civi",
"idle_stance",
};
-char const* aStdWomanAnimations[] = {
+char const *aStdWomanAnimations[] = {
"woman_walknorm",
"woman_run",
"woman_runpanic",
"woman_idlestance",
};
-char const* aWomanShopAnimations[] = {
+char const *aWomanShopAnimations[] = {
"woman_walkshop",
"woman_run",
"woman_run",
"woman_idlestance",
};
-char const* aBusyWomanAnimations[] = {
+char const *aBusyWomanAnimations[] = {
"woman_walkbusy",
"woman_run",
"woman_runpanic",
"woman_idlestance",
};
-char const* aSexyWomanAnimations[] = {
+char const *aSexyWomanAnimations[] = {
"woman_walksexy",
"woman_run",
"woman_runpanic",
"woman_idlestance",
};
-char const* aFatWomanAnimations[] = {
+char const *aFatWomanAnimations[] = {
"walk_fat",
"woman_run",
"woman_runpanic",
"woman_idlestance",
};
-char const* aOldWomanAnimations[] = {
+char const *aOldWomanAnimations[] = {
"woman_walkold",
"woman_run",
"woman_runpanic",
"woman_idlestance",
};
-char const* aJoggerWomanAnimations[] = {
+char const *aJoggerWomanAnimations[] = {
"JOG_maleB",
"woman_run",
"woman_runpanic",
"woman_idlestance",
};
-char const* aPanicChunkyAnimations[] = {
+char const *aPanicChunkyAnimations[] = {
"run_fatold",
"woman_runpanic",
"woman_runpanic",
"idle_stance",
};
-char const* aSkateAnimations[] = {
+char const *aSkateAnimations[] = {
"skate_run",
"skate_sprint",
"skate_sprint",
"skate_idle",
};
-#ifdef PC_PLAYER_CONTROLS
-char const* aPlayerStrafeBackAnimations[] = {
+char const *aPlayerStrafeBackAnimations[] = {
"walk_back",
"run_back",
"run_back",
"IDLE_STANCE",
"walk_start_back",
};
-char const* aPlayerStrafeLeftAnimations[] = {
+char const *aPlayerStrafeLeftAnimations[] = {
"walk_left",
"run_left",
"run_left",
"IDLE_STANCE",
"walk_start_left",
};
-char const* aPlayerStrafeRightAnimations[] = {
+char const *aPlayerStrafeRightAnimations[] = {
"walk_right",
"run_right",
"run_right",
"IDLE_STANCE",
"walk_start_right",
};
-char const* aRocketStrafeBackAnimations[] = {
+char const *aRocketStrafeBackAnimations[] = {
"walk_rocket_back",
"run_rocket_back",
"run_rocket_back",
"idle_rocket",
"walkst_rocket_back",
};
-char const* aRocketStrafeLeftAnimations[] = {
+char const *aRocketStrafeLeftAnimations[] = {
"walk_rocket_left",
"run_rocket_left",
"run_rocket_left",
"idle_rocket",
"walkst_rocket_left",
};
-char const* aRocketStrafeRightAnimations[] = {
+char const *aRocketStrafeRightAnimations[] = {
"walk_rocket_right",
"run_rocket_right",
"run_rocket_right",
"idle_rocket",
"walkst_rocket_right",
};
-char const* aChainsawStrafeBackAnimations[] = {
- "walk_csaw_back",
- "run_csaw_back",
- "run_csaw_back",
- "idle_csaw",
- "walkst_csaw_back",
-};
-char const* aChainsawStrafeLeftAnimations[] = {
- "walk_csaw_left",
- "run_csaw_left",
- "run_csaw_left",
- "idle_csaw",
- "walkst_csaw_left",
-};
-char const* aChainsawStrafeRightAnimations[] = {
- "walk_csaw_right",
- "run_csaw_right",
- "run_csaw_right",
- "idle_csaw",
- "walkst_csaw_right",
+char const *aMPNoteAnimations[] = {
+ "MPNote",
+ "MPNoteloop",
+};
+char const *aCSMiscAnimations[] = {
+ "IDLE_look",
+ "IDLE_no",
+ "IDLE_yes",
+ "IDLE_chat2",
+ "IDLE_cough",
+ "IDLE_giggle_female",
+ "IDLE_tough_chat",
+ "IDLE_cell_talk",
+};
+char const *aDONH2Animations[] = {
+ "DONH2_camera",
+};
+char const *aDONH3Animations[] = {
+ "DONH3_happy",
+};
+char const *aJDT2Animations[] = {
+ "JDT2_anxious_talk",
+ "JDT2_shrug",
+};
+char const *aJDT4Animations[] = {
+ "JDT4_dildo_talk",
+};
+char const *aJDT5Animations[] = {
+ "JDT5_calm_down",
+ "JDT5_point",
+};
+char const *aJDT6Animations[] = {
+ "JDT6_pickup",
+ "JDT6_doorknock",
+};
+char const *aMAR1Animations[] = {
+ "MAR1_skirt",
+};
+char const *aMAR2Animations[] = {
+ "MAR2_cell_answer",
+ "MAR2_cell_end",
+ "MAR2_cell_talk",
+ "MAR2_foot_tap",
+};
+char const *aMAR3Animations[] = {
+ "MAR3_hoochy",
+ "MAR3_note_idle",
+ "MAR3_note_pick",
+};
+char const *aSAL1Animations[] = {
+ "SAL1_briefcase_down",
+};
+char const *aSAL2Animations[] = {
+ "SAL2_idle_seated",
+ "SAL2_seat_to_stand",
+};
+char const *aSAL3Animations[] = {
+ "SAL3_seated_talk",
+ "SAL3_seated_idle",
+ "SAL3_sit_down",
+};
+char const *aSAL4Animations[] = {
+ "SAL4_dustdown",
+ "SAL4_girlrun",
+};
+char const *aSAL6Animations[] = {
+ "SAL6_angry_seated",
+ "SAL6_idle_seated",
+};
+char const *aSAL7Animations[] = {
+ "SAL7_lookout",
+};
+char const *aVIC2Animations[] = {
+ "VIC2_point_angry",
+};
+char const *aVIC3Animations[] = {
+ "VIC3_waft",
+ "VIC3_pickup_roll",
+};
+char const *aVIC4Animations[] = {
+ "VIC4_carry_box",
+ "VIC4_cell_look",
+ "VIC4_crate_idle",
+};
+char const *aVIC6Animations[] = {
+ "VIC6_cell_angry",
+};
+char const *aTouristAnimations[] = {
+ "tourist3",
+ "tourist2",
+ "tourist1",
+};
+char const *aMAC2Animations[] = {
+ "MAC2_plead",
+};
+char const *aVIC7Animations[] = {
+ "VIC7_prod_with_foot",
};
-#endif
#define awc(a) ARRAY_SIZE(a), a
const AnimAssocDefinition CAnimManager::ms_aAnimAssocDefinitions[NUM_ANIM_ASSOC_GROUPS] = {
@@ -925,6 +1101,7 @@ const AnimAssocDefinition CAnimManager::ms_aAnimAssocDefinitions[NUM_ANIM_ASSOC_
{ "sniper", "sniper", MI_COP, awc(aSniperAnimations), aWeaponAnimDescs },
{ "grenade", "grenade", MI_COP, awc(aThrowAnimations), aWeaponAnimDescs },
{ "flame", "flame", MI_COP, awc(aFlamethrowerAnimations), aWeaponAnimDescs },
+ { "rocketla", "rocketla", MI_COP, awc(aRocketLauncherAnimations), aWeaponAnimDescs },
{ "medic", "medic", MI_COP, awc(aMedicAnimations), aMedicAnimDescs },
{ "sunbathe", "sunbathe", MI_COP, 1, aSunbatheAnimations, aSunbatheAnimDescs }, // NB: not using awc here!
{ "playidles", "playidles", MI_COP, awc(aPlayerIdleAnimations), aPlayerIdleAnimDescs },
@@ -935,7 +1112,8 @@ const AnimAssocDefinition CAnimManager::ms_aAnimAssocDefinitions[NUM_ANIM_ASSOC_
{ "playerrocket", "ped", MI_COP, awc(aPlayerWithRocketAnimations), aStdAnimDescs },
{ "player1armed", "ped", MI_COP, awc(aPlayer1ArmedAnimations), aStdAnimDescs },
{ "player2armed", "ped", MI_COP, awc(aPlayer2ArmedAnimations), aStdAnimDescs },
- { "playerBBBat", "ped", MI_COP, awc(aPlayerBBBatAnimations), aStdAnimDescs },
+ { "playerBBBat", "ped", MI_COP, awc(aPlayer1ArmedAnimations), aStdAnimDescs },
+ { "aicsaw2", "ped", MI_COP, awc(aAIChainsawAnimations), aStdAnimDescs },
{ "playercsaw", "ped", MI_COP, awc(aPlayerChainsawAnimations), aStdAnimDescs },
{ "shuffle", "ped", MI_COP, awc(aShuffleAnimations), aStdAnimDescs },
{ "oldman", "ped", MI_COP, awc(aOldAnimations), aStdAnimDescs },
@@ -953,17 +1131,39 @@ const AnimAssocDefinition CAnimManager::ms_aAnimAssocDefinitions[NUM_ANIM_ASSOC_
{ "jogwoman", "ped", MI_COP, awc(aJoggerWomanAnimations), aStdAnimDescs },
{ "panicchunky", "ped", MI_COP, awc(aPanicChunkyAnimations), aStdAnimDescs },
{ "skate", "skate", MI_COP, awc(aSkateAnimations), aStdAnimDescs },
-#ifdef PC_PLAYER_CONTROLS
+#ifdef PC_PLAYER_CONTROLS // strangely enabled even on PS2
{ "playerback", "ped", MI_COP, awc(aPlayerStrafeBackAnimations), aStdAnimDescs },
{ "playerleft", "ped", MI_COP, awc(aPlayerStrafeLeftAnimations), aStdAnimDescsSide },
{ "playerright", "ped", MI_COP, awc(aPlayerStrafeRightAnimations), aStdAnimDescsSide },
{ "rocketback", "ped", MI_COP, awc(aRocketStrafeBackAnimations), aStdAnimDescs },
{ "rocketleft", "ped", MI_COP, awc(aRocketStrafeLeftAnimations), aStdAnimDescsSide },
{ "rocketright", "ped", MI_COP, awc(aRocketStrafeRightAnimations), aStdAnimDescsSide },
- { "csawback", "ped", MI_COP, awc(aChainsawStrafeBackAnimations), aStdAnimDescs },
- { "csawleft", "ped", MI_COP, awc(aChainsawStrafeLeftAnimations), aStdAnimDescsSide },
- { "csawright", "ped", MI_COP, awc(aChainsawStrafeRightAnimations), aStdAnimDescsSide },
#endif
+
+ { "MPNote", "MPNote", MI_COP, awc(aMPNoteAnimations), aMPNoteAnimDescs },
+ { "CS_MISC", "CS_MISC", MI_COP, awc(aCSMiscAnimations), aCSMiscAnimDescs },
+ { "DONH2", "DONH2", MI_COP, awc(aDONH2Animations), aDONH2AnimDescs },
+ { "DONH3", "DONH3", MI_COP, awc(aDONH3Animations), aDONH3AnimDescs },
+ { "JDT2", "JDT2", MI_COP, awc(aJDT2Animations), aJDT2AnimDescs },
+ { "JDT4", "JDT4", MI_COP, awc(aJDT4Animations), aJDT4AnimDescs },
+ { "JDT5", "JDT5", MI_COP, awc(aJDT5Animations), aJDT5AnimDescs },
+ { "JDT6", "JDT6", MI_COP, awc(aJDT6Animations), aJDT6AnimDescs },
+ { "MAR1", "MAR1", MI_COP, awc(aMAR1Animations), aMAR1AnimDescs },
+ { "MAR2", "MAR2", MI_COP, awc(aMAR2Animations), aMAR2AnimDescs },
+ { "MAR3", "MAR3", MI_COP, awc(aMAR3Animations), aMAR3AnimDescs },
+ { "SAL1", "SAL1", MI_COP, awc(aSAL1Animations), aSAL1AnimDescs },
+ { "SAL2", "SAL2", MI_COP, awc(aSAL2Animations), aSAL2AnimDescs },
+ { "SAL3", "SAL3", MI_COP, awc(aSAL3Animations), aSAL3AnimDescs },
+ { "SAL4", "SAL4", MI_COP, awc(aSAL4Animations), aSAL4AnimDescs },
+ { "SAL6", "SAL6", MI_COP, awc(aSAL6Animations), aSAL6AnimDescs },
+ { "SAL7", "SAL7", MI_COP, awc(aSAL7Animations), aSAL7AnimDescs },
+ { "VIC2", "VIC2", MI_COP, awc(aVIC2Animations), aVIC2AnimDescs },
+ { "VIC3", "VIC3", MI_COP, awc(aVIC3Animations), aVIC3AnimDescs },
+ { "VIC4", "VIC4", MI_COP, awc(aVIC4Animations), aVIC4AnimDescs },
+ { "VIC6", "VIC6", MI_COP, awc(aVIC6Animations), aVIC6AnimDescs },
+ { "TOURIST", "TOURIST", MI_COP, awc(aTouristAnimations), aTouristAnimDescs },
+ { "MAC2", "MAC2", MI_COP, awc(aMAC2Animations), aMAC2AnimDescs },
+ { "VIC7", "VIC7", MI_COP, awc(aVIC7Animations), aVIC7AnimDescs },
};
#undef awc
diff --git a/src/animation/AnimManager.h b/src/animation/AnimManager.h
index 213326b6..9f556b54 100644
--- a/src/animation/AnimManager.h
+++ b/src/animation/AnimManager.h
@@ -29,6 +29,7 @@ enum AssocGroupId
ASSOCGRP_SNIPER,
ASSOCGRP_THROW,
ASSOCGRP_FLAMETHROWER,
+ ASSOCGRP_ROCKETLAUNCHER,
ASSOCGRP_MEDIC,
ASSOCGRP_SUNBATHE,
ASSOCGRP_PLAYER_IDLE,
@@ -40,6 +41,7 @@ enum AssocGroupId
ASSOCGRP_PLAYER1ARMED,
ASSOCGRP_PLAYER2ARMED,
ASSOCGRP_PLAYERBBBAT,
+ ASSOCGRP_AICHAINSAW,
ASSOCGRP_PLAYERCHAINSAW,
ASSOCGRP_SHUFFLE,
ASSOCGRP_OLD,
@@ -64,11 +66,33 @@ enum AssocGroupId
ASSOCGRP_ROCKETBACK,
ASSOCGRP_ROCKETLEFT,
ASSOCGRP_ROCKETRIGHT,
- ASSOCGRP_CHAINSAWBACK,
- ASSOCGRP_CHAINSAWLEFT,
- ASSOCGRP_CHAINSAWRIGHT,
#endif
+ ASSOCGRP_MPNOTE,
+ ASSOCGRP_CSMISC,
+ ASSOCGRP_DONH2,
+ ASSOCGRP_DONH3,
+ ASSOCGRP_JDT2,
+ ASSOCGRP_JDT4,
+ ASSOCGRP_JDT5,
+ ASSOCGRP_JDT6,
+ ASSOCGRP_MAR1,
+ ASSOCGRP_MAR2,
+ ASSOCGRP_MAR3,
+ ASSOCGRP_SAL1,
+ ASSOCGRP_SAL2,
+ ASSOCGRP_SAL3,
+ ASSOCGRP_SAL4,
+ ASSOCGRP_SAL6,
+ ASSOCGRP_SAL7,
+ ASSOCGRP_VIC2,
+ ASSOCGRP_VIC3,
+ ASSOCGRP_VIC4,
+ ASSOCGRP_VIC6,
+ ASSOCGRP_TOURIST,
+ ASSOCGRP_MAC2,
+ ASSOCGRP_VIC7,
+
NUM_ANIM_ASSOC_GROUPS
};
diff --git a/src/animation/AnimationId.h b/src/animation/AnimationId.h
index 0b5d8d8e..5a8f7289 100644
--- a/src/animation/AnimationId.h
+++ b/src/animation/AnimationId.h
@@ -40,42 +40,25 @@ enum AnimationId
ANIM_STD_HIT_BACK,
ANIM_STD_HIT_RIGHT,
ANIM_STD_HIT_FLOOR,
-
- /* names made up */
- ANIM_STD_HIT_BODYBLOW,
- ANIM_STD_HIT_CHEST,
- ANIM_STD_HIT_HEAD,
- ANIM_STD_HIT_WALK,
- /**/
-
ANIM_STD_HIT_WALL,
ANIM_STD_HIT_FLOOR_FRONT,
ANIM_STD_HIT_BEHIND,
ANIM_STD_FIGHT_IDLE,
ANIM_STD_FIGHT_2IDLE,
ANIM_STD_FIGHT_SHUFFLE_F,
-
- /* names made up */
- ANIM_STD_FIGHT_BODYBLOW,
- ANIM_STD_FIGHT_HEAD,
- ANIM_STD_FIGHT_KICK,
- ANIM_STD_FIGHT_KNEE,
- ANIM_STD_FIGHT_LHOOK,
- ANIM_STD_FIGHT_PUNCH,
- ANIM_STD_FIGHT_ROUNDHOUSE,
- ANIM_STD_FIGHT_LONGKICK,
- /**/
-
ANIM_STD_PARTIAL_PUNCH,
-
- /* names made up */
- ANIM_STD_FIGHT_JAB,
- ANIM_STD_FIGHT_ELBOW_L,
- ANIM_STD_FIGHT_ELBOW_R,
- ANIM_STD_FIGHT_BKICK_L,
- ANIM_STD_FIGHT_BKICK_R,
- /**/
-
+ ANIM_FIGHT_ATTACK_A1,
+ ANIM_FIGHT_ATTACK_A2,
+ ANIM_FIGHT_ATTACK_A3,
+ ANIM_FIGHT_ATTACK_B1,
+ ANIM_FIGHT_ATTACK_B2,
+ ANIM_FIGHT_ATTACK_B3,
+ ANIM_FIGHT_HIT_A1,
+ ANIM_FIGHT_HIT_A2,
+ ANIM_FIGHT_HIT_A3,
+ ANIM_FIGHT_HIT_B1,
+ ANIM_FIGHT_HIT_B2,
+ ANIM_FIGHT_HIT_B3,
ANIM_STD_DETONATE,
ANIM_STD_PUNCH,
ANIM_STD_PARTIALPUNCH,
@@ -174,6 +157,7 @@ enum AnimationId
ANIM_STD_EVADE_STEP,
ANIM_STD_EVADE_DIVE,
+ ANIM_STD_COMMANDO_ROLL,
ANIM_STD_XPRESS_SCRATCH,
ANIM_STD_ROADCROSS,
ANIM_STD_TURN180,
@@ -284,4 +268,65 @@ enum AnimationId
ANIM_STRIP_E,
ANIM_STRIP_F,
ANIM_STRIP_G,
+
+
+ ANIM_MULTIPLAYER_CUTSCENE_MPNOTE,
+ ANIM_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP,
+
+ ANIM_CS_MISC_IDLE_LOOK,
+ ANIM_CS_MISC_IDLE_NO,
+ ANIM_CS_MISC_IDLE_YES,
+ ANIM_CS_MISC_IDLE_CHAT2,
+ ANIM_CS_MISC_IDLE_COUGH,
+ ANIM_CS_MISC_IDLE_GIGGLE_FEMALE,
+ ANIM_CS_MISC_IDLE_TOUGH_CHAT,
+ ANIM_CS_MISC_IDLE_CELL_TALK,
+
+ ANIM_DONH2_CAMERA,
+ ANIM_DONH3_HAPPY,
+
+ ANIM_JDT2_ANXIOUS_TALK,
+ ANIM_JDT2_SHRUG,
+ ANIM_JDT4_DILDO_TALK,
+ ANIM_JDT5_CALM_DOWN,
+ ANIM_JDT5_POINT,
+ ANIM_JDT6_PICKUP,
+ ANIM_JDT6_KNOCK,
+
+ ANIM_MAR1_SKIRT,
+ ANIM_MAR2_CELL_ANSWER,
+ ANIM_MAR2_CELL_END,
+ ANIM_MAR2_CELL_TALK,
+ ANIM_MAR2_FOOT_TAP,
+ ANIM_MAR3_HOOCHY,
+ ANIM_MAR3_NOTE_IDLE,
+ ANIM_MAR3_NOTE_PICKUP,
+
+ ANIM_SAL1_BIREFCASE_DOWN,
+ ANIM_SAL2_IDLE_SEATED,
+ ANIM_SAL2_SEAT_TO_STAND,
+ ANIM_SAL3_SEATED_TALK,
+ ANIM_SAL3_SEATED_IDLE,
+ ANIM_SAL3_SIT_DOWN,
+ ANIM_SAL4_DUST_DOWN,
+ ANIM_SAL4_GIRL_RUN,
+ ANIM_SAL6_ANGRY_SEATED,
+ ANIM_SAL6_IDLE_SEATED,
+ ANIM_SAL7_LOOKOUT,
+
+ ANIM_VIC2_POINT_ANGRY,
+ ANIM_VIC3_WAFT,
+ ANIM_VIC3_PICKUP_ROLL,
+ ANIM_VIC4_CARRY_BOX,
+ ANIM_VIC4_CELL_LOOK,
+ ANIM_VIC4_CRATE_IDLE,
+ ANIM_VIC6_CELL_ANGRY,
+
+ ANIM_TOURIST3,
+ ANIM_TOURIST2,
+ ANIM_TOURIST1,
+
+ ANIM_MAC2_PLEAD,
+
+ ANIM_VIC7_PROD_WITH_FOOT
}; \ No newline at end of file
diff --git a/src/animation/CutsceneMgr.cpp b/src/animation/CutsceneMgr.cpp
index 633618b1..088cb413 100644
--- a/src/animation/CutsceneMgr.cpp
+++ b/src/animation/CutsceneMgr.cpp
@@ -22,590 +22,84 @@
#include "ColStore.h"
#include "Radar.h"
#include "Pools.h"
+#include "crossplatform.h"
-const struct {
- const char *szTrackName;
- int iTrackId;
-} musicNameIdAssoc[] = {
- { "ASS_1", STREAMED_SOUND_CUTSCENE_ASS_1 },
- { "ASS_2", STREAMED_SOUND_CUTSCENE_ASS_2 },
- { "BANK_1", STREAMED_SOUND_CUTSCENE_BANK_1 },
- { "BANK_2A", STREAMED_SOUND_CUTSCENE_BANK_2A },
- { "BANK_2B", STREAMED_SOUND_CUTSCENE_BANK_2B },
- { "BANK_3A", STREAMED_SOUND_CUTSCENE_BANK_3A },
- { "BANK_3B", STREAMED_SOUND_CUTSCENE_BANK_3B },
- { "BANK_4", STREAMED_SOUND_CUTSCENE_BANK_4 },
- { "BIKE_1", STREAMED_SOUND_CUTSCENE_BIKE_1 },
- { "BIKE_2", STREAMED_SOUND_CUTSCENE_BIKE_2 },
- { "BIKE_3", STREAMED_SOUND_CUTSCENE_BIKE_3 },
- { "BUD_1", STREAMED_SOUND_CUTSCENE_BUD_1 },
- { "BUD_2", STREAMED_SOUND_CUTSCENE_BUD_2 },
- { "BUD_3", STREAMED_SOUND_CUTSCENE_BUD_3 },
- { "CAP_1", STREAMED_SOUND_CUTSCENE_CAP_1 },
- { "CAR_1", STREAMED_SOUND_CUTSCENE_CAR_1 },
- { "CNT_1A", STREAMED_SOUND_CUTSCENE_CNT_1A },
- { "CNT_1B", STREAMED_SOUND_CUTSCENE_CNT_1B },
- { "CNT_2", STREAMED_SOUND_CUTSCENE_CNT_2 },
- { "COK_1", STREAMED_SOUND_CUTSCENE_COK_1 },
- { "COK_2A", STREAMED_SOUND_CUTSCENE_COK_2A },
- { "COK_2B", STREAMED_SOUND_CUTSCENE_COK_2B },
- { "COK_3", STREAMED_SOUND_CUTSCENE_COK_3 },
- { "COK_4A", STREAMED_SOUND_CUTSCENE_COK_4A },
- { "COK_4A2", STREAMED_SOUND_CUTSCENE_COK_4A2 },
- { "COK_4B", STREAMED_SOUND_CUTSCENE_COK_4B },
- { "COL_1", STREAMED_SOUND_CUTSCENE_COL_1 },
- { "COL_2", STREAMED_SOUND_CUTSCENE_COL_2 },
- { "COL_3A", STREAMED_SOUND_CUTSCENE_COL_3A },
- { "COL_4A", STREAMED_SOUND_CUTSCENE_COL_4A },
- { "COL_5A", STREAMED_SOUND_CUTSCENE_COL_5A },
- { "COL_5B", STREAMED_SOUND_CUTSCENE_COL_5B },
- { "CUB_1", STREAMED_SOUND_CUTSCENE_CUB_1 },
- { "CUB_2", STREAMED_SOUND_CUTSCENE_CUB_2 },
- { "CUB_3", STREAMED_SOUND_CUTSCENE_CUB_3 },
- { "CUB_4", STREAMED_SOUND_CUTSCENE_CUB_4 },
- { "DRUG_1", STREAMED_SOUND_CUTSCENE_DRUG_1 },
- { "FIN", STREAMED_SOUND_CUTSCENE_FIN },
- { "FIN_2", STREAMED_SOUND_CUTSCENE_FIN2 },
- { "FINALE", STREAMED_SOUND_CUTSCENE_FINALE },
- { "HAT_1", STREAMED_SOUND_CUTSCENE_HAT_1 },
- { "HAT_2", STREAMED_SOUND_CUTSCENE_HAT_2 },
- { "HAT_3", STREAMED_SOUND_CUTSCENE_HAT_3 },
- { "ICE_1", STREAMED_SOUND_CUTSCENE_ICE_1 },
- { "INT_A", STREAMED_SOUND_CUTSCENE_INT_A },
- { "INT_B", STREAMED_SOUND_CUTSCENE_INT_B },
- { "INT_D", STREAMED_SOUND_CUTSCENE_INT_D },
- { "INT_M", STREAMED_SOUND_CUTSCENE_INT_M },
- { "LAW_1A", STREAMED_SOUND_CUTSCENE_LAW_1A },
- { "LAW_1B", STREAMED_SOUND_CUTSCENE_LAW_1B },
- { "LAW_2A", STREAMED_SOUND_CUTSCENE_LAW_2A },
- { "LAW_2B", STREAMED_SOUND_CUTSCENE_LAW_2B },
- { "LAW_2C", STREAMED_SOUND_CUTSCENE_LAW_2C },
- { "LAW_3", STREAMED_SOUND_CUTSCENE_LAW_3 },
- { "LAW_4", STREAMED_SOUND_CUTSCENE_LAW_4 },
- { "PHIL_1", STREAMED_SOUND_CUTSCENE_PHIL_1 },
- { "PHIL_2", STREAMED_SOUND_CUTSCENE_PHIL_2 },
- { "PORN_1", STREAMED_SOUND_CUTSCENE_PORN_1 },
- { "PORN_2", STREAMED_SOUND_CUTSCENE_PORN_2 },
- { "PORN_3", STREAMED_SOUND_CUTSCENE_PORN_3 },
- { "PORN_4", STREAMED_SOUND_CUTSCENE_PORN_4 },
- { "RESC_1A", STREAMED_SOUND_CUTSCENE_RESC_1A },
- { "ROK_1", STREAMED_SOUND_CUTSCENE_ROK_1 },
- { "ROK_2", STREAMED_SOUND_CUTSCENE_ROK_2 },
- { "ROK_3A", STREAMED_SOUND_CUTSCENE_ROK_3A },
- { "STRIPA", STREAMED_SOUND_CUTSCENE_STRIPA },
- { "TAX_1", STREAMED_SOUND_CUTSCENE_TAX_1 },
- { "TEX_1", STREAMED_SOUND_CUTSCENE_TEX_1 },
- { "TEX_2", STREAMED_SOUND_CUTSCENE_TEX_2 },
- { "TEX_3", STREAMED_SOUND_CUTSCENE_TEX_3 },
- { "GSPOT", STREAMED_SOUND_CUTSCENE_GLIGHT },
- { "FIST", STREAMED_SOUND_CUTSCENE_FIST },
- { "EL_PH1", STREAMED_SOUND_CUTSCENE_ELBURRO1_PH1 },
- { "EL_PH2", STREAMED_SOUND_CUTSCENE_ELBURRO2_PH2 },
- { NULL, 0 }
-};
+static bool bModelsRemovedForCutscene;
+static int32 NumberOfSavedWeapons;
+static eWeaponType SavedWeaponIDs[TOTAL_WEAPON_SLOTS];
+static int32 SavedWeaponAmmo[TOTAL_WEAPON_SLOTS];
-int
-FindCutsceneAudioTrackId(const char *szCutsceneName)
-{
- for (int i = 0; musicNameIdAssoc[i].szTrackName; i++) {
- if (!CGeneral::faststricmp(musicNameIdAssoc[i].szTrackName, szCutsceneName))
- return musicNameIdAssoc[i].iTrackId;
- }
- return -1;
-}
-
-bool CCutsceneMgr::ms_running;
-bool CCutsceneMgr::ms_cutsceneProcessing;
+char CCutsceneMgr::ms_cAppendAnimName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+char CCutsceneMgr::ms_cAppendObjectName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+int CCutsceneMgr::ms_numAppendObjectNames;
CDirectory *CCutsceneMgr::ms_pCutsceneDir;
-CCutsceneObject *CCutsceneMgr::ms_pCutsceneObjects[NUMCUTSCENEOBJECTS];
-int32 CCutsceneMgr::ms_numCutsceneObjs;
bool CCutsceneMgr::ms_loaded;
-bool CCutsceneMgr::ms_animLoaded;
-bool CCutsceneMgr::ms_useLodMultiplier;
-char CCutsceneMgr::ms_cutsceneName[CUTSCENENAMESIZE];
-CAnimBlendAssocGroup CCutsceneMgr::ms_cutsceneAssociations;
-CVector CCutsceneMgr::ms_cutsceneOffset;
-float CCutsceneMgr::ms_cutsceneTimer;
+bool CCutsceneMgr::ms_hasFileInfo;
bool CCutsceneMgr::ms_wasCutsceneSkipped;
+bool CCutsceneMgr::ms_useLodMultiplier;
+bool CCutsceneMgr::ms_cutsceneProcessing;
+bool CCutsceneMgr::ms_running;
+bool CCutsceneMgr::ms_animLoaded;
uint32 CCutsceneMgr::ms_cutsceneLoadStatus;
-bool CCutsceneMgr::ms_useCutsceneShadows = true;
-
-bool bCamLoaded;
-bool bIsEverythingRemovedFromTheWorldForTheBiggestFuckoffCutsceneEver; // pls don't shrink the name :P
-int32 NumberOfSavedWeapons;
-eWeaponType SavedWeaponIDs[TOTAL_WEAPON_SLOTS];
-int32 SavedWeaponAmmo[TOTAL_WEAPON_SLOTS];
-char uncompressedAnims[8][32];
-uint32 numUncompressedAnims;
-
-
-RpAtomic *
-CalculateBoundingSphereRadiusCB(RpAtomic *atomic, void *data)
-{
- float radius = RpAtomicGetBoundingSphere(atomic)->radius;
- RwV3d center = RpAtomicGetBoundingSphere(atomic)->center;
-
- for (RwFrame *frame = RpAtomicGetFrame(atomic); RwFrameGetParent(frame); frame = RwFrameGetParent(frame))
- RwV3dTransformPoints(&center, &center, 1, RwFrameGetMatrix(frame));
-
- float size = RwV3dLength(&center) + radius;
- if (size > *(float *)data)
- *(float *)data = size;
- return atomic;
-}
void
-CCutsceneMgr::Initialise(void)
+CCutsceneMgr::Initialise(void *dir)
{
- ms_numCutsceneObjs = 0;
- ms_loaded = false;
- ms_wasCutsceneSkipped = false;
+ ms_cutsceneLoadStatus = CUTSCENE_NOT_LOADED;
ms_running = false;
- ms_useLodMultiplier = false;
ms_animLoaded = false;
ms_cutsceneProcessing = false;
-
- ms_pCutsceneDir = new CDirectory(CUTSCENEDIRSIZE);
- ms_pCutsceneDir->ReadDirFile("ANIM\\CUTS.DIR");
-
- numUncompressedAnims = 0;
- uncompressedAnims[0][0] = '\0';
-}
-
-void
-CCutsceneMgr::Shutdown(void)
-{
- delete ms_pCutsceneDir;
-}
-
-void
-CCutsceneMgr::LoadCutsceneData(const char *szCutsceneName)
-{
- int file;
- uint32 size;
- uint32 offset;
- CPlayerPed *pPlayerPed;
-
- ms_cutsceneProcessing = true;
+ ms_useLodMultiplier = false;
ms_wasCutsceneSkipped = false;
- CTimer::Suspend();
- if (!bIsEverythingRemovedFromTheWorldForTheBiggestFuckoffCutsceneEver)
- CStreaming::RemoveCurrentZonesModels();
-
- ms_pCutsceneDir->numEntries = 0;
- ms_pCutsceneDir->ReadDirFile("ANIM\\CUTS.DIR");
-
- CStreaming::RemoveUnusedModelsInLoadedList();
- CGame::DrasticTidyUpMemory(true);
-
- strcpy(ms_cutsceneName, szCutsceneName);
-
- RwStream *stream;
- stream = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMREAD, "ANIM\\CUTS.IMG");
- assert(stream);
-
- // Load animations
- sprintf(gString, "%s.IFP", szCutsceneName);
- if (ms_pCutsceneDir->FindItem(gString, offset, size)) {
- CStreaming::MakeSpaceFor(size << 11);
- CStreaming::ImGonnaUseStreamingMemory();
- RwStreamSkip(stream, offset << 11);
- CAnimManager::LoadAnimFile(stream, true, uncompressedAnims);
- ms_cutsceneAssociations.CreateAssociations(szCutsceneName);
- CStreaming::IHaveUsedStreamingMemory();
- ms_animLoaded = true;
- } else {
- ms_animLoaded = false;
- }
- RwStreamClose(stream, nil);
-
- // Load camera data
- file = CFileMgr::OpenFile("ANIM\\CUTS.IMG", "rb");
- sprintf(gString, "%s.DAT", szCutsceneName);
- if (ms_pCutsceneDir->FindItem(gString, offset, size)) {
- CStreaming::ImGonnaUseStreamingMemory();
- CFileMgr::Seek(file, offset << 11, SEEK_SET);
- TheCamera.LoadPathSplines(file);
- CStreaming::IHaveUsedStreamingMemory();
- bCamLoaded = true;
- } else {
- bCamLoaded = false;
- }
-
- CFileMgr::CloseFile(file);
-
- if (CGeneral::faststricmp(ms_cutsceneName, "finale")) {
- DMAudio.ChangeMusicMode(MUSICMODE_CUTSCENE);
- int trackId = FindCutsceneAudioTrackId(szCutsceneName);
- if (trackId != -1) {
- printf("Start preload audio %s\n", szCutsceneName);
- DMAudio.PreloadCutSceneMusic(trackId);
- printf("End preload audio %s\n", szCutsceneName);
- }
+ ms_hasFileInfo = false;
+ //ms_numCutsceneObjs = 0;
+ //ms_loaded = false;
+ if (gMakeResources) {
+ ms_pCutsceneDir = new CDirectory(CUTSCENEDIRSIZE);
+ ms_pCutsceneDir->ReadDirFile("ANIM\\CUTS.DIR");
}
+ else
+ ms_pCutsceneDir = (CDirectory*)dir;
- ms_cutsceneTimer = 0.0f;
- ms_loaded = true;
- ms_cutsceneOffset = CVector(0.0f, 0.0f, 0.0f);
-
- pPlayerPed = FindPlayerPed();
- pPlayerPed->m_pWanted->ClearQdCrimes();
- pPlayerPed->bIsVisible = false;
- pPlayerPed->m_fCurrentStamina = pPlayerPed->m_fMaxStamina;
- CPad::GetPad(0)->SetDisablePlayerControls(PLAYERCONTROL_CUTSCENE);
- CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(true);
-
- CTimer::Resume();
-}
-
-void
-CCutsceneMgr::FinishCutscene()
-{
- ms_wasCutsceneSkipped = true;
- if (bCamLoaded) {
- CCutsceneMgr::ms_cutsceneTimer = TheCamera.GetCutSceneFinishTime() * 0.001f;
- TheCamera.FinishCutscene();
- }
-
- FindPlayerPed()->bIsVisible = true;
- CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(false);
+ //numUncompressedAnims = 0;
+ //uncompressedAnims[0][0] = '\0';
}
-void
-CCutsceneMgr::SetupCutsceneToStart(void)
+void CCutsceneMgr::Write(base::cRelocatableChunkWriter& writer)
{
- if (bCamLoaded) {
- TheCamera.SetCamCutSceneOffSet(ms_cutsceneOffset);
- TheCamera.TakeControlWithSpline(JUMP_CUT);
- TheCamera.SetWideScreenOn();
- }
-
- ms_cutsceneOffset.z++;
-
- for (int i = ms_numCutsceneObjs - 1; i >= 0; i--) {
- assert(RwObjectGetType(ms_pCutsceneObjects[i]->m_rwObject) == rpCLUMP);
- if (CAnimBlendAssociation *pAnimBlendAssoc = RpAnimBlendClumpGetFirstAssociation((RpClump*)ms_pCutsceneObjects[i]->m_rwObject)) {
- assert(pAnimBlendAssoc->hierarchy->sequences[0].HasTranslation());
- if (ms_pCutsceneObjects[i]->m_pAttachTo != nil) {
- pAnimBlendAssoc->flags &= (~ASSOC_HAS_TRANSLATION);
- } else {
- if (pAnimBlendAssoc->hierarchy->IsCompressed()){
- KeyFrameTransCompressed *keyFrames = ((KeyFrameTransCompressed*)pAnimBlendAssoc->hierarchy->sequences[0].GetKeyFrameCompressed(0));
- CVector trans;
- keyFrames->GetTranslation(&trans);
- ms_pCutsceneObjects[i]->SetPosition(ms_cutsceneOffset + trans);
- }else{
- KeyFrameTrans *keyFrames = ((KeyFrameTrans*)pAnimBlendAssoc->hierarchy->sequences[0].GetKeyFrame(0));
- ms_pCutsceneObjects[i]->SetPosition(ms_cutsceneOffset + keyFrames->translation);
- }
- }
- pAnimBlendAssoc->SetRun();
- } else {
- ms_pCutsceneObjects[i]->SetPosition(ms_cutsceneOffset);
- }
- CWorld::Add(ms_pCutsceneObjects[i]);
- if (RwObjectGetType(ms_pCutsceneObjects[i]->m_rwObject) == rpCLUMP) {
- ms_pCutsceneObjects[i]->UpdateRpHAnim();
- }
- }
-
- CTimer::Update();
- CTimer::Update();
- ms_running = true;
- ms_cutsceneTimer = 0.0f;
+ writer.AllocateRaw(ms_pCutsceneDir, sizeof(*ms_pCutsceneDir), 4, false, true);
+ writer.AllocateRaw(ms_pCutsceneDir->entries, sizeof(CDirectory::DirectoryInfo) * ms_pCutsceneDir->numEntries, 4, false, true);
+ writer.AddPatch(ms_pCutsceneDir);
}
void
-CCutsceneMgr::SetCutsceneAnim(const char *animName, CObject *pObject)
+CCutsceneMgr::Shutdown(void)
{
- CAnimBlendAssociation *pNewAnim;
- CAnimBlendClumpData *pAnimBlendClumpData;
-
- assert(RwObjectGetType(pObject->m_rwObject) == rpCLUMP);
- debug("Give cutscene anim %s\n", animName);
- RpAnimBlendClumpRemoveAllAssociations((RpClump*)pObject->m_rwObject);
-
- pNewAnim = ms_cutsceneAssociations.GetAnimation(animName);
- if (!pNewAnim) {
- debug("\n\nHaven't I told you I can't find the fucking animation %s\n\n\n", animName);
- return;
- }
-
- if (pNewAnim->hierarchy->IsCompressed())
- pNewAnim->hierarchy->keepCompressed = true;
-
- CStreaming::ImGonnaUseStreamingMemory();
- pNewAnim = ms_cutsceneAssociations.CopyAnimation(animName);
- CStreaming::IHaveUsedStreamingMemory();
-
- pNewAnim->SetCurrentTime(0.0f);
- pNewAnim->flags |= ASSOC_HAS_TRANSLATION;
- pNewAnim->flags &= ~ASSOC_RUNNING;
-
- pAnimBlendClumpData = *RPANIMBLENDCLUMPDATA(pObject->m_rwObject);
- pAnimBlendClumpData->link.Prepend(&pNewAnim->link);
-
- if (pNewAnim->hierarchy->keepCompressed)
- pAnimBlendClumpData->frames->flag |= AnimBlendFrameData::COMPRESSED;
+ delete ms_pCutsceneDir;
}
void
-CCutsceneMgr::SetCutsceneAnimToLoop(const char* animName)
-{
- ms_cutsceneAssociations.GetAnimation(animName)->flags |= ASSOC_REPEAT;
-}
-
-CCutsceneHead *
-CCutsceneMgr::AddCutsceneHead(CObject *pObject, int modelId)
-{
- return nil;
-}
-
-void UpdateCutsceneObjectBoundingBox(RpClump* clump, int modelId)
-{
- if (modelId >= MI_CUTOBJ01 && modelId <= MI_CUTOBJ05) {
- CColModel* pColModel = &CTempColModels::ms_colModelCutObj[modelId - MI_CUTOBJ01];
- float radius = 0.0f;
- RpClumpForAllAtomics(clump, CalculateBoundingSphereRadiusCB, &radius);
- pColModel->boundingSphere.radius = radius;
- pColModel->boundingBox.min = CVector(-radius, -radius, -radius);
- pColModel->boundingBox.max = CVector(radius, radius, radius);
- }
-}
-
-CCutsceneObject *
-CCutsceneMgr::CreateCutsceneObject(int modelId)
+CCutsceneMgr::LoadCutsceneData(const char *szCutsceneName)
{
- CBaseModelInfo *pModelInfo;
- CColModel *pColModel;
- CCutsceneObject *pCutsceneObject;
-
- CStreaming::ImGonnaUseStreamingMemory();
- debug("Created cutscene object %s\n", CModelInfo::GetModelInfo(modelId)->GetModelName());
- if (modelId >= MI_CUTOBJ01 && modelId <= MI_CUTOBJ05) {
- pModelInfo = CModelInfo::GetModelInfo(modelId);
- pColModel = &CTempColModels::ms_colModelCutObj[modelId - MI_CUTOBJ01];
- pModelInfo->SetColModel(pColModel);
- UpdateCutsceneObjectBoundingBox((RpClump*)pModelInfo->GetRwObject(), modelId);
- } else if (modelId >= MI_SPECIAL01 && modelId <= MI_SPECIAL21) {
- pModelInfo = CModelInfo::GetModelInfo(modelId);
- if (pModelInfo->GetColModel() == &CTempColModels::ms_colModelPed1) {
- CColModel *colModel = new CColModel();
- colModel->boundingSphere.radius = 2.0f;
- colModel->boundingSphere.center = CVector(0.0f, 0.0f, 0.0f);
- pModelInfo->SetColModel(colModel, true);
- }
- pColModel = pModelInfo->GetColModel();
- float radius = 2.0f;
- pColModel->boundingSphere.radius = radius;
- pColModel->boundingBox.min = CVector(-radius, -radius, -radius);
- pColModel->boundingBox.max = CVector(radius, radius, radius);
- }
-
- pCutsceneObject = new CCutsceneObject();
- pCutsceneObject->SetModelIndex(modelId);
- if (ms_useCutsceneShadows)
- pCutsceneObject->CreateShadow();
- ms_pCutsceneObjects[ms_numCutsceneObjs++] = pCutsceneObject;
- CStreaming::IHaveUsedStreamingMemory();
- return pCutsceneObject;
+ LoadCutsceneData_overlay(szCutsceneName);
}
void
CCutsceneMgr::DeleteCutsceneData(void)
{
- if (!ms_loaded) return;
- CTimer::Suspend();
-
- ms_cutsceneProcessing = false;
- ms_useLodMultiplier = false;
- ms_useCutsceneShadows = true;
-
- for (--ms_numCutsceneObjs; ms_numCutsceneObjs >= 0; ms_numCutsceneObjs--) {
- CWorld::Remove(ms_pCutsceneObjects[ms_numCutsceneObjs]);
- ms_pCutsceneObjects[ms_numCutsceneObjs]->DeleteRwObject();
- delete ms_pCutsceneObjects[ms_numCutsceneObjs];
- ms_pCutsceneObjects[ms_numCutsceneObjs] = nil;
- }
- ms_numCutsceneObjs = 0;
-
- for (int i = MI_SPECIAL01; i < MI_SPECIAL21; i++) {
- CBaseModelInfo *minfo = CModelInfo::GetModelInfo(i);
- CColModel *colModel = minfo->GetColModel();
- if (colModel != &CTempColModels::ms_colModelPed1) {
- delete colModel;
- minfo->SetColModel(&CTempColModels::ms_colModelPed1);
- }
- }
-
- if (ms_animLoaded)
- CAnimManager::RemoveLastAnimFile();
-
- ms_animLoaded = false;
- numUncompressedAnims = 0;
- uncompressedAnims[0][0] = '\0';
-
- if (bCamLoaded) {
- TheCamera.RestoreWithJumpCut();
- TheCamera.SetWideScreenOff();
- TheCamera.DeleteCutSceneCamDataMemory();
- }
- ms_running = false;
- ms_loaded = false;
-
- FindPlayerPed()->bIsVisible = true;
- CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_CUTSCENE);
- CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(false);
-
- if (CGeneral::faststricmp(ms_cutsceneName, "finale")) {
- DMAudio.StopCutSceneMusic();
- DMAudio.ChangeMusicMode(MUSICMODE_GAME);
- }
-
- CStreaming::ms_disableStreaming = false;
- CWorld::bProcessCutsceneOnly = false;
-
- if(bCamLoaded)
- CGame::DrasticTidyUpMemory(TheCamera.GetScreenFadeStatus() == FADE_2);
-
- CPad::GetPad(0)->Clear(false);
- if (bIsEverythingRemovedFromTheWorldForTheBiggestFuckoffCutsceneEver) {
- CStreaming::LoadInitialPeds();
- CStreaming::LoadInitialWeapons();
- CStreaming::LoadInitialVehicles();
- bIsEverythingRemovedFromTheWorldForTheBiggestFuckoffCutsceneEver = false;
-
- CPlayerPed *pPlayerPed = FindPlayerPed();
- for (int i = 0; i < NumberOfSavedWeapons; i++) {
- int32 weaponModelId = CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModelId;
- uint8 flags = CStreaming::ms_aInfoForModel[weaponModelId].m_flags;
- CStreaming::RequestModel(weaponModelId, STREAMFLAGS_DONT_REMOVE);
- CStreaming::LoadAllRequestedModels(false);
- if (CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModel2Id != -1) {
- CStreaming::RequestModel(CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModel2Id, 0);
- CStreaming::LoadAllRequestedModels(false);
- }
- if (!(flags & STREAMFLAGS_DONT_REMOVE))
- CStreaming::SetModelIsDeletable(weaponModelId);
- pPlayerPed->GiveWeapon(SavedWeaponIDs[i], SavedWeaponAmmo[i], true);
- }
- NumberOfSavedWeapons = 0;
- }
-
- CTimer::Resume();
-}
-
-void
-CCutsceneMgr::Update(void)
-{
- enum {
- CUTSCENE_LOADING_0 = 0,
- CUTSCENE_LOADING_AUDIO,
- CUTSCENE_LOADING_2,
- CUTSCENE_LOADING_3,
- CUTSCENE_LOADING_4
- };
-
- switch (ms_cutsceneLoadStatus) {
- case CUTSCENE_LOADING_AUDIO:
- SetupCutsceneToStart();
- if (CGeneral::faststricmp(ms_cutsceneName, "finale"))
- DMAudio.PlayPreloadedCutSceneMusic();
- ms_cutsceneLoadStatus++;
- break;
- case CUTSCENE_LOADING_2:
- case CUTSCENE_LOADING_3:
- ms_cutsceneLoadStatus++;
- break;
- case CUTSCENE_LOADING_4:
- ms_cutsceneLoadStatus = CUTSCENE_LOADING_0;
- break;
- default:
- break;
- }
-
- if (!ms_running) return;
-
- ms_cutsceneTimer += CTimer::GetTimeStepNonClippedInSeconds();
-
- for (int i = 0; i < ms_numCutsceneObjs; i++) {
- int modelId = ms_pCutsceneObjects[i]->GetModelIndex();
- if (modelId >= MI_CUTOBJ01 && modelId <= MI_CUTOBJ05)
- UpdateCutsceneObjectBoundingBox(ms_pCutsceneObjects[i]->GetClump(), modelId);
-
- if (ms_pCutsceneObjects[i]->m_pAttachTo != nil && modelId >= MI_SPECIAL01 && modelId <= MI_SPECIAL21)
- UpdateCutsceneObjectBoundingBox(ms_pCutsceneObjects[i]->GetClump(), modelId);
- }
-
- if (bCamLoaded)
- if (CGeneral::faststricmp(ms_cutsceneName, "finale") && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FLYBY && ms_cutsceneLoadStatus == CUTSCENE_LOADING_0) {
- if (CPad::GetPad(0)->GetCrossJustDown()
- || (CGame::playingIntro && CPad::GetPad(0)->GetStartJustDown())
- || CPad::GetPad(0)->GetLeftMouseJustDown()
- || CPad::GetPad(0)->GetEnterJustDown()
- || CPad::GetPad(0)->GetCharJustDown(' '))
- FinishCutscene();
- }
-}
-
-bool CCutsceneMgr::HasCutsceneFinished(void) { return !bCamLoaded || TheCamera.GetPositionAlongSpline() == 1.0f; }
-
-void
-CCutsceneMgr::LoadAnimationUncompressed(char const* name)
-{
- strcpy(uncompressedAnims[numUncompressedAnims], name);
-
- // Because that's how CAnimManager knows the end of array
- ++numUncompressedAnims;
- assert(numUncompressedAnims < ARRAY_SIZE(uncompressedAnims));
- uncompressedAnims[numUncompressedAnims][0] = '\0';
-}
-
-void
-CCutsceneMgr::AttachObjectToParent(CObject *pObject, CEntity *pAttachTo)
-{
- ((CCutsceneObject*)pObject)->m_pAttachmentObject = nil;
- ((CCutsceneObject*)pObject)->m_pAttachTo = RpClumpGetFrame(pAttachTo->GetClump());
-
- debug("Attach %s to %s\n", CModelInfo::GetModelInfo(pObject->GetModelIndex())->GetModelName(), CModelInfo::GetModelInfo(pAttachTo->GetModelIndex())->GetModelName());
-}
-
-void
-CCutsceneMgr::AttachObjectToFrame(CObject *pObject, CEntity *pAttachTo, const char *frame)
-{
- ((CCutsceneObject*)pObject)->m_pAttachmentObject = nil;
- ((CCutsceneObject*)pObject)->m_pAttachTo = RpAnimBlendClumpFindFrame(pAttachTo->GetClump(), frame)->frame;
- debug("Attach %s to component %s of %s\n",
- CModelInfo::GetModelInfo(pObject->GetModelIndex())->GetModelName(),
- frame,
- CModelInfo::GetModelInfo(pAttachTo->GetModelIndex())->GetModelName());
- if (RwObjectGetType(pObject->m_rwObject) == rpCLUMP) {
- RpClump *clump = (RpClump*)pObject->m_rwObject;
- if (IsClumpSkinned(clump))
- RpAtomicGetBoundingSphere(GetFirstAtomic(clump))->radius *= 1.1f;
- }
+ DeleteCutsceneData_overlay();
+ if (bModelsRemovedForCutscene)
+ LoadEverythingBecauseCutsceneDeletedAllOfIt();
}
void
-CCutsceneMgr::AttachObjectToBone(CObject *pObject, CObject *pAttachTo, int bone)
+CCutsceneMgr::RemoveEverythingBecauseCutsceneDoesntFitInMemory()
{
- RpHAnimHierarchy *hanim = GetAnimHierarchyFromSkinClump(pAttachTo->GetClump());
- RwInt32 id = RpHAnimIDGetIndex(hanim, bone);
- RwMatrix *matrixArray = RpHAnimHierarchyGetMatrixArray(hanim);
- ((CCutsceneObject*)pObject)->m_pAttachmentObject = pAttachTo;
- ((CCutsceneObject*)pObject)->m_pAttachTo = &matrixArray[id];
- debug("Attach %s to %s\n",
- CModelInfo::GetModelInfo(pObject->GetModelIndex())->GetModelName(),
- CModelInfo::GetModelInfo(pAttachTo->GetModelIndex())->GetModelName());
-}
-
-void
-CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
-{
- CStreaming::ms_disableStreaming = true;
+ //CStreaming::ms_disableStreaming = true;
+ CWorld::ClearExcitingStuffFromArea(FindPlayerCoors(), 120.0f, true);
CColStore::RemoveAllCollision();
CWorld::bProcessCutsceneOnly = true;
- ms_cutsceneProcessing = true;
+ /*ms_cutsceneProcessing = true;
for (int i = CPools::GetPedPool()->GetSize() - 1; i >= 0; i--) {
CPed *pPed = CPools::GetPedPool()->GetSlot(i);
@@ -626,25 +120,21 @@ CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
}
}
}
-
- bIsEverythingRemovedFromTheWorldForTheBiggestFuckoffCutsceneEver = true;
+ CWorld::bProcessCutsceneOnly = true;
+ //bIsEverythingRemovedFromTheWorldForTheBiggestFuckoffCutsceneEver = true;*/
CStreaming::RemoveCurrentZonesModels();
+ while (CStreaming::RemoveLoadedVehicle());
+ CRadar::RemoveRadarSections();
CStreaming::SetModelIsDeletable(MI_MALE01);
CStreaming::SetModelTxdIsDeletable(MI_MALE01);
- CStreaming::SetModelIsDeletable(MI_TAXI_D);
- CStreaming::SetModelTxdIsDeletable(MI_TAXI_D);
+ CStreaming::SetModelIsDeletable(MI_COLT45);
+ CStreaming::SetModelTxdIsDeletable(MI_COLT45);
CStreaming::SetModelIsDeletable(MI_NIGHTSTICK);
CStreaming::SetModelTxdIsDeletable(MI_NIGHTSTICK);
CStreaming::SetModelIsDeletable(MI_MISSILE);
CStreaming::SetModelTxdIsDeletable(MI_MISSILE);
- CStreaming::SetModelIsDeletable(MI_POLICE);
- CStreaming::SetModelTxdIsDeletable(MI_POLICE);
-
- while (CStreaming::RemoveLoadedVehicle()) ;
-
- CRadar::RemoveRadarSections();
- for (int i = CPools::GetDummyPool()->GetSize() - 1; i >= 0; i--) {
+ /*for (int i = CPools::GetDummyPool()->GetSize() - 1; i >= 0; i--) {
CDummy* pDummy = CPools::GetDummyPool()->GetSlot(i);
if (pDummy)
pDummy->DeleteRwObject();
@@ -664,7 +154,7 @@ CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
if (!pBuilding->bImBeingRendered)
pBuilding->DeleteRwObject();
}
- }
+ }*/
CPlayerPed *pPlayerPed = FindPlayerPed();
pPlayerPed->RemoveWeaponAnims(0, -1000.0f);
@@ -679,5 +169,69 @@ CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
}
pPlayerPed->ClearWeapons();
- CGame::DrasticTidyUpMemory(true);
+ bModelsRemovedForCutscene = true;
+ //CGame::DrasticTidyUpMemory(true);
+}
+
+void
+CCutsceneMgr::LoadEverythingBecauseCutsceneDeletedAllOfIt()
+{
+ bModelsRemovedForCutscene = false;
+ CStreaming::LoadInitialPeds();
+ CStreaming::LoadInitialWeapons();
+ //CStreaming::LoadInitialVehicles();
+
+ CPlayerPed *pPlayerPed = FindPlayerPed();
+ for (int i = 0; i < NumberOfSavedWeapons; i++) {
+ int32 weaponModelId = CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModelId;
+ uint8 flags = CStreaming::ms_aInfoForModel[weaponModelId].m_flags;
+ CStreaming::RequestModel(weaponModelId, STREAMFLAGS_DONT_REMOVE);
+ CStreaming::LoadAllRequestedModels(false);
+ if (CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModel2Id != -1) {
+ CStreaming::RequestModel(CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModel2Id, 0);
+ CStreaming::LoadAllRequestedModels(false);
+ }
+ if (!(flags & STREAMFLAGS_DONT_REMOVE))
+ CStreaming::SetModelIsDeletable(weaponModelId);
+ pPlayerPed->GiveWeapon(SavedWeaponIDs[i], SavedWeaponAmmo[i], true);
+ }
+ NumberOfSavedWeapons = 0;
+}
+
+void
+CCutsceneMgr::Update(void)
+{
+ if (ms_cutsceneLoadStatus != CUTSCENE_NOT_LOADED)
+ Update_overlay();
+}
+
+void
+CCutsceneMgr::LoadAnimationUncompressed(char const* name)
+{
+ strcpy(ms_aUncompressedCutsceneAnims[ms_numUncompressedCutsceneAnims], name);
+
+ // Because that's how CAnimManager knows the end of array
+ ++ms_numUncompressedCutsceneAnims;
+ assert(ms_numUncompressedCutsceneAnims < ARRAY_SIZE(ms_aUncompressedCutsceneAnims));
+ ms_aUncompressedCutsceneAnims[ms_numUncompressedCutsceneAnims][0] = '\0';
+}
+
+
+bool
+CCutsceneMgr::IsCutsceneSkipButtonBeingPressed()
+{
+ return (CPad::GetPad(0)->GetCrossJustDown()
+ || CPad::GetPad(0)->GetLeftMouseJustDown()
+ || CPad::GetPad(0)->GetEnterJustDown()
+ || CPad::GetPad(0)->GetCharJustDown(' '));
+}
+
+void
+CCutsceneMgr::AppendToNextCutscene(const char *object, const char *anim)
+{
+ strcpy(ms_cAppendObjectName[ms_numAppendObjectNames], object);
+ strlwr(ms_cAppendObjectName[ms_numAppendObjectNames]);
+ strcpy(ms_cAppendAnimName[ms_numAppendObjectNames], anim);
+ strlwr(ms_cAppendAnimName[ms_numAppendObjectNames]);
+ ms_numAppendObjectNames++;
} \ No newline at end of file
diff --git a/src/animation/CutsceneMgr.h b/src/animation/CutsceneMgr.h
index 51ef6c04..7c749d4b 100644
--- a/src/animation/CutsceneMgr.h
+++ b/src/animation/CutsceneMgr.h
@@ -1,14 +1,69 @@
#pragma once
#include "CutsceneObject.h"
-#define CUTSCENENAMESIZE 8
class CDirectory;
class CAnimBlendAssocGroup;
class CCutsceneHead;
+enum {
+ CUTSCENE_NOT_LOADED = 0,
+ CUTSCENE_LOADING,
+ CUTSCENE_LOADED,
+};
+
+enum {
+ CUTSCENE_PLAYING_0 = 0,
+ CUTSCENE_STARTED,
+ CUTSCENE_PLAYING_2,
+ CUTSCENE_PLAYING_3,
+ CUTSCENE_PLAYING_4,
+};
+
+enum
+{
+ NAMELENGTH = 32,
+ NUM_CUTS_PARTICLE_EFFECTS = 8,
+ NUM_CUTS_MAX_TEXTS = 64,
+ NUM_CUTS_UNCOMPRESSED_ANIMS = 8,
+ TEXT_KEY_SIZE = 8,
+ CUTSCENENAMESIZE = 8
+};
+
+struct sToHideItem
+{
+ float x, y, z;
+ char name[NAMELENGTH];
+};
+
+// TODO: figure out from SA
+// this is unused in LCS anyway
+struct sParticleEffect
+{
+ char name[NAMELENGTH];
+ bool bPlayed; // ??
+ int iTime;
+ int unk1;
+ int unk2;
+ char name2[NAMELENGTH];
+ float x;
+ float y;
+ float z;
+ float unkX;
+ float unkY;
+ float unkZ;
+ bool unk10;
+ bool unk11;
+};
+
+struct sAttachInfo
+{
+ int attachToId, objectId, boneId;
+};
+
class CCutsceneMgr
{
+
static bool ms_running;
static CCutsceneObject *ms_pCutsceneObjects[NUMCUTSCENEOBJECTS];
@@ -24,10 +79,55 @@ class CCutsceneMgr
static bool ms_wasCutsceneSkipped;
static bool ms_cutsceneProcessing;
static bool ms_useCutsceneShadows;
+ static bool ms_hasFileInfo;
+ static int ms_numLoadObjectNames;
+
+ static char ms_cAppendAnimName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+ static char ms_cAppendObjectName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+ static int ms_numAppendObjectNames;
public:
static CDirectory *ms_pCutsceneDir;
static uint32 ms_cutsceneLoadStatus;
+ static bool mCutsceneSkipFading;
+ static int mCutsceneSkipFadeTime;
+
+ static float m_fPrevCarDensity;
+ static float m_fPrevPedDensity;
+
+ static bool m_PrevExtraColourOn;
+ static uint32 m_PrevExtraColour;
+
+ static uint32 ms_iNumParticleEffects;
+ static sParticleEffect ms_pParticleEffects[NUM_CUTS_PARTICLE_EFFECTS];
+
+ static sToHideItem ms_crToHideItems[NUMCUTSCENEOBJECTS];
+ static uint32 ms_iNumHiddenEntities;
+ static CEntity *ms_pHiddenEntities[NUMCUTSCENEOBJECTS];
+
+ static int ms_numAttachObjectToBones;
+ static bool ms_bRepeatObject[NUMCUTSCENEOBJECTS];
+
+ static sAttachInfo ms_iAttachObjectToBone[NUMCUTSCENEOBJECTS];
+
+ static uint32 ms_numUncompressedCutsceneAnims;
+
+ static char ms_aUncompressedCutsceneAnims[NUM_CUTS_UNCOMPRESSED_ANIMS][NAMELENGTH];
+
+ static uint32 ms_iTextDuration[NUM_CUTS_MAX_TEXTS];
+ static uint32 ms_iTextStartTime[NUM_CUTS_MAX_TEXTS];
+ static char ms_cTextOutput[NUM_CUTS_MAX_TEXTS][TEXT_KEY_SIZE];
+
+ static uint32 ms_currTextOutput;
+ static uint32 ms_numTextOutput;
+ static uint32 ms_iModelIndex[NUMCUTSCENEOBJECTS];
+
+ static char ms_cLoadAnimName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+ static char ms_cLoadObjectName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+
+ static uint32 ms_cutscenePlayStatus;
+
+ static void StartCutscene();
static void StartCutsceneProcessing() { ms_cutsceneProcessing = true; }
static bool IsRunning(void) { return ms_running; }
static bool HasLoaded(void) { return ms_loaded; }
@@ -35,19 +135,19 @@ public:
static bool WasCutsceneSkipped(void) { return ms_wasCutsceneSkipped; }
static bool UseLodMultiplier(void) { return ms_useLodMultiplier; }
static CCutsceneObject* GetCutsceneObject(int id) { return ms_pCutsceneObjects[id]; }
- static int GetCutsceneTimeInMilleseconds(void) { return 1000.0f * ms_cutsceneTimer; }
+ static uint32 GetCutsceneTimeInMilleseconds(void);
static char *GetCutsceneName(void) { return ms_cutsceneName; }
static void SetCutsceneOffset(const CVector& vec) { ms_cutsceneOffset = vec; }
static bool HasCutsceneFinished(void);
- static void Initialise(void);
+ static void Initialise(void *dir = nil);
static void Shutdown(void);
static void LoadCutsceneData(const char *szCutsceneName);
static void FinishCutscene(void);
static void SetupCutsceneToStart(void);
static void SetCutsceneAnim(const char *animName, CObject *pObject);
static void SetCutsceneAnimToLoop(const char *animName);
- static CCutsceneHead *AddCutsceneHead(CObject *pObject, int modelId);
+ static CCutsceneHead *SetHeadAnim(const char*, CObject *pObject);
static CCutsceneObject *CreateCutsceneObject(int modelId);
static void DeleteCutsceneData(void);
static void LoadAnimationUncompressed(char const*);
@@ -56,6 +156,24 @@ public:
static void AttachObjectToParent(CObject *pObject, CEntity *pAttachTo);
static void AttachObjectToFrame(CObject *pObject, CEntity *pAttachTo, const char *frame);
static void AttachObjectToBone(CObject *pObject, CObject *pAttachTo, int frame);
- static void RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver();
+ static void RemoveEverythingBecauseCutsceneDoesntFitInMemory();
+ static void LoadEverythingBecauseCutsceneDeletedAllOfIt();
static void DisableCutsceneShadows() { ms_useCutsceneShadows = false; }
+
+
+ static void LoadCutsceneData_overlay(const char* szCutsceneName);
+ static bool LoadCutsceneData_postload(bool b = false);
+ static void Update_overlay(void);
+ static void DeleteCutsceneData_overlay(void);
+
+ static bool IsCutsceneSkipButtonBeingPressed();
+ static void AppendToNextCutscene(const char *object, const char *anim);
+
+ static void LoadCutsceneData_preload();
+ static void LoadCutsceneData_loading();
+ static void HideRequestedObjects();
+
+ static bool PresubBodge();
+
+ static void Write(base::cRelocatableChunkWriter& writer);
};
diff --git a/src/animation/CutsceneMgr_overlay.cpp b/src/animation/CutsceneMgr_overlay.cpp
new file mode 100644
index 00000000..5fcb752d
--- /dev/null
+++ b/src/animation/CutsceneMgr_overlay.cpp
@@ -0,0 +1,1030 @@
+#include "common.h"
+#include "relocatableChunk.h"
+
+#include "General.h"
+#include "CutsceneMgr.h"
+#include "Directory.h"
+#include "Camera.h"
+#include "Streaming.h"
+#include "FileMgr.h"
+#include "main.h"
+#include "AnimManager.h"
+#include "AnimBlendAssociation.h"
+#include "AnimBlendAssocGroup.h"
+#include "AnimBlendClumpData.h"
+#include "Pad.h"
+#include "DMAudio.h"
+#include "World.h"
+#include "PlayerPed.h"
+#include "Wanted.h"
+#include "RpAnimBlend.h"
+#include "ModelIndices.h"
+#include "TempColModels.h"
+#include "ColStore.h"
+#include "Radar.h"
+#include "Pools.h"
+#include "Messages.h"
+#include "Population.h"
+#include "CarCtrl.h"
+#include "Timecycle.h"
+#include "Rubbish.h"
+#include "Text.h"
+#include "Hud.h"
+#include "crossplatform.h"
+
+const struct {
+ const char *szTrackName;
+ int iTrackId;
+} musicNameIdAssoc[] = {
+ { "BIKER", STREAMED_SOUND_CUTSCENE_BIKER },
+ { "BONEVOY", STREAMED_SOUND_CUTSCENE_BONEVOY },
+ { "CAMPAIN", STREAMED_SOUND_CUTSCENE_CAMPAIN },
+ { "CASHCHP", STREAMED_SOUND_CUTSCENE_CASHCHP },
+ { "CONTBAN", STREAMED_SOUND_CUTSCENE_CONTBAN },
+ { "CRAZY69", STREAMED_SOUND_CUTSCENE_CRAZY69 },
+ { "CUTTEST", STREAMED_SOUND_CUTSCENE_CUTTEST },
+ { "DEADLY", STREAMED_SOUND_CUTSCENE_DEADLY },
+ { "DONPROB", STREAMED_SOUND_CUTSCENE_DONPROB },
+ { "DRIVNMR", STREAMED_SOUND_CUTSCENE_DRIVNMR },
+ { "ELECTON", STREAMED_SOUND_CUTSCENE_ELECTON },
+ { "FINAL", STREAMED_SOUND_CUTSCENE_FINAL },
+ { "FINAL_2", STREAMED_SOUND_CUTSCENE_FINAL_2 },
+ { "HOMSWET", STREAMED_SOUND_CUTSCENE_HOMSWET },
+ { "HOTWHEL", STREAMED_SOUND_CUTSCENE_HOTWHEL },
+ { "KIDNAPP", STREAMED_SOUND_CUTSCENE_KIDNAPP },
+ { "LANDGRB", STREAMED_SOUND_CUTSCENE_LANDGRB },
+ { "MORGUE", STREAMED_SOUND_CUTSCENE_MORGUE },
+ { "OVERDOS", STREAMED_SOUND_CUTSCENE_OVERDOS },
+ { "RUFJUST", STREAMED_SOUND_CUTSCENE_RUFJUST },
+ { "SAYONAR", STREAMED_SOUND_CUTSCENE_SAYONAR },
+ { "SICILAN", STREAMED_SOUND_CUTSCENE_SICILAN },
+ { "THEOFER", STREAMED_SOUND_CUTSCENE_THEOFER },
+ { "INTRO", STREAMED_SOUND_CUTSCENE_INTRO },
+ { "FINALE", STREAMED_SOUND_CUTSCENE_FINALE },
+ { NULL, 0 }
+};
+
+int
+FindCutsceneAudioTrackId(const char *szCutsceneName)
+{
+ debug("looking for cutscene music track\n");
+ for (int i = 0; musicNameIdAssoc[i].szTrackName; i++) {
+ if (!CGeneral::faststricmp(musicNameIdAssoc[i].szTrackName, szCutsceneName)) {
+ debug("HUZZA! FOUND cutscene music track\n");
+ return musicNameIdAssoc[i].iTrackId;
+ }
+ }
+ debug("NOT FOUND cutscene music track\n");
+ return -1;
+}
+
+const char *
+GetNextLine(const char *buf, char *line, uint32 lineSize)
+{
+ while (*buf == '\n' || *buf == '\r')
+ buf++;
+
+ if (*buf == '\0')
+ return nil;
+
+ // size check never happened, eh?
+ while (*buf != '\n' && *buf != '\r') {
+ if (*buf == '\0')
+ break;
+ *(line++) = *(buf++);
+ }
+ *(line++) = '\0';
+ return buf;
+}
+
+RpAtomic*
+CalculateBoundingSphereRadiusCB(RpAtomic* atomic, void* data)
+{
+ float radius = RpAtomicGetBoundingSphere(atomic)->radius;
+ RwV3d center = RpAtomicGetBoundingSphere(atomic)->center;
+
+ for (RwFrame* frame = RpAtomicGetFrame(atomic); RwFrameGetParent(frame); frame = RwFrameGetParent(frame))
+ RwV3dTransformPoints(&center, &center, 1, RwFrameGetMatrix(frame));
+
+ float size = RwV3dLength(&center) + radius;
+ if (size > *(float*)data)
+ *(float*)data = size;
+ return atomic;
+}
+
+void UpdateCutsceneObjectBoundingBox(RpClump* clump, int modelId)
+{
+ if (modelId >= MI_CUTOBJ01 && modelId <= MI_CUTOBJ10) {
+ CColModel* pColModel = &CTempColModels::ms_colModelCutObj[modelId - MI_CUTOBJ01];
+ float oldRadius = pColModel->boundingSphere.radius;
+ float radius = 0.0f;
+ RpClumpForAllAtomics(clump, CalculateBoundingSphereRadiusCB, &radius);
+ if (oldRadius < 20.0f) oldRadius = 20.0f;
+ if (oldRadius < radius) {
+ debug("Limiting cutscene object radius %f\n", oldRadius);
+ radius = oldRadius;
+ }
+ radius = oldRadius;
+ pColModel->boundingSphere.radius = radius;
+ pColModel->boundingBox.min = CVector(-radius, -radius, -radius);
+ pColModel->boundingBox.max = CVector(radius, radius, radius);
+ }
+}
+
+bool bCamLoaded;
+bool bCamFading;
+
+// yes, they've actually doubled this thing here, thus this one is unused
+static bool bModelsRemovedForCutscene;
+static int32 NumberOfSavedWeapons;
+static eWeaponType SavedWeaponIDs[TOTAL_WEAPON_SLOTS];
+static int32 SavedWeaponAmmo[TOTAL_WEAPON_SLOTS];
+
+enum
+{
+ CUTMODEL_PLAYER = 1,
+ CUTMODEL_SIMPLE,
+ CUTMODEL_REPEATED,
+};
+
+bool CCutsceneMgr::ms_useCutsceneShadows = true;
+bool CCutsceneMgr::mCutsceneSkipFading;
+int CCutsceneMgr::mCutsceneSkipFadeTime;
+float CCutsceneMgr::m_fPrevCarDensity;
+float CCutsceneMgr::m_fPrevPedDensity;
+bool CCutsceneMgr::m_PrevExtraColourOn;
+uint32 CCutsceneMgr::m_PrevExtraColour;
+uint32 CCutsceneMgr::ms_iNumParticleEffects;
+sParticleEffect CCutsceneMgr::ms_pParticleEffects[NUM_CUTS_PARTICLE_EFFECTS];
+sToHideItem CCutsceneMgr::ms_crToHideItems[NUMCUTSCENEOBJECTS];
+uint32 CCutsceneMgr::ms_iNumHiddenEntities;
+CEntity *CCutsceneMgr::ms_pHiddenEntities[NUMCUTSCENEOBJECTS];
+int CCutsceneMgr::ms_numAttachObjectToBones;
+bool CCutsceneMgr::ms_bRepeatObject[NUMCUTSCENEOBJECTS];
+sAttachInfo CCutsceneMgr::ms_iAttachObjectToBone[NUMCUTSCENEOBJECTS];
+uint32 CCutsceneMgr::ms_numUncompressedCutsceneAnims;
+char CCutsceneMgr::ms_aUncompressedCutsceneAnims[NUM_CUTS_UNCOMPRESSED_ANIMS][NAMELENGTH];
+uint32 CCutsceneMgr::ms_iTextDuration[NUM_CUTS_MAX_TEXTS];
+uint32 CCutsceneMgr::ms_iTextStartTime[NUM_CUTS_MAX_TEXTS];
+char CCutsceneMgr::ms_cTextOutput[NUM_CUTS_MAX_TEXTS][TEXT_KEY_SIZE];
+uint32 CCutsceneMgr::ms_currTextOutput;
+uint32 CCutsceneMgr::ms_numTextOutput;
+uint32 CCutsceneMgr::ms_iModelIndex[NUMCUTSCENEOBJECTS];
+char CCutsceneMgr::ms_cLoadAnimName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+char CCutsceneMgr::ms_cLoadObjectName[NUMCUTSCENEOBJECTS][NAMELENGTH];
+int CCutsceneMgr::ms_numLoadObjectNames;
+CCutsceneObject *CCutsceneMgr::ms_pCutsceneObjects[NUMCUTSCENEOBJECTS];
+int32 CCutsceneMgr::ms_numCutsceneObjs;
+CVector CCutsceneMgr::ms_cutsceneOffset;
+float CCutsceneMgr::ms_cutsceneTimer;
+uint32 CCutsceneMgr::ms_cutscenePlayStatus;
+CAnimBlendAssocGroup CCutsceneMgr::ms_cutsceneAssociations;
+char CCutsceneMgr::ms_cutsceneName[CUTSCENENAMESIZE];
+
+CCutsceneObject *
+CCutsceneMgr::CreateCutsceneObject(int modelId)
+{
+ CBaseModelInfo *pModelInfo;
+ CColModel *pColModel;
+ CCutsceneObject *pCutsceneObject;
+
+ CStreaming::ImGonnaUseStreamingMemory();
+ debug("Created cutscene object %s\n", CModelInfo::GetModelInfo(modelId)->GetModelName());
+ if (modelId >= MI_CUTOBJ01 && modelId <= MI_CUTOBJ10) {
+ pModelInfo = CModelInfo::GetModelInfo(modelId);
+ pColModel = &CTempColModels::ms_colModelCutObj[modelId - MI_CUTOBJ01];
+ pModelInfo->SetColModel(pColModel);
+ UpdateCutsceneObjectBoundingBox((RpClump*)pModelInfo->GetRwObject(), modelId);
+ }
+
+ pCutsceneObject = new CCutsceneObject();
+ pCutsceneObject->SetModelIndex(modelId);
+ if (ms_useCutsceneShadows)
+ pCutsceneObject->CreateShadow();
+ ms_pCutsceneObjects[ms_numCutsceneObjs++] = pCutsceneObject;
+ CStreaming::IHaveUsedStreamingMemory();
+ return pCutsceneObject;
+}
+
+void
+CCutsceneMgr::SetCutsceneAnim(const char *animName, CObject *pObject)
+{
+ CAnimBlendAssociation *pNewAnim;
+ CAnimBlendClumpData *pAnimBlendClumpData;
+
+ debug("Give cutscene anim %s\n", animName);
+ /*assert(RwObjectGetType(pObject->m_rwObject) == rpCLUMP);
+ debug("Give cutscene anim %s\n", animName);
+ RpAnimBlendClumpRemoveAllAssociations((RpClump*)pObject->m_rwObject);
+
+ pNewAnim = ms_cutsceneAssociations.GetAnimation(animName);
+ if (!pNewAnim) {
+ debug("\n\nHaven't I told you I can't find the fucking animation %s\n\n\n", animName);
+ return;
+ }
+
+ if (pNewAnim->hierarchy->IsCompressed())
+ pNewAnim->hierarchy->keepCompressed = true;*/
+
+ CStreaming::ImGonnaUseStreamingMemory();
+ pNewAnim = ms_cutsceneAssociations.CopyAnimation(animName);
+ CStreaming::IHaveUsedStreamingMemory();
+
+ pNewAnim->SetCurrentTime(0.0f);
+ pNewAnim->flags |= ASSOC_HAS_TRANSLATION;
+ pNewAnim->flags &= ~ASSOC_RUNNING;
+
+ pAnimBlendClumpData = *RPANIMBLENDCLUMPDATA(pObject->m_rwObject);
+ pAnimBlendClumpData->link.Prepend(&pNewAnim->link);
+
+ //if (pNewAnim->hierarchy->keepCompressed)
+ // pAnimBlendClumpData->frames->flag |= AnimBlendFrameData::COMPRESSED;
+}
+
+void
+CCutsceneMgr::SetCutsceneAnimToLoop(const char* animName)
+{
+ ms_cutsceneAssociations.GetAnimation(animName)->flags |= ASSOC_REPEAT;
+}
+
+CCutsceneHead*
+CCutsceneMgr::SetHeadAnim(const char*, CObject* pObject)
+{
+ return nil;
+}
+
+void
+CCutsceneMgr::StartCutscene()
+{
+ ms_cutscenePlayStatus = CUTSCENE_STARTED;
+ if (bCamLoaded) {
+ TheCamera.SetWideScreenOn();
+ CHud::SetHelpMessage(nil, true);
+ }
+}
+
+void
+CCutsceneMgr::SetupCutsceneToStart(void)
+{
+ if (bCamLoaded) {
+ TheCamera.SetCamCutSceneOffSet(ms_cutsceneOffset);
+ TheCamera.TakeControlWithSpline(JUMP_CUT);
+ TheCamera.SetWideScreenOn();
+ CHud::SetHelpMessage(nil, true);
+ }
+
+ ms_cutsceneOffset.z += 1.0f;
+
+ for (int i = ms_numCutsceneObjs - 1; i >= 0; i--) {
+ assert(RwObjectGetType(ms_pCutsceneObjects[i]->m_rwObject) == rpCLUMP);
+ if (CAnimBlendAssociation *pAnimBlendAssoc = RpAnimBlendClumpGetFirstAssociation((RpClump*)ms_pCutsceneObjects[i]->m_rwObject)) {
+ assert(pAnimBlendAssoc->hierarchy->sequences[0].HasTranslation());
+ if (ms_pCutsceneObjects[i]->m_pAttachTo != nil) {
+ pAnimBlendAssoc->flags &= (~ASSOC_HAS_TRANSLATION);
+ } else {
+ if (pAnimBlendAssoc->hierarchy->IsCompressed()){
+ KeyFrameTransCompressed *keyFrames = ((KeyFrameTransCompressed*)pAnimBlendAssoc->hierarchy->sequences[0].GetKeyFrameCompressed(0));
+ CVector trans;
+ keyFrames->GetTranslation(&trans);
+ ms_pCutsceneObjects[i]->SetPosition(ms_cutsceneOffset + trans);
+ }else{
+ KeyFrameTrans *keyFrames = ((KeyFrameTrans*)pAnimBlendAssoc->hierarchy->sequences[0].GetKeyFrame(0));
+ ms_pCutsceneObjects[i]->SetPosition(ms_cutsceneOffset + keyFrames->translation);
+ }
+ }
+ pAnimBlendAssoc->SetRun();
+ } else {
+ ms_pCutsceneObjects[i]->SetPosition(ms_cutsceneOffset);
+ }
+ CWorld::Add(ms_pCutsceneObjects[i]);
+ if (RwObjectGetType(ms_pCutsceneObjects[i]->m_rwObject) == rpCLUMP) {
+ ms_pCutsceneObjects[i]->UpdateRpHAnim();
+ }
+ }
+
+ CTimer::Update();
+ CTimer::Update();
+ ms_cutsceneTimer = 0.0f;
+ ms_running = true;
+ mCutsceneSkipFadeTime = 0;
+ mCutsceneSkipFading = 0;
+}
+
+void
+CCutsceneMgr::FinishCutscene()
+{
+ if (bCamLoaded) {
+ ms_cutsceneTimer = TheCamera.GetCutSceneFinishTime() * 0.001f;
+ TheCamera.FinishCutscene();
+ }
+
+ FindPlayerPed()->bIsVisible = true;
+ CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(false);
+}
+
+uint32
+CCutsceneMgr::GetCutsceneTimeInMilleseconds(void)
+{
+ return 1000.0f * ms_cutsceneTimer;
+}
+
+bool CCutsceneMgr::HasCutsceneFinished(void)
+{
+ return !bCamLoaded || TheCamera.GetPositionAlongSpline() == 1.0f;
+}
+
+void
+CCutsceneMgr::AttachObjectToBone(CObject *pObject, CObject *pAttachTo, int bone)
+{
+ RpHAnimHierarchy *hanim = GetAnimHierarchyFromSkinClump(pAttachTo->GetClump());
+ RwInt32 id = RpHAnimIDGetIndex(hanim, bone);
+ RwMatrix *matrixArray = RpHAnimHierarchyGetMatrixArray(hanim);
+ ((CCutsceneObject*)pObject)->m_pAttachmentObject = pAttachTo;
+ ((CCutsceneObject*)pObject)->m_pAttachTo = &matrixArray[id];
+ //debug("Attach %s to %s\n",
+ // CModelInfo::GetModelInfo(pObject->GetModelIndex())->GetModelName(),
+ // CModelInfo::GetModelInfo(pAttachTo->GetModelIndex())->GetModelName());
+}
+
+void
+CCutsceneMgr::AttachObjectToFrame(CObject *pObject, CEntity *pAttachTo, const char *frame)
+{
+ ((CCutsceneObject*)pObject)->m_pAttachmentObject = nil;
+ ((CCutsceneObject*)pObject)->m_pAttachTo = RpAnimBlendClumpFindFrame(pAttachTo->GetClump(), frame)->frame;
+ //debug("Attach %s to component %s of %s\n",
+ // CModelInfo::GetModelInfo(pObject->GetModelIndex())->GetModelName(),
+ // frame,
+ // CModelInfo::GetModelInfo(pAttachTo->GetModelIndex())->GetModelName());
+ if (RwObjectGetType(pObject->m_rwObject) == rpCLUMP) {
+ RpClump *clump = (RpClump*)pObject->m_rwObject;
+ if (IsClumpSkinned(clump))
+ RpAtomicGetBoundingSphere(GetFirstAtomic(clump))->radius *= 1.1f;
+ }
+}
+
+void
+CCutsceneMgr::AttachObjectToParent(CObject *pObject, CEntity *pAttachTo)
+{
+ ((CCutsceneObject*)pObject)->m_pAttachmentObject = nil;
+ ((CCutsceneObject*)pObject)->m_pAttachTo = RpClumpGetFrame(pAttachTo->GetClump());
+
+ //debug("Attach %s to %s\n", CModelInfo::GetModelInfo(pObject->GetModelIndex())->GetModelName(), CModelInfo::GetModelInfo(pAttachTo->GetModelIndex())->GetModelName());
+}
+
+void
+CCutsceneMgr::HideRequestedObjects(void)
+{
+ int num = ms_iNumHiddenEntities;
+ ms_iNumHiddenEntities = 0;
+
+ for (int i = 0; i < num; i++) {
+ int id;
+ if (CModelInfo::GetModelInfo(ms_crToHideItems[i].name, &id)) {
+ CVector pos(ms_crToHideItems[i].x, ms_crToHideItems[i].y, ms_crToHideItems[i].z);
+ int16 foundEntities;
+ CEntity* pEntities[32];
+ CWorld::FindObjectsOfTypeInRange(id, pos, 1.5f, true, &foundEntities, 32, pEntities, true, false, false, true, true);
+ for (int j = 0; i < foundEntities; j++) {
+ if (pEntities[j]->bIsVisible) {
+ ms_pHiddenEntities[ms_iNumHiddenEntities] = pEntities[j];
+ ms_pHiddenEntities[ms_iNumHiddenEntities]->RegisterReference(&ms_pHiddenEntities[ms_iNumHiddenEntities]);
+ ms_pHiddenEntities[ms_iNumHiddenEntities]->bIsVisible = false;
+ ms_iNumHiddenEntities++;
+ }
+ }
+ }
+ }
+}
+
+bool
+CCutsceneMgr::PresubBodge()
+{
+ return true;
+}
+
+void
+CCutsceneMgr::LoadCutsceneData_loading()
+{
+ for (int i = 0; i < ms_numLoadObjectNames; i++) {
+ int mi = ms_iModelIndex[i];
+ if (mi >= MI_CUTOBJ01 && mi <= MI_CUTOBJ10) {
+ if (CStreaming::ms_aInfoForModel[mi].m_loadState != STREAMSTATE_LOADED)
+ return;
+ }
+ }
+
+ if (!LoadCutsceneData_postload())
+ return;
+
+ CCutsceneObject* cutsceneObject;
+ for (int i = 0; i < ms_numLoadObjectNames; i++) {
+ if (!ms_bRepeatObject[i])
+ cutsceneObject = CreateCutsceneObject(ms_iModelIndex[i]);
+ if (ms_cLoadAnimName[i][0] != '\0')
+ SetCutsceneAnim(ms_cLoadAnimName[i], cutsceneObject);
+ }
+
+ for (int i = 0; i < ms_numAttachObjectToBones; i++) {
+ int objectId = ms_iAttachObjectToBone[i].objectId;
+ int attachToId = ms_iAttachObjectToBone[i].attachToId;
+ int bone = ms_iAttachObjectToBone[i].boneId;
+ AttachObjectToBone(ms_pCutsceneObjects[objectId], ms_pCutsceneObjects[attachToId], bone);
+ }
+}
+
+bool
+CCutsceneMgr::LoadCutsceneData_postload(bool b)
+{
+ RwStream *stream = nil;
+ uint32 size;
+ uint32 offset;
+
+ bool result;
+
+ CMessages::ClearThisBigPrintNow(0);
+ CPopulation::PedDensityMultiplier = 0.0f;
+ CCarCtrl::CarDensityMultiplier = 0.0f;
+ CStreaming::ms_disableStreaming = false;
+ if (b)
+ {
+ sprintf(gString, "%s.IFP", ms_cutsceneName);
+ result = false;
+ ms_animLoaded = false;
+ RwStreamClose(stream, nil); // umm...
+ sprintf(gString, "%s.DAT", ms_cutsceneName);
+ bCamLoaded = false;
+ } else {
+
+ stream = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMREAD, "ANIM\\CUTS.IMG");
+ sprintf(gString, "%s.IFP", ms_cutsceneName);
+ if (stream) {
+ if (ms_pCutsceneDir->FindItem(gString, offset, size))
+ {
+ CStreaming::MakeSpaceFor(size << 11);
+ CStreaming::ImGonnaUseStreamingMemory();
+ RwStreamSkip(stream, offset << 11);
+ CAnimManager::LoadAnimFile(stream, true, ms_aUncompressedCutsceneAnims);
+ ms_cutsceneAssociations.CreateAssociations(ms_cutsceneName, ms_cLoadAnimName[0], ms_cLoadObjectName[0], NAMELENGTH);
+ CStreaming::IHaveUsedStreamingMemory();
+ ms_animLoaded = true;
+ }
+ else
+ {
+ ms_animLoaded = false;
+ }
+ RwStreamClose(stream, nil);
+
+ int file = CFileMgr::OpenFile("ANIM\\CUTS.IMG", "rb");
+ sprintf(gString, "%s.DAT", ms_cutsceneName);
+ if (file) {
+ if (ms_pCutsceneDir->FindItem(gString, offset, size))
+ {
+ CStreaming::ImGonnaUseStreamingMemory();
+ CFileMgr::Seek(file, offset << 11, 0);
+ TheCamera.LoadPathSplines(file);
+ CStreaming::IHaveUsedStreamingMemory();
+ bCamLoaded = true;
+ }
+ else
+ {
+ bCamLoaded = false;
+ }
+ result = true;
+ CFileMgr::CloseFile(file);
+ }
+ else
+ {
+ bCamLoaded = false;
+ result = true;
+ }
+ }
+ else
+ {
+ result = false;
+ ms_animLoaded = false;
+ RwStreamClose(stream, nil);
+ sprintf(gString, "%s.DAT", ms_cutsceneName);
+ bCamLoaded = false;
+ }
+ }
+ ms_cutsceneLoadStatus = CUTSCENE_LOADED;
+ ms_cutsceneTimer = 0.0f;
+ FindPlayerPed()->m_pWanted->ClearQdCrimes();
+ return result;
+}
+
+void
+CCutsceneMgr::LoadCutsceneData_overlay(const char *szCutsceneName)
+{
+ CTimer::Suspend();
+ ms_cutsceneProcessing = true;
+ ms_wasCutsceneSkipped = false;
+ if (!bModelsRemovedForCutscene)
+ CStreaming::RemoveCurrentZonesModels();
+
+ ms_pCutsceneDir->numEntries = 0;
+ ms_pCutsceneDir->ReadDirFile("ANIM\\CUTS.DIR");
+
+ CStreaming::RemoveUnusedModelsInLoadedList();
+ CGame::DrasticTidyUpMemory(true);
+
+ strcpy(ms_cutsceneName, szCutsceneName);
+
+ LoadCutsceneData_preload();
+ CTimer::Resume();
+}
+
+void
+CCutsceneMgr::LoadCutsceneData_preload(void)
+{
+ uint32 size;
+ uint32 offset;
+ CPlayerPed* pPlayerPed;
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale")) {
+ DMAudio.ChangeMusicMode(MUSICMODE_CUTSCENE);
+ int trackId = FindCutsceneAudioTrackId(ms_cutsceneName);
+ if (trackId != -1) {
+ printf("Start preload audio %s\n", ms_cutsceneName);
+ DMAudio.PreloadCutSceneMusic(trackId);
+ printf("End preload audio %s\n", ms_cutsceneName);
+ }
+ }
+
+ for (int i = MI_CUTOBJ01; i <= MI_CUTOBJ10; i++) {
+ if (CModelInfo::GetModelInfo(i)->GetNumRefs() <= 0) {
+ if (CStreaming::ms_aInfoForModel[i].m_loadState == STREAMSTATE_LOADED) {
+ CStreaming::RemoveModel(i);
+ CModelInfo::GetModelInfo(i)->SetModelName("&*%");
+ }
+ }
+ }
+
+ m_PrevExtraColour = CTimeCycle::m_ExtraColour;
+ m_PrevExtraColourOn = CTimeCycle::m_bExtraColourOn != 0;
+ m_fPrevPedDensity = CPopulation::PedDensityMultiplier;
+ m_fPrevCarDensity = CCarCtrl::CarDensityMultiplier;
+ ms_cutsceneOffset = CVector(0.0f, 0.0f, 0.0f);
+ ms_numTextOutput = 0;
+ ms_currTextOutput = 0;
+ ms_numLoadObjectNames = 0;
+ ms_numUncompressedCutsceneAnims = 0;
+ ms_numAttachObjectToBones = 0;
+ ms_iNumHiddenEntities = 0;
+ bCamFading = false;
+ ms_iNumParticleEffects = 0;
+
+ for (int i = 0; i < NUM_CUTS_UNCOMPRESSED_ANIMS; i++)
+ ms_aUncompressedCutsceneAnims[i][0] = '\0';
+
+ memset(ms_iModelIndex, 0, sizeof(ms_iModelIndex));
+ CRubbish::SetVisibility(false);
+
+ pPlayerPed = FindPlayerPed();
+ pPlayerPed->m_pWanted->ClearQdCrimes();
+ pPlayerPed->bIsVisible = false;
+ pPlayerPed->m_fCurrentStamina = pPlayerPed->m_fMaxStamina;
+ CPad::GetPad(0)->SetDisablePlayerControls(PLAYERCONTROL_CUTSCENE);
+ CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(true);
+
+ sprintf(gString, "%s.CUT", ms_cutsceneName);
+ if (!ms_pCutsceneDir->FindItem(gString, offset, size)) {
+ LoadCutsceneData_postload();
+ return;
+ }
+
+ size <<= 11;
+ offset <<= 11;
+
+ char *cutsBuf = new char[size];
+
+ RwStream* stream = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMREAD, "ANIM\\CUTS.IMG");
+
+ if (stream) {
+ RwStreamSkip(stream, offset);
+ RwStreamRead(stream, cutsBuf, size);
+ RwStreamClose(stream, nil);
+ }
+
+ enum
+ {
+ CUT_NONE = 0,
+ CUT_INFO,
+ CUT_MODEL,
+ CUT_TEXT,
+ CUT_UNCOMPRESS,
+ CUT_ATTACH,
+ CUT_REMOVE,
+ CUT_PARTICLE_EFFECT,
+ CUT_EXTRA_COLOR,
+ };
+
+ int cutSection = CUT_NONE;
+ bool bExtraColSet = false;
+
+ char line[1024];
+ const char *pCurLine = cutsBuf;
+
+ while (true)
+ {
+ pCurLine = GetNextLine(pCurLine, line, sizeof(line));
+ if (pCurLine) {
+ if (line[0] == '\0')
+ break;
+
+ if (strcmp(line, "end") == 0) {
+ cutSection = CUT_NONE;
+ continue;
+ }
+
+ switch (cutSection)
+ {
+ case CUT_NONE:
+ if (strcmp(line, "info") == 0)
+ cutSection = CUT_INFO;
+ if (strcmp(line, "model") == 0)
+ cutSection = CUT_MODEL;
+ if (strcmp(line, "text") == 0)
+ cutSection = CUT_TEXT;
+ if (strcmp(line, "uncompress") == 0)
+ cutSection = CUT_UNCOMPRESS;
+ if (strcmp(line, "attach") == 0)
+ cutSection = CUT_ATTACH;
+ if (strcmp(line, "remove") == 0)
+ cutSection = CUT_REMOVE;
+ if (strcmp(line, "peffect") == 0)
+ cutSection = CUT_PARTICLE_EFFECT;
+ if (strcmp(line, "extracol") == 0)
+ cutSection = CUT_EXTRA_COLOR;
+ break;
+ case CUT_INFO:
+ {
+ if (strncmp(line, "offset", 6) == 0) {
+ float x, y, z;
+ sscanf(line+7, "%f %f %f", &x, &y, &z);
+ FindPlayerPed(); // called for some sa check in here
+ ms_cutsceneOffset = CVector(x, y, z);
+ }
+ break;
+ }
+ case CUT_MODEL:
+ {
+ char objectName[NAMELENGTH];
+ char animName[NAMELENGTH];
+
+ int num; // unused
+ sscanf(strtok(line, " ,"), "%d", &num);
+ strcpy(objectName, strtok(nil, " ,"));
+ char* pAnimName = strtok(0, " ,");
+ strlwr(objectName);
+
+ bool bUsedFirstTime = true;
+ if (pAnimName) {
+ do {
+ strcpy(animName, pAnimName);
+ strlwr(animName);
+ strcpy(ms_cLoadObjectName[ms_numLoadObjectNames], objectName);
+ strcpy(ms_cLoadAnimName[ms_numLoadObjectNames], animName);
+ if (bUsedFirstTime) {
+ bUsedFirstTime = false;
+ ms_iModelIndex[ms_numLoadObjectNames] = CUTMODEL_SIMPLE;
+ ms_bRepeatObject[ms_numLoadObjectNames] = false;
+ } else {
+ ms_bRepeatObject[ms_numLoadObjectNames] = true;
+ ms_iModelIndex[ms_numLoadObjectNames] = CUTMODEL_REPEATED;
+ }
+ ms_numLoadObjectNames++;
+ pAnimName = strtok(0, " ,");
+ } while (pAnimName);
+ }
+ break;
+ }
+ case CUT_TEXT:
+ {
+ int iTextStartTime, iTextDuration;
+ char cTextOutput[8];
+ sscanf(line, "%d,%d,%s", &iTextStartTime, &iTextDuration, cTextOutput);
+ for (size_t i = 0; i < strlen(cTextOutput); i++)
+ cTextOutput[i] = toupper(cTextOutput[i]);
+
+ memcpy(ms_cTextOutput[ms_numTextOutput], cTextOutput, strlen(cTextOutput)+1);
+ ms_iTextStartTime[ms_numTextOutput] = iTextStartTime;
+ ms_iTextDuration[ms_numTextOutput] = iTextDuration;
+ ms_numTextOutput++;
+ break;
+ }
+ case CUT_UNCOMPRESS:
+ LoadAnimationUncompressed(strtok(line, " ,"));
+ break;
+ case CUT_ATTACH:
+ {
+ int attachToId, objectId, bone;
+ sscanf(line, "%d,%d,%d", &attachToId, &objectId, &bone);
+ ms_iAttachObjectToBone[ms_numAttachObjectToBones].attachToId = attachToId;
+ ms_iAttachObjectToBone[ms_numAttachObjectToBones].objectId = objectId;
+ ms_iAttachObjectToBone[ms_numAttachObjectToBones].boneId = bone;
+ ms_numAttachObjectToBones++;
+ break;
+ }
+ case CUT_REMOVE:
+ {
+ float x, y, z;
+ char name[NAMELENGTH];
+ sscanf(line, "%f,%f,%f,%s", &x, &y, &z, name);
+ ms_crToHideItems[ms_iNumHiddenEntities].x = x;
+ ms_crToHideItems[ms_iNumHiddenEntities].y = y;
+ ms_crToHideItems[ms_iNumHiddenEntities].z = z;
+ strcpy(ms_crToHideItems[ms_iNumHiddenEntities].name, name);
+ ms_iNumHiddenEntities++;
+ break;
+ }
+ case CUT_PARTICLE_EFFECT:
+ {
+ char name[NAMELENGTH];
+ char name2[NAMELENGTH];
+
+ int iTime;
+ int unk1;
+ int unk2;
+ float x;
+ float y;
+ float z;
+ float unkX;
+ float unkY;
+ float unkZ;
+
+ memset(name, 0, NAMELENGTH);
+ memset(name2, 0, NAMELENGTH);
+
+ strncpy(name, strtok(line, ","), NAMELENGTH-1);
+ iTime = atoi(strtok(0, ","));
+ unk1 = atoi(strtok(0, ","));
+ unk2 = atoi(strtok(0, ","));
+ strncpy(name, strtok(line, ","), NAMELENGTH-1);
+ x = strtod(strtok(0, ","), nil);
+ y = strtod(strtok(0, ","), nil);
+ z = strtod(strtok(0, ","), nil);
+ unkX = strtod(strtok(0, ","), nil);
+ unkY = strtod(strtok(0, ","), nil);
+ unkZ = strtod(strtok(0, ","), nil);
+
+ ms_pParticleEffects[ms_iNumParticleEffects].bPlayed = false;
+ ms_pParticleEffects[ms_iNumParticleEffects].iTime = iTime;
+ ms_pParticleEffects[ms_iNumParticleEffects].unk1 = unk1;
+ ms_pParticleEffects[ms_iNumParticleEffects].unk2 = unk2;
+ strcpy(CCutsceneMgr::ms_pParticleEffects[ms_iNumParticleEffects].name2, name2);
+ ms_pParticleEffects[ms_iNumParticleEffects].unk10 = false;
+ ms_pParticleEffects[ms_iNumParticleEffects].x = x;
+ ms_pParticleEffects[ms_iNumParticleEffects].y = y;
+ ms_pParticleEffects[ms_iNumParticleEffects].z = z;
+ ms_pParticleEffects[ms_iNumParticleEffects].unkX = unkX;
+ ms_pParticleEffects[ms_iNumParticleEffects].unkY = unkY;
+ ms_pParticleEffects[ms_iNumParticleEffects].unkZ = unkZ;
+ ms_pParticleEffects[ms_iNumParticleEffects].unk11 = false;
+ strcpy(CCutsceneMgr::ms_pParticleEffects[ms_iNumParticleEffects].name, name);
+ ms_iNumParticleEffects++;
+ break;
+ }
+ case CUT_EXTRA_COLOR:
+ if (!bExtraColSet) {
+ int colorId;
+ sscanf(line, "%d", &colorId);
+ if (colorId == 0)
+ bExtraColSet = false;
+ else {
+ CTimeCycle::StartExtraColour(colorId - 1, false);
+ bExtraColSet = true;
+ }
+ }
+ break;
+ default:
+ break;
+ };
+
+ }
+ else
+ {
+ delete[]cutsBuf;
+
+ // add manually inserted objects
+ for (int i = 0; i < ms_numAppendObjectNames; i++) {
+ strcpy(ms_cLoadObjectName[ms_numLoadObjectNames], ms_cAppendObjectName[i]);
+ strcpy(ms_cLoadAnimName[ms_numLoadObjectNames], ms_cAppendAnimName[i]);
+ ms_iModelIndex[ms_numLoadObjectNames] = CUTMODEL_SIMPLE;
+ ms_numLoadObjectNames++;
+ }
+ ms_numAppendObjectNames = 0;
+
+ int specialId = 0;
+ for (int i = 0; i < ms_numLoadObjectNames; i++)
+ {
+ if (strcasecmp(ms_cLoadObjectName[i], "csplay") == 0) {
+ ms_iModelIndex[i] = CUTMODEL_PLAYER;
+ continue;
+ } else if (ms_iModelIndex[i] == CUTMODEL_SIMPLE) {
+ int id;
+ if (CModelInfo::GetModelInfo(ms_cLoadObjectName[i], &id)) {
+ ms_iModelIndex[i] = id;
+ CStreaming::RequestModel(id, STREAMFLAGS_SCRIPTOWNED | STREAMFLAGS_DEPENDENCY | STREAMFLAGS_PRIORITY);
+ } else {
+ CStreaming::RequestSpecialModel(specialId + MI_CUTOBJ01, ms_cLoadObjectName[i], STREAMFLAGS_SCRIPTOWNED | STREAMFLAGS_DEPENDENCY | STREAMFLAGS_PRIORITY);
+ ms_iModelIndex[i] = specialId + MI_CUTOBJ01;
+ specialId++;
+ // skip if id is busy
+ while (CStreaming::ms_aInfoForModel[specialId + MI_CUTOBJ01].m_loadState == STREAMSTATE_LOADED)
+ specialId++;
+ }
+ }
+ else if (ms_iModelIndex[i] == CUTMODEL_REPEATED && i != 0)
+ ms_iModelIndex[i] = ms_iModelIndex[i - 1];
+ }
+
+ CStreaming::LoadAllRequestedModels(true);
+ ms_cutsceneLoadStatus = CUTSCENE_LOADING;
+ return;
+ }
+ }
+
+ delete[]cutsBuf;
+ LoadCutsceneData_postload(true);
+}
+
+void
+CCutsceneMgr::DeleteCutsceneData_overlay(void)
+{
+ if (ms_cutsceneLoadStatus == CUTSCENE_NOT_LOADED) return;
+ CTimer::Suspend();
+ CPopulation::PedDensityMultiplier = m_fPrevPedDensity;
+ CCarCtrl::CarDensityMultiplier = m_fPrevCarDensity;
+ if (m_PrevExtraColourOn)
+ CTimeCycle::StartExtraColour(m_PrevExtraColour, false);
+ else
+ CTimeCycle::StopExtraColour(m_PrevExtraColourOn);
+
+ for (uint32 i = 0; i < ms_iNumHiddenEntities; i++) {
+ if (ms_pHiddenEntities[i]) {
+ ms_pHiddenEntities[i]->CleanUpOldReference(&ms_pHiddenEntities[i]);
+ ms_pHiddenEntities[i]->bIsVisible = true;
+ }
+ }
+
+ ms_iNumHiddenEntities = 0;
+ ms_iNumParticleEffects = 0;
+ CMessages::ClearMessages();
+ CRubbish::SetVisibility(true);
+
+ ms_cutsceneProcessing = false;
+ ms_useLodMultiplier = false;
+ ms_useCutsceneShadows = false;
+
+ ms_numCutsceneObjs--;
+ while (ms_numCutsceneObjs >= 0) {
+ CWorld::Remove(ms_pCutsceneObjects[ms_numCutsceneObjs]);
+ ms_pCutsceneObjects[ms_numCutsceneObjs]->DeleteRwObject();
+ delete ms_pCutsceneObjects[ms_numCutsceneObjs];
+ ms_pCutsceneObjects[ms_numCutsceneObjs] = nil;
+ ms_numCutsceneObjs--;
+ }
+ ms_numCutsceneObjs = 0;
+
+ if (ms_animLoaded)
+ CAnimManager::RemoveLastAnimFile();
+
+ ms_animLoaded = false;
+ ms_cutsceneAssociations.DestroyAssociations();
+
+ ms_aUncompressedCutsceneAnims[0][0] = '\0';
+ ms_numUncompressedCutsceneAnims = 0;
+
+ if (bCamLoaded) {
+ TheCamera.RestoreWithJumpCut();
+ TheCamera.SetWideScreenOff();
+ TheCamera.DeleteCutSceneCamDataMemory();
+ }
+ ms_cutsceneLoadStatus = CUTSCENE_NOT_LOADED;
+ ms_running = false;
+
+ FindPlayerPed()->bIsVisible = true;
+ CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_CUTSCENE);
+ CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(false);
+
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale")) {
+ DMAudio.StopCutSceneMusic();
+ DMAudio.ChangeMusicMode(MUSICMODE_GAME);
+ }
+
+ CStreaming::ms_disableStreaming = false;
+ CWorld::bProcessCutsceneOnly = false;
+
+ //if(bCamLoaded)
+ // CGame::DrasticTidyUpMemory(TheCamera.GetScreenFadeStatus() == FADE_2);
+
+ CPad::GetPad(0)->Clear(false);
+
+ if (bModelsRemovedForCutscene) {
+ CStreaming::LoadInitialPeds();
+ CStreaming::LoadInitialWeapons();
+ CStreaming::LoadInitialVehicles();
+ bModelsRemovedForCutscene = false;
+
+ CPlayerPed *pPlayerPed = FindPlayerPed();
+ for (int i = 0; i < NumberOfSavedWeapons; i++) {
+ int32 weaponModelId = CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModelId;
+ uint8 flags = CStreaming::ms_aInfoForModel[weaponModelId].m_flags;
+ CStreaming::RequestModel(weaponModelId, STREAMFLAGS_DONT_REMOVE);
+ CStreaming::LoadAllRequestedModels(false);
+ if (CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModel2Id != -1) {
+ CStreaming::RequestModel(CWeaponInfo::GetWeaponInfo(SavedWeaponIDs[i])->m_nModel2Id, 0);
+ CStreaming::LoadAllRequestedModels(false);
+ }
+ if (!(flags & STREAMFLAGS_DONT_REMOVE))
+ CStreaming::SetModelIsDeletable(weaponModelId);
+ pPlayerPed->GiveWeapon(SavedWeaponIDs[i], SavedWeaponAmmo[i], true);
+ }
+ NumberOfSavedWeapons = 0;
+ }
+
+ for (int i = 0; i < ms_numLoadObjectNames; i++)
+ CStreaming::SetMissionDoesntRequireModel(ms_iModelIndex[i]);
+
+ CStreaming::SetMissionDoesntRequireModel(MI_COP);
+ CStreaming::StreamZoneModels(FindPlayerCoors());
+ CTimer::Resume();
+}
+
+void
+CCutsceneMgr::Update_overlay(void)
+{
+ if (ms_cutsceneLoadStatus == CUTSCENE_LOADING) {
+ debug("Loading Cutscene...\n");
+ CTimer::Suspend();
+ LoadCutsceneData_loading();
+ CTimer::Resume();
+ return;
+ }
+
+ if (ms_cutsceneLoadStatus != CUTSCENE_LOADED) {
+ debug("Cutscene Not Loaded!\n");
+ return;
+ }
+
+ switch (ms_cutscenePlayStatus) {
+ case CUTSCENE_STARTED:
+ SetupCutsceneToStart();
+ HideRequestedObjects();
+ ms_cutscenePlayStatus++;
+ break;
+ case CUTSCENE_PLAYING_2:
+ case CUTSCENE_PLAYING_3:
+ ms_cutscenePlayStatus++;
+ break;
+ case CUTSCENE_PLAYING_4:
+ ms_cutscenePlayStatus = CUTSCENE_PLAYING_0;
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale"))
+ DMAudio.PlayPreloadedCutSceneMusic();
+ break;
+ default:
+ break;
+ }
+
+ if (!ms_running) return;
+
+ ms_cutsceneTimer += CTimer::GetTimeStepNonClippedInSeconds();
+ uint32 cutsceneTimeInMS = GetCutsceneTimeInMilleseconds();
+
+ if (ms_currTextOutput < ms_numTextOutput && cutsceneTimeInMS > ms_iTextStartTime[ms_currTextOutput]) {
+ CMessages::AddMessageJumpQ(TheText.Get(ms_cTextOutput[ms_currTextOutput]), ms_iTextDuration[ms_currTextOutput], 1);
+ ms_currTextOutput++;
+ }
+
+ for (int i = 0; i < ms_numCutsceneObjs; i++) {
+ int modelId = ms_pCutsceneObjects[i]->GetModelIndex();
+ if (modelId >= MI_CUTOBJ01 && modelId <= MI_CUTOBJ10)
+ UpdateCutsceneObjectBoundingBox(ms_pCutsceneObjects[i]->GetClump(), modelId);
+ }
+
+ if (!bCamLoaded) return;
+
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale") && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FLYBY && ms_cutsceneLoadStatus == CUTSCENE_LOADED) {
+ if (TheCamera.GetCutSceneFinishTime() < cutsceneTimeInMS + 1000) {
+ if (!bCamFading) {
+ bCamFading = true;
+ TheCamera.Fade(1.0f, FADE_OUT);
+ }
+ }
+ if (mCutsceneSkipFading) {
+ mCutsceneSkipFadeTime -= CTimer::GetTimeStepInMilliseconds();
+ if (mCutsceneSkipFadeTime < 0) {
+ CHud::m_BigMessage[1][0] = '\0';
+ ms_wasCutsceneSkipped = true;
+ FinishCutscene();
+ mCutsceneSkipFading = false;
+ mCutsceneSkipFadeTime = 0;
+ }
+ }
+ else if (IsCutsceneSkipButtonBeingPressed() && PresubBodge()){
+ mCutsceneSkipFading = true;
+ mCutsceneSkipFadeTime = 1000;
+ TheCamera.Fade(1.0f, FADE_OUT);
+ }
+ }
+} \ No newline at end of file
diff --git a/src/audio/AudioCollision.h b/src/audio/AudioCollision.h
index 31be0334..6858aa65 100644
--- a/src/audio/AudioCollision.h
+++ b/src/audio/AudioCollision.h
@@ -1,6 +1,6 @@
#pragma once
-#define NUMAUDIOCOLLISIONS 10
+#define NUMAUDIOCOLLISIONS 14
class CEntity;
diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp
index 35ca09cd..90c3fb04 100644
--- a/src/audio/AudioLogic.cpp
+++ b/src/audio/AudioLogic.cpp
@@ -44,10 +44,8 @@
#include "Script.h"
#include "Wanted.h"
#include "debugmenu.h"
-
-#ifndef GTA_PS2
-#define CHANNEL_PLAYER_VEHICLE_ENGINE m_nActiveSamples
-#endif
+#include "KeyGen.h"
+#include "Ferry.h"
void
cAudioManager::PreInitialiseGameSpecificSetup()
@@ -554,9 +552,14 @@ enum
VEHICLE_ONE_SHOT_CAR_PED_COLLISION_MAX_DIST = 40,
- TRAIN_NOISE_FAR_MAX_DIST = 300,
+ TRAIN_NOISE_FAR_MAX_DIST = 140,
TRAIN_NOISE_NEAR_MAX_DIST = 70,
- TRAIN_NOISE_VOLUME = 75,
+ TRAIN_NOISE_VOLUME = 70,
+
+ FERRY_NOISE_MAX_DIST = 70,
+ FERRY_NOISE_WATER_VOLUME = 30,
+ FERRY_NOISE_ENGINE_MAX_DIST = 160,
+ FERRY_NOISE_ENGINE_VOLUME = 40,
BOAT_ENGINE_MAX_DIST = 90,
BOAT_ENGINE_REEFER_IDLE_VOLUME = 80,
@@ -714,14 +717,11 @@ enum
FIRE_HYDRANT_MAX_DIST = 35,
FIRE_HYDRANT_VOLUME = 40,
- BRIDGE_MOTOR_MAX_DIST = 400,
- BRIDGE_MOTOR_VOLUME = MAX_VOLUME,
- BRIDGE_MAX_DIST = BRIDGE_MOTOR_MAX_DIST + 50,
-
- BRIDGE_WARNING_VOLUME = 100,
+ BRIDGE_MAX_DIST = 300,
+ BRIDGE_WARNING_VOLUME = 70,
MISSION_AUDIO_MAX_DIST = 80,
- MISSION_AUDIO_VOLUME = 80,
+ MISSION_AUDIO_VOLUME = 127,
};
#pragma region VEHICLE AUDIO
@@ -863,136 +863,139 @@ struct tVehicleSampleData {
};
const tVehicleSampleData aVehicleSettings[MAX_CARS] = {
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9935, OLD_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9890, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9960, TRUCK_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12893, SFX_CAR_HORN_JEEP, 9500, OLD_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_POLICE_SIREN_SLOW, 10588, TRUCK_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 9538, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 10000, OLD_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_BMW328, 12017, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_JEEP, 22293, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_JEEP, 22295, SFX_AMBULANCE_SIREN_SLOW, 12688, OLD_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_PORSCHE, 9271, SFX_POLICE_SIREN_SLOW, 11471, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12170, SFX_CAR_HORN_JEEP, 9400, OLD_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 11000, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_BMW328, 10796, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10500, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_HORN_JEEP, 9000, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 11025, SFX_ICE_CREAM_TUNE, 11025, OLD_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, OLD_DOOR},
- {SFX_HELI_APACHE_1, SFX_BANK_HELI_APACHE, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_POLICE_SIREN_SLOW, 10511, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 17260, SFX_POLICE_SIREN_SLOW, 11029, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS2, 11652, SFX_CAR_HORN_JEEP, 9500, BUS_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9600, TRUCK_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9700, TRUCK_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 25400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_17, SFX_BANK_VTWIN, SFX_CAR_HORN_JEEP, 26313, SFX_CAR_HORN_JEEP, 10000, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS, 16291, SFX_CAR_HORN_JEEP, 10100, BUS_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10233, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9890, NEW_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9935, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9890, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9960, TRUCK_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12893, SFX_CAR_HORN_JEEP, 9500, OLD_DOOR},
+ {SFX_CAR_REV_MERC, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_POLICE_SIREN_SLOW, 10588, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 9538, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 10000, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_JEEP, 22295, SFX_AMBULANCE_SI, 12688, OLD_DOOR},
+ {SFX_CAR_REV_MERC, SFX_BANK_MERC, SFX_CAR_HORN_PORSCHE, 9271, SFX_POLICE_SIREN_SLOW, 11471, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12170, SFX_CAR_HORN_JEEP, 9400, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 11000, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_BMW328, 10796, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_HORN_JEEP, 9000, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 11025, SFX_ICE_CREAM_TUNE, 11025, OLD_DOOR},
+ {SFX_CAR_REV_HOTROD, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_MERC, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_POLICE_SIREN_SLOW, 10511, NEW_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 17260, SFX_POLICE_SIREN_SLOW, 11029, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS2, 11652, SFX_CAR_HORN_JEEP, 9500, BUS_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9600, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9700, TRUCK_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS, 16291, SFX_CAR_HORN_JEEP, 10100, BUS_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10233, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
{SFX_RC_REV, SFX_BANK_RC, SFX_CAR_HORN_PICKUP, 20000, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29000, SFX_CAR_HORN_JEEP, 9400, TRUCK_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_BMW328, 9003, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_PORSCHE, 12375, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_BUS2, 15554, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_BUS2, 13857, SFX_CAR_HORN_JEEP, 9000, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_PONTIAC, SFX_CAR_HORN_BMW328, 9003, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_HOTROD, SFX_BANK_HOTROD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_PONTIAC, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_HOTROD, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 25400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_VTWI, SFX_BANK_VTWIN, SFX_CAR_HORN_JEEP, 26313, SFX_CAR_HORN_JEEP, 10000, NEW_DOOR},
+ {SFX_MOPED_REV, SFX_BANK_MOPED, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
{SFX_MOPED_REV, SFX_BANK_MOPED, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 22043, SFX_CAR_HORN_JEEP, 9200, OLD_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
- {SFX_CAR_REV_12, SFX_BANK_GOLF_CART, SFX_CAR_HORN_JEEP, 28500, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_SEAPLANE_PRO1, SFX_BANK_PLANE_SEAPLANE, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_20, SFX_BANK_SPORTS_BIKE, SFX_CAR_HORN_JEEP, 27000, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
+ {SFX_CAR_REV_SPORTCAR, SFX_BANK_SPORTS_BIKE, SFX_CAR_HORN_JEEP, 27000, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
{SFX_MOPED_REV, SFX_BANK_MOPED, SFX_CAR_HORN_JEEP, 31000, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_17, SFX_BANK_VTWIN, SFX_CAR_HORN_PICKUP, 11000, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_RC_REV, SFX_BANK_RC, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 15000, NEW_DOOR},
- {SFX_CAR_RC_HELI, SFX_BANK_RC_HELI, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 15000, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_56CHEV, 10300, SFX_CAR_HORN_JEEP, 9100, OLD_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_56CHEV, 10500, SFX_CAR_HORN_JEEP, 9000, OLD_DOOR},
- {SFX_CAR_REV_19, SFX_BANK_HONDA250, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9000, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_TRUCK, 28000, SFX_CAR_HORN_JEEP, 9200, TRUCK_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_PICKUP, 11200, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_56CHEV, 10700, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_BMW328, 9000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_BMW328, 9200, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10540, SFX_CAR_HORN_JEEP, 9935, TRUCK_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_PICKUP, 11000, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_BMW328, 9500, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_BMW328, 9700, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18000, SFX_CAR_HORN_JEEP, 9500, TRUCK_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_JEEP, 27513, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_56CHEV, 10700, SFX_CAR_HORN_JEEP, 9200, OLD_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9000, TRUCK_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_BUS2, 17900, SFX_POLICE_SIREN_SLOW, 10511, TRUCK_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_BMW328, 9600, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10000, SFX_CAR_HORN_JEEP, 9500, OLD_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_PORSCHE, 10500, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 25513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
+ {SFX_CAR_REV_VTWI, SFX_BANK_VTWIN, SFX_CAR_HORN_PICKUP, 11000, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_VTWI, SFX_BANK_VTWIN, SFX_CAR_HORN_JEEP, 26313, SFX_CAR_HORN_JEEP, 10000, NEW_DOOR},
+ {SFX_CAR_REV_HONDA, SFX_BANK_HONDA250, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9000, NEW_DOOR},
+ {SFX_CAR_REV_HONDA, SFX_BANK_HONDA250, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9000, NEW_DOOR},
{SFX_CAR_RC_HELI, SFX_BANK_RC_HELI, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_POLICE_SIREN_SLOW, 11000, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR} };
-
+ {SFX_CAR_RC_HELI, SFX_BANK_RC_HELI, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 15000, NEW_DOOR},
+ {SFX_CAR_ACCEL_22, SFX_BANK_HELI_APACHE, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9000, TRUCK_DOOR}
+};
+const eSfxSample aEngineSounds[][2] = {
+ { SFX_CAR_IDLE_PONT, SFX_CAR_REV_PONT },
+ { SFX_CAR_IDLE_PORSHE, SFX_CAR_REV_PORSHE },
+ { SFX_CAR_IDLE_SPIDER, SFX_CAR_REV_SPIDER },
+ { SFX_CAR_IDLE_MERC, SFX_CAR_REV_MERC },
+ { SFX_CAR_IDLE_TRUCK, SFX_CAR_REV_TRUCK },
+ { SFX_CAR_IDLE_HOTROD, SFX_CAR_REV_HOTROD },
+ { SFX_CAR_IDLE_COBRA, SFX_CAR_REV_COBRA },
+ { SFX_CAR_IDLE_PONT2, SFX_CAR_REV_PONT2 },
+ { SFX_CAR_IDLE_CADI, SFX_CAR_REV_CADI },
+ { SFX_CAR_IDLE_PATHFINDER, SFX_CAR_REV_PATHFINDER },
+ { SFX_CAR_IDLE_PACARD, SFX_CAR_REV_PACARD },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_VTWI, SFX_CAR_REV_VTWI },
+ { SFX_MOPED_IDLE, SFX_MOPED_REV },
+ { SFX_CAR_IDLE_HONDA, SFX_CAR_REV_HONDA },
+ { SFX_CAR_IDLE_SPORTCAR, SFX_CAR_REV_SPORTCAR },
+ { SFX_CAR_IDLE_UNUSED1, SFX_CAR_REV_UNUSED1 },
+ { SFX_CAR_IDLE_UNUSED2, SFX_CAR_REV_UNUSED2 },
+ { SFX_CAR_IDLE_UNUSED3, SFX_CAR_REV_UNUSED3 },
+ { SFX_CAR_IDLE_UNUSED4, SFX_CAR_REV_UNUSED4 },
+};
bool8 bPlayerJustEnteredCar;
Const static bool8 HornPattern[8][44] = {
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
- FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
- TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
- FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
- TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
- FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
+ {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
+ FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
+ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
+ FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
+ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE,
- TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
- {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
- FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE,
+ TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
+ FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
+ TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE}
};
void
@@ -1084,6 +1087,12 @@ cAudioManager::ProcessVehicle(CVehicle* veh)
ProcessBoatMovingOverWater(params);
ProcessVehicleOneShots(params);
break;
+#ifdef GTA_TRAIN
+ case VEHICLE_TYPE_TRAIN:
+ ProcessTrainNoise(params);
+ ProcessVehicleOneShots(params);
+ break;
+#endif
case VEHICLE_TYPE_HELI:
ProcessCarHeli(params);
ProcessVehicleOneShots(params);
@@ -1109,6 +1118,10 @@ cAudioManager::ProcessVehicle(CVehicle* veh)
ProcessVehicleOneShots(params);
((CBike*)veh)->m_fVelocityChangeForAudio = params.m_fVelocityChange;
break;
+ case VEHICLE_TYPE_FERRY:
+ ProcessFerryNoise(params);
+ ProcessVehicleOneShots(params);
+ break;
default:
break;
}
@@ -2038,7 +2051,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
if (!isGolfCart) {
if (params.m_pVehicle->GetStatus() == STATUS_SIMPLE) {
if (modificator < 0.02f) {
- m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1;
+ m_sQueueSample.m_nSampleIndex = aEngineSounds[aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET][0];
freq = 10000 * modificator + 22050;
m_sQueueSample.m_nCounter = 52;
} else {
@@ -2047,7 +2060,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
}
} else {
if (params.m_pVehicle->m_fGasPedal < 0.02f) {
- m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1;
+ m_sQueueSample.m_nSampleIndex = aEngineSounds[aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET][0];
freq = 10000 * modificator + 22050;
m_sQueueSample.m_nCounter = 52;
} else {
@@ -2060,7 +2073,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
if (FindVehicleOfPlayer() == params.m_pVehicle)
m_sQueueSample.m_nSampleIndex = SFX_CAR_AFTER_ACCEL_12;
else
- m_sQueueSample.m_nSampleIndex = SFX_CAR_REV_12;
+ m_sQueueSample.m_nSampleIndex = SFX_CAR_REV_GOLFCART;
m_sQueueSample.m_nBankIndex = SFX_BANK_0; // TODO: PS2 bank
m_sQueueSample.m_nFrequency = freq + 20 * m_sQueueSample.m_nEntityIndex % 100;
} else {
@@ -2069,7 +2082,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
}
m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nPriority = 3;
- if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_5 || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_5)
+ if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_TRUCK || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_TRUCK)
m_sQueueSample.m_nFrequency >>= 1;
m_sQueueSample.m_nLoopCount = 0;
SET_EMITTING_VOLUME(Vol);
@@ -2361,7 +2374,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
gearSoundLength = 0;
engineSoundType = aVehicleSettings[params.m_nIndex].m_nBank;
- soundOffset = 3 * (engineSoundType - CAR_SFX_BANKS_OFFSET);
+ soundOffset = gBankStartOffset[engineSoundType] - gBankStartOffset[CAR_SFX_BANKS_OFFSET];
+ //soundOffset = 3 * (engineSoundType - CAR_SFX_BANKS_OFFSET);
noGearBox = FALSE;
switch (engineSoundType) {
case SFX_BANK_PONTIAC:
@@ -2421,7 +2435,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
relativeVelocityChange = 2.0f * params.m_fVelocityChange / params.m_pTransmission->fMaxVelocity;
accelerationMultipler = Clamp(relativeVelocityChange, 0.0f, 1.0f);
gasPedalAudio = accelerationMultipler;
- switch (engineSoundType) {
+ /*switch (engineSoundType) {
case SFX_BANK_MOPED:
soundOffset++;
break;
@@ -2433,7 +2447,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
break;
default:
break;
- }
+ }*/
if (accelerateState > 0) {
if (nCruising > 0) {
PlayCruising:
@@ -2483,7 +2497,7 @@ PlayCruising:
}
if (params.m_pVehicle->bIsDrowning)
vol >>= 2;
- AddPlayerCarSample(vol, freq, engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_REV_1, SFX_BANK_0, 2, TRUE);
+ AddPlayerCarSample(vol, freq, aEngineSounds[engineSoundType - CAR_SFX_BANKS_OFFSET][1], SFX_BANK_0, 2, TRUE);
} else {
TranslateEntity(&m_sQueueSample.m_vecPos, &pos);
#ifndef EXTERNAL_3D_SOUND
@@ -2591,7 +2605,7 @@ PlayCruising:
freq >>= 1;
if (params.m_pVehicle->bIsDrowning)
vol >>= 2;
- AddPlayerCarSample(vol, freq, engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1, SFX_BANK_0, 52, TRUE);
+ AddPlayerCarSample(vol, freq, aEngineSounds[engineSoundType - CAR_SFX_BANKS_OFFSET][0], SFX_BANK_0, 52, TRUE);
CurrentPretendGear = Max(1, currentGear);
}
@@ -3080,10 +3094,10 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params)
if (params.m_pVehicle->bEngineOn) {
switch (params.m_VehicleType) {
case VEHICLE_TYPE_CAR:
- bombType = params.m_pVehicle->m_bombType;
+ bombType = ((CAutomobile*)params.m_pVehicle)->m_bombType;
break;
case VEHICLE_TYPE_BIKE:
- bombType = params.m_pVehicle->m_bombType;
+ bombType = ((CBike*)params.m_pVehicle)->m_bombType;
break;
default:
debug("\n * AUDIOLOG: ProcessCarBombTick() Unsupported vehicle type %d * \n", params.m_VehicleType);
@@ -3673,11 +3687,11 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params)
m_sQueueSample.m_nVolume = ComputeVolume(Vol, TRAIN_NOISE_FAR_MAX_DIST, m_sQueueSample.m_fDistance);
if (m_sQueueSample.m_nVolume > 0) {
m_sQueueSample.m_nCounter = 32;
- m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR;
+ m_sQueueSample.m_nSampleIndex = SFX_TRAIN;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nPriority = 2;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR);
+ m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN);
m_sQueueSample.m_nLoopCount = 0;
SET_EMITTING_VOLUME(Vol);
SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
@@ -3690,6 +3704,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params)
AddSampleToRequestedQueue();
}
}
+ /*
if (params.m_fDistance < SQR(TRAIN_NOISE_NEAR_MAX_DIST)) {
m_sQueueSample.m_nVolume = ComputeVolume(Vol, TRAIN_NOISE_NEAR_MAX_DIST, m_sQueueSample.m_fDistance);
if (m_sQueueSample.m_nVolume > 0) {
@@ -3711,12 +3726,98 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params)
AddSampleToRequestedQueue();
}
}
+ */
}
return TRUE;
}
return FALSE;
}
#endif
+
+
+bool8
+cAudioManager::ProcessFerryNoise(cVehicleParams& params)
+{
+ CFerry *ferry = (CFerry*)params.m_pVehicle;
+ float volMultipler;
+
+#ifdef FIX_BUGS
+ if (!ferry->IsDocked() && params.m_fDistance < SQR(FERRY_NOISE_ENGINE_MAX_DIST)) {
+#else
+ if (!ferry->IsDocked() && params.m_fDistance < SQR(FERRY_NOISE_MAX_DIST)){
+#endif
+ if (params.m_fVelocityChange > 0.0f) {
+ CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
+#ifdef FIX_BUGS // most distant sound should go first
+ volMultipler = ((float)SQR(FERRY_NOISE_ENGINE_MAX_DIST) - params.m_fDistance) / (float)SQR(FERRY_NOISE_ENGINE_MAX_DIST);
+ m_sQueueSample.m_nVolume = (FERRY_NOISE_ENGINE_VOLUME * volMultipler);
+ if (m_sQueueSample.m_nVolume > 0) {
+ m_sQueueSample.m_nCounter = 40;
+ m_sQueueSample.m_nSampleIndex = SFX_BOAT_V12_LOOP;
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_nPriority = 3;
+ m_sQueueSample.m_nFrequency = 12000;
+ m_sQueueSample.m_nLoopCount = 0;
+ SET_EMITTING_VOLUME(FERRY_NOISE_ENGINE_VOLUME);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_fSpeedMultiplier = 2.0f;
+ m_sQueueSample.m_MaxDistance = FERRY_NOISE_ENGINE_MAX_DIST;
+ m_sQueueSample.m_bStatic = FALSE;
+ m_sQueueSample.m_nFramesToPlay = 7;
+ SET_SOUND_REVERB(FALSE);
+ SET_SOUND_REFLECTION(FALSE);
+ AddSampleToRequestedQueue();
+ }
+#endif
+
+ if (params.m_fDistance < SQR(FERRY_NOISE_MAX_DIST)) {
+ volMultipler = ((float)SQR(FERRY_NOISE_MAX_DIST) - params.m_fDistance) / (float)SQR(FERRY_NOISE_MAX_DIST);
+ m_sQueueSample.m_nVolume = (FERRY_NOISE_WATER_VOLUME * volMultipler);
+ if (m_sQueueSample.m_nVolume > 0) {
+ m_sQueueSample.m_nCounter = 33;
+ m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP;
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_nPriority = 5;
+ m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BOAT_WATER_LOOP) + (100 * m_sQueueSample.m_nEntityIndex) % 987;
+ m_sQueueSample.m_nLoopCount = 0;
+ SET_EMITTING_VOLUME(FERRY_NOISE_WATER_VOLUME);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_fSpeedMultiplier = 6.0f;
+ m_sQueueSample.m_MaxDistance = FERRY_NOISE_MAX_DIST;
+ m_sQueueSample.m_bStatic = FALSE;
+ m_sQueueSample.m_nFramesToPlay = 3;
+ SET_SOUND_REVERB(FALSE);
+ SET_SOUND_REFLECTION(FALSE);
+ AddSampleToRequestedQueue();
+#ifndef FIX_BUGS
+ m_sQueueSample.m_nCounter = 40;
+ m_sQueueSample.m_nSampleIndex = SFX_BOAT_V12_LOOP;
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_nPriority = 3;
+ m_sQueueSample.m_nFrequency = 12000;
+ m_sQueueSample.m_nLoopCount = 0;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_fSpeedMultiplier = 2.0f;
+ m_sQueueSample.m_MaxDistance = FERRY_NOISE_ENGINE_MAX_DIST;
+ m_sQueueSample.m_bStatic = FALSE;
+ m_sQueueSample.m_nFramesToPlay = 7;
+ SET_SOUND_REVERB(FALSE);
+ SET_SOUND_REFLECTION(FALSE);
+ m_sQueueSample.m_nVolume = volMultipler * FERRY_NOISE_ENGINE_VOLUME;
+ SET_EMITTING_VOLUME(FERRY_NOISE_ENGINE_VOLUME);
+ AddSampleToRequestedQueue();
+#endif
+ }
+ }
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
bool8
cAudioManager::ProcessBoatEngine(cVehicleParams& params)
{
@@ -4202,6 +4303,23 @@ cAudioManager::GetJumboTaxiFreq()
#pragma endregion All the vehicle audio code
#pragma region PED AUDIO
+struct sToniReactions
+{
+ uint32 sfx[4];
+ uint32 count[4];
+};
+
+const sToniReactions aReactions[8] = {
+ {{SFX_TONI_PISSED_OFF_CRASH_01, SFX_TONI_ANGRY_CRASH_01, SFX_TONI_WISECRACKING_CRASH_01, NULL}, {25, 29, 17, 0}},
+ {{SFX_TONI_PISSED_OFF_FIGHT_01, SFX_TONI_ANGRY_FIGHT_01, SFX_TONI_WISECRACKING_FIGHT_01, NULL}, {18, 39, 20, 0}},
+ {{SFX_TONI_PISSED_OFF_JACKED_01, SFX_TONI_ANGRY_JACKED_01, SFX_TONI_WISECRACKING_JACKED_01, NULL}, {11, 16, 17, 0}},
+ {{SFX_TONI_PISSED_OFF_JACKING_01, SFX_TONI_ANGRY_JACKING_01, SFX_TONI_WISECRACKING_JACKING_01, NULL}, {25, 33, 12, 0}},
+ {{SFX_TONI_ANGRY_PICK_UP_HOOKER_01, SFX_TONI_ANGRY_PICK_UP_HOOKER_01, SFX_TONI_WISECRACKING_PICK_UP_HOOKER_01, NULL}, {8, 8, 11, 0}},
+ {{SFX_TONI_PISSED_OFF_PULL_GUN_01, SFX_TONI_ANGRY_PULL_GUN_01, SFX_TONI_WISECRACKING_PULL_GUN_01, NULL}, {18, 29, 19, 0}},
+ {{SFX_TONI_CALM_SEX_01, SFX_TONI_ANGRY_SEX_01, SFX_TONI_ANGRY_SEX_01, SFX_TONI_WISECRACKING_SEX_01}, {11, 10, 10, 10}},
+ {{SFX_TONI_CALM_SHOOT_01, SFX_TONI_PISSED_OFF_SHOOT_01, SFX_TONI_ANGRY_SHOOT_01, SFX_TONI_WISECRACKING_SHOOT_01}, {30, 31, 36, 26}}
+};
+
void
cAudioManager::ProcessPed(CPhysical *ped)
{
@@ -4476,7 +4594,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
break;
case WEAPONTYPE_M60:
case WEAPONTYPE_HELICANNON:
- m_sQueueSample.m_nSampleIndex = SFX_M60_TAIL_LEFT;
+ m_sQueueSample.m_nSampleIndex = SFX_SPAS12_TAIL_LEFT;
case WEAPONTYPE_UZI:
case WEAPONTYPE_MP5:
m_sQueueSample.m_nSampleIndex = SFX_UZI_END_LEFT;
@@ -5089,6 +5207,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
if (damagerType == ENTITY_TYPE_PED) {
if (weaponType == WEAPONTYPE_BRASSKNUCKLE) {
+ /*
CPed* ped = params.m_pPed;
uint32 fightMove = ped->m_curFightMove;
if (fightMove == FIGHTMOVE_BACKLEFT || fightMove == FIGHTMOVE_STDPUNCH || fightMove == FIGHTMOVE_PUNCH ||
@@ -5103,6 +5222,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
else
m_sQueueSample.m_nSampleIndex = SFX_HAMMER_HIT_1;
}
+ */
}
}
else {
@@ -5291,23 +5411,23 @@ cAudioManager::SetupPedComments(cPedParams &params, uint16 sound)
switch(sound) {
case SOUND_PED_HELI_PLAYER_FOUND:
maxDist = PED_COMMENT_POLICE_HELI_MAX_DIST;
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 20 + SFX_POLICE_HELI_1;
+ pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 29 + SFX_PHCHAT1;
break;
case SOUND_PED_VCPA_PLAYER_FOUND:
maxDist = PED_COMMENT_POLICE_HELI_MAX_DIST;
-#ifdef FIX_BUGS
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 23 + SFX_POLICE_BOAT_1;
-#else
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 29 + SFX_POLICE_BOAT_1;
-#endif
+ pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 29 + SFX_PBCHAT1;
break;
case SOUND_INJURED_PED_MALE_OUCH:
maxDist = PED_COMMENT_MAX_DIST;
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 41 + SFX_GENERIC_MALE_GRUNT_1;
+#ifdef FIX_BUGS
+ pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 53 + SFX_MALE_PAIN_01;
+#else
+ pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 51 + SFX_MALE_PAIN_01;
+#endif
break;
case SOUND_INJURED_PED_FEMALE:
maxDist = PED_COMMENT_MAX_DIST;
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 33 + SFX_GENERIC_FEMALE_GRUNT_1;
+ pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 34 + SFX_FEMALE_PAIN_01;
break;
default:
return;
@@ -5352,63 +5472,90 @@ cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound)
case MI_MEDIC: return GetMedicTalkSfx(ped, sound);
case MI_FIREMAN: return GetFiremanTalkSfx(ped, sound);
case MI_MALE01: return GetDefaultTalkSfx(ped, sound);
+/* LCS: removed for now
+ case MI_TAXI_D:
+ case MI_MALE03: return GetHFORITalkSfx(ped, sound);
+ case MI_PIMP: return GetHFOSTTalkSfx(ped, sound);
+ case MI_CRIMINAL01: return GetHMYSTTalkSfx(ped, sound);
+ case MI_CRIMINAL02: return GetHMOSTTalkSfx(ped, sound);
+ case MI_MALE02: return GetHFYRITalkSfx(ped, sound);
+ case MI_FATMALE01:
+ case MI_FATMALE02: return GetHMORITalkSfx(ped, sound);
+ case MI_FEMALE01: return GetHFYBETalkSfx(ped, sound);
+ case MI_FEMALE02: return GetHFOBETalkSfx(ped, sound);
+ case MI_FEMALE03: return GetHMYBETalkSfx(ped, sound);
+ case MI_FATFEMALE01: return GetHMYRITalkSfx(ped, sound);
+ case MI_FATFEMALE02: return GetHFYBUTalkSfx(ped, sound);
+ case MI_PROSTITUTE: return GetHFYMDTalkSfx(ped, sound);
+ case MI_PROSTITUTE2: return GetHFYCGTalkSfx(ped, sound);
+ case MI_P_MAN1: return GetHFYPRTalkSfx(ped, sound);
+ case MI_P_MAN2: return GetHFOTRTalkSfx(ped, sound);
+ case MI_P_WOM1: return GetHMOTRTalkSfx(ped, sound);
+ case MI_P_WOM2: return GetHMYAPTalkSfx(ped, sound);
+ case MI_CT_MAN1: return GetHMOCATalkSfx(ped, sound);
+ case MI_CT_MAN2: return GetBMODKTalkSfx(ped, sound);
+ case MI_CT_WOM1: return GetBMYCRTalkSfx(ped, sound);
+ case MI_CT_WOM2: return GetBFYSTTalkSfx(ped, sound);
+ case MI_LI_MAN1: return GetBFOSTTalkSfx(ped, sound);
+ case MI_LI_MAN2: return GetBMYSTTalkSfx(ped, sound);
+ case MI_LI_WOM1: return GetBMOSTTalkSfx(ped, sound);
+ case MI_LI_WOM2: return GetBFYRITalkSfx(ped, sound);
+ case MI_DOCKER1:
+ case MI_DOCKER2: return GetBFORITalkSfx(ped, sound);
+ case MI_SCUM_MAN: return GetBFYBETalkSfx(ped, sound);
+ case MI_SCUM_WOM: return GetBMYBETalkSfx(ped, sound);
+ case MI_WORKER1: return GetBFOBETalkSfx(ped, sound);
+ case MI_WORKER2: return GetBMOBETalkSfx(ped, sound);
+ case MI_B_MAN1: return GetBMYBUTalkSfx(ped, sound);
+ case MI_B_MAN2: return GetBFYPRTalkSfx(ped, sound);
+ case MI_B_MAN3: return GetBFOTRTalkSfx(ped, sound);
+ case MI_B_WOM1: return GetBMOTRTalkSfx(ped, sound);
+ case MI_B_WOM2: return GetBMYPITalkSfx(ped, sound);
+ case MI_B_WOM3: return GetBMYBBTalkSfx(ped, sound);
+ case MI_MOD_MAN: return GetWMYCRTalkSfx(ped, sound);
+ case MI_MOD_WOM: return GetWFYSTTalkSfx(ped, sound);
+ case MI_ST_MAN: return GetWFOSTTalkSfx(ped, sound);
+ case MI_ST_WOM: return GetWMYSTTalkSfx(ped, sound);
+ case MI_FAN_MAN1: return GetWMOSTTalkSfx(ped, sound);
+ case MI_FAN_MAN2: return GetWFYRITalkSfx(ped, sound);
+ case MI_FAN_WOM: return GetWFORITalkSfx(ped, sound);
+ case MI_HOS_MAN: return GetWMYRITalkSfx(ped, sound);
+ case MI_HOS_WOM: return GetWMORITalkSfx(ped, sound);
+ case MI_CONST1: return GetWFYBETalkSfx(ped, sound);
+ case MI_CONST2: return GetWMYBETalkSfx(ped, sound);
+ case MI_SHOPPER1: return GetWFOBETalkSfx(ped, sound);
+ case MI_SHOPPER2: return GetWMOBETalkSfx(ped, sound);
+ case MI_SHOPPER3: return GetWMYCWTalkSfx(ped, sound);
+ case MI_STUD_MAN: return GetWMYGOTalkSfx(ped, sound);
+ case MI_STUD_WOM: return GetWFOGOTalkSfx(ped, sound);
+ case MI_CAS_MAN: return GetWMOGOTalkSfx(ped, sound);
+ case MI_CAS_WOM: return GetWFYLGTalkSfx(ped, sound);
+ case MI_CAMP_MAN: return GetCAMPMANTalkSfx(ped, sound);
+ case MI_CAMP_WOM: return GetCAMPWOMTalkSfx(ped, sound);
+ case MI_JFOTO: return GetJFOTOTalkSfx(ped, sound);
+ case MI_JMOTO: return GetJMOTOTalkSfx(ped, sound);
+ case MI_GANG01: return GetGangLeoneATalkSfx(ped, sound);
+ case MI_GANG02: return GetGangLeoneBTalkSfx(ped, sound);
+ case MI_GANG03: return GetGangTriadATalkSfx(ped, sound);
+ case MI_GANG04: return GetGangTriadBTalkSfx(ped, sound);
+ case MI_GANG05: return GetGangDiabloATalkSfx(ped, sound);
+ case MI_GANG06: return GetGangDiabloBTalkSfx(ped, sound);
+ case MI_GANG07: return GetGangYakuzaATalkSfx(ped, sound);
+ case MI_GANG08: return GetGangYakuzaBTalkSfx(ped, sound);
+ case MI_GANG09: return GetGangYardieATalkSfx(ped, sound);
+ case MI_GANG10: return GetGangYardieBTalkSfx(ped, sound);
+ case MI_GANG11: return GetGangColumbianATalkSfx(ped, sound);
+ case MI_GANG12: return GetGangColumbianBTalkSfx(ped, sound);
+ case MI_GANG13: return GetGangHoodATalkSfx(ped, sound);
+ case MI_GANG14: return GetGangHoodBTalkSfx(ped, sound);
+ case MI_GANG15: return GetGangForelliATalkSfx(ped, sound);
+ case MI_GANG16: return GetGangForelliBTalkSfx(ped, sound);
+ case MI_GANG17: return GetGangSindaccosATalkSfx(ped, sound);
+ case MI_GANG18: return GetGangSindaccosBTalkSfx(ped, sound);
+/* LCS: cut
case MI_HFYST: return GetHFYSTTalkSfx(ped, sound);
- case MI_HFOST: return GetHFOSTTalkSfx(ped, sound);
- case MI_HMYST: return GetHMYSTTalkSfx(ped, sound);
- case MI_HMOST: return GetHMOSTTalkSfx(ped, sound);
- case MI_HFYRI: return GetHFYRITalkSfx(ped, sound);
- case MI_HFORI: return GetHFORITalkSfx(ped, sound);
- case MI_HMYRI: return GetHMYRITalkSfx(ped, sound);
- case MI_HMORI: return GetHMORITalkSfx(ped, sound);
- case MI_HFYBE: return GetHFYBETalkSfx(ped, sound);
- case MI_HFOBE: return GetHFOBETalkSfx(ped, sound);
- case MI_HMYBE: return GetHMYBETalkSfx(ped, sound);
case MI_HMOBE: return GetHMOBETalkSfx(ped, sound);
- case MI_HFYBU: return GetHFYBUTalkSfx(ped, sound);
- case MI_HFYMD: return GetHFYMDTalkSfx(ped, sound);
- case MI_HFYCG: return GetHFYCGTalkSfx(ped, sound);
- case MI_HFYPR: return GetHFYPRTalkSfx(ped, sound);
- case MI_HFOTR: return GetHFOTRTalkSfx(ped, sound);
- case MI_HMOTR: return GetHMOTRTalkSfx(ped, sound);
- case MI_HMYAP: return GetHMYAPTalkSfx(ped, sound);
- case MI_HMOCA: return GetHMOCATalkSfx(ped, sound);
- case MI_BMODK: return GetBMODKTalkSfx(ped, sound);
- case MI_BMYKR: return GetBMYCRTalkSfx(ped, sound);
- case MI_BFYST: return GetBFYSTTalkSfx(ped, sound);
- case MI_BFOST: return GetBFOSTTalkSfx(ped, sound);
- case MI_BMYST: return GetBMYSTTalkSfx(ped, sound);
- case MI_BMOST: return GetBMOSTTalkSfx(ped, sound);
- case MI_BFYRI: return GetBFYRITalkSfx(ped, sound);
- case MI_BFORI: return GetBFORITalkSfx(ped, sound);
case MI_BMYRI: return GetBMYRITalkSfx(ped, sound);
- case MI_BFYBE: return GetBFYBETalkSfx(ped, sound);
- case MI_BMYBE: return GetBMYBETalkSfx(ped, sound);
- case MI_BFOBE: return GetBFOBETalkSfx(ped, sound);
- case MI_BMOBE: return GetBMOBETalkSfx(ped, sound);
- case MI_BMYBU: return GetBMYBUTalkSfx(ped, sound);
- case MI_BFYPR: return GetBFYPRTalkSfx(ped, sound);
- case MI_BFOTR: return GetBFOTRTalkSfx(ped, sound);
- case MI_BMOTR: return GetBMOTRTalkSfx(ped, sound);
- case MI_BMYPI: return GetBMYPITalkSfx(ped, sound);
- case MI_BMYBB: return GetBMYBBTalkSfx(ped, sound);
- case MI_WMYCR: return GetWMYCRTalkSfx(ped, sound);
- case MI_WFYST: return GetWFYSTTalkSfx(ped, sound);
- case MI_WFOST: return GetWFOSTTalkSfx(ped, sound);
- case MI_WMYST: return GetWMYSTTalkSfx(ped, sound);
- case MI_WMOST: return GetWMOSTTalkSfx(ped, sound);
- case MI_WFYRI: return GetWFYRITalkSfx(ped, sound);
- case MI_WFORI: return GetWFORITalkSfx(ped, sound);
- case MI_WMYRI: return GetWMYRITalkSfx(ped, sound);
- case MI_WMORI: return GetWMORITalkSfx(ped, sound);
- case MI_WFYBE: return GetWFYBETalkSfx(ped, sound);
- case MI_WMYBE: return GetWMYBETalkSfx(ped, sound);
- case MI_WFOBE: return GetWFOBETalkSfx(ped, sound);
- case MI_WMOBE: return GetWMOBETalkSfx(ped, sound);
- case MI_WMYCW: return GetWMYCWTalkSfx(ped, sound);
- case MI_WMYGO: return GetWMYGOTalkSfx(ped, sound);
- case MI_WFOGO: return GetWFOGOTalkSfx(ped, sound);
- case MI_WMOGO: return GetWMOGOTalkSfx(ped, sound);
- case MI_WFYLG: return GetWFYLGTalkSfx(ped, sound);
case MI_WMYLG: return GetWMYLGTalkSfx(ped, sound);
case MI_WFYBU: return GetWFYBUTalkSfx(ped, sound);
case MI_WMYBU: return GetWMYBUTalkSfx(ped, sound);
@@ -5424,8 +5571,6 @@ cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound)
case MI_WMYSK: return GetWMYSKTalkSfx(ped, sound);
case MI_WFYSH: return GetWFYSHTalkSfx(ped, sound);
case MI_WFOSH: return GetWFOSHTalkSfx(ped, sound);
- case MI_JFOTO: return GetJFOTOTalkSfx(ped, sound);
- case MI_JMOTO: return GetJMOTOTalkSfx(ped, sound);
case MI_CBA:
case MI_CBB: return GetCBTalkSfx(ped, sound);
case MI_HNA:
@@ -5440,6 +5585,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound)
case MI_BKB: return GetBKTalkSfx(ped, sound);
case MI_PGA:
case MI_PGB: return GetPGTalkSfx(ped, sound);
+*/
case MI_VICE1:
case MI_VICE2:
case MI_VICE3:
@@ -5448,8 +5594,6 @@ cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound)
case MI_VICE7:
case MI_VICE8: return GetViceWhiteTalkSfx(ped, sound);
case MI_VICE6: return GetViceBlackTalkSfx(ped, sound);
- case MI_WFYG1: return GetWFYG1TalkSfx(ped, sound);
- case MI_WFYG2: return GetWFYG2TalkSfx(ped, sound);
case MI_SPECIAL01:
case MI_SPECIAL02:
case MI_SPECIAL03:
@@ -5471,6 +5615,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound)
case MI_SPECIAL19:
case MI_SPECIAL20:
case MI_SPECIAL21: return GetSpecialCharacterTalkSfx(ped, ped->GetModelIndex(), sound);
+ return NO_SAMPLE;
default: return GetGenericMaleTalkSfx(ped, sound);
}
}
@@ -5481,6 +5626,11 @@ cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound)
void
cAudioManager::GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset)
{
+ if (maxOffset == 0) {
+ phrase = prevPhrase = NO_SAMPLE;
+ return;
+ }
+
phrase = sample + m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % maxOffset;
// check if the same sfx like last time, if yes, then try use next one,
@@ -5506,40 +5656,38 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
if(m_bIsPlayerShutUp) return NO_SAMPLE;
switch(sound) {
- case SOUND_PED_DEATH: return SFX_PLAYER_DEATH;
+ case SOUND_PED_DEATH:
+ case SOUND_PED_PLAYER_AFTERSEX: return NO_SAMPLE;
case SOUND_PED_DAMAGE:
- case SOUND_PED_BULLET_HIT: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_HIT_BULLET_1, 33); break;
+ case SOUND_PED_BULLET_HIT: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_IMP_HI_01, 16); break;
case SOUND_PED_HIT:
- case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_HIT_FIST_1, 42); break;
- case SOUND_PED_LAND: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_HIT_GROUND_1, 35); break;
- case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ON_FIRE_1, 16); break;
+ case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_IMP_LOW_01, 15); break;
+ case SOUND_PED_LAND: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_HIT_GROUND_01, 12); break;
+ case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_ON_FIRE_01, 7); break;
case SOUND_PED_PLAYER_REACTTOCOP:
switch(m_nPlayerMood) {
- case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_BUSTED_1, 38);
+ case PLAYER_MOOD_PISSED_OFF:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_PISSED_OFF_BUSTED_01, 12);
break;
- case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_BUSTED_1, 20);
+ case PLAYER_MOOD_ANGRY:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_ANGRY_BUSTED_01, 16);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_BUSTED_1, 22);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_BUSTED_01, 25);
break;
}
break;
case SOUND_PED_ON_FIRE: {
cooldown_phrase(8);
switch(m_nPlayerMood) {
+ case PLAYER_MOOD_CALM:
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_SHOOT_1, 29);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_SHOOT_1, 39);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_SHOOT_1, 9);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[7].sfx[m_nPlayerMood], aReactions[7].count[m_nPlayerMood]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_SHOOT_1, 35);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_SEX_01, 30); // bruh
break;
}
break;
@@ -5548,16 +5696,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
cooldown_phrase(8);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_PULL_GUN_1, 25);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_PULL_GUN_1, 52);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_PULL_GUN_1, 19);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[5].sfx[m_nPlayerMood-1], aReactions[5].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_PULL_GUN_1, 39);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_PULL_GUN_01, 35);
break;
}
break;
@@ -5566,81 +5710,59 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_JACKING_1, 36);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_JACKING_1, 43);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_JACKING_1, 18);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[3].sfx[m_nPlayerMood-1], aReactions[3].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_JACKING_1, 40);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_JACKING_01, 35);
break;
}
break;
}
case SOUND_PED_MUGGING: {
cooldown_phrase(8);
- switch(m_nPlayerMood) {
- case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_1, 25);
- break;
- case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_PICK_UP_CASH_1, 12);
- break;
- case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_PICK_UP_CASH_1, 23);
- break;
- default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_PICK_UP_CASH_1, 11);
- break;
- }
+ sfx = NO_SAMPLE;
break;
}
case SOUND_PED_CAR_JACKED: {
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_JACKED_1, 21);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_JACKED_1, 33);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_JACKED_1, 18);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[2].sfx[m_nPlayerMood-1], aReactions[2].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_JACKED_1, 24);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_JACKED_01, 23);
break;
}
break;
}
- case SOUND_PED_PLAYER_AFTERSEX: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_AFTERSEX_1, 18); break;
case SOUND_PED_PLAYER_BEFORESEX:
switch(m_nPlayerMood) {
+ case PLAYER_MOOD_CALM:
+ case PLAYER_MOOD_PISSED_OFF:
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_SEX_1, 18);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_SEX_1, 10);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[6].sfx[m_nPlayerMood], aReactions[6].count[m_nPlayerMood]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_SEX_1, 8);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_SEX_01, 10);
break;
}
break;
case SOUND_PED_PLAYER_FARFROMCOPS: {
cooldown_phrase(4);
switch(m_nPlayerMood) {
- case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_CHASED_1, 9);
+ case PLAYER_MOOD_PISSED_OFF:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_PISSED_OFF_CHASED_01, 25);
break;
- case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_CHASED_1, 7);
+ case PLAYER_MOOD_ANGRY:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_ANGRY_CHASED_01, 25);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_CHASED_1, 20);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_CHASED_01, 20);
break;
}
break;
@@ -5649,16 +5771,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_FIGHT_1, 61);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_FIGHT_1, 61);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_FIGHT_1, 27);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[1].sfx[m_nPlayerMood-1], aReactions[1].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_FIGHT_1, 47);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_FIGHT_01, 42);
break;
}
break;
@@ -5669,16 +5787,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_CRASH_1, 44);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_CRASH_1, 41);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_CRASH_1, 19);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[0].sfx[m_nPlayerMood-1], aReactions[0].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_CRASH_1, 43);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_CRASH_01, 31);
break;
}
break;
@@ -5687,16 +5801,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_1, 17);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_ANGRY_PICK_UP_HOOKER_1, 6);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_1, 11);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[4].sfx[m_nPlayerMood-1], aReactions[4].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_CALM_PICK_UP_HOOKER_1, 22);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_PICK_UP_HOOKER_01, 18);
break;
}
break;
@@ -5707,17 +5817,204 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, uint16 sound)
}
uint32
+cAudioManager::GetMariaTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_MARIA_JACKED_CAR_1, 3); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_MARIA_CRASH_CAR_1, 4); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_MARIA_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_MARIA_SHOCKED_1, 2); break;
+ default: return GetGenericFemaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetDonaldLoveTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_DONALD_JACKED_CAR_1, 3); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_DONALD_CRASH_CAR_1, 3); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_DONALD_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_DONALD_SHOCKED_1, 2); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetJdOtooleTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_JD_CRASH_CAR_1, 3); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_JD_SHOCKED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_JD_JACKED_CAR_1, 3); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetleonMcaffreyTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_LEON_JACKED_CAR_1, 3); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_LEON_CRASH_CAR_1, 5); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_LEON_DRIVER_BLOCKED_1, 4); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_LEON_SHOCKED_1, 2); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetSalvatoreTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_SALVATORE_JACKED_CAR_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_SALVATORE_CRASH_CAR_1, 4); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_SALVATORE_DRIVER_BLOCKED_1, 3); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_SALVATORE_SHOCKED_1, 2); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetToshikoTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_TOSHIKO_JACKED_CAR_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_TOSHIKO_CRASH_CAR_1, 4); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_TOSHIKO_DRIVER_BLOCKED_1, 4); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_TOSHIKO_SHOCKED_1, 3); break;
+ default: return GetGenericFemaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetMickeyHamfistsTalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_SHOOT_1, 4); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_JACKING_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_JACKED_CAR_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_FIGHT_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_DODGE_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_BUMP_1, 4); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_MICKEY_CHAT_1, 2); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetBiker1TalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_JACKED_CAR_1, 3); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_FIGHT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_DODGE_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_BUMP_1, 3); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER1_CHAT_1, 4); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetBiker2TalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_JACKED_CAR_1, 3); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_FIGHT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_DODGE_1, 3); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_SHOCKED_1, 1); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_BUMP_1, 3); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER2_CHAT_1, 4); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetGrdAng1TalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_JACKED_CAR_1, 3); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_FIGHT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_DODGE_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_BUMP_1, 3); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG1_CHAT_1, 4); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
+cAudioManager::GetGrdAng2TalkSfx(CPed *ped, uint16 sound)
+{
+ uint32 sfx;
+
+ switch(sound) {
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_JACKED_CAR_1, 3); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_FIGHT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_DODGE_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_BUMP_1, 3); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_GRDANG2_CHAT_1, 4); break;
+ default: return GetGenericMaleTalkSfx(ped, sound);
+ }
+ return sfx;
+}
+
+uint32
cAudioManager::GetGenericMaleTalkSfx(CPed *ped, uint16 sound)
{
uint32 sfx;
m_bGenericSfx = TRUE;
switch(sound) {
- case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_DEATH_1, 41); break;
+ case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_DEATH_01, 28); break;
case SOUND_PED_BULLET_HIT:
- case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_GRUNT_1, 41); break;
- case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_FIRE_1, 32); break;
- case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_PANIC_1, 35); break;
+ case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_PAIN_01, 51); break;
+ case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_PAIN_ON_FIRE_01, 21); break;
+ case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_PANIC_01, 23); break;
default: return NO_SAMPLE;
}
return sfx;
@@ -5729,11 +6026,12 @@ cAudioManager::GetGenericFemaleTalkSfx(CPed *ped, uint16 sound)
uint32 sfx;
m_bGenericSfx = TRUE;
switch(sound) {
- case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_DEATH_1, 22); break;
+ case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_FEMALE_DEATH_01, 16); break;
case SOUND_PED_BULLET_HIT:
- case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_GRUNT_1, 33); break;
- case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_FIRE_1, 17); break;
- case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_PANIC_1, 27); break;
+ case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_FEMALE_PAIN_01, 34); break;
+ case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_FEMALE_PAIN_ON_FIRE_01, 11); break;
+ case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_FEMALE_PANIC_01, 13); break;
+ case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, SFX_FEMALE_SEX_01, 11); break;
default: return NO_SAMPLE;
}
return sfx;
@@ -5745,29 +6043,28 @@ cAudioManager::GetDefaultTalkSfx(CPed *ped, uint16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_GUN_PANIC_1, 12); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_JACKED_1, 12); break;
-#ifdef FIX_BUGS
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_JACKING_1, 13); break;
-#endif
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_MUGGED_1, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_SAVED_1, 4); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_TAXI_1, 5); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_FIGHT_1, 16); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_DODGE_1, 19); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_RUN_1, 19); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_GENERIC_CRASH_1, 13); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_CAR_CRASH_1, 15); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_BLOCKED_1, 16); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_LOST_1, 5); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_JACKED_CAR_1, 2); break;
+ case SOUND_PED_ROBBED:
+ case SOUND_PED_ACCIDENTREACTION1:
+ case SOUND_PED_TAXI_WAIT:
+ case SOUND_PED_EVADE:
+ case SOUND_PED_FLEE_RUN:
+ case SOUND_PED_CRASH_VEHICLE:
+ case SOUND_PED_WAIT_DOUBLEBACK:
#ifdef FIX_BUGS
- case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_EYEING_1, 6); break;
+ case SOUND_PED_CHAT_SEXY_MALE:
#else
- case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_EYEING_1, 6); break;
+ case SOUND_PED_CHAT_SEXY_FEMALE:
#endif
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_SHOCKED_1, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_BUMP_1, 25); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_DEFAULT_VOICE_CHAT_1, 25); break;
+ GetPhrase(sfx, ped->m_lastComment, NO_SAMPLE, 0);
+ break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_FIGHT_1, 3); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_SHOCKED_1, 1); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_BUMP_1, 3); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_CHAT_1, 4); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -5779,38 +6076,35 @@ cAudioManager::GetCopTalkSfx(CPed *ped, uint16 sound)
uint32 sfx;
PedState objective;
switch(sound) {
- case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_ARREST_1, 4); break;
- case SOUND_PED_PULLOUTWEAPON: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_PULLOUTWEAPON_1, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_SAVED_1, 2); break;
- case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_TARGETING_1, 4); break;
- case SOUND_PED_COP_MANYCOPSAROUND: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_MANYCOPSAROUND_1, 2); break;
- case SOUND_PED_GUNAIMEDAT2: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_GUNAIMEDAT2_1, 2); break;
- case SOUND_PED_COP_ALONE: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_ALONE_1, 4); break;
- case SOUND_PED_GUNAIMEDAT3: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_GUNAIMEDAT2_1, 2); break;
+ case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_COP1_ARREST_1, 2); break;
+ case SOUND_PED_PULLOUTWEAPON:
+ case SOUND_PED_ACCIDENTREACTION1:
+ case SOUND_PED_COP_MANYCOPSAROUND:
+ case SOUND_PED_GUNAIMEDAT2:
+ case SOUND_PED_COP_ALONE:
+ case SOUND_PED_GUNAIMEDAT3:
+ return NO_SAMPLE;
+ case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_COP1_SHOOT_1, 6); break;
case SOUND_PED_COP_ASK_FOR_ID: {
cooldown_phrase(4);
- GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_ASK_FOR_ID_1, 2);
- break;
+ return NO_SAMPLE;
}
case SOUND_PED_COP_LITTLECOPSAROUND:
objective = FindPlayerPed()->m_nPedState;
if(objective == PED_ARRESTED || objective == PED_DEAD || objective == PED_DIE) return NO_SAMPLE;
- GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_LITTLECOPSAROUND_1, 4);
+ GetPhrase(sfx, ped->m_lastComment, SFX_COP1_CHASE_FOOT_1, 6);
break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_FIGHT_1, 4); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_DODGE_1, 3); break;
-#ifdef FIX_BUGS
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_CAR_CRASH_1, 4); break;
-#endif
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_COP1_FIGHT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_COP1_DODGE_1, 2); break;
case SOUND_PED_PED_COLLISION:
if(FindPlayerPed()->m_pWanted->GetWantedLevel() > 0)
- GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_BUMP_1, 5);
+ GetPhrase(sfx, ped->m_lastComment, SFX_COP1_BUMP_1, 5);
else
return NO_SAMPLE;
break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return (SFX_COP_VOICE_2_ARREST_1 - SFX_COP_VOICE_1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 5) + sfx;
+ return (SFX_COP2_ARREST_1 - SFX_COP1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 6) + sfx;
}
uint32
@@ -5818,12 +6112,12 @@ cAudioManager::GetSwatTalkSfx(CPed *ped, uint16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_COP_HELIPILOTPHRASE: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_1, 7); break;
- case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_COP_TARGETING_1, 4); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_DODGE_1, 3); break;
+ case SOUND_PED_COP_HELIPILOTPHRASE: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_ROPE_1, 2); break;
+ case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_SHOOT_1, 5); break;
+ case SOUND_PED_EVADE: return NO_SAMPLE;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- sfx += (SFX_SWAT_VOICE_2_DODGE_1 - SFX_SWAT_VOICE_1_DODGE_1) * (m_sQueueSample.m_nEntityIndex % 3);
+ sfx += (SFX_SWAT_VOICE_2_ROPE_1 - SFX_SWAT_VOICE_1_ROPE_1) * (m_sQueueSample.m_nEntityIndex % 2);
return sfx;
}
@@ -5832,22 +6126,21 @@ cAudioManager::GetFBITalkSfx(CPed *ped, uint16 sound)
{
uint32 sfx;
switch(sound) {
+ case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_SHOOT_1, 5); break;
+ case SOUND_PED_COP_MANYCOPSAROUND:
+ case SOUND_PED_GUNAIMEDAT2:
+ case SOUND_PED_GUNAIMEDAT3:
+ case SOUND_PED_CRASH_VEHICLE:
+ case SOUND_PED_CRASH_CAR: return NO_SAMPLE;
#ifdef FIX_BUGS
- case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_COP_TARGETING_1, 6); break;
-#else
- case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_COP_TARGETING_1, 4); break;
+ case SOUND_PED_LEAVE_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_VAN_1, 2); break;
#endif
- case SOUND_PED_COP_MANYCOPSAROUND: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_COP_MANYCOPSAROUND_1, 3); break;
- case SOUND_PED_GUNAIMEDAT2: sfx = SFX_FBI_VOICE_1_GUNAIMEDAT2_1; break;
- case SOUND_PED_GUNAIMEDAT3: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_GUNAIMEDAT3_1, 4); break;
- case SOUND_PED_CRASH_VEHICLE:
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_CAR_CRASH_1, 4); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
#ifdef FIX_BUGS
- sfx += (SFX_FBI_VOICE_2_GUNAIMEDAT3_1 - SFX_FBI_VOICE_1_GUNAIMEDAT3_1) * (m_sQueueSample.m_nEntityIndex % 3);
+ sfx += (SFX_FBI_VOICE_2_SHOOT_1 - SFX_FBI_VOICE_1_SHOOT_1) * (m_sQueueSample.m_nEntityIndex % 2);
#else
- sfx += 16 * (m_sQueueSample.m_nEntityIndex % 3);
+ sfx += 5 * (m_sQueueSample.m_nEntityIndex % 2);
#endif
return sfx;
}
@@ -5863,12 +6156,11 @@ cAudioManager::GetMedicTalkSfx(CPed *ped, uint16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_MEDIC_VOICE_1_FIGHT_1, 6); break;
- case SOUND_PED_HEALING: GetPhrase(sfx, ped->m_lastComment, SFX_MEDIC_VOICE_1_AT_VICTIM_1, 17); break;
- case SOUND_PED_LEAVE_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_1, 10); break;
+ case SOUND_PED_HEALING: GetPhrase(sfx, ped->m_lastComment, SFX_AMBULAN_VOICE_1_VICTIM_1, 17); break;
+ case SOUND_PED_LEAVE_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_AMBULAN_VOICE_1_VAN_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- sfx += (SFX_MEDIC_VOICE_2_FIGHT_1 - SFX_MEDIC_VOICE_1_FIGHT_1) * (m_sQueueSample.m_nEntityIndex % 2);
+ sfx += (SFX_AMBULAN_VOICE_2_VAN_1 - SFX_AMBULAN_VOICE_1_VAN_1) * (m_sQueueSample.m_nEntityIndex % 2);
return sfx;
}
@@ -5878,6 +6170,7 @@ cAudioManager::GetFiremanTalkSfx(CPed *ped, uint16 sound)
return GetGenericMaleTalkSfx(ped, sound);
}
+/*
uint32
cAudioManager::GetWFYG1TalkSfx(CPed *ped, uint16 sound)
{
@@ -5935,7 +6228,9 @@ cAudioManager::GetWFYG2TalkSfx(CPed *ped, uint16 sound)
return sfx;
}
+*/
+/*
uint32
cAudioManager::GetHFYSTTalkSfx(CPed *ped, uint16 sound)
{
@@ -7702,7 +7997,8 @@ cAudioManager::GetSGTalkSfx(CPed *ped, uint16 sound)
case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_CHAT_1, 12); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- if(ped->GetModelIndex() == MI_SGB) sfx += (SFX_STREET_GANG_2_BLOCKED_1 - SFX_STREET_GANG_1_BLOCKED_1);
+// LCS removed for now
+// if(ped->GetModelIndex() == MI_SGB) sfx += (SFX_STREET_GANG_2_BLOCKED_1 - SFX_STREET_GANG_1_BLOCKED_1);
return sfx;
}
@@ -7778,17 +8074,17 @@ cAudioManager::GetPGTalkSfx(CPed *ped, uint16 sound)
}
return (SFX_PLAYER_GANG_2_BLOCKED_1 - SFX_PLAYER_GANG_1_BLOCKED_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
-
+*/
uint32
cAudioManager::GetViceWhiteTalkSfx(CPed *ped, uint16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_VICE_VOICE_1_ARREST_1, 3); break;
- case SOUND_PED_MIAMIVICE_EXITING_CAR: sfx = SFX_VICE_VOICE_1_MIAMIVICE_EXITING_CAR_1; break;
+ case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_SFX_VICE_VOICE_1_ARREST_1, 3); break;
+ case SOUND_PED_MIAMIVICE_EXITING_CAR: sfx = SFX_SFX_VICE_VOICE_1_MIAMIVICE_EXITING_CAR_1; break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- sfx += (SFX_VICE_VOICE_2_ARREST_1-SFX_VICE_VOICE_1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 5);
+ sfx += (SFX_SFX_VICE_VOICE_2_ARREST_1-SFX_SFX_VICE_VOICE_1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 5);
return sfx;
}
@@ -7797,13 +8093,13 @@ cAudioManager::GetViceBlackTalkSfx(CPed *ped, uint16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_VICE_VOICE_6_ARREST_1, 3); break;
- case SOUND_PED_MIAMIVICE_EXITING_CAR: return SFX_VICE_VOICE_6_MIAMIVICE_EXITING_CAR_1;
+ case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_SFX_VICE_VOICE_6_ARREST_1, 3); break;
+ case SOUND_PED_MIAMIVICE_EXITING_CAR: return SFX_SFX_VICE_VOICE_6_MIAMIVICE_EXITING_CAR_1;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
}
-
+/*
uint32
cAudioManager::GetBMODKTalkSfx(CPed *ped, uint16 sound)
{
@@ -7896,10 +8192,34 @@ cAudioManager::GetWMYJGTalkSfx(CPed *ped, uint16 sound)
}
return sfx;
}
+*/
uint32
cAudioManager::GetSpecialCharacterTalkSfx(CPed *ped, int32 model, uint16 sound)
{
+ uint32 key = CModelInfo::GetModelInfo(model)->GetNameHashKey();
+ if(key == CKeyGen::GetUppercaseKey("mar_01"))
+ return GetMariaTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("HOBO_01") || key == CKeyGen::GetUppercaseKey("LOVE_01"))
+ return GetDonaldLoveTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("JDMADE") || key == CKeyGen::GetUppercaseKey("TOOL_01"))
+ return GetJdOtooleTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("MCAFFRY"))
+ return GetleonMcaffreyTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("SAL_CON") || key == CKeyGen::GetUppercaseKey("SAL_01"))
+ return GetSalvatoreTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("WKAS_01") || key == CKeyGen::GetUppercaseKey("KAS_01"))
+ return GetToshikoTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("MICKEYH"))
+ return GetMickeyHamfistsTalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("BIKER1"))
+ return GetBiker1TalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("BIKER2"))
+ return GetBiker2TalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("GRDANG1"))
+ return GetGrdAng1TalkSfx(ped, sound);
+ if(key == CKeyGen::GetUppercaseKey("GRDANG2"))
+ return GetGrdAng2TalkSfx(ped, sound);
return NO_SAMPLE;
}
@@ -7986,7 +8306,6 @@ cPedComments::Process()
goto PedCommentAlreadyAdded;
}
}
-#if defined(GTA_PS2) || defined(FIX_BUGS)
uint8 IsLoadedResult;
sampleIndex = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nSampleIndex;
if (sampleIndex >= PLAYER_COMMENTS_START && sampleIndex <= PLAYER_COMMENTS_END) {
@@ -7997,18 +8316,13 @@ cPedComments::Process()
bIsPlayerComment = FALSE;
}
switch(IsLoadedResult) {
-#else
- switch(SampleManager.IsPedCommentLoaded(sampleIndex)) {
-#endif
case LOADING_STATUS_NOT_LOADED:
#if defined(GTA_PC) && !defined(FIX_BUGS)
if(!m_bDelay)
#endif
-#if defined(GTA_PS2) || defined(FIX_BUGS)
if (bIsPlayerComment)
SampleManager.LoadMissionAudio(MISSION_AUDIO_PLAYER_COMMENT, sampleIndex);
else
-#endif
SampleManager.LoadPedComment(sampleIndex);
break;
case LOADING_STATUS_LOADED:
@@ -8049,9 +8363,6 @@ cPedComments::Process()
#endif // AUDIO_REFLECTIONS
AudioManager.m_sQueueSample.m_bIs2D = FALSE;
#ifdef FIX_BUGS
- if((sampleIndex >= SFX_POLICE_BOAT_1 && sampleIndex <= SFX_POLICE_BOAT_23) ||
- (sampleIndex >= SFX_POLICE_HELI_1 && sampleIndex <= SFX_POLICE_HELI_20))
- AudioManager.m_sQueueSample.m_MaxDistance = PED_COMMENT_POLICE_HELI_MAX_DIST;
#ifndef ATTACH_RELEASING_SOUNDS_TO_ENTITIES
else if (sampleIndex >= PLAYER_COMMENTS_START && sampleIndex <= PLAYER_COMMENTS_END) { // check if player sfx
AudioManager.m_sQueueSample.m_bIs2D = TRUE;
@@ -8477,6 +8788,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_bIs2D = FALSE;
Vol = m_anRandomTable[2] % 20 + SCRIPT_OBJECT_BULLET_HIT_GROUND_VOLUME;
break;
+/*
case SCRIPT_SOUND_PAYPHONE_RINGING:
m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_PAYPHONE_RINGING_MAX_DIST;
m_sQueueSample.m_nSampleIndex = SFX_PHONE_RING;
@@ -8488,6 +8800,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_bIs2D = FALSE;
SET_SOUND_REFLECTION(FALSE);
break;
+*/
case SCRIPT_SOUND_GLASS_BREAK_L:
m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_GLASS_BREAK_MAX_DIST;
m_sQueueSample.m_nSampleIndex = SFX_GLASS_SMASH;
@@ -8967,7 +9280,7 @@ cAudioManager::ProcessFrontEnd()
case SOUND_FRONTEND_MENU_STARTING:
case SOUND_HUD:
stereo = TRUE;
- m_sQueueSample.m_nSampleIndex = SFX_INFO_LEFT;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_INFO_LEFT;
center = TRUE;
break;
case SOUND_PICKUP_MONEY:
@@ -9006,7 +9319,7 @@ cAudioManager::ProcessFrontEnd()
m_sQueueSample.m_nSampleIndex = SFX_RADIO_CLICK;
break;
case SOUND_FRONTEND_HURRICANE:
- m_sQueueSample.m_nSampleIndex = SFX_HURRICANE_MA;
+ //m_sQueueSample.m_nSampleIndex = SFX_HURRICANE_MA;
break;
case SOUND_BULLETTRACE_1:
case SOUND_BULLETTRACE_2:
@@ -9017,21 +9330,21 @@ cAudioManager::ProcessFrontEnd()
break;
case SOUND_RADIO_CHANGE:
m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] % 2) ? radioDial + 1 : radioDial + 2;
- if (m_sQueueSample.m_nSampleIndex > SFX_RADIO_DIAL_12)
- m_sQueueSample.m_nSampleIndex -= 12;
+ if (m_sQueueSample.m_nSampleIndex > SFX_RADIO_DIAL_3)
+ m_sQueueSample.m_nSampleIndex -= 3;
radioDial = m_sQueueSample.m_nSampleIndex;
break;
case SOUND_FRONTEND_HIGHLIGHT_OPTION:
- stereo = TRUE;
- m_sQueueSample.m_nSampleIndex = SFX_FE_HIGHLIGHT_LEFT;
+ //stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_HIGHLIGHT;
break;
case SOUND_FRONTEND_ENTER_OR_ADJUST:
- stereo = TRUE;
- m_sQueueSample.m_nSampleIndex = SFX_FE_SELECT_LEFT;
+ //stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_SELECT;
break;
case SOUND_FRONTEND_BACK:
- stereo = TRUE;
- m_sQueueSample.m_nSampleIndex = SFX_FE_BACK_LEFT;
+ //stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_BACK;
break;
case SOUND_FRONTEND_FAIL:
stereo = TRUE;
@@ -9069,8 +9382,8 @@ cAudioManager::ProcessFrontEnd()
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
m_sQueueSample.m_nVolume = FRONTEND_VOLUME;
- if (m_sQueueSample.m_nSampleIndex == SFX_HURRICANE_MA && CWeather::Wind > 1.0f)
- m_sQueueSample.m_nVolume = (CWeather::Wind - 1.0f) * m_sQueueSample.m_nVolume;
+ //if (m_sQueueSample.m_nSampleIndex == SFX_HURRICANE_MA && CWeather::Wind > 1.0f)
+ // m_sQueueSample.m_nVolume = (CWeather::Wind - 1.0f) * m_sQueueSample.m_nVolume;
m_sQueueSample.m_nCounter = iSound++;
m_sQueueSample.m_nLoopCount = 1;
m_sQueueSample.m_bStatic = TRUE;
@@ -9266,6 +9579,7 @@ CVector aVecExtraSoundPosition[] = { CVector(-1042.546f, 88.794f, 11.324f), CVec
void
cAudioManager::ProcessExtraSounds()
{
+/*
float distance;
for (int i = 0; i < ARRAY_SIZE(aVecExtraSoundPosition); i++) {
@@ -9294,6 +9608,7 @@ cAudioManager::ProcessExtraSounds()
}
}
}
+*/
}
void
@@ -9457,122 +9772,55 @@ void
cAudioManager::ProcessBridge()
{
float dist;
- bool8 distCalculated = FALSE;
- if (CBridge::pLiftRoad) {
- m_sQueueSample.m_vecPos = CBridge::pLiftRoad->GetPosition();
+ if (CBridge::State != STATE_BRIDGE_LOCKED && CBridge::State != STATE_LIFT_PART_IS_DOWN && CBridge::State != STATE_BRIDGE_ALWAYS_UNLOCKED) {
+ m_sQueueSample.m_vecPos = CVector(-123.0f, -627.0f, 41.0f);
dist = GetDistanceSquared(m_sQueueSample.m_vecPos);
if (dist < SQR(BRIDGE_MAX_DIST)) {
- CalculateDistance(distCalculated, dist);
- switch (CBridge::State) {
- case STATE_BRIDGE_LOCKED:
- case STATE_LIFT_PART_IS_UP:
- case STATE_LIFT_PART_ABOUT_TO_MOVE_UP:
- ProcessBridgeWarning();
- break;
- case STATE_LIFT_PART_MOVING_DOWN:
- case STATE_LIFT_PART_MOVING_UP:
- ProcessBridgeWarning();
- ProcessBridgeMotor();
- break;
- default:
- break;
+ m_sQueueSample.m_fDistance = Sqrt(dist);
+ m_sQueueSample.m_nVolume = ComputeVolume(BRIDGE_WARNING_VOLUME, BRIDGE_MAX_DIST, m_sQueueSample.m_fDistance);
+ if (m_sQueueSample.m_nVolume > 0) {
+ m_sQueueSample.m_MaxDistance = BRIDGE_MAX_DIST;
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ m_sQueueSample.m_nCounter = 0;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_nLoopCount = 0;
+ SET_EMITTING_VOLUME(BRIDGE_WARNING_VOLUME);
+ SET_LOOP_OFFSETS(SFX_BRIDGE_OPEN_WARNING)
+ m_sQueueSample.m_bStatic = FALSE;
+ SET_SOUND_REFLECTION(FALSE);
+ m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING;
+ m_sQueueSample.m_nFrequency = 12000;
+ m_sQueueSample.m_nPriority = 3;
+ m_sQueueSample.m_fSpeedMultiplier = 3.0f;
+ m_sQueueSample.m_nFramesToPlay = 5;
+ SET_SOUND_REVERB(FALSE);
+ AddSampleToRequestedQueue();
}
- ProcessBridgeOneShots();
}
- }
-}
-
-void
-cAudioManager::ProcessBridgeWarning()
-{
- if (!CStats::CommercialPassed)
- return;
-
- if (m_sQueueSample.m_fDistance < BRIDGE_MAX_DIST) {
- m_sQueueSample.m_nVolume = ComputeVolume(BRIDGE_WARNING_VOLUME, BRIDGE_MAX_DIST, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume > 0) {
- m_sQueueSample.m_nCounter = 0;
- m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING;
- m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA;
- m_sQueueSample.m_bIs2D = FALSE;
- m_sQueueSample.m_nPriority = 1;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING);
- m_sQueueSample.m_nLoopCount = 0;
- SET_EMITTING_VOLUME(BRIDGE_WARNING_VOLUME);
- SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
- m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_MaxDistance = BRIDGE_MAX_DIST;
- m_sQueueSample.m_bStatic = FALSE;
- m_sQueueSample.m_nFramesToPlay = 8;
- SET_SOUND_REVERB(FALSE);
- SET_SOUND_REFLECTION(FALSE);
- AddSampleToRequestedQueue();
- }
- }
-}
-
-void
-cAudioManager::ProcessBridgeMotor()
-{
- if (m_sQueueSample.m_fDistance < BRIDGE_MOTOR_MAX_DIST) {
- m_sQueueSample.m_nVolume = ComputeVolume(BRIDGE_MOTOR_VOLUME, BRIDGE_MOTOR_MAX_DIST, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume > 0) {
- m_sQueueSample.m_nCounter = 1;
- m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name
- m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = FALSE;
- m_sQueueSample.m_nPriority = 1;
- m_sQueueSample.m_nFrequency = 5500;
- m_sQueueSample.m_nLoopCount = 0;
- SET_EMITTING_VOLUME(BRIDGE_MOTOR_VOLUME);
- SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
- m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_MaxDistance = BRIDGE_MOTOR_MAX_DIST;
- m_sQueueSample.m_bStatic = FALSE;
- m_sQueueSample.m_nFramesToPlay = 3;
- SET_SOUND_REVERB(FALSE);
- AddSampleToRequestedQueue();
- }
- }
-}
-
-void
-cAudioManager::ProcessBridgeOneShots()
-{
- float maxDist;
-
- if (CBridge::State == STATE_LIFT_PART_IS_UP && CBridge::OldState == STATE_LIFT_PART_MOVING_UP) {
- maxDist = BRIDGE_MOTOR_MAX_DIST;
- m_sQueueSample.m_nSampleIndex = SFX_COL_CONTAINER_1;
- } else if (CBridge::State == STATE_LIFT_PART_IS_DOWN && CBridge::OldState == STATE_LIFT_PART_MOVING_DOWN) {
- maxDist = BRIDGE_MOTOR_MAX_DIST;
- m_sQueueSample.m_nSampleIndex = SFX_COL_CONTAINER_1;
- } else if (CBridge::State == STATE_LIFT_PART_MOVING_UP && CBridge::OldState == STATE_LIFT_PART_ABOUT_TO_MOVE_UP) {
- maxDist = BRIDGE_MOTOR_MAX_DIST;
- m_sQueueSample.m_nSampleIndex = SFX_COL_CONTAINER_1;
- } else if (CBridge::State == STATE_LIFT_PART_MOVING_DOWN && CBridge::OldState == STATE_LIFT_PART_IS_UP) {
- maxDist = BRIDGE_MOTOR_MAX_DIST;
- m_sQueueSample.m_nSampleIndex = SFX_COL_CONTAINER_1;
- } else return;
-
- if (m_sQueueSample.m_fDistance < maxDist) {
- m_sQueueSample.m_nVolume = ComputeVolume(BRIDGE_MOTOR_VOLUME, maxDist, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume > 0) {
- m_sQueueSample.m_nCounter = 2;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = FALSE;
- m_sQueueSample.m_nPriority = 1;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopCount = 1;
- SET_EMITTING_VOLUME(BRIDGE_MOTOR_VOLUME);
- RESET_LOOP_OFFSETS
- m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_MaxDistance = maxDist;
- m_sQueueSample.m_bStatic = TRUE;
- SET_SOUND_REVERB(FALSE);
- SET_SOUND_REFLECTION(FALSE);
- AddSampleToRequestedQueue();
+ m_sQueueSample.m_vecPos = CVector(-440.0f, -631.0f, 41.0f);
+ dist = GetDistanceSquared(m_sQueueSample.m_vecPos);
+ if (dist < SQR(BRIDGE_MAX_DIST)) {
+ m_sQueueSample.m_fDistance = Sqrt(dist);
+ m_sQueueSample.m_nVolume = ComputeVolume(BRIDGE_WARNING_VOLUME, BRIDGE_MAX_DIST, m_sQueueSample.m_fDistance);
+ if (m_sQueueSample.m_nVolume > 0) {
+ m_sQueueSample.m_MaxDistance = BRIDGE_MAX_DIST;
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ m_sQueueSample.m_nCounter = 1;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_nLoopCount = 0;
+ SET_EMITTING_VOLUME(BRIDGE_WARNING_VOLUME);
+ SET_LOOP_OFFSETS(SFX_BRIDGE_OPEN_WARNING)
+ m_sQueueSample.m_bStatic = FALSE;
+ SET_SOUND_REFLECTION(FALSE);
+ m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING;
+ m_sQueueSample.m_nFrequency = 12000;
+ m_sQueueSample.m_nPriority = 3;
+ m_sQueueSample.m_fSpeedMultiplier = 3.0f;
+ m_sQueueSample.m_nFramesToPlay = 5;
+ SET_SOUND_REVERB(FALSE);
+ AddSampleToRequestedQueue();
+ }
}
}
}
@@ -9588,380 +9836,1874 @@ struct MissionAudioData {
};
Const MissionAudioData MissionAudioNameSfxAssoc[] = {
- {"mobring", STREAMED_SOUND_MISSION_MOBR1}, {"pagring", STREAMED_SOUND_MISSION_PAGER}, {"carrev", STREAMED_SOUND_MISSION_CARREV},
- {"bikerev", STREAMED_SOUND_MISSION_BIKEREV}, {"liftop", STREAMED_SOUND_MISSION_LIFTOP}, {"liftcl", STREAMED_SOUND_MISSION_LIFTCL},
- {"liftrun", STREAMED_SOUND_MISSION_LIFTRUN}, {"liftbel", STREAMED_SOUND_MISSION_LIFTBEL}, {"inlift", STREAMED_SOUND_MISSION_INLIFT},
- {"caml", STREAMED_SOUND_MISSION_CAMERAL}, {"camr", STREAMED_SOUND_MISSION_CAMERAR}, {"cheer1", STREAMED_SOUND_MISSION_CHEER1},
- {"cheer2", STREAMED_SOUND_MISSION_CHEER2}, {"cheer3", STREAMED_SOUND_MISSION_CHEER3}, {"cheer4", STREAMED_SOUND_MISSION_CHEER4},
- {"ooh1", STREAMED_SOUND_MISSION_OOH1}, {"ooh2", STREAMED_SOUND_MISSION_OOH2}, {"race1", STREAMED_SOUND_MISSION_RACE1},
- {"race2", STREAMED_SOUND_MISSION_RACE2}, {"race3", STREAMED_SOUND_MISSION_RACE3}, {"race4", STREAMED_SOUND_MISSION_RACE4},
- {"race5", STREAMED_SOUND_MISSION_RACE5}, {"race6", STREAMED_SOUND_MISSION_RACE6}, {"race7", STREAMED_SOUND_MISSION_RACE7},
- {"race8", STREAMED_SOUND_MISSION_RACE8}, {"race9", STREAMED_SOUND_MISSION_RACE9}, {"race10", STREAMED_SOUND_MISSION_RACE10},
- {"race11", STREAMED_SOUND_MISSION_RACE11}, {"race12", STREAMED_SOUND_MISSION_RACE12}, {"race13", STREAMED_SOUND_MISSION_RACE13},
- {"race14", STREAMED_SOUND_MISSION_RACE14}, {"race15", STREAMED_SOUND_MISSION_RACE15}, {"hot1", STREAMED_SOUND_MISSION_HOT1},
- {"hot2", STREAMED_SOUND_MISSION_HOT2}, {"hot3", STREAMED_SOUND_MISSION_HOT3}, {"hot4", STREAMED_SOUND_MISSION_HOT4},
- {"hot5", STREAMED_SOUND_MISSION_HOT5}, {"hot6", STREAMED_SOUND_MISSION_HOT6}, {"hot7", STREAMED_SOUND_MISSION_HOT7},
- {"hot8", STREAMED_SOUND_MISSION_HOT8}, {"hot9", STREAMED_SOUND_MISSION_HOT9}, {"hot10", STREAMED_SOUND_MISSION_HOT10},
- {"hot11", STREAMED_SOUND_MISSION_HOT11}, {"hot12", STREAMED_SOUND_MISSION_HOT12}, {"hot13", STREAMED_SOUND_MISSION_HOT13},
- {"hot14", STREAMED_SOUND_MISSION_HOT14}, {"hot15", STREAMED_SOUND_MISSION_HOT15}, {"lanstp1", STREAMED_SOUND_MISSION_LANSTP1},
- {"lanstp2", STREAMED_SOUND_MISSION_LANSTP2}, {"lanamu1", STREAMED_SOUND_MISSION_LANAMU1}, {"lanamu2", STREAMED_SOUND_MISSION_LANAMU2},
- {"airhrnl", STREAMED_SOUND_MISSION_AIRHORNL}, {"airhrnr", STREAMED_SOUND_MISSION_AIRHORNR}, {"sniper", STREAMED_SOUND_MISSION_SNIPSCRL},
- {"snipsh", STREAMED_SOUND_MISSION_SNIPSHORT}, {"bloroof", STREAMED_SOUND_MISSION_BLOWROOF}, {"sfx_01", STREAMED_SOUND_MISSION_SFX_01},
- {"sfx_02", STREAMED_SOUND_MISSION_SFX_02}, {"LAW1_1", STREAMED_SOUND_MISSION_LAW1_1}, {"LAW1_2", STREAMED_SOUND_MISSION_LAW1_2},
- {"LAW1_3", STREAMED_SOUND_MISSION_LAW1_3}, {"LAW1_4", STREAMED_SOUND_MISSION_LAW1_4}, {"LAW1_5", STREAMED_SOUND_MISSION_LAW1_5},
- {"LAW1_6", STREAMED_SOUND_MISSION_LAW1_6}, {"LAW1_7", STREAMED_SOUND_MISSION_LAW1_7}, {"LAW1_8", STREAMED_SOUND_MISSION_LAW1_8},
- {"LAW1_9", STREAMED_SOUND_MISSION_LAW1_9}, {"LAW1_10", STREAMED_SOUND_MISSION_LAW1_10}, {"LAW2_1", STREAMED_SOUND_MISSION_LAW2_1},
- {"LAW2_2", STREAMED_SOUND_MISSION_LAW2_2}, {"LAW2_3", STREAMED_SOUND_MISSION_LAW2_3}, {"LAW2_4", STREAMED_SOUND_MISSION_LAW2_4},
- {"LAW2_5", STREAMED_SOUND_MISSION_LAW2_5}, {"LAW2_6", STREAMED_SOUND_MISSION_LAW2_6}, {"LAW2_7", STREAMED_SOUND_MISSION_LAW2_7},
- {"LAW2_8", STREAMED_SOUND_MISSION_LAW2_8}, {"LAW2_9", STREAMED_SOUND_MISSION_LAW2_9}, {"LAW2_10", STREAMED_SOUND_MISSION_LAW2_10},
- {"LAW3_1", STREAMED_SOUND_MISSION_LAW3_1}, {"LAW3_2", STREAMED_SOUND_MISSION_LAW3_2}, {"LAW3_3", STREAMED_SOUND_MISSION_LAW3_3},
- {"LAW3_4", STREAMED_SOUND_MISSION_LAW3_4}, {"LAW3_5", STREAMED_SOUND_MISSION_LAW3_5}, {"LAW3_6", STREAMED_SOUND_MISSION_LAW3_6},
- {"LAW3_10", STREAMED_SOUND_MISSION_LAW3_10}, {"LAW3_11", STREAMED_SOUND_MISSION_LAW3_11}, {"LAW3_12", STREAMED_SOUND_MISSION_LAW3_12},
- {"LAW3_13", STREAMED_SOUND_MISSION_LAW3_13}, {"LAW3_14", STREAMED_SOUND_MISSION_LAW3_14}, {"LAW3_16", STREAMED_SOUND_MISSION_LAW3_16},
- {"LAW3_17", STREAMED_SOUND_MISSION_LAW3_17}, {"LAW3_18", STREAMED_SOUND_MISSION_LAW3_18}, {"LAW3_19", STREAMED_SOUND_MISSION_LAW3_19},
- {"LAW3_20", STREAMED_SOUND_MISSION_LAW3_20}, {"LAW3_21", STREAMED_SOUND_MISSION_LAW3_21}, {"LAW3_22", STREAMED_SOUND_MISSION_LAW3_22},
- {"LAW3_23", STREAMED_SOUND_MISSION_LAW3_23}, {"LAW3_24", STREAMED_SOUND_MISSION_LAW3_24}, {"LAW3_25", STREAMED_SOUND_MISSION_LAW3_25},
- {"LAW4_1a", STREAMED_SOUND_MISSION_LAW4_1A}, {"LAW4_1b", STREAMED_SOUND_MISSION_LAW4_1B}, {"LAW4_1c", STREAMED_SOUND_MISSION_LAW4_1C},
- {"LAW4_1d", STREAMED_SOUND_MISSION_LAW4_1D}, {"LAW4_10", STREAMED_SOUND_MISSION_LAW4_10}, {"LAW4_3", STREAMED_SOUND_MISSION_LAW4_3},
- {"LAW4_4", STREAMED_SOUND_MISSION_LAW4_4}, {"LAW4_5", STREAMED_SOUND_MISSION_LAW4_5}, {"LAW4_6", STREAMED_SOUND_MISSION_LAW4_6},
- {"LAW4_7", STREAMED_SOUND_MISSION_LAW4_7}, {"LAW4_8", STREAMED_SOUND_MISSION_LAW4_8}, {"LAW4_9", STREAMED_SOUND_MISSION_LAW4_9},
- {"COL1_1", STREAMED_SOUND_MISSION_COL1_1}, {"COL1_2", STREAMED_SOUND_MISSION_COL1_2}, {"COL1_3", STREAMED_SOUND_MISSION_COL1_3},
- {"COL1_4", STREAMED_SOUND_MISSION_COL1_4}, {"COL1_5", STREAMED_SOUND_MISSION_COL1_5}, {"COL1_6", STREAMED_SOUND_MISSION_COL1_6},
- {"COL1_7", STREAMED_SOUND_MISSION_COL1_7}, {"COL1_8", STREAMED_SOUND_MISSION_COL1_8}, {"COL2_1", STREAMED_SOUND_MISSION_COL2_1},
- {"COL2_2", STREAMED_SOUND_MISSION_COL2_2}, {"COL2_3", STREAMED_SOUND_MISSION_COL2_3}, {"COL2_4", STREAMED_SOUND_MISSION_COL2_4},
- {"COL2_5", STREAMED_SOUND_MISSION_COL2_5}, {"COL2_6a", STREAMED_SOUND_MISSION_COL2_6A}, {"COL2_7", STREAMED_SOUND_MISSION_COL2_7},
- {"COL2_8", STREAMED_SOUND_MISSION_COL2_8}, {"COL2_9", STREAMED_SOUND_MISSION_COL2_9}, {"COL2_10", STREAMED_SOUND_MISSION_COL2_10},
- {"COL2_11", STREAMED_SOUND_MISSION_COL2_11}, {"COL2_12", STREAMED_SOUND_MISSION_COL2_12}, {"COL2_13", STREAMED_SOUND_MISSION_COL2_13},
- {"COL2_14", STREAMED_SOUND_MISSION_COL2_14}, {"COL2_15", STREAMED_SOUND_MISSION_COL2_15}, {"COL2_16", STREAMED_SOUND_MISSION_COL2_16},
- {"COL3_1", STREAMED_SOUND_MISSION_COL3_1}, {"COL3_2", STREAMED_SOUND_MISSION_COL3_2}, {"COL3_2a", STREAMED_SOUND_MISSION_COL3_2A},
- {"COL3_2b", STREAMED_SOUND_MISSION_COL3_2B}, {"COL3_3", STREAMED_SOUND_MISSION_COL3_3}, {"COL3_4", STREAMED_SOUND_MISSION_COL3_4},
- {"COL3_5", STREAMED_SOUND_MISSION_COL3_5}, {"COL3_6", STREAMED_SOUND_MISSION_COL3_6}, {"COL3_7", STREAMED_SOUND_MISSION_COL3_7},
- {"COL3_8", STREAMED_SOUND_MISSION_COL3_8}, {"COL3_9", STREAMED_SOUND_MISSION_COL3_9}, {"COL3_10", STREAMED_SOUND_MISSION_COL3_10},
- {"COL3_11", STREAMED_SOUND_MISSION_COL3_11}, {"COL3_12", STREAMED_SOUND_MISSION_COL3_12}, {"COL3_13", STREAMED_SOUND_MISSION_COL3_13},
- {"COL3_14", STREAMED_SOUND_MISSION_COL3_14}, {"COL3_15", STREAMED_SOUND_MISSION_COL3_15}, {"COL3_16", STREAMED_SOUND_MISSION_COL3_16},
- {"COL3_17", STREAMED_SOUND_MISSION_COL3_17}, {"COL3_18", STREAMED_SOUND_MISSION_COL3_18}, {"COL3_19", STREAMED_SOUND_MISSION_COL3_19},
- {"COL3_20", STREAMED_SOUND_MISSION_COL3_20}, {"COL3_21", STREAMED_SOUND_MISSION_COL3_21}, {"COL3_23", STREAMED_SOUND_MISSION_COL3_23},
- {"COL3_24", STREAMED_SOUND_MISSION_COL3_24}, {"COL3_25", STREAMED_SOUND_MISSION_COL3_25}, {"COL4_1", STREAMED_SOUND_MISSION_COL4_1},
- {"COL4_2", STREAMED_SOUND_MISSION_COL4_2}, {"COL4_3", STREAMED_SOUND_MISSION_COL4_3}, {"COL4_4", STREAMED_SOUND_MISSION_COL4_4},
- {"COL4_5", STREAMED_SOUND_MISSION_COL4_5}, {"COL4_6", STREAMED_SOUND_MISSION_COL4_6}, {"COL4_7", STREAMED_SOUND_MISSION_COL4_7},
- {"COL4_8", STREAMED_SOUND_MISSION_COL4_8}, {"COL4_9", STREAMED_SOUND_MISSION_COL4_9}, {"COL4_10", STREAMED_SOUND_MISSION_COL4_10},
- {"COL4_11", STREAMED_SOUND_MISSION_COL4_11}, {"COL4_12", STREAMED_SOUND_MISSION_COL4_12}, {"COL4_13", STREAMED_SOUND_MISSION_COL4_13},
- {"COL4_14", STREAMED_SOUND_MISSION_COL4_14}, {"COL4_15", STREAMED_SOUND_MISSION_COL4_15}, {"COL4_16", STREAMED_SOUND_MISSION_COL4_16},
- {"COL4_17", STREAMED_SOUND_MISSION_COL4_17}, {"COL4_18", STREAMED_SOUND_MISSION_COL4_18}, {"COL4_19", STREAMED_SOUND_MISSION_COL4_19},
- {"COL4_20", STREAMED_SOUND_MISSION_COL4_20}, {"COL4_21", STREAMED_SOUND_MISSION_COL4_21}, {"COL4_22", STREAMED_SOUND_MISSION_COL4_22},
- {"COL4_23", STREAMED_SOUND_MISSION_COL4_23}, {"COL4_24", STREAMED_SOUND_MISSION_COL4_24}, {"COL4_25", STREAMED_SOUND_MISSION_COL4_25},
- {"COL4_26", STREAMED_SOUND_MISSION_COL4_26}, {"COL5_1", STREAMED_SOUND_MISSION_COL5_1}, {"COL5_2", STREAMED_SOUND_MISSION_COL5_2},
- {"COL5_3", STREAMED_SOUND_MISSION_COL5_3}, {"COL5_4", STREAMED_SOUND_MISSION_COL5_4}, {"COL5_5", STREAMED_SOUND_MISSION_COL5_5},
- {"COL5_6", STREAMED_SOUND_MISSION_COL5_6}, {"COL5_7", STREAMED_SOUND_MISSION_COL5_7}, {"COL5_8", STREAMED_SOUND_MISSION_COL5_8},
- {"COL5_9", STREAMED_SOUND_MISSION_COL5_9}, {"COL5_10", STREAMED_SOUND_MISSION_COL5_10}, {"COL5_11", STREAMED_SOUND_MISSION_COL5_11},
- {"COL5_12", STREAMED_SOUND_MISSION_COL5_12}, {"COL5_13", STREAMED_SOUND_MISSION_COL5_13}, {"COL5_14", STREAMED_SOUND_MISSION_COL5_14},
- {"COL5_15", STREAMED_SOUND_MISSION_COL5_15}, {"COL5_16", STREAMED_SOUND_MISSION_COL5_16}, {"COL5_17", STREAMED_SOUND_MISSION_COL5_17},
- {"COL5_18", STREAMED_SOUND_MISSION_COL5_18}, {"COL5_19", STREAMED_SOUND_MISSION_COL5_19}, {"COL5_20", STREAMED_SOUND_MISSION_COL5_20},
- {"COL5_21", STREAMED_SOUND_MISSION_COL5_21}, {"COL5_22", STREAMED_SOUND_MISSION_COL5_22}, {"COK1_1", STREAMED_SOUND_MISSION_COK1_1},
- {"COK1_2", STREAMED_SOUND_MISSION_COK1_2}, {"COK1_3", STREAMED_SOUND_MISSION_COK1_3}, {"COK1_4", STREAMED_SOUND_MISSION_COK1_4},
- {"COK1_5", STREAMED_SOUND_MISSION_COK1_5}, {"COK1_6", STREAMED_SOUND_MISSION_COK1_6}, {"COK2_1", STREAMED_SOUND_MISSION_COK2_1},
- {"COK2_2", STREAMED_SOUND_MISSION_COK2_2}, {"COK2_3", STREAMED_SOUND_MISSION_COK2_3}, {"COK2_4", STREAMED_SOUND_MISSION_COK2_4},
- {"COK2_5", STREAMED_SOUND_MISSION_COK2_5}, {"COK2_6", STREAMED_SOUND_MISSION_COK2_6}, {"COK2_7a", STREAMED_SOUND_MISSION_COK2_7A},
- {"COK2_7b", STREAMED_SOUND_MISSION_COK2_7B}, {"COK2_7c", STREAMED_SOUND_MISSION_COK2_7C}, {"COK2_8a", STREAMED_SOUND_MISSION_COK2_8A},
- {"COK2_8b", STREAMED_SOUND_MISSION_COK2_8B}, {"COK2_8c", STREAMED_SOUND_MISSION_COK2_8C}, {"COK2_8d", STREAMED_SOUND_MISSION_COK2_8D},
- {"COK2_9", STREAMED_SOUND_MISSION_COK2_9}, {"COK210a", STREAMED_SOUND_MISSION_COK210A}, {"COK210b", STREAMED_SOUND_MISSION_COK210B},
- {"COK210c", STREAMED_SOUND_MISSION_COK210C}, {"COK212a", STREAMED_SOUND_MISSION_COK212A}, {"COK212b", STREAMED_SOUND_MISSION_COK212B},
- {"COK2_13", STREAMED_SOUND_MISSION_COK2_13}, {"COK2_14", STREAMED_SOUND_MISSION_COK2_14}, {"COK2_15", STREAMED_SOUND_MISSION_COK2_15},
- {"COK2_16", STREAMED_SOUND_MISSION_COK2_16}, {"COK2_20", STREAMED_SOUND_MISSION_COK2_20}, {"COK2_21", STREAMED_SOUND_MISSION_COK2_21},
- {"COK2_22", STREAMED_SOUND_MISSION_COK2_22}, {"COK3_1", STREAMED_SOUND_MISSION_COK3_1}, {"COK3_2", STREAMED_SOUND_MISSION_COK3_2},
- {"COK3_3", STREAMED_SOUND_MISSION_COK3_3}, {"COK3_4", STREAMED_SOUND_MISSION_COK3_4}, {"COK4_1", STREAMED_SOUND_MISSION_COK4_1},
- {"COK4_2", STREAMED_SOUND_MISSION_COK4_2}, {"COK4_3", STREAMED_SOUND_MISSION_COK4_3}, {"COK4_4", STREAMED_SOUND_MISSION_COK4_4},
- {"COK4_5", STREAMED_SOUND_MISSION_COK4_5}, {"COK4_6", STREAMED_SOUND_MISSION_COK4_6}, {"COK4_7", STREAMED_SOUND_MISSION_COK4_7},
- {"COK4_8", STREAMED_SOUND_MISSION_COK4_8}, {"COK4_9", STREAMED_SOUND_MISSION_COK4_9}, {"COK4_9A", STREAMED_SOUND_MISSION_COK4_9A},
- {"COK4_10", STREAMED_SOUND_MISSION_COK4_10}, {"COK4_11", STREAMED_SOUND_MISSION_COK4_11}, {"COK4_12", STREAMED_SOUND_MISSION_COK4_12},
- {"COK4_13", STREAMED_SOUND_MISSION_COK4_13}, {"COK4_14", STREAMED_SOUND_MISSION_COK4_14}, {"COK4_15", STREAMED_SOUND_MISSION_COK4_15},
- {"COK4_16", STREAMED_SOUND_MISSION_COK4_16}, {"COK4_17", STREAMED_SOUND_MISSION_COK4_17}, {"COK4_18", STREAMED_SOUND_MISSION_COK4_18},
- {"COK4_19", STREAMED_SOUND_MISSION_COK4_19}, {"COK4_20", STREAMED_SOUND_MISSION_COK4_20}, {"COK4_21", STREAMED_SOUND_MISSION_COK4_21},
- {"COK4_22", STREAMED_SOUND_MISSION_COK4_22}, {"COK4_23", STREAMED_SOUND_MISSION_COK4_23}, {"COK4_24", STREAMED_SOUND_MISSION_COK4_24},
- {"COK4_25", STREAMED_SOUND_MISSION_COK4_25}, {"COK4_26", STREAMED_SOUND_MISSION_COK4_26}, {"COK4_27", STREAMED_SOUND_MISSION_COK4_27},
- {"RESC_1", STREAMED_SOUND_MISSION_RESC_1}, {"RESC_2", STREAMED_SOUND_MISSION_RESC_2}, {"RESC_3", STREAMED_SOUND_MISSION_RESC_3},
- {"RESC_4", STREAMED_SOUND_MISSION_RESC_4}, {"RESC_5", STREAMED_SOUND_MISSION_RESC_5}, {"RESC_6", STREAMED_SOUND_MISSION_RESC_6},
- {"RESC_7", STREAMED_SOUND_MISSION_RESC_7}, {"RESC_8", STREAMED_SOUND_MISSION_RESC_8}, {"RESC_9", STREAMED_SOUND_MISSION_RESC_9},
- {"RESC_10", STREAMED_SOUND_MISSION_RESC_10}, {"ASS_1", STREAMED_SOUND_MISSION_ASS_1}, {"ASS_2", STREAMED_SOUND_MISSION_ASS_2},
- {"ASS_3", STREAMED_SOUND_MISSION_ASS_3}, {"ASS_4", STREAMED_SOUND_MISSION_ASS_4}, {"ASS_5", STREAMED_SOUND_MISSION_ASS_5},
- {"ASS_6", STREAMED_SOUND_MISSION_ASS_6}, {"ASS_7", STREAMED_SOUND_MISSION_ASS_7}, {"ASS_8", STREAMED_SOUND_MISSION_ASS_8},
- {"ASS_9", STREAMED_SOUND_MISSION_ASS_9}, {"ASS_10", STREAMED_SOUND_MISSION_ASS_10}, {"ASS_11", STREAMED_SOUND_MISSION_ASS_11},
- {"ASS_12", STREAMED_SOUND_MISSION_ASS_12}, {"ASS_13", STREAMED_SOUND_MISSION_ASS_13}, {"ASS_14", STREAMED_SOUND_MISSION_ASS_14},
- {"BUD1_1", STREAMED_SOUND_MISSION_BUD1_1}, {"BUD1_2", STREAMED_SOUND_MISSION_BUD1_2}, {"BUD1_3", STREAMED_SOUND_MISSION_BUD1_3},
- {"BUD1_4", STREAMED_SOUND_MISSION_BUD1_4}, {"BUD1_5", STREAMED_SOUND_MISSION_BUD1_5}, {"BUD1_9", STREAMED_SOUND_MISSION_BUD1_9},
- {"BUD1_10", STREAMED_SOUND_MISSION_BUD1_10}, {"BUD2_1", STREAMED_SOUND_MISSION_BUD2_1}, {"BUD2_2", STREAMED_SOUND_MISSION_BUD2_2},
- {"BUD2_3", STREAMED_SOUND_MISSION_BUD2_3}, {"BUD2_4", STREAMED_SOUND_MISSION_BUD2_4}, {"BUD2_5", STREAMED_SOUND_MISSION_BUD2_5},
- {"BUD2_6", STREAMED_SOUND_MISSION_BUD2_6}, {"BUD2_7", STREAMED_SOUND_MISSION_BUD2_7}, {"BUD3_1a", STREAMED_SOUND_MISSION_BUD3_1A},
- {"BUD3_1b", STREAMED_SOUND_MISSION_BUD3_1B}, {"BUD3_1", STREAMED_SOUND_MISSION_BUD3_1}, {"BUD3_2", STREAMED_SOUND_MISSION_BUD3_2},
- {"BUD3_3", STREAMED_SOUND_MISSION_BUD3_3}, {"BUD3_4", STREAMED_SOUND_MISSION_BUD3_4}, {"BUD3_1c", STREAMED_SOUND_MISSION_BUD3_1C},
- {"BUD3_5", STREAMED_SOUND_MISSION_BUD3_5}, {"BUD3_6", STREAMED_SOUND_MISSION_BUD3_6}, {"BUD3_7", STREAMED_SOUND_MISSION_BUD3_7},
- {"BUD3_8a", STREAMED_SOUND_MISSION_BUD3_8A}, {"BUD3_8b", STREAMED_SOUND_MISSION_BUD3_8B}, {"BUD3_8c", STREAMED_SOUND_MISSION_BUD3_8C},
- {"BUD3_9a", STREAMED_SOUND_MISSION_BUD3_9A}, {"BUD3_9b", STREAMED_SOUND_MISSION_BUD3_9B}, {"BUD3_9c", STREAMED_SOUND_MISSION_BUD3_9C},
- {"CAP1_2", STREAMED_SOUND_MISSION_CAP1_2}, {"CAP1_3", STREAMED_SOUND_MISSION_CAP1_3}, {"CAP1_4", STREAMED_SOUND_MISSION_CAP1_4},
- {"CAP1_5", STREAMED_SOUND_MISSION_CAP1_5}, {"CAP1_6", STREAMED_SOUND_MISSION_CAP1_6}, {"CAP1_7", STREAMED_SOUND_MISSION_CAP1_7},
- {"CAP1_8", STREAMED_SOUND_MISSION_CAP1_8}, {"CAP1_9", STREAMED_SOUND_MISSION_CAP1_9}, {"CAP1_10", STREAMED_SOUND_MISSION_CAP1_10},
- {"CAP1_11", STREAMED_SOUND_MISSION_CAP1_11}, {"CAP1_12", STREAMED_SOUND_MISSION_CAP1_12}, {"FINKILL", STREAMED_SOUND_MISSION_FINKILL},
- {"FIN_1a", STREAMED_SOUND_MISSION_FIN_1A}, {"FIN_1b", STREAMED_SOUND_MISSION_FIN_1B}, {"FIN_1c", STREAMED_SOUND_MISSION_FIN_1C},
- {"FIN_2b", STREAMED_SOUND_MISSION_FIN_2B}, {"FIN_2c", STREAMED_SOUND_MISSION_FIN_2C}, {"FIN_3", STREAMED_SOUND_MISSION_FIN_3},
- {"FIN_4", STREAMED_SOUND_MISSION_FIN_4}, {"FIN_5", STREAMED_SOUND_MISSION_FIN_5}, {"FIN_6", STREAMED_SOUND_MISSION_FIN_6},
- {"FIN_10", STREAMED_SOUND_MISSION_FIN_10}, {"FIN_11a", STREAMED_SOUND_MISSION_FIN_11A}, {"FIN_11b", STREAMED_SOUND_MISSION_FIN_11B},
- {"FIN_12a", STREAMED_SOUND_MISSION_FIN_12A}, {"FIN_12b", STREAMED_SOUND_MISSION_FIN_12B}, {"FIN_12c", STREAMED_SOUND_MISSION_FIN_12C},
- {"FIN_13", STREAMED_SOUND_MISSION_FIN_13}, {"BNK1_1", STREAMED_SOUND_MISSION_BNK1_1}, {"BNK1_2", STREAMED_SOUND_MISSION_BNK1_2},
- {"BNK1_3", STREAMED_SOUND_MISSION_BNK1_3}, {"BNK1_4", STREAMED_SOUND_MISSION_BNK1_4}, {"BNK1_5", STREAMED_SOUND_MISSION_BNK1_5},
- {"BNK1_6", STREAMED_SOUND_MISSION_BNK1_6}, {"BNK1_7", STREAMED_SOUND_MISSION_BNK1_7}, {"BNK1_8", STREAMED_SOUND_MISSION_BNK1_8},
- {"BNK1_10", STREAMED_SOUND_MISSION_BNK1_10}, {"BNK1_11", STREAMED_SOUND_MISSION_BNK1_11}, {"BNK1_12", STREAMED_SOUND_MISSION_BNK1_12},
- {"BNK1_13", STREAMED_SOUND_MISSION_BNK1_13}, {"BNK1_14", STREAMED_SOUND_MISSION_BNK1_14}, {"BNK2_1", STREAMED_SOUND_MISSION_BNK2_1},
- {"BNK2_2", STREAMED_SOUND_MISSION_BNK2_2}, {"BNK2_3", STREAMED_SOUND_MISSION_BNK2_3}, {"BNK2_4", STREAMED_SOUND_MISSION_BNK2_4},
- {"BNK2_5", STREAMED_SOUND_MISSION_BNK2_5}, {"BNK2_6", STREAMED_SOUND_MISSION_BNK2_6}, {"BNK2_7", STREAMED_SOUND_MISSION_BNK2_7},
- {"BNK2_8", STREAMED_SOUND_MISSION_BNK2_8}, {"BNK2_9", STREAMED_SOUND_MISSION_BNK2_9}, {"BNK3_1", STREAMED_SOUND_MISSION_BNK3_1},
- {"BNK3_2", STREAMED_SOUND_MISSION_BNK3_2}, {"BNK3_3a", STREAMED_SOUND_MISSION_BNK3_3A}, {"BNK3_3b", STREAMED_SOUND_MISSION_BNK3_3B},
- {"BNK3_3c", STREAMED_SOUND_MISSION_BNK3_3C}, {"BNK3_4a", STREAMED_SOUND_MISSION_BNK3_4A}, {"BNK3_4b", STREAMED_SOUND_MISSION_BNK3_4B},
- {"BNK3_4c", STREAMED_SOUND_MISSION_BNK3_4C}, {"BNK4_1", STREAMED_SOUND_MISSION_BNK4_1}, {"BNK4_2", STREAMED_SOUND_MISSION_BNK4_2},
- {"BNK4_3A", STREAMED_SOUND_MISSION_BNK4_3A}, {"BNK4_3B", STREAMED_SOUND_MISSION_BNK4_3B}, {"BNK4_3C", STREAMED_SOUND_MISSION_BNK4_3C},
- {"BNK4_3D", STREAMED_SOUND_MISSION_BNK4_3D}, {"BNK4_3E", STREAMED_SOUND_MISSION_BNK4_3E}, {"BNK4_3F", STREAMED_SOUND_MISSION_BNK4_3F},
- {"BNK4_3G", STREAMED_SOUND_MISSION_BNK4_3G}, {"BNK4_3H", STREAMED_SOUND_MISSION_BNK4_3H}, {"BNK4_3I", STREAMED_SOUND_MISSION_BNK4_3I},
- {"BNK4_3J", STREAMED_SOUND_MISSION_BNK4_3J}, {"BNK4_3K", STREAMED_SOUND_MISSION_BNK4_3K}, {"BNK4_3M", STREAMED_SOUND_MISSION_BNK4_3M},
- {"BNK4_3O", STREAMED_SOUND_MISSION_BNK4_3O}, {"BNK4_3P", STREAMED_SOUND_MISSION_BNK4_3P}, {"BNK4_3Q", STREAMED_SOUND_MISSION_BNK4_3Q},
- {"BNK4_3R", STREAMED_SOUND_MISSION_BNK4_3R}, {"BNK4_3S", STREAMED_SOUND_MISSION_BNK4_3S}, {"BNK4_3T", STREAMED_SOUND_MISSION_BNK4_3T},
- {"BNK4_3U", STREAMED_SOUND_MISSION_BNK4_3U}, {"BNK4_3V", STREAMED_SOUND_MISSION_BNK4_3V}, {"BNK4_4a", STREAMED_SOUND_MISSION_BNK4_4A},
- {"BNK4_4b", STREAMED_SOUND_MISSION_BNK4_4B}, {"BNK4_5", STREAMED_SOUND_MISSION_BNK4_5}, {"BNK4_6", STREAMED_SOUND_MISSION_BNK4_6},
- {"BNK4_7", STREAMED_SOUND_MISSION_BNK4_7}, {"BNK4_8", STREAMED_SOUND_MISSION_BNK4_8}, {"BNK4_9", STREAMED_SOUND_MISSION_BNK4_9},
- {"BNK4_10", STREAMED_SOUND_MISSION_BNK4_10}, {"BNK4_11", STREAMED_SOUND_MISSION_BNK4_11}, {"BK4_12a", STREAMED_SOUND_MISSION_BK4_12A},
- {"BK4_12b", STREAMED_SOUND_MISSION_BK4_12B}, {"BK4_12c", STREAMED_SOUND_MISSION_BK4_12C}, {"BNK4_13", STREAMED_SOUND_MISSION_BNK4_13},
- {"BK4_14a", STREAMED_SOUND_MISSION_BK4_14A}, {"BK4_14b", STREAMED_SOUND_MISSION_BK4_14B}, {"BNK4_15", STREAMED_SOUND_MISSION_BNK4_15},
- {"BNK4_16", STREAMED_SOUND_MISSION_BNK4_16}, {"BNK4_17", STREAMED_SOUND_MISSION_BNK4_17}, {"BNK4_18", STREAMED_SOUND_MISSION_BNK4_18},
- {"BK4_19a", STREAMED_SOUND_MISSION_BK4_19A}, {"BK4_19b", STREAMED_SOUND_MISSION_BK4_19B}, {"BK4_20a", STREAMED_SOUND_MISSION_BK4_20A},
- {"BK4_20b", STREAMED_SOUND_MISSION_BK4_20B}, {"BNK4_21", STREAMED_SOUND_MISSION_BNK4_21}, {"BNK422a", STREAMED_SOUND_MISSION_BNK422A},
- {"BNK422b", STREAMED_SOUND_MISSION_BNK422B}, {"BK4_23a", STREAMED_SOUND_MISSION_BK4_23A}, {"BK4_23b", STREAMED_SOUND_MISSION_BK4_23B},
- {"BK4_23c", STREAMED_SOUND_MISSION_BK4_23C}, {"BK4_23d", STREAMED_SOUND_MISSION_BK4_23D}, {"BK4_24a", STREAMED_SOUND_MISSION_BK4_24A},
- {"BK4_24b", STREAMED_SOUND_MISSION_BK4_24B}, {"BNK4_25", STREAMED_SOUND_MISSION_BNK4_25}, {"BNK4_26", STREAMED_SOUND_MISSION_BNK4_26},
- {"BNK4_27", STREAMED_SOUND_MISSION_BNK4_27}, {"BNK4_28", STREAMED_SOUND_MISSION_BNK4_28}, {"BNK4_29", STREAMED_SOUND_MISSION_BNK4_29},
- {"BNK4_30", STREAMED_SOUND_MISSION_BNK4_30}, {"BK4_31a", STREAMED_SOUND_MISSION_BK4_31A}, {"BK4_31b", STREAMED_SOUND_MISSION_BK4_31B},
- {"BNK4_32", STREAMED_SOUND_MISSION_BNK4_32}, {"BK4_34a", STREAMED_SOUND_MISSION_BK4_34A}, {"BK4_34b", STREAMED_SOUND_MISSION_BK4_34B},
- {"BK4_35a", STREAMED_SOUND_MISSION_BK4_35A}, {"BK4_35b", STREAMED_SOUND_MISSION_BK4_35B}, {"BNK4_36", STREAMED_SOUND_MISSION_BNK4_36},
- {"BNK4_37", STREAMED_SOUND_MISSION_BNK4_37}, {"BNK4_38", STREAMED_SOUND_MISSION_BNK4_38}, {"BNK_39", STREAMED_SOUND_MISSION_BNK4_39},
- {"BK4_40a", STREAMED_SOUND_MISSION_BK4_40A}, {"BK4_40b", STREAMED_SOUND_MISSION_BK4_40B}, {"BNK4_41", STREAMED_SOUND_MISSION_BNK4_41},
- {"BNK4_42", STREAMED_SOUND_MISSION_BNK4_42}, {"BNK4_43", STREAMED_SOUND_MISSION_BNK4_43}, {"BNK4_44", STREAMED_SOUND_MISSION_BNK4_44},
- {"BNK4_45", STREAMED_SOUND_MISSION_BNK4_45}, {"BNK4_46", STREAMED_SOUND_MISSION_BNK4_46}, {"BNK4_47", STREAMED_SOUND_MISSION_BNK4_47},
- {"BNK4_48", STREAMED_SOUND_MISSION_BNK4_48}, {"BNK4_49", STREAMED_SOUND_MISSION_BNK4_49}, {"BNK450A", STREAMED_SOUND_MISSION_BNK450A},
- {"BNK450B", STREAMED_SOUND_MISSION_BNK450B}, {"BNK4_51", STREAMED_SOUND_MISSION_BNK4_51}, {"BNK4_94", STREAMED_SOUND_MISSION_BNK4_94},
- {"BNK4_95", STREAMED_SOUND_MISSION_BNK4_95}, {"BNK4_96", STREAMED_SOUND_MISSION_BNK4_96}, {"BNK4_97", STREAMED_SOUND_MISSION_BNK4_97},
- {"BNK4_98", STREAMED_SOUND_MISSION_BNK4_98}, {"BNK4_99", STREAMED_SOUND_MISSION_BNK4_99}, {"CNT1_1", STREAMED_SOUND_MISSION_CNT1_1},
- {"CNT1_2", STREAMED_SOUND_MISSION_CNT1_2}, {"CNT1_3", STREAMED_SOUND_MISSION_CNT1_3}, {"CNT1_4", STREAMED_SOUND_MISSION_CNT1_4},
- {"CNT1_5", STREAMED_SOUND_MISSION_CNT1_5}, {"CNT2_1", STREAMED_SOUND_MISSION_CNT2_1}, {"CNT2_2", STREAMED_SOUND_MISSION_CNT2_2},
- {"CNT2_3", STREAMED_SOUND_MISSION_CNT2_3}, {"CNT2_4", STREAMED_SOUND_MISSION_CNT2_4}, {"PORN1_1", STREAMED_SOUND_MISSION_PORN1_1},
- {"PORN1_2", STREAMED_SOUND_MISSION_PORN1_2}, {"PORN1_3", STREAMED_SOUND_MISSION_PORN1_3}, {"PRN1_3A", STREAMED_SOUND_MISSION_PRN1_3A},
- {"PORN1_4", STREAMED_SOUND_MISSION_PORN1_4}, {"PORN1_5", STREAMED_SOUND_MISSION_PORN1_5}, {"PORN1_6", STREAMED_SOUND_MISSION_PORN1_6},
- {"PORN1_7", STREAMED_SOUND_MISSION_PORN1_7}, {"PORN1_8", STREAMED_SOUND_MISSION_PORN1_8}, {"PORN1_9", STREAMED_SOUND_MISSION_PORN1_9},
- {"PRN1_10", STREAMED_SOUND_MISSION_PRN1_10}, {"PRN1_11", STREAMED_SOUND_MISSION_PRN1_11}, {"PRN1_12", STREAMED_SOUND_MISSION_PRN1_12},
- {"PRN1_13", STREAMED_SOUND_MISSION_PRN1_13}, {"PRN1_14", STREAMED_SOUND_MISSION_PRN1_14}, {"PRN1_15", STREAMED_SOUND_MISSION_PRN1_15},
- {"PRN1_16", STREAMED_SOUND_MISSION_PRN1_16}, {"PRN1_17", STREAMED_SOUND_MISSION_PRN1_17}, {"PRN1_18", STREAMED_SOUND_MISSION_PRN1_18},
- {"PRN1_19", STREAMED_SOUND_MISSION_PRN1_19}, {"PRN1_20", STREAMED_SOUND_MISSION_PRN1_20}, {"PRN1_21", STREAMED_SOUND_MISSION_PRN1_21},
- {"PORN3_1", STREAMED_SOUND_MISSION_PORN3_1}, {"PORN3_2", STREAMED_SOUND_MISSION_PORN3_2}, {"PORN3_3", STREAMED_SOUND_MISSION_PORN3_3},
- {"PORN3_4", STREAMED_SOUND_MISSION_PORN3_4}, {"TAX1_1", STREAMED_SOUND_MISSION_TAX1_1}, {"TAX1_2", STREAMED_SOUND_MISSION_TAX1_2},
- {"TAX1_3", STREAMED_SOUND_MISSION_TAX1_3}, {"TAX1_4", STREAMED_SOUND_MISSION_TAX1_4}, {"TAX1_5", STREAMED_SOUND_MISSION_TAX1_5},
- {"TAX2_1", STREAMED_SOUND_MISSION_TAX2_1}, {"TAX2_2", STREAMED_SOUND_MISSION_TAX2_2}, {"TAX2_3", STREAMED_SOUND_MISSION_TAX2_3},
- {"TAX2_4", STREAMED_SOUND_MISSION_TAX2_4}, {"TAX2_5", STREAMED_SOUND_MISSION_TAX2_5}, {"TAX2_6", STREAMED_SOUND_MISSION_TAX2_6},
- {"TAX2_7", STREAMED_SOUND_MISSION_TAX2_7}, {"TAX3_1", STREAMED_SOUND_MISSION_TAX3_1}, {"TAX3_2", STREAMED_SOUND_MISSION_TAX3_2},
- {"TAX3_3", STREAMED_SOUND_MISSION_TAX3_3}, {"TAX3_4", STREAMED_SOUND_MISSION_TAX3_4}, {"TAX3_5", STREAMED_SOUND_MISSION_TAX3_5},
- {"TEX1_1", STREAMED_SOUND_MISSION_TEX1_1}, {"TEX1_2", STREAMED_SOUND_MISSION_TEX1_2}, {"TEX1_3", STREAMED_SOUND_MISSION_TEX1_3},
- {"TEX1_4", STREAMED_SOUND_MISSION_TEX1_4}, {"TEX1_5", STREAMED_SOUND_MISSION_TEX1_5}, {"TEX1_6", STREAMED_SOUND_MISSION_TEX1_6},
- {"TEX2_1", STREAMED_SOUND_MISSION_TEX2_1}, {"TEX3_1", STREAMED_SOUND_MISSION_TEX3_1}, {"TEX3_2", STREAMED_SOUND_MISSION_TEX3_2},
- {"TEX3_3", STREAMED_SOUND_MISSION_TEX3_3}, {"TEX3_4", STREAMED_SOUND_MISSION_TEX3_4}, {"TEX3_5", STREAMED_SOUND_MISSION_TEX3_5},
- {"TEX3_6", STREAMED_SOUND_MISSION_TEX3_6}, {"TEX3_7", STREAMED_SOUND_MISSION_TEX3_7}, {"TEX3_8", STREAMED_SOUND_MISSION_TEX3_8},
- {"PHIL1_2", STREAMED_SOUND_MISSION_PHIL1_2}, {"PHIL1_3", STREAMED_SOUND_MISSION_PHIL1_3}, {"PHIL2_1", STREAMED_SOUND_MISSION_PHIL2_1},
- {"PHIL2_2", STREAMED_SOUND_MISSION_PHIL2_2}, {"PHIL2_3", STREAMED_SOUND_MISSION_PHIL2_3}, {"PHIL2_4", STREAMED_SOUND_MISSION_PHIL2_4},
- {"PHIL2_5", STREAMED_SOUND_MISSION_PHIL2_5}, {"PHIL2_6", STREAMED_SOUND_MISSION_PHIL2_6}, {"PHIL2_7", STREAMED_SOUND_MISSION_PHIL2_7},
- {"PHIL2_8", STREAMED_SOUND_MISSION_PHIL2_8}, {"PHIL2_9", STREAMED_SOUND_MISSION_PHIL2_9}, {"PHIL210", STREAMED_SOUND_MISSION_PHIL210},
- {"PHIL211", STREAMED_SOUND_MISSION_PHIL211}, {"BIKE1_1", STREAMED_SOUND_MISSION_BIKE1_1}, {"BIKE1_2", STREAMED_SOUND_MISSION_BIKE1_2},
- {"BIKE1_3", STREAMED_SOUND_MISSION_BIKE1_3}, {"ROK1_1a", STREAMED_SOUND_MISSION_ROK1_1A}, {"ROK1_1b", STREAMED_SOUND_MISSION_ROK1_1B},
- {"ROK1_5", STREAMED_SOUND_MISSION_ROK1_5}, {"ROK1_6", STREAMED_SOUND_MISSION_ROK1_6}, {"ROK1_7", STREAMED_SOUND_MISSION_ROK1_7},
- {"ROK1_8", STREAMED_SOUND_MISSION_ROK1_8}, {"ROK1_9", STREAMED_SOUND_MISSION_ROK1_9}, {"PSYCH_1", STREAMED_SOUND_MISSION_PSYCH_1},
- {"PSYCH_2", STREAMED_SOUND_MISSION_PSYCH_2}, {"ROK2_01", STREAMED_SOUND_MISSION_ROK2_01}, {"ROK3_1", STREAMED_SOUND_MISSION_ROK3_1},
- {"ROK3_2", STREAMED_SOUND_MISSION_ROK3_2}, {"ROK3_3", STREAMED_SOUND_MISSION_ROK3_3}, {"ROK3_4", STREAMED_SOUND_MISSION_ROK3_4},
- {"ROK3_5", STREAMED_SOUND_MISSION_ROK3_5}, {"ROK3_6", STREAMED_SOUND_MISSION_ROK3_6}, {"ROK3_7", STREAMED_SOUND_MISSION_ROK3_7},
- {"ROK3_8", STREAMED_SOUND_MISSION_ROK3_8}, {"ROK3_9", STREAMED_SOUND_MISSION_ROK3_9}, {"ROK3_10", STREAMED_SOUND_MISSION_ROK3_10},
- {"ROK3_11", STREAMED_SOUND_MISSION_ROK3_11}, {"ROK3_12", STREAMED_SOUND_MISSION_ROK3_12}, {"ROK3_13", STREAMED_SOUND_MISSION_ROK3_13},
- {"ROK3_14", STREAMED_SOUND_MISSION_ROK3_14}, {"ROK3_15", STREAMED_SOUND_MISSION_ROK3_15}, {"ROK3_16", STREAMED_SOUND_MISSION_ROK3_16},
- {"ROK3_17", STREAMED_SOUND_MISSION_ROK3_17}, {"ROK3_18", STREAMED_SOUND_MISSION_ROK3_18}, {"ROK3_19", STREAMED_SOUND_MISSION_ROK3_19},
- {"ROK3_20", STREAMED_SOUND_MISSION_ROK3_20}, {"ROK3_21", STREAMED_SOUND_MISSION_ROK3_21}, {"ROK3_22", STREAMED_SOUND_MISSION_ROK3_22},
- {"ROK3_23", STREAMED_SOUND_MISSION_ROK3_23}, {"ROK3_24", STREAMED_SOUND_MISSION_ROK3_24}, {"ROK3_25", STREAMED_SOUND_MISSION_ROK3_25},
- {"ROK3_26", STREAMED_SOUND_MISSION_ROK3_26}, {"ROK3_27", STREAMED_SOUND_MISSION_ROK3_27}, {"ROK3_62", STREAMED_SOUND_MISSION_ROK3_62},
- {"ROK3_63", STREAMED_SOUND_MISSION_ROK3_63}, {"ROK3_64", STREAMED_SOUND_MISSION_ROK3_64}, {"ROK3_65", STREAMED_SOUND_MISSION_ROK3_65},
- {"ROK3_66", STREAMED_SOUND_MISSION_ROK3_66}, {"ROK3_67", STREAMED_SOUND_MISSION_ROK3_67}, {"ROK3_68", STREAMED_SOUND_MISSION_ROK3_68},
- {"ROK3_69", STREAMED_SOUND_MISSION_ROK3_69}, {"ROK3_70", STREAMED_SOUND_MISSION_ROK3_70}, {"ROK3_71", STREAMED_SOUND_MISSION_ROK3_71},
- {"ROK3_73", STREAMED_SOUND_MISSION_ROK3_73}, {"HAT_1a", STREAMED_SOUND_MISSION_HAT_1A}, {"intro1", STREAMED_SOUND_MISSION_INTRO1},
- {"intro2", STREAMED_SOUND_MISSION_INTRO2}, {"intro3", STREAMED_SOUND_MISSION_INTRO3}, {"intro4", STREAMED_SOUND_MISSION_INTRO4},
- {"CUB1_1", STREAMED_SOUND_MISSION_CUB1_1}, {"CUB1_2", STREAMED_SOUND_MISSION_CUB1_2}, {"CUB1_3", STREAMED_SOUND_MISSION_CUB1_3},
- {"CUB1_4", STREAMED_SOUND_MISSION_CUB1_4}, {"CUB1_5", STREAMED_SOUND_MISSION_CUB1_5}, {"CUB1_6", STREAMED_SOUND_MISSION_CUB1_6},
- {"CUB1_7", STREAMED_SOUND_MISSION_CUB1_7}, {"CUB1_8", STREAMED_SOUND_MISSION_CUB1_8}, {"CUB1_9", STREAMED_SOUND_MISSION_CUB1_9},
- {"CUB1_10", STREAMED_SOUND_MISSION_CUB1_10}, {"CUB2_1", STREAMED_SOUND_MISSION_CUB2_1}, {"CUB2_2", STREAMED_SOUND_MISSION_CUB2_2},
- {"CUB2_3a", STREAMED_SOUND_MISSION_CUB2_3A}, {"CUB2_3b", STREAMED_SOUND_MISSION_CUB2_3B}, {"CUB2_3c", STREAMED_SOUND_MISSION_CUB2_3C},
- {"CUB2_4a", STREAMED_SOUND_MISSION_CUB2_4A}, {"CUB2_5", STREAMED_SOUND_MISSION_CUB2_5}, {"CUB2_6", STREAMED_SOUND_MISSION_CUB2_6},
- {"CUB2_7", STREAMED_SOUND_MISSION_CUB2_7}, {"CUB2_8", STREAMED_SOUND_MISSION_CUB2_8}, {"CUB2_9", STREAMED_SOUND_MISSION_CUB2_9},
- {"CUB2_10", STREAMED_SOUND_MISSION_CUB2_10}, {"CUB2_11", STREAMED_SOUND_MISSION_CUB2_11}, {"CUB3_1", STREAMED_SOUND_MISSION_CUB3_1},
- {"CUB3_2", STREAMED_SOUND_MISSION_CUB3_2}, {"CUB3_3", STREAMED_SOUND_MISSION_CUB3_3}, {"CUB3_4", STREAMED_SOUND_MISSION_CUB3_4},
- {"CUB4_1", STREAMED_SOUND_MISSION_CUB4_1}, {"CUB4_2", STREAMED_SOUND_MISSION_CUB4_2}, {"CUB4_3", STREAMED_SOUND_MISSION_CUB4_3},
- {"CUB4_4", STREAMED_SOUND_MISSION_CUB4_4}, {"CUB4_5", STREAMED_SOUND_MISSION_CUB4_5}, {"CUB4_5A", STREAMED_SOUND_MISSION_CUB4_5A},
- {"CUB4_6", STREAMED_SOUND_MISSION_CUB4_6}, {"CUB4_7", STREAMED_SOUND_MISSION_CUB4_7}, {"CUB4_8", STREAMED_SOUND_MISSION_CUB4_8},
- {"CUB4_9", STREAMED_SOUND_MISSION_CUB4_9}, {"CUB4_10", STREAMED_SOUND_MISSION_CUB4_10}, {"CUB4_11", STREAMED_SOUND_MISSION_CUB4_11},
- {"CUB4_12", STREAMED_SOUND_MISSION_CUB4_12}, {"CUB4_13", STREAMED_SOUND_MISSION_CUB4_13}, {"CUB4_14", STREAMED_SOUND_MISSION_CUB4_14},
- {"CUB4_15", STREAMED_SOUND_MISSION_CUB4_15}, {"CUB4_16", STREAMED_SOUND_MISSION_CUB4_16}, {"golf_1", STREAMED_SOUND_MISSION_GOLF_1},
- {"golf_2", STREAMED_SOUND_MISSION_GOLF_2}, {"golf_3", STREAMED_SOUND_MISSION_GOLF_3}, {"bar_1", STREAMED_SOUND_MISSION_BAR_1},
- {"bar_2", STREAMED_SOUND_MISSION_BAR_2}, {"bar_3", STREAMED_SOUND_MISSION_BAR_3}, {"bar_4", STREAMED_SOUND_MISSION_BAR_4},
- {"bar_5", STREAMED_SOUND_MISSION_BAR_5}, {"bar_6", STREAMED_SOUND_MISSION_BAR_6}, {"bar_7", STREAMED_SOUND_MISSION_BAR_7},
- {"bar_8", STREAMED_SOUND_MISSION_BAR_8}, {"strip_1", STREAMED_SOUND_MISSION_STRIP_1}, {"strip_2", STREAMED_SOUND_MISSION_STRIP_2},
- {"strip_3", STREAMED_SOUND_MISSION_STRIP_3}, {"strip_4", STREAMED_SOUND_MISSION_STRIP_4}, {"strip_5", STREAMED_SOUND_MISSION_STRIP_5},
- {"strip_6", STREAMED_SOUND_MISSION_STRIP_6}, {"strip_7", STREAMED_SOUND_MISSION_STRIP_7}, {"strip_8", STREAMED_SOUND_MISSION_STRIP_8},
- {"strip_9", STREAMED_SOUND_MISSION_STRIP_9}, {"star_1", STREAMED_SOUND_MISSION_STAR_1}, {"star_2", STREAMED_SOUND_MISSION_STAR_2},
- {"star_3", STREAMED_SOUND_MISSION_STAR_3}, {"star_4", STREAMED_SOUND_MISSION_STAR_4}, {"mob_01a", STREAMED_SOUND_MISSION_MOB_01A},
- {"mob_01b", STREAMED_SOUND_MISSION_MOB_01B}, {"mob_01c", STREAMED_SOUND_MISSION_MOB_01C}, {"mob_02a", STREAMED_SOUND_MISSION_MOB_02A},
- {"mob_02b", STREAMED_SOUND_MISSION_MOB_02B}, {"mob_02c", STREAMED_SOUND_MISSION_MOB_02C}, {"mob_03a", STREAMED_SOUND_MISSION_MOB_03A},
- {"mob_03b", STREAMED_SOUND_MISSION_MOB_03B}, {"mob_03c", STREAMED_SOUND_MISSION_MOB_03C}, {"mob_03d", STREAMED_SOUND_MISSION_MOB_03D},
- {"mob_03e", STREAMED_SOUND_MISSION_MOB_03E}, {"shark_1", STREAMED_SOUND_MISSION_SHARK_1}, {"shark_2", STREAMED_SOUND_MISSION_SHARK_2},
- {"shark_3", STREAMED_SOUND_MISSION_SHARK_3}, {"shark_4", STREAMED_SOUND_MISSION_SHARK_4}, {"shark_5", STREAMED_SOUND_MISSION_SHARK_5},
- {"mob_04a", STREAMED_SOUND_MISSION_MOB_04A}, {"mob_04b", STREAMED_SOUND_MISSION_MOB_04B}, {"mob_04c", STREAMED_SOUND_MISSION_MOB_04C},
- {"mob_04d", STREAMED_SOUND_MISSION_MOB_04D}, {"mob_05a", STREAMED_SOUND_MISSION_MOB_05A}, {"mob_05b", STREAMED_SOUND_MISSION_MOB_05B},
- {"mob_05c", STREAMED_SOUND_MISSION_MOB_05C}, {"mob_05d", STREAMED_SOUND_MISSION_MOB_05D}, {"mob_06a", STREAMED_SOUND_MISSION_MOB_06A},
- {"mob_06b", STREAMED_SOUND_MISSION_MOB_06B}, {"mob_06c", STREAMED_SOUND_MISSION_MOB_06C}, {"mob_07a", STREAMED_SOUND_MISSION_MOB_07A},
- {"mob_07b", STREAMED_SOUND_MISSION_MOB_07B}, {"mob_08a", STREAMED_SOUND_MISSION_MOB_08A}, {"mob_08b", STREAMED_SOUND_MISSION_MOB_08B},
- {"mob_08c", STREAMED_SOUND_MISSION_MOB_08C}, {"mob_08d", STREAMED_SOUND_MISSION_MOB_08D}, {"mob_08e", STREAMED_SOUND_MISSION_MOB_08E},
- {"mob_08f", STREAMED_SOUND_MISSION_MOB_08F}, {"mob_08g", STREAMED_SOUND_MISSION_MOB_08G}, {"mob_09a", STREAMED_SOUND_MISSION_MOB_09A},
- {"mob_09b", STREAMED_SOUND_MISSION_MOB_09B}, {"mob_09c", STREAMED_SOUND_MISSION_MOB_09C}, {"mob_09d", STREAMED_SOUND_MISSION_MOB_09D},
- {"mob_09e", STREAMED_SOUND_MISSION_MOB_09E}, {"mob_09f", STREAMED_SOUND_MISSION_MOB_09F}, {"mob_10a", STREAMED_SOUND_MISSION_MOB_10A},
- {"mob_10b", STREAMED_SOUND_MISSION_MOB_10B}, {"mob_10c", STREAMED_SOUND_MISSION_MOB_10C}, {"mob_10d", STREAMED_SOUND_MISSION_MOB_10D},
- {"mob_10e", STREAMED_SOUND_MISSION_MOB_10E}, {"mob_11a", STREAMED_SOUND_MISSION_MOB_11A}, {"mob_11b", STREAMED_SOUND_MISSION_MOB_11B},
- {"mob_11c", STREAMED_SOUND_MISSION_MOB_11C}, {"mob_11d", STREAMED_SOUND_MISSION_MOB_11D}, {"mob_11e", STREAMED_SOUND_MISSION_MOB_11E},
- {"mob_11f", STREAMED_SOUND_MISSION_MOB_11F}, {"mob_14a", STREAMED_SOUND_MISSION_MOB_14A}, {"mob_14b", STREAMED_SOUND_MISSION_MOB_14B},
- {"mob_14c", STREAMED_SOUND_MISSION_MOB_14C}, {"mob_14d", STREAMED_SOUND_MISSION_MOB_14D}, {"mob_14e", STREAMED_SOUND_MISSION_MOB_14E},
- {"mob_14f", STREAMED_SOUND_MISSION_MOB_14F}, {"mob_14g", STREAMED_SOUND_MISSION_MOB_14G}, {"mob_14h", STREAMED_SOUND_MISSION_MOB_14H},
- {"mob_16a", STREAMED_SOUND_MISSION_MOB_16A}, {"mob_16b", STREAMED_SOUND_MISSION_MOB_16B}, {"mob_16c", STREAMED_SOUND_MISSION_MOB_16C},
- {"mob_16d", STREAMED_SOUND_MISSION_MOB_16D}, {"mob_16e", STREAMED_SOUND_MISSION_MOB_16E}, {"mob_16f", STREAMED_SOUND_MISSION_MOB_16F},
- {"mob_16g", STREAMED_SOUND_MISSION_MOB_16G}, {"mob_17a", STREAMED_SOUND_MISSION_MOB_17A}, {"mob_17b", STREAMED_SOUND_MISSION_MOB_17B},
- {"mob_17c", STREAMED_SOUND_MISSION_MOB_17C}, {"mob_17d", STREAMED_SOUND_MISSION_MOB_17D}, {"mob_17e", STREAMED_SOUND_MISSION_MOB_17E},
- {"mob_17g", STREAMED_SOUND_MISSION_MOB_17G}, {"mob_17h", STREAMED_SOUND_MISSION_MOB_17H}, {"mob_17i", STREAMED_SOUND_MISSION_MOB_17I},
- {"mob_17j", STREAMED_SOUND_MISSION_MOB_17J}, {"mob_17k", STREAMED_SOUND_MISSION_MOB_17K}, {"mob_17l", STREAMED_SOUND_MISSION_MOB_17L},
- {"mob_18a", STREAMED_SOUND_MISSION_MOB_18A}, {"mob_18b", STREAMED_SOUND_MISSION_MOB_18B}, {"mob_18c", STREAMED_SOUND_MISSION_MOB_18C},
- {"mob_18d", STREAMED_SOUND_MISSION_MOB_18D}, {"mob_18e", STREAMED_SOUND_MISSION_MOB_18E}, {"mob_18f", STREAMED_SOUND_MISSION_MOB_18F},
- {"mob_18g", STREAMED_SOUND_MISSION_MOB_18G}, {"mob_20a", STREAMED_SOUND_MISSION_MOB_20A}, {"mob_20b", STREAMED_SOUND_MISSION_MOB_20B},
- {"mob_20c", STREAMED_SOUND_MISSION_MOB_20C}, {"mob_20d", STREAMED_SOUND_MISSION_MOB_20D}, {"mob_20e", STREAMED_SOUND_MISSION_MOB_20E},
- {"mob_24a", STREAMED_SOUND_MISSION_MOB_24A}, {"mob_24b", STREAMED_SOUND_MISSION_MOB_24B}, {"mob_24c", STREAMED_SOUND_MISSION_MOB_24C},
- {"mob_24d", STREAMED_SOUND_MISSION_MOB_24D}, {"mob_24e", STREAMED_SOUND_MISSION_MOB_24E}, {"mob_24f", STREAMED_SOUND_MISSION_MOB_24F},
- {"mob_24g", STREAMED_SOUND_MISSION_MOB_24G}, {"mob_24h", STREAMED_SOUND_MISSION_MOB_24H}, {"mob_25a", STREAMED_SOUND_MISSION_MOB_25A},
- {"mob_25b", STREAMED_SOUND_MISSION_MOB_25B}, {"mob_25c", STREAMED_SOUND_MISSION_MOB_25C}, {"mob_25d", STREAMED_SOUND_MISSION_MOB_25D},
- {"mob_26a", STREAMED_SOUND_MISSION_MOB_26A}, {"mob_26b", STREAMED_SOUND_MISSION_MOB_26B}, {"mob_26c", STREAMED_SOUND_MISSION_MOB_26C},
- {"mob_26d", STREAMED_SOUND_MISSION_MOB_26D}, {"mob_26e", STREAMED_SOUND_MISSION_MOB_26E}, {"mob_29a", STREAMED_SOUND_MISSION_MOB_29A},
- {"mob_29b", STREAMED_SOUND_MISSION_MOB_29B}, {"mob_29c", STREAMED_SOUND_MISSION_MOB_29C}, {"mob_29d", STREAMED_SOUND_MISSION_MOB_29D},
- {"mob_29e", STREAMED_SOUND_MISSION_MOB_29E}, {"mob_29f", STREAMED_SOUND_MISSION_MOB_29F}, {"mob_29g", STREAMED_SOUND_MISSION_MOB_29G},
- {"mob_30a", STREAMED_SOUND_MISSION_MOB_30A}, {"mob_30b", STREAMED_SOUND_MISSION_MOB_30B}, {"mob_30c", STREAMED_SOUND_MISSION_MOB_30C},
- {"mob_30d", STREAMED_SOUND_MISSION_MOB_30D}, {"mob_30e", STREAMED_SOUND_MISSION_MOB_30E}, {"mob_30f", STREAMED_SOUND_MISSION_MOB_30F},
- {"mob_33a", STREAMED_SOUND_MISSION_MOB_33A}, {"mob_33b", STREAMED_SOUND_MISSION_MOB_33B}, {"mob_33c", STREAMED_SOUND_MISSION_MOB_33C},
- {"mob_33d", STREAMED_SOUND_MISSION_MOB_33D}, {"mob_34a", STREAMED_SOUND_MISSION_MOB_34A}, {"mob_34b", STREAMED_SOUND_MISSION_MOB_34B},
- {"mob_34c", STREAMED_SOUND_MISSION_MOB_34C}, {"mob_34d", STREAMED_SOUND_MISSION_MOB_34D}, {"mob_35a", STREAMED_SOUND_MISSION_MOB_35A},
- {"mob_35b", STREAMED_SOUND_MISSION_MOB_35B}, {"mob_35c", STREAMED_SOUND_MISSION_MOB_35C}, {"mob_35d", STREAMED_SOUND_MISSION_MOB_35D},
- {"mob_36a", STREAMED_SOUND_MISSION_MOB_36A}, {"mob_36b", STREAMED_SOUND_MISSION_MOB_36B}, {"mob_36c", STREAMED_SOUND_MISSION_MOB_36C},
- {"mob_40a", STREAMED_SOUND_MISSION_MOB_40A}, {"mob_40b", STREAMED_SOUND_MISSION_MOB_40B}, {"mob_40c", STREAMED_SOUND_MISSION_MOB_40C},
- {"mob_40d", STREAMED_SOUND_MISSION_MOB_40D}, {"mob_40e", STREAMED_SOUND_MISSION_MOB_40E}, {"mob_40f", STREAMED_SOUND_MISSION_MOB_40F},
- {"mob_40g", STREAMED_SOUND_MISSION_MOB_40G}, {"mob_40h", STREAMED_SOUND_MISSION_MOB_40H}, {"mob_40i", STREAMED_SOUND_MISSION_MOB_40I},
- {"mob_41a", STREAMED_SOUND_MISSION_MOB_41A}, {"mob_41b", STREAMED_SOUND_MISSION_MOB_41B}, {"mob_41c", STREAMED_SOUND_MISSION_MOB_41C},
- {"mob_41d", STREAMED_SOUND_MISSION_MOB_41D}, {"mob_41e", STREAMED_SOUND_MISSION_MOB_41E}, {"mob_41f", STREAMED_SOUND_MISSION_MOB_41F},
- {"mob_41g", STREAMED_SOUND_MISSION_MOB_41G}, {"mob_41h", STREAMED_SOUND_MISSION_MOB_41H}, {"mob_42a", STREAMED_SOUND_MISSION_MOB_42A},
- {"mob_42b", STREAMED_SOUND_MISSION_MOB_42B}, {"mob_42c", STREAMED_SOUND_MISSION_MOB_42C}, {"mob_42d", STREAMED_SOUND_MISSION_MOB_42D},
- {"mob_42e", STREAMED_SOUND_MISSION_MOB_42E}, {"mob_43a", STREAMED_SOUND_MISSION_MOB_43A}, {"mob_43b", STREAMED_SOUND_MISSION_MOB_43B},
- {"mob_43c", STREAMED_SOUND_MISSION_MOB_43C}, {"mob_43d", STREAMED_SOUND_MISSION_MOB_43D}, {"mob_43e", STREAMED_SOUND_MISSION_MOB_43E},
- {"mob_43f", STREAMED_SOUND_MISSION_MOB_43F}, {"mob_43g", STREAMED_SOUND_MISSION_MOB_43G}, {"mob_43h", STREAMED_SOUND_MISSION_MOB_43H},
- {"mob_45a", STREAMED_SOUND_MISSION_MOB_45A}, {"mob_45b", STREAMED_SOUND_MISSION_MOB_45B}, {"mob_45c", STREAMED_SOUND_MISSION_MOB_45C},
- {"mob_45d", STREAMED_SOUND_MISSION_MOB_45D}, {"mob_45e", STREAMED_SOUND_MISSION_MOB_45E}, {"mob_45f", STREAMED_SOUND_MISSION_MOB_45F},
- {"mob_45g", STREAMED_SOUND_MISSION_MOB_45G}, {"mob_45h", STREAMED_SOUND_MISSION_MOB_45H}, {"mob_45i", STREAMED_SOUND_MISSION_MOB_45I},
- {"mob_45j", STREAMED_SOUND_MISSION_MOB_45J}, {"mob_45k", STREAMED_SOUND_MISSION_MOB_45K}, {"mob_45l", STREAMED_SOUND_MISSION_MOB_45L},
- {"mob_45m", STREAMED_SOUND_MISSION_MOB_45M}, {"mob_45n", STREAMED_SOUND_MISSION_MOB_45N}, {"mob_46a", STREAMED_SOUND_MISSION_MOB_46A},
- {"mob_46b", STREAMED_SOUND_MISSION_MOB_46B}, {"mob_46c", STREAMED_SOUND_MISSION_MOB_46C}, {"mob_46d", STREAMED_SOUND_MISSION_MOB_46D},
- {"mob_46e", STREAMED_SOUND_MISSION_MOB_46E}, {"mob_46f", STREAMED_SOUND_MISSION_MOB_46F}, {"mob_46g", STREAMED_SOUND_MISSION_MOB_46G},
- {"mob_46h", STREAMED_SOUND_MISSION_MOB_46H}, {"mob_47a", STREAMED_SOUND_MISSION_MOB_47A}, {"mob_52a", STREAMED_SOUND_MISSION_MOB_52A},
- {"mob_52b", STREAMED_SOUND_MISSION_MOB_52B}, {"mob_52c", STREAMED_SOUND_MISSION_MOB_52C}, {"mob_52d", STREAMED_SOUND_MISSION_MOB_52D},
- {"mob_52e", STREAMED_SOUND_MISSION_MOB_52E}, {"mob_52f", STREAMED_SOUND_MISSION_MOB_52F}, {"mob_52g", STREAMED_SOUND_MISSION_MOB_52G},
- {"mob_52h", STREAMED_SOUND_MISSION_MOB_52H}, {"mob_54a", STREAMED_SOUND_MISSION_MOB_54A}, {"mob_54b", STREAMED_SOUND_MISSION_MOB_54B},
- {"mob_54c", STREAMED_SOUND_MISSION_MOB_54C}, {"mob_54d", STREAMED_SOUND_MISSION_MOB_54D}, {"mob_54e", STREAMED_SOUND_MISSION_MOB_54E},
- {"mob_55a", STREAMED_SOUND_MISSION_MOB_55A}, {"mob_55b", STREAMED_SOUND_MISSION_MOB_55B}, {"mob_55c", STREAMED_SOUND_MISSION_MOB_55C},
- {"mob_55d", STREAMED_SOUND_MISSION_MOB_55D}, {"mob_55e", STREAMED_SOUND_MISSION_MOB_55E}, {"mob_55f", STREAMED_SOUND_MISSION_MOB_55F},
- {"mob_56a", STREAMED_SOUND_MISSION_MOB_56A}, {"mob_56b", STREAMED_SOUND_MISSION_MOB_56B}, {"mob_56c", STREAMED_SOUND_MISSION_MOB_56C},
- {"mob_56d", STREAMED_SOUND_MISSION_MOB_56D}, {"mob_56e", STREAMED_SOUND_MISSION_MOB_56E}, {"mob_56f", STREAMED_SOUND_MISSION_MOB_56F},
- {"mob_57a", STREAMED_SOUND_MISSION_MOB_57A}, {"mob_57b", STREAMED_SOUND_MISSION_MOB_57B}, {"mob_57c", STREAMED_SOUND_MISSION_MOB_57C},
- {"mob_57d", STREAMED_SOUND_MISSION_MOB_57D}, {"mob_57e", STREAMED_SOUND_MISSION_MOB_57E}, {"mob_58a", STREAMED_SOUND_MISSION_MOB_58A},
- {"mob_58b", STREAMED_SOUND_MISSION_MOB_58B}, {"mob_58c", STREAMED_SOUND_MISSION_MOB_58C}, {"mob_58d", STREAMED_SOUND_MISSION_MOB_58D},
- {"mob_58e", STREAMED_SOUND_MISSION_MOB_58E}, {"mob_58f", STREAMED_SOUND_MISSION_MOB_58F}, {"mob_58g", STREAMED_SOUND_MISSION_MOB_58G},
- {"mob_61a", STREAMED_SOUND_MISSION_MOB_61A}, {"mob_61b", STREAMED_SOUND_MISSION_MOB_61B}, {"mob_62a", STREAMED_SOUND_MISSION_MOB_62A},
- {"mob_62b", STREAMED_SOUND_MISSION_MOB_62B}, {"mob_62c", STREAMED_SOUND_MISSION_MOB_62C}, {"mob_62d", STREAMED_SOUND_MISSION_MOB_62D},
- {"mob_63a", STREAMED_SOUND_MISSION_MOB_63A}, {"mob_63b", STREAMED_SOUND_MISSION_MOB_63B}, {"mob_63c", STREAMED_SOUND_MISSION_MOB_63C},
- {"mob_63d", STREAMED_SOUND_MISSION_MOB_63D}, {"mob_63e", STREAMED_SOUND_MISSION_MOB_63E}, {"mob_63f", STREAMED_SOUND_MISSION_MOB_63F},
- {"mob_63g", STREAMED_SOUND_MISSION_MOB_63G}, {"mob_63h", STREAMED_SOUND_MISSION_MOB_63H}, {"mob_63i", STREAMED_SOUND_MISSION_MOB_63I},
- {"mob_63j", STREAMED_SOUND_MISSION_MOB_63J}, {"mob_66a", STREAMED_SOUND_MISSION_MOB_66A}, {"mob_66b", STREAMED_SOUND_MISSION_MOB_66B},
- {"mob_68a", STREAMED_SOUND_MISSION_MOB_68A}, {"mob_68b", STREAMED_SOUND_MISSION_MOB_68B}, {"mob_68c", STREAMED_SOUND_MISSION_MOB_68C},
- {"mob_68d", STREAMED_SOUND_MISSION_MOB_68D}, {"mob_70a", STREAMED_SOUND_MISSION_MOB_70A}, {"mob_70b", STREAMED_SOUND_MISSION_MOB_70B},
- {"mob_71a", STREAMED_SOUND_MISSION_MOB_71A}, {"mob_71b", STREAMED_SOUND_MISSION_MOB_71B}, {"mob_71c", STREAMED_SOUND_MISSION_MOB_71C},
- {"mob_71d", STREAMED_SOUND_MISSION_MOB_71D}, {"mob_71e", STREAMED_SOUND_MISSION_MOB_71E}, {"mob_71f", STREAMED_SOUND_MISSION_MOB_71F},
- {"mob_71g", STREAMED_SOUND_MISSION_MOB_71G}, {"mob_71h", STREAMED_SOUND_MISSION_MOB_71H}, {"mob_71i", STREAMED_SOUND_MISSION_MOB_71I},
- {"mob_71j", STREAMED_SOUND_MISSION_MOB_71J}, {"mob_71k", STREAMED_SOUND_MISSION_MOB_71K}, {"mob_71l", STREAMED_SOUND_MISSION_MOB_71L},
- {"mob_71m", STREAMED_SOUND_MISSION_MOB_71M}, {"mob_71n", STREAMED_SOUND_MISSION_MOB_71N}, {"mob_72a", STREAMED_SOUND_MISSION_MOB_72A},
- {"mob_72b", STREAMED_SOUND_MISSION_MOB_72B}, {"mob_72c", STREAMED_SOUND_MISSION_MOB_72C}, {"mob_72d", STREAMED_SOUND_MISSION_MOB_72D},
- {"mob_72e", STREAMED_SOUND_MISSION_MOB_72E}, {"mob_72f", STREAMED_SOUND_MISSION_MOB_72F}, {"mob_72g", STREAMED_SOUND_MISSION_MOB_72G},
- {"mob_73a", STREAMED_SOUND_MISSION_MOB_73A}, {"mob_73c", STREAMED_SOUND_MISSION_MOB_73C}, {"mob_73d", STREAMED_SOUND_MISSION_MOB_73D},
- {"mob_73f", STREAMED_SOUND_MISSION_MOB_73F}, {"mob_73g", STREAMED_SOUND_MISSION_MOB_73G}, {"mob_73i", STREAMED_SOUND_MISSION_MOB_73I},
- {"mob_95a", STREAMED_SOUND_MISSION_MOB_95A}, {"mob_96a", STREAMED_SOUND_MISSION_MOB_96A}, {"mob_98a", STREAMED_SOUND_MISSION_MOB_98A},
- {"mob_99a", STREAMED_SOUND_MISSION_MOB_99A}, {"job1_1b", STREAMED_SOUND_MISSION_JOB1_1B}, {"job1_1c", STREAMED_SOUND_MISSION_JOB1_1C},
- {"job1_1d", STREAMED_SOUND_MISSION_JOB1_1D}, {"job2_1b", STREAMED_SOUND_MISSION_JOB2_1B}, {"job2_2", STREAMED_SOUND_MISSION_JOB2_2},
- {"job2_3", STREAMED_SOUND_MISSION_JOB2_3}, {"job2_4", STREAMED_SOUND_MISSION_JOB2_4}, {"job2_5", STREAMED_SOUND_MISSION_JOB2_5},
- {"job2_6", STREAMED_SOUND_MISSION_JOB2_6}, {"job2_7", STREAMED_SOUND_MISSION_JOB2_7}, {"job2_8", STREAMED_SOUND_MISSION_JOB2_8},
- {"job2_9", STREAMED_SOUND_MISSION_JOB2_9}, {"job3_1", STREAMED_SOUND_MISSION_JOB3_1}, {"job3_2", STREAMED_SOUND_MISSION_JOB3_2},
- {"job3_3", STREAMED_SOUND_MISSION_JOB3_3}, {"job4_1", STREAMED_SOUND_MISSION_JOB4_1}, {"job4_2", STREAMED_SOUND_MISSION_JOB4_2},
- {"job4_3", STREAMED_SOUND_MISSION_JOB4_3}, {"job5_1", STREAMED_SOUND_MISSION_JOB5_1}, {"job5_2", STREAMED_SOUND_MISSION_JOB5_2},
- {"job5_3", STREAMED_SOUND_MISSION_JOB5_3}, {"bjm1_20", STREAMED_SOUND_MISSION_BJM1_20}, {"bjm1_4", STREAMED_SOUND_MISSION_BJM1_4},
- {"bjm1_5", STREAMED_SOUND_MISSION_BJM1_5}, {"merc_39", STREAMED_SOUND_MISSION_MERC_39}, {"mono_1", STREAMED_SOUND_MISSION_MONO_1},
- {"mono_2", STREAMED_SOUND_MISSION_MONO_2}, {"mono_3", STREAMED_SOUND_MISSION_MONO_3}, {"mono_4", STREAMED_SOUND_MISSION_MONO_4},
- {"mono_5", STREAMED_SOUND_MISSION_MONO_5}, {"mono_6", STREAMED_SOUND_MISSION_MONO_6}, {"mono_7", STREAMED_SOUND_MISSION_MONO_7},
- {"mono_8", STREAMED_SOUND_MISSION_MONO_8}, {"mono_9", STREAMED_SOUND_MISSION_MONO_9}, {"mono10", STREAMED_SOUND_MISSION_MONO10},
- {"mono11", STREAMED_SOUND_MISSION_MONO11}, {"mono12", STREAMED_SOUND_MISSION_MONO12}, {"mono13", STREAMED_SOUND_MISSION_MONO13},
- {"mono14", STREAMED_SOUND_MISSION_MONO14}, {"mono15", STREAMED_SOUND_MISSION_MONO15}, {"mono16", STREAMED_SOUND_MISSION_MONO16},
- {"fud_01", STREAMED_SOUND_MISSION_FUD_01}, {"fud_02", STREAMED_SOUND_MISSION_FUD_02}, {"fud_03", STREAMED_SOUND_MISSION_FUD_03},
- {"fud_04", STREAMED_SOUND_MISSION_FUD_04}, {"fud_05", STREAMED_SOUND_MISSION_FUD_05}, {"fud_06", STREAMED_SOUND_MISSION_FUD_06},
- {"fud_07", STREAMED_SOUND_MISSION_FUD_07}, {"fud_08", STREAMED_SOUND_MISSION_FUD_08}, {"fud_09", STREAMED_SOUND_MISSION_FUD_09},
- {"fud_10", STREAMED_SOUND_MISSION_FUD_10}, {"fud_11", STREAMED_SOUND_MISSION_FUD_11}, {"fud_12", STREAMED_SOUND_MISSION_FUD_12},
- {"fud_13", STREAMED_SOUND_MISSION_FUD_13}, {"fud_14", STREAMED_SOUND_MISSION_FUD_14}, {"fud_15", STREAMED_SOUND_MISSION_FUD_15},
- {"fud_16", STREAMED_SOUND_MISSION_FUD_16}, {"fud_17", STREAMED_SOUND_MISSION_FUD_17}, {"fud_18", STREAMED_SOUND_MISSION_FUD_18},
- {"fud_19", STREAMED_SOUND_MISSION_FUD_19}, {"fud_20", STREAMED_SOUND_MISSION_FUD_20}, {"burg_01", STREAMED_SOUND_MISSION_BURG_01},
- {"burg_02", STREAMED_SOUND_MISSION_BURG_02}, {"burg_03", STREAMED_SOUND_MISSION_BURG_03}, {"burg_04", STREAMED_SOUND_MISSION_BURG_04},
- {"burg_05", STREAMED_SOUND_MISSION_BURG_05}, {"burg_06", STREAMED_SOUND_MISSION_BURG_06}, {"burg_07", STREAMED_SOUND_MISSION_BURG_07},
- {"burg_08", STREAMED_SOUND_MISSION_BURG_08}, {"burg_09", STREAMED_SOUND_MISSION_BURG_09}, {"burg_10", STREAMED_SOUND_MISSION_BURG_10},
- {"burg_11", STREAMED_SOUND_MISSION_BURG_11}, {"burg_12", STREAMED_SOUND_MISSION_BURG_12}, {"crust01", STREAMED_SOUND_MISSION_CRUST01},
- {"crust02", STREAMED_SOUND_MISSION_CRUST02}, {"crust03", STREAMED_SOUND_MISSION_CRUST03}, {"crust04", STREAMED_SOUND_MISSION_CRUST04},
- {"crust05", STREAMED_SOUND_MISSION_CRUST05}, {"crust06", STREAMED_SOUND_MISSION_CRUST06}, {"crust07", STREAMED_SOUND_MISSION_CRUST07},
- {"crust08", STREAMED_SOUND_MISSION_CRUST08}, {"crust09", STREAMED_SOUND_MISSION_CRUST09}, {"band_01", STREAMED_SOUND_MISSION_BAND_01},
- {"band_02", STREAMED_SOUND_MISSION_BAND_02}, {"band_03", STREAMED_SOUND_MISSION_BAND_03}, {"band_04", STREAMED_SOUND_MISSION_BAND_04},
- {"band_05", STREAMED_SOUND_MISSION_BAND_05}, {"band_06", STREAMED_SOUND_MISSION_BAND_06}, {"band_07", STREAMED_SOUND_MISSION_BAND_07},
- {"band_08", STREAMED_SOUND_MISSION_BAND_08}, {"shaft01", STREAMED_SOUND_MISSION_SHAFT01}, {"shaft02", STREAMED_SOUND_MISSION_SHAFT02},
- {"shaft03", STREAMED_SOUND_MISSION_SHAFT03}, {"shaft04", STREAMED_SOUND_MISSION_SHAFT04}, {"shaft05", STREAMED_SOUND_MISSION_SHAFT05},
- {"shaft06", STREAMED_SOUND_MISSION_SHAFT06}, {"shaft07", STREAMED_SOUND_MISSION_SHAFT07}, {"shaft08", STREAMED_SOUND_MISSION_SHAFT08},
- {"piss_01", STREAMED_SOUND_MISSION_PISS_01}, {"piss_02", STREAMED_SOUND_MISSION_PISS_02}, {"piss_03", STREAMED_SOUND_MISSION_PISS_03},
- {"piss_04", STREAMED_SOUND_MISSION_PISS_04}, {"piss_05", STREAMED_SOUND_MISSION_PISS_05}, {"piss_06", STREAMED_SOUND_MISSION_PISS_06},
- {"piss_07", STREAMED_SOUND_MISSION_PISS_07}, {"piss_08", STREAMED_SOUND_MISSION_PISS_08}, {"piss_09", STREAMED_SOUND_MISSION_PISS_09},
- {"piss_10", STREAMED_SOUND_MISSION_PISS_10}, {"piss_11", STREAMED_SOUND_MISSION_PISS_11}, {"piss_12", STREAMED_SOUND_MISSION_PISS_12},
- {"piss_13", STREAMED_SOUND_MISSION_PISS_13}, {"piss_14", STREAMED_SOUND_MISSION_PISS_14}, {"piss_15", STREAMED_SOUND_MISSION_PISS_15},
- {"piss_16", STREAMED_SOUND_MISSION_PISS_16}, {"piss_17", STREAMED_SOUND_MISSION_PISS_17}, {"piss_18", STREAMED_SOUND_MISSION_PISS_18},
- {"piss_19", STREAMED_SOUND_MISSION_PISS_19}, {"gimme01", STREAMED_SOUND_MISSION_GIMME01}, {"gimme02", STREAMED_SOUND_MISSION_GIMME02},
- {"gimme03", STREAMED_SOUND_MISSION_GIMME03}, {"gimme04", STREAMED_SOUND_MISSION_GIMME04}, {"gimme05", STREAMED_SOUND_MISSION_GIMME05},
- {"gimme06", STREAMED_SOUND_MISSION_GIMME06}, {"gimme07", STREAMED_SOUND_MISSION_GIMME07}, {"gimme08", STREAMED_SOUND_MISSION_GIMME08},
- {"gimme09", STREAMED_SOUND_MISSION_GIMME09}, {"gimme10", STREAMED_SOUND_MISSION_GIMME10}, {"gimme11", STREAMED_SOUND_MISSION_GIMME11},
- {"gimme12", STREAMED_SOUND_MISSION_GIMME12}, {"gimme13", STREAMED_SOUND_MISSION_GIMME13}, {"gimme14", STREAMED_SOUND_MISSION_GIMME14},
- {"gimme15", STREAMED_SOUND_MISSION_GIMME15}, {"bust_01", STREAMED_SOUND_MISSION_BUST_01}, {"bust_02", STREAMED_SOUND_MISSION_BUST_02},
- {"bust_03", STREAMED_SOUND_MISSION_BUST_03}, {"bust_04", STREAMED_SOUND_MISSION_BUST_04}, {"bust_05", STREAMED_SOUND_MISSION_BUST_05},
- {"bust_06", STREAMED_SOUND_MISSION_BUST_06}, {"bust_07", STREAMED_SOUND_MISSION_BUST_07}, {"bust_08", STREAMED_SOUND_MISSION_BUST_08},
- {"bust_09", STREAMED_SOUND_MISSION_BUST_09}, {"bust_10", STREAMED_SOUND_MISSION_BUST_10}, {"bust_11", STREAMED_SOUND_MISSION_BUST_11},
- {"bust_12", STREAMED_SOUND_MISSION_BUST_12}, {"bust_13", STREAMED_SOUND_MISSION_BUST_13}, {"bust_14", STREAMED_SOUND_MISSION_BUST_14},
- {"bust_15", STREAMED_SOUND_MISSION_BUST_15}, {"bust_16", STREAMED_SOUND_MISSION_BUST_16}, {"bust_17", STREAMED_SOUND_MISSION_BUST_17},
- {"bust_18", STREAMED_SOUND_MISSION_BUST_18}, {"bust_19", STREAMED_SOUND_MISSION_BUST_19}, {"bust_20", STREAMED_SOUND_MISSION_BUST_20},
- {"bust_21", STREAMED_SOUND_MISSION_BUST_21}, {"bust_22", STREAMED_SOUND_MISSION_BUST_22}, {"bust_23", STREAMED_SOUND_MISSION_BUST_23},
- {"bust_24", STREAMED_SOUND_MISSION_BUST_24}, {"bust_25", STREAMED_SOUND_MISSION_BUST_25}, {"bust_26", STREAMED_SOUND_MISSION_BUST_26},
- {"bust_27", STREAMED_SOUND_MISSION_BUST_27}, {"bust_28", STREAMED_SOUND_MISSION_BUST_28}, {nil, 0} };
+ {"JDAISH2", SFX_JD_SHOCKED_2},
+ {"JDAICR2", SFX_JD_CRASH_CAR_2},
+ {"JDAICR1", SFX_JD_CRASH_CAR_1},
+ {"MHAIJC1", SFX_MICKEY_JACKED_CAR_1},
+ {"JDAICR3", SFX_JD_CRASH_CAR_3},
+ {"CSHUTR", SFX_CSHUTR},
+ {"DRKNOCK", SFX_DRKNOCK},
+ {"NEDS4CA", SFX_NEDS4CA},
+ {"RUNPAST", SFX_RUNPAST},
+ {"LEAR", SFX_LEAR},
+ {"TING", SFX_TING},
+ {"CLICK", SFX_CLICK},
+ {"BBell", SFX_BRIDGE_BELL},
+ {"CHOP_1", SFX_CHOP_1},
+ {"CHOP_2", SFX_CHOP_2},
+ {"MAC4_CM", SFX_MAC4_CM},
+ {"MAC4_CN", SFX_MAC4_CN},
+ {"MAC4_CO", SFX_MAC4_CO},
+ {"MAC4_CP", SFX_MAC4_CP},
+ {"MAC4_CQ", SFX_MAC4_CQ},
+ {"MAC4_CR", SFX_MAC4_CR},
+ {"MAC4_CS", SFX_MAC4_CS},
+ {"SBell", SFX_SHOPBELL},
+ {"PROSCR1", SFX_PROSTITUTE_SHOCKED_2},
+ {"PROSCR2", SFX_PROSTITUTE_SHOCKED_3},
+ {"COLT_45", SFX_COLT_45},
+ {"SAL4_AJ", SFX_SAL4_AJ},
+ {"JD_SLPN", SFX_JD_SLPN},
+ {"MDON2AH", SFX_MDON2AH},
+ {"SAL4_EA", SFX_SAL4_EA},
+ {"mobring", SFX_SFX_RING},
+ {"pagring", SFX_SFX_PAGER_RING},
+ {"carrev", SFX_SFX_WILLIE_CAR_REV},
+ {"bikerev", SFX_SFX_WILLIE_BIKE_REV},
+ {"liftop", SFX_SFX_LIFT_OPEN},
+ {"liftcl", SFX_SFX_LIFT_CLOSE},
+ {"liftrun", SFX_SFX_LIFT_RUNNING},
+ {"liftbel", SFX_SFX_LIFT_BELL},
+ {"inlift", SFX_SFX_IN_LIFT},
+ {"caml", SFX_SFX_CAMERA_LEFT},
+ {"camr", SFX_SFX_CAMERA_RIGHT},
+ {"cheer1", SFX_SFX_CHEER1},
+ {"cheer2", SFX_SFX_CHEER2},
+ {"cheer3", SFX_SFX_CHEER3},
+ {"cheer4", SFX_SFX_CHEER4},
+ {"ooh1", SFX_SFX_OOH1},
+ {"ooh2", SFX_SFX_OOH2},
+ {"lanstp1", SFX_SFX_LANSTP1},
+ {"lanstp2", SFX_SFX_LANSTP2},
+ {"lanamu1", SFX_SFX_LANAMU1},
+ {"lanamu2", SFX_SFX_LANAMU2},
+ {"airhrnl", SFX_SFX_AIRHORN_LEFT},
+ {"airhrnr", SFX_SFX_AIRHORN_RIGHT},
+ {"sniper", SFX_SFX_SNIPER_SHOT_1},
+ {"snipsh", SFX_SFX_SNIPER_SHOT_2},
+ {"bloroof", SFX_SFX_BLOW_ROOF},
+ {"sfx_01", SFX_SFX_SFX_01},
+ {"sfx_02", SFX_SFX_SFX_02},
+ {"ANG1_AA", SFX_SFX_ANG1_AA},
+ {"ANG1_AB", SFX_SFX_ANG1_AB},
+ {"ANG1_AC", SFX_SFX_ANG1_AC},
+ {"ANG1_AD", SFX_SFX_ANG1_AD},
+ {"ANG1_AE", SFX_SFX_ANG1_AE},
+ {"ANG1_AF", SFX_SFX_ANG1_AF},
+ {"ANG1_AG", SFX_SFX_ANG1_AG},
+ {"ANG1_AH", SFX_SFX_ANG1_AH},
+ {"ANG1_AI", SFX_SFX_ANG1_AI},
+ {"ANG1_AJ", SFX_SFX_ANG1_AJ},
+ {"ANG1_AK", SFX_SFX_ANG1_AK},
+ {"ANG1_AL", SFX_SFX_ANG1_AL},
+ {"ANG1_AM", SFX_SFX_ANG1_AM},
+ {"ANG1_AN", SFX_SFX_ANG1_AN},
+ {"ANG1_AO", SFX_SFX_ANG1_AO},
+ {"ANG1_AP", SFX_SFX_ANG1_AP},
+ {"ANG1_AQ", SFX_SFX_ANG1_AQ},
+ {"ANG1_AR", SFX_SFX_ANG1_AR},
+ {"ANG1_AS", SFX_SFX_ANG1_AS},
+ {"ANG1_AT", SFX_SFX_ANG1_AT},
+ {"ANG1_AU", SFX_SFX_ANG1_AU},
+ {"ANG1_AV", SFX_SFX_ANG1_AV},
+ {"ANG1_AW", SFX_SFX_ANG1_AW},
+ {"JDT3_AA", SFX_SFX_JDT3_AA},
+ {"JDT3_AB", SFX_SFX_JDT3_AB},
+ {"JDT3_AC", SFX_SFX_JDT3_AC},
+ {"JDT3_AD", SFX_SFX_JDT3_AD},
+ {"JDT3_AE", SFX_SFX_JDT3_AE},
+ {"JDT3_AG", SFX_SFX_JDT3_AG},
+ {"JDT3_AH", SFX_SFX_JDT3_AH},
+ {"JDT3_BA", SFX_SFX_JDT3_BA},
+ {"JDT3_BB", SFX_SFX_JDT3_BB},
+ {"JDT3_BC", SFX_SFX_JDT3_BC},
+ {"JDT3_BD", SFX_SFX_JDT3_BD},
+ {"JDT3_BE", SFX_SFX_JDT3_BE},
+ {"JDT3_BF", SFX_SFX_JDT3_BF},
+ {"MAR4_AA", SFX_SFX_MAR4_AA},
+ {"MAR4_AB", SFX_SFX_MAR4_AB},
+ {"MAR4_AC", SFX_SFX_MAR4_AC},
+ {"MAR4_AD", SFX_SFX_MAR4_AD},
+ {"MAR4_BA", SFX_SFX_MAR4_BA},
+ {"MAR4_BB", SFX_SFX_MAR4_BB},
+ {"MAR4_BC", SFX_SFX_MAR4_BC},
+ {"MAR4_BD", SFX_SFX_MAR4_BD},
+ {"MAR4_BE", SFX_SFX_MAR4_BE},
+ {"MAR4_BF", SFX_SFX_MAR4_BF},
+ {"MAR4_BG", SFX_SFX_MAR4_BG},
+ {"AVEN_AA", SFX_AVEN_AA},
+ {"AVEN_AB", SFX_AVEN_AB},
+ {"AVEN_AC", SFX_AVEN_AC},
+ {"AVEN_AD", SFX_AVEN_AD},
+ {"AVEN_AE", SFX_AVEN_AE},
+ {"AVEN_AF", SFX_AVEN_AF},
+ {"AVEN_AG", SFX_AVEN_AG},
+ {"AVEN_AH", SFX_AVEN_AH},
+ {"AVEN_AI", SFX_AVEN_AI},
+ {"AVEN_AJ", SFX_AVEN_AJ},
+ {"AVEN_AK", SFX_AVEN_AK},
+ {"AVEN_AL", SFX_AVEN_AL},
+ {"AVEN_AM", SFX_AVEN_AM},
+ {"AVEN_AN", SFX_AVEN_AN},
+ {"AVEN_AO", SFX_AVEN_AO},
+ {"AVEN_AP", SFX_AVEN_AP},
+ {"AVEN_AQ", SFX_AVEN_AQ},
+ {"AVEN_AR", SFX_AVEN_AR},
+ {"AVEN_AS", SFX_AVEN_AS},
+ {"AVEN_AT", SFX_AVEN_AT},
+ {"AVEN_AU", SFX_AVEN_AU},
+ {"AVEN_AV", SFX_AVEN_AV},
+ {"AVEN_AW", SFX_AVEN_AW},
+ {"AVE1_AA", SFX_AVE1_AA},
+ {"AVE1_AB", SFX_AVE1_AB},
+ {"AVE1_AC", SFX_AVE1_AC},
+ {"AVE1_AD", SFX_AVE1_AD},
+ {"AVE1_AE", SFX_AVE1_AE},
+ {"AVE1_AF", SFX_AVE1_AF},
+ {"AVE1_AG", SFX_AVE1_AG},
+ {"AVE2_AA", SFX_AVE2_AA},
+ {"AVE2_AC", SFX_AVE2_AC},
+ {"AVE2_AD", SFX_AVE2_AD},
+ {"AVE2_AE", SFX_AVE2_AE},
+ {"AVE2_AG", SFX_AVE2_AG},
+ {"AVE2_AH", SFX_AVE2_AH},
+ {"AVE3_AA", SFX_AVE3_AA},
+ {"AVE3_AB", SFX_AVE3_AB},
+ {"AVE3_AC", SFX_AVE3_AC},
+ {"AVE3_AD", SFX_AVE3_AD},
+ {"AVE3_AE", SFX_AVE3_AE},
+ {"AVE3_AF", SFX_AVE3_AF},
+ {"AVE3_AG", SFX_AVE3_AG},
+ {"AVE4_AA", SFX_AVE4_AA},
+ {"AVE4_AB", SFX_AVE4_AB},
+ {"AVE4_AD", SFX_AVE4_AD},
+ {"AVE4_AE", SFX_AVE4_AE},
+ {"AVE4_AF", SFX_AVE4_AF},
+ {"AVE4_AG", SFX_AVE4_AG},
+ {"AVE4_AH", SFX_AVE4_AH},
+ {"AVE5_AA", SFX_AVE5_AA},
+ {"AVE5_AB", SFX_AVE5_AB},
+ {"AVE5_AC", SFX_AVE5_AC},
+ {"AVE5_AD", SFX_AVE5_AD},
+ {"AVE5_AE", SFX_AVE5_AE},
+ {"AVE5_AF", SFX_AVE5_AF},
+ {"AVE5_AG", SFX_AVE5_AG},
+ {"AVE6_AA", SFX_AVE6_AA},
+ {"AVE6_AB", SFX_AVE6_AB},
+ {"AVE6_AC", SFX_AVE6_AC},
+ {"AVE6_AD", SFX_AVE6_AD},
+ {"AVE6_AE", SFX_AVE6_AE},
+ {"BONS2BA", SFX_BONS2BA},
+ {"BONS2BB", SFX_BONS2BB},
+ {"BONS2BC", SFX_BONS2BC},
+ {"BONS2BD", SFX_BONS2BD},
+ {"BONS2BE", SFX_BONS2BE},
+ {"CAD1_AA", SFX_CAD1_AA},
+ {"CAD1_AB", SFX_CAD1_AB},
+ {"CAD1_AC", SFX_CAD1_AC},
+ {"CAD1_AD", SFX_CAD1_AD},
+ {"CAD1_AE", SFX_CAD1_AE},
+ {"CAD2_AA", SFX_CAD2_AA},
+ {"CAD2_AB", SFX_CAD2_AB},
+ {"CAD2_AC", SFX_CAD2_AC},
+ {"CAD2_AD", SFX_CAD2_AD},
+ {"CAD2_AE", SFX_CAD2_AE},
+ {"CAD2_AF", SFX_CAD2_AF},
+ {"CAD3_AA", SFX_CAD3_AA},
+ {"CAD3_AB", SFX_CAD3_AB},
+ {"CAD3_AC", SFX_CAD3_AC},
+ {"CAD3_AD", SFX_CAD3_AD},
+ {"CAD3_AE", SFX_CAD3_AE},
+ {"CAD3_AF", SFX_CAD3_AF},
+ {"CAD4_AA", SFX_CAD4_AA},
+ {"CAD4_AB", SFX_CAD4_AB},
+ {"CAD4_AC", SFX_CAD4_AC},
+ {"CAD4_AD", SFX_CAD4_AD},
+ {"CAD4_AE", SFX_CAD4_AE},
+ {"CAD4_AF", SFX_CAD4_AF},
+ {"CAD5_AA", SFX_CAD5_AA},
+ {"CAD5_AB", SFX_CAD5_AB},
+ {"CAD5_AC", SFX_CAD5_AC},
+ {"CAD5_AD", SFX_CAD5_AD},
+ {"CAD5_AE", SFX_CAD5_AE},
+ {"CAD5_AF", SFX_CAD5_AF},
+ {"CAD6_AA", SFX_CAD6_AA},
+ {"CAD6_AB", SFX_CAD6_AB},
+ {"CAD6_AC", SFX_CAD6_AC},
+ {"CAD6_AD", SFX_CAD6_AD},
+ {"CAD6_AE", SFX_CAD6_AE},
+ {"CAD6_AF", SFX_CAD6_AF},
+ {"CAD7_AB", SFX_CAD7_AB},
+ {"CAD7_AC", SFX_CAD7_AC},
+ {"CAD7_AD", SFX_CAD7_AD},
+ {"CAD7_AE", SFX_CAD7_AE},
+ {"CAD8_AB", SFX_CAD8_AB},
+ {"CAD8_AC", SFX_CAD8_AC},
+ {"CAD8_AD", SFX_CAD8_AD},
+ {"CAD8_AE", SFX_CAD8_AE},
+ {"CAD8_AF", SFX_CAD8_AF},
+ {"CAD9_AA", SFX_CAD9_AA},
+ {"CAD9_AB", SFX_CAD9_AB},
+ {"CAD9_AC", SFX_CAD9_AC},
+ {"CAD9_AD", SFX_CAD9_AD},
+ {"CAD9_AE", SFX_CAD9_AE},
+ {"CAD9_AF", SFX_CAD9_AF},
+ {"DONH1CA", SFX_DONH1CA},
+ {"DONH1DA", SFX_DONH1DA},
+ {"DONH1DB", SFX_DONH1DB},
+ {"DONH1EA", SFX_DONH1EA},
+ {"DONH1EB", SFX_DONH1EB},
+ {"DONH1EC", SFX_DONH1EC},
+ {"DONH1ED", SFX_DONH1ED},
+ {"DONH1EE", SFX_DONH1EE},
+ {"DONH1FA", SFX_DONH1FA},
+ {"DONH1GA", SFX_DONH1GA},
+ {"DONH1GB", SFX_DONH1GB},
+ {"DONH1GC", SFX_DONH1GC},
+ {"DONH1HA", SFX_DONH1HA},
+ {"DONH1IA", SFX_DONH1IA},
+ {"DONH1IB", SFX_DONH1IB},
+ {"DONH1JA", SFX_DONH1JA},
+ {"DONH1JB", SFX_DONH1JB},
+ {"DONH1JC", SFX_DONH1JC},
+ {"DONH1JD", SFX_DONH1JD},
+ {"DONH1JE", SFX_DONH1JE},
+ {"DONH2AA", SFX_DONH2AA},
+ {"DONH2AB", SFX_DONH2AB},
+ {"DONH2AC", SFX_DONH2AC},
+ {"DONH2AD", SFX_DONH2AD},
+ {"DONH2AF", SFX_DONH2AF},
+ {"DONH2AG", SFX_DONH2AG},
+ {"DONH2AH", SFX_DONH2AH},
+ {"DONH2BA", SFX_DONH2BA},
+ {"DONH2BB", SFX_DONH2BB},
+ {"DONH2BC", SFX_DONH2BC},
+ {"DONH2BD", SFX_DONH2BD},
+ {"DONH2BE", SFX_DONH2BE},
+ {"DONH2BF", SFX_DONH2BF},
+ {"DONH2BG", SFX_DONH2BG},
+ {"DONH2BH", SFX_DONH2BH},
+ {"DONH2BI", SFX_DONH2BI},
+ {"DONH2BJ", SFX_DONH2BJ},
+ {"DONH2BK", SFX_DONH2BK},
+ {"DONH2BL", SFX_DONH2BL},
+ {"DONH2CA", SFX_DONH2CA},
+ {"DONH2CB", SFX_DONH2CB},
+ {"DONH2CC", SFX_DONH2CC},
+ {"DONH2CD", SFX_DONH2CD},
+ {"DONH2CE", SFX_DONH2CE},
+ {"DONH2CF", SFX_DONH2CF},
+ {"DONH2CG", SFX_DONH2CG},
+ {"DONH2DA", SFX_DONH2DA},
+ {"DONH2DB", SFX_DONH2DB},
+ {"DONH2DC", SFX_DONH2DC},
+ {"DONH2EA", SFX_DONH2EA},
+ {"DONH2EC", SFX_DONH2EC},
+ {"DONH3AA", SFX_DONH3AA},
+ {"DONH3AB", SFX_DONH3AB},
+ {"DONH3AC", SFX_DONH3AC},
+ {"DONH3AD", SFX_DONH3AD},
+ {"DONH3AE", SFX_DONH3AE},
+ {"DONH3AF", SFX_DONH3AF},
+ {"DONH3AG", SFX_DONH3AG},
+ {"DONH3AH", SFX_DONH3AH},
+ {"DONH3AI", SFX_DONH3AI},
+ {"DONH3BA", SFX_DONH3BA},
+ {"DONH3BB", SFX_DONH3BB},
+ {"DONH3CA", SFX_DONH3CA},
+ {"DONH3DA", SFX_DONH3DA},
+ {"DONH3EA", SFX_DONH3EA},
+ {"DONH3EB", SFX_DONH3EB},
+ {"DONH3EC", SFX_DONH3EC},
+ {"DONH3ED", SFX_DONH3ED},
+ {"DONH3EE", SFX_DONH3EE},
+ {"DONH3EF", SFX_DONH3EF},
+ {"DONH3FA", SFX_DONH3FA},
+ {"DONH3GA", SFX_DONH3GA},
+ {"DONH3GB", SFX_DONH3GB},
+ {"DONH3GC", SFX_DONH3GC},
+ {"DONH3GD", SFX_DONH3GD},
+ {"DONH3GE", SFX_DONH3GE},
+ {"DONH3GF", SFX_DONH3GF},
+ {"DONH3HA", SFX_DONH3HA},
+ {"DONH3HB", SFX_DONH3HB},
+ {"DONH4AA", SFX_DONH4AA},
+ {"DONH4AB", SFX_DONH4AB},
+ {"DONH4AC", SFX_DONH4AC},
+ {"DONH4AD", SFX_DONH4AD},
+ {"DONH4AE", SFX_DONH4AE},
+ {"DONH4AF", SFX_DONH4AF},
+ {"DONH4AG", SFX_DONH4AG},
+ {"DONH4AH", SFX_DONH4AH},
+ {"DONH4AI", SFX_DONH4AI},
+ {"DONH4AJ", SFX_DONH4AJ},
+ {"DONH5AA", SFX_DONH5AA},
+ {"DONH5AB", SFX_DONH5AB},
+ {"DONH5AC", SFX_DONH5AC},
+ {"DONH5AD", SFX_DONH5AD},
+ {"DONH5AE", SFX_DONH5AE},
+ {"DONH5AF", SFX_DONH5AF},
+ {"DONH5AG", SFX_DONH5AG},
+ {"DONH5AH", SFX_DONH5AH},
+ {"DONH5AI", SFX_DONH5AI},
+ {"DONH5AJ", SFX_DONH5AJ},
+ {"DONH5BA", SFX_DONH5BA},
+ {"DONH6BA", SFX_DONH6BA},
+ {"DONH6CA", SFX_DONH6CA},
+ {"DONH6CB", SFX_DONH6CB},
+ {"DONH6DA", SFX_DONH6DA},
+ {"DONH6DB", SFX_DONH6DB},
+ {"DONH6EA", SFX_DONH6EA},
+ {"DONH6EB", SFX_DONH6EB},
+ {"DONH6EC", SFX_DONH6EC},
+ {"DONH6FA", SFX_DONH6FA},
+ {"DONH6GA", SFX_DONH6GA},
+ {"DONH6GB", SFX_DONH6GB},
+ {"DONH6GC", SFX_DONH6GC},
+ {"DONH6GD", SFX_DONH6GD},
+ {"DONH6GF", SFX_DONH6GF},
+ {"DONS1AA", SFX_DONS1AA},
+ {"DONS1AB", SFX_DONS1AB},
+ {"DONS1AC", SFX_DONS1AC},
+ {"DONS1BA", SFX_DONS1BA},
+ {"DONS1BB", SFX_DONS1BB},
+ {"DONS2AA", SFX_DONS2AA},
+ {"DONS2AB", SFX_DONS2AB},
+ {"DONS2AC", SFX_DONS2AC},
+ {"DONS2AD", SFX_DONS2AD},
+ {"DONS2AE", SFX_DONS2AE},
+ {"DONS2AF", SFX_DONS2AF},
+ {"DONS2BA", SFX_DONS2BA},
+ {"DONS2BB", SFX_DONS2BB},
+ {"DONS2BC", SFX_DONS2BC},
+ {"DONS2BD", SFX_DONS2BD},
+ {"DONS2BE", SFX_DONS2BE},
+ {"DONS2CA", SFX_DONS2CA},
+ {"DONS2CB", SFX_DONS2CB},
+ {"DONS2CC", SFX_DONS2CC},
+ {"DONS2CD", SFX_DONS2CD},
+ {"DONS2CE", SFX_DONS2CE},
+ {"DONS2CF", SFX_DONS2CF},
+ {"DONS2CG", SFX_DONS2CG},
+ {"DONS2CH", SFX_DONS2CH},
+ {"DONS2CI", SFX_DONS2CI},
+ {"DONS2CJ", SFX_DONS2CJ},
+ {"DONS2CK", SFX_DONS2CK},
+ {"DONS2CL", SFX_DONS2CL},
+ {"DONS2CM", SFX_DONS2CM},
+ {"DONS2CN", SFX_DONS2CN},
+ {"DONS4AA", SFX_DONS4AA},
+ {"DONS4AB", SFX_DONS4AB},
+ {"DONS4AC", SFX_DONS4AC},
+ {"DONS4AD", SFX_DONS4AD},
+ {"DONS4AE", SFX_DONS4AE},
+ {"DONS4AF", SFX_DONS4AF},
+ {"DONS5AA", SFX_DONS5AA},
+ {"DONS5AB", SFX_DONS5AB},
+ {"DONS5AC", SFX_DONS5AC},
+ {"DONS5AD", SFX_DONS5AD},
+ {"DONS5AE", SFX_DONS5AE},
+ {"DONS5BA", SFX_DONS5BA},
+ {"DONS5BB", SFX_DONS5BB},
+ {"DONS5BC", SFX_DONS5BC},
+ {"DONS5BD", SFX_DONS5BD},
+ {"DONS5BE", SFX_DONS5BE},
+ {"DONS5CA", SFX_DONS5CA},
+ {"DONS5DA", SFX_DONS5DA},
+ {"DONS5EA", SFX_DONS5EA},
+ {"DONS5EB", SFX_DONS5EB},
+ {"DONS6AA", SFX_DONS6AA},
+ {"DONS6AB", SFX_DONS6AB},
+ {"DONS6AC", SFX_DONS6AC},
+ {"DONS6AD", SFX_DONS6AD},
+ {"DONS6AE", SFX_DONS6AE},
+ {"DONS6AF", SFX_DONS6AF},
+ {"DONS6AG", SFX_DONS6AG},
+ {"DONS7AA", SFX_DONS7AA},
+ {"DONS7AB", SFX_DONS7AB},
+ {"DONS7AC", SFX_DONS7AC},
+ {"DONS7AD", SFX_DONS7AD},
+ {"DONS7AE", SFX_DONS7AE},
+ {"DONS7AF", SFX_DONS7AF},
+ {"DONS7AG", SFX_DONS7AG},
+ {"HIT1_AA", SFX_HIT1_AA},
+ {"HIT1_AB", SFX_HIT1_AB},
+ {"HIT1_AC", SFX_HIT1_AC},
+ {"HIT1_AD", SFX_HIT1_AD},
+ {"HIT1_AE", SFX_HIT1_AE},
+ {"HIT1_AF", SFX_HIT1_AF},
+ {"HIT1_AG", SFX_HIT1_AG},
+ {"HIT2_AA", SFX_HIT2_AA},
+ {"HIT2_AB", SFX_HIT2_AB},
+ {"HIT2_AC", SFX_HIT2_AC},
+ {"HIT2_AD", SFX_HIT2_AD},
+ {"HIT2_AE", SFX_HIT2_AE},
+ {"HIT2_AF", SFX_HIT2_AF},
+ {"HIT2_AG", SFX_HIT2_AG},
+ {"HIT2_AH", SFX_HIT2_AH},
+ {"HIT3_AA", SFX_HIT3_AA},
+ {"HIT3_AB", SFX_HIT3_AB},
+ {"HIT3_AC", SFX_HIT3_AC},
+ {"HIT3_AD", SFX_HIT3_AD},
+ {"HIT3_AE", SFX_HIT3_AE},
+ {"HIT3_AF", SFX_HIT3_AF},
+ {"HIT3_AG", SFX_HIT3_AG},
+ {"HITM_AA", SFX_HITM_AA},
+ {"HITM_AB", SFX_HITM_AB},
+ {"HITM_AC", SFX_HITM_AC},
+ {"HITM_AD", SFX_HITM_AD},
+ {"JDT1_BA", SFX_JDT1_BA},
+ {"JDT1_BB", SFX_JDT1_BB},
+ {"JDT1_CA", SFX_JDT1_CA},
+ {"JDT1_CB", SFX_JDT1_CB},
+ {"JDT1_DA", SFX_JDT1_DA},
+ {"JDT1_DB", SFX_JDT1_DB},
+ {"JDT1_DC", SFX_JDT1_DC},
+ {"JDT1_DD", SFX_JDT1_DD},
+ {"JDT1_DE", SFX_JDT1_DE},
+ {"JDT1_DF", SFX_JDT1_DF},
+ {"JDT1_DG", SFX_JDT1_DG},
+ {"JDT1_DH", SFX_JDT1_DH},
+ {"JDT1_DI", SFX_JDT1_DI},
+ {"JDT1_DJ", SFX_JDT1_DJ},
+ {"JDT1_EA", SFX_JDT1_EA},
+ {"JDT1_EB", SFX_JDT1_EB},
+ {"JDT1_EC", SFX_JDT1_EC},
+ {"JDT1_ED", SFX_JDT1_ED},
+ {"JDT1_EE", SFX_JDT1_EE},
+ {"JDT1_FA", SFX_JDT1_FA},
+ {"JDT1_FB", SFX_JDT1_FB},
+ {"JDT1_FC", SFX_JDT1_FC},
+ {"JDT1_FD", SFX_JDT1_FD},
+ {"JDT1_FE", SFX_JDT1_FE},
+ {"JDT1_FF", SFX_JDT1_FF},
+ {"JDT1_GA", SFX_JDT1_GA},
+ {"JDT1_HA", SFX_JDT1_HA},
+ {"JDT1_HB", SFX_JDT1_HB},
+ {"JDT1_HC", SFX_JDT1_HC},
+ {"JDT1_HD", SFX_JDT1_HD},
+ {"JDT1_HE", SFX_JDT1_HE},
+ {"JDT1_HF", SFX_JDT1_HF},
+ {"JDT1_IA", SFX_JDT1_IA},
+ {"JDT1_JA", SFX_JDT1_JA},
+ {"JDT1_JB", SFX_JDT1_JB},
+ {"JDT1_KA", SFX_JDT1_KA},
+ {"JDT1_KB", SFX_JDT1_KB},
+ {"JDT1_KC", SFX_JDT1_KC},
+ {"JDT1_KD", SFX_JDT1_KD},
+ {"JDT1_KE", SFX_JDT1_KE},
+ {"JDT1_KF", SFX_JDT1_KF},
+ {"JDT1_LA", SFX_JDT1_LA},
+ {"JDT1_LB", SFX_JDT1_LB},
+ {"JDT2_AA", SFX_JDT2_AA},
+ {"JDT2_AB", SFX_JDT2_AB},
+ {"JDT2_AC", SFX_JDT2_AC},
+ {"JDT2_AD", SFX_JDT2_AD},
+ {"JDT2_AE", SFX_JDT2_AE},
+ {"JDT2_AF", SFX_JDT2_AF},
+ {"JDT2_AG", SFX_JDT2_AG},
+ {"JDT2_AH", SFX_JDT2_AH},
+ {"JDT2_BA", SFX_JDT2_BA},
+ {"JDT2_BB", SFX_JDT2_BB},
+ {"JDT2_BC", SFX_JDT2_BC},
+ {"JDT2_CA", SFX_JDT2_CA},
+ {"JDT2_CB", SFX_JDT2_CB},
+ {"JDT2_DA", SFX_JDT2_DA},
+ {"JDT2_DC", SFX_JDT2_DC},
+ {"JDT2_DD", SFX_JDT2_DD},
+ {"JDT2_DE", SFX_JDT2_DE},
+ {"JDT2_DF", SFX_JDT2_DF},
+ {"JDT3_AA", SFX_JDT3_AA},
+ {"JDT3_AB", SFX_JDT3_AB},
+ {"JDT3_AC", SFX_JDT3_AC},
+ {"JDT3_AD", SFX_JDT3_AD},
+ {"JDT3_AE", SFX_JDT3_AE},
+ {"JDT3_AG", SFX_JDT3_AG},
+ {"JDT3_AH", SFX_JDT3_AH},
+ {"JDT3_BA", SFX_JDT3_BA},
+ {"JDT3_BB", SFX_JDT3_BB},
+ {"JDT3_BC", SFX_JDT3_BC},
+ {"JDT3_BD", SFX_JDT3_BD},
+ {"JDT3_BE", SFX_JDT3_BE},
+ {"JDT3_BF", SFX_JDT3_BF},
+ {"JDT4_AA", SFX_JDT4_AA},
+ {"JDT4_AB", SFX_JDT4_AB},
+ {"JDT4_AC", SFX_JDT4_AC},
+ {"JDT4_AD", SFX_JDT4_AD},
+ {"JDT4_AE", SFX_JDT4_AE},
+ {"JDT4_AF", SFX_JDT4_AF},
+ {"JDT5_BA", SFX_JDT5_BA},
+ {"JDT5_CA", SFX_JDT5_CA},
+ {"JDT5_CC", SFX_JDT5_CC},
+ {"JDT5_CD", SFX_JDT5_CD},
+ {"JDT5_CE", SFX_JDT5_CE},
+ {"JDT5_CG", SFX_JDT5_CG},
+ {"JDT5_CI", SFX_JDT5_CI},
+ {"JDT5_DA", SFX_JDT5_DA},
+ {"JDT5_EA", SFX_JDT5_EA},
+ {"JDT5_EB", SFX_JDT5_EB},
+ {"JDT5_EC", SFX_JDT5_EC},
+ {"JDT5_ED", SFX_JDT5_ED},
+ {"JDT5_EE", SFX_JDT5_EE},
+ {"JDT6_AA", SFX_JDT6_AA},
+ {"JDT6_AB", SFX_JDT6_AB},
+ {"JDT6_AC", SFX_JDT6_AC},
+ {"JDT6_AE", SFX_JDT6_AE},
+ {"JDT6_AF", SFX_JDT6_AF},
+ {"JDT6_AG", SFX_JDT6_AG},
+ {"JDT6_AH", SFX_JDT6_AH},
+ {"JDT6_BA", SFX_JDT6_BA},
+ {"JDT6_BB", SFX_JDT6_BB},
+ {"JDT6_BC", SFX_JDT6_BC},
+ {"JDT6_BD", SFX_JDT6_BD},
+ {"JDT6_BE", SFX_JDT6_BE},
+ {"JDT6_BF", SFX_JDT6_BF},
+ {"JDT6_BG", SFX_JDT6_BG},
+ {"JDT7_AA", SFX_JDT7_AA},
+ {"JDT7_AB", SFX_JDT7_AB},
+ {"JDT7_AC", SFX_JDT7_AC},
+ {"JDT7_AD", SFX_JDT7_AD},
+ {"JDT7_AE", SFX_JDT7_AE},
+ {"JDT7_AF", SFX_JDT7_AF},
+ {"JDT7_AG", SFX_JDT7_AG},
+ {"JDT7_BA", SFX_JDT7_BA},
+ {"JDT7_BB", SFX_JDT7_BB},
+ {"JDT7_BC", SFX_JDT7_BC},
+ {"JDT7_CA", SFX_JDT7_CA},
+ {"JDT7_CB", SFX_JDT7_CB},
+ {"JDT7_CC", SFX_JDT7_CC},
+ {"JDT8_AA", SFX_JDT8_AA},
+ {"JDT8_AB", SFX_JDT8_AB},
+ {"JDT8_AC", SFX_JDT8_AC},
+ {"JDT8_AD", SFX_JDT8_AD},
+ {"JDT8_AE", SFX_JDT8_AE},
+ {"JDT8_AF", SFX_JDT8_AF},
+ {"JDT8_AG", SFX_JDT8_AG},
+ {"JDT8_AH", SFX_JDT8_AH},
+ {"JDT8_CA", SFX_JDT8_CA},
+ {"JDT8_CB", SFX_JDT8_CB},
+ {"JDT8_DA", SFX_JDT8_DA},
+ {"JDT8_DB", SFX_JDT8_DB},
+ {"JDT8_DC", SFX_JDT8_DC},
+ {"JDT8_DD", SFX_JDT8_DD},
+ {"JDT8_DE", SFX_JDT8_DE},
+ {"JDT8_DF", SFX_JDT8_DF},
+ {"JDT8_DG", SFX_JDT8_DG},
+ {"JDT8_EA", SFX_JDT8_EA},
+ {"JDT8_EB", SFX_JDT8_EB},
+ {"JDT8_EC", SFX_JDT8_EC},
+ {"JDT8_ED", SFX_JDT8_ED},
+ {"JDT8_EE", SFX_JDT8_EE},
+ {"JDT8_FA", SFX_JDT8_FA},
+ {"JDT8_FB", SFX_JDT8_FB},
+ {"JDT8_FC", SFX_JDT8_FC},
+ {"JDX_AA", SFX_JDX_AA},
+ {"JDX_AB", SFX_JDX_AB},
+ {"JDX_AC", SFX_JDX_AC},
+ {"M8B1AA", SFX_M8B1AA},
+ {"M8B1AB", SFX_M8B1AB},
+ {"MAC1_AA", SFX_MAC1_AA},
+ {"MAC1_AB", SFX_MAC1_AB},
+ {"MAC1_AC", SFX_MAC1_AC},
+ {"MAC1_AD", SFX_MAC1_AD},
+ {"MAC1_AE", SFX_MAC1_AE},
+ {"MAC1_AF", SFX_MAC1_AF},
+ {"MAC1_AG", SFX_MAC1_AG},
+ {"MAC1_AH", SFX_MAC1_AH},
+ {"MAC1_AI", SFX_MAC1_AI},
+ {"MAC1_AJ", SFX_MAC1_AJ},
+ {"MAC1_AK", SFX_MAC1_AK},
+ {"MAC1_AL", SFX_MAC1_AL},
+ {"MAC1_AM", SFX_MAC1_AM},
+ {"MAC1_AN", SFX_MAC1_AN},
+ {"MAC1_AO", SFX_MAC1_AO},
+ {"MAC1_BA", SFX_MAC1_BA},
+ {"MAC1_BB", SFX_MAC1_BB},
+ {"MAC1_BC", SFX_MAC1_BC},
+ {"MAC1_BD", SFX_MAC1_BD},
+ {"MAC1_BE", SFX_MAC1_BE},
+ {"MAC1_BF", SFX_MAC1_BF},
+ {"MAC1_BG", SFX_MAC1_BG},
+ {"MAC1_CA", SFX_MAC1_CA},
+ {"MAC1_CB", SFX_MAC1_CB},
+ {"MAC1_DA", SFX_MAC1_DA},
+ {"MAC1_EA", SFX_MAC1_EA},
+ {"MAC1_FA", SFX_MAC1_FA},
+ {"MAC1_FB", SFX_MAC1_FB},
+ {"MAC1_GA", SFX_MAC1_GA},
+ {"MAC1_GB", SFX_MAC1_GB},
+ {"MAC1_HA", SFX_MAC1_HA},
+ {"MAC1_IA", SFX_MAC1_IA},
+ {"MAC1_IB", SFX_MAC1_IB},
+ {"MAC1_JA", SFX_MAC1_JA},
+ {"MAC1_JB", SFX_MAC1_JB},
+ {"MAC2_AA", SFX_MAC2_AA},
+ {"MAC2_AB", SFX_MAC2_AB},
+ {"MAC2_AC", SFX_MAC2_AC},
+ {"MAC2_AD", SFX_MAC2_AD},
+ {"MAC2_AE", SFX_MAC2_AE},
+ {"MAC2_AF", SFX_MAC2_AF},
+ {"MAC2_AG", SFX_MAC2_AG},
+ {"MAC2_AH", SFX_MAC2_AH},
+ {"MAC2_AI", SFX_MAC2_AI},
+ {"MAC2_BA", SFX_MAC2_BA},
+ {"MAC2_BB", SFX_MAC2_BB},
+ {"MAC2_BC", SFX_MAC2_BC},
+ {"MAC3_AA", SFX_MAC3_AA},
+ {"MAC3_AB", SFX_MAC3_AB},
+ {"MAC3_AC", SFX_MAC3_AC},
+ {"MAC3_AD", SFX_MAC3_AD},
+ {"MAC3_AE", SFX_MAC3_AE},
+ {"MAC3_AF", SFX_MAC3_AF},
+ {"MAC3_AG", SFX_MAC3_AG},
+ {"MAC3_AH", SFX_MAC3_AH},
+ {"MAC3_AI", SFX_MAC3_AI},
+ {"MAC3_AJ", SFX_MAC3_AJ},
+ {"MAC3_AK", SFX_MAC3_AK},
+ {"MAC3_AL", SFX_MAC3_AL},
+ {"MAC3_AM", SFX_MAC3_AM},
+ {"MAC3_AN", SFX_MAC3_AN},
+ {"MAC3_BA", SFX_MAC3_BA},
+ {"MAC4_AA", SFX_MAC4_AA},
+ {"MAC4_AB", SFX_MAC4_AB},
+ {"MAC4_AC", SFX_MAC4_AC},
+ {"MAC4_AD", SFX_MAC4_AD},
+ {"MAC4_AE", SFX_MAC4_AE},
+ {"MAC4_AF", SFX_MAC4_AF},
+ {"MAC4_AG", SFX_MAC4_AG},
+ {"MAC4_AH", SFX_MAC4_AH},
+ {"MAC4_AI", SFX_MAC4_AI},
+ {"MAC4_AJ", SFX_MAC4_AJ},
+ {"MAC4_AK", SFX_MAC4_AK},
+ {"MAC4_AL", SFX_MAC4_AL},
+ {"MAC4_BA", SFX_MAC4_BA},
+ {"MAC4_BB", SFX_MAC4_BB},
+ {"MAC4_BC", SFX_MAC4_BC},
+ {"MAC4_BD", SFX_MAC4_BD},
+ {"MAC4_BE", SFX_MAC4_BE},
+ {"MAC4_BF", SFX_MAC4_BF},
+ {"MAC4_BG", SFX_MAC4_BG},
+ {"MAC4_BI", SFX_MAC4_BI},
+ {"MAC4_BJ", SFX_MAC4_BJ},
+ {"MAC4_BL", SFX_MAC4_BL},
+ {"MAC4_BM", SFX_MAC4_BM},
+ {"MAC4_BO", SFX_MAC4_BO},
+ {"MAC4_BP", SFX_MAC4_BP},
+ {"MAC4_BQ", SFX_MAC4_BQ},
+ {"MAC4_BR", SFX_MAC4_BR},
+ {"MAC4_BS", SFX_MAC4_BS},
+ {"MAC4_BT", SFX_MAC4_BT},
+ {"MAC4_BU", SFX_MAC4_BU},
+ {"MAC4_CA", SFX_MAC4_CA},
+ {"MAC4_CB", SFX_MAC4_CB},
+ {"MAC4_CC", SFX_MAC4_CC},
+ {"MAC4_CD", SFX_MAC4_CD},
+ {"MAC4_CE", SFX_MAC4_CE},
+ {"MAC4_CF", SFX_MAC4_CF},
+ {"MAC4_CG", SFX_MAC4_CG},
+ {"MAC4_CH", SFX_MAC4_CH},
+ {"MAC4_CI", SFX_MAC4_CI},
+ {"MAC4_CK", SFX_MAC4_CK},
+ {"MAC4_CM", SFX_MAC4_CM},
+ {"MAC5_AA", SFX_MAC5_AA},
+ {"MAC5_AB", SFX_MAC5_AB},
+ {"MAC5_AC", SFX_MAC5_AC},
+ {"MAC5_AD", SFX_MAC5_AD},
+ {"MAC5_AE", SFX_MAC5_AE},
+ {"MAC5_AF", SFX_MAC5_AF},
+ {"MAC5_AG", SFX_MAC5_AG},
+ {"MAC5_AH", SFX_MAC5_AH},
+ {"MAC5_AI", SFX_MAC5_AI},
+ {"MAC5_AJ", SFX_MAC5_AJ},
+ {"MAC5_AK", SFX_MAC5_AK},
+ {"MAC5_AL", SFX_MAC5_AL},
+ {"MAC5_AM", SFX_MAC5_AM},
+ {"MAC5_AN", SFX_MAC5_AN},
+ {"MAR1_AA", SFX_MAR1_AA},
+ {"MAR1_AB", SFX_MAR1_AB},
+ {"MAR1_AC", SFX_MAR1_AC},
+ {"MAR1_AD", SFX_MAR1_AD},
+ {"MAR1_AE", SFX_MAR1_AE},
+ {"MAR1_BA", SFX_MAR1_BA},
+ {"MAR1_CA", SFX_MAR1_CA},
+ {"MAR1_DA", SFX_MAR1_DA},
+ {"MAR1_DB", SFX_MAR1_DB},
+ {"MAR1_EA", SFX_MAR1_EA},
+ {"MAR1_FA", SFX_MAR1_FA},
+ {"MAR1_FB", SFX_MAR1_FB},
+ {"MAR1_FC", SFX_MAR1_FC},
+ {"MAR1_FD", SFX_MAR1_FD},
+ {"MAR1_GA", SFX_MAR1_GA},
+ {"MAR1_GB", SFX_MAR1_GB},
+ {"MAR1_GC", SFX_MAR1_GC},
+ {"MAR1_HA", SFX_MAR1_HA},
+ {"MAR1_HB", SFX_MAR1_HB},
+ {"MAR1_HC", SFX_MAR1_HC},
+ {"MAR1_IA", SFX_MAR1_IA},
+ {"MAR1_IB", SFX_MAR1_IB},
+ {"MAR1_IC", SFX_MAR1_IC},
+ {"MAR2_AA", SFX_MAR2_AA},
+ {"MAR2_AB", SFX_MAR2_AB},
+ {"MAR2_AC", SFX_MAR2_AC},
+ {"MAR2_AD", SFX_MAR2_AD},
+ {"MAR2_AE", SFX_MAR2_AE},
+ {"MAR2_AF", SFX_MAR2_AF},
+ {"MAR2_AG", SFX_MAR2_AG},
+ {"MAR2_AH", SFX_MAR2_AH},
+ {"MAR2_BA", SFX_MAR2_BA},
+ {"MAR2_BB", SFX_MAR2_BB},
+ {"MAR2_BC", SFX_MAR2_BC},
+ {"MAR2_CA", SFX_MAR2_CA},
+ {"MAR2_CB", SFX_MAR2_CB},
+ {"MAR2_CC", SFX_MAR2_CC},
+ {"MAR2_CD", SFX_MAR2_CD},
+ {"MAR2_CE", SFX_MAR2_CE},
+ {"MAR2_DA", SFX_MAR2_DA},
+ {"MAR2_EA", SFX_MAR2_EA},
+ {"MAR2_EB", SFX_MAR2_EB},
+ {"MAR2_EC", SFX_MAR2_EC},
+ {"MAR2_FA", SFX_MAR2_FA},
+ {"MAR2_FB", SFX_MAR2_FB},
+ {"MAR2_GA", SFX_MAR2_GA},
+ {"MAR2_GB", SFX_MAR2_GB},
+ {"MAR2_GC", SFX_MAR2_GC},
+ {"MAR2_GE", SFX_MAR2_GE},
+ {"MAR2_GG", SFX_MAR2_GG},
+ {"MAR2_GH", SFX_MAR2_GH},
+ {"MAR2_HA", SFX_MAR2_HA},
+ {"MAR2_HB", SFX_MAR2_HB},
+ {"MAR2_HC", SFX_MAR2_HC},
+ {"MAR3_AA", SFX_MAR3_AA},
+ {"MAR3_AB", SFX_MAR3_AB},
+ {"MAR3_AC", SFX_MAR3_AC},
+ {"MAR3_AD", SFX_MAR3_AD},
+ {"MAR3_BA", SFX_MAR3_BA},
+ {"MAR3_BB", SFX_MAR3_BB},
+ {"MAR3_BC", SFX_MAR3_BC},
+ {"MAR3_BD", SFX_MAR3_BD},
+ {"MAR3_BE", SFX_MAR3_BE},
+ {"MAR3_BF", SFX_MAR3_BF},
+ {"MAR4_BA", SFX_MAR4_BA},
+ {"MAR4_BC", SFX_MAR4_BC},
+ {"MAR4_BD", SFX_MAR4_BD},
+ {"MAR4_BF", SFX_MAR4_BF},
+ {"MAR5_AA", SFX_MAR5_AA},
+ {"MAR5_AB", SFX_MAR5_AB},
+ {"MAR5_AC", SFX_MAR5_AC},
+ {"MAR5_AD", SFX_MAR5_AD},
+ {"MAR5_AE", SFX_MAR5_AE},
+ {"MAR5_BA", SFX_MAR5_BA},
+ {"MAR5_BB", SFX_MAR5_BB},
+ {"MAR5_CA", SFX_MAR5_CA},
+ {"MAR5_CB", SFX_MAR5_CB},
+ {"MAR5_CC", SFX_MAR5_CC},
+ {"MAR5_CD", SFX_MAR5_CD},
+ {"MAR5_CE", SFX_MAR5_CE},
+ {"MAR5_EA", SFX_MAR5_EA},
+ {"MAR5_EB", SFX_MAR5_EB},
+ {"MAR5_EC", SFX_MAR5_EC},
+ {"MAR5_FA", SFX_MAR5_FA},
+ {"MAR5_FB", SFX_MAR5_FB},
+ {"MAR5_FC", SFX_MAR5_FC},
+ {"MAR5_FD", SFX_MAR5_FD},
+ {"MAR5_FE", SFX_MAR5_FE},
+ {"MAR5_FF", SFX_MAR5_FF},
+ {"MARX_AA", SFX_MARX_AA},
+ {"MARX_AB", SFX_MARX_AB},
+ {"MARX_AC", SFX_MARX_AC},
+ {"MDON1AA", SFX_MDON1AA},
+ {"MDON1AB", SFX_MDON1AB},
+ {"MDON1AC", SFX_MDON1AC},
+ {"MDON2AA", SFX_MDON2AA},
+ {"MDON2AB", SFX_MDON2AB},
+ {"MDON2AC", SFX_MDON2AC},
+ {"MDON2AD", SFX_MDON2AD},
+ {"MDON2AE", SFX_MDON2AE},
+ {"MDON2AF", SFX_MDON2AF},
+ {"MDON2AG", SFX_MDON2AG},
+ {"MDON3AA", SFX_MDON3AA},
+ {"MDON3AB", SFX_MDON3AB},
+ {"MDON3AC", SFX_MDON3AC},
+ {"MDON3AD", SFX_MDON3AD},
+ {"MDON3AE", SFX_MDON3AE},
+ {"MDON3AF", SFX_MDON3AF},
+ {"MDON3AG", SFX_MDON3AG},
+ {"MJDT1AA", SFX_MJDT1AA},
+ {"MJDT1AB", SFX_MJDT1AB},
+ {"MJDT1AC", SFX_MJDT1AC},
+ {"MJDT1AE", SFX_MJDT1AE},
+ {"MMA1AA", SFX_MMA1AA},
+ {"MMA1AB", SFX_MMA1AB},
+ {"MMA1AC", SFX_MMA1AC},
+ {"MMA1AD", SFX_MMA1AD},
+ {"MMA1AE", SFX_MMA1AE},
+ {"MMA2AA", SFX_MMA2AA},
+ {"MMA2AB", SFX_MMA2AB},
+ {"MMA2AC", SFX_MMA2AC},
+ {"MMA2AD", SFX_MMA2AD},
+ {"MMA2AE", SFX_MMA2AE},
+ {"MMA2AF", SFX_MMA2AF},
+ {"MMA2AG", SFX_MMA2AG},
+ {"MMA2AH", SFX_MMA2AH},
+ {"MMA2AI", SFX_MMA2AI},
+ {"MMA2AJ", SFX_MMA2AJ},
+ {"MMAR1AA", SFX_MMAR1AA},
+ {"MMAR1AB", SFX_MMAR1AB},
+ {"MMAR1AC", SFX_MMAR1AC},
+ {"MMAR1AD", SFX_MMAR1AD},
+ {"MMCA1AA", SFX_MMCA1AA},
+ {"MMCA1AB", SFX_MMCA1AB},
+ {"MMCA1AC", SFX_MMCA1AC},
+ {"MMCA1AD", SFX_MMCA1AD},
+ {"MMCA2AA", SFX_MMCA2AA},
+ {"MMCA2AB", SFX_MMCA2AB},
+ {"MMCA2AC", SFX_MMCA2AC},
+ {"MMCA2AD", SFX_MMCA2AD},
+ {"MMCA2AE", SFX_MMCA2AE},
+ {"MMCA2AF", SFX_MMCA2AF},
+ {"MSA10AA", SFX_MSA10AA},
+ {"MSA10AB", SFX_MSA10AB},
+ {"MSA10AC", SFX_MSA10AC},
+ {"MSA10AD", SFX_MSA10AD},
+ {"MSA11AA", SFX_MSA11AA},
+ {"MSA11AB", SFX_MSA11AB},
+ {"MSA11AC", SFX_MSA11AC},
+ {"MSA11AD", SFX_MSA11AD},
+ {"MSA12AA", SFX_MSA12AA},
+ {"MSA12AC", SFX_MSA12AC},
+ {"MSA12AD", SFX_MSA12AD},
+ {"MSA13AA", SFX_MSA13AA},
+ {"MSA13AB", SFX_MSA13AB},
+ {"MSA13AC", SFX_MSA13AC},
+ {"MSA13AD", SFX_MSA13AD},
+ {"MSA13AE", SFX_MSA13AE},
+ {"MSA13AF", SFX_MSA13AF},
+ {"MSA13AG", SFX_MSA13AG},
+ {"MSA13AH", SFX_MSA13AH},
+ {"MSA14AA", SFX_MSA14AA},
+ {"MSA14AB", SFX_MSA14AB},
+ {"MSA14AC", SFX_MSA14AC},
+ {"MSA14AD", SFX_MSA14AD},
+ {"MSAL5AA", SFX_MSAL5AA},
+ {"MSAL5AB", SFX_MSAL5AB},
+ {"MSAL6AA", SFX_MSAL6AA},
+ {"MSAL6AB", SFX_MSAL6AB},
+ {"MSAL6AC", SFX_MSAL6AC},
+ {"MSAL6AD", SFX_MSAL6AD},
+ {"MSAL7AA", SFX_MSAL7AA},
+ {"MSAL7AB", SFX_MSAL7AB},
+ {"MSAL7AC", SFX_MSAL7AC},
+ {"MSAL7AD", SFX_MSAL7AD},
+ {"MSAL7AE", SFX_MSAL7AE},
+ {"MSAL7AF", SFX_MSAL7AF},
+ {"MSAL7AG", SFX_MSAL7AG},
+ {"MSAL8AA", SFX_MSAL8AA},
+ {"MSAL8AB", SFX_MSAL8AB},
+ {"MSAL8AC", SFX_MSAL8AC},
+ {"MSAL8AD", SFX_MSAL8AD},
+ {"MSAL8AF", SFX_MSAL8AF},
+ {"MSAL8AG", SFX_MSAL8AG},
+ {"MSAL9AA", SFX_MSAL9AA},
+ {"MSAL9AB", SFX_MSAL9AB},
+ {"MSAL9AC", SFX_MSAL9AC},
+ {"MSAL9AD", SFX_MSAL9AD},
+ {"MSAL9AE", SFX_MSAL9AE},
+ {"MSAL9AF", SFX_MSAL9AF},
+ {"MTOS1AA", SFX_MTOS1AA},
+ {"MTOS1AB", SFX_MTOS1AB},
+ {"MTOS1AC", SFX_MTOS1AC},
+ {"MTOS1AD", SFX_MTOS1AD},
+ {"MTOS1AE", SFX_MTOS1AE},
+ {"MTOS1AF", SFX_MTOS1AF},
+ {"MTOS1AG", SFX_MTOS1AG},
+ {"MTOS2AA", SFX_MTOS2AA},
+ {"MTOS2AB", SFX_MTOS2AB},
+ {"MTOS2AC", SFX_MTOS2AC},
+ {"MTOS2AD", SFX_MTOS2AD},
+ {"MTOS2AE", SFX_MTOS2AE},
+ {"MTOS2AF", SFX_MTOS2AF},
+ {"MTOS2AG", SFX_MTOS2AG},
+ {"MVIC1AA", SFX_MVIC1AA},
+ {"MVIC1AB", SFX_MVIC1AB},
+ {"MVIC1AC", SFX_MVIC1AC},
+ {"MVIC1AD", SFX_MVIC1AD},
+ {"MVIC1AE", SFX_MVIC1AE},
+ {"MVIC1AF", SFX_MVIC1AF},
+ {"MVIC1AG", SFX_MVIC1AG},
+ {"MVIC1AH", SFX_MVIC1AH},
+ {"MVIC1AI", SFX_MVIC1AI},
+ {"MVIC1AJ", SFX_MVIC1AJ},
+ {"MVIC1AK", SFX_MVIC1AK},
+ {"NEDS1AA", SFX_NEDS1AA},
+ {"NEDS1AB", SFX_NEDS1AB},
+ {"NEDS1AC", SFX_NEDS1AC},
+ {"NEDS1AD", SFX_NEDS1AD},
+ {"NEDS1AE", SFX_NEDS1AE},
+ {"NEDS1AF", SFX_NEDS1AF},
+ {"NEDS1AG", SFX_NEDS1AG},
+ {"NEDS1BC", SFX_NEDS1BC},
+ {"NEDS1BE", SFX_NEDS1BE},
+ {"NEDS2AA", SFX_NEDS2AA},
+ {"NEDS2AB", SFX_NEDS2AB},
+ {"NEDS2AC", SFX_NEDS2AC},
+ {"NEDS2AD", SFX_NEDS2AD},
+ {"NEDS2AE", SFX_NEDS2AE},
+ {"NEDS2AF", SFX_NEDS2AF},
+ {"NEDS2BA", SFX_NEDS2BA},
+ {"NEDS3AA", SFX_NEDS3AA},
+ {"NEDS3AB", SFX_NEDS3AB},
+ {"NEDS3AC", SFX_NEDS3AC},
+ {"NEDS3AD", SFX_NEDS3AD},
+ {"NEDS4AA", SFX_NEDS4AA},
+ {"NEDS4AB", SFX_NEDS4AB},
+ {"NEDS4AC", SFX_NEDS4AC},
+ {"NEDS4AD", SFX_NEDS4AD},
+ {"NEDS4AE", SFX_NEDS4AE},
+ {"NEDS4BA", SFX_NEDS4BA},
+ {"NEDS4BB", SFX_NEDS4BB},
+ {"NEDS4BC", SFX_NEDS4BC},
+ {"NEDS4BD", SFX_NEDS4BD},
+ {"NEDS4BE", SFX_NEDS4BE},
+ {"NEDS4BF", SFX_NEDS4BF},
+ {"RAC1_AA", SFX_RAC1_AA},
+ {"RAC1_AB", SFX_RAC1_AB},
+ {"RAC1_AC", SFX_RAC1_AC},
+ {"RAC1_AD", SFX_RAC1_AD},
+ {"RAC1_AE", SFX_RAC1_AE},
+ {"RAC1_AF", SFX_RAC1_AF},
+ {"RAC1_AG", SFX_RAC1_AG},
+ {"RAC2_AA", SFX_RAC2_AA},
+ {"RAC2_AB", SFX_RAC2_AB},
+ {"RAC2_AC", SFX_RAC2_AC},
+ {"RAC2_AD", SFX_RAC2_AD},
+ {"RAC2_AE", SFX_RAC2_AE},
+ {"RAC2_AF", SFX_RAC2_AF},
+ {"RAC3_AB", SFX_RAC3_AB},
+ {"RAC3_AC", SFX_RAC3_AC},
+ {"RAC3_AD", SFX_RAC3_AD},
+ {"RAC3_AE", SFX_RAC3_AE},
+ {"RAC3_AF", SFX_RAC3_AF},
+ {"RAC3_AG", SFX_RAC3_AG},
+ {"RAYS1AA", SFX_RAYS1AA},
+ {"RAYS1AB", SFX_RAYS1AB},
+ {"RAYS1AC", SFX_RAYS1AC},
+ {"RAYS1BA", SFX_RAYS1BA},
+ {"RAYS1BB", SFX_RAYS1BB},
+ {"RAYS1CA", SFX_RAYS1CA},
+ {"RAYS1CB", SFX_RAYS1CB},
+ {"RAYS1CC", SFX_RAYS1CC},
+ {"RAYS1CD", SFX_RAYS1CD},
+ {"RAYS1CE", SFX_RAYS1CE},
+ {"RAYS1CF", SFX_RAYS1CF},
+ {"RAYS1DA", SFX_RAYS1DA},
+ {"RAYS1DB", SFX_RAYS1DB},
+ {"RAYS1DC", SFX_RAYS1DC},
+ {"RAYS2AA", SFX_RAYS2AA},
+ {"RAYS2AB", SFX_RAYS2AB},
+ {"RAYS2AD", SFX_RAYS2AD},
+ {"RAYS2AE", SFX_RAYS2AE},
+ {"RAYS2AF", SFX_RAYS2AF},
+ {"RAYS2AG", SFX_RAYS2AG},
+ {"RAYS2AH", SFX_RAYS2AH},
+ {"RAYS2AI", SFX_RAYS2AI},
+ {"RAYS2CA", SFX_RAYS2CA},
+ {"RAYS2DA", SFX_RAYS2DA},
+ {"RAYS4AA", SFX_RAYS4AA},
+ {"RAYS4AB", SFX_RAYS4AB},
+ {"RAYS4AC", SFX_RAYS4AC},
+ {"RAYS4AD", SFX_RAYS4AD},
+ {"RAYS4AE", SFX_RAYS4AE},
+ {"RAYS4AF", SFX_RAYS4AF},
+ {"RAYS5AA", SFX_RAYS5AA},
+ {"RAYS5AB", SFX_RAYS5AB},
+ {"RAYS5AC", SFX_RAYS5AC},
+ {"RAYS5AD", SFX_RAYS5AD},
+ {"RAYS5AE", SFX_RAYS5AE},
+ {"RAYS5AF", SFX_RAYS5AF},
+ {"RAYS5AG", SFX_RAYS5AG},
+ {"RAYS5AH", SFX_RAYS5AH},
+ {"RAYS5AI", SFX_RAYS5AI},
+ {"SAL1_AA", SFX_SAL1_AA},
+ {"SAL1_AB", SFX_SAL1_AB},
+ {"SAL1_AC", SFX_SAL1_AC},
+ {"SAL1_AE", SFX_SAL1_AE},
+ {"SAL2_AA", SFX_SAL2_AA},
+ {"SAL2_AB", SFX_SAL2_AB},
+ {"SAL2_AC", SFX_SAL2_AC},
+ {"SAL2_AD", SFX_SAL2_AD},
+ {"SAL2_AF", SFX_SAL2_AF},
+ {"SAL2_AG", SFX_SAL2_AG},
+ {"SAL2_CK", SFX_SAL2_CK},
+ {"SAL2_DA", SFX_SAL2_DA},
+ {"SAL2_DB", SFX_SAL2_DB},
+ {"SAL2_DC", SFX_SAL2_DC},
+ {"SAL2_EA", SFX_SAL2_EA},
+ {"SAL3_AA", SFX_SAL3_AA},
+ {"SAL3_AD", SFX_SAL3_AD},
+ {"SAL3_AE", SFX_SAL3_AE},
+ {"SAL3_AF", SFX_SAL3_AF},
+ {"SAL3_AG", SFX_SAL3_AG},
+ {"SAL3_AI", SFX_SAL3_AI},
+ {"SAL3_BB", SFX_SAL3_BB},
+ {"SAL3_CB", SFX_SAL3_CB},
+ {"SALH4AB", SFX_SALH4AB},
+ {"SALH4AC", SFX_SALH4AC},
+ {"SALH4AE", SFX_SALH4AE},
+ {"SALH4AF", SFX_SALH4AF},
+ {"SALH4AH", SFX_SALH4AH},
+ {"SALH4AI", SFX_SALH4AI},
+ {"SALH4AJ", SFX_SALH4AJ},
+ {"SAL4_AA", SFX_SAL4_AA},
+ {"SAL4_AB", SFX_SAL4_AB},
+ {"SAL4_AC", SFX_SAL4_AC},
+ {"SAL4_AD", SFX_SAL4_AD},
+ {"SAL4_AE", SFX_SAL4_AE},
+ {"SAL4_AF", SFX_SAL4_AF},
+ {"SAL4_AH", SFX_SAL4_AH},
+ {"SAL4_AI", SFX_SAL4_AI},
+ {"SAL4_BA", SFX_SAL4_BA},
+ {"SAL4_CA", SFX_SAL4_CA},
+ {"SAL4_CB", SFX_SAL4_CB},
+ {"SAL4_CC", SFX_SAL4_CC},
+ {"SAL4_CD", SFX_SAL4_CD},
+ {"SAL4_CE", SFX_SAL4_CE},
+ {"SAL4_CF", SFX_SAL4_CF},
+ {"SAL4_CG", SFX_SAL4_CG},
+ {"SAL4_CH", SFX_SAL4_CH},
+ {"SAL4_CI", SFX_SAL4_CI},
+ {"SAL4_CJ", SFX_SAL4_CJ},
+ {"SAL4_CK", SFX_SAL4_CK},
+ {"SAL4_CL", SFX_SAL4_CL},
+ {"SAL4_CM", SFX_SAL4_CM},
+ {"SAL4_CN", SFX_SAL4_CN},
+ {"SAL4_CO", SFX_SAL4_CO},
+ {"SAL4_CP", SFX_SAL4_CP},
+ {"SAL4_CQ", SFX_SAL4_CQ},
+ {"SAL4_DA", SFX_SAL4_DA},
+ {"SAL5_AB", SFX_SAL5_AB},
+ {"SAL5_AE", SFX_SAL5_AE},
+ {"SAL5_AH", SFX_SAL5_AH},
+ {"SAL5_AI", SFX_SAL5_AI},
+ {"SAL5_AJ", SFX_SAL5_AJ},
+ {"SAL6_AA", SFX_SAL6_AA},
+ {"SAL6_AB", SFX_SAL6_AB},
+ {"SAL6_AC", SFX_SAL6_AC},
+ {"SAL6_AE", SFX_SAL6_AE},
+ {"SAL6_AF", SFX_SAL6_AF},
+ {"SAL6_AG", SFX_SAL6_AG},
+ {"SAL6_AH", SFX_SAL6_AH},
+ {"SAL6_AI", SFX_SAL6_AI},
+ {"SAL6_AJ", SFX_SAL6_AJ},
+ {"SAL6_BA", SFX_SAL6_BA},
+ {"SAL6_BB", SFX_SAL6_BB},
+ {"SAL6_BC", SFX_SAL6_BC},
+ {"SAL6_BD", SFX_SAL6_BD},
+ {"SAL6_BE", SFX_SAL6_BE},
+ {"SAL6_BF", SFX_SAL6_BF},
+ {"SAL6_BH", SFX_SAL6_BH},
+ {"SAL6_BJ", SFX_SAL6_BJ},
+ {"SAL6_BK", SFX_SAL6_BK},
+ {"SAL7_AA", SFX_SAL7_AA},
+ {"SAL7_AB", SFX_SAL7_AB},
+ {"SAL7_AC", SFX_SAL7_AC},
+ {"SAL7_AD", SFX_SAL7_AD},
+ {"SAL7_AE", SFX_SAL7_AE},
+ {"SAL7_AF", SFX_SAL7_AF},
+ {"SAL7_AG", SFX_SAL7_AG},
+ {"SAL7_AI", SFX_SAL7_AI},
+ {"SAL7_AJ", SFX_SAL7_AJ},
+ {"SAL7_AK", SFX_SAL7_AK},
+ {"SAL7_BA", SFX_SAL7_BA},
+ {"SAL7_BB", SFX_SAL7_BB},
+ {"SAL7_BC", SFX_SAL7_BC},
+ {"SAL7_BD", SFX_SAL7_BD},
+ {"SAL7_BE", SFX_SAL7_BE},
+ {"SAL7_BF", SFX_SAL7_BF},
+ {"SAL7_BG", SFX_SAL7_BG},
+ {"SAL7_BH", SFX_SAL7_BH},
+ {"SAL7_CA", SFX_SAL7_CA},
+ {"SAL7_CB", SFX_SAL7_CB},
+ {"SAL7_CC", SFX_SAL7_CC},
+ {"SAL8_AA", SFX_SAL8_AA},
+ {"SAL8_AB", SFX_SAL8_AB},
+ {"SAL8_AC", SFX_SAL8_AC},
+ {"SAL8_BA", SFX_SAL8_BA},
+ {"SAL8_BC", SFX_SAL8_BC},
+ {"SAL8_BD", SFX_SAL8_BD},
+ {"SAL8_BE", SFX_SAL8_BE},
+ {"SAL8_BF", SFX_SAL8_BF},
+ {"SAL8_CA", SFX_SAL8_CA},
+ {"SAL8_CC", SFX_SAL8_CC},
+ {"SAL8_DA", SFX_SAL8_DA},
+ {"SAL8_DB", SFX_SAL8_DB},
+ {"SAL8_DC", SFX_SAL8_DC},
+ {"SAL8_EA", SFX_SAL8_EA},
+ {"SAL8_EC", SFX_SAL8_EC},
+ {"SAL8_ED", SFX_SAL8_ED},
+ {"SAL8_EE", SFX_SAL8_EE},
+ {"SAL8_FA", SFX_SAL8_FA},
+ {"SAL8_GA", SFX_SAL8_GA},
+ {"SAL8_GB", SFX_SAL8_GB},
+ {"SALH1GB", SFX_SALH1GB},
+ {"SALH1HB", SFX_SALH1HB},
+ {"SALH2AA", SFX_SALH2AA},
+ {"SALH2AB", SFX_SALH2AB},
+ {"SALH2AC", SFX_SALH2AC},
+ {"SALH2AD", SFX_SALH2AD},
+ {"SALH2AE", SFX_SALH2AE},
+ {"SALH2AF", SFX_SALH2AF},
+ {"SALH2AG", SFX_SALH2AG},
+ {"SALH2AH", SFX_SALH2AH},
+ {"SALH2BA", SFX_SALH2BA},
+ {"SALH2BB", SFX_SALH2BB},
+ {"SALH2BC", SFX_SALH2BC},
+ {"SALH2BD", SFX_SALH2BD},
+ {"SALH2BH", SFX_SALH2BH},
+ {"SALH2BI", SFX_SALH2BI},
+ {"SALH2CA", SFX_SALH2CA},
+ {"SALH3AA", SFX_SALH3AA},
+ {"SALH3AB", SFX_SALH3AB},
+ {"SALH3AC", SFX_SALH3AC},
+ {"SALH3AD", SFX_SALH3AD},
+ {"SALH3AE", SFX_SALH3AE},
+ {"SALH3AF", SFX_SALH3AF},
+ {"SALH3AG", SFX_SALH3AG},
+ {"SALH3AH", SFX_SALH3AH},
+ {"SALH3AI", SFX_SALH3AI},
+ {"SALH3AJ", SFX_SALH3AJ},
+ {"SALH3AK", SFX_SALH3AK},
+ {"SALH3BA", SFX_SALH3BA},
+ {"SALH3BB", SFX_SALH3BB},
+ {"SALH3CA", SFX_SALH3CA},
+ {"SALH3CC", SFX_SALH3CC},
+ {"SALH3CD", SFX_SALH3CD},
+ {"SALH4AA", SFX_SALH4AA},
+ {"SALH4AD", SFX_SALH4AD},
+ {"SALH4AG", SFX_SALH4AG},
+ {"SALH4BA", SFX_SALH4BA},
+ {"SALH4BB", SFX_SALH4BB},
+ {"SALH4BC", SFX_SALH4BC},
+ {"SALH4CA", SFX_SALH4CA},
+ {"SALH5CA", SFX_SALH5CA},
+ {"SALH5CB", SFX_SALH5CB},
+ {"SALH5CC", SFX_SALH5CC},
+ {"SALH5DA", SFX_SALH5DA},
+ {"SALH5DB", SFX_SALH5DB},
+ {"SALH5EA", SFX_SALH5EA},
+ {"SALH5EB", SFX_SALH5EB},
+ {"SALH5FA", SFX_SALH5FA},
+ {"SALH5GA", SFX_SALH5GA},
+ {"SALH5GB", SFX_SALH5GB},
+ {"SALH5GC", SFX_SALH5GC},
+ {"SALH5HA", SFX_SALH5HA},
+ {"SALH5IA", SFX_SALH5IA},
+ {"SALH5IB", SFX_SALH5IB},
+ {"SALH5JA", SFX_SALH5JA},
+ {"SALH5KA", SFX_SALH5KA},
+ {"SALH5KB", SFX_SALH5KB},
+ {"SALH5LA", SFX_SALH5LA},
+ {"SALH5LB", SFX_SALH5LB},
+ {"SALH5MA", SFX_SALH5MA},
+ {"SALH5MB", SFX_SALH5MB},
+ {"SALH5MC", SFX_SALH5MC},
+ {"SALH5NA", SFX_SALH5NA},
+ {"SALH5OA", SFX_SALH5OA},
+ {"SALH5OB", SFX_SALH5OB},
+ {"SALH5OC", SFX_SALH5OC},
+ {"SALH5OD", SFX_SALH5OD},
+ {"SALH5OE", SFX_SALH5OE},
+ {"SALH5OF", SFX_SALH5OF},
+ {"SALH5OG", SFX_SALH5OG},
+ {"SALH5OH", SFX_SALH5OH},
+ {"SALH5OI", SFX_SALH5OI},
+ {"SALH5OJ", SFX_SALH5OJ},
+ {"SALH5OK", SFX_SALH5OK},
+ {"SALS1AA", SFX_SALS1AA},
+ {"SALS1AB", SFX_SALS1AB},
+ {"SALS1AC", SFX_SALS1AC},
+ {"SALS1AD", SFX_SALS1AD},
+ {"SALS1AE", SFX_SALS1AE},
+ {"SALS1AF", SFX_SALS1AF},
+ {"SALS1AG", SFX_SALS1AG},
+ {"SALS1AH", SFX_SALS1AH},
+ {"SALS1AI", SFX_SALS1AI},
+ {"SALS2AA", SFX_SALS2AA},
+ {"SALS2AB", SFX_SALS2AB},
+ {"SALS2AC", SFX_SALS2AC},
+ {"SALS2AD", SFX_SALS2AD},
+ {"SALS2BC", SFX_SALS2BC},
+ {"SALS2BD", SFX_SALS2BD},
+ {"SALS2BE", SFX_SALS2BE},
+ {"SALS2BF", SFX_SALS2BF},
+ {"SALS2CD", SFX_SALS2CD},
+ {"SALS3AA", SFX_SALS3AA},
+ {"SALS3AB", SFX_SALS3AB},
+ {"SALS3AC", SFX_SALS3AC},
+ {"SALS3BB", SFX_SALS3BB},
+ {"SALS3BD", SFX_SALS3BD},
+ {"SALS3CA", SFX_SALS3CA},
+ {"SALS3CB", SFX_SALS3CB},
+ {"SALS3CC", SFX_SALS3CC},
+ {"SALS3CD", SFX_SALS3CD},
+ {"SALS3CE", SFX_SALS3CE},
+ {"SALS3CF", SFX_SALS3CF},
+ {"SALS3CG", SFX_SALS3CG},
+ {"SALS3DA", SFX_SALS3DA},
+ {"SALS3DE", SFX_SALS3DE},
+ {"SALS3DH", SFX_SALS3DH},
+ {"SALS3DI", SFX_SALS3DI},
+ {"SALS4AA", SFX_SALS4AA},
+ {"SALS4AB", SFX_SALS4AB},
+ {"SALS4AC", SFX_SALS4AC},
+ {"SALS4AD", SFX_SALS4AD},
+ {"SALS4AE", SFX_SALS4AE},
+ {"SALS4AF", SFX_SALS4AF},
+ {"SALS4BA", SFX_SALS4BA},
+ {"SALS4BB", SFX_SALS4BB},
+ {"SALS4BC", SFX_SALS4BC},
+ {"SALS4BD", SFX_SALS4BD},
+ {"SALS4BE", SFX_SALS4BE},
+ {"SALS4BF", SFX_SALS4BF},
+ {"SALS4BG", SFX_SALS4BG},
+ {"SALS4BH", SFX_SALS4BH},
+ {"SALS5AA", SFX_SALS5AA},
+ {"SALS5AB", SFX_SALS5AB},
+ {"SALS5AC", SFX_SALS5AC},
+ {"SALS5AD", SFX_SALS5AD},
+ {"SALS5AE", SFX_SALS5AE},
+ {"SALS5AF", SFX_SALS5AF},
+ {"SALS5BA", SFX_SALS5BA},
+ {"SALS5BB", SFX_SALS5BB},
+ {"SALS5BC", SFX_SALS5BC},
+ {"SALS5BD", SFX_SALS5BD},
+ {"SALS5BE", SFX_SALS5BE},
+ {"SALS5BF", SFX_SALS5BF},
+ {"SALS5BG", SFX_SALS5BG},
+ {"SALS5CA", SFX_SALS5CA},
+ {"SALS5CB", SFX_SALS5CB},
+ {"SALS5CC", SFX_SALS5CC},
+ {"SALS5CD", SFX_SALS5CD},
+ {"SALS5CE", SFX_SALS5CE},
+ {"SALS5CF", SFX_SALS5CF},
+ {"SALS5CG", SFX_SALS5CG},
+ {"SALS6AA", SFX_SALS6AA},
+ {"SALS6AB", SFX_SALS6AB},
+ {"SALS6AD", SFX_SALS6AD},
+ {"SALS6AE", SFX_SALS6AE},
+ {"SALS6AF", SFX_SALS6AF},
+ {"SALS6AG", SFX_SALS6AG},
+ {"SALS6AH", SFX_SALS6AH},
+ {"SALX_AA", SFX_SALX_AA},
+ {"SALX_AB", SFX_SALX_AB},
+ {"SALX_AC", SFX_SALX_AC},
+ {"SALX_AD", SFX_SALX_AD},
+ {"SALX_AE", SFX_SALX_AE},
+ {"SALX_AF", SFX_SALX_AF},
+ {"SALX_AG", SFX_SALX_AG},
+ {"SALX_AH", SFX_SALX_AH},
+ {"SALX_AI", SFX_SALX_AI},
+ {"SALX_AK", SFX_SALX_AK},
+ {"SALX_AL", SFX_SALX_AL},
+ {"SALX_AM", SFX_SALX_AM},
+ {"SALX_AN", SFX_SALX_AN},
+ {"SALX_AO", SFX_SALX_AO},
+ {"SALX_AP", SFX_SALX_AP},
+ {"SALX_AQ", SFX_SALX_AQ},
+ {"SALX_AR", SFX_SALX_AR},
+ {"SALX_AS", SFX_SALX_AS},
+ {"TAN1_AA", SFX_TAN1_AA},
+ {"TAN1_AB", SFX_TAN1_AB},
+ {"TAN1_AD", SFX_TAN1_AD},
+ {"TAN1_AE", SFX_TAN1_AE},
+ {"TAN1_AF", SFX_TAN1_AF},
+ {"TAN1_AG", SFX_TAN1_AG},
+ {"TAN1_AH", SFX_TAN1_AH},
+ {"TAN1_AI", SFX_TAN1_AI},
+ {"TAN1_AJ", SFX_TAN1_AJ},
+ {"TAN2_AA", SFX_TAN2_AA},
+ {"TAN2_AB", SFX_TAN2_AB},
+ {"TAN2_AC", SFX_TAN2_AC},
+ {"TAN2_AE", SFX_TAN2_AE},
+ {"TAN2_AF", SFX_TAN2_AF},
+ {"TAN2_AG", SFX_TAN2_AG},
+ {"TAN2_AH", SFX_TAN2_AH},
+ {"TAN2_AJ", SFX_TAN2_AJ},
+ {"TAN3_AA", SFX_TAN3_AA},
+ {"TAN3_AB", SFX_TAN3_AB},
+ {"TAN3_AC", SFX_TAN3_AC},
+ {"TAN3_AD", SFX_TAN3_AD},
+ {"TAN3_AE", SFX_TAN3_AE},
+ {"TAN3_AF", SFX_TAN3_AF},
+ {"TAN3_AG", SFX_TAN3_AG},
+ {"TAN3_AH", SFX_TAN3_AH},
+ {"TOSH1AA", SFX_TOSH1AA},
+ {"TOSH1AB", SFX_TOSH1AB},
+ {"TOSH1AC", SFX_TOSH1AC},
+ {"TOSH1AD", SFX_TOSH1AD},
+ {"TOSH2AA", SFX_TOSH2AA},
+ {"TOSH2AB", SFX_TOSH2AB},
+ {"TOSH2AC", SFX_TOSH2AC},
+ {"TOSH2AE", SFX_TOSH2AE},
+ {"TOSH2AF", SFX_TOSH2AF},
+ {"TOSH2AG", SFX_TOSH2AG},
+ {"TOSH2AH", SFX_TOSH2AH},
+ {"TOSH2AI", SFX_TOSH2AI},
+ {"TOSH2AJ", SFX_TOSH2AJ},
+ {"TOSH2AK", SFX_TOSH2AK},
+ {"TOSH2AL", SFX_TOSH2AL},
+ {"TOSH2AM", SFX_TOSH2AM},
+ {"TOSH3AA", SFX_TOSH3AA},
+ {"TOSH3AB", SFX_TOSH3AB},
+ {"TOSH3AC", SFX_TOSH3AC},
+ {"TOSH3AD", SFX_TOSH3AD},
+ {"TOSH3AE", SFX_TOSH3AE},
+ {"TOSH3AF", SFX_TOSH3AF},
+ {"TOSH3AG", SFX_TOSH3AG},
+ {"TOSH3AH", SFX_TOSH3AH},
+ {"TOSH3AI", SFX_TOSH3AI},
+ {"TOSH3AJ", SFX_TOSH3AJ},
+ {"TOSH3AK", SFX_TOSH3AK},
+ {"TOSH3BA", SFX_TOSH3BA},
+ {"TOSH3BB", SFX_TOSH3BB},
+ {"TOSH3CA", SFX_TOSH3CA},
+ {"TOSH3CB", SFX_TOSH3CB},
+ {"TOSH3CC", SFX_TOSH3CC},
+ {"TOSH3CD", SFX_TOSH3CD},
+ {"TOSH3CE", SFX_TOSH3CE},
+ {"TOSH3CF", SFX_TOSH3CF},
+ {"TOSH3CG", SFX_TOSH3CG},
+ {"TOSH3CH", SFX_TOSH3CH},
+ {"TOSH3CI", SFX_TOSH3CI},
+ {"TOSH3CJ", SFX_TOSH3CJ},
+ {"TOSH3CK", SFX_TOSH3CK},
+ {"TOSH3DA", SFX_TOSH3DA},
+ {"TOSH3EA", SFX_TOSH3EA},
+ {"TOSH3FA", SFX_TOSH3FA},
+ {"TOSH3FB", SFX_TOSH3FB},
+ {"TOSH3FC", SFX_TOSH3FC},
+ {"TOSH3FD", SFX_TOSH3FD},
+ {"TOSH3FE", SFX_TOSH3FE},
+ {"TOSH3FF", SFX_TOSH3FF},
+ {"TOSH3GA", SFX_TOSH3GA},
+ {"TOSH3GB", SFX_TOSH3GB},
+ {"TOSH3HA", SFX_TOSH3HA},
+ {"TOSH4AA", SFX_TOSH4AA},
+ {"TOSH4AB", SFX_TOSH4AB},
+ {"TOSH4AC", SFX_TOSH4AC},
+ {"TOSH4AD", SFX_TOSH4AD},
+ {"TOSH4AE", SFX_TOSH4AE},
+ {"TOSH4AF", SFX_TOSH4AF},
+ {"TOSH4AG", SFX_TOSH4AG},
+ {"TOSH4AH", SFX_TOSH4AH},
+ {"TOSH4AI", SFX_TOSH4AI},
+ {"TOSH4AJ", SFX_TOSH4AJ},
+ {"TOSH4BA", SFX_TOSH4BA},
+ {"TOSH4BB", SFX_TOSH4BB},
+ {"TOSH4BC", SFX_TOSH4BC},
+ {"TOSH4CA", SFX_TOSH4CA},
+ {"TOSH4CB", SFX_TOSH4CB},
+ {"TOSH4CC", SFX_TOSH4CC},
+ {"TOSH4CD", SFX_TOSH4CD},
+ {"TOSH4CE", SFX_TOSH4CE},
+ {"TOSH4DA", SFX_TOSH4DA},
+ {"TOSH4DB", SFX_TOSH4DB},
+ {"TOSH4DC", SFX_TOSH4DC},
+ {"VAL1_AA", SFX_VAL1_AA},
+ {"VAL1_AB", SFX_VAL1_AB},
+ {"VAL1_AC", SFX_VAL1_AC},
+ {"VAL1_AD", SFX_VAL1_AD},
+ {"VAL1_AE", SFX_VAL1_AE},
+ {"VAL1_AF", SFX_VAL1_AF},
+ {"VAL1_AG", SFX_VAL1_AG},
+ {"VAL1_AH", SFX_VAL1_AH},
+ {"VAL1_AI", SFX_VAL1_AI},
+ {"VAL2_AA", SFX_VAL2_AA},
+ {"VAL2_AB", SFX_VAL2_AB},
+ {"VAL2_AC", SFX_VAL2_AC},
+ {"VAL2_AD", SFX_VAL2_AD},
+ {"VAL2_AE", SFX_VAL2_AE},
+ {"VAL2_AF", SFX_VAL2_AF},
+ {"VAL2_AG", SFX_VAL2_AG},
+ {"VAL2_AH", SFX_VAL2_AH},
+ {"VAL2_AI", SFX_VAL2_AI},
+ {"VAL3_AA", SFX_VAL3_AA},
+ {"VAL3_AB", SFX_VAL3_AB},
+ {"VAL3_AC", SFX_VAL3_AC},
+ {"VAL3_AD", SFX_VAL3_AD},
+ {"VAL3_AE", SFX_VAL3_AE},
+ {"VAL3_AF", SFX_VAL3_AF},
+ {"VIC1_BA", SFX_VIC1_BA},
+ {"VIC1_BB", SFX_VIC1_BB},
+ {"VIC1_BC", SFX_VIC1_BC},
+ {"VIC1_BD", SFX_VIC1_BD},
+ {"VIC1_BE", SFX_VIC1_BE},
+ {"VIC1_BF", SFX_VIC1_BF},
+ {"VIC1_CA", SFX_VIC1_CA},
+ {"VIC1_CB", SFX_VIC1_CB},
+ {"VIC1_CC", SFX_VIC1_CC},
+ {"VIC1_CD", SFX_VIC1_CD},
+ {"VIC1_CE", SFX_VIC1_CE},
+ {"VIC1_DA", SFX_VIC1_DA},
+ {"VIC1_DB", SFX_VIC1_DB},
+ {"VIC1_DC", SFX_VIC1_DC},
+ {"VIC1_DD", SFX_VIC1_DD},
+ {"VIC1_DE", SFX_VIC1_DE},
+ {"VIC1_DF", SFX_VIC1_DF},
+ {"VIC1_DG", SFX_VIC1_DG},
+ {"VIC1_DH", SFX_VIC1_DH},
+ {"VIC2_AA", SFX_VIC2_AA},
+ {"VIC2_AB", SFX_VIC2_AB},
+ {"VIC2_AC", SFX_VIC2_AC},
+ {"VIC2_AD", SFX_VIC2_AD},
+ {"VIC2_AF", SFX_VIC2_AF},
+ {"VIC2_AG", SFX_VIC2_AG},
+ {"VIC2_AH", SFX_VIC2_AH},
+ {"VIC2_BA", SFX_VIC2_BA},
+ {"VIC2_BE", SFX_VIC2_BE},
+ {"VIC2_BI", SFX_VIC2_BI},
+ {"VIC3_AA", SFX_VIC3_AA},
+ {"VIC3_AB", SFX_VIC3_AB},
+ {"VIC3_AD", SFX_VIC3_AD},
+ {"VIC3_AE", SFX_VIC3_AE},
+ {"VIC3_AF", SFX_VIC3_AF},
+ {"VIC3_AG", SFX_VIC3_AG},
+ {"VIC3_AH", SFX_VIC3_AH},
+ {"VIC3_AJ", SFX_VIC3_AJ},
+ {"VIC3_AK", SFX_VIC3_AK},
+ {"VIC3_AL", SFX_VIC3_AL},
+ {"VIC3_AM", SFX_VIC3_AM},
+ {"VIC3_AN", SFX_VIC3_AN},
+ {"VIC3_AO", SFX_VIC3_AO},
+ {"VIC3_BA", SFX_VIC3_BA},
+ {"VIC3_BB", SFX_VIC3_BB},
+ {"VIC3_BC", SFX_VIC3_BC},
+ {"VIC4_AA", SFX_VIC4_AA},
+ {"VIC4_AB", SFX_VIC4_AB},
+ {"VIC4_AC", SFX_VIC4_AC},
+ {"VIC4_AD", SFX_VIC4_AD},
+ {"VIC4_AE", SFX_VIC4_AE},
+ {"VIC4_AF", SFX_VIC4_AF},
+ {"VIC4_AG", SFX_VIC4_AG},
+ {"VIC4_AH", SFX_VIC4_AH},
+ {"VIC4_AI", SFX_VIC4_AI},
+ {"VIC4_AJ", SFX_VIC4_AJ},
+ {"VIC4_AK", SFX_VIC4_AK},
+ {"VIC4_AL", SFX_VIC4_AL},
+ {"VIC4_AM", SFX_VIC4_AM},
+ {"VIC4_AN", SFX_VIC4_AN},
+ {"VIC4_BA", SFX_VIC4_BA},
+ {"VIC4_BB", SFX_VIC4_BB},
+ {"VIC4_BC", SFX_VIC4_BC},
+ {"VIC4_BD", SFX_VIC4_BD},
+ {"VIC4_BE", SFX_VIC4_BE},
+ {"VIC4_BF", SFX_VIC4_BF},
+ {"VIC4_BG", SFX_VIC4_BG},
+ {"VIC4_BH", SFX_VIC4_BH},
+ {"VIC5_AA", SFX_VIC5_AA},
+ {"VIC5_AB", SFX_VIC5_AB},
+ {"VIC5_AC", SFX_VIC5_AC},
+ {"VIC5_AD", SFX_VIC5_AD},
+ {"VIC5_AE", SFX_VIC5_AE},
+ {"VIC5_AF", SFX_VIC5_AF},
+ {"VIC5_AG", SFX_VIC5_AG},
+ {"VIC5_AH", SFX_VIC5_AH},
+ {"VIC5_AI", SFX_VIC5_AI},
+ {"VIC5_AJ", SFX_VIC5_AJ},
+ {"VIC5_AK", SFX_VIC5_AK},
+ {"VIC5_AL", SFX_VIC5_AL},
+ {"VIC5_FA", SFX_VIC5_FA},
+ {"VIC5_FD", SFX_VIC5_FD},
+ {"VIC5_FF", SFX_VIC5_FF},
+ {"VIC5_FG", SFX_VIC5_FG},
+ {"VIC5_FH", SFX_VIC5_FH},
+ {"VIC5_FI", SFX_VIC5_FI},
+ {"VIC5_FJ", SFX_VIC5_FJ},
+ {"VIC5_FK", SFX_VIC5_FK},
+ {"VIC6_AA", SFX_VIC6_AA},
+ {"VIC6_AB", SFX_VIC6_AB},
+ {"VIC6_AC", SFX_VIC6_AC},
+ {"VIC6_AD", SFX_VIC6_AD},
+ {"VIC6_AE", SFX_VIC6_AE},
+ {"VIC6_AF", SFX_VIC6_AF},
+ {"VIC6_AG", SFX_VIC6_AG},
+ {"VIC6_AH", SFX_VIC6_AH},
+ {"VIC6_AI", SFX_VIC6_AI},
+ {"VIC6_AJ", SFX_VIC6_AJ},
+ {"VIC6_AK", SFX_VIC6_AK},
+ {"VIC6_AL", SFX_VIC6_AL},
+ {"VIC6_AM", SFX_VIC6_AM},
+ {"VIC6_AN", SFX_VIC6_AN},
+ {"VIC6_AO", SFX_VIC6_AO},
+ {"VIC7_AA", SFX_VIC7_AA},
+ {"VIC7_AB", SFX_VIC7_AB},
+ {"VIC7_AC", SFX_VIC7_AC},
+ {"VIC7_AD", SFX_VIC7_AD},
+ {"VIC7_AE", SFX_VIC7_AE},
+ {"VIC7_AG", SFX_VIC7_AG},
+ {"VIC7_AH", SFX_VIC7_AH},
+ {"VIC7_AJ", SFX_VIC7_AJ},
+ {"VIC7_AL", SFX_VIC7_AL},
+ {"VIC7_AM", SFX_VIC7_AM},
+ {"VIC7_AN", SFX_VIC7_AN},
+ {"VIC7_AO", SFX_VIC7_AO},
+ {"VIC7_BA", SFX_VIC7_BA},
+ {"VIC7_BB", SFX_VIC7_BB},
+ {"VIC7_BC", SFX_VIC7_BC},
+ {"VIC7_BD", SFX_VIC7_BD},
+ {"VIC7_BE", SFX_VIC7_BE},
+ {"VIC7_BF", SFX_VIC7_BF},
+ {"VIC7_BG", SFX_VIC7_BG},
+ {"VIC7_BH", SFX_VIC7_BH},
+ {"VIC7_BI", SFX_VIC7_BI},
+ {"WAC1_AA", SFX_WAC1_AA},
+ {"WAC1_AB", SFX_WAC1_AB},
+ {"WAC1_AC", SFX_WAC1_AC},
+ {"WAC1_AD", SFX_WAC1_AD},
+ {"WAC1_AE", SFX_WAC1_AE},
+ {"WAC1_AF", SFX_WAC1_AF},
+ {"WAC1_AG", SFX_WAC1_AG},
+ {"WAC1_AH", SFX_WAC1_AH},
+ {"WAC2_AA", SFX_WAC2_AA},
+ {"WAC2_AB", SFX_WAC2_AB},
+ {"WAC2_AC", SFX_WAC2_AC},
+ {"WAC2_AD", SFX_WAC2_AD},
+ {"WAC2_AE", SFX_WAC2_AE},
+ {"WAC2_AF", SFX_WAC2_AF},
+ {"WAC2_AG", SFX_WAC2_AG},
+ {"WED1_AA", SFX_WED1_AA},
+ {"WED1_AB", SFX_WED1_AB},
+ {"WED1_AC", SFX_WED1_AC},
+ {"WED1_AD", SFX_WED1_AD},
+ {"WED1_AE", SFX_WED1_AE},
+ {"WED1_AF", SFX_WED1_AF},
+ {"WED1_AG", SFX_WED1_AG},
+ {"WED2_AA", SFX_WED2_AA},
+ {"WED2_AB", SFX_WED2_AB},
+ {"WED2_AC", SFX_WED2_AC},
+ {"WED2_AD", SFX_WED2_AD},
+ {"WED2_AE", SFX_WED2_AE},
+ {"WED2_AF", SFX_WED2_AF},
+ {"WED2_AG", SFX_WED2_AG},
+ {"WED2_AH", SFX_WED2_AH},
+ {"WED3_AA", SFX_WED3_AA},
+ {"WED3_AB", SFX_WED3_AB},
+ {"WED3_AC", SFX_WED3_AC},
+ {"WED3_AD", SFX_WED3_AD},
+ {"WED3_AE", SFX_WED3_AE},
+ {"WED3_AF", SFX_WED3_AF},
+ {"WED3_AG", SFX_WED3_AG},
+ {"WED3_AH", SFX_WED3_AH},
+ {"WED3_AI", SFX_WED3_AI},
+ {"WED3_AJ", SFX_WED3_AJ},
+ {"WED3_AK", SFX_WED3_AK},
+ {"WED3_AL", SFX_WED3_AL},
+ {"DONH3IA", SFX_DONH3IA},
+ {"DONH3JA", SFX_DONH3JA},
+ {"DONH5CA", SFX_DONH5CA},
+ {"DONH5CB", SFX_DONH5CB},
+ {"DONS7CA", SFX_DONS7CA},
+ {"DONS7CB", SFX_DONS7CB},
+ {"DONS7CC", SFX_DONS7CC},
+ {"DONS7CD", SFX_DONS7CD},
+ {"DONS7CE", SFX_DONS7CE},
+ {"JDT1_MA", SFX_JDT1_MA},
+ {"JDT1_MB", SFX_JDT1_MB},
+ {"JDT1_MC", SFX_JDT1_MC},
+ {"JDT1_MD", SFX_JDT1_MD},
+ {"JDT1_ME", SFX_JDT1_ME},
+ {"JDT1_MF", SFX_JDT1_MF},
+ {"JDT1_MG", SFX_JDT1_MG},
+ {"JDT1_MH", SFX_JDT1_MH},
+ {"JDT4_BA", SFX_JDT4_BA},
+ {"JDT4_BB", SFX_JDT4_BB},
+ {"JDT4_BC", SFX_JDT4_BC},
+ {"JDT5_FA", SFX_JDT5_FA},
+ {"JDT5_FB", SFX_JDT5_FB},
+ {"JDT5_FC", SFX_JDT5_FC},
+ {"JDT5_GA", SFX_JDT5_GA},
+ {"JDT5_GB", SFX_JDT5_GB},
+ {"JDT6_CA", SFX_JDT6_CA},
+ {"JDT6_CB", SFX_JDT6_CB},
+ {"JDT6_DA", SFX_JDT6_DA},
+ {"JDT7_CD", SFX_JDT7_CD},
+ {"JDT8_AI", SFX_JDT8_AI},
+ {"JDT8_BA", SFX_JDT8_BA},
+ {"JDT8_FD", SFX_JDT8_FD},
+ {"JDT8_FE", SFX_JDT8_FE},
+ {"JDT8_FF", SFX_JDT8_FF},
+ {"JDT8_FG", SFX_JDT8_FG},
+ {"JDT8_FH", SFX_JDT8_FH},
+ {"JDT8_GA", SFX_JDT8_GA},
+ {"JDT8_HA", SFX_JDT8_HA},
+ {"JDT8_HB", SFX_JDT8_HB},
+ {"MAC1_JC", SFX_MAC1_JC},
+ {"MAC4_DA", SFX_MAC4_DA},
+ {"MAC4_DB", SFX_MAC4_DB},
+ {"MAC4_DC", SFX_MAC4_DC},
+ {"MAC4_DD", SFX_MAC4_DD},
+ {"MAC4_DE", SFX_MAC4_DE},
+ {"MAC4_DF", SFX_MAC4_DF},
+ {"MAC4_DG", SFX_MAC4_DG},
+ {"MAC4_DH", SFX_MAC4_DH},
+ {"MAR1_HD", SFX_MAR1_HD},
+ {"MAR2_GF", SFX_MAR2_GF},
+ {"MAR5_DA", SFX_MAR5_DA},
+ {"MAR5_DB", SFX_MAR5_DB},
+ {"MAR5_DC", SFX_MAR5_DC},
+ {"MAR5_EA", SFX_MAR5_EA},
+ {"MAR5_EB", SFX_MAR5_EB},
+ {"MAR5_EC", SFX_MAR5_EC},
+ {"MAR5_ED", SFX_MAR5_ED},
+ {"NEDS1BA", SFX_NEDS1BA},
+ {"NEDS1BB", SFX_NEDS1BB},
+ {"NEDS1BC", SFX_NEDS1BC},
+ {"NEDS1BD", SFX_NEDS1BD},
+ {"NEDS1BE", SFX_NEDS1BE},
+ {"NEDS1BF", SFX_NEDS1BF},
+ {"NOOD_AA", SFX_NOOD_AA},
+ {"NOOD_AB", SFX_NOOD_AB},
+ {"NOOD_AC", SFX_NOOD_AC},
+ {"NOOD_AD", SFX_NOOD_AD},
+ {"NOOD_AE", SFX_NOOD_AE},
+ {"NOOD_AF", SFX_NOOD_AF},
+ {"NOOD_AG", SFX_NOOD_AG},
+ {"NOOD_AH", SFX_NOOD_AH},
+ {"NOOD_AI", SFX_NOOD_AI},
+ {"NOOD_AJ", SFX_NOOD_AJ},
+ {"NOOD_AK", SFX_NOOD_AK},
+ {"NOOD_AL", SFX_NOOD_AL},
+ {"NOOD_AM", SFX_NOOD_AM},
+ {"NOOD_AN", SFX_NOOD_AN},
+ {"NOOD_AO", SFX_NOOD_AO},
+ {"NOOD_AP", SFX_NOOD_AP},
+ {"NOOD_AQ", SFX_NOOD_AQ},
+ {"NOOD_AR", SFX_NOOD_AR},
+ {"NOOD_AS", SFX_NOOD_AS},
+ {"NOOD_AT", SFX_NOOD_AT},
+ {"PIZZ_AA", SFX_PIZZ_AA},
+ {"PIZZ_AB", SFX_PIZZ_AB},
+ {"PIZZ_AC", SFX_PIZZ_AC},
+ {"PIZZ_AD", SFX_PIZZ_AD},
+ {"PIZZ_AE", SFX_PIZZ_AE},
+ {"PIZZ_AF", SFX_PIZZ_AF},
+ {"PIZZ_AG", SFX_PIZZ_AG},
+ {"PIZZ_AH", SFX_PIZZ_AH},
+ {"PIZZ_AI", SFX_PIZZ_AI},
+ {"PIZZ_AJ", SFX_PIZZ_AJ},
+ {"PIZZ_AK", SFX_PIZZ_AK},
+ {"PIZZ_AL", SFX_PIZZ_AL},
+ {"PIZZ_AM", SFX_PIZZ_AM},
+ {"PIZZ_AN", SFX_PIZZ_AN},
+ {"PIZZ_AO", SFX_PIZZ_AO},
+ {"PIZZ_AP", SFX_PIZZ_AP},
+ {"PIZZ_AQ", SFX_PIZZ_AQ},
+ {"PIZZ_AR", SFX_PIZZ_AR},
+ {"PIZZ_AS", SFX_PIZZ_AS},
+ {"PIZZ_AT", SFX_PIZZ_AT},
+ {"RAYS2BA", SFX_RAYS2BA},
+ {"RAYS2BB", SFX_RAYS2BB},
+ {"RAYS2CA", SFX_RAYS2CA},
+ {"RAYS2CB", SFX_RAYS2CB},
+ {"RAYS2DA", SFX_RAYS2DA},
+ {"RAYS2DB", SFX_RAYS2DB},
+ {"RAYS2EA", SFX_RAYS2EA},
+ {"RAYS2EB", SFX_RAYS2EB},
+ {"RAYS4AA", SFX_RAYS4AA},
+ {"RAYS4AB", SFX_RAYS4AB},
+ {"RAYS4AC", SFX_RAYS4AC},
+ {"RAYS4AD", SFX_RAYS4AD},
+ {"RAYS4AE", SFX_RAYS4AE},
+ {"RAYS4AF", SFX_RAYS4AF},
+ {"RAYS4BA", SFX_RAYS4BA},
+ {"RAYS4BB", SFX_RAYS4BB},
+ {"RAYS4BC", SFX_RAYS4BC},
+ {"RAYS4BD", SFX_RAYS4BD},
+ {"RAYS4BE", SFX_RAYS4BE},
+ {"RAYS4BF", SFX_RAYS4BF},
+ {"RAYS4BG", SFX_RAYS4BG},
+ {"RAYS5BA", SFX_RAYS5BA},
+ {"RAYS5BB", SFX_RAYS5BB},
+ {"RMN_AA", SFX_RMN_AA},
+ {"RMN_AB", SFX_RMN_AB},
+ {"RMN_AC", SFX_RMN_AC},
+ {"RMN_AD", SFX_RMN_AD},
+ {"RMN_AE", SFX_RMN_AE},
+ {"RMN_AF", SFX_RMN_AF},
+ {"RMN_AG", SFX_RMN_AG},
+ {"RMN_AH", SFX_RMN_AH},
+ {"RMN_AI", SFX_RMN_AI},
+ {"RMN_AJ", SFX_RMN_AJ},
+ {"RMN_AK", SFX_RMN_AK},
+ {"SAL1_BA", SFX_SAL1_BA},
+ {"SAL1_BB", SFX_SAL1_BB},
+ {"SAL1_BC", SFX_SAL1_BC},
+ {"SAL1_BD", SFX_SAL1_BD},
+ {"SAL2_BA", SFX_SAL2_BA},
+ {"SAL2_BB", SFX_SAL2_BB},
+ {"SAL2_BC", SFX_SAL2_BC},
+ {"SAL2_BD", SFX_SAL2_BD},
+ {"SAL2_CA", SFX_SAL2_CA},
+ {"SAL2_CB", SFX_SAL2_CB},
+ {"SAL2_CC", SFX_SAL2_CC},
+ {"SAL2_CD", SFX_SAL2_CD},
+ {"SAL2_CE", SFX_SAL2_CE},
+ {"SAL2_CF", SFX_SAL2_CF},
+ {"SAL2_CG", SFX_SAL2_CG},
+ {"SAL2_CH", SFX_SAL2_CH},
+ {"SAL2_CI", SFX_SAL2_CI},
+ {"SAL2_CJ", SFX_SAL2_CJ},
+ {"SAL2_CL", SFX_SAL2_CL},
+ {"SAL2_CM", SFX_SAL2_CM},
+ {"SAL2_CN", SFX_SAL2_CN},
+ {"SAL2_CO", SFX_SAL2_CO},
+ {"SAL2_CP", SFX_SAL2_CP},
+ {"SAL2_CQ", SFX_SAL2_CQ},
+ {"SAL2_CR", SFX_SAL2_CR},
+ {"SAL2_CS", SFX_SAL2_CS},
+ {"SAL2_CT", SFX_SAL2_CT},
+ {"SAL2_CU", SFX_SAL2_CU},
+ {"SAL2_CV", SFX_SAL2_CV},
+ {"SAL2_DD", SFX_SAL2_DD},
+ {"SAL2_DE", SFX_SAL2_DE},
+ {"SAL3_BA", SFX_SAL3_BA},
+ {"SAL3_CA", SFX_SAL3_CA},
+ {"SAL3_DA", SFX_SAL3_DA},
+ {"SAL4_AA", SFX_SAL4_AA},
+ {"SAL5_AA", SFX_SAL5_AA},
+ {"SAL5_AD", SFX_SAL5_AD},
+ {"SAL5_AF", SFX_SAL5_AF},
+ {"SAL5_AG", SFX_SAL5_AG},
+ {"SAL6_CA", SFX_SAL6_CA},
+ {"SAL6_CB", SFX_SAL6_CB},
+ {"SAL6_CC", SFX_SAL6_CC},
+ {"SAL6_CD", SFX_SAL6_CD},
+ {"SAL7_CD", SFX_SAL7_CD},
+ {"SAL8_HA", SFX_SAL8_HA},
+ {"SAL8_HB", SFX_SAL8_HB},
+ {"SAL8_HC", SFX_SAL8_HC},
+ {"SAL8_HD", SFX_SAL8_HD},
+ {"SAL8_HE", SFX_SAL8_HE},
+ {"SAL8_HF", SFX_SAL8_HF},
+ {"SAL8_HG", SFX_SAL8_HG},
+ {"SAL8_HH", SFX_SAL8_HH},
+ {"SALH1AA", SFX_SALH1AA},
+ {"SALH1AB", SFX_SALH1AB},
+ {"SALH1BA", SFX_SALH1BA},
+ {"SALH1BB", SFX_SALH1BB},
+ {"SALH1CA", SFX_SALH1CA},
+ {"SALH1CB", SFX_SALH1CB},
+ {"SALH1DA", SFX_SALH1DA},
+ {"SALH1EA", SFX_SALH1EA},
+ {"SALH1EB", SFX_SALH1EB},
+ {"SALH1FB", SFX_SALH1FB},
+ {"SALH1FC", SFX_SALH1FC},
+ {"SALH1FG", SFX_SALH1FG},
+ {"SALH1GA", SFX_SALH1GA},
+ {"SALH1GB", SFX_SALH1GB},
+ {"SALH1HA", SFX_SALH1HA},
+ {"SALH2BE", SFX_SALH2BE},
+ {"SALH2BF", SFX_SALH2BF},
+ {"SALH2BG", SFX_SALH2BG},
+ {"SALH4CB", SFX_SALH4CB},
+ {"SALS1BA", SFX_SALS1BA},
+ {"SALS1BB", SFX_SALS1BB},
+ {"SALS1BC", SFX_SALS1BC},
+ {"SALS1BD", SFX_SALS1BD},
+ {"SALS2BA", SFX_SALS2BA},
+ {"SALS2BB", SFX_SALS2BB},
+ {"SALS2CA", SFX_SALS2CA},
+ {"SALS2CB", SFX_SALS2CB},
+ {"SALS2CC", SFX_SALS2CC},
+ {"SALS2CE", SFX_SALS2CE},
+ {"SALS3BA", SFX_SALS3BA},
+ {"SALS3BC", SFX_SALS3BC},
+ {"SALS3DB", SFX_SALS3DB},
+ {"SALS3DC", SFX_SALS3DC},
+ {"SALS3DD", SFX_SALS3DD},
+ {"SALS3DF", SFX_SALS3DF},
+ {"SALS3DG", SFX_SALS3DG},
+ {"STRE_AA", SFX_STRE_AA},
+ {"STRE_AB", SFX_STRE_AB},
+ {"STRE_AC", SFX_STRE_AC},
+ {"STRE_AD", SFX_STRE_AD},
+ {"STRE_AE", SFX_STRE_AE},
+ {"STRE_AF", SFX_STRE_AF},
+ {"STRE_AG", SFX_STRE_AG},
+ {"STRE_BA", SFX_STRE_BA},
+ {"STRE_BB", SFX_STRE_BB},
+ {"STRE_BC", SFX_STRE_BC},
+ {"STRE_BD", SFX_STRE_BD},
+ {"STRE_BE", SFX_STRE_BE},
+ {"STRE_BF", SFX_STRE_BF},
+ {"STRE_BG", SFX_STRE_BG},
+ {"STRE_CA", SFX_STRE_CA},
+ {"STRE_CB", SFX_STRE_CB},
+ {"STRE_CC", SFX_STRE_CC},
+ {"TOSH1BA", SFX_TOSH1BA},
+ {"TOSH1BB", SFX_TOSH1BB},
+ {"TOSH1BC", SFX_TOSH1BC},
+ {"TOSH1BD", SFX_TOSH1BD},
+ {"TOSH3IA", SFX_TOSH3IA},
+ {"TOSH3IB", SFX_TOSH3IB},
+ {"VIC2_BB", SFX_VIC2_BB},
+ {"VIC2_BC", SFX_VIC2_BC},
+ {"VIC2_BD", SFX_VIC2_BD},
+ {"VIC2_BF", SFX_VIC2_BF},
+ {"VIC2_BH", SFX_VIC2_BH},
+ {"VIC2_BJ", SFX_VIC2_BJ},
+ {"VIC2_CA", SFX_VIC2_CA},
+ {"VIC2_DA", SFX_VIC2_DA},
+ {"VIC2_DB", SFX_VIC2_DB},
+ {"VIC2_DE", SFX_VIC2_DC},
+ {"VIC4_CA", SFX_VIC4_CA},
+ {"VIC4_CB", SFX_VIC4_CB},
+ {"VIC5_DA", SFX_VIC5_DA},
+ {"VIC5_DB", SFX_VIC5_DB},
+ {"VIC5_DC", SFX_VIC5_DC},
+ {"VIC5_EA", SFX_VIC5_EA},
+ {"VIC5_EB", SFX_VIC5_EB},
+ {"VIC5_EC", SFX_VIC5_EC},
+ {"VIC5_FB", SFX_VIC5_FB},
+ {"VIC5_FC", SFX_VIC5_FC},
+ {"VIC5_FE", SFX_VIC5_FE},
+ {"VIC6_BA", SFX_VIC6_BA},
+ {"VIC6_BB", SFX_VIC6_BB},
+ {"VIC7_CA", SFX_VIC7_CA},
+ {"VIC7_CB", SFX_VIC7_CB},
+ {"VIC7_CC", SFX_VIC7_CC},
+ {"LCN_AA", SFX_LCN_AA},
+ {"LCN_AB", SFX_LCN_AB},
+ {"MSA12AB", SFX_SFX_ANG1_AA},
+ {"BNK1_12", SFX_SFX_BNK1_12},
+ {"TAX1_1", SFX_SFX_TAX1_1},
+ {"TAX1_2", SFX_SFX_TAX1_2},
+ {"TAX1_3", SFX_SFX_TAX1_3},
+ {"TAX1_4", SFX_SFX_TAX1_4},
+ {"TAX1_5", SFX_SFX_TAX1_5},
+ {"TAX2_1", SFX_SFX_TAX2_1},
+ {"TAX2_2", SFX_SFX_TAX2_2},
+ {"TAX2_3", SFX_SFX_TAX2_3},
+ {"TAX2_4", SFX_SFX_TAX2_4},
+ {"TAX2_5", SFX_SFX_TAX2_5},
+ {"TAX2_6", SFX_SFX_TAX2_6},
+ {"TAX2_7", SFX_SFX_TAX2_7},
+ {"TAX3_1", SFX_SFX_TAX3_1},
+ {"TAX3_2", SFX_SFX_TAX3_2},
+ {"TAX3_3", SFX_SFX_TAX3_3},
+ {"TAX3_4", SFX_SFX_TAX3_4},
+ {"TAX3_5", SFX_SFX_TAX3_5},
+ {nil, 0}
+};
uint32
FindMissionAudioSfx(const char *name)
@@ -9997,6 +11739,8 @@ cAudioManager::MissionScriptAudioUsesPoliceChannel(uint32 soundMission)
return FALSE;
}
+// LCS: mission audio turns from streamed to sampled
+
void
cAudioManager::PreloadMissionAudio(uint8 slot, Const char *name)
{
@@ -10007,8 +11751,8 @@ cAudioManager::PreloadMissionAudio(uint8 slot, Const char *name)
m_nMissionAudioLoadingStatus[slot] = LOADING_STATUS_NOT_LOADED;
m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_STOPPED;
m_bIsMissionAudioPlaying[slot] = FALSE;
- m_nMissionAudioFramesToPlay[slot] = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000;
- m_nMissionAudioFramesToPlay[slot] *= 4;
+ m_nMissionAudioFramesToPlay[slot] = m_nTimeSpent * SampleManager.GetSampleLength(missionAudioSfx) / SampleManager.GetSampleBaseFrequency(missionAudioSfx);
+ m_nMissionAudioFramesToPlay[slot] = 11 * m_nMissionAudioFramesToPlay[slot] / 10;
m_bIsMissionAudioAllowedToPlay[slot] = FALSE;
m_bIsMissionAudio2D[slot] = TRUE;
g_bMissionAudioLoadFailed[slot] = FALSE;
@@ -10045,8 +11789,8 @@ cAudioManager::PlayLoadedMissionAudio(uint8 slot)
bool8
cAudioManager::ShouldDuckMissionAudio(uint8 slot)
{
- if (IsMissionAudioSamplePlaying(slot))
- return m_nMissionAudioSampleIndex[slot] != STREAMED_SOUND_MISSION_ROK2_01;
+ //if (IsMissionAudioSamplePlaying(slot))
+ // return m_nMissionAudioSampleIndex[slot] != STREAMED_SOUND_MISSION_ROK2_01;
return FALSE;
}
@@ -10092,7 +11836,7 @@ cAudioManager::ClearMissionAudio(uint8 slot)
m_bIsMissionAudio2D[slot] = TRUE;
m_nMissionAudioFramesToPlay[slot] = 0;
m_bIsMissionAudioPhoneCall[slot] = FALSE;
- SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
}
}
@@ -10112,7 +11856,9 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (m_nMissionAudioSampleIndex[slot] != NO_SAMPLE) {
switch (m_nMissionAudioLoadingStatus[slot]) {
case LOADING_STATUS_NOT_LOADED:
- SampleManager.PreloadStreamedFile(m_nMissionAudioSampleIndex[slot], slot + 1);
+ if (!SampleManager.IsMissionAudioLoaded(slot, m_nMissionAudioSampleIndex[slot]))
+ SampleManager.LoadMissionAudio(slot, m_nMissionAudioSampleIndex[slot]);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_nMissionAudioSampleIndex[slot]));
m_nMissionAudioLoadingStatus[slot] = LOADING_STATUS_LOADED;
nFramesUntilFailedLoad[slot] = 0;
break;
@@ -10132,7 +11878,8 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (g_bMissionAudioLoadFailed[slot]) {
if (m_bTimerJustReset) {
ClearMissionAudio(slot);
- SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
nFramesForPretendPlaying[slot] = 0;
nCheckPlayingDelay[slot] = 0;
nFramesUntilFailedLoad[slot] = 0;
@@ -10150,15 +11897,20 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (MissionScriptAudioUsesPoliceChannel(m_nMissionAudioSampleIndex[slot]))
SetMissionScriptPoliceAudio(m_nMissionAudioSampleIndex[slot]);
else {
+ SampleManager.InitialiseChannel(slot + CHANNEL_MISSION_AUDIO_1, m_nMissionAudioSampleIndex[slot], SFX_BANK_PED_COMMENTS);
if (m_bIsPaused)
- SampleManager.PauseStream(TRUE, slot + 1);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, 0);
+ else
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_nMissionAudioSampleIndex[slot]));
if (m_bIsMissionAudio2D[slot]) {
- if (m_nMissionAudioSampleIndex[slot] == STREAMED_SOUND_MISSION_CAMERAL)
- SampleManager.SetStreamedVolumeAndPan(MISSION_AUDIO_VOLUME, 0, TRUE, slot + 1);
- else if (m_nMissionAudioSampleIndex[slot] == STREAMED_SOUND_MISSION_CAMERAR)
- SampleManager.SetStreamedVolumeAndPan(MISSION_AUDIO_VOLUME, 127, TRUE, slot + 1);
+ SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, 127);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 63);
+ if (m_nMissionAudioSampleIndex[slot] == SFX_SFX_CAMERA_LEFT || m_nMissionAudioSampleIndex[slot] == SFX_SFX_AIRHORN_LEFT)
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 0);
+ else if (m_nMissionAudioSampleIndex[slot] == SFX_SFX_CAMERA_RIGHT || m_nMissionAudioSampleIndex[slot] == SFX_SFX_AIRHORN_RIGHT)
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 127);
else
- SampleManager.SetStreamedVolumeAndPan(MISSION_AUDIO_VOLUME, 63, TRUE, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 63);
} else {
distSquared = GetDistanceSquared(m_vecMissionAudioPosition[slot]);
if (distSquared < SQR(MISSION_AUDIO_MAX_DIST)) {
@@ -10173,19 +11925,19 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
Vol = 0;
pan = 63;
}
- SampleManager.SetStreamedVolumeAndPan(Vol, pan, TRUE, slot + 1);
+ SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, Vol);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
}
- SampleManager.StartPreloadedStreamedFile(slot + 1);
+ SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1);
}
m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_PLAYING;
nCheckPlayingDelay[slot] = 30;
- if (m_nMissionAudioSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_nMissionAudioSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- m_bIsMissionAudioPhoneCall[slot] = TRUE;
break;
case PLAY_STATUS_PLAYING:
if (m_bTimerJustReset) {
ClearMissionAudio(slot);
- SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
return;
}
if (MissionScriptAudioUsesPoliceChannel(m_nMissionAudioSampleIndex[slot])) {
@@ -10193,47 +11945,41 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (nCheckPlayingDelay[slot] > 0) {
nCheckPlayingDelay[slot]--;
} else if ((g_bMissionAudioLoadFailed[slot] && m_nMissionAudioFramesToPlay[slot]-- == 0) || GetMissionScriptPoliceAudioPlayingStatus() == PLAY_STATUS_FINISHED) {
+ debug("FINISHED PLAYINGXXXXXXXXXXXXX");
m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_FINISHED;
- if (m_nMissionAudioSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_nMissionAudioSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- m_bIsMissionAudioPhoneCall[slot] = FALSE;
+
m_nMissionAudioSampleIndex[slot] = NO_SAMPLE;
- SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
m_nMissionAudioFramesToPlay[slot] = 0;
}
}
} else if (m_bIsMissionAudioPlaying[slot]) {
- if (!SampleManager.IsStreamPlaying(slot + 1) && !m_bIsPaused && !m_bWasPaused) {
- if (m_nMissionAudioSampleIndex[slot] == STREAMED_SOUND_MISSION_ROK2_01)
- m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_STOPPED;
- else {
- m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_FINISHED;
- if (m_nMissionAudioSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_nMissionAudioSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- m_bIsMissionAudioPhoneCall[slot] = FALSE;
- m_nMissionAudioSampleIndex[slot] = NO_SAMPLE;
- SampleManager.StopStreamedFile(slot + 1);
- m_nMissionAudioFramesToPlay[slot] = 0;
- }
+ if (!SampleManager.GetChannelUsedFlag(slot + CHANNEL_MISSION_AUDIO_1) && !m_bIsPaused && !m_bWasPaused) {
+ m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_FINISHED;
+ m_nMissionAudioSampleIndex[slot] = NO_SAMPLE;
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
+ m_nMissionAudioFramesToPlay[slot] = 0;
} else {
if (m_bIsPaused)
- SampleManager.PauseStream(TRUE, slot + 1);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, 0);
else {
- SampleManager.PauseStream(FALSE, slot + 1);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_nMissionAudioSampleIndex[slot]));
if (!m_bIsMissionAudio2D[slot]) {
distSquared = GetDistanceSquared(m_vecMissionAudioPosition[slot]);
if (distSquared < SQR(MISSION_AUDIO_MAX_DIST)) {
- // BUG? Why MAX_VOLUME instead of MISSION_AUDIO_VOLUME?
if (distSquared > 0.0f) {
dist = Sqrt(distSquared);
- Vol = ComputeVolume(MAX_VOLUME, MISSION_AUDIO_MAX_DIST, dist);
+ Vol = ComputeVolume(MISSION_AUDIO_VOLUME, MISSION_AUDIO_MAX_DIST, dist);
} else
- Vol = MAX_VOLUME;
+ Vol = MISSION_AUDIO_VOLUME;
TranslateEntity(&m_vecMissionAudioPosition[slot], &vec);
pan = ComputePan(MISSION_AUDIO_MAX_DIST, &vec);
} else {
Vol = 0;
pan = 63;
}
- SampleManager.SetStreamedVolumeAndPan(Vol, pan, TRUE, slot + 1);
+ SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, Vol);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
}
}
}
@@ -10241,7 +11987,7 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (m_bIsPaused)
break;
if (nCheckPlayingDelay[slot]-- > 0) {
- if (!SampleManager.IsStreamPlaying(slot + 1))
+ if (!SampleManager.GetChannelUsedFlag(slot + CHANNEL_MISSION_AUDIO_1))
break;
nCheckPlayingDelay[slot] = 0;
}
diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp
index 51f1946f..4a47c739 100644
--- a/src/audio/AudioManager.cpp
+++ b/src/audio/AudioManager.cpp
@@ -15,7 +15,7 @@
cAudioManager AudioManager;
#define SPEED_OF_SOUND 343.f
-#define TIME_SPENT 40
+#define TIME_SPENT 30
cAudioManager::cAudioManager()
{
@@ -340,6 +340,8 @@ cAudioManager::ResetTimers(uint32 time)
ClearMissionAudio(0);
ClearMissionAudio(1);
SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
+ SampleManager.StopChannel(CHANNEL_MISSION_AUDIO_1);
+ SampleManager.StopChannel(CHANNEL_MISSION_AUDIO_2);
SampleManager.SetEffectsFadeVolume(0);
SampleManager.SetMusicFadeVolume(0);
MusicManager.ResetMusicAfterReload();
@@ -533,27 +535,17 @@ cAudioManager::ServiceSoundEffects()
#endif
m_bReduceReleasingPriority = (m_FrameCounter++ % 5) == 0;
if (m_bIsPaused && !m_bWasPaused) {
-#ifdef GTA_PS2
- if (m_bIsSurround) {
- for (uint32 i = 0; i < NUM_CHANNELS_DTS_GENERIC; i++)
- SampleManager.StopChannel(i);
-
- SampleManager.SetChannelFrequency(CHANNEL_DTS_POLICE_RADIO, 0);
- SampleManager.SetChannelFrequency(CHANNEL_DTS_MISSION_AUDIO_1, 0);
- SampleManager.SetChannelFrequency(CHANNEL_DTS_MISSION_AUDIO_2, 0);
- SampleManager.SetChannelFrequency(CHANNEL_DTS_PLAYER_VEHICLE_ENGINE, 0);
- } else {
- for (uint32 i = 0; i < NUM_CHANNELS_GENERIC; i++)
- SampleManager.StopChannel(i);
-
- SampleManager.SetChannelFrequency(CHANNEL_POLICE_RADIO, 0);
- SampleManager.SetChannelFrequency(CHANNEL_MISSION_AUDIO_1, 0);
- SampleManager.SetChannelFrequency(CHANNEL_MISSION_AUDIO_2, 0);
- SampleManager.SetChannelFrequency(CHANNEL_PLAYER_VEHICLE_ENGINE, 0);
- }
-#else
- for (uint32 i = 0; i < NUM_CHANNELS; i++)
+ for (uint32 i = 0; i < NUM_CHANNELS_GENERIC; i++)
SampleManager.StopChannel(i);
+ SampleManager.SetChannelFrequency(CHANNEL_POLICE_RADIO, 0);
+ SampleManager.SetChannelFrequency(CHANNEL_MISSION_AUDIO_1, 0);
+ SampleManager.SetChannelFrequency(CHANNEL_MISSION_AUDIO_2, 0);
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
+#if defined(GTA_PS2) || defined(GTA_PSP)
+ // PSP and PS2 just stop the sound, mobile doesn't. Let's not have it on PC either
+ uint8 missionAudioChannel = m_bIsSurround ? CHANNEL_DTS_MISSION_AUDIO_1 : CHANNEL_MISSION_AUDIO_1;
+ SampleManager.StopChannel(missionAudioChannel);
+ SampleManager.StopChannel(missionAudioChannel+1);
#endif
ClearRequestedQueue();
if (m_nActiveQueue) {
@@ -574,11 +566,14 @@ cAudioManager::ServiceSoundEffects()
ProcessSpecial();
ClearRequestedQueue();
InterrogateAudioEntities();
- m_sPedComments.Process();
- ServicePoliceRadio();
- ServiceCollisions();
+ if (!m_bIsPaused) {
+ m_sPedComments.Process();
+ //ServicePoliceRadio(); // LCS: removed
+ ServiceCollisions();
+ }
AddReleasingSounds();
- ProcessMissionAudio();
+ if (!m_bIsPaused)
+ ProcessMissionAudio();
#ifdef EXTERNAL_3D_SOUND
AdjustSamplesVolume();
#endif
@@ -693,7 +688,7 @@ cAudioManager::InterrogateAudioEntities()
}
void
-cAudioManager::AddSampleToRequestedQueue()
+cAudioManager::AddSampleToRequestedQueue(uint8 unk_lcs)
{
uint32 finalPriority;
uint8 sampleIndex;
@@ -732,6 +727,7 @@ cAudioManager::AddSampleToRequestedQueue()
m_sQueueSample.m_bReverb = FALSE;
#endif
#endif
+ m_sQueueSample.field_51_lcs = unk_lcs;
m_aRequestedQueue[m_nActiveQueue][sampleIndex] = m_sQueueSample;
@@ -789,15 +785,15 @@ cAudioManager::AddReflectionsToRequestedQueue()
for (uint32 i = 0; i < ARRAY_SIZE(m_afReflectionsDistances); i++) {
#ifndef USE_TIME_SCALE_FOR_AUDIO
if ( CTimer::GetIsSlowMotionActive() )
- m_afReflectionsDistances[i] = (m_anRandomTable[i % 4] % 3) * 100.0f / 8.0f;
+ m_afReflectionsDistances[i] = (m_anRandomTable[i % 4] % 3) * 50.0f / 8.0f;
#endif
reflectionDistance = m_afReflectionsDistances[i];
if (reflectionDistance > 0.0f && reflectionDistance < 100.0f && reflectionDistance < m_sQueueSample.m_MaxDistance) {
#ifndef USE_TIME_SCALE_FOR_AUDIO
- m_sQueueSample.m_nReflectionDelay = CTimer::GetIsSlowMotionActive() ? (reflectionDistance * 800.0f / 1029.0f) : (reflectionDistance * 500.0f / 1029.0f);
+ m_sQueueSample.m_nReflectionDelay = CTimer::GetIsSlowMotionActive() ? (reflectionDistance * 600.0f / 1029.0f) : (reflectionDistance * 300.0f / 1029.0f);
#else
- m_sQueueSample.m_nReflectionDelay = reflectionDistance * 500.0f / 1029.0f;
+ m_sQueueSample.m_nReflectionDelay = reflectionDistance * 300.0f / 1029.0f;
#endif
if (m_sQueueSample.m_nReflectionDelay > 3) {
m_sQueueSample.m_fDistance = m_afReflectionsDistances[i];
@@ -1410,6 +1406,45 @@ cAudioManager::LoadBankIfNecessary(uint8 bank)
}
#endif
+void
+cAudioManager::DirectlyEnqueueSample(uint32 sample, uint8 bank, uint32 counter, uint32 priority, uint32 freq, uint8 volume, uint8 framesToPlay, uint32 notStereo)
+{
+#ifdef FIX_BUGS
+ if (!m_bIsInitialised || m_nExtraSoundsEntity < 0) return;
+ m_sQueueSample.m_nEntityIndex = m_nExtraSoundsEntity; // not setting entity ID could cause bugs, let's use extra sounds one
+#endif
+ m_sQueueSample.m_nSampleIndex = sample;
+ m_sQueueSample.m_nBankIndex = bank;
+ m_sQueueSample.m_nCounter = counter;
+ m_sQueueSample.m_nFrequency = freq;
+ m_sQueueSample.m_nVolume = volume;
+ SET_EMITTING_VOLUME(volume);
+ m_sQueueSample.m_nPriority = priority;
+ m_sQueueSample.m_nFramesToPlay = framesToPlay;
+ SET_SOUND_REFLECTION(FALSE);
+ m_sQueueSample.m_nLoopCount = 0;
+ SET_LOOP_OFFSETS(sample)
+#ifdef FIX_BUGS
+ m_sQueueSample.m_bIs2D = TRUE;
+#else
+ m_sQueueSample.m_bIs2D = FALSE;
+#endif
+ m_sQueueSample.m_bStatic = FALSE;
+ SET_SOUND_REVERB(FALSE);
+#ifdef FIX_BUGS
+ m_sQueueSample.m_nPan = 63;
+ AddSampleToRequestedQueue();
+#else
+ // this is dumb and wrong, what were they thinking?
+ m_sQueueSample.m_nPan = 0;
+ AudioManager.AddSampleToRequestedQueue();
+ if (!notStereo) {
+ m_sQueueSample.m_nPan = 127;
+ AudioManager.AddSampleToRequestedQueue();
+ }
+#endif
+}
+
#ifdef EXTERNAL_3D_SOUND
void
cAudioManager::AdjustSamplesVolume()
diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h
index 49edcfec..71c99ff3 100644
--- a/src/audio/AudioManager.h
+++ b/src/audio/AudioManager.h
@@ -59,6 +59,7 @@ public:
#if defined(FIX_BUGS) && defined(EXTERNAL_3D_SOUND)
int8 m_nEmittingVolumeChange; // same as above but for m_nEmittingVolume
#endif
+ uint8 field_51_lcs;
};
VALIDATE_SIZE(tSound, 96);
@@ -126,7 +127,11 @@ public:
VALIDATE_SIZE(cPedComments, 0x490);
+#ifdef FIX_BUGS // LCS extends the number of mission slots but not audio channels, the game would crash on ClearMissionAudio trying to stop channels that don't exist
#define MISSION_AUDIO_SLOTS (2)
+#else
+#define MISSION_AUDIO_SLOTS (5)
+#endif
// name made up
class cAudioScriptObjectManager
@@ -248,6 +253,7 @@ public:
#endif
cAudioScriptObjectManager m_sAudioScriptObjectManager;
+ bool8 field_4348_lcs;
// miami
bool8 m_bIsPlayerShutUp;
uint8 m_nPlayerMood;
@@ -291,6 +297,10 @@ public:
bool8 m_bWasPaused;
uint32 m_FrameCounter;
+ uint32 field_5644_lcs;
+ uint32 field_5648_lcs;
+ uint8 field_564C_lcs;
+
cAudioManager();
~cAudioManager();
@@ -338,7 +348,7 @@ public:
uint32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier);
int32 RandomDisplacement(uint32 seed);
void InterrogateAudioEntities(); // inlined
- void AddSampleToRequestedQueue();
+ void AddSampleToRequestedQueue(uint8 unk_lcs = 0);
void AddDetailsToRequestedOrderList(uint8 sample); // inlined in vc
#ifdef AUDIO_REFLECTIONS
void AddReflectionsToRequestedQueue();
@@ -352,6 +362,7 @@ public:
#ifdef GTA_PS2
void LoadBankIfNecessary(uint8 bank); // this is used only on PS2 but technically not a platform code
#endif
+ void DirectlyEnqueueSample(uint32 sample, uint8 bank, uint32 counter, uint32 priority, uint32 freq, uint8 volume, uint8 framesToPlay, uint32 notStereo = 0);
#ifdef EXTERNAL_3D_SOUND // actually must have been && AUDIO_MSS as well
void AdjustSamplesVolume(); // inlined
@@ -407,6 +418,7 @@ public:
#ifdef GTA_TRAIN
bool8 ProcessTrainNoise(cVehicleParams &params);
#endif
+ bool8 ProcessFerryNoise(cVehicleParams &params);
bool8 ProcessBoatEngine(cVehicleParams &params);
bool8 ProcessBoatMovingOverWater(cVehicleParams &params);
void ProcessPlane(cVehicleParams &params);
@@ -436,6 +448,17 @@ public:
uint32 GetPedCommentSfx(CPed *ped, uint16 sound);
void GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset);
uint32 GetPlayerTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetMariaTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetDonaldLoveTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetJdOtooleTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetleonMcaffreyTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetSalvatoreTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetToshikoTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetMickeyHamfistsTalkSfx(CPed *ped, uint16 sound);
+ uint32 GetBiker1TalkSfx(CPed *ped, uint16 sound);
+ uint32 GetBiker2TalkSfx(CPed *ped, uint16 sound);
+ uint32 GetGrdAng1TalkSfx(CPed *ped, uint16 sound);
+ uint32 GetGrdAng2TalkSfx(CPed *ped, uint16 sound);
uint32 GetGenericMaleTalkSfx(CPed *ped, uint16 sound); // inlined in vc
uint32 GetGenericFemaleTalkSfx(CPed *ped, uint16 sound); // inlined in vc
uint32 GetDefaultTalkSfx(CPed *ped, uint16 sound);
@@ -556,9 +579,6 @@ public:
#ifdef GTA_BRIDGE
void ProcessBridge();
- void ProcessBridgeWarning();
- void ProcessBridgeMotor();
- void ProcessBridgeOneShots();
#endif
// mission audio
@@ -635,10 +655,15 @@ public:
#define SET_SOUND_REVERB(b)
#endif
-#if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS)
-static_assert(sizeof(cAudioManager) == 0x5558, "cAudioManager: error");
+#ifndef GTA_PS2
+#define CHANNEL_PLAYER_VEHICLE_ENGINE m_nActiveSamples
#endif
+//#if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS)
+//static_assert(sizeof(cAudioManager) == 0x5558, "cAudioManager: error");
+//#endif
+
+
extern cAudioManager AudioManager;
enum
diff --git a/src/audio/AudioSamples.h b/src/audio/AudioSamples.h
index 365ca282..b5ad7167 100644
--- a/src/audio/AudioSamples.h
+++ b/src/audio/AudioSamples.h
@@ -7,398 +7,330 @@
enum eSfxSample
{
- SFX_CAR_HORN_JEEP = 0,
+ SFX_AIR_BRAKES,
+ SFX_AK47_LEFT,
+ SFX_AK47_RELOAD,
+ SFX_AK47_RIGHT,
+ SFX_ALARM,
+ SFX_AMBULANCE_SI,
+ SFX_AMMU_AA,
+ SFX_AMMU_AB,
+ SFX_AMMU_AC,
+ SFX_ARM_BOMB,
+ SFX_A_10,
+ SFX_BAT_HIT_LEFT,
+ SFX_BAT_HIT_RIGHT,
+ SFX_BEEP,
+ SFX_BOAT_CRUISER_LOOP,
+ SFX_BOAT_SPLASH_1,
+ SFX_BOAT_SPLASH_2,
+ SFX_BOAT_V12_LOOP,
+ SFX_BOAT_WATER_LOOP,
+ SFX_BODY_LAND,
+ SFX_BODY_LAND_AND_FALL,
+ SFX_BOMB_BEEP,
+ SFX_BRIDGE_OPEN_WARNING,
+ SFX_BULLET_CAR_1,
+ SFX_BULLET_CAR_2,
+ SFX_BULLET_CAR_3,
+ SFX_BULLET_PASS_1,
+ SFX_BULLET_PASS_2,
+ SFX_BULLET_PED,
+ SFX_BULLET_SHELL_HIT_GROUND_1,
+ SFX_BULLET_SHELL_HIT_GROUND_2,
+ SFX_BULLET_WALL_1,
+ SFX_BULLET_WALL_2,
+ SFX_BULLET_WALL_3,
+ SFX_CAMERA,
+ SFX_CARDBOARD_BOX_SMASH,
+ SFX_CAR_HELI_FAR,
+ SFX_CAR_HELI_MAI,
+ SFX_CAR_HELI_MAI2,
+ SFX_CAR_HELI_REA,
+ SFX_CAR_HELI_ROL,
+ SFX_CAR_HELI_ROT,
+ SFX_CAR_HELI_STA,
+ SFX_CAR_HORN_56CHEV,
SFX_CAR_HORN_BMW328,
SFX_CAR_HORN_BUS,
SFX_CAR_HORN_BUS2,
- SFX_CAR_HORN_56CHEV,
+ SFX_CAR_HORN_JEEP,
SFX_CAR_HORN_PICKUP,
SFX_CAR_HORN_PORSCHE,
SFX_CAR_HORN_TRUCK,
-
- SFX_CAR_HELI_MAI, // 8
- SFX_CAR_HELI_MAI2, // 9
- SFX_CAR_HELI_REA, // 10
- SFX_CAR_HELI_STA, // 11
- SFX_CAR_HELI_ROT, // 12
- SFX_CAR_HELI_FAR, // 13
- SFX_CAR_HELI_ROL, // 14
-
- SFX_OLD_CAR_DOOR_OPEN,
- SFX_OLD_CAR_DOOR_CLOSE,
- SFX_NEW_CAR_DOOR_OPEN,
- SFX_NEW_CAR_DOOR_CLOSE,
- SFX_TRUCK_DOOR_OPEN,
- SFX_TRUCK_DOOR_CLOSE,
- SFX_REVERSE_GEAR,
- SFX_REVERSE_GEAR_2,
- SFX_CAR_STARTER, // 23
- SFX_ROAD_NOISE, // 24
- SFX_SKID, // 25
- SFX_GRAVEL_SKID, // 26
- SFX_POLICE_SIREN_SLOW,
- SFX_SIREN_FAST, // 28
- SFX_AMBULANCE_SIREN_SLOW,
- SFX_REVERSE_WARNING,
- SFX_ICE_CREAM_TUNE,
- SFX_AIR_BRAKES, // 32
- SFX_TYRE_BUMP, // 33
- SFX_TYRE_BURST_B, // 34
- SFX_TYRE_BURST, // 35
- SFX_TYRE_BURST_L, // 36
- SFX_PALM_TREE_LO, // 37
- SFX_BULLET_PASS_1, // 38
- SFX_BULLET_PASS_2, // 39
- SFX_SKATE_1, // 40
- SFX_SKATE_2, // 41
- SFX_FOOTSTEP_CONCRETE_1,
- SFX_FOOTSTEP_CONCRETE_2,
- SFX_FOOTSTEP_CONCRETE_3,
- SFX_FOOTSTEP_CONCRETE_4,
- SFX_FOOTSTEP_CONCRETE_5,
- SFX_EXPLOSION_1, // 47
- SFX_EXPLOSION_2, // 48
- SFX_EXPLOSION_3, // 49
- SFX_COLT45_LEFT, // 50
- SFX_COLT45_RIGHT, // 51
- SFX_AK47_LEFT, // 52
- SFX_AK47_RIGHT, // 53
- SFX_UZI_LEFT, // 54
- SFX_UZI_RIGHT, // 55
- SFX_UZI_END_LEFT, // 56
- SFX_SNIPER_LEFT, // 57
- SFX_SNIPER_RIGHT, // 58
- SFX_ROCKET_LEFT, // 59
- SFX_ROCKET_RIGHT, // 60
- SFX_ROCKET_FLY, // 61
- SFX_FLAMETHROWER_LEFT, // 62
- SFX_FLAMETHROWER_RIGHT, // 63
- SFX_FLAMETHROWER_START_LEFT, // 64
- SFX_FLAMETHROWER_START_RIGHT, // 65
- SFX_SHOTGUN_LEFT, // 66
- SFX_SHOTGUN_RIGH, // 67
- SFX_M60_LEFT, // 68
- SFX_M60_RIGHT, // 69
- SFX_M60_TAIL_LEFT, // 70
- SFX_TEC_LEFT, // 71
- SFX_TEC_RIGHT, // 72
- SFX_TEC_TAIL, // 73
- SFX_RUGER_LEFT, // 74
- SFX_RUGER_RIGHT, // 75
- SFX_RUGER_TAIL, // 76
- SFX_PISTOL_RELOAD, // 77
- SFX_AK47_RELOAD, // 78
- SFX_ROCKET_RELOAD, // 79
- SFX_RIFLE_RELOAD, // 80
- SFX_GOLF_CLUB_SWING, // 81
- SFX_MINIGUN_FIRE_LEFT, // 82
- SFX_MINIGUN_FIRE_RIGHT, // 83
- SFX_MINIGUN_STOP, // 84
- SFX_SPAS12_LEFT, // 85
- SFX_SPAS12_RIGHT, // 86
- SFX_SPAS12_TAIL_LEFT, // 87
- SFX_PYTHON_LEFT, // 88
- SFX_PYTHON_RIGHT, // 89
- SFX_MP5_LEFT, // 90
- SFX_MP5_RIGHT, // 91
- SFX_COL_TARMAC_1, // 92
- SFX_COL_TARMAC_2, // 93
- SFX_COL_TARMAC_3, // 94
- SFX_COL_TARMAC_4, // 95
- SFX_COL_TARMAC_5, // 96
- SFX_COL_GRASS_1,
- SFX_COL_GRAVEL_1,
- SFX_COL_MUD_1,
- SFX_COL_GARAGE_DOOR_1,
+ SFX_CAR_IDLE_CADI,
+ SFX_CAR_IDLE_COBRA,
+ SFX_CAR_IDLE_GOLFCART,
+ SFX_CAR_IDLE_HONDA,
+ SFX_CAR_IDLE_HOTROD,
+ SFX_CAR_IDLE_MERC,
+ SFX_CAR_IDLE_PACARD,
+ SFX_CAR_IDLE_PATHFINDER,
+ SFX_CAR_IDLE_PONT,
+ SFX_CAR_IDLE_PONT2,
+ SFX_CAR_IDLE_PORSHE,
+ SFX_CAR_IDLE_SPIDER,
+ SFX_CAR_IDLE_SPORTCAR,
+ SFX_CAR_IDLE_TRUCK,
+ SFX_CAR_IDLE_UNUSED1,
+ SFX_CAR_IDLE_UNUSED2,
+ SFX_CAR_IDLE_UNUSED3,
+ SFX_CAR_IDLE_UNUSED4,
+ SFX_CAR_IDLE_VTWI,
+ SFXNEWCARDOOR,
+ SFX_CAR_ON_FIRE,
+ SFX_CAR_RAIN_1,
+ SFX_CAR_RAIN_2,
+ SFX_CAR_RAIN_3,
+ SFX_CAR_RAIN_4,
+ SFX_CAR_REV_CADI,
+ SFX_CAR_REV_COBRA,
+ SFX_CAR_REV_GOLFCART,
+ SFX_CAR_REV_HONDA,
+ SFX_CAR_REV_HOTROD,
+ SFX_CAR_REV_MERC,
+ SFX_CAR_REV_PACARD,
+ SFX_CAR_REV_PATHFINDER,
+ SFX_CAR_REV_PONT,
+ SFX_CAR_REV_PONT2,
+ SFX_CAR_REV_PORSHE,
+ SFX_CAR_REV_SPIDER,
+ SFX_CAR_REV_SPORTCAR,
+ SFX_CAR_REV_TRUCK,
+ SFX_CAR_REV_UNUSED1,
+ SFX_CAR_REV_UNUSED2,
+ SFX_CAR_REV_UNUSED3,
+ SFX_CAR_REV_UNUSED4,
+ SFX_CAR_REV_VTWI,
+ SFX_CAR_STARTER,
+ SFX_CENTRAL,
+ SFX_CESNA_IDLE,
+ SFX_CESNA_REV,
+ SFX_COLT45_LEFT,
+ SFX_COLT45_RIGHT,
+ SFX_COL_CARDBOARD_1,
+ SFX_COL_CARDBOARD_2,
+ SFX_COL_CAR_1,
+ SFX_COL_CAR_2,
+ SFX_COL_CAR_3,
+ SFX_COL_CAR_4,
+ SFX_COL_CAR_5,
SFX_COL_CAR_PANEL_1,
SFX_COL_CAR_PANEL_2,
SFX_COL_CAR_PANEL_3,
SFX_COL_CAR_PANEL_4,
SFX_COL_CAR_PANEL_5,
SFX_COL_CAR_PANEL_6,
- SFX_COL_THICK_METAL_PLATE_1,
- SFX_COL_SCAFFOLD_POLE_1,
- SFX_COL_LAMP_POST_1,
+ SFX_COL_CONTAINER_1,
+ SFX_COL_GARAGE_DOOR_1,
+ SFX_COL_GATE,
+ SFX_COL_GRASS_1,
+ SFX_COL_GRAVEL_1,
SFX_COL_HYDRANT_1,
+ SFX_COL_LAMP_POST_1,
SFX_COL_METAL_CHAIN_FENCE_1,
SFX_COL_METAL_CHAIN_FENCE_2,
SFX_COL_METAL_CHAIN_FENCE_3,
SFX_COL_METAL_CHAIN_FENCE_4,
- SFX_COL_PED_1, // 115
- SFX_COL_PED_2, // 116
+ SFX_COL_MUD_1,
+ SFX_COL_NEWS_VENDOR_1,
+ SFX_COL_NEWS_VENDOR_2,
+ SFX_COL_NEWS_VENDOR_3,
+ SFX_COL_PED_1,
+ SFX_COL_PED_2,
SFX_COL_SAND_1,
- SFX_COL_WOOD_CRATES_1,
- SFX_COL_WOOD_CRATES_2,
- SFX_COL_WOOD_CRATES_3,
- SFX_COL_WOOD_CRATES_4,
+ SFX_COL_SCAFFOLD_POLE_1,
+ SFX_COL_TARMAC_1,
+ SFX_COL_TARMAC_2,
+ SFX_COL_TARMAC_3,
+ SFX_COL_TARMAC_4,
+ SFX_COL_TARMAC_5,
+ SFX_COL_THICK_METAL_PLATE_1,
+ SFX_COL_VEG_1,
+ SFX_COL_VEG_2,
+ SFX_COL_VEG_3,
+ SFX_COL_VEG_4,
+ SFX_COL_VEG_5,
SFX_COL_WOOD_BENCH_1,
SFX_COL_WOOD_BENCH_2,
SFX_COL_WOOD_BENCH_3,
SFX_COL_WOOD_BENCH_4,
+ SFX_COL_WOOD_CRATES_1,
+ SFX_COL_WOOD_CRATES_2,
+ SFX_COL_WOOD_CRATES_3,
+ SFX_COL_WOOD_CRATES_4,
SFX_COL_WOOD_SOLID_1,
- SFX_COL_VEG_1, // 127
- SFX_COL_VEG_2, // 128
- SFX_COL_VEG_3, // 129
- SFX_COL_VEG_4, // 130
- SFX_COL_VEG_5, // 131
- SFX_COL_CONTAINER_1,
- SFX_COL_NEWS_VENDOR_1,
- SFX_COL_NEWS_VENDOR_2,
- SFX_COL_NEWS_VENDOR_3,
- SFX_COL_CAR_1, // 136
- SFX_COL_CAR_2, // 137
- SFX_COL_CAR_3, // 138
- SFX_COL_CAR_4, // 139
- SFX_COL_CAR_5, // 140
- SFX_COL_CARDBOARD_1,
- SFX_COL_CARDBOARD_2,
- SFX_COL_GATE, // 143
- SFX_SCRAPE_CAR_1, // 144
+ SFX_COUNTDOWN,
SFX_CRATE_SMASH,
- SFX_GLASS_CRACK, // 146
- SFX_GLASS_SMASH, // 147
+ SFX_C_OR_D_UNK_1,
+ SFX_C_OR_D_UNK_2,
+ SFX_C_OR_D_UNK_3,
+ SFX_C_OR_D_UNK_4,
+ SFX_C_OR_D_UNK_5,
+ SFX_C_OR_D_UNK_6,
+ SFX_DOCK_BA,
+ SFX_DOCK_BB,
+ SFX_EAST,
+ SFX_ERROR_FIRE_RIFLE,
+ SFX_ERROR_FIRE_ROCKET_LAUNCHER,
+ SFX_EXPLOSION_1,
+ SFX_EXPLOSION_2,
+ SFX_EXPLOSION_3,
+ SFX_FIGHT_1,
+ SFX_FIGHT_2,
+ SFX_FIGHT_4,
+ SFX_FIGHT_5,
+ SFX_FISHING_BOAT_IDLE,
+ SFX_FLAMETHROWER_LEFT,
+ SFX_FLAMETHROWER_RIGHT,
+ SFX_FLAMETHROWER_START_LEFT,
+ SFX_FLAMETHROWER_START_RIGHT,
+ SFX_FOOTSTEP_CONCRETE_1,
+ SFX_FOOTSTEP_CONCRETE_2,
+ SFX_FOOTSTEP_CONCRETE_3,
+ SFX_FOOTSTEP_CONCRETE_4,
+ SFX_FOOTSTEP_CONCRETE_5,
+ SFX_GARAGE_DOOR_LOOP,
+ SFX_GATE_START_CLU,
+ SFX_GATE_STOP_CLU,
+ SFX_GLASS_CRACK,
SFX_GLASS_SHARD_1,
SFX_GLASS_SHARD_2,
SFX_GLASS_SHARD_3,
SFX_GLASS_SHARD_4,
- SFX_PED_ON_FIRE, // 152
- SFX_CAR_ON_FIRE, // 153
- SFX_RAIN, // 154
- SFX_HURRICANE_MA, // 155
- SFX_BULLET_SHELL_HIT_GROUND_1,
- SFX_BULLET_SHELL_HIT_GROUND_2,
- SFX_BULLET_PED, // 158
- SFX_BULLET_CAR_1, // 159
- SFX_BULLET_CAR_2, // 160
- SFX_BULLET_CAR_3, // 161
- SFX_BULLET_WALL_1, // 162
- SFX_BULLET_WALL_2, // 163
- SFX_BULLET_WALL_3, // 164
- SFX_BAT_HIT_LEFT, // 165
- SFX_BAT_HIT_RIGH, // 166
- SFX_FIGHT_1, // 167
- SFX_FIGHT_2, // 168
- SFX_FIGHT_4, // 169
- SFX_FIGHT_5, // 170
- SFX_KNIFE_SWING, // 171
- SFX_KNIFE_SLASH, // 172
- SFX_KNIFE_STAB, // 173
- SFX_HAMMER_HIT_1, // 174
- SFX_HAMMER_HIT_2, // 175
- SFX_GARAGE_DOOR_LOOP, // 176
- SFX_COUNTDOWN, // 177
- SFX_ARM_BOMB, // 178
- SFX_POLICE_RADIO_CRACKLE, // 179
-
- SFX_WEVE_GOT,
- SFX_THERES,
- SFX_RESPOND_TO,
- SFX_A_10,
+ SFX_GLASS_SMASH,
+ SFX_GOLF_CLUB_SWING,
+ SFX_GO_CENTRE,
+ SFX_GO_LEFT,
+ SFX_GO_RIGHT,
+ SFX_GRAVEL_SKID,
+ SFX_HAMMER_HIT_1,
+ SFX_HAMMER_HIT_2,
+ SFX_HELI_1,
+ SFX_HIT_BALL,
+ SFX_HOSE,
+ SFX_H_UNK, // SFX_CAR_REV_UNUS
+ SFX_ICE_CREAM_TUNE,
SFX_IN,
- SFX_NORTH,
- SFX_EAST,
- SFX_SOUTH,
- SFX_WEST,
- SFX_CENTRAL,
- SFX_POLICE_RADIO_MESSAGE_NOISE_1,
- SFX_POLICE_RADIO_SUSPECT,
- SFX_POLICE_RADIO_LAST_SEEN,
- SFX_POLICE_RADIO_ON_FOOT,
- SFX_POLICE_RADIO_IN_A,
- SFX_POLICE_RADIO_DARK,
- SFX_POLICE_RADIO_LIGHT,
- SFX_POLICE_RADIO_BRIGHT,
-
- SFX_CRIME_1,
- SFX_CRIME_2,
- SFX_CRIME_3,
- SFX_CRIME_4,
- SFX_CRIME_5,
- SFX_CRIME_6,
- SFX_CRIME_7,
- SFX_CRIME_8,
- SFX_CRIME_9,
- SFX_CRIME_10,
- SFX_CRIME_11,
- SFX_CRIME_12,
- SFX_POLICE_RADIO_VICE_CITY,
- SFX_POLICE_RADIO_VICE_CITY_BEACH,
- SFX_POLICE_RADIO_VICE_CITY_MAINLAND,
- SFX_POLICE_RADIO_OCEAN_BEACH, //???
- SFX_POLICE_RADIO_WASHINGTON_BEACH,
- SFX_POLICE_RADIO_VICE_POINT,
- SFX_POLICE_RADIO_LEAF_LINKS,
- SFX_POLICE_RADIO_STARFISH_ISLAND, //???????????
- SFX_POLICE_RADIO_VICEPORT,
- SFX_POLICE_RADIO_LITTLE_HAVANA,
- SFX_POLICE_RADIO_LITTLE_HAITI,
- SFX_POLICE_RADIO_PRAWN_ISLAND, //??????????? IS THAT HOW SHE PRONOUNCES ISLAND?
- SFX_POLICE_RADIO_DOWNTOWN,
- SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL,
- SFX_POLICE_RADIO_BLACK,
- SFX_POLICE_RADIO_WHITE,
- SFX_POLICE_RADIO_BLUE,
- SFX_POLICE_RADIO_RED,
- SFX_POLICE_RADIO_PURPLE,
- SFX_POLICE_RADIO_YELLOW,
- SFX_POLICE_RADIO_GREY,
- SFX_POLICE_RADIO_ORANGE,
- SFX_POLICE_RADIO_GREEN,
- SFX_POLICE_RADIO_SILVER,
- SFX_POLICE_RADIO_AMBULANCE,
- SFX_POLICE_RADIO_TUDOOR,
- SFX_POLICE_RADIO_TRUCK,
- SFX_POLICE_RADIO_FIRE_TRUCK,
- SFX_POLICE_RADIO_PICKUP,
- SFX_POLICE_RADIO_POLICE_CAR,
- SFX_POLICE_RADIO_BOAT,
- SFX_POLICE_RADIO_BUGGY,
- SFX_POLICE_RADIO_BUS,
- SFX_POLICE_RADIO_COACH,
- SFX_POLICE_RADIO_CRUISER,
- SFX_POLICE_RADIO_DINGHY,
- SFX_POLICE_RADIO_GARBAGE_TRUCK,
- SFX_POLICE_RADIO_GOLF_CART,
- SFX_POLICE_RADIO_HEARSE,
- SFX_POLICE_RADIO_HELICOPTER,
- SFX_POLICE_RADIO_ICE_CREAM_VAN,
- SFX_POLICE_RADIO_LOWRIDER,
- SFX_POLICE_RADIO_MOPED,
- SFX_POLICE_RADIO_MOTOBIKE,
- SFX_POLICE_RADIO_OFFROAD,
- SFX_POLICE_RADIO_PLANE,
- SFX_POLICE_RADIO_RIG,
- SFX_POLICE_RADIO_SEDAN,
- SFX_POLICE_RADIO_SPEEDBOAT,
- SFX_POLICE_RADIO_SPORTS_CAR,
- SFX_POLICE_RADIO_STATION_WAGON,
- SFX_POLICE_RADIO_STRETCH,
- SFX_POLICE_RADIO_SWAT_VAN,
- SFX_POLICE_RADIO_TANK,
- SFX_POLICE_RADIO_TAXI,
- SFX_POLICE_RADIO_VAN,
-
- SFX_HELI_1, // 198
- SFX_PHONE_RING, // 199
- SFX_CAR_REV_1, // PONT
- SFX_CAR_REV_2, // PORSHE
- SFX_CAR_REV_3, // SPIDER
- SFX_CAR_REV_4, // MERC
- SFX_CAR_REV_5, // TRUC
- SFX_CAR_REV_6, // HOTROD
- SFX_CAR_REV_7, // COBRA
- SFX_CAR_REV_8, // PONT2
- SFX_CAR_REV_9, // CADI
- SFX_CAR_REV_10, // PATHFINDER
- SFX_CAR_REV_11, // PACARD
- SFX_CAR_REV_12, // GOLFCART
- SFX_CAR_REV_13, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_14, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_15, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_16, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_17, // VTWI
- SFX_MOPED_REV, // just moped
- SFX_CAR_REV_19, // HOND(A)
- SFX_CAR_REV_20, // SPOR(TCAR)
- SFX_CAR_IDLE_1, // PONT
- SFX_CAR_IDLE_2, // PORSHE
- SFX_CAR_IDLE_3, // SPIDER
- SFX_CAR_IDLE_4, // MERC
- SFX_CAR_IDLE_5, // TRUC
- SFX_CAR_IDLE_6, // HOTROD
- SFX_CAR_IDLE_7, // COBRA
- SFX_CAR_IDLE_8, // PONT2
- SFX_CAR_IDLE_9, // CADI
- SFX_CAR_IDLE_10, // PATHFINDER
- SFX_CAR_IDLE_11, // PACARD
- SFX_CAR_IDLE_12, // GOLFCART
- SFX_CAR_IDLE_13, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_14, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_15, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_16, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_17, // VTWI
- SFX_MOPED_IDLE, // 237
- SFX_CAR_IDLE_19, // HOND(A)
- SFX_CAR_IDLE_20, // SPOR(TCAR)
+ SFX_FE_INFO_LEFT,
+ SFX_FE_INFO_RIGHT,
SFX_JUMBO_DIST_FLY,
- SFX_JUMBO_TAXI, // 241
- SFX_JUMBO_WHINE, // 242
- SFX_JUMBO_ENGINE, // 243
- SFX_JUMBO_RUMBLE, // 244
+ SFX_JUMBO_ENGINE,
SFX_JUMBO_LAND_WHEELS,
- SFX_BOAT_CRUISER_LOOP, // 246
- SFX_BOAT_V12_LOOP, // 247
- SFX_BOAT_WATER_LOOP,
- SFX_BOAT_SPLASH_1,
- SFX_BOAT_SPLASH_2,
- SFX_FISHING_BOAT_IDLE,
- SFX_CAR_RAIN_1, // 252
- SFX_CAR_RAIN_2, // 253
- SFX_CAR_RAIN_3, // 254
- SFX_CAR_RAIN_4, // 255
- SFX_SPLASH_1, // 256
- SFX_PED_CRUNCH_1, // 257
- SFX_PED_CRUNCH_2, // 258
- SFX_WOODEN_BOX_SMASH,
- SFX_CARDBOARD_BOX_SMASH,
- SFX_ERROR_FIRE_ROCKET_LAUNCHER,
- SFX_ERROR_FIRE_RIFLE,
- SFX_TANK_TURRET, // 263
- SFX_BODY_LAND_AND_FALL,
- SFX_BODY_LAND, // 265
- SFX_BOMB_BEEP, // 266
- SFX_TIMER_BEEP, // 267
+ SFX_JUMBO_RUMBLE,
+ SFX_JUMBO_TAXI,
+ SFX_JUMBO_WHINE,
+ SFX_KNIFE_SLASH,
+ SFX_KNIFE_STAB,
+ SFX_KNIFE_SWING,
+ SFX_M60_LEFT,
+ SFX_M60_RIGHT,
+ SFX_MINIGUN_FIRE_LEFT,
+ SFX_MINIGUN_FIRE_RIGHT,
+ SFX_MINIGUN_STOP,
+ SFX_MONEY_LEFT,
+ SFX_MONEY_RIGHT,
+ SFX_MOPED_IDLE,
+ SFX_MOPED_REV,
+ SFX_MP5_LEFT,
+ SFX_MP5_RIGHT,
+ SFX_NEW_CAR_DOOR_CLOSE,
+ SFX_NEW_CAR_DOOR_OPEN,
+ SFX_NORTH, // cut
+ SFX_OLD_CAR_DOOR_CLOSE,
+ SFX_OLD_CAR_DOOR_OPEN,
+ SFX_PALM_TREE_LO,
+ SFX_PART_MISSION_COMPLETE_LEFT,
+ SFX_PART_MISSION_COMPLETE_RIGHT,
+ SFX_PART_MISSION_COMPLETE_CENTRE,
+ SFX_PAY_PHONE,
+ SFX_PED_CRUNCH_1,
+ SFX_PED_CRUNCH_2,
+ SFX_PED_ON_FIRE,
+ SFX_PISTOL_RELOAD,
+ SFX_PIZZA_THROW, // Throwpizza
+ SFX_POLICE_RADIO_BRIGHT,
+ SFX_POLICE_RADIO_CRACKLE, // 179
+ SFX_POLICE_RADIO_DARK,
+ SFX_POLICE_RADIO_IN_A,
+ SFX_POLICE_RADIO_LAST_SEEN,
+ SFX_POLICE_RADIO_LIGHT,
+ SFX_POLICE_RADIO_MESSAGE_NOISE_1,
+ SFX_POLICE_RADIO_ON_FOOT,
+ SFX_POLICE_RADIO_SUSPECT,
+ SFX_POLICE_SIREN_SLOW,
+ SFX_PYTHON_LEFT,
+ SFX_PYTHON_RIGHT,
+ SFX_RADIO_CLICK,
+ SFX_RADIO_DIAL_1,
+ SFX_RADIO_DIAL_2,
+ SFX_RADIO_DIAL_3,
+ SFX_RAIN,
+ SFX_RESPOND_TO, // cut
+ SFX_REVERSE_GEAR,
+ SFX_REVERSE_GEAR_2,
+ SFX_REVERSE_WARNING,
+ SFX_RIFLE_RELOAD,
+ SFX_ROAD_NOISE,
+ SFX_ROCKET_FLY,
+ SFX_ROCKET_LEFT,
+ SFX_ROCKET_RELOAD,
+ SFX_ROCKET_RIGHT,
+ SFX_RUGER_LEFT,
+ SFX_RUGER_RIGHT,
+ SFX_RUGER_TAIL,
+ SFX_R_OR_S_UNK1,
+ SFX_SCRAPE_CAR_1,
+ SFX_SHAG_SUSPENSION,
+ SFX_SHOTGUN_LEFT,
+ SFX_SHOTGUN_RIGHT,
+ SFX_SIREN_FAST,
+ SFX_SKATE_1, // cut
+ SFX_SKATE_2, // cut
+ SFX_SKID,
+ SFX_SNIPER_LEFT,
+ SFX_SNIPER_RIGHT,
+ SFX_SOUTH, // cut
+ SFX_SPAS12_LEFT,
+ SFX_SPAS12_RIGHT,
+ SFX_SPAS12_TAIL_LEFT,
+ SFX_SPLASH_1,
SFX_SUSPENSION_FAST_MOVE,
SFX_SUSPENSION_SLOW_MOVE_LOOP,
- SFX_SHAG_SUSPENSION,
- SFX_HIT_BALL, // 271
- SFX_ARCADE, // 272
- SFX_CESNA_IDLE, // 273
- SFX_CESNA_REV, // 274
- SFX_RADIO_CLICK, // 275
- SFX_RADIO_DIAL_1, // 276
- SFX_RADIO_DIAL_2, // 277
- SFX_RADIO_DIAL_3, // 278
-
- // pc only
- SFX_RADIO_DIAL_4,
- SFX_RADIO_DIAL_5,
- SFX_RADIO_DIAL_6,
- SFX_RADIO_DIAL_7,
- SFX_RADIO_DIAL_8,
- SFX_RADIO_DIAL_9,
- SFX_RADIO_DIAL_10,
- SFX_RADIO_DIAL_11,
- SFX_RADIO_DIAL_12,
+ SFX_TANK_TURRET,
+ SFX_TEC_LEFT,
+ SFX_TEC_RIGHT,
+ SFX_TEC_TAIL,
+ SFX_THERES, // cut
+ SFX_TIMER,
+ SFX_TIMER_BEEP,
+ SFX_TRAIN, // trainloop
+ SFX_TRUCK_DOOR_CLOSE,
+ SFX_TRUCK_DOOR_OPEN,
+ SFX_TYRE_BUMP,
+ SFX_TYRE_BURST,
+ SFX_TYRE_BURST_B,
+ SFX_TYRE_BURST_L,
+ SFX_UZI_END_LEFT,
+ SFX_UZI_LEFT,
+ SFX_UZI_RIGHT,
+ SFX_WEAPON_CENTRE,
+ SFX_WEAPON_LEFT,
+ SFX_WEAPON_RIGHT,
+ SFX_WEST, // cut
+ SFX_WEVE_GOT, // cut
+ SFX_WOODEN_BOX_SMASH,
- SFX_INFO_LEFT, // 279
- SFX_INFO_RIGHT, // 280
- SFX_INFO_CENTRE, // 281
- SFX_MONEY_LEFT, // 282
- SFX_MONEY_RIGHT, // 283
- SFX_WEAPON_LEFT, // 284
- SFX_WEAPON_RIGHT, // 285
- SFX_WEAPON_CENTRE, // 286
- SFX_PART_MISSION_COMPLETE_LEFT, // 287
- SFX_PART_MISSION_COMPLETE_RIGHT, // 288
- SFX_PART_MISSION_COMPLETE_CENTRE, // 289
- SFX_GO_LEFT, // 290
- SFX_GO_RIGHT, // 291
- SFX_GO_CENTRE, // 292
- SFX_TIMER, // 293
- SFX_EMPTY, // 294
+ SFX_EMPTY,
- SFX_FE_HIGHLIGHT_LEFT, //
- SFX_FE_HIGHLIGHT_RIGHT, //
- SFX_FE_SELECT_LEFT, //
- SFX_FE_SELECT_RIGHT, //
- SFX_FE_BACK_LEFT, //
- SFX_FE_BACK_RIGHT, //
- SFX_FE_ERROR_LEFT, //
- SFX_FE_ERROR_RIGHT, //
+ SFX_FE_BACK,
+ SFX_FE_ERROR_LEFT,
+ SFX_FE_ERROR_RIGHT,
+ SFX_FE_HIGHLIGHT,
SFX_FE_NOISE_BURST_1,
SFX_FE_NOISE_BURST_2,
SFX_FE_NOISE_BURST_3,
+ SFX_FE_SELECT,
SFX_CAR_ACCEL_1,
SFX_CAR_AFTER_ACCEL_1,
@@ -453,17 +385,17 @@ enum eSfxSample
SFX_CAR_CHAINSAW_ATTACK,
SFX_CAR_CHAINSAW_EMPTY, // unused
- SFX_RC_IDLE, // 10976
- SFX_RC_REV, // 10977
- SFX_RC_EMPTY, // 10978
+ SFX_RC_IDLE,
+ SFX_RC_REV,
+ SFX_RC_EMPTY,
- SFX_CAR_RC_HELI, // 10979
- SFX_CAR_AFTER_ACCEL_15, // empty
- SFX_CAR_FINGER_OFF_ACCEL_15, // empty
+ SFX_CAR_RC_HELI,
+ SFX_CAR_AFTER_ACCEL_15,
+ // SFX_CAR_FINGER_OFF_ACCEL_15,
- SFX_CAR_ACCEL_16, // empty
- SFX_CAR_AFTER_ACCEL_16, // empty
- SFX_CAR_FINGER_OFF_ACCEL_16, // empty
+ SFX_CAR_ACCEL_16,
+ // SFX_CAR_AFTER_ACCEL_16,
+ // SFX_CAR_FINGER_OFF_ACCEL_16,
// bike stuff apparently
SFX_CAR_ACCEL_17,
@@ -505,12 +437,12 @@ enum eSfxSample
SFX_HELI_UNUSED_3,
SFX_HELI_UNUSED_4,
- SFX_SEAPLANE_PRO1, // 11018
- SFX_SEAPLANE_PRO2, // 11019
- SFX_SEAPLANE_PRO3, // 11020
- SFX_SEAPLANE_PRO4, // 11021
// low fuel
- SFX_SEAPLANE_LOW, // 11022
+ SFX_SEAPLANE_LOW,
+ SFX_SEAPLANE_PRO1,
+ SFX_SEAPLANE_PRO2,
+ SFX_SEAPLANE_PRO3,
+ SFX_SEAPLANE_PRO4,
// something padded for more plane?
SFX_PLANE_UNUSED_1,
@@ -519,32 +451,32 @@ enum eSfxSample
SFX_PLANE_UNUSED_4,
// script objects
- SFX_BUILDINGS_BANK_ALARM, // 11027
- SFX_BUILDING_SNORE, // 11028
- SFX_BUILDING_BAR_1, // 11029
- SFX_BUILDING_BAR_2, // 11030
- SFX_BUILDING_BAR_3, // 11031
- SFX_BUILDING_BAR_4, // 11032
- SFX_BUILDING_MALIBU_1, // 11033
- SFX_BUILDING_MALIBU_2, // 11034
- SFX_BUILDING_MALIBU_3, // 11035
- SFX_BUILDING_STRIP_1, // 11036
- SFX_BUILDING_STRIP_2, // 11037
- SFX_BUILDING_STRIP_3, // 11038
- SFX_BUILDING_CHURCH, // 11039
- SFX_BUILDING_FAN_1, // 11040
- SFX_BUILDING_FAN_2, // 11041
- SFX_BUILDING_FAN_3, // 11042
- SFX_BUILDING_FAN_4, // 11043
- SFX_BUILDING_INSECTS_1, // 11044
- SFX_BUILDING_INSECTS_2, // 11045
- SFX_BUILDING_INSECTS_3, // 11046
- SFX_BUILDING_INSECTS_4, // 11047
- SFX_BUILDING_INSECTS_5, // 11048
- SFX_CLUB_1, // 11049
- SFX_CLUB_2, // 11050
- SFX_CLUB_3, // 11051
- SFX_CLUB_4, // 11052
+ SFX_BUILDINGS_BANK_ALARM,
+ SFX_BUILDING_SNORE,
+ SFX_BUILDING_BAR_1,
+ SFX_BUILDING_BAR_2,
+ SFX_BUILDING_BAR_3,
+ SFX_BUILDING_BAR_4,
+ SFX_BUILDING_MALIBU_1,
+ SFX_BUILDING_MALIBU_2,
+ SFX_BUILDING_MALIBU_3,
+ SFX_BUILDING_STRIP_1,
+ SFX_BUILDING_STRIP_2,
+ SFX_BUILDING_STRIP_3,
+ SFX_BUILDING_CHURCH,
+ SFX_BUILDING_FAN_1,
+ SFX_BUILDING_FAN_2,
+ SFX_BUILDING_FAN_3,
+ SFX_BUILDING_FAN_4,
+ SFX_BUILDING_INSECTS_1,
+ SFX_BUILDING_INSECTS_2,
+ SFX_BUILDING_INSECTS_3,
+ SFX_BUILDING_INSECTS_4,
+ SFX_BUILDING_INSECTS_5,
+ SFX_CLUB_1,
+ SFX_CLUB_2,
+ SFX_CLUB_3,
+ SFX_CLUB_4,
SFX_FOOTSTEP_GRASS_1,
SFX_FOOTSTEP_GRASS_2,
@@ -577,9554 +509,5216 @@ enum eSfxSample
// ped comments
- SFX_BMYBB_BLOCKED_1,
- SFX_BMYBB_BLOCKED_2,
- SFX_BMYBB_BLOCKED_3,
- SFX_BMYBB_BLOCKED_4,
- SFX_BMYBB_BLOCKED_5,
- SFX_BMYBB_BLOCKED_6,
- SFX_BMYBB_BLOCKED_7,
- SFX_BMYBB_BLOCKED_8,
- SFX_BMYBB_BLOCKED_9,
- SFX_BMYBB_BLOCKED_10,
- SFX_BMYBB_BLOCKED_11,
- SFX_BMYBB_BLOCKED_12,
- SFX_BMYBB_BLOCKED_13,
- SFX_BMYBB_BUMP_1,
- SFX_BMYBB_BUMP_2,
- SFX_BMYBB_BUMP_3,
- SFX_BMYBB_BUMP_4,
- SFX_BMYBB_BUMP_5,
- SFX_BMYBB_BUMP_6,
- SFX_BMYBB_BUMP_7,
- SFX_BMYBB_BUMP_8,
- SFX_BMYBB_BUMP_9,
- SFX_BMYBB_BUMP_10,
- SFX_BMYBB_BUMP_11,
- SFX_BMYBB_BUMP_12,
- SFX_BMYBB_BUMP_13,
- SFX_BMYBB_BUMP_14,
- SFX_BMYBB_BUMP_15,
- SFX_BMYBB_BUMP_16,
- SFX_BMYBB_BUMP_17,
- SFX_BMYBB_CAR_CRASH_1,
- SFX_BMYBB_CAR_CRASH_2,
- SFX_BMYBB_CAR_CRASH_3,
- SFX_BMYBB_CAR_CRASH_4,
- SFX_BMYBB_CAR_CRASH_5,
- SFX_BMYBB_CAR_CRASH_6,
- SFX_BMYBB_CAR_CRASH_7,
- SFX_BMYBB_CAR_CRASH_8,
- SFX_BMYBB_CAR_CRASH_9,
- SFX_BMYBB_CHAT_1,
- SFX_BMYBB_CHAT_2,
- SFX_BMYBB_CHAT_3,
- SFX_BMYBB_CHAT_4,
- SFX_BMYBB_CHAT_5,
- SFX_BMYBB_CHAT_6,
- SFX_BMYBB_CHAT_7,
- SFX_BMYBB_CHAT_8,
- SFX_BMYBB_CHAT_9,
- SFX_BMYBB_CHAT_10,
- SFX_BMYBB_CHAT_11,
- SFX_BMYBB_CHAT_12,
- SFX_BMYBB_CHAT_13,
- SFX_BMYBB_CHAT_14,
- SFX_BMYBB_CHAT_15,
- SFX_BMYBB_CHAT_16,
- SFX_BMYBB_CHAT_17,
- SFX_BMYBB_CHAT_18,
- SFX_BMYBB_CHAT_19,
- SFX_BMYBB_CHAT_20,
- SFX_BMYBB_CHAT_21,
- SFX_BMYBB_DODGE_1,
- SFX_BMYBB_DODGE_2,
- SFX_BMYBB_DODGE_3,
- SFX_BMYBB_DODGE_4,
- SFX_BMYBB_DODGE_5,
- SFX_BMYBB_DODGE_6,
- SFX_BMYBB_DODGE_7,
- SFX_BMYBB_DODGE_8,
- SFX_BMYBB_DODGE_9,
- SFX_BMYBB_DODGE_10,
- SFX_BMYBB_DODGE_11,
- SFX_BMYBB_DODGE_12,
- SFX_BMYBB_DODGE_13,
- SFX_BMYBB_DODGE_14,
- SFX_BMYBB_DODGE_15,
- SFX_BMYBB_DODGE_16,
- SFX_BMYBB_DODGE_17,
- SFX_BMYBB_DODGE_18,
- SFX_BMYBB_EYEING_1,
- SFX_BMYBB_EYEING_2,
- SFX_BMYBB_EYEING_3,
- SFX_BMYBB_EYEING_4,
- SFX_BMYBB_EYEING_5,
- SFX_BMYBB_EYEING_6,
- SFX_BMYBB_EYEING_7,
- SFX_BMYBB_EYEING_8,
- SFX_BMYBB_EYEING_9,
- SFX_BMYBB_EYEING_10,
- SFX_BMYBB_EYEING_11,
- SFX_BMYBB_EYEING_12,
- SFX_BMYBB_EYEING_13,
- SFX_BMYBB_EYEING_14,
- SFX_BMYBB_EYEING_15,
- SFX_BMYBB_EYEING_16,
- SFX_BMYBB_FIGHT_1,
- SFX_BMYBB_FIGHT_2,
- SFX_BMYBB_FIGHT_3,
- SFX_BMYBB_FIGHT_4,
- SFX_BMYBB_FIGHT_5,
- SFX_BMYBB_FIGHT_6,
- SFX_BMYBB_FIGHT_7,
- SFX_BMYBB_FIGHT_8,
- SFX_BMYBB_FIGHT_9,
- SFX_BMYBB_FIGHT_10,
- SFX_BMYBB_FIGHT_11,
- SFX_BMYBB_FIGHT_12,
- SFX_BMYBB_GENERIC_CRASH_1,
- SFX_BMYBB_GENERIC_CRASH_2,
- SFX_BMYBB_GENERIC_CRASH_3,
- SFX_BMYBB_GENERIC_CRASH_4,
- SFX_BMYBB_GENERIC_CRASH_5,
- SFX_BMYBB_GENERIC_CRASH_6,
- SFX_BMYBB_GENERIC_CRASH_7,
- SFX_BMYBB_GENERIC_CRASH_8,
- SFX_BMYBB_GENERIC_CRASH_9,
- SFX_BMYBB_GUN_COOL_1,
- SFX_BMYBB_GUN_COOL_2,
- SFX_BMYBB_GUN_COOL_3,
- SFX_BMYBB_GUN_COOL_4,
- SFX_BMYBB_GUN_COOL_5,
- SFX_BMYBB_INNOCENT_1,
- SFX_BMYBB_INNOCENT_2,
- SFX_BMYBB_INNOCENT_3,
- SFX_BMYBB_INNOCENT_4,
- SFX_BMYBB_JACKED_1,
- SFX_BMYBB_JACKED_2,
- SFX_BMYBB_JACKED_3,
- SFX_BMYBB_JACKED_4,
- SFX_BMYBB_JACKED_5,
- SFX_BMYBB_JACKED_6,
- SFX_BMYBB_JACKED_7,
- SFX_BMYBB_JACKED_8,
- SFX_BMYBB_JACKED_9,
- SFX_BMYBB_JACKED_10,
- SFX_BMYBB_JACKED_11,
- SFX_BMYBB_JACKING_1,
- SFX_BMYBB_JACKING_2,
- SFX_BMYBB_JACKING_3,
- SFX_BMYBB_JACKING_4,
- SFX_BMYBB_JACKING_5,
- SFX_BMYBB_JACKING_6,
- SFX_BMYBB_JACKING_7,
- SFX_BMYBB_JACKING_8,
- SFX_BMYBB_JACKING_9,
- SFX_BMYBB_JEER_1,
- SFX_BMYBB_JEER_2,
- SFX_BMYBB_JEER_3,
- SFX_BMYBB_JEER_4,
- SFX_BMYBB_JEER_5,
- SFX_BMYBB_JEER_6,
- SFX_BMYBB_JEER_7,
- SFX_BMYBB_JEER_8,
- SFX_BMYBB_JEER_9,
- SFX_BMYBB_JEER_10,
- SFX_BMYBB_JEER_11,
- SFX_BMYBB_JEER_12,
- SFX_BMYBB_JEER_13,
- SFX_BMYBB_JEER_14,
- SFX_BMYBB_JEER_15,
- SFX_BMYBB_JEER_16,
- SFX_BMYBB_LOST_1,
- SFX_BMYBB_LOST_2,
- SFX_BMYBB_MUGGED_1,
- SFX_BMYBB_MUGGED_2,
- SFX_BMYBB_MUGGED_3,
- SFX_BMYBB_MUGGED_4,
- SFX_BMYBB_MUGGED_5,
- SFX_BMYBB_MUGGING_1,
- SFX_BMYBB_MUGGING_2,
- SFX_BMYBB_MUGGING_3,
- SFX_BMYBB_MUGGING_4,
- SFX_BMYBB_MUGGING_5,
- SFX_BMYBB_MUGGING_6,
- SFX_BMYBB_MUGGING_7,
- SFX_BMYBB_MUGGING_8,
- SFX_BMYBB_SAVED_1,
- SFX_BMYBB_SAVED_2,
- SFX_BMYBB_SAVED_3,
- SFX_BMYBB_SAVED_4,
- SFX_BMYBB_SAVED_5,
- SFX_BMYBB_SAVED_6,
- SFX_BMYBB_SHOCKED_1,
- SFX_BMYBB_SHOCKED_2,
- SFX_BMYBB_SHOCKED_3,
- SFX_BMYBB_SHOCKED_4,
- SFX_BMYBB_SHOCKED_5,
- SFX_BMYBB_SHOCKED_6,
- SFX_BMYBB_TAXI_1,
- SFX_BMYBB_TAXI_2,
- SFX_BMYBB_TAXI_3,
-
- SFX_POLICE_BOAT_1,
- SFX_POLICE_BOAT_2,
- SFX_POLICE_BOAT_3,
- SFX_POLICE_BOAT_4,
- SFX_POLICE_BOAT_5,
- SFX_POLICE_BOAT_6,
- SFX_POLICE_BOAT_7,
- SFX_POLICE_BOAT_8,
- SFX_POLICE_BOAT_9,
- SFX_POLICE_BOAT_10,
- SFX_POLICE_BOAT_11,
- SFX_POLICE_BOAT_12,
- SFX_POLICE_BOAT_13,
- SFX_POLICE_BOAT_14,
- SFX_POLICE_BOAT_15,
- SFX_POLICE_BOAT_16,
- SFX_POLICE_BOAT_17,
- SFX_POLICE_BOAT_18,
- SFX_POLICE_BOAT_19,
- SFX_POLICE_BOAT_20,
- SFX_POLICE_BOAT_21,
- SFX_POLICE_BOAT_22,
- SFX_POLICE_BOAT_23,
-
- SFX_POLICE_HELI_1,
- SFX_POLICE_HELI_2,
- SFX_POLICE_HELI_3,
- SFX_POLICE_HELI_4,
- SFX_POLICE_HELI_5,
- SFX_POLICE_HELI_6,
- SFX_POLICE_HELI_7,
- SFX_POLICE_HELI_8,
- SFX_POLICE_HELI_9,
- SFX_POLICE_HELI_10,
- SFX_POLICE_HELI_11,
- SFX_POLICE_HELI_12,
- SFX_POLICE_HELI_13,
- SFX_POLICE_HELI_14,
- SFX_POLICE_HELI_15,
- SFX_POLICE_HELI_16,
- SFX_POLICE_HELI_17,
- SFX_POLICE_HELI_18,
- SFX_POLICE_HELI_19,
- SFX_POLICE_HELI_20,
-
- SFX_JFOTO_BLOCKED_1,
- SFX_JFOTO_BLOCKED_2,
- SFX_JFOTO_BLOCKED_3,
- SFX_JFOTO_BLOCKED_4,
- SFX_JFOTO_BLOCKED_5,
- SFX_JFOTO_BLOCKED_6,
- SFX_JFOTO_BLOCKED_7,
- SFX_JFOTO_BLOCKED_8,
-
- SFX_JFOTO_BUMP_1,
- SFX_JFOTO_BUMP_2,
- SFX_JFOTO_BUMP_3,
- SFX_JFOTO_BUMP_4,
- SFX_JFOTO_BUMP_5,
- SFX_JFOTO_BUMP_6,
- SFX_JFOTO_BUMP_7,
- SFX_JFOTO_BUMP_8,
- SFX_JFOTO_BUMP_9,
- SFX_JFOTO_BUMP_10,
-
- SFX_JFOTO_CAR_CRASH_1,
- SFX_JFOTO_CAR_CRASH_2,
- SFX_JFOTO_CAR_CRASH_3,
- SFX_JFOTO_CAR_CRASH_4,
- SFX_JFOTO_CAR_CRASH_5,
- SFX_JFOTO_CAR_CRASH_6,
- SFX_JFOTO_CAR_CRASH_7,
- SFX_JFOTO_CAR_CRASH_8,
-
- SFX_JFOTO_CHAT_1,
- SFX_JFOTO_CHAT_2,
- SFX_JFOTO_CHAT_3,
- SFX_JFOTO_CHAT_4,
- SFX_JFOTO_CHAT_5,
- SFX_JFOTO_CHAT_6,
- SFX_JFOTO_CHAT_7,
- SFX_JFOTO_CHAT_8,
- SFX_JFOTO_CHAT_9,
- SFX_JFOTO_CHAT_10,
- SFX_JFOTO_CHAT_11,
- SFX_JFOTO_CHAT_12,
- SFX_JFOTO_CHAT_13,
-
- SFX_JFOTO_DODGE_1,
- SFX_JFOTO_DODGE_2,
- SFX_JFOTO_DODGE_3,
- SFX_JFOTO_DODGE_4,
- SFX_JFOTO_DODGE_5,
- SFX_JFOTO_DODGE_6,
- SFX_JFOTO_DODGE_7,
- SFX_JFOTO_DODGE_8,
- SFX_JFOTO_DODGE_9,
-
- SFX_JFOTO_GENERIC_CRASH_1,
- SFX_JFOTO_GENERIC_CRASH_2,
- SFX_JFOTO_GENERIC_CRASH_3,
- SFX_JFOTO_GENERIC_CRASH_4,
- SFX_JFOTO_GENERIC_CRASH_5,
- SFX_JFOTO_GENERIC_CRASH_6,
- SFX_JFOTO_GUN_PANIC_1,
- SFX_JFOTO_GUN_PANIC_2,
- SFX_JFOTO_GUN_PANIC_3,
- SFX_JFOTO_GUN_PANIC_4,
- SFX_JFOTO_JACKED_1,
- SFX_JFOTO_JACKED_2,
- SFX_JFOTO_JACKED_3,
- SFX_JFOTO_JACKED_4,
- SFX_JFOTO_JACKED_5,
- SFX_JFOTO_LOST_1,
- SFX_JFOTO_MUGGED_1,
- SFX_JFOTO_MUGGED_2,
- SFX_JFOTO_RUN_1,
- SFX_JFOTO_RUN_2,
- SFX_JFOTO_RUN_3,
- SFX_JFOTO_RUN_4,
- SFX_JFOTO_RUN_5,
- SFX_JFOTO_SAVED_1,
- SFX_JFOTO_SAVED_2,
- SFX_JFOTO_SHOCKED_1,
- SFX_JFOTO_TAXI_1,
- SFX_JFOTO_TAXI_2,
-
- SFX_JMOTO_BLOCKED_1,
- SFX_JMOTO_BLOCKED_2,
- SFX_JMOTO_BLOCKED_3,
- SFX_JMOTO_BLOCKED_4,
- SFX_JMOTO_BLOCKED_5,
- SFX_JMOTO_BLOCKED_6,
- SFX_JMOTO_BLOCKED_7,
- SFX_JMOTO_BLOCKED_8,
- SFX_JMOTO_BUMP_1,
- SFX_JMOTO_BUMP_2,
- SFX_JMOTO_BUMP_3,
- SFX_JMOTO_BUMP_4,
- SFX_JMOTO_BUMP_5,
- SFX_JMOTO_BUMP_6,
- SFX_JMOTO_BUMP_7,
- SFX_JMOTO_BUMP_8,
- SFX_JMOTO_CAR_CRASH_1,
- SFX_JMOTO_CAR_CRASH_2,
- SFX_JMOTO_CAR_CRASH_3,
- SFX_JMOTO_CAR_CRASH_4,
- SFX_JMOTO_CAR_CRASH_5,
- SFX_JMOTO_CAR_CRASH_6,
- SFX_JMOTO_CHAT_1,
- SFX_JMOTO_CHAT_2,
- SFX_JMOTO_CHAT_3,
- SFX_JMOTO_CHAT_4,
- SFX_JMOTO_CHAT_5,
- SFX_JMOTO_CHAT_6,
- SFX_JMOTO_CHAT_7,
- SFX_JMOTO_DODGE_1,
- SFX_JMOTO_DODGE_2,
- SFX_JMOTO_DODGE_3,
- SFX_JMOTO_DODGE_4,
- SFX_JMOTO_DODGE_5,
- SFX_JMOTO_DODGE_6,
- SFX_JMOTO_GENERIC_CRASH_1,
- SFX_JMOTO_GENERIC_CRASH_2,
- SFX_JMOTO_GENERIC_CRASH_3,
- SFX_JMOTO_GENERIC_CRASH_4,
- SFX_JMOTO_GENERIC_CRASH_5,
- SFX_JMOTO_GENERIC_CRASH_6,
- SFX_JMOTO_GUN_PANIC_1,
- SFX_JMOTO_GUN_PANIC_2,
- SFX_JMOTO_GUN_PANIC_3,
- SFX_JMOTO_GUN_PANIC_4,
- SFX_JMOTO_JACKED_1,
- SFX_JMOTO_JACKED_2,
- SFX_JMOTO_JACKED_3,
- SFX_JMOTO_JACKED_4,
- SFX_JMOTO_LOST_1,
- SFX_JMOTO_MUGGED_1,
- SFX_JMOTO_MUGGED_2,
- SFX_JMOTO_RUN_1,
- SFX_JMOTO_RUN_2,
- SFX_JMOTO_RUN_3,
- SFX_JMOTO_RUN_4,
- SFX_JMOTO_SAVED_1,
- SFX_JMOTO_SHOCKED_1,
- SFX_JMOTO_TAXI_1,
-
- SFX_BMYBE_BLOCKED_1,
- SFX_BMYBE_BLOCKED_2,
- SFX_BMYBE_BLOCKED_3,
- SFX_BMYBE_BLOCKED_4,
- SFX_BMYBE_BLOCKED_5,
- SFX_BMYBE_BLOCKED_6,
- SFX_BMYBE_BLOCKED_7,
- SFX_BMYBE_BLOCKED_8,
- SFX_BMYBE_BUMP_1,
- SFX_BMYBE_BUMP_2,
- SFX_BMYBE_BUMP_3,
- SFX_BMYBE_BUMP_4,
- SFX_BMYBE_BUMP_5,
- SFX_BMYBE_BUMP_6,
- SFX_BMYBE_BUMP_7,
- SFX_BMYBE_BUMP_8,
- SFX_BMYBE_BUMP_9,
- SFX_BMYBE_BUMP_10,
- SFX_BMYBE_CAR_CRASH_1,
- SFX_BMYBE_CAR_CRASH_2,
- SFX_BMYBE_CAR_CRASH_3,
- SFX_BMYBE_CAR_CRASH_4,
- SFX_BMYBE_CAR_CRASH_5,
- SFX_BMYBE_CAR_CRASH_6,
- SFX_BMYBE_CAR_CRASH_7,
- SFX_BMYBE_CAR_CRASH_8,
- SFX_BMYBE_CHAT_1,
- SFX_BMYBE_CHAT_2,
- SFX_BMYBE_CHAT_3,
- SFX_BMYBE_CHAT_4,
- SFX_BMYBE_CHAT_5,
- SFX_BMYBE_CHAT_6,
- SFX_BMYBE_CHAT_7,
- SFX_BMYBE_CHAT_8,
- SFX_BMYBE_CHAT_9,
- SFX_BMYBE_CHAT_10,
- SFX_BMYBE_DODGE_1,
- SFX_BMYBE_DODGE_2,
- SFX_BMYBE_DODGE_3,
- SFX_BMYBE_DODGE_4,
- SFX_BMYBE_DODGE_5,
- SFX_BMYBE_DODGE_6,
- SFX_BMYBE_DODGE_7,
- SFX_BMYBE_DODGE_8,
- SFX_BMYBE_DODGE_9,
- SFX_BMYBE_DODGE_10,
- SFX_BMYBE_EYEING_1,
- SFX_BMYBE_EYEING_2,
- SFX_BMYBE_FIGHT_1,
- SFX_BMYBE_FIGHT_2,
- SFX_BMYBE_FIGHT_3,
- SFX_BMYBE_FIGHT_4,
- SFX_BMYBE_FIGHT_5,
- SFX_BMYBE_FIGHT_6,
- SFX_BMYBE_FIGHT_7,
- SFX_BMYBE_FIGHT_8,
- SFX_BMYBE_GENERIC_CRASH_1,
- SFX_BMYBE_GENERIC_CRASH_2,
- SFX_BMYBE_GENERIC_CRASH_3,
- SFX_BMYBE_GENERIC_CRASH_4,
- SFX_BMYBE_GENERIC_CRASH_5,
- SFX_BMYBE_GENERIC_CRASH_6,
- SFX_BMYBE_GENERIC_CRASH_7,
- SFX_BMYBE_GENERIC_CRASH_8,
- SFX_BMYBE_GUN_COOL_1,
- SFX_BMYBE_GUN_COOL_2,
- SFX_BMYBE_GUN_COOL_3,
- SFX_BMYBE_GUN_COOL_4,
- SFX_BMYBE_JACKED_1,
- SFX_BMYBE_JACKED_2,
- SFX_BMYBE_JACKED_3,
- SFX_BMYBE_JACKED_4,
- SFX_BMYBE_JACKED_5,
- SFX_BMYBE_JACKED_6,
- SFX_BMYBE_JACKING_1,
- SFX_BMYBE_JACKING_2,
- SFX_BMYBE_JACKING_3,
- SFX_BMYBE_LOST_1,
- SFX_BMYBE_MUGGED_1,
- SFX_BMYBE_SAVED_1,
- SFX_BMYBE_TAXI_1,
-
- SFX_HFOBE_BLOCKED_1,
- SFX_HFOBE_BLOCKED_2,
- SFX_HFOBE_BLOCKED_3,
- SFX_HFOBE_BLOCKED_4,
- SFX_HFOBE_BLOCKED_5,
- SFX_HFOBE_BLOCKED_6,
- SFX_HFOBE_BUMP_1,
- SFX_HFOBE_BUMP_2,
- SFX_HFOBE_BUMP_3,
- SFX_HFOBE_BUMP_4,
- SFX_HFOBE_BUMP_5,
- SFX_HFOBE_BUMP_6,
- SFX_HFOBE_BUMP_7,
- SFX_HFOBE_BUMP_8,
- SFX_HFOBE_BUMP_9,
- SFX_HFOBE_BUMP_10,
- SFX_HFOBE_BUMP_11,
- SFX_HFOBE_CAR_CRASH_1,
- SFX_HFOBE_CAR_CRASH_2,
- SFX_HFOBE_CAR_CRASH_3,
- SFX_HFOBE_CAR_CRASH_4,
- SFX_HFOBE_CAR_CRASH_5,
- SFX_HFOBE_CAR_CRASH_6,
- SFX_HFOBE_CHAT_1,
- SFX_HFOBE_CHAT_2,
- SFX_HFOBE_CHAT_3,
- SFX_HFOBE_CHAT_4,
- SFX_HFOBE_CHAT_5,
- SFX_HFOBE_CHAT_6,
- SFX_HFOBE_CHAT_7,
- SFX_HFOBE_CHAT_8,
- SFX_HFOBE_CHAT_9,
- SFX_HFOBE_CHAT_10,
- SFX_HFOBE_DODGE_1,
- SFX_HFOBE_DODGE_2,
- SFX_HFOBE_DODGE_3,
- SFX_HFOBE_DODGE_4,
- SFX_HFOBE_DODGE_5,
- SFX_HFOBE_DODGE_6,
- SFX_HFOBE_DODGE_7,
- SFX_HFOBE_GENERIC_CRASH_1,
- SFX_HFOBE_GENERIC_CRASH_2,
- SFX_HFOBE_GENERIC_CRASH_3,
- SFX_HFOBE_GENERIC_CRASH_4,
- SFX_HFOBE_GENERIC_CRASH_5,
- SFX_HFOBE_GUN_PANIC_1,
- SFX_HFOBE_GUN_PANIC_2,
- SFX_HFOBE_GUN_PANIC_3,
- SFX_HFOBE_GUN_PANIC_4,
- SFX_HFOBE_GUN_PANIC_5,
- SFX_HFOBE_JACKED_1,
- SFX_HFOBE_JACKED_2,
- SFX_HFOBE_JACKED_3,
- SFX_HFOBE_JACKED_4,
- SFX_HFOBE_JACKED_5,
- SFX_HFOBE_JACKED_6,
- SFX_HFOBE_LOST_1,
- SFX_HFOBE_LOST_2,
- SFX_HFOBE_RUN_1,
- SFX_HFOBE_RUN_2,
- SFX_HFOBE_RUN_3,
- SFX_HFOBE_RUN_4,
- SFX_HFOBE_SAVED_1,
- SFX_HFOBE_SHOCKED_1,
- SFX_HFOBE_SHOCKED_2,
- SFX_HFOBE_TAXI_1,
- SFX_HFOBE_TAXI_2,
-
- SFX_STREET_GANG_1_BLOCKED_1,
- SFX_STREET_GANG_1_BLOCKED_2,
- SFX_STREET_GANG_1_BLOCKED_3,
- SFX_STREET_GANG_1_BLOCKED_4,
- SFX_STREET_GANG_1_BLOCKED_5,
- SFX_STREET_GANG_1_BLOCKED_6,
- SFX_STREET_GANG_1_BLOCKED_7,
- SFX_STREET_GANG_1_BLOCKED_8,
- SFX_STREET_GANG_1_BUMP_1,
- SFX_STREET_GANG_1_BUMP_2,
- SFX_STREET_GANG_1_BUMP_3,
- SFX_STREET_GANG_1_BUMP_4,
- SFX_STREET_GANG_1_BUMP_5,
- SFX_STREET_GANG_1_BUMP_6,
- SFX_STREET_GANG_1_BUMP_7,
- SFX_STREET_GANG_1_BUMP_8,
- SFX_STREET_GANG_1_BUMP_9,
- SFX_STREET_GANG_1_BUMP_10,
- SFX_STREET_GANG_1_CAR_CRASH_1,
- SFX_STREET_GANG_1_CAR_CRASH_2,
- SFX_STREET_GANG_1_CAR_CRASH_3,
- SFX_STREET_GANG_1_CAR_CRASH_4,
- SFX_STREET_GANG_1_CAR_CRASH_5,
- SFX_STREET_GANG_1_CAR_CRASH_6,
- SFX_STREET_GANG_1_CHAT_1,
- SFX_STREET_GANG_1_CHAT_2,
- SFX_STREET_GANG_1_CHAT_3,
- SFX_STREET_GANG_1_CHAT_4,
- SFX_STREET_GANG_1_CHAT_5,
- SFX_STREET_GANG_1_CHAT_6,
- SFX_STREET_GANG_1_CHAT_7,
- SFX_STREET_GANG_1_CHAT_8,
- SFX_STREET_GANG_1_CHAT_9,
- SFX_STREET_GANG_1_CHAT_10,
- SFX_STREET_GANG_1_CHAT_11,
- SFX_STREET_GANG_1_CHAT_12,
- SFX_STREET_GANG_1_DODGE_1,
- SFX_STREET_GANG_1_DODGE_2,
- SFX_STREET_GANG_1_DODGE_3,
- SFX_STREET_GANG_1_DODGE_4,
- SFX_STREET_GANG_1_DODGE_5,
- SFX_STREET_GANG_1_DODGE_6,
- SFX_STREET_GANG_1_DODGE_7,
- SFX_STREET_GANG_1_DODGE_8,
- SFX_STREET_GANG_1_DODGE_9,
- SFX_STREET_GANG_1_EYEING_1,
- SFX_STREET_GANG_1_EYEING_2,
- SFX_STREET_GANG_1_EYEING_3,
- SFX_STREET_GANG_1_FIGHT_1,
- SFX_STREET_GANG_1_FIGHT_2,
- SFX_STREET_GANG_1_FIGHT_3,
- SFX_STREET_GANG_1_FIGHT_4,
- SFX_STREET_GANG_1_FIGHT_5,
- SFX_STREET_GANG_1_FIGHT_6,
- SFX_STREET_GANG_1_FIGHT_7,
- SFX_STREET_GANG_1_FIGHT_8,
- SFX_STREET_GANG_1_FIGHT_9,
- SFX_STREET_GANG_1_FIGHT_10,
- SFX_STREET_GANG_1_GENERIC_CRASH_1,
- SFX_STREET_GANG_1_GENERIC_CRASH_2,
- SFX_STREET_GANG_1_GENERIC_CRASH_3,
- SFX_STREET_GANG_1_GENERIC_CRASH_4,
- SFX_STREET_GANG_1_GENERIC_CRASH_5,
- SFX_STREET_GANG_1_GENERIC_CRASH_6,
- SFX_STREET_GANG_1_GUN_COOL_1,
- SFX_STREET_GANG_1_GUN_COOL_2,
- SFX_STREET_GANG_1_GUN_COOL_3,
- SFX_STREET_GANG_1_GUN_COOL_4,
- SFX_STREET_GANG_1_GUN_COOL_5,
- SFX_STREET_GANG_1_JACKED_1,
- SFX_STREET_GANG_1_JACKED_2,
- SFX_STREET_GANG_1_JACKED_3,
- SFX_STREET_GANG_1_JACKED_4,
- SFX_STREET_GANG_1_JACKED_5,
- SFX_STREET_GANG_1_JACKING_1,
- SFX_STREET_GANG_1_JACKING_2,
- SFX_STREET_GANG_1_JACKING_3,
- SFX_STREET_GANG_1_JACKING_4,
- SFX_STREET_GANG_1_JACKING_5,
- SFX_STREET_GANG_1_LOST_1,
- SFX_STREET_GANG_1_LOST_2,
- SFX_STREET_GANG_1_MUGGED_1,
- SFX_STREET_GANG_1_MUGGED_2,
- SFX_STREET_GANG_1_MUGGED_3,
- SFX_STREET_GANG_1_MUGGING_1,
- SFX_STREET_GANG_1_MUGGING_2,
- SFX_STREET_GANG_1_MUGGING_3,
- SFX_STREET_GANG_1_MUGGING_4,
- SFX_STREET_GANG_1_MUGGING_5,
- SFX_STREET_GANG_1_SAVED_1,
- SFX_STREET_GANG_1_SHOCKED_1,
- SFX_STREET_GANG_1_SHOCKED_2,
- SFX_STREET_GANG_1_TAXI_1,
-
- SFX_STREET_GANG_2_BLOCKED_1,
- SFX_STREET_GANG_2_BLOCKED_2,
- SFX_STREET_GANG_2_BLOCKED_3,
- SFX_STREET_GANG_2_BLOCKED_4,
- SFX_STREET_GANG_2_BLOCKED_5,
- SFX_STREET_GANG_2_BLOCKED_6,
- SFX_STREET_GANG_2_BLOCKED_7,
- SFX_STREET_GANG_2_BLOCKED_8,
- SFX_STREET_GANG_2_BUMP_1,
- SFX_STREET_GANG_2_BUMP_2,
- SFX_STREET_GANG_2_BUMP_3,
- SFX_STREET_GANG_2_BUMP_4,
- SFX_STREET_GANG_2_BUMP_5,
- SFX_STREET_GANG_2_BUMP_6,
- SFX_STREET_GANG_2_BUMP_7,
- SFX_STREET_GANG_2_BUMP_8,
- SFX_STREET_GANG_2_BUMP_9,
- SFX_STREET_GANG_2_BUMP_10,
- SFX_STREET_GANG_2_CAR_CRASH_1,
- SFX_STREET_GANG_2_CAR_CRASH_2,
- SFX_STREET_GANG_2_CAR_CRASH_3,
- SFX_STREET_GANG_2_CAR_CRASH_4,
- SFX_STREET_GANG_2_CAR_CRASH_5,
- SFX_STREET_GANG_2_CAR_CRASH_6,
- SFX_STREET_GANG_2_CHAT_1,
- SFX_STREET_GANG_2_CHAT_2,
- SFX_STREET_GANG_2_CHAT_3,
- SFX_STREET_GANG_2_CHAT_4,
- SFX_STREET_GANG_2_CHAT_5,
- SFX_STREET_GANG_2_CHAT_6,
- SFX_STREET_GANG_2_CHAT_7,
- SFX_STREET_GANG_2_CHAT_8,
- SFX_STREET_GANG_2_CHAT_9,
- SFX_STREET_GANG_2_CHAT_10,
- SFX_STREET_GANG_2_CHAT_11,
- SFX_STREET_GANG_2_CHAT_12,
- SFX_STREET_GANG_2_DODGE_1,
- SFX_STREET_GANG_2_DODGE_2,
- SFX_STREET_GANG_2_DODGE_3,
- SFX_STREET_GANG_2_DODGE_4,
- SFX_STREET_GANG_2_DODGE_5,
- SFX_STREET_GANG_2_DODGE_6,
- SFX_STREET_GANG_2_DODGE_7,
- SFX_STREET_GANG_2_DODGE_8,
- SFX_STREET_GANG_2_DODGE_9,
- SFX_STREET_GANG_2_EYEING_1,
- SFX_STREET_GANG_2_EYEING_2,
- SFX_STREET_GANG_2_EYEING_3,
- SFX_STREET_GANG_2_FIGHT_1,
- SFX_STREET_GANG_2_FIGHT_2,
- SFX_STREET_GANG_2_FIGHT_3,
- SFX_STREET_GANG_2_FIGHT_4,
- SFX_STREET_GANG_2_FIGHT_5,
- SFX_STREET_GANG_2_FIGHT_6,
- SFX_STREET_GANG_2_FIGHT_7,
- SFX_STREET_GANG_2_FIGHT_8,
- SFX_STREET_GANG_2_FIGHT_9,
- SFX_STREET_GANG_2_FIGHT_10,
- SFX_STREET_GANG_2_GENERIC_CRASH_1,
- SFX_STREET_GANG_2_GENERIC_CRASH_2,
- SFX_STREET_GANG_2_GENERIC_CRASH_3,
- SFX_STREET_GANG_2_GENERIC_CRASH_4,
- SFX_STREET_GANG_2_GENERIC_CRASH_5,
- SFX_STREET_GANG_2_GENERIC_CRASH_6,
- SFX_STREET_GANG_2_GUN_COOL_1,
- SFX_STREET_GANG_2_GUN_COOL_2,
- SFX_STREET_GANG_2_GUN_COOL_3,
- SFX_STREET_GANG_2_GUN_COOL_4,
- SFX_STREET_GANG_2_GUN_COOL_5,
- SFX_STREET_GANG_2_JACKED_1,
- SFX_STREET_GANG_2_JACKED_2,
- SFX_STREET_GANG_2_JACKED_3,
- SFX_STREET_GANG_2_JACKED_4,
- SFX_STREET_GANG_2_JACKED_5,
- SFX_STREET_GANG_2_JACKING_1,
- SFX_STREET_GANG_2_JACKING_2,
- SFX_STREET_GANG_2_JACKING_3,
- SFX_STREET_GANG_2_JACKING_4,
- SFX_STREET_GANG_2_JACKING_5,
- SFX_STREET_GANG_2_LOST_1,
- SFX_STREET_GANG_2_LOST_2,
- SFX_STREET_GANG_2_MUGGED_1,
- SFX_STREET_GANG_2_MUGGED_2,
- SFX_STREET_GANG_2_MUGGED_3,
- SFX_STREET_GANG_2_MUGGING_1,
- SFX_STREET_GANG_2_MUGGING_2,
- SFX_STREET_GANG_2_MUGGING_3,
- SFX_STREET_GANG_2_MUGGING_4,
- SFX_STREET_GANG_2_MUGGING_5,
- SFX_STREET_GANG_2_SAVED_1,
- SFX_STREET_GANG_2_SHOCKED_1,
- SFX_STREET_GANG_2_SHOCKED_2,
- SFX_STREET_GANG_2_TAXI_1,
-
- SFX_CUBAN_LORD_GANG_1_BLOCKED_1,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_2,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_3,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_4,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_5,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_6,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_7,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_8,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_9,
- SFX_CUBAN_LORD_GANG_1_BLOCKED_10,
- SFX_CUBAN_LORD_GANG_1_BUMP_1,
- SFX_CUBAN_LORD_GANG_1_BUMP_2,
- SFX_CUBAN_LORD_GANG_1_BUMP_3,
- SFX_CUBAN_LORD_GANG_1_BUMP_4,
- SFX_CUBAN_LORD_GANG_1_BUMP_5,
- SFX_CUBAN_LORD_GANG_1_BUMP_6,
- SFX_CUBAN_LORD_GANG_1_BUMP_7,
- SFX_CUBAN_LORD_GANG_1_BUMP_8,
- SFX_CUBAN_LORD_GANG_1_BUMP_9,
- SFX_CUBAN_LORD_GANG_1_BUMP_10,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_1,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_2,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_3,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_4,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_5,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_6,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_7,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_8,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_9,
- SFX_CUBAN_LORD_GANG_1_CAR_CRASH_10,
- SFX_CUBAN_LORD_GANG_1_CHAT_1,
- SFX_CUBAN_LORD_GANG_1_CHAT_2,
- SFX_CUBAN_LORD_GANG_1_CHAT_3,
- SFX_CUBAN_LORD_GANG_1_CHAT_4,
- SFX_CUBAN_LORD_GANG_1_CHAT_5,
- SFX_CUBAN_LORD_GANG_1_CHAT_6,
- SFX_CUBAN_LORD_GANG_1_CHAT_7,
- SFX_CUBAN_LORD_GANG_1_CHAT_8,
- SFX_CUBAN_LORD_GANG_1_CHAT_9,
- SFX_CUBAN_LORD_GANG_1_CHAT_10,
- SFX_CUBAN_LORD_GANG_1_DODGE_1,
- SFX_CUBAN_LORD_GANG_1_DODGE_2,
- SFX_CUBAN_LORD_GANG_1_DODGE_3,
- SFX_CUBAN_LORD_GANG_1_DODGE_4,
- SFX_CUBAN_LORD_GANG_1_DODGE_5,
- SFX_CUBAN_LORD_GANG_1_DODGE_6,
- SFX_CUBAN_LORD_GANG_1_DODGE_7,
- SFX_CUBAN_LORD_GANG_1_DODGE_8,
- SFX_CUBAN_LORD_GANG_1_DODGE_9,
- SFX_CUBAN_LORD_GANG_1_DODGE_10,
- SFX_CUBAN_LORD_GANG_1_DODGE_11,
- SFX_CUBAN_LORD_GANG_1_DODGE_12,
- SFX_CUBAN_LORD_GANG_1_DODGE_13,
- SFX_CUBAN_LORD_GANG_1_EYEING_1,
- SFX_CUBAN_LORD_GANG_1_EYEING_2,
- SFX_CUBAN_LORD_GANG_1_FIGHT_1,
- SFX_CUBAN_LORD_GANG_1_FIGHT_2,
- SFX_CUBAN_LORD_GANG_1_FIGHT_3,
- SFX_CUBAN_LORD_GANG_1_FIGHT_4,
- SFX_CUBAN_LORD_GANG_1_FIGHT_5,
- SFX_CUBAN_LORD_GANG_1_FIGHT_6,
- SFX_CUBAN_LORD_GANG_1_FIGHT_7,
- SFX_CUBAN_LORD_GANG_1_FIGHT_8,
- SFX_CUBAN_LORD_GANG_1_FIGHT_9,
- SFX_CUBAN_LORD_GANG_1_FIGHT_10,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_1,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_2,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_3,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_4,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_5,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_6,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_7,
- SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_8,
- SFX_CUBAN_LORD_GANG_1_GUN_COOL_1,
- SFX_CUBAN_LORD_GANG_1_GUN_COOL_2,
- SFX_CUBAN_LORD_GANG_1_GUN_COOL_3,
- SFX_CUBAN_LORD_GANG_1_GUN_COOL_4,
- SFX_CUBAN_LORD_GANG_1_GUN_COOL_5,
- SFX_CUBAN_LORD_GANG_1_JACKED_1,
- SFX_CUBAN_LORD_GANG_1_JACKED_2,
- SFX_CUBAN_LORD_GANG_1_JACKED_3,
- SFX_CUBAN_LORD_GANG_1_JACKED_4,
- SFX_CUBAN_LORD_GANG_1_JACKED_5,
- SFX_CUBAN_LORD_GANG_1_JACKED_6,
- SFX_CUBAN_LORD_GANG_1_JACKING_1,
- SFX_CUBAN_LORD_GANG_1_JACKING_2,
- SFX_CUBAN_LORD_GANG_1_JACKING_3,
- SFX_CUBAN_LORD_GANG_1_JACKING_4,
- SFX_CUBAN_LORD_GANG_1_JACKING_5,
- SFX_CUBAN_LORD_GANG_1_LOST_1,
- SFX_CUBAN_LORD_GANG_1_LOST_2,
- SFX_CUBAN_LORD_GANG_1_MUGGED_1,
- SFX_CUBAN_LORD_GANG_1_MUGGED_2,
- SFX_CUBAN_LORD_GANG_1_SAVED_1,
- SFX_CUBAN_LORD_GANG_1_TAXI_1,
- SFX_CUBAN_LORD_GANG_1_TAXI_2,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_1,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_2,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_3,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_4,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_5,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_6,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_7,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_8,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_9,
- SFX_CUBAN_LORD_GANG_2_BLOCKED_10,
- SFX_CUBAN_LORD_GANG_2_BUMP_1,
- SFX_CUBAN_LORD_GANG_2_BUMP_2,
- SFX_CUBAN_LORD_GANG_2_BUMP_3,
- SFX_CUBAN_LORD_GANG_2_BUMP_4,
- SFX_CUBAN_LORD_GANG_2_BUMP_5,
- SFX_CUBAN_LORD_GANG_2_BUMP_6,
- SFX_CUBAN_LORD_GANG_2_BUMP_7,
- SFX_CUBAN_LORD_GANG_2_BUMP_8,
- SFX_CUBAN_LORD_GANG_2_BUMP_9,
- SFX_CUBAN_LORD_GANG_2_BUMP_10,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_1,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_2,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_3,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_4,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_5,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_6,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_7,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_8,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_9,
- SFX_CUBAN_LORD_GANG_2_CAR_CRASH_10,
- SFX_CUBAN_LORD_GANG_2_CHAT_1,
- SFX_CUBAN_LORD_GANG_2_CHAT_2,
- SFX_CUBAN_LORD_GANG_2_CHAT_3,
- SFX_CUBAN_LORD_GANG_2_CHAT_4,
- SFX_CUBAN_LORD_GANG_2_CHAT_5,
- SFX_CUBAN_LORD_GANG_2_CHAT_6,
- SFX_CUBAN_LORD_GANG_2_CHAT_7,
- SFX_CUBAN_LORD_GANG_2_CHAT_8,
- SFX_CUBAN_LORD_GANG_2_CHAT_9,
- SFX_CUBAN_LORD_GANG_2_CHAT_10,
- SFX_CUBAN_LORD_GANG_2_DODGE_1,
- SFX_CUBAN_LORD_GANG_2_DODGE_2,
- SFX_CUBAN_LORD_GANG_2_DODGE_3,
- SFX_CUBAN_LORD_GANG_2_DODGE_4,
- SFX_CUBAN_LORD_GANG_2_DODGE_5,
- SFX_CUBAN_LORD_GANG_2_DODGE_6,
- SFX_CUBAN_LORD_GANG_2_DODGE_7,
- SFX_CUBAN_LORD_GANG_2_DODGE_8,
- SFX_CUBAN_LORD_GANG_2_DODGE_9,
- SFX_CUBAN_LORD_GANG_2_DODGE_10,
- SFX_CUBAN_LORD_GANG_2_DODGE_11,
- SFX_CUBAN_LORD_GANG_2_DODGE_12,
- SFX_CUBAN_LORD_GANG_2_DODGE_13,
- SFX_CUBAN_LORD_GANG_2_EYEING_1,
- SFX_CUBAN_LORD_GANG_2_EYEING_2,
- SFX_CUBAN_LORD_GANG_2_FIGHT_1,
- SFX_CUBAN_LORD_GANG_2_FIGHT_2,
- SFX_CUBAN_LORD_GANG_2_FIGHT_3,
- SFX_CUBAN_LORD_GANG_2_FIGHT_4,
- SFX_CUBAN_LORD_GANG_2_FIGHT_5,
- SFX_CUBAN_LORD_GANG_2_FIGHT_6,
- SFX_CUBAN_LORD_GANG_2_FIGHT_7,
- SFX_CUBAN_LORD_GANG_2_FIGHT_8,
- SFX_CUBAN_LORD_GANG_2_FIGHT_9,
- SFX_CUBAN_LORD_GANG_2_FIGHT_10,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_1,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_2,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_3,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_4,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_5,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_6,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_7,
- SFX_CUBAN_LORD_GANG_2_GENERIC_CRASH_8,
- SFX_CUBAN_LORD_GANG_2_GUN_COOL_1,
- SFX_CUBAN_LORD_GANG_2_GUN_COOL_2,
- SFX_CUBAN_LORD_GANG_2_GUN_COOL_3,
- SFX_CUBAN_LORD_GANG_2_GUN_COOL_4,
- SFX_CUBAN_LORD_GANG_2_GUN_COOL_5,
- SFX_CUBAN_LORD_GANG_2_JACKED_1,
- SFX_CUBAN_LORD_GANG_2_JACKED_2,
- SFX_CUBAN_LORD_GANG_2_JACKED_3,
- SFX_CUBAN_LORD_GANG_2_JACKED_4,
- SFX_CUBAN_LORD_GANG_2_JACKED_5,
- SFX_CUBAN_LORD_GANG_2_JACKED_6,
- SFX_CUBAN_LORD_GANG_2_JACKING_1,
- SFX_CUBAN_LORD_GANG_2_JACKING_2,
- SFX_CUBAN_LORD_GANG_2_JACKING_3,
- SFX_CUBAN_LORD_GANG_2_JACKING_4,
- SFX_CUBAN_LORD_GANG_2_JACKING_5,
- SFX_CUBAN_LORD_GANG_2_LOST_1,
- SFX_CUBAN_LORD_GANG_2_LOST_2,
- SFX_CUBAN_LORD_GANG_2_MUGGED_1,
- SFX_CUBAN_LORD_GANG_2_MUGGED_2,
- SFX_CUBAN_LORD_GANG_2_SAVED_1,
- SFX_CUBAN_LORD_GANG_2_TAXI_1,
- SFX_CUBAN_LORD_GANG_2_TAXI_2,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_1,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_2,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_3,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_4,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_5,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_6,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_7,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_8,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_9,
- SFX_CUBAN_LORD_GANG_3_BLOCKED_10,
- SFX_CUBAN_LORD_GANG_3_BUMP_1,
- SFX_CUBAN_LORD_GANG_3_BUMP_2,
- SFX_CUBAN_LORD_GANG_3_BUMP_3,
- SFX_CUBAN_LORD_GANG_3_BUMP_4,
- SFX_CUBAN_LORD_GANG_3_BUMP_5,
- SFX_CUBAN_LORD_GANG_3_BUMP_6,
- SFX_CUBAN_LORD_GANG_3_BUMP_7,
- SFX_CUBAN_LORD_GANG_3_BUMP_8,
- SFX_CUBAN_LORD_GANG_3_BUMP_9,
- SFX_CUBAN_LORD_GANG_3_BUMP_10,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_1,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_2,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_3,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_4,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_5,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_6,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_7,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_8,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_9,
- SFX_CUBAN_LORD_GANG_3_CAR_CRASH_10,
- SFX_CUBAN_LORD_GANG_3_CHAT_1,
- SFX_CUBAN_LORD_GANG_3_CHAT_2,
- SFX_CUBAN_LORD_GANG_3_CHAT_3,
- SFX_CUBAN_LORD_GANG_3_CHAT_4,
- SFX_CUBAN_LORD_GANG_3_CHAT_5,
- SFX_CUBAN_LORD_GANG_3_CHAT_6,
- SFX_CUBAN_LORD_GANG_3_CHAT_7,
- SFX_CUBAN_LORD_GANG_3_CHAT_8,
- SFX_CUBAN_LORD_GANG_3_CHAT_9,
- SFX_CUBAN_LORD_GANG_3_CHAT_10,
- SFX_CUBAN_LORD_GANG_3_DODGE_1,
- SFX_CUBAN_LORD_GANG_3_DODGE_2,
- SFX_CUBAN_LORD_GANG_3_DODGE_3,
- SFX_CUBAN_LORD_GANG_3_DODGE_4,
- SFX_CUBAN_LORD_GANG_3_DODGE_5,
- SFX_CUBAN_LORD_GANG_3_DODGE_6,
- SFX_CUBAN_LORD_GANG_3_DODGE_7,
- SFX_CUBAN_LORD_GANG_3_DODGE_8,
- SFX_CUBAN_LORD_GANG_3_DODGE_9,
- SFX_CUBAN_LORD_GANG_3_DODGE_10,
- SFX_CUBAN_LORD_GANG_3_DODGE_11,
- SFX_CUBAN_LORD_GANG_3_DODGE_12,
- SFX_CUBAN_LORD_GANG_3_DODGE_13,
- SFX_CUBAN_LORD_GANG_3_EYEING_1,
- SFX_CUBAN_LORD_GANG_3_EYEING_2,
- SFX_CUBAN_LORD_GANG_3_FIGHT_1,
- SFX_CUBAN_LORD_GANG_3_FIGHT_2,
- SFX_CUBAN_LORD_GANG_3_FIGHT_3,
- SFX_CUBAN_LORD_GANG_3_FIGHT_4,
- SFX_CUBAN_LORD_GANG_3_FIGHT_5,
- SFX_CUBAN_LORD_GANG_3_FIGHT_6,
- SFX_CUBAN_LORD_GANG_3_FIGHT_7,
- SFX_CUBAN_LORD_GANG_3_FIGHT_8,
- SFX_CUBAN_LORD_GANG_3_FIGHT_9,
- SFX_CUBAN_LORD_GANG_3_FIGHT_10,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_1,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_2,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_3,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_4,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_5,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_6,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_7,
- SFX_CUBAN_LORD_GANG_3_GENERIC_CRASH_8,
- SFX_CUBAN_LORD_GANG_3_GUN_COOL_1,
- SFX_CUBAN_LORD_GANG_3_GUN_COOL_2,
- SFX_CUBAN_LORD_GANG_3_GUN_COOL_3,
- SFX_CUBAN_LORD_GANG_3_GUN_COOL_4,
- SFX_CUBAN_LORD_GANG_3_GUN_COOL_5,
- SFX_CUBAN_LORD_GANG_3_JACKED_1,
- SFX_CUBAN_LORD_GANG_3_JACKED_2,
- SFX_CUBAN_LORD_GANG_3_JACKED_3,
- SFX_CUBAN_LORD_GANG_3_JACKED_4,
- SFX_CUBAN_LORD_GANG_3_JACKED_5,
- SFX_CUBAN_LORD_GANG_3_JACKED_6,
- SFX_CUBAN_LORD_GANG_3_JACKING_1,
- SFX_CUBAN_LORD_GANG_3_JACKING_2,
- SFX_CUBAN_LORD_GANG_3_JACKING_3,
- SFX_CUBAN_LORD_GANG_3_JACKING_4,
- SFX_CUBAN_LORD_GANG_3_JACKING_5,
- SFX_CUBAN_LORD_GANG_3_LOST_1,
- SFX_CUBAN_LORD_GANG_3_LOST_2,
- SFX_CUBAN_LORD_GANG_3_MUGGED_1,
- SFX_CUBAN_LORD_GANG_3_MUGGED_2,
- SFX_CUBAN_LORD_GANG_3_SAVED_1,
- SFX_CUBAN_LORD_GANG_3_TAXI_1,
- SFX_CUBAN_LORD_GANG_3_TAXI_2,
-
- SFX_PLAYER_GANG_1_BLOCKED_1,
- SFX_PLAYER_GANG_1_BLOCKED_2,
- SFX_PLAYER_GANG_1_BLOCKED_3,
- SFX_PLAYER_GANG_1_BLOCKED_4,
- SFX_PLAYER_GANG_1_BLOCKED_5,
- SFX_PLAYER_GANG_1_BLOCKED_6,
- SFX_PLAYER_GANG_1_BLOCKED_7,
- SFX_PLAYER_GANG_1_BLOCKED_8,
- SFX_PLAYER_GANG_1_BLOCKED_9,
- SFX_PLAYER_GANG_1_BLOCKED_10,
- SFX_PLAYER_GANG_1_BUMP_1,
- SFX_PLAYER_GANG_1_BUMP_2,
- SFX_PLAYER_GANG_1_BUMP_3,
- SFX_PLAYER_GANG_1_BUMP_4,
- SFX_PLAYER_GANG_1_BUMP_5,
- SFX_PLAYER_GANG_1_CAR_CRASH_1,
- SFX_PLAYER_GANG_1_CAR_CRASH_2,
- SFX_PLAYER_GANG_1_CAR_CRASH_3,
- SFX_PLAYER_GANG_1_CAR_CRASH_4,
- SFX_PLAYER_GANG_1_CAR_CRASH_5,
- SFX_PLAYER_GANG_1_CHAT_1,
- SFX_PLAYER_GANG_1_CHAT_2,
- SFX_PLAYER_GANG_1_CHAT_3,
- SFX_PLAYER_GANG_1_CHAT_4,
- SFX_PLAYER_GANG_1_CHAT_5,
- SFX_PLAYER_GANG_1_CHAT_6,
- SFX_PLAYER_GANG_1_CHAT_7,
- SFX_PLAYER_GANG_1_CHAT_8,
- SFX_PLAYER_GANG_1_DODGE_1,
- SFX_PLAYER_GANG_1_DODGE_2,
- SFX_PLAYER_GANG_1_DODGE_3,
- SFX_PLAYER_GANG_1_DODGE_4,
- SFX_PLAYER_GANG_1_DODGE_5,
- SFX_PLAYER_GANG_1_DODGE_6,
- SFX_PLAYER_GANG_1_DODGE_7,
- SFX_PLAYER_GANG_1_EYEING_1,
- SFX_PLAYER_GANG_1_EYEING_2,
- SFX_PLAYER_GANG_1_FIGHT_1,
- SFX_PLAYER_GANG_1_FIGHT_2,
- SFX_PLAYER_GANG_1_FIGHT_3,
- SFX_PLAYER_GANG_1_FIGHT_4,
- SFX_PLAYER_GANG_1_FIGHT_5,
- SFX_PLAYER_GANG_1_GENERIC_CRASH_1,
- SFX_PLAYER_GANG_1_GENERIC_CRASH_2,
- SFX_PLAYER_GANG_1_GENERIC_CRASH_3,
- SFX_PLAYER_GANG_1_GENERIC_CRASH_4,
- SFX_PLAYER_GANG_1_GENERIC_CRASH_5,
- SFX_PLAYER_GANG_1_GUN_COOL_1,
- SFX_PLAYER_GANG_1_GUN_COOL_2,
- SFX_PLAYER_GANG_1_GUN_COOL_3,
- SFX_PLAYER_GANG_1_GUN_COOL_4,
- SFX_PLAYER_GANG_1_JACKED_1,
- SFX_PLAYER_GANG_1_JACKED_2,
- SFX_PLAYER_GANG_1_JACKED_3,
- SFX_PLAYER_GANG_1_JACKED_4,
- SFX_PLAYER_GANG_1_JACKED_5,
- SFX_PLAYER_GANG_1_JACKING_1,
- SFX_PLAYER_GANG_1_JACKING_2,
- SFX_PLAYER_GANG_1_JACKING_3,
- SFX_PLAYER_GANG_1_JACKING_4,
- SFX_PLAYER_GANG_1_JACKING_5,
- SFX_PLAYER_GANG_1_LOST_1,
- SFX_PLAYER_GANG_1_LOST_2,
- SFX_PLAYER_GANG_1_MUGGED_1,
- SFX_PLAYER_GANG_1_MUGGED_2,
- SFX_PLAYER_GANG_1_SAVED_1,
- SFX_PLAYER_GANG_1_SHOCKED_1,
- SFX_PLAYER_GANG_1_SHOCKED_2,
- SFX_PLAYER_GANG_1_TAXI_1,
- SFX_PLAYER_GANG_1_TAXI_2,
- SFX_PLAYER_GANG_2_BLOCKED_1,
- SFX_PLAYER_GANG_2_BLOCKED_2,
- SFX_PLAYER_GANG_2_BLOCKED_3,
- SFX_PLAYER_GANG_2_BLOCKED_4,
- SFX_PLAYER_GANG_2_BLOCKED_5,
- SFX_PLAYER_GANG_2_BLOCKED_6,
- SFX_PLAYER_GANG_2_BLOCKED_7,
- SFX_PLAYER_GANG_2_BLOCKED_8,
- SFX_PLAYER_GANG_2_BLOCKED_9,
- SFX_PLAYER_GANG_2_BLOCKED_10,
- SFX_PLAYER_GANG_2_BUMP_1,
- SFX_PLAYER_GANG_2_BUMP_2,
- SFX_PLAYER_GANG_2_BUMP_3,
- SFX_PLAYER_GANG_2_BUMP_4,
- SFX_PLAYER_GANG_2_BUMP_5,
- SFX_PLAYER_GANG_2_CAR_CRASH_1,
- SFX_PLAYER_GANG_2_CAR_CRASH_2,
- SFX_PLAYER_GANG_2_CAR_CRASH_3,
- SFX_PLAYER_GANG_2_CAR_CRASH_4,
- SFX_PLAYER_GANG_2_CAR_CRASH_5,
- SFX_PLAYER_GANG_2_CHAT_1,
- SFX_PLAYER_GANG_2_CHAT_2,
- SFX_PLAYER_GANG_2_CHAT_3,
- SFX_PLAYER_GANG_2_CHAT_4,
- SFX_PLAYER_GANG_2_CHAT_5,
- SFX_PLAYER_GANG_2_CHAT_6,
- SFX_PLAYER_GANG_2_CHAT_7,
- SFX_PLAYER_GANG_2_CHAT_8,
- SFX_PLAYER_GANG_2_DODGE_1,
- SFX_PLAYER_GANG_2_DODGE_2,
- SFX_PLAYER_GANG_2_DODGE_3,
- SFX_PLAYER_GANG_2_DODGE_4,
- SFX_PLAYER_GANG_2_DODGE_5,
- SFX_PLAYER_GANG_2_DODGE_6,
- SFX_PLAYER_GANG_2_DODGE_7,
- SFX_PLAYER_GANG_2_EYEING_1,
- SFX_PLAYER_GANG_2_EYEING_2,
- SFX_PLAYER_GANG_2_FIGHT_1,
- SFX_PLAYER_GANG_2_FIGHT_2,
- SFX_PLAYER_GANG_2_FIGHT_3,
- SFX_PLAYER_GANG_2_FIGHT_4,
- SFX_PLAYER_GANG_2_FIGHT_5,
- SFX_PLAYER_GANG_2_GENERIC_CRASH_1,
- SFX_PLAYER_GANG_2_GENERIC_CRASH_2,
- SFX_PLAYER_GANG_2_GENERIC_CRASH_3,
- SFX_PLAYER_GANG_2_GENERIC_CRASH_4,
- SFX_PLAYER_GANG_2_GENERIC_CRASH_5,
- SFX_PLAYER_GANG_2_GUN_COOL_1,
- SFX_PLAYER_GANG_2_GUN_COOL_2,
- SFX_PLAYER_GANG_2_GUN_COOL_3,
- SFX_PLAYER_GANG_2_GUN_COOL_4,
- SFX_PLAYER_GANG_2_JACKED_1,
- SFX_PLAYER_GANG_2_JACKED_2,
- SFX_PLAYER_GANG_2_JACKED_3,
- SFX_PLAYER_GANG_2_JACKED_4,
- SFX_PLAYER_GANG_2_JACKED_5,
- SFX_PLAYER_GANG_2_JACKING_1,
- SFX_PLAYER_GANG_2_JACKING_2,
- SFX_PLAYER_GANG_2_JACKING_3,
- SFX_PLAYER_GANG_2_JACKING_4,
- SFX_PLAYER_GANG_2_JACKING_5,
- SFX_PLAYER_GANG_2_LOST_1,
- SFX_PLAYER_GANG_2_LOST_2,
- SFX_PLAYER_GANG_2_MUGGED_1,
- SFX_PLAYER_GANG_2_MUGGED_2,
- SFX_PLAYER_GANG_2_SAVED_1,
- SFX_PLAYER_GANG_2_SHOCKED_1,
- SFX_PLAYER_GANG_2_SHOCKED_2,
- SFX_PLAYER_GANG_2_TAXI_1,
- SFX_PLAYER_GANG_2_TAXI_2,
- SFX_PLAYER_GANG_3_BLOCKED_1,
- SFX_PLAYER_GANG_3_BLOCKED_2,
- SFX_PLAYER_GANG_3_BLOCKED_3,
- SFX_PLAYER_GANG_3_BLOCKED_4,
- SFX_PLAYER_GANG_3_BLOCKED_5,
- SFX_PLAYER_GANG_3_BLOCKED_6,
- SFX_PLAYER_GANG_3_BLOCKED_7,
- SFX_PLAYER_GANG_3_BLOCKED_8,
- SFX_PLAYER_GANG_3_BLOCKED_9,
- SFX_PLAYER_GANG_3_BLOCKED_10,
- SFX_PLAYER_GANG_3_BUMP_1,
- SFX_PLAYER_GANG_3_BUMP_2,
- SFX_PLAYER_GANG_3_BUMP_3,
- SFX_PLAYER_GANG_3_BUMP_4,
- SFX_PLAYER_GANG_3_BUMP_5,
- SFX_PLAYER_GANG_3_CAR_CRASH_1,
- SFX_PLAYER_GANG_3_CAR_CRASH_2,
- SFX_PLAYER_GANG_3_CAR_CRASH_3,
- SFX_PLAYER_GANG_3_CAR_CRASH_4,
- SFX_PLAYER_GANG_3_CAR_CRASH_5,
- SFX_PLAYER_GANG_3_CHAT_1,
- SFX_PLAYER_GANG_3_CHAT_2,
- SFX_PLAYER_GANG_3_CHAT_3,
- SFX_PLAYER_GANG_3_CHAT_4,
- SFX_PLAYER_GANG_3_CHAT_5,
- SFX_PLAYER_GANG_3_CHAT_6,
- SFX_PLAYER_GANG_3_CHAT_7,
- SFX_PLAYER_GANG_3_CHAT_8,
- SFX_PLAYER_GANG_3_DODGE_1,
- SFX_PLAYER_GANG_3_DODGE_2,
- SFX_PLAYER_GANG_3_DODGE_3,
- SFX_PLAYER_GANG_3_DODGE_4,
- SFX_PLAYER_GANG_3_DODGE_5,
- SFX_PLAYER_GANG_3_DODGE_6,
- SFX_PLAYER_GANG_3_DODGE_7,
- SFX_PLAYER_GANG_3_EYEING_1,
- SFX_PLAYER_GANG_3_EYEING_2,
- SFX_PLAYER_GANG_3_FIGHT_1,
- SFX_PLAYER_GANG_3_FIGHT_2,
- SFX_PLAYER_GANG_3_FIGHT_3,
- SFX_PLAYER_GANG_3_FIGHT_4,
- SFX_PLAYER_GANG_3_FIGHT_5,
- SFX_PLAYER_GANG_3_GENERIC_CRASH_1,
- SFX_PLAYER_GANG_3_GENERIC_CRASH_2,
- SFX_PLAYER_GANG_3_GENERIC_CRASH_3,
- SFX_PLAYER_GANG_3_GENERIC_CRASH_4,
- SFX_PLAYER_GANG_3_GENERIC_CRASH_5,
- SFX_PLAYER_GANG_3_GUN_COOL_1,
- SFX_PLAYER_GANG_3_GUN_COOL_2,
- SFX_PLAYER_GANG_3_GUN_COOL_3,
- SFX_PLAYER_GANG_3_GUN_COOL_4,
- SFX_PLAYER_GANG_3_JACKED_1,
- SFX_PLAYER_GANG_3_JACKED_2,
- SFX_PLAYER_GANG_3_JACKED_3,
- SFX_PLAYER_GANG_3_JACKED_4,
- SFX_PLAYER_GANG_3_JACKED_5,
- SFX_PLAYER_GANG_3_JACKING_1,
- SFX_PLAYER_GANG_3_JACKING_2,
- SFX_PLAYER_GANG_3_JACKING_3,
- SFX_PLAYER_GANG_3_JACKING_4,
- SFX_PLAYER_GANG_3_JACKING_5,
- SFX_PLAYER_GANG_3_LOST_1,
- SFX_PLAYER_GANG_3_LOST_2,
- SFX_PLAYER_GANG_3_MUGGED_1,
- SFX_PLAYER_GANG_3_MUGGED_2,
- SFX_PLAYER_GANG_3_SAVED_1,
- SFX_PLAYER_GANG_3_SHOCKED_1,
- SFX_PLAYER_GANG_3_SHOCKED_2,
- SFX_PLAYER_GANG_3_TAXI_1,
- SFX_PLAYER_GANG_3_TAXI_2,
-
- SFX_GUARD_DUTY_1_BUMP_1,
- SFX_GUARD_DUTY_1_BUMP_2,
- SFX_GUARD_DUTY_1_BUMP_3,
- SFX_GUARD_DUTY_1_BUMP_4,
- SFX_GUARD_DUTY_1_BUMP_5,
- SFX_GUARD_DUTY_1_BUMP_6,
- SFX_GUARD_DUTY_1_BUMP_7,
- SFX_GUARD_DUTY_1_BUMP_8,
- SFX_GUARD_DUTY_1_BUMP_9,
- SFX_GUARD_DUTY_1_BUMP_10,
- SFX_GUARD_DUTY_1_CHAT_1,
- SFX_GUARD_DUTY_1_CHAT_2,
- SFX_GUARD_DUTY_1_CHAT_3,
- SFX_GUARD_DUTY_1_CHAT_4,
- SFX_GUARD_DUTY_1_CHAT_5,
- SFX_GUARD_DUTY_1_CHAT_6,
- SFX_GUARD_DUTY_1_CHAT_7,
- SFX_GUARD_DUTY_1_CHAT_8,
- SFX_GUARD_DUTY_1_CHAT_9,
- SFX_GUARD_DUTY_1_CHAT_10,
- SFX_GUARD_DUTY_1_DODGE_1,
- SFX_GUARD_DUTY_1_DODGE_2,
- SFX_GUARD_DUTY_1_DODGE_3,
- SFX_GUARD_DUTY_1_DODGE_4,
- SFX_GUARD_DUTY_1_DODGE_5,
- SFX_GUARD_DUTY_1_DODGE_6,
- SFX_GUARD_DUTY_1_DODGE_7,
- SFX_GUARD_DUTY_1_DODGE_8,
- SFX_GUARD_DUTY_1_DODGE_9,
- SFX_GUARD_DUTY_1_EYEING_1,
- SFX_GUARD_DUTY_1_EYEING_2,
- SFX_GUARD_DUTY_1_FIGHT_1,
- SFX_GUARD_DUTY_1_FIGHT_2,
- SFX_GUARD_DUTY_1_FIGHT_3,
- SFX_GUARD_DUTY_1_FIGHT_4,
- SFX_GUARD_DUTY_1_FIGHT_5,
- SFX_GUARD_DUTY_1_FIGHT_6,
- SFX_GUARD_DUTY_1_FIGHT_7,
- SFX_GUARD_DUTY_1_GUN_COOL_1,
- SFX_GUARD_DUTY_1_GUN_COOL_2,
- SFX_GUARD_DUTY_1_GUN_COOL_3,
- SFX_GUARD_DUTY_1_GUN_COOL_4,
- SFX_GUARD_DUTY_1_GUN_COOL_5,
- SFX_GUARD_DUTY_1_GUN_COOL_6,
- SFX_GUARD_DUTY_1_LOST_1,
- SFX_GUARD_DUTY_1_LOST_2,
- SFX_GUARD_DUTY_1_SAVED_1,
- SFX_GUARD_DUTY_1_SAVED_2,
- SFX_GUARD_DUTY_1_SHOCKED_1,
- SFX_GUARD_DUTY_1_SHOCKED_2,
-
- SFX_GUARD_DUTY_2_BUMP_1,
- SFX_GUARD_DUTY_2_BUMP_2,
- SFX_GUARD_DUTY_2_BUMP_3,
- SFX_GUARD_DUTY_2_BUMP_4,
- SFX_GUARD_DUTY_2_BUMP_5,
- SFX_GUARD_DUTY_2_BUMP_6,
- SFX_GUARD_DUTY_2_BUMP_7,
- SFX_GUARD_DUTY_2_BUMP_8,
- SFX_GUARD_DUTY_2_BUMP_9,
- SFX_GUARD_DUTY_2_BUMP_10,
- SFX_GUARD_DUTY_2_CHAT_1,
- SFX_GUARD_DUTY_2_CHAT_2,
- SFX_GUARD_DUTY_2_CHAT_3,
- SFX_GUARD_DUTY_2_CHAT_4,
- SFX_GUARD_DUTY_2_CHAT_5,
- SFX_GUARD_DUTY_2_CHAT_6,
- SFX_GUARD_DUTY_2_CHAT_7,
- SFX_GUARD_DUTY_2_CHAT_8,
- SFX_GUARD_DUTY_2_CHAT_9,
- SFX_GUARD_DUTY_2_CHAT_10,
- SFX_GUARD_DUTY_2_DODGE_1,
- SFX_GUARD_DUTY_2_DODGE_2,
- SFX_GUARD_DUTY_2_DODGE_3,
- SFX_GUARD_DUTY_2_DODGE_4,
- SFX_GUARD_DUTY_2_DODGE_5,
- SFX_GUARD_DUTY_2_DODGE_6,
- SFX_GUARD_DUTY_2_DODGE_7,
- SFX_GUARD_DUTY_2_DODGE_8,
- SFX_GUARD_DUTY_2_DODGE_9,
- SFX_GUARD_DUTY_2_EYEING_1,
- SFX_GUARD_DUTY_2_EYEING_2,
- SFX_GUARD_DUTY_2_FIGHT_1,
- SFX_GUARD_DUTY_2_FIGHT_2,
- SFX_GUARD_DUTY_2_FIGHT_3,
- SFX_GUARD_DUTY_2_FIGHT_4,
- SFX_GUARD_DUTY_2_FIGHT_5,
- SFX_GUARD_DUTY_2_FIGHT_6,
- SFX_GUARD_DUTY_2_FIGHT_7,
- SFX_GUARD_DUTY_2_GUN_COOL_1,
- SFX_GUARD_DUTY_2_GUN_COOL_2,
- SFX_GUARD_DUTY_2_GUN_COOL_3,
- SFX_GUARD_DUTY_2_GUN_COOL_4,
- SFX_GUARD_DUTY_2_GUN_COOL_5,
- SFX_GUARD_DUTY_2_GUN_COOL_6,
- SFX_GUARD_DUTY_2_LOST_1,
- SFX_GUARD_DUTY_2_LOST_2,
- SFX_GUARD_DUTY_2_SAVED_1,
- SFX_GUARD_DUTY_2_SAVED_2,
- SFX_GUARD_DUTY_2_SHOCKED_1,
- SFX_GUARD_DUTY_2_SHOCKED_2,
-
- SFX_GUARD_DUTY_3_BUMP_1,
- SFX_GUARD_DUTY_3_BUMP_2,
- SFX_GUARD_DUTY_3_BUMP_3,
- SFX_GUARD_DUTY_3_BUMP_4,
- SFX_GUARD_DUTY_3_BUMP_5,
- SFX_GUARD_DUTY_3_BUMP_6,
- SFX_GUARD_DUTY_3_BUMP_7,
- SFX_GUARD_DUTY_3_BUMP_8,
- SFX_GUARD_DUTY_3_BUMP_9,
- SFX_GUARD_DUTY_3_BUMP_10,
- SFX_GUARD_DUTY_3_CHAT_1,
- SFX_GUARD_DUTY_3_CHAT_2,
- SFX_GUARD_DUTY_3_CHAT_3,
- SFX_GUARD_DUTY_3_CHAT_4,
- SFX_GUARD_DUTY_3_CHAT_5,
- SFX_GUARD_DUTY_3_CHAT_6,
- SFX_GUARD_DUTY_3_CHAT_7,
- SFX_GUARD_DUTY_3_CHAT_8,
- SFX_GUARD_DUTY_3_CHAT_9,
- SFX_GUARD_DUTY_3_CHAT_10,
- SFX_GUARD_DUTY_3_DODGE_1,
- SFX_GUARD_DUTY_3_DODGE_2,
- SFX_GUARD_DUTY_3_DODGE_3,
- SFX_GUARD_DUTY_3_DODGE_4,
- SFX_GUARD_DUTY_3_DODGE_5,
- SFX_GUARD_DUTY_3_DODGE_6,
- SFX_GUARD_DUTY_3_DODGE_7,
- SFX_GUARD_DUTY_3_DODGE_8,
- SFX_GUARD_DUTY_3_DODGE_9,
- SFX_GUARD_DUTY_3_EYEING_1,
- SFX_GUARD_DUTY_3_EYEING_2,
- SFX_GUARD_DUTY_3_FIGHT_1,
- SFX_GUARD_DUTY_3_FIGHT_2,
- SFX_GUARD_DUTY_3_FIGHT_3,
- SFX_GUARD_DUTY_3_FIGHT_4,
- SFX_GUARD_DUTY_3_FIGHT_5,
- SFX_GUARD_DUTY_3_FIGHT_6,
- SFX_GUARD_DUTY_3_FIGHT_7,
- SFX_GUARD_DUTY_3_GUN_COOL_1,
- SFX_GUARD_DUTY_3_GUN_COOL_2,
- SFX_GUARD_DUTY_3_GUN_COOL_3,
- SFX_GUARD_DUTY_3_GUN_COOL_4,
- SFX_GUARD_DUTY_3_GUN_COOL_5,
- SFX_GUARD_DUTY_3_GUN_COOL_6,
- SFX_GUARD_DUTY_3_LOST_1,
- SFX_GUARD_DUTY_3_LOST_2,
- SFX_GUARD_DUTY_3_SAVED_1,
- SFX_GUARD_DUTY_3_SAVED_2,
- SFX_GUARD_DUTY_3_SHOCKED_1,
- SFX_GUARD_DUTY_3_SHOCKED_2,
-
- SFX_VICE_VOICE_1_ARREST_1,
- SFX_VICE_VOICE_1_ARREST_2,
- SFX_VICE_VOICE_1_ARREST_3,
- SFX_VICE_VOICE_1_MIAMIVICE_EXITING_CAR_1,
-
- SFX_VICE_VOICE_2_ARREST_1,
- SFX_VICE_VOICE_2_ARREST_2,
- SFX_VICE_VOICE_2_ARREST_3,
- SFX_VICE_VOICE_2_MIAMIVICE_EXITING_CAR_1,
-
- SFX_VICE_VOICE_3_ARREST_1,
- SFX_VICE_VOICE_3_ARREST_2,
- SFX_VICE_VOICE_3_ARREST_3,
- SFX_VICE_VOICE_3_MIAMIVICE_EXITING_CAR_1,
-
- SFX_VICE_VOICE_4_ARREST_1,
- SFX_VICE_VOICE_4_ARREST_2,
- SFX_VICE_VOICE_4_ARREST_3,
- SFX_VICE_VOICE_4_MIAMIVICE_EXITING_CAR_1,
-
- SFX_VICE_VOICE_5_ARREST_1,
- SFX_VICE_VOICE_5_ARREST_2,
- SFX_VICE_VOICE_5_ARREST_3,
- SFX_VICE_VOICE_5_MIAMIVICE_EXITING_CAR_1,
-
- SFX_VICE_VOICE_6_ARREST_1,
- SFX_VICE_VOICE_6_ARREST_2,
- SFX_VICE_VOICE_6_ARREST_3,
- SFX_VICE_VOICE_6_MIAMIVICE_EXITING_CAR_1,
-
- SFX_DEFAULT_VOICE_BLOCKED_1,
- SFX_DEFAULT_VOICE_BLOCKED_2,
- SFX_DEFAULT_VOICE_BLOCKED_3,
- SFX_DEFAULT_VOICE_BLOCKED_4,
- SFX_DEFAULT_VOICE_BLOCKED_5,
- SFX_DEFAULT_VOICE_BLOCKED_6,
- SFX_DEFAULT_VOICE_BLOCKED_7,
- SFX_DEFAULT_VOICE_BLOCKED_8,
- SFX_DEFAULT_VOICE_BLOCKED_9,
- SFX_DEFAULT_VOICE_BLOCKED_10,
- SFX_DEFAULT_VOICE_BLOCKED_11,
- SFX_DEFAULT_VOICE_BLOCKED_12,
- SFX_DEFAULT_VOICE_BLOCKED_13,
- SFX_DEFAULT_VOICE_BLOCKED_14,
- SFX_DEFAULT_VOICE_BLOCKED_15,
- SFX_DEFAULT_VOICE_BLOCKED_16,
- SFX_DEFAULT_VOICE_BUMP_1,
- SFX_DEFAULT_VOICE_BUMP_2,
- SFX_DEFAULT_VOICE_BUMP_3,
- SFX_DEFAULT_VOICE_BUMP_4,
- SFX_DEFAULT_VOICE_BUMP_5,
- SFX_DEFAULT_VOICE_BUMP_6,
- SFX_DEFAULT_VOICE_BUMP_7,
- SFX_DEFAULT_VOICE_BUMP_8,
- SFX_DEFAULT_VOICE_BUMP_9,
- SFX_DEFAULT_VOICE_BUMP_10,
- SFX_DEFAULT_VOICE_BUMP_11,
- SFX_DEFAULT_VOICE_BUMP_12,
- SFX_DEFAULT_VOICE_BUMP_13,
- SFX_DEFAULT_VOICE_BUMP_14,
- SFX_DEFAULT_VOICE_BUMP_15,
- SFX_DEFAULT_VOICE_BUMP_16,
- SFX_DEFAULT_VOICE_BUMP_17,
- SFX_DEFAULT_VOICE_BUMP_18,
- SFX_DEFAULT_VOICE_BUMP_19,
- SFX_DEFAULT_VOICE_BUMP_20,
- SFX_DEFAULT_VOICE_BUMP_21,
- SFX_DEFAULT_VOICE_BUMP_22,
- SFX_DEFAULT_VOICE_BUMP_23,
- SFX_DEFAULT_VOICE_BUMP_24,
- SFX_DEFAULT_VOICE_BUMP_25,
- SFX_DEFAULT_VOICE_CAR_CRASH_1,
- SFX_DEFAULT_VOICE_CAR_CRASH_2,
- SFX_DEFAULT_VOICE_CAR_CRASH_3,
- SFX_DEFAULT_VOICE_CAR_CRASH_4,
- SFX_DEFAULT_VOICE_CAR_CRASH_5,
- SFX_DEFAULT_VOICE_CAR_CRASH_6,
- SFX_DEFAULT_VOICE_CAR_CRASH_7,
- SFX_DEFAULT_VOICE_CAR_CRASH_8,
- SFX_DEFAULT_VOICE_CAR_CRASH_9,
- SFX_DEFAULT_VOICE_CAR_CRASH_10,
- SFX_DEFAULT_VOICE_CAR_CRASH_11,
- SFX_DEFAULT_VOICE_CAR_CRASH_12,
- SFX_DEFAULT_VOICE_CAR_CRASH_13,
- SFX_DEFAULT_VOICE_CAR_CRASH_14,
- SFX_DEFAULT_VOICE_CAR_CRASH_15,
- SFX_DEFAULT_VOICE_CHAT_1,
- SFX_DEFAULT_VOICE_CHAT_2,
- SFX_DEFAULT_VOICE_CHAT_3,
- SFX_DEFAULT_VOICE_CHAT_4,
- SFX_DEFAULT_VOICE_CHAT_5,
- SFX_DEFAULT_VOICE_CHAT_6,
- SFX_DEFAULT_VOICE_CHAT_7,
- SFX_DEFAULT_VOICE_CHAT_8,
- SFX_DEFAULT_VOICE_CHAT_9,
- SFX_DEFAULT_VOICE_CHAT_10,
- SFX_DEFAULT_VOICE_CHAT_11,
- SFX_DEFAULT_VOICE_CHAT_12,
- SFX_DEFAULT_VOICE_CHAT_13,
- SFX_DEFAULT_VOICE_CHAT_14,
- SFX_DEFAULT_VOICE_CHAT_15,
- SFX_DEFAULT_VOICE_CHAT_16,
- SFX_DEFAULT_VOICE_CHAT_17,
- SFX_DEFAULT_VOICE_CHAT_18,
- SFX_DEFAULT_VOICE_CHAT_19,
- SFX_DEFAULT_VOICE_CHAT_20,
- SFX_DEFAULT_VOICE_CHAT_21,
- SFX_DEFAULT_VOICE_CHAT_22,
- SFX_DEFAULT_VOICE_CHAT_23,
- SFX_DEFAULT_VOICE_CHAT_24,
- SFX_DEFAULT_VOICE_CHAT_25,
- SFX_DEFAULT_VOICE_DODGE_1,
- SFX_DEFAULT_VOICE_DODGE_2,
- SFX_DEFAULT_VOICE_DODGE_3,
- SFX_DEFAULT_VOICE_DODGE_4,
- SFX_DEFAULT_VOICE_DODGE_5,
- SFX_DEFAULT_VOICE_DODGE_6,
- SFX_DEFAULT_VOICE_DODGE_7,
- SFX_DEFAULT_VOICE_DODGE_8,
- SFX_DEFAULT_VOICE_DODGE_9,
- SFX_DEFAULT_VOICE_DODGE_10,
- SFX_DEFAULT_VOICE_DODGE_11,
- SFX_DEFAULT_VOICE_DODGE_12,
- SFX_DEFAULT_VOICE_DODGE_13,
- SFX_DEFAULT_VOICE_DODGE_14,
- SFX_DEFAULT_VOICE_DODGE_15,
- SFX_DEFAULT_VOICE_DODGE_16,
- SFX_DEFAULT_VOICE_DODGE_17,
- SFX_DEFAULT_VOICE_DODGE_18,
- SFX_DEFAULT_VOICE_DODGE_19,
- SFX_DEFAULT_VOICE_EYEING_1,
- SFX_DEFAULT_VOICE_EYEING_2,
- SFX_DEFAULT_VOICE_EYEING_3,
- SFX_DEFAULT_VOICE_EYEING_4,
- SFX_DEFAULT_VOICE_EYEING_5,
- SFX_DEFAULT_VOICE_EYEING_6,
- SFX_DEFAULT_VOICE_FIGHT_1,
- SFX_DEFAULT_VOICE_FIGHT_2,
- SFX_DEFAULT_VOICE_FIGHT_3,
- SFX_DEFAULT_VOICE_FIGHT_4,
- SFX_DEFAULT_VOICE_FIGHT_5,
- SFX_DEFAULT_VOICE_FIGHT_6,
- SFX_DEFAULT_VOICE_FIGHT_7,
- SFX_DEFAULT_VOICE_FIGHT_8,
- SFX_DEFAULT_VOICE_FIGHT_9,
- SFX_DEFAULT_VOICE_FIGHT_10,
- SFX_DEFAULT_VOICE_FIGHT_11,
- SFX_DEFAULT_VOICE_FIGHT_12,
- SFX_DEFAULT_VOICE_FIGHT_13,
- SFX_DEFAULT_VOICE_FIGHT_14,
- SFX_DEFAULT_VOICE_FIGHT_15,
- SFX_DEFAULT_VOICE_FIGHT_16,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_1,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_2,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_3,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_4,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_5,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_6,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_7,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_8,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_9,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_10,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_11,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_12,
- SFX_DEFAULT_VOICE_GENERIC_CRASH_13,
- SFX_DEFAULT_VOICE_GUN_PANIC_1,
- SFX_DEFAULT_VOICE_GUN_PANIC_2,
- SFX_DEFAULT_VOICE_GUN_PANIC_3,
- SFX_DEFAULT_VOICE_GUN_PANIC_4,
- SFX_DEFAULT_VOICE_GUN_PANIC_5,
- SFX_DEFAULT_VOICE_GUN_PANIC_6,
- SFX_DEFAULT_VOICE_GUN_PANIC_7,
- SFX_DEFAULT_VOICE_GUN_PANIC_8,
- SFX_DEFAULT_VOICE_GUN_PANIC_9,
- SFX_DEFAULT_VOICE_GUN_PANIC_10,
- SFX_DEFAULT_VOICE_GUN_PANIC_11,
- SFX_DEFAULT_VOICE_GUN_PANIC_12,
- SFX_DEFAULT_VOICE_JACKED_1,
- SFX_DEFAULT_VOICE_JACKED_2,
- SFX_DEFAULT_VOICE_JACKED_3,
- SFX_DEFAULT_VOICE_JACKED_4,
- SFX_DEFAULT_VOICE_JACKED_5,
- SFX_DEFAULT_VOICE_JACKED_6,
- SFX_DEFAULT_VOICE_JACKED_7,
- SFX_DEFAULT_VOICE_JACKED_8,
- SFX_DEFAULT_VOICE_JACKED_9,
- SFX_DEFAULT_VOICE_JACKED_10,
- SFX_DEFAULT_VOICE_JACKED_11,
- SFX_DEFAULT_VOICE_JACKED_12,
- SFX_DEFAULT_VOICE_JACKING_1,
- SFX_DEFAULT_VOICE_JACKING_2,
- SFX_DEFAULT_VOICE_JACKING_3,
- SFX_DEFAULT_VOICE_JACKING_4,
- SFX_DEFAULT_VOICE_JACKING_5,
- SFX_DEFAULT_VOICE_JACKING_6,
- SFX_DEFAULT_VOICE_JACKING_7,
- SFX_DEFAULT_VOICE_JACKING_8,
- SFX_DEFAULT_VOICE_JACKING_9,
- SFX_DEFAULT_VOICE_JACKING_10,
- SFX_DEFAULT_VOICE_JACKING_11,
- SFX_DEFAULT_VOICE_JACKING_12,
- SFX_DEFAULT_VOICE_JACKING_13,
- SFX_DEFAULT_VOICE_LOST_1,
- SFX_DEFAULT_VOICE_LOST_2,
- SFX_DEFAULT_VOICE_LOST_3,
- SFX_DEFAULT_VOICE_LOST_4,
- SFX_DEFAULT_VOICE_LOST_5,
- SFX_DEFAULT_VOICE_MUGGED_1,
- SFX_DEFAULT_VOICE_MUGGED_2,
- SFX_DEFAULT_VOICE_MUGGED_3,
- SFX_DEFAULT_VOICE_MUGGED_4,
- SFX_DEFAULT_VOICE_RUN_1,
- SFX_DEFAULT_VOICE_RUN_2,
- SFX_DEFAULT_VOICE_RUN_3,
- SFX_DEFAULT_VOICE_RUN_4,
- SFX_DEFAULT_VOICE_RUN_5,
- SFX_DEFAULT_VOICE_RUN_6,
- SFX_DEFAULT_VOICE_RUN_7,
- SFX_DEFAULT_VOICE_RUN_8,
- SFX_DEFAULT_VOICE_RUN_9,
- SFX_DEFAULT_VOICE_RUN_10,
- SFX_DEFAULT_VOICE_RUN_11,
- SFX_DEFAULT_VOICE_RUN_12,
- SFX_DEFAULT_VOICE_RUN_13,
- SFX_DEFAULT_VOICE_RUN_14,
- SFX_DEFAULT_VOICE_RUN_15,
- SFX_DEFAULT_VOICE_RUN_16,
- SFX_DEFAULT_VOICE_RUN_17,
- SFX_DEFAULT_VOICE_RUN_18,
- SFX_DEFAULT_VOICE_RUN_19,
- SFX_DEFAULT_VOICE_SAVED_1,
- SFX_DEFAULT_VOICE_SAVED_2,
- SFX_DEFAULT_VOICE_SAVED_3,
- SFX_DEFAULT_VOICE_SAVED_4,
- SFX_DEFAULT_VOICE_SHOCKED_1,
- SFX_DEFAULT_VOICE_SHOCKED_2,
- SFX_DEFAULT_VOICE_SHOCKED_3,
- SFX_DEFAULT_VOICE_SHOCKED_4,
- SFX_DEFAULT_VOICE_SHOCKED_5,
- SFX_DEFAULT_VOICE_SHOCKED_6,
- SFX_DEFAULT_VOICE_TAXI_1,
- SFX_DEFAULT_VOICE_TAXI_2,
- SFX_DEFAULT_VOICE_TAXI_3,
- SFX_DEFAULT_VOICE_TAXI_4,
- SFX_DEFAULT_VOICE_TAXI_5,
-
- SFX_CUBAN_GANG_1_BLOCKED_1,
- SFX_CUBAN_GANG_1_BLOCKED_2,
- SFX_CUBAN_GANG_1_BLOCKED_3,
- SFX_CUBAN_GANG_1_BLOCKED_4,
- SFX_CUBAN_GANG_1_BLOCKED_5,
- SFX_CUBAN_GANG_1_BLOCKED_6,
- SFX_CUBAN_GANG_1_BLOCKED_7,
- SFX_CUBAN_GANG_1_BLOCKED_8,
- SFX_CUBAN_GANG_1_BUMP_1,
- SFX_CUBAN_GANG_1_BUMP_2,
- SFX_CUBAN_GANG_1_BUMP_3,
- SFX_CUBAN_GANG_1_BUMP_4,
- SFX_CUBAN_GANG_1_BUMP_5,
- SFX_CUBAN_GANG_1_BUMP_6,
- SFX_CUBAN_GANG_1_BUMP_7,
- SFX_CUBAN_GANG_1_BUMP_8,
- SFX_CUBAN_GANG_1_BUMP_9,
- SFX_CUBAN_GANG_1_BUMP_10,
- SFX_CUBAN_GANG_1_BUMP_11,
- SFX_CUBAN_GANG_1_CAR_CRASH_1,
- SFX_CUBAN_GANG_1_CAR_CRASH_2,
- SFX_CUBAN_GANG_1_CAR_CRASH_3,
- SFX_CUBAN_GANG_1_CAR_CRASH_4,
- SFX_CUBAN_GANG_1_CAR_CRASH_5,
- SFX_CUBAN_GANG_1_CAR_CRASH_6,
- SFX_CUBAN_GANG_1_CAR_CRASH_7,
- SFX_CUBAN_GANG_1_CAR_CRASH_8,
- SFX_CUBAN_GANG_1_CHAT_1,
- SFX_CUBAN_GANG_1_CHAT_2,
- SFX_CUBAN_GANG_1_CHAT_3,
- SFX_CUBAN_GANG_1_CHAT_4,
- SFX_CUBAN_GANG_1_CHAT_5,
- SFX_CUBAN_GANG_1_CHAT_6,
- SFX_CUBAN_GANG_1_CHAT_7,
- SFX_CUBAN_GANG_1_CHAT_8,
- SFX_CUBAN_GANG_1_CHAT_9,
- SFX_CUBAN_GANG_1_CHAT_10,
- SFX_CUBAN_GANG_1_DODGE_1,
- SFX_CUBAN_GANG_1_DODGE_2,
- SFX_CUBAN_GANG_1_DODGE_3,
- SFX_CUBAN_GANG_1_DODGE_4,
- SFX_CUBAN_GANG_1_DODGE_5,
- SFX_CUBAN_GANG_1_DODGE_6,
- SFX_CUBAN_GANG_1_DODGE_7,
- SFX_CUBAN_GANG_1_DODGE_8,
- SFX_CUBAN_GANG_1_DODGE_9,
- SFX_CUBAN_GANG_1_EYEING_1,
- SFX_CUBAN_GANG_1_EYEING_2,
- SFX_CUBAN_GANG_1_FIGHT_1,
- SFX_CUBAN_GANG_1_FIGHT_2,
- SFX_CUBAN_GANG_1_FIGHT_3,
- SFX_CUBAN_GANG_1_FIGHT_4,
- SFX_CUBAN_GANG_1_FIGHT_5,
- SFX_CUBAN_GANG_1_FIGHT_6,
- SFX_CUBAN_GANG_1_FIGHT_7,
- SFX_CUBAN_GANG_1_FIGHT_8,
- SFX_CUBAN_GANG_1_FIGHT_9,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_1,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_2,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_3,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_4,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_5,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_6,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_7,
- SFX_CUBAN_GANG_1_GENERIC_CRASH_8,
- SFX_CUBAN_GANG_1_GUN_COOL_1,
- SFX_CUBAN_GANG_1_GUN_COOL_2,
- SFX_CUBAN_GANG_1_GUN_COOL_3,
- SFX_CUBAN_GANG_1_GUN_COOL_4,
- SFX_CUBAN_GANG_1_GUN_COOL_5,
- SFX_CUBAN_GANG_1_JACKED_1,
- SFX_CUBAN_GANG_1_JACKED_2,
- SFX_CUBAN_GANG_1_JACKED_3,
- SFX_CUBAN_GANG_1_JACKED_4,
- SFX_CUBAN_GANG_1_JACKING_1,
- SFX_CUBAN_GANG_1_JACKING_2,
- SFX_CUBAN_GANG_1_JACKING_3,
- SFX_CUBAN_GANG_1_JACKING_4,
- SFX_CUBAN_GANG_1_JACKING_5,
- SFX_CUBAN_GANG_1_LOST_1,
- SFX_CUBAN_GANG_1_LOST_2,
- SFX_CUBAN_GANG_1_MUGGED_1,
- SFX_CUBAN_GANG_1_MUGGED_2,
- SFX_CUBAN_GANG_1_SAVED_1,
- SFX_CUBAN_GANG_1_TAXI_1,
- SFX_CUBAN_GANG_1_TAXI_2,
- SFX_CUBAN_GANG_2_BLOCKED_1,
- SFX_CUBAN_GANG_2_BLOCKED_2,
- SFX_CUBAN_GANG_2_BLOCKED_3,
- SFX_CUBAN_GANG_2_BLOCKED_4,
- SFX_CUBAN_GANG_2_BLOCKED_5,
- SFX_CUBAN_GANG_2_BLOCKED_6,
- SFX_CUBAN_GANG_2_BLOCKED_7,
- SFX_CUBAN_GANG_2_BLOCKED_8,
- SFX_CUBAN_GANG_2_BUMP_1,
- SFX_CUBAN_GANG_2_BUMP_2,
- SFX_CUBAN_GANG_2_BUMP_3,
- SFX_CUBAN_GANG_2_BUMP_4,
- SFX_CUBAN_GANG_2_BUMP_5,
- SFX_CUBAN_GANG_2_BUMP_6,
- SFX_CUBAN_GANG_2_BUMP_7,
- SFX_CUBAN_GANG_2_BUMP_8,
- SFX_CUBAN_GANG_2_BUMP_9,
- SFX_CUBAN_GANG_2_BUMP_10,
- SFX_CUBAN_GANG_2_BUMP_11,
- SFX_CUBAN_GANG_2_CAR_CRASH_1,
- SFX_CUBAN_GANG_2_CAR_CRASH_2,
- SFX_CUBAN_GANG_2_CAR_CRASH_3,
- SFX_CUBAN_GANG_2_CAR_CRASH_4,
- SFX_CUBAN_GANG_2_CAR_CRASH_5,
- SFX_CUBAN_GANG_2_CAR_CRASH_6,
- SFX_CUBAN_GANG_2_CAR_CRASH_7,
- SFX_CUBAN_GANG_2_CAR_CRASH_8,
- SFX_CUBAN_GANG_2_CHAT_1,
- SFX_CUBAN_GANG_2_CHAT_2,
- SFX_CUBAN_GANG_2_CHAT_3,
- SFX_CUBAN_GANG_2_CHAT_4,
- SFX_CUBAN_GANG_2_CHAT_5,
- SFX_CUBAN_GANG_2_CHAT_6,
- SFX_CUBAN_GANG_2_CHAT_7,
- SFX_CUBAN_GANG_2_CHAT_8,
- SFX_CUBAN_GANG_2_CHAT_9,
- SFX_CUBAN_GANG_2_CHAT_10,
- SFX_CUBAN_GANG_2_DODGE_1,
- SFX_CUBAN_GANG_2_DODGE_2,
- SFX_CUBAN_GANG_2_DODGE_3,
- SFX_CUBAN_GANG_2_DODGE_4,
- SFX_CUBAN_GANG_2_DODGE_5,
- SFX_CUBAN_GANG_2_DODGE_6,
- SFX_CUBAN_GANG_2_DODGE_7,
- SFX_CUBAN_GANG_2_DODGE_8,
- SFX_CUBAN_GANG_2_DODGE_9,
- SFX_CUBAN_GANG_2_EYEING_1,
- SFX_CUBAN_GANG_2_EYEING_2,
- SFX_CUBAN_GANG_2_FIGHT_1,
- SFX_CUBAN_GANG_2_FIGHT_2,
- SFX_CUBAN_GANG_2_FIGHT_3,
- SFX_CUBAN_GANG_2_FIGHT_4,
- SFX_CUBAN_GANG_2_FIGHT_5,
- SFX_CUBAN_GANG_2_FIGHT_6,
- SFX_CUBAN_GANG_2_FIGHT_7,
- SFX_CUBAN_GANG_2_FIGHT_8,
- SFX_CUBAN_GANG_2_FIGHT_9,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_1,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_2,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_3,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_4,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_5,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_6,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_7,
- SFX_CUBAN_GANG_2_GENERIC_CRASH_8,
- SFX_CUBAN_GANG_2_GUN_COOL_1,
- SFX_CUBAN_GANG_2_GUN_COOL_2,
- SFX_CUBAN_GANG_2_GUN_COOL_3,
- SFX_CUBAN_GANG_2_GUN_COOL_4,
- SFX_CUBAN_GANG_2_GUN_COOL_5,
- SFX_CUBAN_GANG_2_JACKED_1,
- SFX_CUBAN_GANG_2_JACKED_2,
- SFX_CUBAN_GANG_2_JACKED_3,
- SFX_CUBAN_GANG_2_JACKED_4,
- SFX_CUBAN_GANG_2_JACKING_1,
- SFX_CUBAN_GANG_2_JACKING_2,
- SFX_CUBAN_GANG_2_JACKING_3,
- SFX_CUBAN_GANG_2_JACKING_4,
- SFX_CUBAN_GANG_2_JACKING_5,
- SFX_CUBAN_GANG_2_LOST_1,
- SFX_CUBAN_GANG_2_LOST_2,
- SFX_CUBAN_GANG_2_MUGGED_1,
- SFX_CUBAN_GANG_2_MUGGED_2,
- SFX_CUBAN_GANG_2_SAVED_1,
- SFX_CUBAN_GANG_2_TAXI_1,
- SFX_CUBAN_GANG_2_TAXI_2,
- SFX_CUBAN_GANG_3_BLOCKED_1,
- SFX_CUBAN_GANG_3_BLOCKED_2,
- SFX_CUBAN_GANG_3_BLOCKED_3,
- SFX_CUBAN_GANG_3_BLOCKED_4,
- SFX_CUBAN_GANG_3_BLOCKED_5,
- SFX_CUBAN_GANG_3_BLOCKED_6,
- SFX_CUBAN_GANG_3_BLOCKED_7,
- SFX_CUBAN_GANG_3_BLOCKED_8,
- SFX_CUBAN_GANG_3_BUMP_1,
- SFX_CUBAN_GANG_3_BUMP_2,
- SFX_CUBAN_GANG_3_BUMP_3,
- SFX_CUBAN_GANG_3_BUMP_4,
- SFX_CUBAN_GANG_3_BUMP_5,
- SFX_CUBAN_GANG_3_BUMP_6,
- SFX_CUBAN_GANG_3_BUMP_7,
- SFX_CUBAN_GANG_3_BUMP_8,
- SFX_CUBAN_GANG_3_BUMP_9,
- SFX_CUBAN_GANG_3_BUMP_10,
- SFX_CUBAN_GANG_3_BUMP_11,
- SFX_CUBAN_GANG_3_CAR_CRASH_1,
- SFX_CUBAN_GANG_3_CAR_CRASH_2,
- SFX_CUBAN_GANG_3_CAR_CRASH_3,
- SFX_CUBAN_GANG_3_CAR_CRASH_4,
- SFX_CUBAN_GANG_3_CAR_CRASH_5,
- SFX_CUBAN_GANG_3_CAR_CRASH_6,
- SFX_CUBAN_GANG_3_CAR_CRASH_7,
- SFX_CUBAN_GANG_3_CAR_CRASH_8,
- SFX_CUBAN_GANG_3_CHAT_1,
- SFX_CUBAN_GANG_3_CHAT_2,
- SFX_CUBAN_GANG_3_CHAT_3,
- SFX_CUBAN_GANG_3_CHAT_4,
- SFX_CUBAN_GANG_3_CHAT_5,
- SFX_CUBAN_GANG_3_CHAT_6,
- SFX_CUBAN_GANG_3_CHAT_7,
- SFX_CUBAN_GANG_3_CHAT_8,
- SFX_CUBAN_GANG_3_CHAT_9,
- SFX_CUBAN_GANG_3_CHAT_10,
- SFX_CUBAN_GANG_3_DODGE_1,
- SFX_CUBAN_GANG_3_DODGE_2,
- SFX_CUBAN_GANG_3_DODGE_3,
- SFX_CUBAN_GANG_3_DODGE_4,
- SFX_CUBAN_GANG_3_DODGE_5,
- SFX_CUBAN_GANG_3_DODGE_6,
- SFX_CUBAN_GANG_3_DODGE_7,
- SFX_CUBAN_GANG_3_DODGE_8,
- SFX_CUBAN_GANG_3_DODGE_9,
- SFX_CUBAN_GANG_3_EYEING_1,
- SFX_CUBAN_GANG_3_EYEING_2,
- SFX_CUBAN_GANG_3_FIGHT_1,
- SFX_CUBAN_GANG_3_FIGHT_2,
- SFX_CUBAN_GANG_3_FIGHT_3,
- SFX_CUBAN_GANG_3_FIGHT_4,
- SFX_CUBAN_GANG_3_FIGHT_5,
- SFX_CUBAN_GANG_3_FIGHT_6,
- SFX_CUBAN_GANG_3_FIGHT_7,
- SFX_CUBAN_GANG_3_FIGHT_8,
- SFX_CUBAN_GANG_3_FIGHT_9,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_1,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_2,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_3,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_4,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_5,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_6,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_7,
- SFX_CUBAN_GANG_3_GENERIC_CRASH_8,
- SFX_CUBAN_GANG_3_GUN_COOL_1,
- SFX_CUBAN_GANG_3_GUN_COOL_2,
- SFX_CUBAN_GANG_3_GUN_COOL_3,
- SFX_CUBAN_GANG_3_GUN_COOL_4,
- SFX_CUBAN_GANG_3_GUN_COOL_5,
- SFX_CUBAN_GANG_3_JACKED_1,
- SFX_CUBAN_GANG_3_JACKED_2,
- SFX_CUBAN_GANG_3_JACKED_3,
- SFX_CUBAN_GANG_3_JACKED_4,
- SFX_CUBAN_GANG_3_JACKING_1,
- SFX_CUBAN_GANG_3_JACKING_2,
- SFX_CUBAN_GANG_3_JACKING_3,
- SFX_CUBAN_GANG_3_JACKING_4,
- SFX_CUBAN_GANG_3_JACKING_5,
- SFX_CUBAN_GANG_3_LOST_1,
- SFX_CUBAN_GANG_3_LOST_2,
- SFX_CUBAN_GANG_3_MUGGED_1,
- SFX_CUBAN_GANG_3_MUGGED_2,
- SFX_CUBAN_GANG_3_SAVED_1,
- SFX_CUBAN_GANG_3_TAXI_1,
- SFX_CUBAN_GANG_3_TAXI_2,
-
- SFX_BIKER_GANG_1_BLOCKED_1,
- SFX_BIKER_GANG_1_BLOCKED_2,
- SFX_BIKER_GANG_1_BLOCKED_3,
- SFX_BIKER_GANG_1_BLOCKED_4,
- SFX_BIKER_GANG_1_BLOCKED_5,
- SFX_BIKER_GANG_1_BLOCKED_6,
- SFX_BIKER_GANG_1_BLOCKED_7,
- SFX_BIKER_GANG_1_BLOCKED_8,
- SFX_BIKER_GANG_1_BLOCKED_9,
- SFX_BIKER_GANG_1_BLOCKED_10,
- SFX_BIKER_GANG_1_BUMP_1,
- SFX_BIKER_GANG_1_BUMP_2,
- SFX_BIKER_GANG_1_BUMP_3,
- SFX_BIKER_GANG_1_BUMP_4,
- SFX_BIKER_GANG_1_BUMP_5,
- SFX_BIKER_GANG_1_BUMP_6,
- SFX_BIKER_GANG_1_BUMP_7,
- SFX_BIKER_GANG_1_BUMP_8,
- SFX_BIKER_GANG_1_BUMP_9,
- SFX_BIKER_GANG_1_BUMP_10,
- SFX_BIKER_GANG_1_CHAT_1,
- SFX_BIKER_GANG_1_CHAT_2,
- SFX_BIKER_GANG_1_CHAT_3,
- SFX_BIKER_GANG_1_CHAT_4,
- SFX_BIKER_GANG_1_CHAT_5,
- SFX_BIKER_GANG_1_CHAT_6,
- SFX_BIKER_GANG_1_CHAT_7,
- SFX_BIKER_GANG_1_CHAT_8,
- SFX_BIKER_GANG_1_CHAT_9,
- SFX_BIKER_GANG_1_CHAT_10,
- SFX_BIKER_GANG_1_CHAT_11,
- SFX_BIKER_GANG_1_CHAT_12,
- SFX_BIKER_GANG_1_DODGE_1,
- SFX_BIKER_GANG_1_DODGE_2,
- SFX_BIKER_GANG_1_DODGE_3,
- SFX_BIKER_GANG_1_DODGE_4,
- SFX_BIKER_GANG_1_DODGE_5,
- SFX_BIKER_GANG_1_DODGE_6,
- SFX_BIKER_GANG_1_DODGE_7,
- SFX_BIKER_GANG_1_DODGE_8,
- SFX_BIKER_GANG_1_DODGE_9,
- SFX_BIKER_GANG_1_FIGHT_1,
- SFX_BIKER_GANG_1_FIGHT_2,
- SFX_BIKER_GANG_1_FIGHT_3,
- SFX_BIKER_GANG_1_FIGHT_4,
- SFX_BIKER_GANG_1_FIGHT_5,
- SFX_BIKER_GANG_1_FIGHT_6,
- SFX_BIKER_GANG_1_FIGHT_7,
- SFX_BIKER_GANG_1_FIGHT_8,
- SFX_BIKER_GANG_1_FIGHT_9,
- SFX_BIKER_GANG_1_GENERIC_CRASH_1,
- SFX_BIKER_GANG_1_GENERIC_CRASH_2,
- SFX_BIKER_GANG_1_GENERIC_CRASH_3,
- SFX_BIKER_GANG_1_GENERIC_CRASH_4,
- SFX_BIKER_GANG_1_GENERIC_CRASH_5,
- SFX_BIKER_GANG_1_GENERIC_CRASH_6,
- SFX_BIKER_GANG_1_GENERIC_CRASH_7,
- SFX_BIKER_GANG_1_GENERIC_CRASH_8,
- SFX_BIKER_GANG_1_GUN_COOL_1,
- SFX_BIKER_GANG_1_GUN_COOL_2,
- SFX_BIKER_GANG_1_GUN_COOL_3,
- SFX_BIKER_GANG_1_GUN_COOL_4,
- SFX_BIKER_GANG_1_GUN_COOL_5,
- SFX_BIKER_GANG_1_JACKED_1,
- SFX_BIKER_GANG_1_JACKED_2,
- SFX_BIKER_GANG_1_JACKED_3,
- SFX_BIKER_GANG_1_JACKED_4,
- SFX_BIKER_GANG_1_JACKED_5,
- SFX_BIKER_GANG_1_JACKED_6,
- SFX_BIKER_GANG_1_JACKED_7,
- SFX_BIKER_GANG_1_JACKED_8,
- SFX_BIKER_GANG_1_JACKING_1,
- SFX_BIKER_GANG_1_JACKING_2,
- SFX_BIKER_GANG_1_JACKING_3,
- SFX_BIKER_GANG_1_JACKING_4,
- SFX_BIKER_GANG_1_LOST_1,
- SFX_BIKER_GANG_1_LOST_2,
- SFX_BIKER_GANG_1_MUGGED_1,
- SFX_BIKER_GANG_1_MUGGED_2,
- SFX_BIKER_GANG_1_SAVED_1,
- SFX_BIKER_GANG_1_TAXI_1,
- SFX_BIKER_GANG_1_TAXI_2,
-
- SFX_BIKER_GANG_2_BLOCKED_1,
- SFX_BIKER_GANG_2_BLOCKED_2,
- SFX_BIKER_GANG_2_BLOCKED_3,
- SFX_BIKER_GANG_2_BLOCKED_4,
- SFX_BIKER_GANG_2_BLOCKED_5,
- SFX_BIKER_GANG_2_BLOCKED_6,
- SFX_BIKER_GANG_2_BLOCKED_7,
- SFX_BIKER_GANG_2_BLOCKED_8,
- SFX_BIKER_GANG_2_BLOCKED_9,
- SFX_BIKER_GANG_2_BLOCKED_10,
- SFX_BIKER_GANG_2_BUMP_1,
- SFX_BIKER_GANG_2_BUMP_2,
- SFX_BIKER_GANG_2_BUMP_3,
- SFX_BIKER_GANG_2_BUMP_4,
- SFX_BIKER_GANG_2_BUMP_5,
- SFX_BIKER_GANG_2_BUMP_6,
- SFX_BIKER_GANG_2_BUMP_7,
- SFX_BIKER_GANG_2_BUMP_8,
- SFX_BIKER_GANG_2_BUMP_9,
- SFX_BIKER_GANG_2_BUMP_10,
- SFX_BIKER_GANG_2_CHAT_1,
- SFX_BIKER_GANG_2_CHAT_2,
- SFX_BIKER_GANG_2_CHAT_3,
- SFX_BIKER_GANG_2_CHAT_4,
- SFX_BIKER_GANG_2_CHAT_5,
- SFX_BIKER_GANG_2_CHAT_6,
- SFX_BIKER_GANG_2_CHAT_7,
- SFX_BIKER_GANG_2_CHAT_8,
- SFX_BIKER_GANG_2_CHAT_9,
- SFX_BIKER_GANG_2_CHAT_10,
- SFX_BIKER_GANG_2_CHAT_11,
- SFX_BIKER_GANG_2_CHAT_12,
- SFX_BIKER_GANG_2_DODGE_1,
- SFX_BIKER_GANG_2_DODGE_2,
- SFX_BIKER_GANG_2_DODGE_3,
- SFX_BIKER_GANG_2_DODGE_4,
- SFX_BIKER_GANG_2_DODGE_5,
- SFX_BIKER_GANG_2_DODGE_6,
- SFX_BIKER_GANG_2_DODGE_7,
- SFX_BIKER_GANG_2_DODGE_8,
- SFX_BIKER_GANG_2_DODGE_9,
- SFX_BIKER_GANG_2_FIGHT_1,
- SFX_BIKER_GANG_2_FIGHT_2,
- SFX_BIKER_GANG_2_FIGHT_3,
- SFX_BIKER_GANG_2_FIGHT_4,
- SFX_BIKER_GANG_2_FIGHT_5,
- SFX_BIKER_GANG_2_FIGHT_6,
- SFX_BIKER_GANG_2_FIGHT_7,
- SFX_BIKER_GANG_2_FIGHT_8,
- SFX_BIKER_GANG_2_FIGHT_9,
- SFX_BIKER_GANG_2_GENERIC_CRASH_1,
- SFX_BIKER_GANG_2_GENERIC_CRASH_2,
- SFX_BIKER_GANG_2_GENERIC_CRASH_3,
- SFX_BIKER_GANG_2_GENERIC_CRASH_4,
- SFX_BIKER_GANG_2_GENERIC_CRASH_5,
- SFX_BIKER_GANG_2_GENERIC_CRASH_6,
- SFX_BIKER_GANG_2_GENERIC_CRASH_7,
- SFX_BIKER_GANG_2_GENERIC_CRASH_8,
- SFX_BIKER_GANG_2_GUN_COOL_1,
- SFX_BIKER_GANG_2_GUN_COOL_2,
- SFX_BIKER_GANG_2_GUN_COOL_3,
- SFX_BIKER_GANG_2_GUN_COOL_4,
- SFX_BIKER_GANG_2_GUN_COOL_5,
- SFX_BIKER_GANG_2_JACKED_1,
- SFX_BIKER_GANG_2_JACKED_2,
- SFX_BIKER_GANG_2_JACKED_3,
- SFX_BIKER_GANG_2_JACKED_4,
- SFX_BIKER_GANG_2_JACKED_5,
- SFX_BIKER_GANG_2_JACKED_6,
- SFX_BIKER_GANG_2_JACKED_7,
- SFX_BIKER_GANG_2_JACKED_8,
- SFX_BIKER_GANG_2_JACKING_1,
- SFX_BIKER_GANG_2_JACKING_2,
- SFX_BIKER_GANG_2_JACKING_3,
- SFX_BIKER_GANG_2_JACKING_4,
- SFX_BIKER_GANG_2_LOST_1,
- SFX_BIKER_GANG_2_LOST_2,
- SFX_BIKER_GANG_2_MUGGED_1,
- SFX_BIKER_GANG_2_MUGGED_2,
- SFX_BIKER_GANG_2_SAVED_1,
- SFX_BIKER_GANG_2_TAXI_1,
- SFX_BIKER_GANG_2_TAXI_2,
-
- SFX_BIKER_GANG_3_BLOCKED_1,
- SFX_BIKER_GANG_3_BLOCKED_2,
- SFX_BIKER_GANG_3_BLOCKED_3,
- SFX_BIKER_GANG_3_BLOCKED_4,
- SFX_BIKER_GANG_3_BLOCKED_5,
- SFX_BIKER_GANG_3_BLOCKED_6,
- SFX_BIKER_GANG_3_BLOCKED_7,
- SFX_BIKER_GANG_3_BLOCKED_8,
- SFX_BIKER_GANG_3_BLOCKED_9,
- SFX_BIKER_GANG_3_BLOCKED_10,
- SFX_BIKER_GANG_3_BUMP_1,
- SFX_BIKER_GANG_3_BUMP_2,
- SFX_BIKER_GANG_3_BUMP_3,
- SFX_BIKER_GANG_3_BUMP_4,
- SFX_BIKER_GANG_3_BUMP_5,
- SFX_BIKER_GANG_3_BUMP_6,
- SFX_BIKER_GANG_3_BUMP_7,
- SFX_BIKER_GANG_3_BUMP_8,
- SFX_BIKER_GANG_3_BUMP_9,
- SFX_BIKER_GANG_3_BUMP_10,
- SFX_BIKER_GANG_3_CHAT_1,
- SFX_BIKER_GANG_3_CHAT_2,
- SFX_BIKER_GANG_3_CHAT_3,
- SFX_BIKER_GANG_3_CHAT_4,
- SFX_BIKER_GANG_3_CHAT_5,
- SFX_BIKER_GANG_3_CHAT_6,
- SFX_BIKER_GANG_3_CHAT_7,
- SFX_BIKER_GANG_3_CHAT_8,
- SFX_BIKER_GANG_3_CHAT_9,
- SFX_BIKER_GANG_3_CHAT_10,
- SFX_BIKER_GANG_3_CHAT_11,
- SFX_BIKER_GANG_3_CHAT_12,
- SFX_BIKER_GANG_3_DODGE_1,
- SFX_BIKER_GANG_3_DODGE_2,
- SFX_BIKER_GANG_3_DODGE_3,
- SFX_BIKER_GANG_3_DODGE_4,
- SFX_BIKER_GANG_3_DODGE_5,
- SFX_BIKER_GANG_3_DODGE_6,
- SFX_BIKER_GANG_3_DODGE_7,
- SFX_BIKER_GANG_3_DODGE_8,
- SFX_BIKER_GANG_3_DODGE_9,
- SFX_BIKER_GANG_3_FIGHT_1,
- SFX_BIKER_GANG_3_FIGHT_2,
- SFX_BIKER_GANG_3_FIGHT_3,
- SFX_BIKER_GANG_3_FIGHT_4,
- SFX_BIKER_GANG_3_FIGHT_5,
- SFX_BIKER_GANG_3_FIGHT_6,
- SFX_BIKER_GANG_3_FIGHT_7,
- SFX_BIKER_GANG_3_FIGHT_8,
- SFX_BIKER_GANG_3_FIGHT_9,
- SFX_BIKER_GANG_3_GENERIC_CRASH_1,
- SFX_BIKER_GANG_3_GENERIC_CRASH_2,
- SFX_BIKER_GANG_3_GENERIC_CRASH_3,
- SFX_BIKER_GANG_3_GENERIC_CRASH_4,
- SFX_BIKER_GANG_3_GENERIC_CRASH_5,
- SFX_BIKER_GANG_3_GENERIC_CRASH_6,
- SFX_BIKER_GANG_3_GENERIC_CRASH_7,
- SFX_BIKER_GANG_3_GENERIC_CRASH_8,
- SFX_BIKER_GANG_3_GUN_COOL_1,
- SFX_BIKER_GANG_3_GUN_COOL_2,
- SFX_BIKER_GANG_3_GUN_COOL_3,
- SFX_BIKER_GANG_3_GUN_COOL_4,
- SFX_BIKER_GANG_3_GUN_COOL_5,
- SFX_BIKER_GANG_3_JACKED_1,
- SFX_BIKER_GANG_3_JACKED_2,
- SFX_BIKER_GANG_3_JACKED_3,
- SFX_BIKER_GANG_3_JACKED_4,
- SFX_BIKER_GANG_3_JACKED_5,
- SFX_BIKER_GANG_3_JACKED_6,
- SFX_BIKER_GANG_3_JACKED_7,
- SFX_BIKER_GANG_3_JACKED_8,
- SFX_BIKER_GANG_3_JACKING_1,
- SFX_BIKER_GANG_3_JACKING_2,
- SFX_BIKER_GANG_3_JACKING_3,
- SFX_BIKER_GANG_3_JACKING_4,
- SFX_BIKER_GANG_3_LOST_1,
- SFX_BIKER_GANG_3_LOST_2,
- SFX_BIKER_GANG_3_MUGGED_1,
- SFX_BIKER_GANG_3_MUGGED_2,
- SFX_BIKER_GANG_3_SAVED_1,
- SFX_BIKER_GANG_3_TAXI_1,
- SFX_BIKER_GANG_3_TAXI_2,
-
- SFX_HAITIAN_GANG_1_BLOCKED_1,
- SFX_HAITIAN_GANG_1_BLOCKED_2,
- SFX_HAITIAN_GANG_1_BLOCKED_3,
- SFX_HAITIAN_GANG_1_BLOCKED_4,
- SFX_HAITIAN_GANG_1_BLOCKED_5,
- SFX_HAITIAN_GANG_1_BLOCKED_6,
- SFX_HAITIAN_GANG_1_BLOCKED_7,
- SFX_HAITIAN_GANG_1_BLOCKED_8,
- SFX_HAITIAN_GANG_1_BLOCKED_9,
- SFX_HAITIAN_GANG_1_BUMP_1,
- SFX_HAITIAN_GANG_1_BUMP_2,
- SFX_HAITIAN_GANG_1_BUMP_3,
- SFX_HAITIAN_GANG_1_BUMP_4,
- SFX_HAITIAN_GANG_1_BUMP_5,
- SFX_HAITIAN_GANG_1_BUMP_6,
- SFX_HAITIAN_GANG_1_BUMP_7,
- SFX_HAITIAN_GANG_1_BUMP_8,
- SFX_HAITIAN_GANG_1_BUMP_9,
- SFX_HAITIAN_GANG_1_BUMP_10,
- SFX_HAITIAN_GANG_1_BUMP_11,
- SFX_HAITIAN_GANG_1_BUMP_12,
- SFX_HAITIAN_GANG_1_CAR_CRASH_1,
- SFX_HAITIAN_GANG_1_CAR_CRASH_2,
- SFX_HAITIAN_GANG_1_CAR_CRASH_3,
- SFX_HAITIAN_GANG_1_CAR_CRASH_4,
- SFX_HAITIAN_GANG_1_CAR_CRASH_5,
- SFX_HAITIAN_GANG_1_CAR_CRASH_6,
- SFX_HAITIAN_GANG_1_CAR_CRASH_7,
- SFX_HAITIAN_GANG_1_CAR_CRASH_8,
- SFX_HAITIAN_GANG_1_CAR_CRASH_9,
- SFX_HAITIAN_GANG_1_CHAT_1,
- SFX_HAITIAN_GANG_1_CHAT_2,
- SFX_HAITIAN_GANG_1_CHAT_3,
- SFX_HAITIAN_GANG_1_CHAT_4,
- SFX_HAITIAN_GANG_1_CHAT_5,
- SFX_HAITIAN_GANG_1_CHAT_6,
- SFX_HAITIAN_GANG_1_CHAT_7,
- SFX_HAITIAN_GANG_1_CHAT_8,
- SFX_HAITIAN_GANG_1_CHAT_9,
- SFX_HAITIAN_GANG_1_CHAT_10,
- SFX_HAITIAN_GANG_1_CHAT_11,
- SFX_HAITIAN_GANG_1_CHAT_12,
- SFX_HAITIAN_GANG_1_CHAT_13,
- SFX_HAITIAN_GANG_1_CHAT_14,
- SFX_HAITIAN_GANG_1_DODGE_1,
- SFX_HAITIAN_GANG_1_DODGE_2,
- SFX_HAITIAN_GANG_1_DODGE_3,
- SFX_HAITIAN_GANG_1_DODGE_4,
- SFX_HAITIAN_GANG_1_DODGE_5,
- SFX_HAITIAN_GANG_1_DODGE_6,
- SFX_HAITIAN_GANG_1_DODGE_7,
- SFX_HAITIAN_GANG_1_DODGE_8,
- SFX_HAITIAN_GANG_1_DODGE_9,
- SFX_HAITIAN_GANG_1_DODGE_10,
- SFX_HAITIAN_GANG_1_EYEING_1,
- SFX_HAITIAN_GANG_1_EYEING_2,
- SFX_HAITIAN_GANG_1_FIGHT_1,
- SFX_HAITIAN_GANG_1_FIGHT_2,
- SFX_HAITIAN_GANG_1_FIGHT_3,
- SFX_HAITIAN_GANG_1_FIGHT_4,
- SFX_HAITIAN_GANG_1_FIGHT_5,
- SFX_HAITIAN_GANG_1_FIGHT_6,
- SFX_HAITIAN_GANG_1_FIGHT_7,
- SFX_HAITIAN_GANG_1_FIGHT_8,
- SFX_HAITIAN_GANG_1_FIGHT_9,
- SFX_HAITIAN_GANG_1_FIGHT_10,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_1,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_2,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_3,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_4,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_5,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_6,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_7,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_8,
- SFX_HAITIAN_GANG_1_GENERIC_CRASH_9,
- SFX_HAITIAN_GANG_1_GUN_COOL_1,
- SFX_HAITIAN_GANG_1_GUN_COOL_2,
- SFX_HAITIAN_GANG_1_GUN_COOL_3,
- SFX_HAITIAN_GANG_1_GUN_COOL_4,
- SFX_HAITIAN_GANG_1_GUN_COOL_5,
- SFX_HAITIAN_GANG_1_JACKED_1,
- SFX_HAITIAN_GANG_1_JACKED_2,
- SFX_HAITIAN_GANG_1_JACKED_3,
- SFX_HAITIAN_GANG_1_JACKED_4,
- SFX_HAITIAN_GANG_1_JACKED_5,
- SFX_HAITIAN_GANG_1_JACKED_6,
- SFX_HAITIAN_GANG_1_JACKING_1,
- SFX_HAITIAN_GANG_1_JACKING_2,
- SFX_HAITIAN_GANG_1_JACKING_3,
- SFX_HAITIAN_GANG_1_JACKING_4,
- SFX_HAITIAN_GANG_1_LOST_1,
- SFX_HAITIAN_GANG_1_LOST_2,
- SFX_HAITIAN_GANG_1_LOST_3,
- SFX_HAITIAN_GANG_1_LOST_4,
- SFX_HAITIAN_GANG_1_MUGGED_1,
- SFX_HAITIAN_GANG_1_MUGGED_2,
- SFX_HAITIAN_GANG_1_MUGGED_3,
- SFX_HAITIAN_GANG_1_SAVED_1,
- SFX_HAITIAN_GANG_1_TAXI_1,
-
-
- SFX_HAITIAN_GANG_2_BLOCKED_1,
- SFX_HAITIAN_GANG_2_BLOCKED_2,
- SFX_HAITIAN_GANG_2_BLOCKED_3,
- SFX_HAITIAN_GANG_2_BLOCKED_4,
- SFX_HAITIAN_GANG_2_BLOCKED_5,
- SFX_HAITIAN_GANG_2_BLOCKED_6,
- SFX_HAITIAN_GANG_2_BLOCKED_7,
- SFX_HAITIAN_GANG_2_BLOCKED_8,
- SFX_HAITIAN_GANG_2_BLOCKED_9,
- SFX_HAITIAN_GANG_2_BUMP_1,
- SFX_HAITIAN_GANG_2_BUMP_2,
- SFX_HAITIAN_GANG_2_BUMP_3,
- SFX_HAITIAN_GANG_2_BUMP_4,
- SFX_HAITIAN_GANG_2_BUMP_5,
- SFX_HAITIAN_GANG_2_BUMP_6,
- SFX_HAITIAN_GANG_2_BUMP_7,
- SFX_HAITIAN_GANG_2_BUMP_8,
- SFX_HAITIAN_GANG_2_BUMP_9,
- SFX_HAITIAN_GANG_2_BUMP_10,
- SFX_HAITIAN_GANG_2_BUMP_11,
- SFX_HAITIAN_GANG_2_BUMP_12,
- SFX_HAITIAN_GANG_2_CAR_CRASH_1,
- SFX_HAITIAN_GANG_2_CAR_CRASH_2,
- SFX_HAITIAN_GANG_2_CAR_CRASH_3,
- SFX_HAITIAN_GANG_2_CAR_CRASH_4,
- SFX_HAITIAN_GANG_2_CAR_CRASH_5,
- SFX_HAITIAN_GANG_2_CAR_CRASH_6,
- SFX_HAITIAN_GANG_2_CAR_CRASH_7,
- SFX_HAITIAN_GANG_2_CAR_CRASH_8,
- SFX_HAITIAN_GANG_2_CAR_CRASH_9,
- SFX_HAITIAN_GANG_2_CHAT_1,
- SFX_HAITIAN_GANG_2_CHAT_2,
- SFX_HAITIAN_GANG_2_CHAT_3,
- SFX_HAITIAN_GANG_2_CHAT_4,
- SFX_HAITIAN_GANG_2_CHAT_5,
- SFX_HAITIAN_GANG_2_CHAT_6,
- SFX_HAITIAN_GANG_2_CHAT_7,
- SFX_HAITIAN_GANG_2_CHAT_8,
- SFX_HAITIAN_GANG_2_CHAT_9,
- SFX_HAITIAN_GANG_2_CHAT_10,
- SFX_HAITIAN_GANG_2_CHAT_11,
- SFX_HAITIAN_GANG_2_CHAT_12,
- SFX_HAITIAN_GANG_2_CHAT_13,
- SFX_HAITIAN_GANG_2_CHAT_14,
- SFX_HAITIAN_GANG_2_DODGE_1,
- SFX_HAITIAN_GANG_2_DODGE_2,
- SFX_HAITIAN_GANG_2_DODGE_3,
- SFX_HAITIAN_GANG_2_DODGE_4,
- SFX_HAITIAN_GANG_2_DODGE_5,
- SFX_HAITIAN_GANG_2_DODGE_6,
- SFX_HAITIAN_GANG_2_DODGE_7,
- SFX_HAITIAN_GANG_2_DODGE_8,
- SFX_HAITIAN_GANG_2_DODGE_9,
- SFX_HAITIAN_GANG_2_DODGE_10,
- SFX_HAITIAN_GANG_2_EYEING_1,
- SFX_HAITIAN_GANG_2_EYEING_2,
- SFX_HAITIAN_GANG_2_FIGHT_1,
- SFX_HAITIAN_GANG_2_FIGHT_2,
- SFX_HAITIAN_GANG_2_FIGHT_3,
- SFX_HAITIAN_GANG_2_FIGHT_4,
- SFX_HAITIAN_GANG_2_FIGHT_5,
- SFX_HAITIAN_GANG_2_FIGHT_6,
- SFX_HAITIAN_GANG_2_FIGHT_7,
- SFX_HAITIAN_GANG_2_FIGHT_8,
- SFX_HAITIAN_GANG_2_FIGHT_9,
- SFX_HAITIAN_GANG_2_FIGHT_10,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_1,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_2,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_3,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_4,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_5,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_6,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_7,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_8,
- SFX_HAITIAN_GANG_2_GENERIC_CRASH_9,
- SFX_HAITIAN_GANG_2_GUN_COOL_1,
- SFX_HAITIAN_GANG_2_GUN_COOL_2,
- SFX_HAITIAN_GANG_2_GUN_COOL_3,
- SFX_HAITIAN_GANG_2_GUN_COOL_4,
- SFX_HAITIAN_GANG_2_GUN_COOL_5,
- SFX_HAITIAN_GANG_2_JACKED_1,
- SFX_HAITIAN_GANG_2_JACKED_2,
- SFX_HAITIAN_GANG_2_JACKED_3,
- SFX_HAITIAN_GANG_2_JACKED_4,
- SFX_HAITIAN_GANG_2_JACKED_5,
- SFX_HAITIAN_GANG_2_JACKED_6,
- SFX_HAITIAN_GANG_2_JACKING_1,
- SFX_HAITIAN_GANG_2_JACKING_2,
- SFX_HAITIAN_GANG_2_JACKING_3,
- SFX_HAITIAN_GANG_2_JACKING_4,
- SFX_HAITIAN_GANG_2_LOST_1,
- SFX_HAITIAN_GANG_2_LOST_2,
- SFX_HAITIAN_GANG_2_LOST_3,
- SFX_HAITIAN_GANG_2_LOST_4,
- SFX_HAITIAN_GANG_2_MUGGED_1,
- SFX_HAITIAN_GANG_2_MUGGED_2,
- SFX_HAITIAN_GANG_2_MUGGED_3,
- SFX_HAITIAN_GANG_2_SAVED_1,
- SFX_HAITIAN_GANG_2_TAXI_1,
-
- SFX_HAITIAN_GANG_3_BLOCKED_1,
- SFX_HAITIAN_GANG_3_BLOCKED_2,
- SFX_HAITIAN_GANG_3_BLOCKED_3,
- SFX_HAITIAN_GANG_3_BLOCKED_4,
- SFX_HAITIAN_GANG_3_BLOCKED_5,
- SFX_HAITIAN_GANG_3_BLOCKED_6,
- SFX_HAITIAN_GANG_3_BLOCKED_7,
- SFX_HAITIAN_GANG_3_BLOCKED_8,
- SFX_HAITIAN_GANG_3_BLOCKED_9,
- SFX_HAITIAN_GANG_3_BUMP_1,
- SFX_HAITIAN_GANG_3_BUMP_2,
- SFX_HAITIAN_GANG_3_BUMP_3,
- SFX_HAITIAN_GANG_3_BUMP_4,
- SFX_HAITIAN_GANG_3_BUMP_5,
- SFX_HAITIAN_GANG_3_BUMP_6,
- SFX_HAITIAN_GANG_3_BUMP_7,
- SFX_HAITIAN_GANG_3_BUMP_8,
- SFX_HAITIAN_GANG_3_BUMP_9,
- SFX_HAITIAN_GANG_3_BUMP_10,
- SFX_HAITIAN_GANG_3_BUMP_11,
- SFX_HAITIAN_GANG_3_BUMP_12,
- SFX_HAITIAN_GANG_3_CAR_CRASH_1,
- SFX_HAITIAN_GANG_3_CAR_CRASH_2,
- SFX_HAITIAN_GANG_3_CAR_CRASH_3,
- SFX_HAITIAN_GANG_3_CAR_CRASH_4,
- SFX_HAITIAN_GANG_3_CAR_CRASH_5,
- SFX_HAITIAN_GANG_3_CAR_CRASH_6,
- SFX_HAITIAN_GANG_3_CAR_CRASH_7,
- SFX_HAITIAN_GANG_3_CAR_CRASH_8,
- SFX_HAITIAN_GANG_3_CAR_CRASH_9,
- SFX_HAITIAN_GANG_3_CHAT_1,
- SFX_HAITIAN_GANG_3_CHAT_2,
- SFX_HAITIAN_GANG_3_CHAT_3,
- SFX_HAITIAN_GANG_3_CHAT_4,
- SFX_HAITIAN_GANG_3_CHAT_5,
- SFX_HAITIAN_GANG_3_CHAT_6,
- SFX_HAITIAN_GANG_3_CHAT_7,
- SFX_HAITIAN_GANG_3_CHAT_8,
- SFX_HAITIAN_GANG_3_CHAT_9,
- SFX_HAITIAN_GANG_3_CHAT_10,
- SFX_HAITIAN_GANG_3_CHAT_11,
- SFX_HAITIAN_GANG_3_CHAT_12,
- SFX_HAITIAN_GANG_3_CHAT_13,
- SFX_HAITIAN_GANG_3_CHAT_14,
- SFX_HAITIAN_GANG_3_DODGE_1,
- SFX_HAITIAN_GANG_3_DODGE_2,
- SFX_HAITIAN_GANG_3_DODGE_3,
- SFX_HAITIAN_GANG_3_DODGE_4,
- SFX_HAITIAN_GANG_3_DODGE_5,
- SFX_HAITIAN_GANG_3_DODGE_6,
- SFX_HAITIAN_GANG_3_DODGE_7,
- SFX_HAITIAN_GANG_3_DODGE_8,
- SFX_HAITIAN_GANG_3_DODGE_9,
- SFX_HAITIAN_GANG_3_DODGE_10,
- SFX_HAITIAN_GANG_3_EYEING_1,
- SFX_HAITIAN_GANG_3_EYEING_2,
- SFX_HAITIAN_GANG_3_FIGHT_1,
- SFX_HAITIAN_GANG_3_FIGHT_2,
- SFX_HAITIAN_GANG_3_FIGHT_3,
- SFX_HAITIAN_GANG_3_FIGHT_4,
- SFX_HAITIAN_GANG_3_FIGHT_5,
- SFX_HAITIAN_GANG_3_FIGHT_6,
- SFX_HAITIAN_GANG_3_FIGHT_7,
- SFX_HAITIAN_GANG_3_FIGHT_8,
- SFX_HAITIAN_GANG_3_FIGHT_9,
- SFX_HAITIAN_GANG_3_FIGHT_10,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_1,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_2,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_3,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_4,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_5,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_6,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_7,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_8,
- SFX_HAITIAN_GANG_3_GENERIC_CRASH_9,
- SFX_HAITIAN_GANG_3_GUN_COOL_1,
- SFX_HAITIAN_GANG_3_GUN_COOL_2,
- SFX_HAITIAN_GANG_3_GUN_COOL_3,
- SFX_HAITIAN_GANG_3_GUN_COOL_4,
- SFX_HAITIAN_GANG_3_GUN_COOL_5,
- SFX_HAITIAN_GANG_3_JACKED_1,
- SFX_HAITIAN_GANG_3_JACKED_2,
- SFX_HAITIAN_GANG_3_JACKED_3,
- SFX_HAITIAN_GANG_3_JACKED_4,
- SFX_HAITIAN_GANG_3_JACKED_5,
- SFX_HAITIAN_GANG_3_JACKED_6,
- SFX_HAITIAN_GANG_3_JACKING_1,
- SFX_HAITIAN_GANG_3_JACKING_2,
- SFX_HAITIAN_GANG_3_JACKING_3,
- SFX_HAITIAN_GANG_3_JACKING_4,
- SFX_HAITIAN_GANG_3_LOST_1,
- SFX_HAITIAN_GANG_3_LOST_2,
- SFX_HAITIAN_GANG_3_LOST_3,
- SFX_HAITIAN_GANG_3_LOST_4,
- SFX_HAITIAN_GANG_3_MUGGED_1,
- SFX_HAITIAN_GANG_3_MUGGED_2,
- SFX_HAITIAN_GANG_3_MUGGED_3,
- SFX_HAITIAN_GANG_3_SAVED_1,
- SFX_HAITIAN_GANG_3_TAXI_1,
-
- SFX_GENERIC_FEMALE_FIRE_1,
- SFX_GENERIC_FEMALE_FIRE_2,
- SFX_GENERIC_FEMALE_FIRE_3,
- SFX_GENERIC_FEMALE_FIRE_4,
- SFX_GENERIC_FEMALE_FIRE_5,
- SFX_GENERIC_FEMALE_FIRE_6,
- SFX_GENERIC_FEMALE_FIRE_7,
- SFX_GENERIC_FEMALE_FIRE_8,
- SFX_GENERIC_FEMALE_FIRE_9,
- SFX_GENERIC_FEMALE_FIRE_10,
- SFX_GENERIC_FEMALE_FIRE_11,
- SFX_GENERIC_FEMALE_FIRE_12,
- SFX_GENERIC_FEMALE_FIRE_13,
- SFX_GENERIC_FEMALE_FIRE_14,
- SFX_GENERIC_FEMALE_FIRE_15,
- SFX_GENERIC_FEMALE_FIRE_16,
- SFX_GENERIC_FEMALE_FIRE_17,
- SFX_GENERIC_FEMALE_DEATH_1,
- SFX_GENERIC_FEMALE_DEATH_2,
- SFX_GENERIC_FEMALE_DEATH_3,
- SFX_GENERIC_FEMALE_DEATH_4,
- SFX_GENERIC_FEMALE_DEATH_5,
- SFX_GENERIC_FEMALE_DEATH_6,
- SFX_GENERIC_FEMALE_DEATH_7,
- SFX_GENERIC_FEMALE_DEATH_8,
- SFX_GENERIC_FEMALE_DEATH_9,
- SFX_GENERIC_FEMALE_DEATH_10,
- SFX_GENERIC_FEMALE_DEATH_11,
- SFX_GENERIC_FEMALE_DEATH_12,
- SFX_GENERIC_FEMALE_DEATH_13,
- SFX_GENERIC_FEMALE_DEATH_14,
- SFX_GENERIC_FEMALE_DEATH_15,
- SFX_GENERIC_FEMALE_DEATH_16,
- SFX_GENERIC_FEMALE_DEATH_17,
- SFX_GENERIC_FEMALE_DEATH_18,
- SFX_GENERIC_FEMALE_DEATH_19,
- SFX_GENERIC_FEMALE_DEATH_20,
- SFX_GENERIC_FEMALE_DEATH_21,
- SFX_GENERIC_FEMALE_DEATH_22,
- SFX_GENERIC_FEMALE_GRUNT_1,
- SFX_GENERIC_FEMALE_GRUNT_2,
- SFX_GENERIC_FEMALE_GRUNT_3,
- SFX_GENERIC_FEMALE_GRUNT_4,
- SFX_GENERIC_FEMALE_GRUNT_5,
- SFX_GENERIC_FEMALE_GRUNT_6,
- SFX_GENERIC_FEMALE_GRUNT_7,
- SFX_GENERIC_FEMALE_GRUNT_8,
- SFX_GENERIC_FEMALE_GRUNT_9,
- SFX_GENERIC_FEMALE_GRUNT_10,
- SFX_GENERIC_FEMALE_GRUNT_11,
- SFX_GENERIC_FEMALE_GRUNT_12,
- SFX_GENERIC_FEMALE_GRUNT_13,
- SFX_GENERIC_FEMALE_GRUNT_14,
- SFX_GENERIC_FEMALE_GRUNT_15,
- SFX_GENERIC_FEMALE_GRUNT_16,
- SFX_GENERIC_FEMALE_GRUNT_17,
- SFX_GENERIC_FEMALE_GRUNT_18,
- SFX_GENERIC_FEMALE_GRUNT_19,
- SFX_GENERIC_FEMALE_GRUNT_20,
- SFX_GENERIC_FEMALE_GRUNT_21,
- SFX_GENERIC_FEMALE_GRUNT_22,
- SFX_GENERIC_FEMALE_GRUNT_23,
- SFX_GENERIC_FEMALE_GRUNT_24,
- SFX_GENERIC_FEMALE_GRUNT_25,
- SFX_GENERIC_FEMALE_GRUNT_26,
- SFX_GENERIC_FEMALE_GRUNT_27,
- SFX_GENERIC_FEMALE_GRUNT_28,
- SFX_GENERIC_FEMALE_GRUNT_29,
- SFX_GENERIC_FEMALE_GRUNT_30,
- SFX_GENERIC_FEMALE_GRUNT_31,
- SFX_GENERIC_FEMALE_GRUNT_32,
- SFX_GENERIC_FEMALE_GRUNT_33,
- SFX_GENERIC_FEMALE_PANIC_1,
- SFX_GENERIC_FEMALE_PANIC_2,
- SFX_GENERIC_FEMALE_PANIC_3,
- SFX_GENERIC_FEMALE_PANIC_4,
- SFX_GENERIC_FEMALE_PANIC_5,
- SFX_GENERIC_FEMALE_PANIC_6,
- SFX_GENERIC_FEMALE_PANIC_7,
- SFX_GENERIC_FEMALE_PANIC_8,
- SFX_GENERIC_FEMALE_PANIC_9,
- SFX_GENERIC_FEMALE_PANIC_10,
- SFX_GENERIC_FEMALE_PANIC_11,
- SFX_GENERIC_FEMALE_PANIC_12,
- SFX_GENERIC_FEMALE_PANIC_13,
- SFX_GENERIC_FEMALE_PANIC_14,
- SFX_GENERIC_FEMALE_PANIC_15,
- SFX_GENERIC_FEMALE_PANIC_16,
- SFX_GENERIC_FEMALE_PANIC_17,
- SFX_GENERIC_FEMALE_PANIC_18,
- SFX_GENERIC_FEMALE_PANIC_19,
- SFX_GENERIC_FEMALE_PANIC_20,
- SFX_GENERIC_FEMALE_PANIC_21,
- SFX_GENERIC_FEMALE_PANIC_22,
- SFX_GENERIC_FEMALE_PANIC_23,
- SFX_GENERIC_FEMALE_PANIC_24,
- SFX_GENERIC_FEMALE_PANIC_25,
- SFX_GENERIC_FEMALE_PANIC_26,
- SFX_GENERIC_FEMALE_PANIC_27,
-
- SFX_GENERIC_MALE_FIRE_1,
- SFX_GENERIC_MALE_FIRE_2,
- SFX_GENERIC_MALE_FIRE_3,
- SFX_GENERIC_MALE_FIRE_4,
- SFX_GENERIC_MALE_FIRE_5,
- SFX_GENERIC_MALE_FIRE_6,
- SFX_GENERIC_MALE_FIRE_7,
- SFX_GENERIC_MALE_FIRE_8,
- SFX_GENERIC_MALE_FIRE_9,
- SFX_GENERIC_MALE_FIRE_10,
- SFX_GENERIC_MALE_FIRE_11,
- SFX_GENERIC_MALE_FIRE_12,
- SFX_GENERIC_MALE_FIRE_13,
- SFX_GENERIC_MALE_FIRE_14,
- SFX_GENERIC_MALE_FIRE_15,
- SFX_GENERIC_MALE_FIRE_16,
- SFX_GENERIC_MALE_FIRE_17,
- SFX_GENERIC_MALE_FIRE_18,
- SFX_GENERIC_MALE_FIRE_19,
- SFX_GENERIC_MALE_FIRE_20,
- SFX_GENERIC_MALE_FIRE_21,
- SFX_GENERIC_MALE_FIRE_22,
- SFX_GENERIC_MALE_FIRE_23,
- SFX_GENERIC_MALE_FIRE_24,
- SFX_GENERIC_MALE_FIRE_25,
- SFX_GENERIC_MALE_FIRE_26,
- SFX_GENERIC_MALE_FIRE_27,
- SFX_GENERIC_MALE_FIRE_28,
- SFX_GENERIC_MALE_FIRE_29,
- SFX_GENERIC_MALE_FIRE_30,
- SFX_GENERIC_MALE_FIRE_31,
- SFX_GENERIC_MALE_FIRE_32,
- SFX_GENERIC_MALE_DEATH_1,
- SFX_GENERIC_MALE_DEATH_2,
- SFX_GENERIC_MALE_DEATH_3,
- SFX_GENERIC_MALE_DEATH_4,
- SFX_GENERIC_MALE_DEATH_5,
- SFX_GENERIC_MALE_DEATH_6,
- SFX_GENERIC_MALE_DEATH_7,
- SFX_GENERIC_MALE_DEATH_8,
- SFX_GENERIC_MALE_DEATH_9,
- SFX_GENERIC_MALE_DEATH_10,
- SFX_GENERIC_MALE_DEATH_11,
- SFX_GENERIC_MALE_DEATH_12,
- SFX_GENERIC_MALE_DEATH_13,
- SFX_GENERIC_MALE_DEATH_14,
- SFX_GENERIC_MALE_DEATH_15,
- SFX_GENERIC_MALE_DEATH_16,
- SFX_GENERIC_MALE_DEATH_17,
- SFX_GENERIC_MALE_DEATH_18,
- SFX_GENERIC_MALE_DEATH_19,
- SFX_GENERIC_MALE_DEATH_20,
- SFX_GENERIC_MALE_DEATH_21,
- SFX_GENERIC_MALE_DEATH_22,
- SFX_GENERIC_MALE_DEATH_23,
- SFX_GENERIC_MALE_DEATH_24,
- SFX_GENERIC_MALE_DEATH_25,
- SFX_GENERIC_MALE_DEATH_26,
- SFX_GENERIC_MALE_DEATH_27,
- SFX_GENERIC_MALE_DEATH_28,
- SFX_GENERIC_MALE_DEATH_29,
- SFX_GENERIC_MALE_DEATH_30,
- SFX_GENERIC_MALE_DEATH_31,
- SFX_GENERIC_MALE_DEATH_32,
- SFX_GENERIC_MALE_DEATH_33,
- SFX_GENERIC_MALE_DEATH_34,
- SFX_GENERIC_MALE_DEATH_35,
- SFX_GENERIC_MALE_DEATH_36,
- SFX_GENERIC_MALE_DEATH_37,
- SFX_GENERIC_MALE_DEATH_38,
- SFX_GENERIC_MALE_DEATH_39,
- SFX_GENERIC_MALE_DEATH_40,
- SFX_GENERIC_MALE_DEATH_41,
- SFX_GENERIC_MALE_GRUNT_1,
- SFX_GENERIC_MALE_GRUNT_2,
- SFX_GENERIC_MALE_GRUNT_3,
- SFX_GENERIC_MALE_GRUNT_4,
- SFX_GENERIC_MALE_GRUNT_5,
- SFX_GENERIC_MALE_GRUNT_6,
- SFX_GENERIC_MALE_GRUNT_7,
- SFX_GENERIC_MALE_GRUNT_8,
- SFX_GENERIC_MALE_GRUNT_9,
- SFX_GENERIC_MALE_GRUNT_10,
- SFX_GENERIC_MALE_GRUNT_11,
- SFX_GENERIC_MALE_GRUNT_12,
- SFX_GENERIC_MALE_GRUNT_13,
- SFX_GENERIC_MALE_GRUNT_14,
- SFX_GENERIC_MALE_GRUNT_15,
- SFX_GENERIC_MALE_GRUNT_16,
- SFX_GENERIC_MALE_GRUNT_17,
- SFX_GENERIC_MALE_GRUNT_18,
- SFX_GENERIC_MALE_GRUNT_19,
- SFX_GENERIC_MALE_GRUNT_20,
- SFX_GENERIC_MALE_GRUNT_21,
- SFX_GENERIC_MALE_GRUNT_22,
- SFX_GENERIC_MALE_GRUNT_23,
- SFX_GENERIC_MALE_GRUNT_24,
- SFX_GENERIC_MALE_GRUNT_25,
- SFX_GENERIC_MALE_GRUNT_26,
- SFX_GENERIC_MALE_GRUNT_27,
- SFX_GENERIC_MALE_GRUNT_28,
- SFX_GENERIC_MALE_GRUNT_29,
- SFX_GENERIC_MALE_GRUNT_30,
- SFX_GENERIC_MALE_GRUNT_31,
- SFX_GENERIC_MALE_GRUNT_32,
- SFX_GENERIC_MALE_GRUNT_33,
- SFX_GENERIC_MALE_GRUNT_34,
- SFX_GENERIC_MALE_GRUNT_35,
- SFX_GENERIC_MALE_GRUNT_36,
- SFX_GENERIC_MALE_GRUNT_37,
- SFX_GENERIC_MALE_GRUNT_38,
- SFX_GENERIC_MALE_GRUNT_39,
- SFX_GENERIC_MALE_GRUNT_40,
- SFX_GENERIC_MALE_GRUNT_41,
- SFX_GENERIC_MALE_PANIC_1,
- SFX_GENERIC_MALE_PANIC_2,
- SFX_GENERIC_MALE_PANIC_3,
- SFX_GENERIC_MALE_PANIC_4,
- SFX_GENERIC_MALE_PANIC_5,
- SFX_GENERIC_MALE_PANIC_6,
- SFX_GENERIC_MALE_PANIC_7,
- SFX_GENERIC_MALE_PANIC_8,
- SFX_GENERIC_MALE_PANIC_9,
- SFX_GENERIC_MALE_PANIC_10,
- SFX_GENERIC_MALE_PANIC_11,
- SFX_GENERIC_MALE_PANIC_12,
- SFX_GENERIC_MALE_PANIC_13,
- SFX_GENERIC_MALE_PANIC_14,
- SFX_GENERIC_MALE_PANIC_15,
- SFX_GENERIC_MALE_PANIC_16,
- SFX_GENERIC_MALE_PANIC_17,
- SFX_GENERIC_MALE_PANIC_18,
- SFX_GENERIC_MALE_PANIC_19,
- SFX_GENERIC_MALE_PANIC_20,
- SFX_GENERIC_MALE_PANIC_21,
- SFX_GENERIC_MALE_PANIC_22,
- SFX_GENERIC_MALE_PANIC_23,
- SFX_GENERIC_MALE_PANIC_24,
- SFX_GENERIC_MALE_PANIC_25,
- SFX_GENERIC_MALE_PANIC_26,
- SFX_GENERIC_MALE_PANIC_27,
- SFX_GENERIC_MALE_PANIC_28,
- SFX_GENERIC_MALE_PANIC_29,
- SFX_GENERIC_MALE_PANIC_30,
- SFX_GENERIC_MALE_PANIC_31,
- SFX_GENERIC_MALE_PANIC_32,
- SFX_GENERIC_MALE_PANIC_33,
- SFX_GENERIC_MALE_PANIC_34,
- SFX_GENERIC_MALE_PANIC_35,
-
- SFX_MEDIC_VOICE_1_FIGHT_1,
- SFX_MEDIC_VOICE_1_FIGHT_2,
- SFX_MEDIC_VOICE_1_FIGHT_3,
- SFX_MEDIC_VOICE_1_FIGHT_4,
- SFX_MEDIC_VOICE_1_FIGHT_5,
- SFX_MEDIC_VOICE_1_FIGHT_6,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_1,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_2,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_3,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_4,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_5,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_6,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_7,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_8,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_9,
- SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_10,
- SFX_MEDIC_VOICE_1_AT_VICTIM_1,
- SFX_MEDIC_VOICE_1_AT_VICTIM_2,
- SFX_MEDIC_VOICE_1_AT_VICTIM_3,
- SFX_MEDIC_VOICE_1_AT_VICTIM_4,
- SFX_MEDIC_VOICE_1_AT_VICTIM_5,
- SFX_MEDIC_VOICE_1_AT_VICTIM_6,
- SFX_MEDIC_VOICE_1_AT_VICTIM_7,
- SFX_MEDIC_VOICE_1_AT_VICTIM_8,
- SFX_MEDIC_VOICE_1_AT_VICTIM_9,
- SFX_MEDIC_VOICE_1_AT_VICTIM_10,
- SFX_MEDIC_VOICE_1_AT_VICTIM_11,
- SFX_MEDIC_VOICE_1_AT_VICTIM_12,
- SFX_MEDIC_VOICE_1_AT_VICTIM_13,
- SFX_MEDIC_VOICE_1_AT_VICTIM_14,
- SFX_MEDIC_VOICE_1_AT_VICTIM_15,
- SFX_MEDIC_VOICE_1_AT_VICTIM_16,
- SFX_MEDIC_VOICE_1_AT_VICTIM_17,
-
- SFX_MEDIC_VOICE_2_FIGHT_1,
- SFX_MEDIC_VOICE_2_FIGHT_2,
- SFX_MEDIC_VOICE_2_FIGHT_3,
- SFX_MEDIC_VOICE_2_FIGHT_4,
- SFX_MEDIC_VOICE_2_FIGHT_5,
- SFX_MEDIC_VOICE_2_FIGHT_6,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_1,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_2,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_3,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_4,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_5,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_6,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_7,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_8,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_9,
- SFX_MEDIC_VOICE_2_GET_OUT_VAN_CHAT_10,
- SFX_MEDIC_VOICE_2_AT_VICTIM_1,
- SFX_MEDIC_VOICE_2_AT_VICTIM_2,
- SFX_MEDIC_VOICE_2_AT_VICTIM_3,
- SFX_MEDIC_VOICE_2_AT_VICTIM_4,
- SFX_MEDIC_VOICE_2_AT_VICTIM_5,
- SFX_MEDIC_VOICE_2_AT_VICTIM_6,
- SFX_MEDIC_VOICE_2_AT_VICTIM_7,
- SFX_MEDIC_VOICE_2_AT_VICTIM_8,
- SFX_MEDIC_VOICE_2_AT_VICTIM_9,
- SFX_MEDIC_VOICE_2_AT_VICTIM_10,
- SFX_MEDIC_VOICE_2_AT_VICTIM_11,
- SFX_MEDIC_VOICE_2_AT_VICTIM_12,
- SFX_MEDIC_VOICE_2_AT_VICTIM_13,
- SFX_MEDIC_VOICE_2_AT_VICTIM_14,
- SFX_MEDIC_VOICE_2_AT_VICTIM_15,
- SFX_MEDIC_VOICE_2_AT_VICTIM_16,
- SFX_MEDIC_VOICE_2_AT_VICTIM_17,
-
- SFX_FBI_VOICE_1_GUNAIMEDAT3_1,
- SFX_FBI_VOICE_1_GUNAIMEDAT3_2,
- SFX_FBI_VOICE_1_GUNAIMEDAT3_3,
- SFX_FBI_VOICE_1_GUNAIMEDAT3_4,
- SFX_FBI_VOICE_1_CAR_CRASH_1,
- SFX_FBI_VOICE_1_CAR_CRASH_2,
- SFX_FBI_VOICE_1_CAR_CRASH_3,
- SFX_FBI_VOICE_1_CAR_CRASH_4,
- SFX_FBI_VOICE_1_GUNAIMEDAT2_1,
- SFX_FBI_VOICE_1_COP_MANYCOPSAROUND_1,
- SFX_FBI_VOICE_1_COP_MANYCOPSAROUND_2,
- SFX_FBI_VOICE_1_COP_MANYCOPSAROUND_3,
- SFX_FBI_VOICE_1_COP_TARGETING_1,
- SFX_FBI_VOICE_1_COP_TARGETING_2,
- SFX_FBI_VOICE_1_COP_TARGETING_3,
- SFX_FBI_VOICE_1_COP_TARGETING_4,
- SFX_FBI_VOICE_1_COP_TARGETING_5,
- SFX_FBI_VOICE_1_COP_TARGETING_6,
-
- SFX_FBI_VOICE_2_GUNAIMEDAT3_1,
- SFX_FBI_VOICE_2_GUNAIMEDAT3_2,
- SFX_FBI_VOICE_2_GUNAIMEDAT3_3,
- SFX_FBI_VOICE_2_GUNAIMEDAT3_4,
- SFX_FBI_VOICE_2_CAR_CRASH_1,
- SFX_FBI_VOICE_2_CAR_CRASH_2,
- SFX_FBI_VOICE_2_CAR_CRASH_3,
- SFX_FBI_VOICE_2_CAR_CRASH_4,
- SFX_FBI_VOICE_2_GUNAIMEDAT2_1,
- SFX_FBI_VOICE_2_COP_MANYCOPSAROUND_1,
- SFX_FBI_VOICE_2_COP_MANYCOPSAROUND_2,
- SFX_FBI_VOICE_2_COP_MANYCOPSAROUND_3,
- SFX_FBI_VOICE_2_COP_TARGETING_1,
- SFX_FBI_VOICE_2_COP_TARGETING_2,
- SFX_FBI_VOICE_2_COP_TARGETING_3,
- SFX_FBI_VOICE_2_COP_TARGETING_4,
- SFX_FBI_VOICE_2_COP_TARGETING_5,
- SFX_FBI_VOICE_2_COP_TARGETING_6,
-
- SFX_FBI_VOICE_3_GUNAIMEDAT3_1,
- SFX_FBI_VOICE_3_GUNAIMEDAT3_2,
- SFX_FBI_VOICE_3_GUNAIMEDAT3_3,
- SFX_FBI_VOICE_3_GUNAIMEDAT3_4,
- SFX_FBI_VOICE_3_CAR_CRASH_1,
- SFX_FBI_VOICE_3_CAR_CRASH_2,
- SFX_FBI_VOICE_3_CAR_CRASH_3,
- SFX_FBI_VOICE_3_CAR_CRASH_4,
- SFX_FBI_VOICE_3_GUNAIMEDAT2_1,
- SFX_FBI_VOICE_3_COP_MANYCOPSAROUND_1,
- SFX_FBI_VOICE_3_COP_MANYCOPSAROUND_2,
- SFX_FBI_VOICE_3_COP_MANYCOPSAROUND_3,
- SFX_FBI_VOICE_3_COP_TARGETING_1,
- SFX_FBI_VOICE_3_COP_TARGETING_2,
- SFX_FBI_VOICE_3_COP_TARGETING_3,
- SFX_FBI_VOICE_3_COP_TARGETING_4,
- SFX_FBI_VOICE_3_COP_TARGETING_5,
- SFX_FBI_VOICE_3_COP_TARGETING_6,
-
- SFX_SWAT_VOICE_1_DODGE_1,
- SFX_SWAT_VOICE_1_DODGE_2,
- SFX_SWAT_VOICE_1_DODGE_3,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_1,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_2,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_3,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_4,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_5,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_6,
- SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_7,
- SFX_SWAT_VOICE_1_COP_TARGETING_1,
- SFX_SWAT_VOICE_1_COP_TARGETING_2,
- SFX_SWAT_VOICE_1_COP_TARGETING_3,
- SFX_SWAT_VOICE_1_COP_TARGETING_4,
-
- SFX_SWAT_VOICE_2_DODGE_1,
- SFX_SWAT_VOICE_2_DODGE_2,
- SFX_SWAT_VOICE_2_DODGE_3,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_1,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_2,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_3,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_4,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_5,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_6,
- SFX_SWAT_VOICE_2_COP_HELIPILOTPHRASE_7,
- SFX_SWAT_VOICE_2_COP_TARGETING_1,
- SFX_SWAT_VOICE_2_COP_TARGETING_2,
- SFX_SWAT_VOICE_2_COP_TARGETING_3,
- SFX_SWAT_VOICE_2_COP_TARGETING_4,
-
- SFX_SWAT_VOICE_3_DODGE_1,
- SFX_SWAT_VOICE_3_DODGE_2,
- SFX_SWAT_VOICE_3_DODGE_3,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_1,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_2,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_3,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_4,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_5,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_6,
- SFX_SWAT_VOICE_3_COP_HELIPILOTPHRASE_7,
- SFX_SWAT_VOICE_3_COP_TARGETING_1,
- SFX_SWAT_VOICE_3_COP_TARGETING_2,
- SFX_SWAT_VOICE_3_COP_TARGETING_3,
- SFX_SWAT_VOICE_3_COP_TARGETING_4,
-
-
- SFX_WFYG1_BLOCKED_1,
- SFX_WFYG1_BLOCKED_2,
- SFX_WFYG1_BLOCKED_3,
- SFX_WFYG1_BLOCKED_4,
- SFX_WFYG1_BLOCKED_5,
- SFX_WFYG1_BLOCKED_6,
- SFX_WFYG1_BLOCKED_7,
- SFX_WFYG1_BUMP_1,
- SFX_WFYG1_BUMP_2,
- SFX_WFYG1_BUMP_3,
- SFX_WFYG1_BUMP_4,
- SFX_WFYG1_BUMP_5,
- SFX_WFYG1_BUMP_6,
- SFX_WFYG1_BUMP_7,
- SFX_WFYG1_BUMP_8,
- SFX_WFYG1_BUMP_9,
- SFX_WFYG1_BUMP_10,
- SFX_WFYG1_BUMP_11,
- SFX_WFYG1_CAR_CRASH_1,
- SFX_WFYG1_CAR_CRASH_2,
- SFX_WFYG1_CAR_CRASH_3,
- SFX_WFYG1_CAR_CRASH_4,
- SFX_WFYG1_CAR_CRASH_5,
- SFX_WFYG1_CAR_CRASH_6,
- SFX_WFYG1_CAR_CRASH_7,
- SFX_WFYG1_CAR_CRASH_8,
- SFX_WFYG1_CAR_CRASH_9,
- SFX_WFYG1_CHAT_1,
- SFX_WFYG1_CHAT_2,
- SFX_WFYG1_CHAT_3,
- SFX_WFYG1_CHAT_4,
- SFX_WFYG1_CHAT_5,
- SFX_WFYG1_CHAT_6,
- SFX_WFYG1_CHAT_7,
- SFX_WFYG1_CHAT_8,
- SFX_WFYG1_CHAT_9,
- SFX_WFYG1_CHAT_10,
- SFX_WFYG1_DODGE_1,
- SFX_WFYG1_DODGE_2,
- SFX_WFYG1_DODGE_3,
- SFX_WFYG1_DODGE_4,
- SFX_WFYG1_DODGE_5,
- SFX_WFYG1_DODGE_6,
- SFX_WFYG1_DODGE_7,
- SFX_WFYG1_DODGE_8,
- SFX_WFYG1_DODGE_9,
- SFX_WFYG1_EYEING_1,
- SFX_WFYG1_EYEING_2,
- SFX_WFYG1_FIGHT_1,
- SFX_WFYG1_FIGHT_2,
- SFX_WFYG1_FIGHT_3,
- SFX_WFYG1_FIGHT_4,
- SFX_WFYG1_GENERIC_CRASH_1,
- SFX_WFYG1_GENERIC_CRASH_2,
- SFX_WFYG1_GENERIC_CRASH_3,
- SFX_WFYG1_GENERIC_CRASH_4,
- SFX_WFYG1_GENERIC_CRASH_5,
- SFX_WFYG1_GENERIC_CRASH_6,
- SFX_WFYG1_GENERIC_CRASH_7,
- SFX_WFYG1_GUN_COOL_1,
- SFX_WFYG1_GUN_COOL_2,
- SFX_WFYG1_GUN_COOL_3,
- SFX_WFYG1_GUN_COOL_4,
- SFX_WFYG1_GUN_COOL_5,
- SFX_WFYG1_GUN_COOL_6,
- SFX_WFYG1_JACKED_1,
- SFX_WFYG1_JACKED_2,
- SFX_WFYG1_JACKED_3,
- SFX_WFYG1_JACKED_4,
- SFX_WFYG1_JACKED_5,
- SFX_WFYG1_LOST_1,
- SFX_WFYG1_LOST_2,
- SFX_WFYG1_LOST_3,
- SFX_WFYG1_MUGGED_1,
- SFX_WFYG1_MUGGED_2,
- SFX_WFYG1_MUGGING_1,
- SFX_WFYG1_MUGGING_2,
- SFX_WFYG1_RUN_1,
- SFX_WFYG1_RUN_2,
- SFX_WFYG1_SAVED_1,
- SFX_WFYG1_SHOCKED_1,
- SFX_WFYG1_TAXI_1,
-
- SFX_WFYG2_BLOCKED_1,
- SFX_WFYG2_BLOCKED_2,
- SFX_WFYG2_BLOCKED_3,
- SFX_WFYG2_BLOCKED_4,
- SFX_WFYG2_BLOCKED_5,
- SFX_WFYG2_BUMP_1,
- SFX_WFYG2_BUMP_2,
- SFX_WFYG2_BUMP_3,
- SFX_WFYG2_BUMP_4,
- SFX_WFYG2_BUMP_5,
- SFX_WFYG2_BUMP_6,
- SFX_WFYG2_BUMP_7,
- SFX_WFYG2_BUMP_8,
- SFX_WFYG2_BUMP_9,
- SFX_WFYG2_BUMP_10,
- SFX_WFYG2_BUMP_11,
- SFX_WFYG2_CAR_CRASH_1,
- SFX_WFYG2_CAR_CRASH_2,
- SFX_WFYG2_CAR_CRASH_3,
- SFX_WFYG2_CAR_CRASH_4,
- SFX_WFYG2_CAR_CRASH_5,
- SFX_WFYG2_CAR_CRASH_6,
- SFX_WFYG2_CAR_CRASH_7,
- SFX_WFYG2_CAR_CRASH_8,
- SFX_WFYG2_CAR_CRASH_9,
- SFX_WFYG2_CHAT_1,
- SFX_WFYG2_CHAT_2,
- SFX_WFYG2_CHAT_3,
- SFX_WFYG2_CHAT_4,
- SFX_WFYG2_CHAT_5,
- SFX_WFYG2_CHAT_6,
- SFX_WFYG2_CHAT_7,
- SFX_WFYG2_CHAT_8,
- SFX_WFYG2_CHAT_9,
- SFX_WFYG2_DODGE_1,
- SFX_WFYG2_DODGE_2,
- SFX_WFYG2_DODGE_3,
- SFX_WFYG2_DODGE_4,
- SFX_WFYG2_DODGE_5,
- SFX_WFYG2_DODGE_6,
- SFX_WFYG2_DODGE_7,
- SFX_WFYG2_DODGE_8,
- SFX_WFYG2_EYEING_1,
- SFX_WFYG2_EYEING_2,
- SFX_WFYG2_EYEING_3,
- SFX_WFYG2_EYEING_4,
- SFX_WFYG2_FIGHT_1,
- SFX_WFYG2_FIGHT_2,
- SFX_WFYG2_FIGHT_3,
- SFX_WFYG2_FIGHT_4,
- SFX_WFYG2_FIGHT_5,
- SFX_WFYG2_GENERIC_CRASH_1,
- SFX_WFYG2_GENERIC_CRASH_2,
- SFX_WFYG2_GENERIC_CRASH_3,
- SFX_WFYG2_GENERIC_CRASH_4,
- SFX_WFYG2_GENERIC_CRASH_5,
- SFX_WFYG2_GENERIC_CRASH_6,
- SFX_WFYG2_GENERIC_CRASH_7,
- SFX_WFYG2_GUN_COOL_1,
- SFX_WFYG2_GUN_COOL_2,
- SFX_WFYG2_GUN_COOL_3,
- SFX_WFYG2_JACKED_1,
- SFX_WFYG2_JACKED_2,
- SFX_WFYG2_JACKED_3,
- SFX_WFYG2_JACKED_4,
- SFX_WFYG2_JACKED_5,
- SFX_WFYG2_LOST_1,
- SFX_WFYG2_MUGGED_1,
- SFX_WFYG2_MUGGED_2,
- SFX_WFYG2_SHOCKED_1,
- SFX_WFYG2_TAXI_1,
- SFX_WFYG2_TAXI_2, // unused
-
- SFX_HMOCA_BLOCKED_1,
- SFX_HMOCA_BLOCKED_2,
- SFX_HMOCA_BLOCKED_3,
- SFX_HMOCA_BLOCKED_4,
- SFX_HMOCA_BLOCKED_5,
- SFX_HMOCA_BLOCKED_6,
- SFX_HMOCA_BLOCKED_7,
- SFX_HMOCA_BLOCKED_8,
- SFX_HMOCA_CAR_CRASH_1,
- SFX_HMOCA_CAR_CRASH_2,
- SFX_HMOCA_CAR_CRASH_3,
- SFX_HMOCA_CAR_CRASH_4,
- SFX_HMOCA_CAR_CRASH_5,
- SFX_HMOCA_CAR_CRASH_6,
- SFX_HMOCA_CAR_CRASH_7,
- SFX_HMOCA_CAR_CRASH_8,
- SFX_HMOCA_CHAT_1,
- SFX_HMOCA_CHAT_2,
- SFX_HMOCA_CHAT_3,
- SFX_HMOCA_CHAT_4,
- SFX_HMOCA_CHAT_5,
- SFX_HMOCA_CHAT_6,
- SFX_HMOCA_CHAT_7,
- SFX_HMOCA_CHAT_8,
- SFX_HMOCA_CHAT_9,
- SFX_HMOCA_CHAT_10,
- SFX_HMOCA_EYEING_1,
- SFX_HMOCA_EYEING_2,
- SFX_HMOCA_GUN_PANIC_1,
- SFX_HMOCA_GUN_PANIC_2,
- SFX_HMOCA_GUN_PANIC_3,
- SFX_HMOCA_GUN_PANIC_4,
- SFX_HMOCA_GUN_PANIC_5,
- SFX_HMOCA_JACKED_1,
- SFX_HMOCA_JACKED_2,
- SFX_HMOCA_JACKED_3,
- SFX_HMOCA_JACKED_4,
- SFX_HMOCA_JACKED_5,
- SFX_HMOCA_JACKED_6,
- SFX_HMOCA_JACKED_7,
- SFX_HMOCA_JACKED_8,
- SFX_HMOCA_JACKED_9,
- SFX_HMOCA_JACKED_10,
- SFX_HMOCA_JACKING_1,
- SFX_HMOCA_JACKING_2,
- SFX_HMOCA_JACKING_3,
- SFX_HMOCA_JACKING_4,
- SFX_HMOCA_JACKING_5,
- SFX_HMOCA_JACKING_6,
- SFX_HMOCA_JACKING_7,
- SFX_HMOCA_JACKING_8,
- SFX_HMOCA_JACKING_9,
- SFX_HMOCA_JACKING_10,
- SFX_HMOCA_JACKING_11,
- SFX_HMOCA_MUGGED_1,
- SFX_HMOCA_MUGGED_2,
- SFX_HMOCA_MUGGED_3,
- SFX_HMOCA_MUGGED_4,
- SFX_HMOCA_MUGGED_5,
- SFX_HMOCA_MUGGED_6,
- SFX_HMOCA_MUGGED_7,
- SFX_HMOCA_RUN_1,
- SFX_HMOCA_RUN_2,
- SFX_HMOCA_TAXI_1,
-
- SFX_WFOSH_BUMP_1,
- SFX_WFOSH_BUMP_2,
- SFX_WFOSH_BUMP_3,
- SFX_WFOSH_BUMP_4,
- SFX_WFOSH_BUMP_5,
- SFX_WFOSH_BUMP_6,
- SFX_WFOSH_BUMP_7,
- SFX_WFOSH_BUMP_8,
- SFX_WFOSH_BUMP_9,
- SFX_WFOSH_BUMP_10,
- SFX_WFOSH_CHAT_1,
- SFX_WFOSH_CHAT_2,
- SFX_WFOSH_CHAT_3,
- SFX_WFOSH_CHAT_4,
- SFX_WFOSH_CHAT_5,
- SFX_WFOSH_CHAT_6,
- SFX_WFOSH_CHAT_7,
- SFX_WFOSH_CHAT_8,
- SFX_WFOSH_CHAT_9,
- SFX_WFOSH_DODGE_1,
- SFX_WFOSH_DODGE_2,
- SFX_WFOSH_DODGE_3,
- SFX_WFOSH_DODGE_4,
- SFX_WFOSH_DODGE_5,
- SFX_WFOSH_DODGE_6,
- SFX_WFOSH_DODGE_7,
- SFX_WFOSH_DODGE_8,
- SFX_WFOSH_DODGE_9,
- SFX_WFOSH_DODGE_10,
- SFX_WFOSH_GUN_COOL_1,
- SFX_WFOSH_GUN_COOL_2,
- SFX_WFOSH_GUN_COOL_3,
- SFX_WFOSH_GUN_COOL_4,
- SFX_WFOSH_GUN_COOL_5,
- SFX_WFOSH_GUN_COOL_6,
- SFX_WFOSH_GUN_COOL_7,
- SFX_WFOSH_GUN_COOL_8,
- SFX_WFOSH_GUN_COOL_9,
- SFX_WFOSH_GUN_COOL_10,
- SFX_WFOSH_LOST_1,
- SFX_WFOSH_LOST_2,
- SFX_WFOSH_MUGGED_1,
- SFX_WFOSH_MUGGED_2,
- SFX_WFOSH_RUN_1,
- SFX_WFOSH_RUN_2,
- SFX_WFOSH_RUN_3,
- SFX_WFOSH_RUN_4,
- SFX_WFOSH_RUN_5,
- SFX_WFOSH_RUN_6,
- SFX_WFOSH_RUN_7,
- SFX_WFOSH_RUN_8,
- SFX_WFOSH_RUN_9,
- SFX_WFOSH_SAVED_1,
- SFX_WFOSH_SAVED_2,
- SFX_WFOSH_SAVED_3,
- SFX_WFOSH_SHOCKED_1,
- SFX_WFOSH_SHOCKED_2,
- SFX_WFOSH_SHOCKED_3,
- SFX_WFOSH_SHOCKED_4,
- SFX_WFOSH_SHOCKED_5,
- SFX_WFOSH_TAXI_1,
- SFX_WFYSK_BLOCKED_1,
- SFX_WFYSK_BLOCKED_2,
- SFX_WFYSK_BLOCKED_3,
- SFX_WFYSK_BLOCKED_4,
- SFX_WFYSK_BLOCKED_5,
- SFX_WFYSK_BLOCKED_6,
- SFX_WFYSK_BLOCKED_7,
- SFX_WFYSK_BLOCKED_8,
- SFX_WFYSK_BLOCKED_9,
- SFX_WFYSK_BLOCKED_10,
- SFX_WFYSK_BLOCKED_11,
- SFX_WFYSK_BUMP_1,
- SFX_WFYSK_BUMP_2,
- SFX_WFYSK_BUMP_3,
- SFX_WFYSK_BUMP_4,
- SFX_WFYSK_BUMP_5,
- SFX_WFYSK_BUMP_6,
- SFX_WFYSK_BUMP_7,
- SFX_WFYSK_BUMP_8,
- SFX_WFYSK_BUMP_9,
- SFX_WFYSK_BUMP_10,
- SFX_WFYSK_BUMP_11,
- SFX_WFYSK_BUMP_12,
- SFX_WFYSK_BUMP_13,
- SFX_WFYSK_BUMP_14,
- SFX_WFYSK_BUMP_15,
- SFX_WFYSK_BUMP_16,
- SFX_WFYSK_BUMP_17,
- SFX_WFYSK_BUMP_18,
- SFX_WFYSK_DODGE_1,
- SFX_WFYSK_DODGE_2,
- SFX_WFYSK_DODGE_3,
- SFX_WFYSK_DODGE_4,
- SFX_WFYSK_DODGE_5,
- SFX_WFYSK_DODGE_6,
- SFX_WFYSK_DODGE_7,
- SFX_WFYSK_DODGE_8,
- SFX_WFYSK_DODGE_9,
- SFX_WFYSK_FIGHT_1,
- SFX_WFYSK_FIGHT_2,
- SFX_WFYSK_FIGHT_3,
- SFX_WFYSK_FIGHT_4,
- SFX_WFYSK_FIGHT_5,
- SFX_WFYSK_FIGHT_6,
- SFX_WFYSK_FIGHT_7,
- SFX_WFYSK_FIGHT_8,
- SFX_WFYSK_FIGHT_9,
- SFX_WFYSK_FIGHT_10,
- SFX_WFYSK_FIGHT_11,
- SFX_WFYSK_GUN_PANIC_1,
- SFX_WFYSK_GUN_PANIC_2,
- SFX_WFYSK_GUN_PANIC_3,
- SFX_WFYSK_GUN_PANIC_4,
- SFX_WFYSK_GUN_PANIC_5,
- SFX_WFYSK_MUGGED_1,
- SFX_WFYSK_MUGGED_2,
- SFX_WFYSK_SAVED_1,
- SFX_WFYSK_SAVED_2,
- SFX_WFYSK_TAXI_1,
- SFX_WMYLG_BUMP_1,
- SFX_WMYLG_BUMP_2,
- SFX_WMYLG_BUMP_3,
- SFX_WMYLG_BUMP_4,
- SFX_WMYLG_BUMP_5,
- SFX_WMYLG_BUMP_6,
- SFX_WMYLG_BUMP_7,
- SFX_WMYLG_BUMP_8,
- SFX_WMYLG_BUMP_9,
- SFX_WMYLG_BUMP_10,
- SFX_WMYLG_CHAT_1,
- SFX_WMYLG_CHAT_2,
- SFX_WMYLG_CHAT_3,
- SFX_WMYLG_CHAT_4,
- SFX_WMYLG_CHAT_5,
- SFX_WMYLG_CHAT_6,
- SFX_WMYLG_CHAT_7,
- SFX_WMYLG_CHAT_8,
- SFX_WMYLG_CHAT_9,
- SFX_WMYLG_CHAT_10,
- SFX_WMYLG_DODGE_1,
- SFX_WMYLG_DODGE_2,
- SFX_WMYLG_DODGE_3,
- SFX_WMYLG_DODGE_4,
- SFX_WMYLG_DODGE_5,
- SFX_WMYLG_DODGE_6,
- SFX_WMYLG_DODGE_7,
- SFX_WMYLG_DODGE_8,
- SFX_WMYLG_DODGE_9,
- SFX_WMYLG_FIGHT_1,
- SFX_WMYLG_FIGHT_2,
- SFX_WMYLG_FIGHT_3,
- SFX_WMYLG_FIGHT_4,
- SFX_WMYLG_FIGHT_5,
- SFX_WMYLG_FIGHT_6,
- SFX_WMYLG_FIGHT_7,
- SFX_WMYLG_GUN_COOL_1,
- SFX_WMYLG_GUN_COOL_2,
- SFX_WMYLG_GUN_COOL_3,
- SFX_WMYLG_GUN_COOL_4,
- SFX_WMYLG_GUN_COOL_5,
- SFX_WMYLG_GUN_COOL_6,
- SFX_WMYLG_SAVED_1,
- SFX_WMYLG_TAXI_1,
-
- SFX_WMOBE_BLOCKED_1,
- SFX_WMOBE_BLOCKED_2,
- SFX_WMOBE_BLOCKED_3,
- SFX_WMOBE_BLOCKED_4,
- SFX_WMOBE_BLOCKED_5,
- SFX_WMOBE_BLOCKED_6,
- SFX_WMOBE_BUMP_1,
- SFX_WMOBE_BUMP_2,
- SFX_WMOBE_BUMP_3,
- SFX_WMOBE_BUMP_4,
- SFX_WMOBE_BUMP_5,
- SFX_WMOBE_BUMP_6,
- SFX_WMOBE_BUMP_7,
- SFX_WMOBE_BUMP_8,
- SFX_WMOBE_BUMP_9,
- SFX_WMOBE_BUMP_10,
- SFX_WMOBE_BUMP_11,
- SFX_WMOBE_BUMP_12,
- SFX_WMOBE_CAR_CRASH_1,
- SFX_WMOBE_CAR_CRASH_2,
- SFX_WMOBE_CAR_CRASH_3,
- SFX_WMOBE_CAR_CRASH_4,
- SFX_WMOBE_CAR_CRASH_5,
- SFX_WMOBE_CAR_CRASH_6,
- SFX_WMOBE_CAR_CRASH_7,
- SFX_WMOBE_CAR_CRASH_8,
- SFX_WMOBE_CHAT_1,
- SFX_WMOBE_CHAT_2,
- SFX_WMOBE_CHAT_3,
- SFX_WMOBE_CHAT_4,
- SFX_WMOBE_CHAT_5,
- SFX_WMOBE_CHAT_6,
- SFX_WMOBE_CHAT_7,
- SFX_WMOBE_CHAT_8,
- SFX_WMOBE_CHAT_9,
- SFX_WMOBE_CHAT_10,
- SFX_WMOBE_DODGE_1,
- SFX_WMOBE_DODGE_2,
- SFX_WMOBE_DODGE_3,
- SFX_WMOBE_DODGE_4,
- SFX_WMOBE_DODGE_5,
- SFX_WMOBE_DODGE_6,
- SFX_WMOBE_DODGE_7,
- SFX_WMOBE_DODGE_8,
- SFX_WMOBE_EYEING_1,
- SFX_WMOBE_EYEING_2,
- SFX_WMOBE_GENERIC_CRASH_1,
- SFX_WMOBE_GENERIC_CRASH_2,
- SFX_WMOBE_GENERIC_CRASH_3,
- SFX_WMOBE_GENERIC_CRASH_4,
- SFX_WMOBE_GENERIC_CRASH_5,
- SFX_WMOBE_GENERIC_CRASH_6,
- SFX_WMOBE_GENERIC_CRASH_7,
- SFX_WMOBE_GUN_PANIC_1,
- SFX_WMOBE_GUN_PANIC_2,
- SFX_WMOBE_GUN_PANIC_3,
- SFX_WMOBE_GUN_PANIC_4,
- SFX_WMOBE_GUN_PANIC_5,
- SFX_WMOBE_JACKED_1,
- SFX_WMOBE_JACKED_2,
- SFX_WMOBE_JACKED_3,
- SFX_WMOBE_JACKED_4,
- SFX_WMOBE_JACKED_5,
- SFX_WMOBE_JACKED_6,
- SFX_WMOBE_JACKED_7,
- SFX_WMOBE_JACKED_8,
- SFX_WMOBE_JACKING_1,
- SFX_WMOBE_JACKING_2,
- SFX_WMOBE_JACKING_3,
- SFX_WMOBE_JACKING_4,
- SFX_WMOBE_JEER_1,
- SFX_WMOBE_JEER_2,
- SFX_WMOBE_JEER_3,
- SFX_WMOBE_JEER_4,
- SFX_WMOBE_JEER_5,
- SFX_WMOBE_JEER_6,
- SFX_WMOBE_JEER_7,
- SFX_WMOBE_JEER_8,
- SFX_WMOBE_JEER_9,
- SFX_WMOBE_JEER_10,
- SFX_WMOBE_JEER_11,
- SFX_WMOBE_JEER_12,
- SFX_WMOBE_JEER_13,
- SFX_WMOBE_JEER_14,
- SFX_WMOBE_JEER_15,
- SFX_WMOBE_JEER_16,
- SFX_WMOBE_MUGGING_1,
- SFX_WMOBE_MUGGING_2,
- SFX_WMOBE_MUGGING_3,
- SFX_WMOBE_MUGGING_4,
- SFX_WMOBE_MUGGING_5,
- SFX_WMOBE_MUGGING_6,
- SFX_WMOBE_RUN_1,
- SFX_WMOBE_RUN_2,
- SFX_WMOBE_RUN_3,
- SFX_WMOBE_RUN_4,
- SFX_WMOBE_SAVED_1,
- SFX_WMOBE_SAVED_2,
- SFX_WMOBE_SHOCKED_1,
- SFX_WMOBE_SHOCKED_2,
-
-
-
- SFX_WMYBU_BLOCKED_1,
- SFX_WMYBU_BLOCKED_2,
- SFX_WMYBU_BLOCKED_3,
- SFX_WMYBU_BLOCKED_4,
- SFX_WMYBU_BLOCKED_5,
- SFX_WMYBU_BLOCKED_6,
- SFX_WMYBU_BLOCKED_7,
- SFX_WMYBU_BLOCKED_8,
- SFX_WMYBU_BLOCKED_9,
- SFX_WMYBU_BUMP_1,
- SFX_WMYBU_BUMP_2,
- SFX_WMYBU_BUMP_3,
- SFX_WMYBU_BUMP_4,
- SFX_WMYBU_BUMP_5,
- SFX_WMYBU_BUMP_6,
- SFX_WMYBU_BUMP_7,
- SFX_WMYBU_BUMP_8,
- SFX_WMYBU_BUMP_9,
- SFX_WMYBU_BUMP_10,
- SFX_WMYBU_BUMP_11,
- SFX_WMYBU_CAR_CRASH_1,
- SFX_WMYBU_CAR_CRASH_2,
- SFX_WMYBU_CAR_CRASH_3,
- SFX_WMYBU_CAR_CRASH_4,
- SFX_WMYBU_CAR_CRASH_5,
- SFX_WMYBU_CAR_CRASH_6,
- SFX_WMYBU_CAR_CRASH_7,
- SFX_WMYBU_CAR_CRASH_8,
- SFX_WMYBU_CAR_CRASH_9,
- SFX_WMYBU_CHAT_1,
- SFX_WMYBU_CHAT_2,
- SFX_WMYBU_CHAT_3,
- SFX_WMYBU_CHAT_4,
- SFX_WMYBU_CHAT_5,
- SFX_WMYBU_CHAT_6,
- SFX_WMYBU_CHAT_7,
- SFX_WMYBU_CHAT_8,
- SFX_WMYBU_CHAT_9,
- SFX_WMYBU_CHAT_10,
- SFX_WMYBU_DODGE_1,
- SFX_WMYBU_DODGE_2,
- SFX_WMYBU_DODGE_3,
- SFX_WMYBU_DODGE_4,
- SFX_WMYBU_DODGE_5,
- SFX_WMYBU_DODGE_6,
- SFX_WMYBU_DODGE_7,
- SFX_WMYBU_DODGE_8,
- SFX_WMYBU_DODGE_9,
- SFX_WMYBU_DODGE_10,
- SFX_WMYBU_EYEING_1,
- SFX_WMYBU_EYEING_2,
- SFX_WMYBU_GENERIC_CRASH_1,
- SFX_WMYBU_GENERIC_CRASH_2,
- SFX_WMYBU_GENERIC_CRASH_3,
- SFX_WMYBU_GENERIC_CRASH_4,
- SFX_WMYBU_GENERIC_CRASH_5,
- SFX_WMYBU_GUN_PANIC_1,
- SFX_WMYBU_GUN_PANIC_2,
- SFX_WMYBU_GUN_PANIC_3,
- SFX_WMYBU_GUN_PANIC_4,
- SFX_WMYBU_GUN_PANIC_5,
- SFX_WMYBU_GUN_PANIC_6,
- SFX_WMYBU_INNOCENT_1,
- SFX_WMYBU_INNOCENT_2,
- SFX_WMYBU_JACKED_1,
- SFX_WMYBU_JACKED_2,
- SFX_WMYBU_JACKED_3,
- SFX_WMYBU_JACKED_4,
- SFX_WMYBU_JACKED_5,
- SFX_WMYBU_LOST_1,
- SFX_WMYBU_LOST_2,
- SFX_WMYBU_LOST_3,
- SFX_WMYBU_LOST_4,
- SFX_WMYBU_LOST_5,
- SFX_WMYBU_MUGGED_1,
- SFX_WMYBU_RUN_1,
- SFX_WMYBU_RUN_2,
- SFX_WMYBU_RUN_3,
- SFX_WMYBU_SAVED_1,
- SFX_WMYBU_SAVED_2,
- SFX_WMYBU_SHOCKED_1,
- SFX_WMYBU_SHOCKED_2,
- SFX_WMYBU_SHOCKED_3,
- SFX_WMYBU_SHOCKED_4,
- SFX_WMYBU_SHOCKED_5,
- SFX_WMYBU_TAXI_1,
- SFX_WMYBU_TAXI_2,
-
- SFX_WMYST_BLOCKED_1,
- SFX_WMYST_BLOCKED_2,
- SFX_WMYST_BLOCKED_3,
- SFX_WMYST_BLOCKED_4,
- SFX_WMYST_BLOCKED_5,
- SFX_WMYST_BLOCKED_6,
- SFX_WMYST_BLOCKED_7,
- SFX_WMYST_BLOCKED_8,
- SFX_WMYST_BUMP_1,
- SFX_WMYST_BUMP_2,
- SFX_WMYST_BUMP_3,
- SFX_WMYST_BUMP_4,
- SFX_WMYST_BUMP_5,
- SFX_WMYST_BUMP_6,
- SFX_WMYST_BUMP_7,
- SFX_WMYST_BUMP_8,
- SFX_WMYST_BUMP_9,
- SFX_WMYST_BUMP_10,
- SFX_WMYST_BUMP_11,
- SFX_WMYST_CAR_CRASH_1,
- SFX_WMYST_CAR_CRASH_2,
- SFX_WMYST_CAR_CRASH_3,
- SFX_WMYST_CAR_CRASH_4,
- SFX_WMYST_CAR_CRASH_5,
- SFX_WMYST_CAR_CRASH_6,
- SFX_WMYST_CAR_CRASH_7,
- SFX_WMYST_CAR_CRASH_8,
- SFX_WMYST_CHAT_1,
- SFX_WMYST_CHAT_2,
- SFX_WMYST_CHAT_3,
- SFX_WMYST_CHAT_4,
- SFX_WMYST_CHAT_5,
- SFX_WMYST_CHAT_6,
- SFX_WMYST_CHAT_7,
- SFX_WMYST_CHAT_8,
- SFX_WMYST_CHAT_9,
- SFX_WMYST_CHAT_10,
- SFX_WMYST_DODGE_1,
- SFX_WMYST_DODGE_2,
- SFX_WMYST_DODGE_3,
- SFX_WMYST_DODGE_4,
- SFX_WMYST_DODGE_5,
- SFX_WMYST_DODGE_6,
- SFX_WMYST_DODGE_7,
- SFX_WMYST_DODGE_8,
- SFX_WMYST_DODGE_9,
- SFX_WMYST_DODGE_10,
- SFX_WMYST_EYEING_1,
- SFX_WMYST_EYEING_2,
- SFX_WMYST_GENERIC_CRASH_1,
- SFX_WMYST_GENERIC_CRASH_2,
- SFX_WMYST_GENERIC_CRASH_3,
- SFX_WMYST_GENERIC_CRASH_4,
- SFX_WMYST_GENERIC_CRASH_5,
- SFX_WMYST_GUN_PANIC_1,
- SFX_WMYST_GUN_PANIC_2,
- SFX_WMYST_GUN_PANIC_3,
- SFX_WMYST_GUN_PANIC_4,
- SFX_WMYST_GUN_PANIC_5,
- SFX_WMYST_INNOCENT_1,
- SFX_WMYST_INNOCENT_2,
- SFX_WMYST_INNOCENT_3,
- SFX_WMYST_JACKED_1,
- SFX_WMYST_JACKED_2,
- SFX_WMYST_JACKED_3,
- SFX_WMYST_JACKED_4,
- SFX_WMYST_JACKED_5,
- SFX_WMYST_LOST_1,
- SFX_WMYST_LOST_2,
- SFX_WMYST_MUGGED_1,
- SFX_WMYST_MUGGING_1,
- SFX_WMYST_MUGGING_2,
- SFX_WMYST_MUGGING_3,
- SFX_WMYST_MUGGING_4,
- SFX_WMYST_MUGGING_5,
- SFX_WMYST_RUN_1,
- SFX_WMYST_RUN_2,
- SFX_WMYST_RUN_3,
- SFX_WMYST_RUN_4,
- SFX_WMYST_RUN_5,
- SFX_WMYST_RUN_6,
- SFX_WMYST_RUN_7,
- SFX_WMYST_SAVED_1,
- SFX_WMYST_TAXI_1,
- SFX_WMYST_TAXI_2,
-
- SFX_BMYPI_BLOCKED_1,
- SFX_BMYPI_BLOCKED_2,
- SFX_BMYPI_BLOCKED_3,
- SFX_BMYPI_BLOCKED_4,
- SFX_BMYPI_BLOCKED_5,
- SFX_BMYPI_BLOCKED_6,
- SFX_BMYPI_BUMP_1,
- SFX_BMYPI_BUMP_2,
- SFX_BMYPI_BUMP_3,
- SFX_BMYPI_BUMP_4,
- SFX_BMYPI_BUMP_5,
- SFX_BMYPI_BUMP_6,
- SFX_BMYPI_BUMP_7,
- SFX_BMYPI_BUMP_8,
- SFX_BMYPI_BUMP_9,
- SFX_BMYPI_CAR_CRASH_1,
- SFX_BMYPI_CAR_CRASH_2,
- SFX_BMYPI_CAR_CRASH_3,
- SFX_BMYPI_CAR_CRASH_4,
- SFX_BMYPI_CAR_CRASH_5,
- SFX_BMYPI_DODGE_1,
- SFX_BMYPI_DODGE_2,
- SFX_BMYPI_DODGE_3,
- SFX_BMYPI_DODGE_4,
- SFX_BMYPI_DODGE_5,
- SFX_BMYPI_DODGE_6,
- SFX_BMYPI_DODGE_7,
- SFX_BMYPI_DODGE_8,
- SFX_BMYPI_DODGE_9,
- SFX_BMYPI_DODGE_10,
- SFX_BMYPI_EYEING_1,
- SFX_BMYPI_EYEING_2,
- SFX_BMYPI_EYEING_3,
- SFX_BMYPI_EYEING_4,
- SFX_BMYPI_FIGHT_1,
- SFX_BMYPI_FIGHT_2,
- SFX_BMYPI_FIGHT_3,
- SFX_BMYPI_FIGHT_4,
- SFX_BMYPI_FIGHT_5,
- SFX_BMYPI_FIGHT_6,
- SFX_BMYPI_FIGHT_7,
- SFX_BMYPI_FIGHT_8,
- SFX_BMYPI_GENERIC_CRASH_1,
- SFX_BMYPI_GENERIC_CRASH_2,
- SFX_BMYPI_GENERIC_CRASH_3,
- SFX_BMYPI_GENERIC_CRASH_4,
- SFX_BMYPI_GENERIC_CRASH_5,
- SFX_BMYPI_GENERIC_CRASH_6,
- SFX_BMYPI_GENERIC_CRASH_7,
- SFX_BMYPI_GENERIC_CRASH_8,
- SFX_BMYPI_GENERIC_CRASH_9,
- SFX_BMYPI_GENERIC_CRASH_10,
- SFX_BMYPI_GENERIC_CRASH_11,
- SFX_BMYPI_GENERIC_CRASH_12,
- SFX_BMYPI_GENERIC_CRASH_13,
- SFX_BMYPI_GUN_COOL_1,
- SFX_BMYPI_GUN_COOL_2,
- SFX_BMYPI_GUN_COOL_3,
- SFX_BMYPI_GUN_COOL_4,
- SFX_BMYPI_GUN_COOL_5,
- SFX_BMYPI_JACKED_1,
- SFX_BMYPI_JACKED_2,
- SFX_BMYPI_JACKED_3,
- SFX_BMYPI_JACKED_4,
- SFX_BMYPI_JACKED_5,
- SFX_BMYPI_JACKED_6,
- SFX_BMYPI_JACKING_1,
- SFX_BMYPI_JACKING_2,
- SFX_BMYPI_JACKING_3,
- SFX_BMYPI_JACKING_4,
- SFX_BMYPI_MUGGED_1,
- SFX_BMYPI_SAVED_1,
- SFX_BMYPI_TAXI_1,
- SFX_BMYPI_TAXI_2,
-
- SFX_WFYPR_BUMP_1,
- SFX_WFYPR_BUMP_2,
- SFX_WFYPR_BUMP_3,
- SFX_WFYPR_BUMP_4,
- SFX_WFYPR_BUMP_5,
- SFX_WFYPR_BUMP_6,
- SFX_WFYPR_BUMP_7,
- SFX_WFYPR_BUMP_8,
- SFX_WFYPR_BUMP_9,
- SFX_WFYPR_BUMP_10,
- SFX_WFYPR_BUMP_11,
- SFX_WFYPR_CHAT_1,
- SFX_WFYPR_CHAT_2,
- SFX_WFYPR_CHAT_3,
- SFX_WFYPR_CHAT_4,
- SFX_WFYPR_CHAT_5,
- SFX_WFYPR_CHAT_6,
- SFX_WFYPR_CHAT_7,
- SFX_WFYPR_CHAT_8,
- SFX_WFYPR_CHAT_9,
- SFX_WFYPR_CHAT_10,
- SFX_WFYPR_CHAT_11,
- SFX_WFYPR_CHAT_12,
- SFX_WFYPR_CHAT_13,
- SFX_WFYPR_CHAT_14,
- SFX_WFYPR_DODGE_1,
- SFX_WFYPR_DODGE_2,
- SFX_WFYPR_DODGE_3,
- SFX_WFYPR_DODGE_4,
- SFX_WFYPR_DODGE_5,
- SFX_WFYPR_DODGE_6,
- SFX_WFYPR_DODGE_7,
- SFX_WFYPR_DODGE_8,
- SFX_WFYPR_DODGE_9,
- SFX_WFYPR_DODGE_10,
- SFX_WFYPR_FIGHT_1,
- SFX_WFYPR_FIGHT_2,
- SFX_WFYPR_FIGHT_3,
- SFX_WFYPR_FIGHT_4,
- SFX_WFYPR_FIGHT_5,
- SFX_WFYPR_FIGHT_6,
- SFX_WFYPR_FIGHT_7,
- SFX_WFYPR_FIGHT_8,
- SFX_WFYPR_FIGHT_9,
- SFX_WFYPR_FUCKING_1,
- SFX_WFYPR_FUCKING_2,
- SFX_WFYPR_FUCKING_3,
- SFX_WFYPR_FUCKING_4,
- SFX_WFYPR_FUCKING_5,
- SFX_WFYPR_GUN_COOL_1,
- SFX_WFYPR_GUN_COOL_2,
- SFX_WFYPR_GUN_COOL_3,
- SFX_WFYPR_GUN_COOL_4,
- SFX_WFYPR_GUN_COOL_5,
- SFX_WFYPR_GUN_COOL_6,
- SFX_WFYPR_MUGGED_1,
- SFX_WFYPR_MUGGED_2,
- SFX_WFYPR_SAVED_1,
- SFX_WFYPR_SOLICIT_1,
- SFX_WFYPR_SOLICIT_2,
- SFX_WFYPR_SOLICIT_3,
- SFX_WFYPR_SOLICIT_4,
- SFX_WFYPR_SOLICIT_5,
- SFX_WFYPR_SOLICIT_6,
- SFX_WFYPR_SOLICIT_7,
- SFX_WFYPR_SOLICIT_8,
- SFX_WFYPR_SOLICIT_9,
- SFX_WFYPR_SOLICIT_10,
- SFX_WFYPR_SOLICIT_11,
- SFX_WFYPR_SOLICIT_12,
- SFX_WFYPR_SOLICIT_13,
- SFX_WFYPR_SOLICIT_14,
- SFX_WFYPR_SOLICIT_15,
- SFX_WFYPR_TAXI_1,
-
- SFX_WMYRI_BLOCKED_1,
- SFX_WMYRI_BLOCKED_2,
- SFX_WMYRI_BLOCKED_3,
- SFX_WMYRI_BLOCKED_4,
- SFX_WMYRI_BLOCKED_5,
- SFX_WMYRI_BLOCKED_6,
- SFX_WMYRI_BLOCKED_7,
- SFX_WMYRI_BLOCKED_8,
- SFX_WMYRI_BLOCKED_9,
- SFX_WMYRI_BLOCKED_10,
- SFX_WMYRI_BUMP_1,
- SFX_WMYRI_BUMP_2,
- SFX_WMYRI_BUMP_3,
- SFX_WMYRI_BUMP_4,
- SFX_WMYRI_BUMP_5,
- SFX_WMYRI_BUMP_6,
- SFX_WMYRI_BUMP_7,
- SFX_WMYRI_BUMP_8,
- SFX_WMYRI_CAR_CRASH_1,
- SFX_WMYRI_CAR_CRASH_2,
- SFX_WMYRI_CAR_CRASH_3,
- SFX_WMYRI_CAR_CRASH_4,
- SFX_WMYRI_CAR_CRASH_5,
- SFX_WMYRI_CAR_CRASH_6,
- SFX_WMYRI_CAR_CRASH_7,
- SFX_WMYRI_CAR_CRASH_8,
- SFX_WMYRI_CAR_CRASH_9,
- SFX_WMYRI_CHAT_1,
- SFX_WMYRI_CHAT_2,
- SFX_WMYRI_CHAT_3,
- SFX_WMYRI_CHAT_4,
- SFX_WMYRI_CHAT_5,
- SFX_WMYRI_CHAT_6,
- SFX_WMYRI_CHAT_7,
- SFX_WMYRI_CHAT_8,
- SFX_WMYRI_CHAT_9,
- SFX_WMYRI_CHAT_10,
- SFX_WMYRI_DODGE_1,
- SFX_WMYRI_DODGE_2,
- SFX_WMYRI_DODGE_3,
- SFX_WMYRI_DODGE_4,
- SFX_WMYRI_DODGE_5,
- SFX_WMYRI_DODGE_6,
- SFX_WMYRI_DODGE_7,
- SFX_WMYRI_DODGE_8,
- SFX_WMYRI_DODGE_9,
- SFX_WMYRI_EYEING_1,
- SFX_WMYRI_EYEING_2,
- SFX_WMYRI_EYEING_3,
- SFX_WMYRI_GENERIC_CRASH_1,
- SFX_WMYRI_GENERIC_CRASH_2,
- SFX_WMYRI_GENERIC_CRASH_3,
- SFX_WMYRI_GENERIC_CRASH_4,
- SFX_WMYRI_GENERIC_CRASH_5,
- SFX_WMYRI_GENERIC_CRASH_6,
- SFX_WMYRI_GENERIC_CRASH_7,
- SFX_WMYRI_GENERIC_CRASH_8,
- SFX_WMYRI_GENERIC_CRASH_9,
- SFX_WMYRI_GENERIC_CRASH_10,
- SFX_WMYRI_GENERIC_CRASH_11,
- SFX_WMYRI_GUN_PANIC_1,
- SFX_WMYRI_GUN_PANIC_2,
- SFX_WMYRI_GUN_PANIC_3,
- SFX_WMYRI_GUN_PANIC_4,
- SFX_WMYRI_GUN_PANIC_5,
- SFX_WMYRI_GUN_PANIC_6,
- SFX_WMYRI_GUN_PANIC_7,
- SFX_WMYRI_GUN_PANIC_8,
- SFX_WMYRI_JACKED_1,
- SFX_WMYRI_JACKED_2,
- SFX_WMYRI_JACKED_3,
- SFX_WMYRI_JACKED_4,
- SFX_WMYRI_JACKED_5,
- SFX_WMYRI_JACKED_6,
- SFX_WMYRI_JACKED_7,
- SFX_WMYRI_JACKED_8,
- SFX_WMYRI_LOST_1,
- SFX_WMYRI_RUN_1,
- SFX_WMYRI_RUN_2,
- SFX_WMYRI_RUN_3,
- SFX_WMYRI_RUN_4,
- SFX_WMYRI_RUN_5,
- SFX_WMYRI_SAVED_1,
- SFX_WMYRI_SHOCKED_1,
- SFX_WMYRI_SHOCKED_2,
- SFX_WMYRI_SHOCKED_3,
- SFX_WMYRI_SHOCKED_4,
- SFX_WMYRI_TAXI_1,
- SFX_WMYRI_TAXI_2,
-
- SFX_BMOST_BUMP_1,
- SFX_BMOST_BUMP_2,
- SFX_BMOST_BUMP_3,
- SFX_BMOST_BUMP_4,
- SFX_BMOST_BUMP_5,
- SFX_BMOST_BUMP_6,
- SFX_BMOST_BUMP_7,
- SFX_BMOST_BUMP_8,
- SFX_BMOST_BUMP_9,
- SFX_BMOST_BUMP_10,
- SFX_BMOST_BUMP_11,
- SFX_BMOST_BUMP_12,
- SFX_BMOST_BUMP_13,
- SFX_BMOST_BUMP_14,
- SFX_BMOST_BUMP_15,
- SFX_BMOST_BUMP_16,
- SFX_BMOST_BUMP_17,
- SFX_BMOST_CAR_CRASH_1,
- SFX_BMOST_CAR_CRASH_2,
- SFX_BMOST_CAR_CRASH_3,
- SFX_BMOST_CAR_CRASH_4,
- SFX_BMOST_CAR_CRASH_5,
- SFX_BMOST_CAR_CRASH_6,
- SFX_BMOST_CAR_CRASH_7,
- SFX_BMOST_CAR_CRASH_8,
- SFX_BMOST_CHAT_1,
- SFX_BMOST_CHAT_2,
- SFX_BMOST_CHAT_3,
- SFX_BMOST_CHAT_4,
- SFX_BMOST_CHAT_5,
- SFX_BMOST_CHAT_6,
- SFX_BMOST_CHAT_7,
- SFX_BMOST_CHAT_8,
- SFX_BMOST_CHAT_9,
- SFX_BMOST_CHAT_10,
- SFX_BMOST_CHAT_11,
- SFX_BMOST_CHAT_12,
- SFX_BMOST_CHAT_13,
- SFX_BMOST_CHAT_14,
- SFX_BMOST_CHAT_15,
- SFX_BMOST_CHAT_16,
- SFX_BMOST_CHAT_17,
- SFX_BMOST_CHAT_18,
- SFX_BMOST_DODGE_1,
- SFX_BMOST_DODGE_2,
- SFX_BMOST_DODGE_3,
- SFX_BMOST_DODGE_4,
- SFX_BMOST_DODGE_5,
- SFX_BMOST_DODGE_6,
- SFX_BMOST_DODGE_7,
- SFX_BMOST_DODGE_8,
- SFX_BMOST_EYEING_1,
- SFX_BMOST_EYEING_2,
- SFX_BMOST_EYEING_3,
- SFX_BMOST_EYEING_4,
- SFX_BMOST_EYEING_5,
- SFX_BMOST_EYEING_6,
- SFX_BMOST_FIGHT_1,
- SFX_BMOST_FIGHT_2,
- SFX_BMOST_FIGHT_3,
- SFX_BMOST_FIGHT_4,
- SFX_BMOST_FIGHT_5,
- SFX_BMOST_FIGHT_6,
- SFX_BMOST_FIGHT_7,
- SFX_BMOST_GENERIC_CRASH_1,
- SFX_BMOST_GENERIC_CRASH_2,
- SFX_BMOST_GENERIC_CRASH_3,
- SFX_BMOST_GENERIC_CRASH_4,
- SFX_BMOST_GENERIC_CRASH_5,
- SFX_BMOST_GENERIC_CRASH_6,
- SFX_BMOST_GENERIC_CRASH_7,
- SFX_BMOST_GENERIC_CRASH_8,
- SFX_BMOST_GENERIC_CRASH_9,
- SFX_BMOST_GENERIC_CRASH_10,
- SFX_BMOST_GENERIC_CRASH_11,
- SFX_BMOST_GENERIC_CRASH_12,
- SFX_BMOST_GENERIC_CRASH_13,
- SFX_BMOST_GUN_PANIC_1,
- SFX_BMOST_GUN_PANIC_2,
- SFX_BMOST_GUN_PANIC_3,
- SFX_BMOST_GUN_PANIC_4,
- SFX_BMOST_GUN_PANIC_5,
- SFX_BMOST_GUN_PANIC_6,
- SFX_BMOST_GUN_PANIC_7,
- SFX_BMOST_GUN_PANIC_8,
- SFX_BMOST_GUN_PANIC_9,
- SFX_BMOST_LOST_1,
- SFX_BMOST_LOST_2,
- SFX_BMOST_LOST_3,
- SFX_BMOST_LOST_4,
- SFX_BMOST_LOST_5,
- SFX_BMOST_LOST_6,
- SFX_BMOST_MUGGED_1,
- SFX_BMOST_MUGGED_2,
- SFX_BMOST_MUGGED_3,
- SFX_BMOST_MUGGED_4,
- SFX_BMOST_SAVED_1,
- SFX_BMOST_TAXI_1,
-
- SFX_HFOST_BLOCKED_1,
- SFX_HFOST_BLOCKED_2,
- SFX_HFOST_BLOCKED_3,
- SFX_HFOST_BLOCKED_4,
- SFX_HFOST_BLOCKED_5,
- SFX_HFOST_BLOCKED_6,
- SFX_HFOST_BLOCKED_7,
- SFX_HFOST_BLOCKED_8,
- SFX_HFOST_BLOCKED_9,
- SFX_HFOST_BUMP_1,
- SFX_HFOST_BUMP_2,
- SFX_HFOST_BUMP_3,
- SFX_HFOST_BUMP_4,
- SFX_HFOST_BUMP_5,
- SFX_HFOST_BUMP_6,
- SFX_HFOST_BUMP_7,
- SFX_HFOST_BUMP_8,
- SFX_HFOST_BUMP_9,
- SFX_HFOST_BUMP_10,
- SFX_HFOST_BUMP_11,
- SFX_HFOST_BUMP_12,
- SFX_HFOST_CAR_CRASH_1,
- SFX_HFOST_CAR_CRASH_2,
- SFX_HFOST_CAR_CRASH_3,
- SFX_HFOST_CAR_CRASH_4,
- SFX_HFOST_CAR_CRASH_5,
- SFX_HFOST_CAR_CRASH_6,
- SFX_HFOST_CAR_CRASH_7,
- SFX_HFOST_CAR_CRASH_8,
- SFX_HFOST_CHAT_1,
- SFX_HFOST_CHAT_2,
- SFX_HFOST_CHAT_3,
- SFX_HFOST_CHAT_4,
- SFX_HFOST_CHAT_5,
- SFX_HFOST_CHAT_6,
- SFX_HFOST_CHAT_7,
- SFX_HFOST_CHAT_8,
- SFX_HFOST_CHAT_9,
- SFX_HFOST_CHAT_10,
- SFX_HFOST_CHAT_11,
- SFX_HFOST_DODGE_1,
- SFX_HFOST_DODGE_2,
- SFX_HFOST_DODGE_3,
- SFX_HFOST_DODGE_4,
- SFX_HFOST_DODGE_5,
- SFX_HFOST_DODGE_6,
- SFX_HFOST_DODGE_7,
- SFX_HFOST_DODGE_8,
- SFX_HFOST_DODGE_9,
- SFX_HFOST_DODGE_10,
- SFX_HFOST_FIGHT_1,
- SFX_HFOST_FIGHT_2,
- SFX_HFOST_FIGHT_3,
- SFX_HFOST_FIGHT_4,
- SFX_HFOST_FIGHT_5,
- SFX_HFOST_FIGHT_6,
- SFX_HFOST_FIGHT_7,
- SFX_HFOST_FIGHT_8,
- SFX_HFOST_GENERIC_CRASH_1,
- SFX_HFOST_GENERIC_CRASH_2,
- SFX_HFOST_GENERIC_CRASH_3,
- SFX_HFOST_GENERIC_CRASH_4,
- SFX_HFOST_GENERIC_CRASH_5,
- SFX_HFOST_GENERIC_CRASH_6,
- SFX_HFOST_GENERIC_CRASH_7,
- SFX_HFOST_GENERIC_CRASH_8,
- SFX_HFOST_GENERIC_CRASH_9,
- SFX_HFOST_GENERIC_CRASH_10,
- SFX_HFOST_GENERIC_CRASH_11,
- SFX_HFOST_GUN_COOL_1,
- SFX_HFOST_GUN_COOL_2,
- SFX_HFOST_GUN_COOL_3,
- SFX_HFOST_GUN_COOL_4,
- SFX_HFOST_GUN_COOL_5,
- SFX_HFOST_GUN_COOL_6,
- SFX_HFOST_JACKED_1,
- SFX_HFOST_JACKED_2,
- SFX_HFOST_JACKED_3,
- SFX_HFOST_JACKED_4,
- SFX_HFOST_JACKED_5,
- SFX_HFOST_JACKED_6,
- SFX_HFOST_JACKED_7,
- SFX_HFOST_JACKED_8,
- SFX_HFOST_LOST_1,
- SFX_HFOST_LOST_2,
- SFX_HFOST_MUGGED_1,
- SFX_HFOST_MUGGED_2,
- SFX_HFOST_MUGGED_3,
- SFX_HFOST_TAXI_1,
- SFX_HFOST_TAXI_2,
-
- SFX_HMORI_BLOCKED_1,
- SFX_HMORI_BLOCKED_2,
- SFX_HMORI_BLOCKED_3,
- SFX_HMORI_BLOCKED_4,
- SFX_HMORI_BLOCKED_5,
- SFX_HMORI_BLOCKED_6,
- SFX_HMORI_BLOCKED_7,
- SFX_HMORI_BLOCKED_8,
- SFX_HMORI_BUMP_1,
- SFX_HMORI_BUMP_2,
- SFX_HMORI_BUMP_3,
- SFX_HMORI_BUMP_4,
- SFX_HMORI_BUMP_5,
- SFX_HMORI_BUMP_6,
- SFX_HMORI_BUMP_7,
- SFX_HMORI_BUMP_8,
- SFX_HMORI_BUMP_9,
- SFX_HMORI_BUMP_10,
- SFX_HMORI_BUMP_11,
- SFX_HMORI_CAR_CRASH_1,
- SFX_HMORI_CAR_CRASH_2,
- SFX_HMORI_CAR_CRASH_3,
- SFX_HMORI_CAR_CRASH_4,
- SFX_HMORI_CAR_CRASH_5,
- SFX_HMORI_CAR_CRASH_6,
- SFX_HMORI_CHAT_1,
- SFX_HMORI_CHAT_2,
- SFX_HMORI_CHAT_3,
- SFX_HMORI_CHAT_4,
- SFX_HMORI_CHAT_5,
- SFX_HMORI_CHAT_6,
- SFX_HMORI_CHAT_7,
- SFX_HMORI_CHAT_8,
- SFX_HMORI_DODGE_1,
- SFX_HMORI_DODGE_2,
- SFX_HMORI_DODGE_3,
- SFX_HMORI_DODGE_4,
- SFX_HMORI_DODGE_5,
- SFX_HMORI_DODGE_6,
- SFX_HMORI_DODGE_7,
- SFX_HMORI_GENERIC_CRASH_1,
- SFX_HMORI_GENERIC_CRASH_2,
- SFX_HMORI_GENERIC_CRASH_3,
- SFX_HMORI_GENERIC_CRASH_4,
- SFX_HMORI_GENERIC_CRASH_5,
- SFX_HMORI_GENERIC_CRASH_6,
- SFX_HMORI_GENERIC_CRASH_7,
- SFX_HMORI_GENERIC_CRASH_8,
- SFX_HMORI_GENERIC_CRASH_9,
- SFX_HMORI_GENERIC_CRASH_10,
- SFX_HMORI_GENERIC_CRASH_11,
- SFX_HMORI_GUN_PANIC_1,
- SFX_HMORI_GUN_PANIC_2,
- SFX_HMORI_GUN_PANIC_3,
- SFX_HMORI_GUN_PANIC_4,
- SFX_HMORI_GUN_PANIC_5,
- SFX_HMORI_JACKED_1,
- SFX_HMORI_JACKED_2,
- SFX_HMORI_JACKED_3,
- SFX_HMORI_JACKED_4,
- SFX_HMORI_JACKED_5,
- SFX_HMORI_JACKED_6,
- SFX_HMORI_JACKED_7,
- SFX_HMORI_JACKED_8,
- SFX_HMORI_LOST_1,
- SFX_HMORI_LOST_2,
- SFX_HMORI_MUGGED_1,
- SFX_HMORI_MUGGED_2,
- SFX_HMORI_MUGGED_3,
- SFX_HMORI_RUN_1,
- SFX_HMORI_RUN_2,
- SFX_HMORI_RUN_3,
- SFX_HMORI_RUN_4,
- SFX_HMORI_RUN_5,
- SFX_HMORI_RUN_6,
- SFX_HMORI_TAXI_1,
- SFX_HMORI_TAXI_2,
-
- SFX_HMOTR_BUMP_1,
- SFX_HMOTR_BUMP_2,
- SFX_HMOTR_BUMP_3,
- SFX_HMOTR_BUMP_4,
- SFX_HMOTR_BUMP_5,
- SFX_HMOTR_BUMP_6,
- SFX_HMOTR_BUMP_7,
- SFX_HMOTR_BUMP_8,
- SFX_HMOTR_CHAT_1,
- SFX_HMOTR_CHAT_2,
- SFX_HMOTR_CHAT_3,
- SFX_HMOTR_CHAT_4,
- SFX_HMOTR_CHAT_5,
- SFX_HMOTR_CHAT_6,
- SFX_HMOTR_CHAT_7,
- SFX_HMOTR_CHAT_8,
- SFX_HMOTR_CHAT_9,
- SFX_HMOTR_DODGE_1,
- SFX_HMOTR_DODGE_2,
- SFX_HMOTR_DODGE_3,
- SFX_HMOTR_DODGE_4,
- SFX_HMOTR_DODGE_5,
- SFX_HMOTR_DODGE_6,
- SFX_HMOTR_DODGE_7,
- SFX_HMOTR_DODGE_8,
- SFX_HMOTR_DODGE_9,
- SFX_HMOTR_DODGE_10,
- SFX_HMOTR_DODGE_11,
- SFX_HMOTR_FIGHT_1,
- SFX_HMOTR_FIGHT_2,
- SFX_HMOTR_FIGHT_3,
- SFX_HMOTR_FIGHT_4,
- SFX_HMOTR_FIGHT_5,
- SFX_HMOTR_FIGHT_6,
- SFX_HMOTR_FIGHT_7,
- SFX_HMOTR_GUN_COOL_1,
- SFX_HMOTR_GUN_COOL_2,
- SFX_HMOTR_GUN_COOL_3,
- SFX_HMOTR_GUN_COOL_4,
- SFX_HMOTR_GUN_COOL_5,
- SFX_HMOTR_GUN_COOL_6,
- SFX_HMOTR_SAVED_1,
- SFX_HMOTR_SAVED_2,
- SFX_HMOTR_SHOCKED_1,
- SFX_HMOTR_SHOCKED_2,
- SFX_HMOTR_SHOCKED_3,
- SFX_HMOTR_SOLICIT_1,
- SFX_HMOTR_SOLICIT_2,
- SFX_HMOTR_SOLICIT_3,
- SFX_HMOTR_SOLICIT_4,
- SFX_HMOTR_SOLICIT_5,
- SFX_HMOTR_SOLICIT_6,
- SFX_HMOTR_SOLICIT_7,
- SFX_HMOTR_SOLICIT_8,
- SFX_HMOTR_TAXI_1,
-
- SFX_HMYAP_BLOCKED_1,
- SFX_HMYAP_BLOCKED_2,
- SFX_HMYAP_BLOCKED_3,
- SFX_HMYAP_BLOCKED_4,
- SFX_HMYAP_BLOCKED_5,
- SFX_HMYAP_BLOCKED_6,
- SFX_HMYAP_BLOCKED_7,
- SFX_HMYAP_BLOCKED_8,
- SFX_HMYAP_BLOCKED_9,
- SFX_HMYAP_BUMP_1,
- SFX_HMYAP_BUMP_2,
- SFX_HMYAP_BUMP_3,
- SFX_HMYAP_BUMP_4,
- SFX_HMYAP_BUMP_5,
- SFX_HMYAP_BUMP_6,
- SFX_HMYAP_BUMP_7,
- SFX_HMYAP_BUMP_8,
- SFX_HMYAP_BUMP_9,
- SFX_HMYAP_BUMP_10,
- SFX_HMYAP_BUMP_11,
- SFX_HMYAP_CAR_CRASH_1,
- SFX_HMYAP_CAR_CRASH_2,
- SFX_HMYAP_CAR_CRASH_3,
- SFX_HMYAP_CAR_CRASH_4,
- SFX_HMYAP_CAR_CRASH_5,
- SFX_HMYAP_CAR_CRASH_6,
- SFX_HMYAP_CAR_CRASH_7,
- SFX_HMYAP_CAR_CRASH_8,
- SFX_HMYAP_CAR_CRASH_9,
- SFX_HMYAP_CHAT_1,
- SFX_HMYAP_CHAT_2,
- SFX_HMYAP_CHAT_3,
- SFX_HMYAP_CHAT_4,
- SFX_HMYAP_CHAT_5,
- SFX_HMYAP_CHAT_6,
- SFX_HMYAP_CHAT_7,
- SFX_HMYAP_CHAT_8,
- SFX_HMYAP_CHAT_9,
- SFX_HMYAP_DODGE_1,
- SFX_HMYAP_DODGE_2,
- SFX_HMYAP_DODGE_3,
- SFX_HMYAP_DODGE_4,
- SFX_HMYAP_DODGE_5,
- SFX_HMYAP_DODGE_6,
- SFX_HMYAP_DODGE_7,
- SFX_HMYAP_DODGE_8,
- SFX_HMYAP_DODGE_9,
- SFX_HMYAP_EYEING_1,
- SFX_HMYAP_EYEING_2,
- SFX_HMYAP_EYEING_3,
- SFX_HMYAP_GENERIC_CRASH_1,
- SFX_HMYAP_GENERIC_CRASH_2,
- SFX_HMYAP_GENERIC_CRASH_3,
- SFX_HMYAP_GENERIC_CRASH_4,
- SFX_HMYAP_GENERIC_CRASH_5,
- SFX_HMYAP_GENERIC_CRASH_6,
- SFX_HMYAP_GUN_PANIC_1,
- SFX_HMYAP_GUN_PANIC_2,
- SFX_HMYAP_GUN_PANIC_3,
- SFX_HMYAP_GUN_PANIC_4,
- SFX_HMYAP_GUN_PANIC_5,
- SFX_HMYAP_GUN_PANIC_6,
- SFX_HMYAP_GUN_PANIC_7,
- SFX_HMYAP_JACKED_1,
- SFX_HMYAP_JACKED_2,
- SFX_HMYAP_JACKED_3,
- SFX_HMYAP_JACKED_4,
- SFX_HMYAP_JACKED_5,
- SFX_HMYAP_JACKED_6,
- SFX_HMYAP_JACKED_7,
- SFX_HMYAP_JACKING_1,
- SFX_HMYAP_JACKING_2,
- SFX_HMYAP_JACKING_3,
- SFX_HMYAP_JACKING_4,
- SFX_HMYAP_LOST_1,
- SFX_HMYAP_LOST_2,
- SFX_HMYAP_MUGGED_1,
- SFX_HMYAP_MUGGED_2,
- SFX_HMYAP_RUN_1,
- SFX_HMYAP_RUN_2,
- SFX_HMYAP_RUN_3,
- SFX_HMYAP_RUN_4,
- SFX_HMYAP_RUN_5,
- SFX_HMYAP_RUN_6,
- SFX_HMYAP_SAVED_1,
- SFX_HMYAP_SAVED_2,
- SFX_HMYAP_TAXI_1,
- SFX_HMYAP_TAXI_2,
-
- SFX_HFOTR_BUMP_1,
- SFX_HFOTR_BUMP_2,
- SFX_HFOTR_BUMP_3,
- SFX_HFOTR_BUMP_4,
- SFX_HFOTR_BUMP_5,
- SFX_HFOTR_BUMP_6,
- SFX_HFOTR_BUMP_7,
- SFX_HFOTR_BUMP_8,
- SFX_HFOTR_BUMP_9,
- SFX_HFOTR_BUMP_10,
- SFX_HFOTR_BUMP_11,
- SFX_HFOTR_CHAT_1,
- SFX_HFOTR_CHAT_2,
- SFX_HFOTR_CHAT_3,
- SFX_HFOTR_CHAT_4,
- SFX_HFOTR_CHAT_5,
- SFX_HFOTR_CHAT_6,
- SFX_HFOTR_CHAT_7,
- SFX_HFOTR_CHAT_8,
- SFX_HFOTR_CHAT_9,
- SFX_HFOTR_CHAT_10,
- SFX_HFOTR_CHAT_11,
- SFX_HFOTR_CHAT_12,
- SFX_HFOTR_DODGE_1,
- SFX_HFOTR_DODGE_2,
- SFX_HFOTR_DODGE_3,
- SFX_HFOTR_DODGE_4,
- SFX_HFOTR_DODGE_5,
- SFX_HFOTR_DODGE_6,
- SFX_HFOTR_DODGE_7,
- SFX_HFOTR_DODGE_8,
- SFX_HFOTR_FIGHT_1,
- SFX_HFOTR_FIGHT_2,
- SFX_HFOTR_FIGHT_3,
- SFX_HFOTR_FIGHT_4,
- SFX_HFOTR_FIGHT_5,
- SFX_HFOTR_FIGHT_6,
- SFX_HFOTR_GUN_COOL_1,
- SFX_HFOTR_GUN_COOL_2,
- SFX_HFOTR_GUN_COOL_3,
- SFX_HFOTR_GUN_COOL_4,
- SFX_HFOTR_GUN_COOL_5,
- SFX_HFOTR_MUGGED_1,
- SFX_HFOTR_MUGGED_2,
- SFX_HFOTR_SAVED_1,
- SFX_HFOTR_SHOCKED_1,
- SFX_HFOTR_SHOCKED_2,
- SFX_HFOTR_TAXI_1,
- SFX_HFOTR_TAXI_2,
-
- SFX_HMOBE_BLOCKED_1,
- SFX_HMOBE_BLOCKED_2,
- SFX_HMOBE_BLOCKED_3,
- SFX_HMOBE_BLOCKED_4,
- SFX_HMOBE_BLOCKED_5,
- SFX_HMOBE_BLOCKED_6,
- SFX_HMOBE_BLOCKED_7,
- SFX_HMOBE_BLOCKED_8,
- SFX_HMOBE_BLOCKED_9,
- SFX_HMOBE_BLOCKED_10,
- SFX_HMOBE_BUMP_1,
- SFX_HMOBE_BUMP_2,
- SFX_HMOBE_BUMP_3,
- SFX_HMOBE_BUMP_4,
- SFX_HMOBE_BUMP_5,
- SFX_HMOBE_BUMP_6,
- SFX_HMOBE_BUMP_7,
- SFX_HMOBE_BUMP_8,
- SFX_HMOBE_DODGE_1,
- SFX_HMOBE_DODGE_2,
- SFX_HMOBE_DODGE_3,
- SFX_HMOBE_DODGE_4,
- SFX_HMOBE_DODGE_5,
- SFX_HMOBE_DODGE_6,
- SFX_HMOBE_DODGE_7,
- SFX_HMOBE_DODGE_8,
- SFX_HMOBE_DODGE_9,
- SFX_HMOBE_EYEING_1,
- SFX_HMOBE_EYEING_2,
- SFX_HMOBE_EYEING_3,
- SFX_HMOBE_EYEING_4,
- SFX_HMOBE_GUN_PANIC_1,
- SFX_HMOBE_GUN_PANIC_2,
- SFX_HMOBE_GUN_PANIC_3,
- SFX_HMOBE_INNOCENT_1,
- SFX_HMOBE_INNOCENT_2,
- SFX_HMOBE_INNOCENT_3,
- SFX_HMOBE_JACKED_1,
- SFX_HMOBE_JACKED_2,
- SFX_HMOBE_JACKED_3,
- SFX_HMOBE_JACKED_4,
- SFX_HMOBE_JACKED_5,
- SFX_HMOBE_JACKED_6,
-
- SFX_HFYBU_BLOCKED_1,
- SFX_HFYBU_BLOCKED_2,
- SFX_HFYBU_BLOCKED_3,
- SFX_HFYBU_BLOCKED_4,
- SFX_HFYBU_BLOCKED_5,
- SFX_HFYBU_BLOCKED_6,
- SFX_HFYBU_BLOCKED_7,
- SFX_HFYBU_BLOCKED_8,
- SFX_HFYBU_BUMP_1,
- SFX_HFYBU_BUMP_2,
- SFX_HFYBU_BUMP_3,
- SFX_HFYBU_BUMP_4,
- SFX_HFYBU_BUMP_5,
- SFX_HFYBU_BUMP_6,
- SFX_HFYBU_BUMP_7,
- SFX_HFYBU_BUMP_8,
- SFX_HFYBU_BUMP_9,
- SFX_HFYBU_BUMP_10,
- SFX_HFYBU_BUMP_11,
- SFX_HFYBU_CAR_CRASH_1,
- SFX_HFYBU_CAR_CRASH_2,
- SFX_HFYBU_CAR_CRASH_3,
- SFX_HFYBU_CAR_CRASH_4,
- SFX_HFYBU_CAR_CRASH_5,
- SFX_HFYBU_CAR_CRASH_6,
- SFX_HFYBU_CAR_CRASH_7,
- SFX_HFYBU_CAR_CRASH_8,
- SFX_HFYBU_DODGE_1,
- SFX_HFYBU_DODGE_2,
- SFX_HFYBU_DODGE_3,
- SFX_HFYBU_DODGE_4,
- SFX_HFYBU_DODGE_5,
- SFX_HFYBU_DODGE_6,
- SFX_HFYBU_DODGE_7,
- SFX_HFYBU_DODGE_8,
- SFX_HFYBU_DODGE_9,
- SFX_HFYBU_DODGE_10,
- SFX_HFYBU_FIGHT_1,
- SFX_HFYBU_FIGHT_2,
- SFX_HFYBU_FIGHT_3,
- SFX_HFYBU_FIGHT_4,
- SFX_HFYBU_FIGHT_5,
- SFX_HFYBU_FIGHT_6,
- SFX_HFYBU_FIGHT_7,
- SFX_HFYBU_GENERIC_CRASH_1,
- SFX_HFYBU_GENERIC_CRASH_2,
- SFX_HFYBU_GENERIC_CRASH_3,
- SFX_HFYBU_GENERIC_CRASH_4,
- SFX_HFYBU_GENERIC_CRASH_5,
- SFX_HFYBU_GENERIC_CRASH_6,
- SFX_HFYBU_GENERIC_CRASH_7,
- SFX_HFYBU_GENERIC_CRASH_8,
- SFX_HFYBU_GENERIC_CRASH_9,
- SFX_HFYBU_GENERIC_CRASH_10,
- SFX_HFYBU_GENERIC_CRASH_11,
- SFX_HFYBU_GENERIC_CRASH_12,
- SFX_HFYBU_GUN_PANIC_1,
- SFX_HFYBU_GUN_PANIC_2,
- SFX_HFYBU_GUN_PANIC_3,
- SFX_HFYBU_GUN_PANIC_4,
- SFX_HFYBU_GUN_PANIC_5,
- SFX_HFYBU_JACKED_1,
- SFX_HFYBU_JACKED_2,
- SFX_HFYBU_JACKED_3,
- SFX_HFYBU_JACKED_4,
- SFX_HFYBU_JACKED_5,
- SFX_HFYBU_JACKED_6,
- SFX_HFYBU_JACKING_1,
- SFX_HFYBU_JACKING_2,
- SFX_HFYBU_JACKING_3,
- SFX_HFYBU_LOST_1,
- SFX_HFYBU_LOST_2,
- SFX_HFYBU_MUGGED_1,
- SFX_HFYBU_MUGGED_2,
- SFX_HFYBU_SAVED_1,
- SFX_HFYBU_TAXI_1,
-
- SFX_HFYCG_BUMP_1,
- SFX_HFYCG_BUMP_2,
- SFX_HFYCG_BUMP_3,
- SFX_HFYCG_BUMP_4,
- SFX_HFYCG_BUMP_5,
- SFX_HFYCG_BUMP_6,
- SFX_HFYCG_BUMP_7,
- SFX_HFYCG_BUMP_8,
- SFX_HFYCG_BUMP_9,
- SFX_HFYCG_DODGE_1,
- SFX_HFYCG_DODGE_2,
- SFX_HFYCG_DODGE_3,
- SFX_HFYCG_DODGE_4,
- SFX_HFYCG_DODGE_5,
- SFX_HFYCG_DODGE_6,
- SFX_HFYCG_DODGE_7,
- SFX_HFYCG_DODGE_8,
- SFX_HFYCG_GUN_PANIC_1,
- SFX_HFYCG_GUN_PANIC_2,
- SFX_HFYCG_GUN_PANIC_3,
- SFX_HFYCG_GUN_PANIC_4,
- SFX_HFYCG_GUN_PANIC_5,
- SFX_HFYCG_MUGGED_1,
- SFX_HFYCG_MUGGED_2,
- SFX_HFYCG_RUN_1,
- SFX_HFYCG_RUN_2,
- SFX_HFYCG_RUN_3,
- SFX_HFYCG_RUN_4,
- SFX_HFYCG_SAVED_1,
- SFX_HFYCG_SOLICIT_1,
- SFX_HFYCG_SOLICIT_2,
- SFX_HFYCG_SOLICIT_3,
- SFX_HFYCG_SOLICIT_4,
- SFX_HFYCG_SOLICIT_5,
- SFX_HFYCG_SOLICIT_6,
- SFX_HFYCG_SOLICIT_7,
- SFX_HFYCG_SOLICIT_8,
- SFX_HFYCG_SOLICIT_9,
- SFX_HFYCG_SOLICIT_10,
- SFX_HFYCG_SOLICIT_11,
- SFX_HFYCG_SOLICIT_12,
- SFX_HFYCG_SOLICIT_13,
- SFX_HFYCG_SOLICIT_14,
- SFX_HFYCG_TAXI_1,
-
- SFX_HMYBE_BUMP_1,
- SFX_HMYBE_BUMP_2,
- SFX_HMYBE_BUMP_3,
- SFX_HMYBE_BUMP_4,
- SFX_HMYBE_BUMP_5,
- SFX_HMYBE_BUMP_6,
- SFX_HMYBE_BUMP_7,
- SFX_HMYBE_BUMP_8,
- SFX_HMYBE_BUMP_9,
- SFX_HMYBE_BUMP_10,
- SFX_HMYBE_CAR_CRASH_1,
- SFX_HMYBE_CAR_CRASH_2,
- SFX_HMYBE_CAR_CRASH_3,
- SFX_HMYBE_CAR_CRASH_4,
- SFX_HMYBE_CAR_CRASH_5,
- SFX_HMYBE_CAR_CRASH_6,
- SFX_HMYBE_CAR_CRASH_7,
- SFX_HMYBE_CHAT_1,
- SFX_HMYBE_CHAT_2,
- SFX_HMYBE_CHAT_3,
- SFX_HMYBE_CHAT_4,
- SFX_HMYBE_CHAT_5,
- SFX_HMYBE_CHAT_6,
- SFX_HMYBE_CHAT_7,
- SFX_HMYBE_CHAT_8,
- SFX_HMYBE_CHAT_9,
- SFX_HMYBE_CHAT_10,
- SFX_HMYBE_DODGE_1,
- SFX_HMYBE_DODGE_2,
- SFX_HMYBE_DODGE_3,
- SFX_HMYBE_DODGE_4,
- SFX_HMYBE_DODGE_5,
- SFX_HMYBE_DODGE_6,
- SFX_HMYBE_DODGE_7,
- SFX_HMYBE_EYEING_1,
- SFX_HMYBE_EYEING_2,
- SFX_HMYBE_EYEING_3,
- SFX_HMYBE_EYEING_4,
- SFX_HMYBE_EYEING_5,
- SFX_HMYBE_FIGHT_1,
- SFX_HMYBE_FIGHT_2,
- SFX_HMYBE_FIGHT_3,
- SFX_HMYBE_FIGHT_4,
- SFX_HMYBE_FIGHT_5,
- SFX_HMYBE_FIGHT_6,
- SFX_HMYBE_FIGHT_7,
- SFX_HMYBE_FIGHT_8,
- SFX_HMYBE_GENERIC_CRASH_1,
- SFX_HMYBE_GENERIC_CRASH_2,
- SFX_HMYBE_GENERIC_CRASH_3,
- SFX_HMYBE_GENERIC_CRASH_4,
- SFX_HMYBE_GENERIC_CRASH_5,
- SFX_HMYBE_GENERIC_CRASH_6,
- SFX_HMYBE_GENERIC_CRASH_7,
- SFX_HMYBE_GENERIC_CRASH_8,
- SFX_HMYBE_GENERIC_CRASH_9,
- SFX_HMYBE_GENERIC_CRASH_10,
- SFX_HMYBE_GUN_PANIC_1,
- SFX_HMYBE_GUN_PANIC_2,
- SFX_HMYBE_GUN_PANIC_3,
- SFX_HMYBE_GUN_PANIC_4,
- SFX_HMYBE_GUN_PANIC_5,
- SFX_HMYBE_GUN_PANIC_6,
- SFX_HMYBE_INNOCENT_1,
- SFX_HMYBE_INNOCENT_2,
- SFX_HMYBE_INNOCENT_3,
- SFX_HMYBE_INNOCENT_4,
- SFX_HMYBE_JACKED_1,
- SFX_HMYBE_JACKED_2,
- SFX_HMYBE_JACKED_3,
- SFX_HMYBE_JACKED_4,
- SFX_HMYBE_JACKED_5,
- SFX_HMYBE_JACKED_6,
- SFX_HMYBE_JACKED_7,
- SFX_HMYBE_JACKED_8,
- SFX_HMYBE_JACKED_9,
- SFX_HMYBE_JACKED_10,
- SFX_HMYBE_JACKED_11,
- SFX_HMYBE_JACKED_12,
- SFX_HMYBE_LOST_1,
- SFX_HMYBE_LOST_2,
- SFX_HMYBE_LOST_3,
- SFX_HMYBE_SAVED_1,
- SFX_HMYBE_SHOCKED_1,
- SFX_HMYBE_SHOCKED_2,
- SFX_HMYBE_TAXI_1,
-
- SFX_WMOGO_BUMP_1,
- SFX_WMOGO_BUMP_2,
- SFX_WMOGO_BUMP_3,
- SFX_WMOGO_BUMP_4,
- SFX_WMOGO_BUMP_5,
- SFX_WMOGO_BUMP_6,
- SFX_WMOGO_BUMP_7,
- SFX_WMOGO_BUMP_8,
- SFX_WMOGO_CAR_CRASH_1,
- SFX_WMOGO_CAR_CRASH_2,
- SFX_WMOGO_CAR_CRASH_3,
- SFX_WMOGO_CAR_CRASH_4,
- SFX_WMOGO_CAR_CRASH_5,
- SFX_WMOGO_CAR_CRASH_6,
- SFX_WMOGO_CAR_CRASH_7,
- SFX_WMOGO_CAR_CRASH_8,
- SFX_WMOGO_CAR_CRASH_9,
- SFX_WMOGO_CHAT_1,
- SFX_WMOGO_CHAT_2,
- SFX_WMOGO_CHAT_3,
- SFX_WMOGO_CHAT_4,
- SFX_WMOGO_CHAT_5,
- SFX_WMOGO_CHAT_6,
- SFX_WMOGO_CHAT_7,
- SFX_WMOGO_CHAT_8,
- SFX_WMOGO_CHAT_9,
- SFX_WMOGO_DODGE_1,
- SFX_WMOGO_DODGE_2,
- SFX_WMOGO_DODGE_3,
- SFX_WMOGO_DODGE_4,
- SFX_WMOGO_DODGE_5,
- SFX_WMOGO_DODGE_6,
- SFX_WMOGO_DODGE_7,
- SFX_WMOGO_DODGE_8,
- SFX_WMOGO_DODGE_9,
- SFX_WMOGO_DODGE_10,
- SFX_WMOGO_DODGE_11,
- SFX_WMOGO_DODGE_12,
- SFX_WMOGO_EYEING_1,
- SFX_WMOGO_EYEING_2,
- SFX_WMOGO_FIGHT_1,
- SFX_WMOGO_FIGHT_2,
- SFX_WMOGO_FIGHT_3,
- SFX_WMOGO_FIGHT_4,
- SFX_WMOGO_FIGHT_5,
- SFX_WMOGO_FIGHT_6,
- SFX_WMOGO_FIGHT_7,
- SFX_WMOGO_FIGHT_8,
- SFX_WMOGO_FIGHT_9,
- SFX_WMOGO_FIGHT_10,
- SFX_WMOGO_FIGHT_11,
- SFX_WMOGO_FIGHT_12,
- SFX_WMOGO_FIGHT_13,
- SFX_WMOGO_GENERIC_CRASH_1,
- SFX_WMOGO_GENERIC_CRASH_2,
- SFX_WMOGO_GENERIC_CRASH_3,
- SFX_WMOGO_GENERIC_CRASH_4,
- SFX_WMOGO_GENERIC_CRASH_5,
- SFX_WMOGO_GENERIC_CRASH_6,
- SFX_WMOGO_GENERIC_CRASH_7,
- SFX_WMOGO_GENERIC_CRASH_8,
- SFX_WMOGO_GUN_PANIC_1,
- SFX_WMOGO_GUN_PANIC_2,
- SFX_WMOGO_GUN_PANIC_3,
- SFX_WMOGO_GUN_PANIC_4,
- SFX_WMOGO_GUN_PANIC_5,
- SFX_WMOGO_JACKED_1,
- SFX_WMOGO_JACKED_2,
- SFX_WMOGO_JACKED_3,
- SFX_WMOGO_JACKED_4,
- SFX_WMOGO_JACKED_5,
- SFX_WMOGO_JACKED_6,
- SFX_WMOGO_RUN_1,
- SFX_WMOGO_RUN_2,
- SFX_WMOGO_RUN_3,
- SFX_WMOGO_RUN_4,
- SFX_WMOGO_RUN_5,
- SFX_WMOGO_SAVED_1,
- SFX_WMOGO_SHOCKED_1,
- SFX_WMOGO_SHOCKED_2,
- SFX_WMOGO_SHOCKED_3,
- SFX_WMOGO_TAXI_1,
-
- SFX_WMYCR_BUMP_1,
- SFX_WMYCR_BUMP_2,
- SFX_WMYCR_BUMP_3,
- SFX_WMYCR_BUMP_4,
- SFX_WMYCR_BUMP_5,
- SFX_WMYCR_BUMP_6,
- SFX_WMYCR_BUMP_7,
- SFX_WMYCR_BUMP_8,
- SFX_WMYCR_BUMP_9,
- SFX_WMYCR_BUMP_10,
- SFX_WMYCR_BUMP_11,
- SFX_WMYCR_BUMP_12,
- SFX_WMYCR_BUMP_13,
- SFX_WMYCR_BUMP_14,
- SFX_WMYCR_BUMP_15,
- SFX_WMYCR_BUMP_16,
- SFX_WMYCR_BUMP_17,
- SFX_WMYCR_BUMP_18,
- SFX_WMYCR_CAR_CRASH_1,
- SFX_WMYCR_CAR_CRASH_2,
- SFX_WMYCR_CAR_CRASH_3,
- SFX_WMYCR_CAR_CRASH_4,
- SFX_WMYCR_CAR_CRASH_5,
- SFX_WMYCR_CAR_CRASH_6,
- SFX_WMYCR_CAR_CRASH_7,
- SFX_WMYCR_CAR_CRASH_8,
- SFX_WMYCR_CAR_CRASH_9,
- SFX_WMYCR_DODGE_1,
- SFX_WMYCR_DODGE_2,
- SFX_WMYCR_DODGE_3,
- SFX_WMYCR_DODGE_4,
- SFX_WMYCR_DODGE_5,
- SFX_WMYCR_DODGE_6,
- SFX_WMYCR_DODGE_7,
- SFX_WMYCR_DODGE_8,
- SFX_WMYCR_DODGE_9,
- SFX_WMYCR_DODGE_10,
- SFX_WMYCR_FIGHT_1,
- SFX_WMYCR_FIGHT_2,
- SFX_WMYCR_FIGHT_3,
- SFX_WMYCR_FIGHT_4,
- SFX_WMYCR_FIGHT_5,
- SFX_WMYCR_FIGHT_6,
- SFX_WMYCR_FIGHT_7,
- SFX_WMYCR_GENERIC_CRASH_1,
- SFX_WMYCR_GENERIC_CRASH_2,
- SFX_WMYCR_GENERIC_CRASH_3,
- SFX_WMYCR_GENERIC_CRASH_4,
- SFX_WMYCR_GENERIC_CRASH_5,
- SFX_WMYCR_GENERIC_CRASH_6,
- SFX_WMYCR_GENERIC_CRASH_7,
- SFX_WMYCR_GENERIC_CRASH_8,
- SFX_WMYCR_GENERIC_CRASH_9,
- SFX_WMYCR_GUN_COOL_1,
- SFX_WMYCR_GUN_COOL_2,
- SFX_WMYCR_GUN_COOL_3,
- SFX_WMYCR_GUN_COOL_4,
- SFX_WMYCR_GUN_COOL_5,
- SFX_WMYCR_JACKING_1,
- SFX_WMYCR_JACKING_2,
- SFX_WMYCR_JACKING_3,
- SFX_WMYCR_JACKING_4,
- SFX_WMYCR_JACKING_5,
- SFX_WMYCR_JACKING_6,
- SFX_WMYCR_MUGGED_1,
- SFX_WMYCR_MUGGED_2,
- SFX_WMYCR_MUGGED_3,
- SFX_WMYCR_MUGGING_1,
- SFX_WMYCR_MUGGING_2,
- SFX_WMYCR_MUGGING_3,
- SFX_WMYCR_MUGGING_4,
- SFX_WMYCR_MUGGING_5,
- SFX_WMYCR_TAXI_1,
-
- SFX_WMYJG_BLOCKED_1,
- SFX_WMYJG_BLOCKED_2,
- SFX_WMYJG_BLOCKED_3,
- SFX_WMYJG_BLOCKED_4,
- SFX_WMYJG_BLOCKED_5,
- SFX_WMYJG_BLOCKED_6,
- SFX_WMYJG_BLOCKED_7,
- SFX_WMYJG_BLOCKED_8,
- SFX_WMYJG_BLOCKED_9,
- SFX_WMYJG_BLOCKED_10,
- SFX_WMYJG_BUMP_1,
- SFX_WMYJG_BUMP_2,
- SFX_WMYJG_BUMP_3,
- SFX_WMYJG_BUMP_4,
- SFX_WMYJG_BUMP_5,
- SFX_WMYJG_BUMP_6,
- SFX_WMYJG_BUMP_7,
- SFX_WMYJG_BUMP_8,
- SFX_WMYJG_BUMP_9,
- SFX_WMYJG_BUMP_10,
- SFX_WMYJG_EYEING_1,
- SFX_WMYJG_EYEING_2,
- SFX_WMYJG_GUN_PANIC_1,
- SFX_WMYJG_GUN_PANIC_2,
- SFX_WMYJG_GUN_PANIC_3,
- SFX_WMYJG_GUN_PANIC_4,
- SFX_WMYJG_MUGGED_1,
- SFX_WMYJG_MUGGED_2,
- SFX_WMYJG_RUN_1,
- SFX_WMYJG_RUN_2,
- SFX_WMYJG_RUN_3,
- SFX_WMYJG_RUN_4,
- SFX_WMYJG_RUN_5,
- SFX_WMYJG_SAVED_1,
- SFX_WMYJG_TAXI_1,
-
- SFX_WMOST_BLOCKED_1,
- SFX_WMOST_BLOCKED_2,
- SFX_WMOST_BLOCKED_3,
- SFX_WMOST_BLOCKED_4,
- SFX_WMOST_BLOCKED_5,
- SFX_WMOST_BLOCKED_6,
- SFX_WMOST_BLOCKED_7,
- SFX_WMOST_BLOCKED_8,
- SFX_WMOST_BUMP_1,
- SFX_WMOST_BUMP_2,
- SFX_WMOST_BUMP_3,
- SFX_WMOST_BUMP_4,
- SFX_WMOST_BUMP_5,
- SFX_WMOST_BUMP_6,
- SFX_WMOST_BUMP_7,
- SFX_WMOST_BUMP_8,
- SFX_WMOST_BUMP_9,
- SFX_WMOST_BUMP_10,
- SFX_WMOST_CAR_CRASH_1,
- SFX_WMOST_CAR_CRASH_2,
- SFX_WMOST_CAR_CRASH_3,
- SFX_WMOST_CAR_CRASH_4,
- SFX_WMOST_CAR_CRASH_5,
- SFX_WMOST_CAR_CRASH_6,
- SFX_WMOST_CAR_CRASH_7,
- SFX_WMOST_CHAT_1,
- SFX_WMOST_CHAT_2,
- SFX_WMOST_CHAT_3,
- SFX_WMOST_CHAT_4,
- SFX_WMOST_CHAT_5,
- SFX_WMOST_CHAT_6,
- SFX_WMOST_CHAT_7,
- SFX_WMOST_CHAT_8,
- SFX_WMOST_CHAT_9,
- SFX_WMOST_DODGE_1,
- SFX_WMOST_DODGE_2,
- SFX_WMOST_DODGE_3,
- SFX_WMOST_DODGE_4,
- SFX_WMOST_DODGE_5,
- SFX_WMOST_DODGE_6,
- SFX_WMOST_DODGE_7,
- SFX_WMOST_DODGE_8,
- SFX_WMOST_EYEING_1,
- SFX_WMOST_EYEING_2,
- SFX_WMOST_FIGHT_1,
- SFX_WMOST_FIGHT_2,
- SFX_WMOST_FIGHT_3,
- SFX_WMOST_FIGHT_4,
- SFX_WMOST_FIGHT_5,
- SFX_WMOST_FIGHT_6,
- SFX_WMOST_FIGHT_7,
- SFX_WMOST_FIGHT_8,
- SFX_WMOST_GENERIC_CRASH_1,
- SFX_WMOST_GENERIC_CRASH_2,
- SFX_WMOST_GENERIC_CRASH_3,
- SFX_WMOST_GENERIC_CRASH_4,
- SFX_WMOST_GENERIC_CRASH_5,
- SFX_WMOST_GENERIC_CRASH_6,
- SFX_WMOST_GENERIC_CRASH_7,
- SFX_WMOST_GUN_COOL_1,
- SFX_WMOST_GUN_COOL_2,
- SFX_WMOST_GUN_COOL_3,
- SFX_WMOST_GUN_COOL_4,
- SFX_WMOST_GUN_COOL_5,
- SFX_WMOST_INNOCENT_1,
- SFX_WMOST_INNOCENT_2,
- SFX_WMOST_INNOCENT_3,
- SFX_WMOST_JACKED_1,
- SFX_WMOST_JACKED_2,
- SFX_WMOST_JACKED_3,
- SFX_WMOST_JACKED_4,
- SFX_WMOST_JEER_1,
- SFX_WMOST_JEER_2,
- SFX_WMOST_JEER_3,
- SFX_WMOST_JEER_4,
- SFX_WMOST_LOST_1,
- SFX_WMOST_LOST_2,
- SFX_WMOST_MUGGED_1,
- SFX_WMOST_MUGGED_2,
- SFX_WMOST_SAVED_1,
- SFX_WMOST_TAXI_1,
-
- SFX_BFOTR_BUMP_1,
- SFX_BFOTR_BUMP_2,
- SFX_BFOTR_BUMP_3,
- SFX_BFOTR_BUMP_4,
- SFX_BFOTR_BUMP_5,
- SFX_BFOTR_BUMP_6,
- SFX_BFOTR_BUMP_7,
- SFX_BFOTR_BUMP_8,
- SFX_BFOTR_BUMP_9,
- SFX_BFOTR_BUMP_10,
- SFX_BFOTR_CHAT_1,
- SFX_BFOTR_CHAT_2,
- SFX_BFOTR_CHAT_3,
- SFX_BFOTR_CHAT_4,
- SFX_BFOTR_CHAT_5,
- SFX_BFOTR_CHAT_6,
- SFX_BFOTR_CHAT_7,
- SFX_BFOTR_CHAT_8,
- SFX_BFOTR_CHAT_9,
- SFX_BFOTR_CHAT_10,
- SFX_BFOTR_CHAT_11,
- SFX_BFOTR_CHAT_12,
- SFX_BFOTR_CHAT_13,
- SFX_BFOTR_CHAT_14,
- SFX_BFOTR_CHAT_15,
- SFX_BFOTR_DODGE_1,
- SFX_BFOTR_DODGE_2,
- SFX_BFOTR_DODGE_3,
- SFX_BFOTR_DODGE_4,
- SFX_BFOTR_DODGE_5,
- SFX_BFOTR_DODGE_6,
- SFX_BFOTR_DODGE_7,
- SFX_BFOTR_DODGE_8,
- SFX_BFOTR_DODGE_9,
- SFX_BFOTR_FIGHT_1,
- SFX_BFOTR_FIGHT_2,
- SFX_BFOTR_FIGHT_3,
- SFX_BFOTR_FIGHT_4,
- SFX_BFOTR_FIGHT_5,
- SFX_BFOTR_FIGHT_6,
- SFX_BFOTR_GUN_COOL_1,
- SFX_BFOTR_GUN_COOL_2,
- SFX_BFOTR_GUN_COOL_3,
- SFX_BFOTR_GUN_COOL_4,
- SFX_BFOTR_GUN_COOL_5,
- SFX_BFOTR_GUN_COOL_6,
- SFX_BFOTR_MUGGED_1,
- SFX_BFOTR_MUGGED_2,
- SFX_BFOTR_MUGGING_1,
- SFX_BFOTR_MUGGING_2,
- SFX_BFOTR_MUGGING_3,
- SFX_BFOTR_SAVED_1,
- SFX_BFOTR_SHOCKED_1,
- SFX_BFOTR_SHOCKED_2,
- SFX_BFOTR_SHOCKED_3,
- SFX_BFOTR_SOLICIT_1,
- SFX_BFOTR_SOLICIT_2,
- SFX_BFOTR_SOLICIT_3,
- SFX_BFOTR_SOLICIT_4,
- SFX_BFOTR_SOLICIT_5,
- SFX_BFOTR_TAXI_1,
-
- SFX_WFYRI_BLOCKED_1,
- SFX_WFYRI_BLOCKED_2,
- SFX_WFYRI_BLOCKED_3,
- SFX_WFYRI_BLOCKED_4,
- SFX_WFYRI_BLOCKED_5,
- SFX_WFYRI_BLOCKED_6,
- SFX_WFYRI_BLOCKED_7,
- SFX_WFYRI_BLOCKED_8,
- SFX_WFYRI_BUMP_1,
- SFX_WFYRI_BUMP_2,
- SFX_WFYRI_BUMP_3,
- SFX_WFYRI_BUMP_4,
- SFX_WFYRI_BUMP_5,
- SFX_WFYRI_BUMP_6,
- SFX_WFYRI_BUMP_7,
- SFX_WFYRI_BUMP_8,
- SFX_WFYRI_BUMP_9,
- SFX_WFYRI_BUMP_10,
- SFX_WFYRI_CAR_CRASH_1,
- SFX_WFYRI_CAR_CRASH_2,
- SFX_WFYRI_CAR_CRASH_3,
- SFX_WFYRI_CAR_CRASH_4,
- SFX_WFYRI_CAR_CRASH_5,
- SFX_WFYRI_CAR_CRASH_6,
- SFX_WFYRI_CAR_CRASH_7,
- SFX_WFYRI_CAR_CRASH_8,
- SFX_WFYRI_CAR_CRASH_9,
- SFX_WFYRI_DODGE_1,
- SFX_WFYRI_DODGE_2,
- SFX_WFYRI_DODGE_3,
- SFX_WFYRI_DODGE_4,
- SFX_WFYRI_DODGE_5,
- SFX_WFYRI_DODGE_6,
- SFX_WFYRI_DODGE_7,
- SFX_WFYRI_DODGE_8,
- SFX_WFYRI_DODGE_9,
- SFX_WFYRI_EYEING_1,
- SFX_WFYRI_EYEING_2,
- SFX_WFYRI_GENERIC_CRASH_1,
- SFX_WFYRI_GENERIC_CRASH_2,
- SFX_WFYRI_GENERIC_CRASH_3,
- SFX_WFYRI_GENERIC_CRASH_4,
- SFX_WFYRI_GENERIC_CRASH_5,
- SFX_WFYRI_GENERIC_CRASH_6,
- SFX_WFYRI_GENERIC_CRASH_7,
- SFX_WFYRI_GENERIC_CRASH_8,
- SFX_WFYRI_GUN_PANIC_1,
- SFX_WFYRI_GUN_PANIC_2,
- SFX_WFYRI_GUN_PANIC_3,
- SFX_WFYRI_GUN_PANIC_4,
- SFX_WFYRI_GUN_PANIC_5,
- SFX_WFYRI_JACKED_1,
- SFX_WFYRI_JACKED_2,
- SFX_WFYRI_JACKED_3,
- SFX_WFYRI_JACKED_4,
- SFX_WFYRI_JACKED_5,
- SFX_WFYRI_JACKED_6,
- SFX_WFYRI_JACKED_7,
- SFX_WFYRI_LOST_1,
- SFX_WFYRI_LOST_2,
- SFX_WFYRI_MUGGED_1,
- SFX_WFYRI_MUGGED_2,
- SFX_WFYRI_RUN_1,
- SFX_WFYRI_RUN_2,
- SFX_WFYRI_RUN_3,
- SFX_WFYRI_RUN_4,
- SFX_WFYRI_RUN_5,
- SFX_WFYRI_SAVED_1,
- SFX_WFYRI_SHOCKED_1,
- SFX_WFYRI_SHOCKED_2,
- SFX_WFYRI_TAXI_1,
- SFX_BFYPR_BUMP_1,
- SFX_BFYPR_BUMP_2,
- SFX_BFYPR_BUMP_3,
- SFX_BFYPR_BUMP_4,
- SFX_BFYPR_BUMP_5,
- SFX_BFYPR_BUMP_6,
- SFX_BFYPR_BUMP_7,
- SFX_BFYPR_BUMP_8,
- SFX_BFYPR_BUMP_9,
- SFX_BFYPR_BUMP_10,
- SFX_BFYPR_BUMP_11,
- SFX_BFYPR_CHAT_1,
- SFX_BFYPR_CHAT_2,
- SFX_BFYPR_CHAT_3,
- SFX_BFYPR_CHAT_4,
- SFX_BFYPR_CHAT_5,
- SFX_BFYPR_CHAT_6,
- SFX_BFYPR_CHAT_7,
- SFX_BFYPR_CHAT_8,
- SFX_BFYPR_CHAT_9,
- SFX_BFYPR_CHAT_10,
- SFX_BFYPR_CHAT_11,
- SFX_BFYPR_CHAT_12,
- SFX_BFYPR_CHAT_13,
- SFX_BFYPR_DODGE_1,
- SFX_BFYPR_DODGE_2,
- SFX_BFYPR_DODGE_3,
- SFX_BFYPR_DODGE_4,
- SFX_BFYPR_DODGE_5,
- SFX_BFYPR_DODGE_6,
- SFX_BFYPR_DODGE_7,
- SFX_BFYPR_FIGHT_1,
- SFX_BFYPR_FIGHT_2,
- SFX_BFYPR_FIGHT_3,
- SFX_BFYPR_FIGHT_4,
- SFX_BFYPR_FIGHT_5,
- SFX_BFYPR_FIGHT_6,
- SFX_BFYPR_FIGHT_7,
- SFX_BFYPR_FUCKING_1,
- SFX_BFYPR_FUCKING_2,
- SFX_BFYPR_FUCKING_3,
- SFX_BFYPR_FUCKING_4,
- SFX_BFYPR_FUCKING_5,
- SFX_BFYPR_FUCKING_6,
- SFX_BFYPR_FUCKING_7,
- SFX_BFYPR_GUN_COOL_1,
- SFX_BFYPR_GUN_COOL_2,
- SFX_BFYPR_GUN_COOL_3,
- SFX_BFYPR_GUN_COOL_4,
- SFX_BFYPR_GUN_COOL_5,
- SFX_BFYPR_MUGGED_1,
- SFX_BFYPR_MUGGED_2,
- SFX_BFYPR_SAVED_1,
- SFX_BFYPR_SHOCKED_1,
- SFX_BFYPR_SHOCKED_2,
- SFX_BFYPR_SOLICIT_1,
- SFX_BFYPR_SOLICIT_2,
- SFX_BFYPR_SOLICIT_3,
- SFX_BFYPR_SOLICIT_4,
- SFX_BFYPR_SOLICIT_5,
- SFX_BFYPR_SOLICIT_6,
- SFX_BFYPR_SOLICIT_7,
- SFX_BFYPR_SOLICIT_8,
- SFX_BFYPR_SOLICIT_9,
- SFX_BFYPR_SOLICIT_10,
- SFX_BFYPR_SOLICIT_11,
- SFX_BFYPR_SOLICIT_12,
- SFX_BFYPR_SOLICIT_13,
- SFX_BFYPR_TAXI_1,
- SFX_BFYPR_TAXI_2,
-
- SFX_BMYRI_BLOCKED_1,
- SFX_BMYRI_BLOCKED_2,
- SFX_BMYRI_BLOCKED_3,
- SFX_BMYRI_BLOCKED_4,
- SFX_BMYRI_BLOCKED_5,
- SFX_BMYRI_BLOCKED_6,
- SFX_BMYRI_BUMP_1,
- SFX_BMYRI_BUMP_2,
- SFX_BMYRI_BUMP_3,
- SFX_BMYRI_BUMP_4,
- SFX_BMYRI_BUMP_5,
- SFX_BMYRI_BUMP_6,
- SFX_BMYRI_BUMP_7,
- SFX_BMYRI_CAR_CRASH_1,
- SFX_BMYRI_CAR_CRASH_2,
- SFX_BMYRI_CAR_CRASH_3,
- SFX_BMYRI_CAR_CRASH_4,
- SFX_BMYRI_CAR_CRASH_5,
- SFX_BMYRI_CAR_CRASH_6,
- SFX_BMYRI_CAR_CRASH_7,
- SFX_BMYRI_DODGE_1,
- SFX_BMYRI_DODGE_2,
- SFX_BMYRI_DODGE_3,
- SFX_BMYRI_DODGE_4,
- SFX_BMYRI_DODGE_5,
- SFX_BMYRI_DODGE_6,
- SFX_BMYRI_DODGE_7,
- SFX_BMYRI_DODGE_8,
- SFX_BMYRI_EYEING_1,
- SFX_BMYRI_GENERIC_CRASH_1,
- SFX_BMYRI_GENERIC_CRASH_2,
- SFX_BMYRI_GENERIC_CRASH_3,
- SFX_BMYRI_GENERIC_CRASH_4,
- SFX_BMYRI_GENERIC_CRASH_5,
- SFX_BMYRI_GENERIC_CRASH_6,
- SFX_BMYRI_GENERIC_CRASH_7,
- SFX_BMYRI_GUN_PANIC_1,
- SFX_BMYRI_GUN_PANIC_2,
- SFX_BMYRI_GUN_PANIC_3,
- SFX_BMYRI_GUN_PANIC_4,
- SFX_BMYRI_GUN_PANIC_5,
- SFX_BMYRI_GUN_PANIC_6,
- SFX_BMYRI_GUN_PANIC_7,
- SFX_BMYRI_JACKED_1,
- SFX_BMYRI_JACKED_2,
- SFX_BMYRI_JACKED_3,
- SFX_BMYRI_JACKED_4,
- SFX_BMYRI_LOST_1,
- SFX_BMYRI_LOST_2,
- SFX_BMYRI_MUGGED_1,
- SFX_BMYRI_MUGGED_2,
- SFX_BMYRI_RUN_1,
- SFX_BMYRI_RUN_2,
- SFX_BMYRI_RUN_3,
- SFX_BMYRI_RUN_4,
- SFX_BMYRI_SAVED_1,
- SFX_BMYRI_SHOCKED_1,
- SFX_BMYRI_SHOCKED_2,
- SFX_BMYRI_SHOCKED_3,
- SFX_BMYRI_TAXI_1,
- SFX_BMYBU_BLOCKED_1,
- SFX_BMYBU_BLOCKED_2,
- SFX_BMYBU_BLOCKED_3,
- SFX_BMYBU_BLOCKED_4,
- SFX_BMYBU_BLOCKED_5,
- SFX_BMYBU_BLOCKED_6,
- SFX_BMYBU_BLOCKED_7,
- SFX_BMYBU_BLOCKED_8,
- SFX_BMYBU_BUMP_1,
- SFX_BMYBU_BUMP_2,
- SFX_BMYBU_BUMP_3,
- SFX_BMYBU_BUMP_4,
- SFX_BMYBU_BUMP_5,
- SFX_BMYBU_BUMP_6,
- SFX_BMYBU_BUMP_7,
- SFX_BMYBU_CAR_CRASH_1,
- SFX_BMYBU_CAR_CRASH_2,
- SFX_BMYBU_CAR_CRASH_3,
- SFX_BMYBU_CAR_CRASH_4,
- SFX_BMYBU_CAR_CRASH_5,
- SFX_BMYBU_CAR_CRASH_6,
- SFX_BMYBU_CAR_CRASH_7,
- SFX_BMYBU_DODGE_1,
- SFX_BMYBU_DODGE_2,
- SFX_BMYBU_DODGE_3,
- SFX_BMYBU_DODGE_4,
- SFX_BMYBU_DODGE_5,
- SFX_BMYBU_DODGE_6,
- SFX_BMYBU_DODGE_7,
- SFX_BMYBU_DODGE_8,
- SFX_BMYBU_DODGE_9,
- SFX_BMYBU_DODGE_10,
- SFX_BMYBU_EYEING_1,
- SFX_BMYBU_EYEING_2,
- SFX_BMYBU_FIGHT_1,
- SFX_BMYBU_FIGHT_2,
- SFX_BMYBU_FIGHT_3,
- SFX_BMYBU_FIGHT_4,
- SFX_BMYBU_FIGHT_5,
- SFX_BMYBU_GENERIC_CRASH_1,
- SFX_BMYBU_GENERIC_CRASH_2,
- SFX_BMYBU_GENERIC_CRASH_3,
- SFX_BMYBU_GENERIC_CRASH_4,
- SFX_BMYBU_GENERIC_CRASH_5,
- SFX_BMYBU_GENERIC_CRASH_6,
- SFX_BMYBU_GENERIC_CRASH_7,
- SFX_BMYBU_GUN_PANIC_1,
- SFX_BMYBU_GUN_PANIC_2,
- SFX_BMYBU_GUN_PANIC_3,
- SFX_BMYBU_GUN_PANIC_4,
- SFX_BMYBU_GUN_PANIC_5,
- SFX_BMYBU_INNOCENT_1,
- SFX_BMYBU_INNOCENT_2,
- SFX_BMYBU_JACKED_1,
- SFX_BMYBU_JACKED_2,
- SFX_BMYBU_JACKED_3,
- SFX_BMYBU_JACKED_4,
- SFX_BMYBU_JACKED_5,
- SFX_BMYBU_JACKED_6,
- SFX_BMYBU_MUGGED_1,
- SFX_BMYBU_MUGGED_2,
- SFX_BMYBU_SAVED_1,
- SFX_BMYBU_SHOCKED_1,
- SFX_BMYBU_SHOCKED_2,
- SFX_BMYBU_TAXI_1,
-
- SFX_WMYSK_BUMP_1,
- SFX_WMYSK_BUMP_2,
- SFX_WMYSK_BUMP_3,
- SFX_WMYSK_BUMP_4,
- SFX_WMYSK_BUMP_5,
- SFX_WMYSK_BUMP_6,
- SFX_WMYSK_BUMP_7,
- SFX_WMYSK_BUMP_8,
- SFX_WMYSK_BUMP_9,
- SFX_WMYSK_BUMP_10,
- SFX_WMYSK_BUMP_11,
- SFX_WMYSK_BUMP_12,
- SFX_WMYSK_BUMP_13,
- SFX_WMYSK_BUMP_14,
- SFX_WMYSK_CHAT_1,
- SFX_WMYSK_CHAT_2,
- SFX_WMYSK_CHAT_3,
- SFX_WMYSK_CHAT_4,
- SFX_WMYSK_CHAT_5,
- SFX_WMYSK_CHAT_6,
- SFX_WMYSK_CHAT_7,
- SFX_WMYSK_CHAT_8,
- SFX_WMYSK_CHAT_9,
- SFX_WMYSK_CHAT_10,
- SFX_WMYSK_CHAT_11,
- SFX_WMYSK_CHAT_12,
- SFX_WMYSK_CHAT_13,
- SFX_WMYSK_DODGE_1,
- SFX_WMYSK_DODGE_2,
- SFX_WMYSK_DODGE_3,
- SFX_WMYSK_DODGE_4,
- SFX_WMYSK_DODGE_5,
- SFX_WMYSK_DODGE_6,
- SFX_WMYSK_DODGE_7,
- SFX_WMYSK_DODGE_8,
- SFX_WMYSK_DODGE_9,
- SFX_WMYSK_DODGE_10,
- SFX_WMYSK_EYEING_1,
- SFX_WMYSK_EYEING_2,
- SFX_WMYSK_FIGHT_1,
- SFX_WMYSK_FIGHT_2,
- SFX_WMYSK_FIGHT_3,
- SFX_WMYSK_FIGHT_4,
- SFX_WMYSK_FIGHT_5,
- SFX_WMYSK_GUN_PANIC_1,
- SFX_WMYSK_GUN_PANIC_2,
- SFX_WMYSK_GUN_PANIC_3,
- SFX_WMYSK_GUN_PANIC_4,
- SFX_WMYSK_GUN_PANIC_5,
- SFX_WMYSK_INNOCENT_1,
- SFX_WMYSK_INNOCENT_2,
- SFX_WMYSK_INNOCENT_3,
- SFX_WMYSK_LOST_1,
- SFX_WMYSK_LOST_2,
- SFX_WMYSK_MUGGED_1,
- SFX_WMYSK_MUGGED_2,
- SFX_WMYSK_SAVED_1,
- SFX_WMYSK_SAVED_2,
- SFX_WMYSK_SHOCKED_1,
- SFX_WMYSK_SHOCKED_2,
- SFX_WMYSK_TAXI_1,
-
- SFX_WMYCW_BLOCKED_1,
- SFX_WMYCW_BLOCKED_2,
- SFX_WMYCW_BLOCKED_3,
- SFX_WMYCW_BLOCKED_4,
- SFX_WMYCW_BLOCKED_5,
- SFX_WMYCW_BLOCKED_6,
- SFX_WMYCW_BLOCKED_7,
- SFX_WMYCW_BLOCKED_8,
- SFX_WMYCW_BLOCKED_9,
- SFX_WMYCW_BUMP_1,
- SFX_WMYCW_BUMP_2,
- SFX_WMYCW_BUMP_3,
- SFX_WMYCW_BUMP_4,
- SFX_WMYCW_BUMP_5,
- SFX_WMYCW_BUMP_6,
- SFX_WMYCW_BUMP_7,
- SFX_WMYCW_BUMP_8,
- SFX_WMYCW_BUMP_9,
- SFX_WMYCW_CAR_CRASH_1,
- SFX_WMYCW_CAR_CRASH_2,
- SFX_WMYCW_CAR_CRASH_3,
- SFX_WMYCW_CAR_CRASH_4,
- SFX_WMYCW_CAR_CRASH_5,
- SFX_WMYCW_CAR_CRASH_6,
- SFX_WMYCW_CAR_CRASH_7,
- SFX_WMYCW_CAR_CRASH_8,
- SFX_WMYCW_CAR_CRASH_9,
- SFX_WMYCW_CHAT_1,
- SFX_WMYCW_CHAT_2,
- SFX_WMYCW_CHAT_3,
- SFX_WMYCW_CHAT_4,
- SFX_WMYCW_CHAT_5,
- SFX_WMYCW_CHAT_6,
- SFX_WMYCW_CHAT_7,
- SFX_WMYCW_CHAT_8,
- SFX_WMYCW_CHAT_9,
- SFX_WMYCW_CHAT_10,
- SFX_WMYCW_CHAT_11,
- SFX_WMYCW_CHAT_12,
- SFX_WMYCW_CHAT_13,
- SFX_WMYCW_CHAT_14,
- SFX_WMYCW_CHAT_15,
- SFX_WMYCW_DODGE_1,
- SFX_WMYCW_DODGE_2,
- SFX_WMYCW_DODGE_3,
- SFX_WMYCW_DODGE_4,
- SFX_WMYCW_DODGE_5,
- SFX_WMYCW_DODGE_6,
- SFX_WMYCW_DODGE_7,
- SFX_WMYCW_DODGE_8,
- SFX_WMYCW_DODGE_9,
- SFX_WMYCW_DODGE_10,
- SFX_WMYCW_EYEING_1,
- SFX_WMYCW_EYEING_2,
- SFX_WMYCW_EYEING_3,
- SFX_WMYCW_FIGHT_1,
- SFX_WMYCW_FIGHT_2,
- SFX_WMYCW_FIGHT_3,
- SFX_WMYCW_FIGHT_4,
- SFX_WMYCW_FIGHT_5,
- SFX_WMYCW_FIGHT_6,
- SFX_WMYCW_FIGHT_7,
- SFX_WMYCW_FIGHT_8,
- SFX_WMYCW_GENERIC_CRASH_1,
- SFX_WMYCW_GENERIC_CRASH_2,
- SFX_WMYCW_GENERIC_CRASH_3,
- SFX_WMYCW_GENERIC_CRASH_4,
- SFX_WMYCW_GENERIC_CRASH_5,
- SFX_WMYCW_GENERIC_CRASH_6,
- SFX_WMYCW_GENERIC_CRASH_7,
- SFX_WMYCW_GUN_PANIC_1,
- SFX_WMYCW_GUN_PANIC_2,
- SFX_WMYCW_GUN_PANIC_3,
- SFX_WMYCW_GUN_PANIC_4,
- SFX_WMYCW_GUN_PANIC_5,
- SFX_WMYCW_GUN_PANIC_6,
- SFX_WMYCW_INNOCENT_1,
- SFX_WMYCW_INNOCENT_2,
- SFX_WMYCW_INNOCENT_3,
- SFX_WMYCW_JACKED_1,
- SFX_WMYCW_JACKED_2,
- SFX_WMYCW_JACKED_3,
- SFX_WMYCW_JACKED_4,
- SFX_WMYCW_JACKED_5,
- SFX_WMYCW_JACKED_6,
- SFX_WMYCW_JEER_1,
- SFX_WMYCW_JEER_2,
- SFX_WMYCW_JEER_3,
- SFX_WMYCW_JEER_4,
- SFX_WMYCW_JEER_5,
- SFX_WMYCW_JACKING_1,
- SFX_WMYCW_JACKING_2,
- SFX_WMYCW_JACKING_3,
- SFX_WMYCW_JACKING_4,
- SFX_WMYCW_LOST_1,
- SFX_WMYCW_LOST_2,
- SFX_WMYCW_MUGGED_1,
- SFX_WMYCW_TAXI_1,
-
- SFX_HFYST_BLOCKED_1,
- SFX_HFYST_BLOCKED_2,
- SFX_HFYST_BLOCKED_3,
- SFX_HFYST_BLOCKED_4,
- SFX_HFYST_BLOCKED_5,
- SFX_HFYST_BLOCKED_6,
- SFX_HFYST_BLOCKED_7,
- SFX_HFYST_BUMP_1,
- SFX_HFYST_BUMP_2,
- SFX_HFYST_BUMP_3,
- SFX_HFYST_BUMP_4,
- SFX_HFYST_BUMP_5,
- SFX_HFYST_BUMP_6,
- SFX_HFYST_BUMP_7,
- SFX_HFYST_BUMP_8,
- SFX_HFYST_BUMP_9,
- SFX_HFYST_BUMP_10,
- SFX_HFYST_CAR_CRASH_1,
- SFX_HFYST_CAR_CRASH_2,
- SFX_HFYST_CAR_CRASH_3,
- SFX_HFYST_CAR_CRASH_4,
- SFX_HFYST_CAR_CRASH_5,
- SFX_HFYST_CAR_CRASH_6,
- SFX_HFYST_CAR_CRASH_7,
- SFX_HFYST_CAR_CRASH_8,
- SFX_HFYST_CHAT_1,
- SFX_HFYST_CHAT_2,
- SFX_HFYST_CHAT_3,
- SFX_HFYST_CHAT_4,
- SFX_HFYST_CHAT_5,
- SFX_HFYST_CHAT_6,
- SFX_HFYST_CHAT_7,
- SFX_HFYST_CHAT_8,
- SFX_HFYST_CHAT_9,
- SFX_HFYST_DODGE_1,
- SFX_HFYST_DODGE_2,
- SFX_HFYST_DODGE_3,
- SFX_HFYST_DODGE_4,
- SFX_HFYST_DODGE_5,
- SFX_HFYST_DODGE_6,
- SFX_HFYST_DODGE_7,
- SFX_HFYST_DODGE_8,
- SFX_HFYST_DODGE_9,
- SFX_HFYST_DODGE_10,
- SFX_HFYST_FIGHT_1,
- SFX_HFYST_FIGHT_2,
- SFX_HFYST_FIGHT_3,
- SFX_HFYST_FIGHT_4,
- SFX_HFYST_FIGHT_5,
- SFX_HFYST_FIGHT_6,
- SFX_HFYST_FIGHT_7,
- SFX_HFYST_GENERIC_CRASH_1,
- SFX_HFYST_GENERIC_CRASH_2,
- SFX_HFYST_GENERIC_CRASH_3,
- SFX_HFYST_GENERIC_CRASH_4,
- SFX_HFYST_GENERIC_CRASH_5,
- SFX_HFYST_GENERIC_CRASH_6,
- SFX_HFYST_GENERIC_CRASH_7,
- SFX_HFYST_GUN_COOL_1,
- SFX_HFYST_GUN_COOL_2,
- SFX_HFYST_GUN_COOL_3,
- SFX_HFYST_GUN_COOL_4,
- SFX_HFYST_GUN_COOL_5,
- SFX_HFYST_JACKED_1,
- SFX_HFYST_JACKED_2,
- SFX_HFYST_JACKED_3,
- SFX_HFYST_JACKED_4,
- SFX_HFYST_JACKED_5,
- SFX_HFYST_JACKED_6,
- SFX_HFYST_JACKING_1,
- SFX_HFYST_JACKING_2,
- SFX_HFYST_JACKING_3,
- SFX_HFYST_JACKING_4,
- SFX_HFYST_LOST_1,
- SFX_HFYST_LOST_2,
- SFX_HFYST_MUGGED_1,
- SFX_HFYST_MUGGED_2,
- SFX_HFYST_MUGGING_1,
- SFX_HFYST_MUGGING_2,
- SFX_HFYST_MUGGING_3,
- SFX_HFYST_MUGGING_4,
- SFX_HFYST_TAXI_1,
-
- SFX_HMOST_BLOCKED_1,
- SFX_HMOST_BLOCKED_2,
- SFX_HMOST_BLOCKED_3,
- SFX_HMOST_BLOCKED_4,
- SFX_HMOST_BLOCKED_5,
- SFX_HMOST_BLOCKED_6,
- SFX_HMOST_BLOCKED_7,
- SFX_HMOST_BUMP_1,
- SFX_HMOST_BUMP_2,
- SFX_HMOST_BUMP_3,
- SFX_HMOST_BUMP_4,
- SFX_HMOST_BUMP_5,
- SFX_HMOST_BUMP_6,
- SFX_HMOST_BUMP_7,
- SFX_HMOST_BUMP_8,
- SFX_HMOST_BUMP_9,
- SFX_HMOST_BUMP_10,
- SFX_HMOST_CAR_CRASH_1,
- SFX_HMOST_CAR_CRASH_2,
- SFX_HMOST_CAR_CRASH_3,
- SFX_HMOST_CAR_CRASH_4,
- SFX_HMOST_CAR_CRASH_5,
- SFX_HMOST_CAR_CRASH_6,
- SFX_HMOST_CAR_CRASH_7,
- SFX_HMOST_CHAT_1,
- SFX_HMOST_CHAT_2,
- SFX_HMOST_CHAT_3,
- SFX_HMOST_CHAT_4,
- SFX_HMOST_CHAT_5,
- SFX_HMOST_CHAT_6,
- SFX_HMOST_CHAT_7,
- SFX_HMOST_CHAT_8,
- SFX_HMOST_CHAT_9,
- SFX_HMOST_CHAT_10,
- SFX_HMOST_CHAT_11,
- SFX_HMOST_DODGE_1,
- SFX_HMOST_DODGE_2,
- SFX_HMOST_DODGE_3,
- SFX_HMOST_DODGE_4,
- SFX_HMOST_DODGE_5,
- SFX_HMOST_DODGE_6,
- SFX_HMOST_DODGE_7,
- SFX_HMOST_DODGE_8,
- SFX_HMOST_DODGE_9,
- SFX_HMOST_EYEING_1,
- SFX_HMOST_FIGHT_1,
- SFX_HMOST_FIGHT_2,
- SFX_HMOST_FIGHT_3,
- SFX_HMOST_FIGHT_4,
- SFX_HMOST_FIGHT_5,
- SFX_HMOST_FIGHT_6,
- SFX_HMOST_FIGHT_7,
- SFX_HMOST_FIGHT_8,
- SFX_HMOST_GENERIC_CRASH_1,
- SFX_HMOST_GENERIC_CRASH_2,
- SFX_HMOST_GENERIC_CRASH_3,
- SFX_HMOST_GENERIC_CRASH_4,
- SFX_HMOST_GENERIC_CRASH_5,
- SFX_HMOST_GENERIC_CRASH_6,
- SFX_HMOST_GENERIC_CRASH_7,
- SFX_HMOST_GUN_COOL_1,
- SFX_HMOST_GUN_COOL_2,
- SFX_HMOST_GUN_COOL_3,
- SFX_HMOST_GUN_COOL_4,
- SFX_HMOST_GUN_COOL_5,
- SFX_HMOST_JACKED_1,
- SFX_HMOST_JACKED_2,
- SFX_HMOST_JACKED_3,
- SFX_HMOST_JACKED_4,
- SFX_HMOST_JACKED_5,
- SFX_HMOST_JACKED_6,
- SFX_HMOST_JACKING_1,
- SFX_HMOST_JACKING_2,
- SFX_HMOST_JACKING_3,
- SFX_HMOST_LOST_1,
- SFX_HMOST_LOST_2,
- SFX_HMOST_MUGGED_1,
- SFX_HMOST_MUGGED_2,
- SFX_HMOST_TAXI_1,
-
- SFX_HMYRI_BLOCKED_1,
- SFX_HMYRI_BLOCKED_2,
- SFX_HMYRI_BLOCKED_3,
- SFX_HMYRI_BLOCKED_4,
- SFX_HMYRI_BLOCKED_5,
- SFX_HMYRI_BLOCKED_6,
- SFX_HMYRI_BLOCKED_7,
- SFX_HMYRI_BUMP_1,
- SFX_HMYRI_BUMP_2,
- SFX_HMYRI_BUMP_3,
- SFX_HMYRI_BUMP_4,
- SFX_HMYRI_BUMP_5,
- SFX_HMYRI_BUMP_6,
- SFX_HMYRI_BUMP_7,
- SFX_HMYRI_BUMP_8,
- SFX_HMYRI_BUMP_9,
- SFX_HMYRI_BUMP_10,
- SFX_HMYRI_CAR_CRASH_1,
- SFX_HMYRI_CAR_CRASH_2,
- SFX_HMYRI_CAR_CRASH_3,
- SFX_HMYRI_CAR_CRASH_4,
- SFX_HMYRI_CAR_CRASH_5,
- SFX_HMYRI_CAR_CRASH_6,
- SFX_HMYRI_CAR_CRASH_7,
- SFX_HMYRI_CAR_CRASH_8,
- SFX_HMYRI_DODGE_1,
- SFX_HMYRI_DODGE_2,
- SFX_HMYRI_DODGE_3,
- SFX_HMYRI_DODGE_4,
- SFX_HMYRI_DODGE_5,
- SFX_HMYRI_DODGE_6,
- SFX_HMYRI_DODGE_7,
- SFX_HMYRI_DODGE_8,
- SFX_HMYRI_DODGE_9,
- SFX_HMYRI_FIGHT_1,
- SFX_HMYRI_FIGHT_2,
- SFX_HMYRI_FIGHT_3,
- SFX_HMYRI_FIGHT_4,
- SFX_HMYRI_FIGHT_5,
- SFX_HMYRI_GENERIC_CRASH_1,
- SFX_HMYRI_GENERIC_CRASH_2,
- SFX_HMYRI_GENERIC_CRASH_3,
- SFX_HMYRI_GENERIC_CRASH_4,
- SFX_HMYRI_GENERIC_CRASH_5,
- SFX_HMYRI_GENERIC_CRASH_6,
- SFX_HMYRI_GENERIC_CRASH_7,
- SFX_HMYRI_GENERIC_CRASH_8,
- SFX_HMYRI_GENERIC_CRASH_9,
- SFX_HMYRI_GENERIC_CRASH_10,
- SFX_HMYRI_GENERIC_CRASH_11,
- SFX_HMYRI_GENERIC_CRASH_12,
- SFX_HMYRI_GUN_PANIC_1,
- SFX_HMYRI_GUN_PANIC_2,
- SFX_HMYRI_GUN_PANIC_3,
- SFX_HMYRI_GUN_PANIC_4,
- SFX_HMYRI_GUN_PANIC_5,
- SFX_HMYRI_GUN_PANIC_6,
- SFX_HMYRI_GUN_PANIC_7,
- SFX_HMYRI_JACKED_1,
- SFX_HMYRI_JACKED_2,
- SFX_HMYRI_JACKED_3,
- SFX_HMYRI_JACKED_4,
- SFX_HMYRI_JACKED_5,
- SFX_HMYRI_JACKED_6,
- SFX_HMYRI_JACKED_7,
- SFX_HMYRI_JACKED_8,
- SFX_HMYRI_JACKING_1,
- SFX_HMYRI_JACKING_2,
- SFX_HMYRI_JACKING_3,
- SFX_HMYRI_MUGGED_1,
- SFX_HMYRI_SHOCKED_1,
- SFX_HMYRI_SHOCKED_2,
- SFX_HMYRI_SHOCKED_3,
-
- SFX_HFYPR_BUMP_1,
- SFX_HFYPR_BUMP_2,
- SFX_HFYPR_BUMP_3,
- SFX_HFYPR_BUMP_4,
- SFX_HFYPR_BUMP_5,
- SFX_HFYPR_BUMP_6,
- SFX_HFYPR_BUMP_7,
- SFX_HFYPR_BUMP_8,
- SFX_HFYPR_BUMP_9,
- SFX_HFYPR_BUMP_10,
- SFX_HFYPR_CHAT_1,
- SFX_HFYPR_CHAT_2,
- SFX_HFYPR_CHAT_3,
- SFX_HFYPR_CHAT_4,
- SFX_HFYPR_CHAT_5,
- SFX_HFYPR_CHAT_6,
- SFX_HFYPR_CHAT_7,
- SFX_HFYPR_CHAT_8,
- SFX_HFYPR_CHAT_9,
- SFX_HFYPR_CHAT_10,
- SFX_HFYPR_CHAT_11,
- SFX_HFYPR_CHAT_12,
- SFX_HFYPR_DODGE_1,
- SFX_HFYPR_DODGE_2,
- SFX_HFYPR_DODGE_3,
- SFX_HFYPR_DODGE_4,
- SFX_HFYPR_DODGE_5,
- SFX_HFYPR_DODGE_6,
- SFX_HFYPR_DODGE_7,
- SFX_HFYPR_DODGE_8,
- SFX_HFYPR_DODGE_9,
- SFX_HFYPR_EYEING_1,
- SFX_HFYPR_EYEING_2,
- SFX_HFYPR_EYEING_3,
- SFX_HFYPR_FIGHT_1,
- SFX_HFYPR_FIGHT_2,
- SFX_HFYPR_FIGHT_3,
- SFX_HFYPR_FIGHT_4,
- SFX_HFYPR_FIGHT_5,
- SFX_HFYPR_FIGHT_6,
- SFX_HFYPR_FIGHT_7,
- SFX_HFYPR_FIGHT_8,
- SFX_HFYPR_FIGHT_9,
- SFX_HFYPR_FIGHT_10,
- SFX_HFYPR_FUCKING_1,
- SFX_HFYPR_FUCKING_2,
- SFX_HFYPR_FUCKING_3,
- SFX_HFYPR_FUCKING_4,
- SFX_HFYPR_FUCKING_5,
- SFX_HFYPR_FUCKING_6,
- SFX_HFYPR_FUCKING_7,
- SFX_HFYPR_FUCKING_8,
- SFX_HFYPR_GUN_COOL_1,
- SFX_HFYPR_GUN_COOL_2,
- SFX_HFYPR_GUN_COOL_3,
- SFX_HFYPR_GUN_COOL_4,
- SFX_HFYPR_GUN_COOL_5,
- SFX_HFYPR_GUN_COOL_6,
- SFX_HFYPR_MUGGED_1,
- SFX_HFYPR_MUGGED_2,
- SFX_HFYPR_SAVED_1,
- SFX_HFYPR_SOLICIT_1,
- SFX_HFYPR_SOLICIT_2,
- SFX_HFYPR_SOLICIT_3,
- SFX_HFYPR_SOLICIT_4,
- SFX_HFYPR_SOLICIT_5,
- SFX_HFYPR_SOLICIT_6,
- SFX_HFYPR_SOLICIT_7,
- SFX_HFYPR_SOLICIT_8,
- SFX_HFYPR_SOLICIT_9,
- SFX_HFYPR_SOLICIT_10,
- SFX_HFYPR_SOLICIT_11,
- SFX_HFYPR_SOLICIT_12,
- SFX_HFYPR_SOLICIT_13,
- SFX_HFYPR_SOLICIT_14,
- SFX_HFYPR_TAXI_1,
-
- SFX_HFYMD_BUMP_1,
- SFX_HFYMD_BUMP_2,
- SFX_HFYMD_BUMP_3,
- SFX_HFYMD_BUMP_4,
- SFX_HFYMD_BUMP_5,
- SFX_HFYMD_BUMP_6,
- SFX_HFYMD_BUMP_7,
- SFX_HFYMD_BUMP_8,
- SFX_HFYMD_BUMP_9,
- SFX_HFYMD_DODGE_1,
- SFX_HFYMD_DODGE_2,
- SFX_HFYMD_DODGE_3,
- SFX_HFYMD_DODGE_4,
- SFX_HFYMD_DODGE_5,
- SFX_HFYMD_DODGE_6,
- SFX_HFYMD_DODGE_7,
- SFX_HFYMD_DODGE_8,
- SFX_HFYMD_FIGHT_1,
- SFX_HFYMD_FIGHT_2,
- SFX_HFYMD_FIGHT_3,
- SFX_HFYMD_FIGHT_4,
- SFX_HFYMD_FIGHT_5,
- SFX_HFYMD_FIGHT_6,
- SFX_HFYMD_FIGHT_7,
- SFX_HFYMD_FIGHT_8,
- SFX_HFYMD_FIGHT_9,
- SFX_HFYMD_GUN_PANIC_1,
- SFX_HFYMD_GUN_PANIC_2,
- SFX_HFYMD_GUN_PANIC_3,
- SFX_HFYMD_GUN_PANIC_4,
- SFX_HFYMD_GUN_PANIC_5,
- SFX_HFYMD_MUGGED_1,
- SFX_HFYMD_MUGGED_2,
- SFX_HFYMD_SAVED_1,
- SFX_HFYMD_SAVED_2,
- SFX_HFYMD_SAVED_3,
- SFX_HFYMD_SOLICIT_1,
- SFX_HFYMD_SOLICIT_2,
- SFX_HFYMD_SOLICIT_3,
- SFX_HFYMD_SOLICIT_4,
- SFX_HFYMD_SOLICIT_5,
- SFX_HFYMD_SOLICIT_6,
- SFX_HFYMD_SOLICIT_7,
- SFX_HFYMD_SOLICIT_8,
- SFX_HFYMD_SOLICIT_9,
- SFX_HFYMD_SOLICIT_10,
- SFX_HFYMD_SOLICIT_11,
- SFX_HFYMD_SOLICIT_12,
- SFX_HFYMD_SOLICIT_13,
- SFX_HFYMD_SOLICIT_14,
- SFX_HFYMD_SOLICIT_15,
- SFX_HFYMD_TAXI_1,
-
- SFX_WFOBE_BLOCKED_1,
- SFX_WFOBE_BLOCKED_2,
- SFX_WFOBE_BLOCKED_3,
- SFX_WFOBE_BLOCKED_4,
- SFX_WFOBE_BLOCKED_5,
- SFX_WFOBE_BLOCKED_6,
- SFX_WFOBE_BLOCKED_7,
- SFX_WFOBE_BLOCKED_8,
- SFX_WFOBE_BUMP_1,
- SFX_WFOBE_BUMP_2,
- SFX_WFOBE_BUMP_3,
- SFX_WFOBE_BUMP_4,
- SFX_WFOBE_BUMP_5,
- SFX_WFOBE_BUMP_6,
- SFX_WFOBE_BUMP_7,
- SFX_WFOBE_BUMP_8,
- SFX_WFOBE_BUMP_9,
- SFX_WFOBE_BUMP_10,
- SFX_WFOBE_CAR_CRASH_1,
- SFX_WFOBE_CAR_CRASH_2,
- SFX_WFOBE_CAR_CRASH_3,
- SFX_WFOBE_CAR_CRASH_4,
- SFX_WFOBE_CAR_CRASH_5,
- SFX_WFOBE_CAR_CRASH_6,
- SFX_WFOBE_CAR_CRASH_7,
- SFX_WFOBE_CHAT_1,
- SFX_WFOBE_CHAT_2,
- SFX_WFOBE_CHAT_3,
- SFX_WFOBE_CHAT_4,
- SFX_WFOBE_CHAT_5,
- SFX_WFOBE_CHAT_6,
- SFX_WFOBE_CHAT_7,
- SFX_WFOBE_CHAT_8,
- SFX_WFOBE_CHAT_9,
- SFX_WFOBE_CHAT_10,
- SFX_WFOBE_DODGE_1,
- SFX_WFOBE_DODGE_2,
- SFX_WFOBE_DODGE_3,
- SFX_WFOBE_DODGE_4,
- SFX_WFOBE_DODGE_5,
- SFX_WFOBE_DODGE_6,
- SFX_WFOBE_DODGE_7,
- SFX_WFOBE_DODGE_8,
- SFX_WFOBE_GENERIC_CRASH_1,
- SFX_WFOBE_GENERIC_CRASH_2,
- SFX_WFOBE_GENERIC_CRASH_3,
- SFX_WFOBE_GENERIC_CRASH_4,
- SFX_WFOBE_GENERIC_CRASH_5,
- SFX_WFOBE_GENERIC_CRASH_6,
- SFX_WFOBE_GENERIC_CRASH_7,
- SFX_WFOBE_GENERIC_CRASH_8,
- SFX_WFOBE_GENERIC_CRASH_9,
- SFX_WFOBE_GENERIC_CRASH_10,
- SFX_WFOBE_GUN_PANIC_1,
- SFX_WFOBE_GUN_PANIC_2,
- SFX_WFOBE_GUN_PANIC_3,
- SFX_WFOBE_GUN_PANIC_4,
- SFX_WFOBE_GUN_PANIC_5,
- SFX_WFOBE_JACKED_1,
- SFX_WFOBE_JACKED_2,
- SFX_WFOBE_JACKED_3,
- SFX_WFOBE_JACKED_4,
- SFX_WFOBE_RUN_1,
- SFX_WFOBE_RUN_2,
- SFX_WFOBE_RUN_3,
- SFX_WFOBE_RUN_4,
- SFX_WFOBE_RUN_5,
- SFX_WFOBE_RUN_6,
- SFX_WFOBE_RUN_7,
- SFX_WFOBE_SAVED_1,
- SFX_WFOBE_SAVED_2,
- SFX_WFOBE_SAVED_3,
- SFX_WFOBE_SHOCKED_1,
- SFX_WFOBE_SHOCKED_2,
- SFX_WFOBE_SHOCKED_3,
- SFX_WFOBE_TAXI_1,
- SFX_WFOBE_TAXI_2,
-
- SFX_BFYRI_BLOCKED_1,
- SFX_BFYRI_BLOCKED_2,
- SFX_BFYRI_BLOCKED_3,
- SFX_BFYRI_BLOCKED_4,
- SFX_BFYRI_BLOCKED_5,
- SFX_BFYRI_BLOCKED_6,
- SFX_BFYRI_BLOCKED_7,
- SFX_BFYRI_BLOCKED_8,
- SFX_BFYRI_BLOCKED_9,
- SFX_BFYRI_BUMP_1,
- SFX_BFYRI_BUMP_2,
- SFX_BFYRI_BUMP_3,
- SFX_BFYRI_BUMP_4,
- SFX_BFYRI_BUMP_5,
- SFX_BFYRI_BUMP_6,
- SFX_BFYRI_BUMP_7,
- SFX_BFYRI_BUMP_8,
- SFX_BFYRI_BUMP_9,
- SFX_BFYRI_CAR_CRASH_1,
- SFX_BFYRI_CAR_CRASH_2,
- SFX_BFYRI_CAR_CRASH_3,
- SFX_BFYRI_CAR_CRASH_4,
- SFX_BFYRI_CAR_CRASH_5,
- SFX_BFYRI_CAR_CRASH_6,
- SFX_BFYRI_CAR_CRASH_7,
- SFX_BFYRI_CAR_CRASH_8,
- SFX_BFYRI_DODGE_1,
- SFX_BFYRI_DODGE_2,
- SFX_BFYRI_DODGE_3,
- SFX_BFYRI_DODGE_4,
- SFX_BFYRI_DODGE_5,
- SFX_BFYRI_DODGE_6,
- SFX_BFYRI_DODGE_7,
- SFX_BFYRI_DODGE_8,
- SFX_BFYRI_EYEING_1,
- SFX_BFYRI_EYEING_2,
- SFX_BFYRI_EYEING_3,
- SFX_BFYRI_GENERIC_CRASH_1,
- SFX_BFYRI_GENERIC_CRASH_2,
- SFX_BFYRI_GENERIC_CRASH_3,
- SFX_BFYRI_GENERIC_CRASH_4,
- SFX_BFYRI_GENERIC_CRASH_5,
- SFX_BFYRI_GENERIC_CRASH_6,
- SFX_BFYRI_GENERIC_CRASH_7,
- SFX_BFYRI_GUN_PANIC_1,
- SFX_BFYRI_GUN_PANIC_2,
- SFX_BFYRI_GUN_PANIC_3,
- SFX_BFYRI_GUN_PANIC_4,
- SFX_BFYRI_JACKED_1,
- SFX_BFYRI_JACKED_2,
- SFX_BFYRI_JACKED_3,
- SFX_BFYRI_JACKED_4,
- SFX_BFYRI_JACKED_5,
- SFX_BFYRI_JACKED_6,
- SFX_BFYRI_JACKED_7,
- SFX_BFYRI_JACKED_8,
- SFX_BFYRI_JACKING_1,
- SFX_BFYRI_JACKING_2,
- SFX_BFYRI_JACKING_3,
- SFX_BFYRI_JACKING_4,
- SFX_BFYRI_LOST_1,
- SFX_BFYRI_LOST_2,
- SFX_BFYRI_MUGGED_1,
- SFX_BFYRI_MUGGED_2,
- SFX_BFYRI_MUGGED_3,
- SFX_BFYRI_RUN_1,
- SFX_BFYRI_RUN_2,
- SFX_BFYRI_RUN_3,
- SFX_BFYRI_RUN_4,
- SFX_BFYRI_RUN_5,
- SFX_BFYRI_RUN_6,
- SFX_BFYRI_SAVED_1,
- SFX_BFYRI_SAVED_2,
- SFX_BFYRI_SHOCKED_1,
- SFX_BFYRI_SHOCKED_2,
- SFX_BFYRI_SHOCKED_3,
- SFX_BFYRI_SHOCKED_4,
- SFX_BFYRI_TAXI_1,
-
- SFX_BFYBE_BLOCKED_1,
- SFX_BFYBE_BLOCKED_2,
- SFX_BFYBE_BLOCKED_3,
- SFX_BFYBE_BLOCKED_4,
- SFX_BFYBE_BLOCKED_5,
- SFX_BFYBE_BLOCKED_6,
- SFX_BFYBE_BLOCKED_7,
- SFX_BFYBE_BLOCKED_8,
- SFX_BFYBE_BLOCKED_9,
- SFX_BFYBE_BLOCKED_10,
- SFX_BFYBE_BLOCKED_11,
- SFX_BFYBE_BLOCKED_12,
- SFX_BFYBE_CAR_CRASH_1,
- SFX_BFYBE_CAR_CRASH_2,
- SFX_BFYBE_CAR_CRASH_3,
- SFX_BFYBE_CAR_CRASH_4,
- SFX_BFYBE_CAR_CRASH_5,
- SFX_BFYBE_CAR_CRASH_6,
- SFX_BFYBE_CAR_CRASH_7,
- SFX_BFYBE_CAR_CRASH_8,
- SFX_BFYBE_CAR_CRASH_9,
- SFX_BFYBE_CAR_CRASH_10,
- SFX_BFYBE_CHAT_1,
- SFX_BFYBE_CHAT_2,
- SFX_BFYBE_CHAT_3,
- SFX_BFYBE_CHAT_4,
- SFX_BFYBE_CHAT_5,
- SFX_BFYBE_CHAT_6,
- SFX_BFYBE_CHAT_7,
- SFX_BFYBE_CHAT_8,
- SFX_BFYBE_CHAT_9,
- SFX_BFYBE_CHAT_10,
- SFX_BFYBE_CHAT_11,
- SFX_BFYBE_CHAT_12,
- SFX_BFYBE_CHAT_13,
- SFX_BFYBE_CHAT_14,
- SFX_BFYBE_CHAT_15,
- SFX_BFYBE_CHAT_16,
- SFX_BFYBE_DODGE_1,
- SFX_BFYBE_DODGE_2,
- SFX_BFYBE_DODGE_3,
- SFX_BFYBE_DODGE_4,
- SFX_BFYBE_DODGE_5,
- SFX_BFYBE_DODGE_6,
- SFX_BFYBE_DODGE_7,
- SFX_BFYBE_DODGE_8,
- SFX_BFYBE_DODGE_9,
- SFX_BFYBE_DODGE_10,
- SFX_BFYBE_EYEING_1,
- SFX_BFYBE_EYEING_2,
- SFX_BFYBE_EYEING_3,
- SFX_BFYBE_EYEING_4,
- SFX_BFYBE_GENERIC_CRASH_1,
- SFX_BFYBE_GENERIC_CRASH_2,
- SFX_BFYBE_GENERIC_CRASH_3,
- SFX_BFYBE_GENERIC_CRASH_4,
- SFX_BFYBE_GENERIC_CRASH_5,
- SFX_BFYBE_GENERIC_CRASH_6,
- SFX_BFYBE_GENERIC_CRASH_7,
- SFX_BFYBE_GENERIC_CRASH_8,
- SFX_BFYBE_GUN_COOL_1,
- SFX_BFYBE_GUN_COOL_2,
- SFX_BFYBE_GUN_COOL_3,
- SFX_BFYBE_GUN_COOL_4,
- SFX_BFYBE_GUN_COOL_5,
- SFX_BFYBE_GUN_COOL_6,
- SFX_BFYBE_JACKED_1,
- SFX_BFYBE_JACKED_2,
- SFX_BFYBE_JACKED_3,
- SFX_BFYBE_JACKED_4,
- SFX_BFYBE_JACKED_5,
- SFX_BFYBE_JACKED_6,
- SFX_BFYBE_JACKED_7,
- SFX_BFYBE_JACKED_8,
- SFX_BFYBE_LOST_1,
- SFX_BFYBE_LOST_2,
- SFX_BFYBE_LOST_3,
- SFX_BFYBE_LOST_4,
- SFX_BFYBE_MUGGED_1,
- SFX_BFYBE_MUGGED_2,
- SFX_BFYBE_MUGGED_3,
- SFX_BFYBE_MUGGED_4,
- SFX_BFYBE_MUGGED_5,
- SFX_BFYBE_RUN_1,
- SFX_BFYBE_RUN_2,
- SFX_BFYBE_RUN_3,
- SFX_BFYBE_RUN_4,
- SFX_BFYBE_RUN_5,
- SFX_BFYBE_RUN_6,
- SFX_BFYBE_SAVED_1,
- SFX_BFYBE_SAVED_2,
- SFX_BFYBE_SHOCKED_1,
- SFX_BFYBE_SHOCKED_2,
- SFX_BFYBE_SHOCKED_3,
- SFX_BFYBE_SHOCKED_4,
- SFX_BFYBE_TAXI_1,
- SFX_BFYBE_TAXI_2,
- SFX_BFYBE_TAXI_3,
-
- SFX_BMOTR_BUMP_1,
- SFX_BMOTR_BUMP_2,
- SFX_BMOTR_BUMP_3,
- SFX_BMOTR_BUMP_4,
- SFX_BMOTR_BUMP_5,
- SFX_BMOTR_BUMP_6,
- SFX_BMOTR_BUMP_7,
- SFX_BMOTR_BUMP_8,
- SFX_BMOTR_BUMP_9,
- SFX_BMOTR_BUMP_10,
- SFX_BMOTR_CHAT_1,
- SFX_BMOTR_CHAT_2,
- SFX_BMOTR_CHAT_3,
- SFX_BMOTR_CHAT_4,
- SFX_BMOTR_CHAT_5,
- SFX_BMOTR_CHAT_6,
- SFX_BMOTR_CHAT_7,
- SFX_BMOTR_CHAT_8,
- SFX_BMOTR_CHAT_9,
- SFX_BMOTR_CHAT_10,
- SFX_BMOTR_DODGE_1,
- SFX_BMOTR_DODGE_2,
- SFX_BMOTR_DODGE_3,
- SFX_BMOTR_DODGE_4,
- SFX_BMOTR_DODGE_5,
- SFX_BMOTR_DODGE_6,
- SFX_BMOTR_DODGE_7,
- SFX_BMOTR_DODGE_8,
- SFX_BMOTR_DODGE_9,
- SFX_BMOTR_DODGE_10,
- SFX_BMOTR_DODGE_11,
- SFX_BMOTR_EYEING_1,
- SFX_BMOTR_EYEING_2,
- SFX_BMOTR_EYEING_3,
- SFX_BMOTR_GUN_COOL_1,
- SFX_BMOTR_GUN_COOL_2,
- SFX_BMOTR_GUN_COOL_3,
- SFX_BMOTR_GUN_COOL_4,
- SFX_BMOTR_GUN_COOL_5,
- SFX_BMOTR_INNOCENT_1,
- SFX_BMOTR_INNOCENT_2,
- SFX_BMOTR_INNOCENT_3,
- SFX_BMOTR_INNOCENT_4,
- SFX_BMOTR_RUN_1,
- SFX_BMOTR_RUN_2,
- SFX_BMOTR_RUN_3,
- SFX_BMOTR_RUN_4,
- SFX_BMOTR_RUN_5,
- SFX_BMOTR_RUN_6,
- SFX_BMOTR_RUN_7,
- SFX_BMOTR_SAVED_1,
- SFX_BMOTR_SOLICIT_1,
- SFX_BMOTR_SOLICIT_2,
- SFX_BMOTR_SOLICIT_3,
- SFX_BMOTR_SOLICIT_4,
- SFX_BMOTR_SOLICIT_5,
- SFX_BMOTR_SOLICIT_6,
- SFX_BMOTR_SOLICIT_7,
- SFX_BMOTR_TAXI_1,
-
- SFX_BMYST_BLOCKED_1,
- SFX_BMYST_BLOCKED_2,
- SFX_BMYST_BLOCKED_3,
- SFX_BMYST_BLOCKED_4,
- SFX_BMYST_BLOCKED_5,
- SFX_BMYST_BLOCKED_6,
- SFX_BMYST_BLOCKED_7,
- SFX_BMYST_BLOCKED_8,
- SFX_BMYST_BUMP_1,
- SFX_BMYST_BUMP_2,
- SFX_BMYST_BUMP_3,
- SFX_BMYST_BUMP_4,
- SFX_BMYST_BUMP_5,
- SFX_BMYST_BUMP_6,
- SFX_BMYST_BUMP_7,
- SFX_BMYST_BUMP_8,
- SFX_BMYST_BUMP_9,
- SFX_BMYST_BUMP_10,
- SFX_BMYST_BUMP_11,
- SFX_BMYST_CAR_CRASH_1,
- SFX_BMYST_CAR_CRASH_2,
- SFX_BMYST_CAR_CRASH_3,
- SFX_BMYST_CAR_CRASH_4,
- SFX_BMYST_CAR_CRASH_5,
- SFX_BMYST_CAR_CRASH_6,
- SFX_BMYST_CAR_CRASH_7,
- SFX_BMYST_CAR_CRASH_8,
- SFX_BMYST_CAR_CRASH_9,
- SFX_BMYST_CHAT_1,
- SFX_BMYST_CHAT_2,
- SFX_BMYST_CHAT_3,
- SFX_BMYST_CHAT_4,
- SFX_BMYST_CHAT_5,
- SFX_BMYST_CHAT_6,
- SFX_BMYST_CHAT_7,
- SFX_BMYST_CHAT_8,
- SFX_BMYST_CHAT_9,
- SFX_BMYST_CHAT_10,
- SFX_BMYST_CHAT_11,
- SFX_BMYST_CHAT_12,
- SFX_BMYST_DODGE_1,
- SFX_BMYST_DODGE_2,
- SFX_BMYST_DODGE_3,
- SFX_BMYST_DODGE_4,
- SFX_BMYST_DODGE_5,
- SFX_BMYST_DODGE_6,
- SFX_BMYST_DODGE_7,
- SFX_BMYST_DODGE_8,
- SFX_BMYST_FIGHT_1,
- SFX_BMYST_FIGHT_2,
- SFX_BMYST_FIGHT_3,
- SFX_BMYST_FIGHT_4,
- SFX_BMYST_FIGHT_5,
- SFX_BMYST_FIGHT_6,
- SFX_BMYST_GENERIC_CRASH_1,
- SFX_BMYST_GENERIC_CRASH_2,
- SFX_BMYST_GENERIC_CRASH_3,
- SFX_BMYST_GENERIC_CRASH_4,
- SFX_BMYST_GENERIC_CRASH_5,
- SFX_BMYST_GENERIC_CRASH_6,
- SFX_BMYST_GENERIC_CRASH_7,
- SFX_BMYST_GUN_COOL_1,
- SFX_BMYST_GUN_COOL_2,
- SFX_BMYST_GUN_COOL_3,
- SFX_BMYST_GUN_COOL_4,
- SFX_BMYST_GUN_COOL_5,
- SFX_BMYST_GUN_COOL_6,
- SFX_BMYST_JACKED_1,
- SFX_BMYST_JACKED_2,
- SFX_BMYST_JACKED_3,
- SFX_BMYST_JACKED_4,
- SFX_BMYST_JACKED_5,
- SFX_BMYST_JACKED_6,
- SFX_BMYST_JACKED_7,
- SFX_BMYST_JACKED_8,
- SFX_BMYST_JACKING_1,
- SFX_BMYST_JACKING_2,
- SFX_BMYST_JACKING_3,
- SFX_BMYST_JACKING_4,
- SFX_BMYST_MUGGED_1,
- SFX_BMYST_MUGGED_2,
- SFX_BMYST_MUGGING_1,
- SFX_BMYST_MUGGING_2,
- SFX_BMYST_MUGGING_3,
- SFX_BMYST_MUGGING_4,
- SFX_BMYST_TAXI_1,
- SFX_BMYST_TAXI_2,
-
- SFX_WMYPI_BLOCKED_1,
- SFX_WMYPI_BLOCKED_2,
- SFX_WMYPI_BLOCKED_3,
- SFX_WMYPI_BLOCKED_4,
- SFX_WMYPI_BLOCKED_5,
- SFX_WMYPI_BLOCKED_6,
- SFX_WMYPI_BLOCKED_7,
- SFX_WMYPI_BLOCKED_8,
- SFX_WMYPI_BUMP_1,
- SFX_WMYPI_BUMP_2,
- SFX_WMYPI_BUMP_3,
- SFX_WMYPI_BUMP_4,
- SFX_WMYPI_BUMP_5,
- SFX_WMYPI_BUMP_6,
- SFX_WMYPI_BUMP_7,
- SFX_WMYPI_BUMP_8,
- SFX_WMYPI_BUMP_9,
- SFX_WMYPI_BUMP_10,
- SFX_WMYPI_CAR_CRASH_1,
- SFX_WMYPI_CAR_CRASH_2,
- SFX_WMYPI_CAR_CRASH_3,
- SFX_WMYPI_CAR_CRASH_4,
- SFX_WMYPI_CAR_CRASH_5,
- SFX_WMYPI_CAR_CRASH_6,
- SFX_WMYPI_CAR_CRASH_7,
- SFX_WMYPI_CAR_CRASH_8,
- SFX_WMYPI_DODGE_1,
- SFX_WMYPI_DODGE_2,
- SFX_WMYPI_DODGE_3,
- SFX_WMYPI_DODGE_4,
- SFX_WMYPI_DODGE_5,
- SFX_WMYPI_DODGE_6,
- SFX_WMYPI_DODGE_7,
- SFX_WMYPI_DODGE_8,
- SFX_WMYPI_EYEING_1,
- SFX_WMYPI_EYEING_2,
- SFX_WMYPI_EYEING_3,
- SFX_WMYPI_EYEING_4,
- SFX_WMYPI_EYEING_5,
- SFX_WMYPI_EYEING_6,
- SFX_WMYPI_FIGHT_1,
- SFX_WMYPI_FIGHT_2,
- SFX_WMYPI_FIGHT_3,
- SFX_WMYPI_FIGHT_4,
- SFX_WMYPI_FIGHT_5,
- SFX_WMYPI_FIGHT_6,
- SFX_WMYPI_FIGHT_7,
- SFX_WMYPI_FIGHT_8,
- SFX_WMYPI_FIGHT_9,
- SFX_WMYPI_GENERIC_CRASH_1,
- SFX_WMYPI_GENERIC_CRASH_2,
- SFX_WMYPI_GENERIC_CRASH_3,
- SFX_WMYPI_GENERIC_CRASH_4,
- SFX_WMYPI_GENERIC_CRASH_5,
- SFX_WMYPI_GENERIC_CRASH_6,
- SFX_WMYPI_GENERIC_CRASH_7,
- SFX_WMYPI_GENERIC_CRASH_8,
- SFX_WMYPI_GUN_COOL_1,
- SFX_WMYPI_GUN_COOL_2,
- SFX_WMYPI_GUN_COOL_3,
- SFX_WMYPI_GUN_COOL_4,
- SFX_WMYPI_GUN_COOL_5,
- SFX_WMYPI_INNOCENT_1,
- SFX_WMYPI_INNOCENT_2,
- SFX_WMYPI_JACKED_1,
- SFX_WMYPI_JACKED_2,
- SFX_WMYPI_JACKED_3,
- SFX_WMYPI_JACKED_4,
- SFX_WMYPI_JACKED_5,
- SFX_WMYPI_JACKED_6,
- SFX_WMYPI_JACKING_1,
- SFX_WMYPI_JACKING_2,
- SFX_WMYPI_JACKING_3,
- SFX_WMYPI_JACKING_4,
- SFX_WMYPI_MUGGED_1,
- SFX_WMYPI_MUGGED_2,
- SFX_WMYPI_SAVED_1,
- SFX_WMYPI_SAVED_2,
- SFX_WMYPI_TAXI_1,
- SFX_WMYPI_TAXI_2,
- SFX_WMYPI_TAXI_3,
- SFX_WMYPI_TAXI_4,
-
- SFX_BMYCR_BLOCKED_1,
- SFX_BMYCR_BLOCKED_2,
- SFX_BMYCR_BLOCKED_3,
- SFX_BMYCR_BLOCKED_4,
- SFX_BMYCR_BLOCKED_5,
- SFX_BMYCR_BLOCKED_6,
- SFX_BMYCR_BLOCKED_7,
- SFX_BMYCR_BLOCKED_8,
- SFX_BMYCR_BLOCKED_9,
- SFX_BMYCR_BLOCKED_10,
- SFX_BMYCR_BLOCKED_11,
- SFX_BMYCR_BLOCKED_12,
- SFX_BMYCR_BUMP_1,
- SFX_BMYCR_BUMP_2,
- SFX_BMYCR_BUMP_3,
- SFX_BMYCR_BUMP_4,
- SFX_BMYCR_BUMP_5,
- SFX_BMYCR_BUMP_6,
- SFX_BMYCR_BUMP_7,
- SFX_BMYCR_BUMP_8,
- SFX_BMYCR_BUMP_9,
- SFX_BMYCR_BUMP_10,
- SFX_BMYCR_BUMP_11,
- SFX_BMYCR_CAR_CRASH_1,
- SFX_BMYCR_CAR_CRASH_2,
- SFX_BMYCR_CAR_CRASH_3,
- SFX_BMYCR_CAR_CRASH_4,
- SFX_BMYCR_CAR_CRASH_5,
- SFX_BMYCR_CAR_CRASH_6,
- SFX_BMYCR_CAR_CRASH_7,
- SFX_BMYCR_CAR_CRASH_8,
- SFX_BMYCR_CAR_CRASH_9,
- SFX_BMYCR_DODGE_1,
- SFX_BMYCR_DODGE_2,
- SFX_BMYCR_DODGE_3,
- SFX_BMYCR_DODGE_4,
- SFX_BMYCR_DODGE_5,
- SFX_BMYCR_DODGE_6,
- SFX_BMYCR_DODGE_7,
- SFX_BMYCR_DODGE_8,
- SFX_BMYCR_EYEING_1,
- SFX_BMYCR_EYEING_2,
- SFX_BMYCR_FIGHT_1,
- SFX_BMYCR_FIGHT_2,
- SFX_BMYCR_FIGHT_3,
- SFX_BMYCR_FIGHT_4,
- SFX_BMYCR_FIGHT_5,
- SFX_BMYCR_FIGHT_6,
- SFX_BMYCR_FIGHT_7,
- SFX_BMYCR_FIGHT_8,
- SFX_BMYCR_GENERIC_CRASH_1,
- SFX_BMYCR_GENERIC_CRASH_2,
- SFX_BMYCR_GENERIC_CRASH_3,
- SFX_BMYCR_GENERIC_CRASH_4,
- SFX_BMYCR_GENERIC_CRASH_5,
- SFX_BMYCR_GENERIC_CRASH_6,
- SFX_BMYCR_GENERIC_CRASH_7,
- SFX_BMYCR_GUN_COOL_1,
- SFX_BMYCR_GUN_COOL_2,
- SFX_BMYCR_GUN_COOL_3,
- SFX_BMYCR_GUN_COOL_4,
- SFX_BMYCR_GUN_COOL_5,
- SFX_BMYCR_GUN_COOL_6,
- SFX_BMYCR_INNOCENT_1,
- SFX_BMYCR_INNOCENT_2,
- SFX_BMYCR_INNOCENT_3,
- SFX_BMYCR_INNOCENT_4,
- SFX_BMYCR_JACKED_1,
- SFX_BMYCR_JACKED_2,
- SFX_BMYCR_JACKED_3,
- SFX_BMYCR_JACKED_4,
- SFX_BMYCR_JACKED_5,
- SFX_BMYCR_JACKED_6,
- SFX_BMYCR_JACKING_1,
- SFX_BMYCR_JACKING_2,
- SFX_BMYCR_JACKING_3,
- SFX_BMYCR_JACKING_4,
- SFX_BMYCR_JACKING_5,
- SFX_BMYCR_JACKING_6,
- SFX_BMYCR_JACKING_7,
- SFX_BMYCR_JACKING_8,
- SFX_BMYCR_JACKING_9,
- SFX_BMYCR_JACKING_10,
- SFX_BMYCR_JACKING_11,
- SFX_BMYCR_JACKING_12,
- SFX_BMYCR_MUGGED_1,
- SFX_BMYCR_MUGGED_2,
- SFX_BMYCR_MUGGED_3,
- SFX_BMYCR_MUGGING_1,
- SFX_BMYCR_MUGGING_2,
- SFX_BMYCR_MUGGING_3,
- SFX_BMYCR_MUGGING_4,
- SFX_BMYCR_MUGGING_5,
- SFX_BMYCR_MUGGING_6,
- SFX_BMYCR_SAVED_1,
- SFX_BMYCR_SAVED_2,
-
- SFX_WMORI_BLOCKED_1,
- SFX_WMORI_BLOCKED_2,
- SFX_WMORI_BLOCKED_3,
- SFX_WMORI_BLOCKED_4,
- SFX_WMORI_BLOCKED_5,
- SFX_WMORI_BLOCKED_6,
- SFX_WMORI_BLOCKED_7,
- SFX_WMORI_BLOCKED_8,
- SFX_WMORI_BLOCKED_9,
- SFX_WMORI_BLOCKED_10,
- SFX_WMORI_BUMP_1,
- SFX_WMORI_BUMP_2,
- SFX_WMORI_BUMP_3,
- SFX_WMORI_BUMP_4,
- SFX_WMORI_BUMP_5,
- SFX_WMORI_BUMP_6,
- SFX_WMORI_BUMP_7,
- SFX_WMORI_BUMP_8,
- SFX_WMORI_BUMP_9,
- SFX_WMORI_BUMP_10,
- SFX_WMORI_BUMP_11,
- SFX_WMORI_BUMP_12,
- SFX_WMORI_BUMP_13,
- SFX_WMORI_BUMP_14,
- SFX_WMORI_CAR_CRASH_1,
- SFX_WMORI_CAR_CRASH_2,
- SFX_WMORI_CAR_CRASH_3,
- SFX_WMORI_CAR_CRASH_4,
- SFX_WMORI_CAR_CRASH_5,
- SFX_WMORI_CAR_CRASH_6,
- SFX_WMORI_DODGE_1,
- SFX_WMORI_DODGE_2,
- SFX_WMORI_DODGE_3,
- SFX_WMORI_DODGE_4,
- SFX_WMORI_DODGE_5,
- SFX_WMORI_DODGE_6,
- SFX_WMORI_DODGE_7,
- SFX_WMORI_DODGE_8,
- SFX_WMORI_DODGE_9,
- SFX_WMORI_DODGE_10,
- SFX_WMORI_EYEING_1,
- SFX_WMORI_EYEING_2,
- SFX_WMORI_EYEING_3,
- SFX_WMORI_GENERIC_CRASH_1,
- SFX_WMORI_GENERIC_CRASH_2,
- SFX_WMORI_GENERIC_CRASH_3,
- SFX_WMORI_GENERIC_CRASH_4,
- SFX_WMORI_GENERIC_CRASH_5,
- SFX_WMORI_GENERIC_CRASH_6,
- SFX_WMORI_GENERIC_CRASH_7,
- SFX_WMORI_GENERIC_CRASH_8,
- SFX_WMORI_GUN_PANIC_1,
- SFX_WMORI_GUN_PANIC_2,
- SFX_WMORI_GUN_PANIC_3,
- SFX_WMORI_GUN_PANIC_4,
- SFX_WMORI_GUN_PANIC_5,
- SFX_WMORI_GUN_PANIC_6,
- SFX_WMORI_GUN_PANIC_7,
- SFX_WMORI_GUN_PANIC_8,
- SFX_WMORI_GUN_PANIC_9,
- SFX_WMORI_JACKED_1,
- SFX_WMORI_JACKED_2,
- SFX_WMORI_JACKED_3,
- SFX_WMORI_JACKED_4,
- SFX_WMORI_JACKED_5,
- SFX_WMORI_JACKED_6,
- SFX_WMORI_LOST_1,
- SFX_WMORI_LOST_2,
- SFX_WMORI_MUGGED_1,
- SFX_WMORI_MUGGED_2,
- SFX_WMORI_MUGGED_3,
- SFX_WMORI_MUGGED_4,
- SFX_WMORI_RUN_1,
- SFX_WMORI_RUN_2,
- SFX_WMORI_RUN_3,
- SFX_WMORI_RUN_4,
- SFX_WMORI_RUN_5,
- SFX_WMORI_RUN_6,
- SFX_WMORI_RUN_7,
- SFX_WMORI_RUN_8,
- SFX_WMORI_RUN_9,
- SFX_WMORI_RUN_10,
- SFX_WMORI_RUN_11,
- SFX_WMORI_RUN_12,
- SFX_WMORI_SAVED_1,
- SFX_WMORI_SAVED_2,
- SFX_WMORI_SHOCKED_1,
- SFX_WMORI_SHOCKED_2,
- SFX_WMORI_SHOCKED_3,
- SFX_WMORI_SHOCKED_4,
- SFX_WMORI_TAXI_1,
- SFX_WMORI_TAXI_2,
-
- SFX_WMOBU_BLOCKED_1,
- SFX_WMOBU_BLOCKED_2,
- SFX_WMOBU_BLOCKED_3,
- SFX_WMOBU_BLOCKED_4,
- SFX_WMOBU_BLOCKED_5,
- SFX_WMOBU_BLOCKED_6,
- SFX_WMOBU_BLOCKED_7,
- SFX_WMOBU_BUMP_1,
- SFX_WMOBU_BUMP_2,
- SFX_WMOBU_BUMP_3,
- SFX_WMOBU_BUMP_4,
- SFX_WMOBU_BUMP_5,
- SFX_WMOBU_BUMP_6,
- SFX_WMOBU_BUMP_7,
- SFX_WMOBU_BUMP_8,
- SFX_WMOBU_BUMP_9,
- SFX_WMOBU_BUMP_10,
- SFX_WMOBU_CAR_CRASH_1,
- SFX_WMOBU_CAR_CRASH_2,
- SFX_WMOBU_CAR_CRASH_3,
- SFX_WMOBU_CAR_CRASH_4,
- SFX_WMOBU_CAR_CRASH_5,
- SFX_WMOBU_CAR_CRASH_6,
- SFX_WMOBU_CAR_CRASH_7,
- SFX_WMOBU_DODGE_1,
- SFX_WMOBU_DODGE_2,
- SFX_WMOBU_DODGE_3,
- SFX_WMOBU_DODGE_4,
- SFX_WMOBU_DODGE_5,
- SFX_WMOBU_DODGE_6,
- SFX_WMOBU_DODGE_7,
- SFX_WMOBU_DODGE_8,
- SFX_WMOBU_EYEING_1,
- SFX_WMOBU_EYEING_2,
- SFX_WMOBU_FIGHT_1,
- SFX_WMOBU_FIGHT_2,
- SFX_WMOBU_FIGHT_3,
- SFX_WMOBU_GENERIC_CRASH_1,
- SFX_WMOBU_GENERIC_CRASH_2,
- SFX_WMOBU_GENERIC_CRASH_3,
- SFX_WMOBU_GENERIC_CRASH_4,
- SFX_WMOBU_GENERIC_CRASH_5,
- SFX_WMOBU_GENERIC_CRASH_6,
- SFX_WMOBU_GENERIC_CRASH_7,
- SFX_WMOBU_GUN_PANIC_1,
- SFX_WMOBU_GUN_PANIC_2,
- SFX_WMOBU_GUN_PANIC_3,
- SFX_WMOBU_GUN_PANIC_4,
- SFX_WMOBU_GUN_PANIC_5,
- SFX_WMOBU_GUN_PANIC_6,
- SFX_WMOBU_JACKED_1,
- SFX_WMOBU_JACKED_2,
- SFX_WMOBU_JACKED_3,
- SFX_WMOBU_JACKED_4,
- SFX_WMOBU_JACKED_5,
- SFX_WMOBU_JACKED_6,
- SFX_WMOBU_JACKED_7,
- SFX_WMOBU_LOST_1,
- SFX_WMOBU_LOST_2,
- SFX_WMOBU_LOST_3,
- SFX_WMOBU_MUGGED_1,
- SFX_WMOBU_MUGGED_2,
- SFX_WMOBU_SAVED_1,
- SFX_WMOBU_SAVED_2,
- SFX_WMOBU_SAVED_3,
- SFX_WMOBU_TAXI_1,
- SFX_WMOBU_TAXI_2,
-
- SFX_BMODK_BLOCKED_1,
- SFX_BMODK_BLOCKED_2,
- SFX_BMODK_BLOCKED_3,
- SFX_BMODK_BLOCKED_4,
- SFX_BMODK_BLOCKED_5,
- SFX_BMODK_BLOCKED_6,
- SFX_BMODK_BLOCKED_7,
- SFX_BMODK_BLOCKED_8,
- SFX_BMODK_BUMP_1,
- SFX_BMODK_BUMP_2,
- SFX_BMODK_BUMP_3,
- SFX_BMODK_BUMP_4,
- SFX_BMODK_BUMP_5,
- SFX_BMODK_BUMP_6,
- SFX_BMODK_BUMP_7,
- SFX_BMODK_BUMP_8,
- SFX_BMODK_BUMP_9,
- SFX_BMODK_BUMP_10,
- SFX_BMODK_CAR_CRASH_1,
- SFX_BMODK_CAR_CRASH_2,
- SFX_BMODK_CAR_CRASH_3,
- SFX_BMODK_CAR_CRASH_4,
- SFX_BMODK_CAR_CRASH_5,
- SFX_BMODK_CAR_CRASH_6,
- SFX_BMODK_CAR_CRASH_7,
- SFX_BMODK_CAR_CRASH_8,
- SFX_BMODK_CAR_CRASH_9,
- SFX_BMODK_CAR_CRASH_10,
- SFX_BMODK_UNK, // UNUSED
- SFX_BMODK_UNK_147_1,
- SFX_BMODK_UNK_147_2,
- SFX_BMODK_UNK_147_3,
- SFX_BMODK_UNK_147_4,
- SFX_BMODK_UNK_147_5,
- SFX_BMODK_UNK_147_6,
- SFX_BMODK_UNK_147_7,
- SFX_BMODK_UNK_147_8,
- SFX_BMODK_UNK_147_9,
- SFX_BMODK_UNK_147_10,
- SFX_BMODK_UNK_147_11,
- SFX_BMODK_UNK_147_12,
- SFX_BMODK_DODGE_1,
- SFX_BMODK_DODGE_2,
- SFX_BMODK_DODGE_3,
- SFX_BMODK_DODGE_4,
- SFX_BMODK_DODGE_5,
- SFX_BMODK_DODGE_6,
- SFX_BMODK_DODGE_7,
- SFX_BMODK_GENERIC_CRASH_1,
- SFX_BMODK_GENERIC_CRASH_2,
- SFX_BMODK_GENERIC_CRASH_3,
- SFX_BMODK_GENERIC_CRASH_4,
- SFX_BMODK_GENERIC_CRASH_5,
- SFX_BMODK_GENERIC_CRASH_6,
- SFX_BMODK_GENERIC_CRASH_7,
- SFX_BMODK_GUN_PANIC_1,
- SFX_BMODK_GUN_PANIC_2,
- SFX_BMODK_GUN_PANIC_3,
- SFX_BMODK_GUN_PANIC_4,
- SFX_BMODK_INNOCENT_1,
- SFX_BMODK_INNOCENT_2,
- SFX_BMODK_INNOCENT_3,
- SFX_BMODK_JACKED_1,
- SFX_BMODK_JACKED_2,
- SFX_BMODK_JACKED_3,
- SFX_BMODK_JACKED_4,
- SFX_BMODK_JACKED_5,
- SFX_BMODK_JACKED_6,
- SFX_BMODK_JACKED_7,
- SFX_BMODK_JACKED_8,
- SFX_BMODK_JACKED_9,
- SFX_BMODK_MUGGED_1,
- SFX_BMODK_MUGGED_2,
- SFX_BMODK_RUN_1,
- SFX_BMODK_RUN_2,
- SFX_BMODK_RUN_3,
- SFX_BMODK_RUN_4,
- SFX_BMODK_TAXI_1,
-
- SFX_HFYBE_BUMP_1,
- SFX_HFYBE_BUMP_2,
- SFX_HFYBE_BUMP_3,
- SFX_HFYBE_BUMP_4,
- SFX_HFYBE_BUMP_5,
- SFX_HFYBE_BUMP_6,
- SFX_HFYBE_BUMP_7,
- SFX_HFYBE_BUMP_8,
- SFX_HFYBE_CAR_CRASH_1,
- SFX_HFYBE_CAR_CRASH_2,
- SFX_HFYBE_CAR_CRASH_3,
- SFX_HFYBE_CAR_CRASH_4,
- SFX_HFYBE_CAR_CRASH_5,
- SFX_HFYBE_CAR_CRASH_6,
- SFX_HFYBE_CHAT_1,
- SFX_HFYBE_CHAT_2,
- SFX_HFYBE_CHAT_3,
- SFX_HFYBE_CHAT_4,
- SFX_HFYBE_CHAT_5,
- SFX_HFYBE_CHAT_6,
- SFX_HFYBE_CHAT_7,
- SFX_HFYBE_CHAT_8,
- SFX_HFYBE_CHAT_9,
- SFX_HFYBE_CHAT_10,
- SFX_HFYBE_DODGE_1,
- SFX_HFYBE_DODGE_2,
- SFX_HFYBE_DODGE_3,
- SFX_HFYBE_DODGE_4,
- SFX_HFYBE_DODGE_5,
- SFX_HFYBE_DODGE_6,
- SFX_HFYBE_DODGE_7,
- SFX_HFYBE_DODGE_8,
- SFX_HFYBE_DODGE_9,
- SFX_HFYBE_DODGE_10,
- SFX_HFYBE_DODGE_11,
- SFX_HFYBE_GENERIC_CRASH_1,
- SFX_HFYBE_GENERIC_CRASH_2,
- SFX_HFYBE_GENERIC_CRASH_3,
- SFX_HFYBE_GENERIC_CRASH_4,
- SFX_HFYBE_GENERIC_CRASH_5,
- SFX_HFYBE_GENERIC_CRASH_6,
- SFX_HFYBE_GENERIC_CRASH_7,
- SFX_HFYBE_GENERIC_CRASH_8,
- SFX_HFYBE_GUN_PANIC_1,
- SFX_HFYBE_GUN_PANIC_2,
- SFX_HFYBE_GUN_PANIC_3,
- SFX_HFYBE_GUN_PANIC_4,
- SFX_HFYBE_GUN_PANIC_5,
- SFX_HFYBE_GUN_PANIC_6,
- SFX_HFYBE_GUN_PANIC_7,
- SFX_HFYBE_JACKED_1,
- SFX_HFYBE_JACKED_2,
- SFX_HFYBE_JACKED_3,
- SFX_HFYBE_JACKED_4,
- SFX_HFYBE_JACKED_5,
- SFX_HFYBE_JACKED_6,
- SFX_HFYBE_JACKED_7,
- SFX_HFYBE_LOST_1,
- SFX_HFYBE_LOST_2,
-
- // this is a guess, idk what she's saying
- SFX_HFYBE_RUN_1,
- SFX_HFYBE_RUN_2,
- SFX_HFYBE_RUN_3,
- SFX_HFYBE_RUN_4,
- SFX_HFYBE_RUN_5,
- SFX_HFYBE_RUN_6,
- SFX_HFYBE_RUN_7,
-
- SFX_HFYBE_SHOCKED_1,
- SFX_HFYBE_SHOCKED_2,
- SFX_HFYBE_TAXI_1,
-
- SFX_HFYRI_BLOCKED_1,
- SFX_HFYRI_BLOCKED_2,
- SFX_HFYRI_BLOCKED_3,
- SFX_HFYRI_BLOCKED_4,
- SFX_HFYRI_BLOCKED_5,
- SFX_HFYRI_BLOCKED_6,
- SFX_HFYRI_BLOCKED_7,
- SFX_HFYRI_BLOCKED_8,
- SFX_HFYRI_BUMP_1,
- SFX_HFYRI_BUMP_2,
- SFX_HFYRI_BUMP_3,
- SFX_HFYRI_BUMP_4,
- SFX_HFYRI_BUMP_5,
- SFX_HFYRI_BUMP_6,
- SFX_HFYRI_BUMP_7,
- SFX_HFYRI_BUMP_8,
- SFX_HFYRI_BUMP_9,
- SFX_HFYRI_CAR_CRASH_1,
- SFX_HFYRI_CAR_CRASH_2,
- SFX_HFYRI_CAR_CRASH_3,
- SFX_HFYRI_CAR_CRASH_4,
- SFX_HFYRI_CAR_CRASH_5,
- SFX_HFYRI_CAR_CRASH_6,
- SFX_HFYRI_CAR_CRASH_7,
- SFX_HFYRI_CAR_CRASH_8,
- SFX_HFYRI_DODGE_1,
- SFX_HFYRI_DODGE_2,
- SFX_HFYRI_DODGE_3,
- SFX_HFYRI_DODGE_4,
- SFX_HFYRI_DODGE_5,
- SFX_HFYRI_DODGE_6,
- SFX_HFYRI_DODGE_7,
- SFX_HFYRI_DODGE_8,
- SFX_HFYRI_DODGE_9,
- SFX_HFYRI_DODGE_10,
- SFX_HFYRI_GENERIC_CRASH_1,
- SFX_HFYRI_GENERIC_CRASH_2,
- SFX_HFYRI_GENERIC_CRASH_3,
- SFX_HFYRI_GENERIC_CRASH_4,
- SFX_HFYRI_GENERIC_CRASH_5,
- SFX_HFYRI_GENERIC_CRASH_6,
- SFX_HFYRI_GENERIC_CRASH_7,
- SFX_HFYRI_GUN_PANIC_1,
- SFX_HFYRI_GUN_PANIC_2,
- SFX_HFYRI_GUN_PANIC_3,
- SFX_HFYRI_GUN_PANIC_4,
- SFX_HFYRI_GUN_PANIC_5,
- SFX_HFYRI_JACKED_1,
- SFX_HFYRI_JACKED_2,
- SFX_HFYRI_JACKED_3,
- SFX_HFYRI_JACKED_4,
- SFX_HFYRI_JACKED_5,
- SFX_HFYRI_JACKED_6,
- SFX_HFYRI_LOST_1,
- SFX_HFYRI_LOST_2,
- SFX_HFYRI_MUGGED_1,
- SFX_HFYRI_MUGGED_2,
- SFX_HFYRI_MUGGED_3,
- SFX_HFYRI_MUGGED_4,
- SFX_HFYRI_RUN_1,
- SFX_HFYRI_RUN_2,
- SFX_HFYRI_RUN_3,
- SFX_HFYRI_RUN_4,
- SFX_HFYRI_SAVED_1,
- SFX_HFYRI_SAVED_2,
- SFX_HFYRI_SHOCKED_1,
- SFX_HFYRI_SHOCKED_2,
- SFX_HFYRI_SHOCKED_3,
- SFX_HFYRI_TAXI_1,
- SFX_BFOST_BLOCKED_1,
- SFX_BFOST_BLOCKED_2,
- SFX_BFOST_BLOCKED_3,
- SFX_BFOST_BLOCKED_4,
- SFX_BFOST_BLOCKED_5,
- SFX_BFOST_BLOCKED_6,
- SFX_BFOST_BLOCKED_7,
- SFX_BFOST_BUMP_1,
- SFX_BFOST_BUMP_2,
- SFX_BFOST_BUMP_3,
- SFX_BFOST_BUMP_4,
- SFX_BFOST_BUMP_5,
- SFX_BFOST_BUMP_6,
- SFX_BFOST_BUMP_7,
- SFX_BFOST_BUMP_8,
- SFX_BFOST_BUMP_9,
- SFX_BFOST_BUMP_10,
- SFX_BFOST_CAR_CRASH_1,
- SFX_BFOST_CAR_CRASH_2,
- SFX_BFOST_CAR_CRASH_3,
- SFX_BFOST_CAR_CRASH_4,
- SFX_BFOST_CAR_CRASH_5,
- SFX_BFOST_CAR_CRASH_6,
- SFX_BFOST_CAR_CRASH_7,
- SFX_BFOST_CAR_CRASH_8,
- SFX_BFOST_CHAT_1,
- SFX_BFOST_CHAT_2,
- SFX_BFOST_CHAT_3,
- SFX_BFOST_CHAT_4,
- SFX_BFOST_CHAT_5,
- SFX_BFOST_CHAT_6,
- SFX_BFOST_CHAT_7,
- SFX_BFOST_CHAT_8,
- SFX_BFOST_CHAT_9,
- SFX_BFOST_CHAT_10,
- SFX_BFOST_DODGE_1,
- SFX_BFOST_DODGE_2,
- SFX_BFOST_DODGE_3,
- SFX_BFOST_DODGE_4,
- SFX_BFOST_DODGE_5,
- SFX_BFOST_DODGE_6,
- SFX_BFOST_DODGE_7,
- SFX_BFOST_DODGE_8,
- SFX_BFOST_DODGE_9,
- SFX_BFOST_DODGE_10,
- SFX_BFOST_DODGE_11,
- SFX_BFOST_GENERIC_CRASH_1,
- SFX_BFOST_GENERIC_CRASH_2,
- SFX_BFOST_GENERIC_CRASH_3,
- SFX_BFOST_GENERIC_CRASH_4,
- SFX_BFOST_GENERIC_CRASH_5,
- SFX_BFOST_GENERIC_CRASH_6,
- SFX_BFOST_GENERIC_CRASH_7,
- SFX_BFOST_GENERIC_CRASH_8,
- SFX_BFOST_GUN_PANIC_1,
- SFX_BFOST_GUN_PANIC_2,
- SFX_BFOST_GUN_PANIC_3,
- SFX_BFOST_GUN_PANIC_4,
- SFX_BFOST_GUN_PANIC_5,
- SFX_BFOST_JACKED_1,
- SFX_BFOST_JACKED_2,
- SFX_BFOST_JACKED_3,
- SFX_BFOST_JACKED_4,
- SFX_BFOST_JACKED_5,
- SFX_BFOST_JACKED_6,
- SFX_BFOST_JACKED_7,
- SFX_BFOST_JACKED_8,
- SFX_BFOST_LOST_1,
- SFX_BFOST_LOST_2,
- SFX_BFOST_MUGGED_1,
- SFX_BFOST_MUGGED_2,
- SFX_BFOST_RUN_1,
- SFX_BFOST_RUN_2,
- SFX_BFOST_RUN_3,
- SFX_BFOST_RUN_4,
- SFX_BFOST_SAVED_1,
- SFX_BFOST_SAVED_2,
- SFX_BFOST_TAXI_1,
- SFX_BFORI_BLOCKED_1,
- SFX_BFORI_BLOCKED_2,
- SFX_BFORI_BLOCKED_3,
- SFX_BFORI_BLOCKED_4,
- SFX_BFORI_BLOCKED_5,
- SFX_BFORI_BLOCKED_6,
- SFX_BFORI_BLOCKED_7,
- SFX_BFORI_BLOCKED_8,
- SFX_BFORI_BUMP_1,
- SFX_BFORI_BUMP_2,
- SFX_BFORI_BUMP_3,
- SFX_BFORI_BUMP_4,
- SFX_BFORI_BUMP_5,
- SFX_BFORI_BUMP_6,
- SFX_BFORI_BUMP_7,
- SFX_BFORI_BUMP_8,
- SFX_BFORI_BUMP_9,
- SFX_BFORI_CAR_CRASH_1,
- SFX_BFORI_CAR_CRASH_2,
- SFX_BFORI_CAR_CRASH_3,
- SFX_BFORI_CAR_CRASH_4,
- SFX_BFORI_CAR_CRASH_5,
- SFX_BFORI_CAR_CRASH_6,
- SFX_BFORI_CAR_CRASH_7,
- SFX_BFORI_DODGE_1,
- SFX_BFORI_DODGE_2,
- SFX_BFORI_DODGE_3,
- SFX_BFORI_DODGE_4,
- SFX_BFORI_DODGE_5,
- SFX_BFORI_DODGE_6,
- SFX_BFORI_DODGE_7,
- SFX_BFORI_DODGE_8,
- SFX_BFORI_DODGE_9,
- SFX_BFORI_GENERIC_CRASH_1,
- SFX_BFORI_GENERIC_CRASH_2,
- SFX_BFORI_GENERIC_CRASH_3,
- SFX_BFORI_GENERIC_CRASH_4,
- SFX_BFORI_GENERIC_CRASH_5,
- SFX_BFORI_GENERIC_CRASH_6,
- SFX_BFORI_GENERIC_CRASH_7,
- SFX_BFORI_GUN_PANIC_1,
- SFX_BFORI_GUN_PANIC_2,
- SFX_BFORI_GUN_PANIC_3,
- SFX_BFORI_GUN_PANIC_4,
- SFX_BFORI_GUN_PANIC_5,
- SFX_BFORI_JACKED_1,
- SFX_BFORI_JACKED_2,
- SFX_BFORI_JACKED_3,
- SFX_BFORI_JACKED_4,
- SFX_BFORI_LOST_1,
- SFX_BFORI_LOST_2,
- SFX_BFORI_MUGGED_1,
- SFX_BFORI_MUGGED_2,
- SFX_BFORI_RUN_1,
- SFX_BFORI_RUN_2,
- SFX_BFORI_RUN_3,
- SFX_BFORI_RUN_4,
- SFX_BFORI_SAVED_1,
- SFX_BFORI_SHOCKED_1,
- SFX_BFORI_SHOCKED_2,
- SFX_BFORI_TAXI_1,
- SFX_BFORI_TAXI_2,
-
- SFX_BFYST_BLOCKED_1,
- SFX_BFYST_BLOCKED_2,
- SFX_BFYST_BLOCKED_3,
- SFX_BFYST_BLOCKED_4,
- SFX_BFYST_BLOCKED_5,
- SFX_BFYST_BLOCKED_6,
- SFX_BFYST_BLOCKED_7,
- SFX_BFYST_BLOCKED_8,
- SFX_BFYST_BUMP_1,
- SFX_BFYST_BUMP_2,
- SFX_BFYST_BUMP_3,
- SFX_BFYST_BUMP_4,
- SFX_BFYST_BUMP_5,
- SFX_BFYST_BUMP_6,
- SFX_BFYST_BUMP_7,
- SFX_BFYST_BUMP_8,
- SFX_BFYST_BUMP_9,
- SFX_BFYST_CAR_CRASH_1,
- SFX_BFYST_CAR_CRASH_2,
- SFX_BFYST_CAR_CRASH_3,
- SFX_BFYST_CAR_CRASH_4,
- SFX_BFYST_CAR_CRASH_5,
- SFX_BFYST_CAR_CRASH_6,
- SFX_BFYST_CAR_CRASH_7,
- SFX_BFYST_CAR_CRASH_8,
- SFX_BFYST_CAR_CRASH_9,
- SFX_BFYST_CHAT_1,
- SFX_BFYST_CHAT_2,
- SFX_BFYST_CHAT_3,
- SFX_BFYST_CHAT_4,
- SFX_BFYST_CHAT_5,
- SFX_BFYST_CHAT_6,
- SFX_BFYST_CHAT_7,
- SFX_BFYST_CHAT_8,
- SFX_BFYST_CHAT_9,
- SFX_BFYST_DODGE_1,
- SFX_BFYST_DODGE_2,
- SFX_BFYST_DODGE_3,
- SFX_BFYST_DODGE_4,
- SFX_BFYST_DODGE_5,
- SFX_BFYST_DODGE_6,
- SFX_BFYST_DODGE_7,
- SFX_BFYST_DODGE_8,
- SFX_BFYST_DODGE_9,
- SFX_BFYST_GENERIC_CRASH_1,
- SFX_BFYST_GENERIC_CRASH_2,
- SFX_BFYST_GENERIC_CRASH_3,
- SFX_BFYST_GENERIC_CRASH_4,
- SFX_BFYST_GENERIC_CRASH_5,
- SFX_BFYST_GENERIC_CRASH_6,
- SFX_BFYST_GENERIC_CRASH_7,
- SFX_BFYST_GENERIC_CRASH_8,
- SFX_BFYST_GUN_PANIC_1,
- SFX_BFYST_GUN_PANIC_2,
- SFX_BFYST_GUN_PANIC_3,
- SFX_BFYST_GUN_PANIC_4,
- SFX_BFYST_JACKED_1,
- SFX_BFYST_JACKED_2,
- SFX_BFYST_JACKED_3,
- SFX_BFYST_JACKED_4,
- SFX_BFYST_JACKED_5,
- SFX_BFYST_LOST_1,
- SFX_BFYST_LOST_2,
- SFX_BFYST_MUGGED_1,
- SFX_BFYST_MUGGED_2,
- SFX_BFYST_RUN_1,
- SFX_BFYST_RUN_2,
- SFX_BFYST_RUN_3,
- SFX_BFYST_RUN_4,
- SFX_BFYST_RUN_5,
- SFX_BFYST_RUN_6,
- SFX_BFYST_SAVED_1,
- SFX_BFYST_SAVED_2,
- SFX_BFYST_TAXI_1,
-
- SFX_HFORI_BLOCKED_1,
- SFX_HFORI_BLOCKED_2,
- SFX_HFORI_BLOCKED_3,
- SFX_HFORI_BLOCKED_4,
- SFX_HFORI_BLOCKED_5,
- SFX_HFORI_BLOCKED_6,
- SFX_HFORI_BUMP_1,
- SFX_HFORI_BUMP_2,
- SFX_HFORI_BUMP_3,
- SFX_HFORI_BUMP_4,
- SFX_HFORI_BUMP_5,
- SFX_HFORI_BUMP_6,
- SFX_HFORI_BUMP_7,
- SFX_HFORI_BUMP_8,
- SFX_HFORI_BUMP_9,
- SFX_HFORI_BUMP_10,
- SFX_HFORI_CAR_CRASH_1,
- SFX_HFORI_CAR_CRASH_2,
- SFX_HFORI_CAR_CRASH_3,
- SFX_HFORI_CAR_CRASH_4,
- SFX_HFORI_CAR_CRASH_5,
- SFX_HFORI_CAR_CRASH_6,
- SFX_HFORI_CAR_CRASH_7,
- SFX_HFORI_DODGE_1,
- SFX_HFORI_DODGE_2,
- SFX_HFORI_DODGE_3,
- SFX_HFORI_DODGE_4,
- SFX_HFORI_DODGE_5,
- SFX_HFORI_DODGE_6,
- SFX_HFORI_EYEING_1,
- SFX_HFORI_EYEING_2,
- SFX_HFORI_GENERIC_CRASH_1,
- SFX_HFORI_GENERIC_CRASH_2,
- SFX_HFORI_GENERIC_CRASH_3,
- SFX_HFORI_GENERIC_CRASH_4,
- SFX_HFORI_GENERIC_CRASH_5,
- SFX_HFORI_GENERIC_CRASH_6,
- SFX_HFORI_GENERIC_CRASH_7,
- SFX_HFORI_GUN_PANIC_1,
- SFX_HFORI_GUN_PANIC_2,
- SFX_HFORI_GUN_PANIC_3,
- SFX_HFORI_GUN_PANIC_4,
- SFX_HFORI_GUN_PANIC_5,
- SFX_HFORI_GUN_PANIC_6,
- SFX_HFORI_JACKED_1,
- SFX_HFORI_JACKED_2,
- SFX_HFORI_JACKED_3,
- SFX_HFORI_JACKED_4,
- SFX_HFORI_JACKED_5,
- SFX_HFORI_JACKED_6,
- SFX_HFORI_JACKED_7,
- SFX_HFORI_JACKED_8,
- SFX_HFORI_JACKED_9,
- SFX_HFORI_LOST_1,
- SFX_HFORI_LOST_2,
- SFX_HFORI_MUGGED_1,
- SFX_HFORI_MUGGED_2,
- SFX_HFORI_RUN_1,
- SFX_HFORI_RUN_2,
- SFX_HFORI_RUN_3,
- SFX_HFORI_RUN_4,
- SFX_HFORI_SAVED_1,
- SFX_HFORI_SHOCKED_1,
- SFX_HFORI_SHOCKED_2,
- SFX_HFORI_TAXI_1,
-
- SFX_WFYBU_BUMP_1,
- SFX_WFYBU_BUMP_2,
- SFX_WFYBU_BUMP_3,
- SFX_WFYBU_BUMP_4,
- SFX_WFYBU_BUMP_5,
- SFX_WFYBU_BUMP_6,
- SFX_WFYBU_BUMP_7,
- SFX_WFYBU_BUMP_8,
- SFX_WFYBU_BUMP_9,
- SFX_WFYBU_BUMP_10,
- SFX_WFYBU_BUMP_11,
- SFX_WFYBU_BUMP_12,
- SFX_WFYBU_BUMP_13,
- SFX_WFYBU_BUMP_14,
- SFX_WFYBU_BUMP_15,
- SFX_WFYBU_BUMP_16,
- SFX_WFYBU_BUMP_17,
- SFX_WFYBU_BUMP_18,
- SFX_WFYBU_BUMP_19,
- SFX_WFYBU_BUMP_20,
- SFX_WFYBU_BUMP_21,
- SFX_WFYBU_CAR_CRASH_1,
- SFX_WFYBU_CAR_CRASH_2,
- SFX_WFYBU_CAR_CRASH_3,
- SFX_WFYBU_CAR_CRASH_4,
- SFX_WFYBU_CAR_CRASH_5,
- SFX_WFYBU_CAR_CRASH_6,
- SFX_WFYBU_CAR_CRASH_7,
- SFX_WFYBU_CAR_CRASH_8,
- SFX_WFYBU_CAR_CRASH_9,
- SFX_WFYBU_GENERIC_CRASH_1,
- SFX_WFYBU_GENERIC_CRASH_2,
- SFX_WFYBU_GENERIC_CRASH_3,
- SFX_WFYBU_GENERIC_CRASH_4,
- SFX_WFYBU_GENERIC_CRASH_5,
- SFX_WFYBU_GENERIC_CRASH_6,
- SFX_WFYBU_GENERIC_CRASH_7,
- SFX_WFYBU_GENERIC_CRASH_8,
- SFX_WFYBU_GUN_PANIC_1,
- SFX_WFYBU_GUN_PANIC_2,
- SFX_WFYBU_GUN_PANIC_3,
- SFX_WFYBU_GUN_PANIC_4,
- SFX_WFYBU_GUN_PANIC_5,
- SFX_WFYBU_GUN_PANIC_6,
- SFX_WFYBU_GUN_PANIC_7,
- SFX_WFYBU_GUN_PANIC_8,
- SFX_WFYBU_JACKED_1,
- SFX_WFYBU_JACKED_2,
- SFX_WFYBU_JACKED_3,
- SFX_WFYBU_JACKED_4,
- SFX_WFYBU_JACKED_5,
- SFX_WFYBU_JACKED_6,
- SFX_WFYBU_JACKED_7,
- SFX_WFYBU_JACKED_8,
- SFX_WFYBU_MUGGED_1,
- SFX_WFYBU_MUGGED_2,
- SFX_WFYBU_MUGGED_3,
- SFX_WFYBU_MUGGED_4,
- SFX_WFYBU_RUN_1,
- SFX_WFYBU_RUN_2,
- SFX_WFYBU_RUN_3,
- SFX_WFYBU_RUN_4,
- SFX_WFYBU_RUN_5,
- SFX_WFYBU_RUN_6,
- SFX_WFYBU_RUN_7,
- SFX_WFYBU_RUN_8,
- SFX_WFYBU_SHOCKED_1,
- SFX_WFYBU_SHOCKED_2,
- SFX_WFYBU_SHOCKED_3,
- SFX_WFYBU_TAXI_1,
- SFX_WFYBU_TAXI_2,
-
- SFX_WFOTR_BUMP_1,
- SFX_WFOTR_BUMP_2,
- SFX_WFOTR_BUMP_3,
- SFX_WFOTR_BUMP_4,
- SFX_WFOTR_BUMP_5,
- SFX_WFOTR_BUMP_6,
- SFX_WFOTR_BUMP_7,
- SFX_WFOTR_BUMP_8,
- SFX_WFOTR_BUMP_9,
- SFX_WFOTR_BUMP_10,
- SFX_WFOTR_BUMP_11,
- SFX_WFOTR_CHAT_1,
- SFX_WFOTR_CHAT_2,
- SFX_WFOTR_CHAT_3,
- SFX_WFOTR_CHAT_4,
- SFX_WFOTR_CHAT_5,
- SFX_WFOTR_CHAT_6,
- SFX_WFOTR_CHAT_7,
- SFX_WFOTR_CHAT_8,
- SFX_WFOTR_CHAT_9,
- SFX_WFOTR_DODGE_1,
- SFX_WFOTR_DODGE_2,
- SFX_WFOTR_DODGE_3,
- SFX_WFOTR_DODGE_4,
- SFX_WFOTR_DODGE_5,
- SFX_WFOTR_DODGE_6,
- SFX_WFOTR_DODGE_7,
- SFX_WFOTR_DODGE_8,
- SFX_WFOTR_DODGE_9,
- SFX_WFOTR_GUN_COOL_1,
- SFX_WFOTR_GUN_COOL_2,
- SFX_WFOTR_GUN_COOL_3,
- SFX_WFOTR_GUN_COOL_4,
- SFX_WFOTR_GUN_COOL_5,
- SFX_WFOTR_GUN_COOL_6,
- SFX_WFOTR_RUN_1,
- SFX_WFOTR_RUN_2,
- SFX_WFOTR_RUN_3,
- SFX_WFOTR_RUN_4,
- SFX_WFOTR_RUN_5,
- SFX_WFOTR_RUN_6,
- SFX_WFOTR_SAVED_1,
- SFX_WFOTR_SOLICIT_1,
- SFX_WFOTR_SOLICIT_2,
- SFX_WFOTR_SOLICIT_3,
- SFX_WFOTR_SOLICIT_4,
- SFX_WFOTR_SOLICIT_5,
- SFX_WFOTR_SOLICIT_6,
- SFX_WFOTR_SOLICIT_7,
- SFX_WFOTR_SOLICIT_8,
- SFX_WFOTR_SOLICIT_9,
- SFX_WFOTR_TAXI_1,
-
- SFX_WFYJG_BUMP_1,
- SFX_WFYJG_BUMP_2,
- SFX_WFYJG_BUMP_3,
- SFX_WFYJG_BUMP_4,
- SFX_WFYJG_BUMP_5,
- SFX_WFYJG_BUMP_6,
- SFX_WFYJG_BUMP_7,
- SFX_WFYJG_BUMP_8,
- SFX_WFYJG_BUMP_9,
- SFX_WFYJG_BUMP_10,
- SFX_WFYJG_BUMP_11,
- SFX_WFYJG_BUMP_12,
- SFX_WFYJG_DODGE_1,
- SFX_WFYJG_DODGE_2,
- SFX_WFYJG_DODGE_3,
- SFX_WFYJG_DODGE_4,
- SFX_WFYJG_DODGE_5,
- SFX_WFYJG_DODGE_6,
- SFX_WFYJG_DODGE_7,
- SFX_WFYJG_DODGE_8,
- SFX_WFYJG_GUN_PANIC_1,
- SFX_WFYJG_GUN_PANIC_2,
- SFX_WFYJG_GUN_PANIC_3,
- SFX_WFYJG_GUN_PANIC_4,
- SFX_WFYJG_RUN_1,
- SFX_WFYJG_RUN_2,
- SFX_WFYJG_RUN_3,
- SFX_WFYJG_RUN_4,
- SFX_WFYJG_RUN_5,
- SFX_WFYJG_RUN_6,
- SFX_WFYJG_SAVED_1,
- SFX_WFYJG_TAXI_1,
-
- SFX_WFYSH_BUMP_1,
- SFX_WFYSH_BUMP_2,
- SFX_WFYSH_BUMP_3,
- SFX_WFYSH_BUMP_4,
- SFX_WFYSH_BUMP_5,
- SFX_WFYSH_BUMP_6,
- SFX_WFYSH_BUMP_7,
- SFX_WFYSH_BUMP_8,
- SFX_WFYSH_BUMP_9,
- SFX_WFYSH_BUMP_10,
- SFX_WFYSH_BUMP_11,
- SFX_WFYSH_BUMP_12,
- SFX_WFYSH_CHAT_1,
- SFX_WFYSH_CHAT_2,
- SFX_WFYSH_CHAT_3,
- SFX_WFYSH_CHAT_4,
- SFX_WFYSH_CHAT_5,
- SFX_WFYSH_CHAT_6,
- SFX_WFYSH_CHAT_7,
- SFX_WFYSH_CHAT_8,
- SFX_WFYSH_CHAT_9,
- SFX_WFYSH_CHAT_10,
- SFX_WFYSH_DODGE_1,
- SFX_WFYSH_DODGE_2,
- SFX_WFYSH_DODGE_3,
- SFX_WFYSH_DODGE_4,
- SFX_WFYSH_DODGE_5,
- SFX_WFYSH_DODGE_6,
- SFX_WFYSH_DODGE_7,
- SFX_WFYSH_DODGE_8,
- SFX_WFYSH_DODGE_9,
- SFX_WFYSH_DODGE_10,
- SFX_WFYSH_DODGE_11,
- SFX_WFYSH_GUN_COOL_1,
- SFX_WFYSH_GUN_COOL_2,
- SFX_WFYSH_GUN_COOL_3,
- SFX_WFYSH_GUN_COOL_4,
- SFX_WFYSH_GUN_COOL_5,
- SFX_WFYSH_GUN_COOL_6,
- SFX_WFYSH_GUN_COOL_7,
- SFX_WFYSH_GUN_COOL_8,
- SFX_WFYSH_GUN_COOL_9,
- SFX_WFYSH_LOST_1,
- SFX_WFYSH_LOST_2,
- SFX_WFYSH_MUGGED_1,
- SFX_WFYSH_MUGGED_2,
- SFX_WFYSH_RUN_1,
- SFX_WFYSH_RUN_2,
- SFX_WFYSH_RUN_3,
- SFX_WFYSH_RUN_4,
- SFX_WFYSH_RUN_5,
- SFX_WFYSH_RUN_6,
- SFX_WFYSH_RUN_7,
- SFX_WFYSH_RUN_8,
- SFX_WFYSH_RUN_9,
- SFX_WFYSH_RUN_10,
- SFX_WFYSH_RUN_11,
- SFX_WFYSH_SAVED_1,
- SFX_WFYSH_SAVED_2,
- SFX_WFYSH_SAVED_3,
- SFX_WFYSH_SAVED_4,
- SFX_WFYSH_SHOCKED_1,
- SFX_WFYSH_SHOCKED_2,
- SFX_WFYSH_SHOCKED_3,
- SFX_WFYSH_SHOCKED_4,
- SFX_WFYSH_SHOCKED_5,
- SFX_WFYSH_TAXI_1,
- SFX_WFYSH_TAXI_2,
-
- SFX_WMOTR_BUMP_1,
- SFX_WMOTR_BUMP_2,
- SFX_WMOTR_BUMP_3,
- SFX_WMOTR_BUMP_4,
- SFX_WMOTR_BUMP_5,
- SFX_WMOTR_BUMP_6,
- SFX_WMOTR_BUMP_7,
- SFX_WMOTR_BUMP_8,
- SFX_WMOTR_BUMP_9,
- SFX_WMOTR_BUMP_10,
- SFX_WMOTR_CHAT_1,
- SFX_WMOTR_CHAT_2,
- SFX_WMOTR_CHAT_3,
- SFX_WMOTR_CHAT_4,
- SFX_WMOTR_CHAT_5,
- SFX_WMOTR_CHAT_6,
- SFX_WMOTR_CHAT_7,
- SFX_WMOTR_CHAT_8,
- SFX_WMOTR_CHAT_9,
- SFX_WMOTR_CHAT_10,
- SFX_WMOTR_CHAT_11,
- SFX_WMOTR_CHAT_12,
- SFX_WMOTR_CHAT_13,
- SFX_WMOTR_DODGE_1,
- SFX_WMOTR_DODGE_2,
- SFX_WMOTR_DODGE_3,
- SFX_WMOTR_DODGE_4,
- SFX_WMOTR_DODGE_5,
- SFX_WMOTR_DODGE_6,
- SFX_WMOTR_DODGE_7,
- SFX_WMOTR_DODGE_8,
- SFX_WMOTR_DODGE_9,
- SFX_WMOTR_DODGE_10,
- SFX_WMOTR_DODGE_11,
- SFX_WMOTR_DODGE_12,
- SFX_WMOTR_DODGE_13,
- SFX_WMOTR_DODGE_14,
- SFX_WMOTR_DODGE_15,
- SFX_WMOTR_DODGE_16,
- SFX_WMOTR_DODGE_17,
- SFX_WMOTR_EYEING_1,
- SFX_WMOTR_EYEING_2,
- SFX_WMOTR_FIGHT_1,
- SFX_WMOTR_FIGHT_2,
- SFX_WMOTR_FIGHT_3,
- SFX_WMOTR_FIGHT_4,
- SFX_WMOTR_FIGHT_5,
- SFX_WMOTR_FIGHT_6,
- SFX_WMOTR_GUN_COOL_1,
- SFX_WMOTR_GUN_COOL_2,
- SFX_WMOTR_GUN_COOL_3,
- SFX_WMOTR_GUN_COOL_4,
- SFX_WMOTR_GUN_COOL_5,
- SFX_WMOTR_SAVED_1,
- SFX_WMOTR_SHOCKED_1,
- SFX_WMOTR_SHOCKED_2,
- SFX_WMOTR_SHOCKED_3,
- SFX_WMOTR_SOLICIT_1,
- SFX_WMOTR_SOLICIT_2,
- SFX_WMOTR_SOLICIT_3,
- SFX_WMOTR_SOLICIT_4,
- SFX_WMOTR_SOLICIT_5,
- SFX_WMOTR_SOLICIT_6,
- SFX_WMOTR_SOLICIT_7,
- SFX_WMOTR_TAXI_1,
-
- SFX_BMOBE_BUMP_1,
- SFX_BMOBE_BUMP_2,
- SFX_BMOBE_BUMP_3,
- SFX_BMOBE_BUMP_4,
- SFX_BMOBE_BUMP_5,
- SFX_BMOBE_CAR_CRASH_1,
- SFX_BMOBE_CAR_CRASH_2,
- SFX_BMOBE_CAR_CRASH_3,
- SFX_BMOBE_CAR_CRASH_4,
- SFX_BMOBE_CAR_CRASH_5,
- SFX_BMOBE_CAR_CRASH_6,
- SFX_BMOBE_CAR_CRASH_7,
- SFX_BMOBE_CAR_CRASH_8,
- SFX_BMOBE_CAR_CRASH_9,
- SFX_BMOBE_CHAT_1,
- SFX_BMOBE_CHAT_2,
- SFX_BMOBE_CHAT_3,
- SFX_BMOBE_CHAT_4,
- SFX_BMOBE_CHAT_5,
- SFX_BMOBE_CHAT_6,
- SFX_BMOBE_CHAT_7,
- SFX_BMOBE_CHAT_8,
- SFX_BMOBE_CHAT_9,
- SFX_BMOBE_CHAT_10,
- SFX_BMOBE_DODGE_1,
- SFX_BMOBE_DODGE_2,
- SFX_BMOBE_DODGE_3,
- SFX_BMOBE_DODGE_4,
- SFX_BMOBE_DODGE_5,
- SFX_BMOBE_DODGE_6,
- SFX_BMOBE_DODGE_7,
- SFX_BMOBE_DODGE_8,
- SFX_BMOBE_DODGE_9,
- SFX_BMOBE_DODGE_10,
- SFX_BMOBE_DODGE_11,
- SFX_BMOBE_FIGHT_1,
- SFX_BMOBE_FIGHT_2,
- SFX_BMOBE_FIGHT_3,
- SFX_BMOBE_FIGHT_4,
- SFX_BMOBE_FIGHT_5,
- SFX_BMOBE_FIGHT_6,
- SFX_BMOBE_FIGHT_7,
- SFX_BMOBE_FIGHT_8,
- SFX_BMOBE_FIGHT_9,
- SFX_BMOBE_FIGHT_10,
- SFX_BMOBE_GENERIC_CRASH_1,
- SFX_BMOBE_GENERIC_CRASH_2,
- SFX_BMOBE_GENERIC_CRASH_3,
- SFX_BMOBE_GENERIC_CRASH_4,
- SFX_BMOBE_GENERIC_CRASH_5,
- SFX_BMOBE_GENERIC_CRASH_6,
- SFX_BMOBE_GENERIC_CRASH_7,
- SFX_BMOBE_GUN_PANIC_1,
- SFX_BMOBE_GUN_PANIC_2,
- SFX_BMOBE_GUN_PANIC_3,
- SFX_BMOBE_GUN_PANIC_4,
- SFX_BMOBE_GUN_PANIC_5,
- SFX_BMOBE_JACKED_1,
- SFX_BMOBE_JACKED_2,
- SFX_BMOBE_JACKED_3,
- SFX_BMOBE_JACKED_4,
- SFX_BMOBE_JACKED_5,
- SFX_BMOBE_JACKED_6,
- SFX_BMOBE_MUGGED_1,
- SFX_BMOBE_MUGGED_2,
- SFX_BMOBE_MUGGED_3,
- SFX_BMOBE_MUGGED_4,
- SFX_BMOBE_SAVED_1,
- SFX_BMOBE_SAVED_2,
- SFX_BMOBE_SAVED_3,
- SFX_BMOBE_SHOCKED_1,
- SFX_BMOBE_SHOCKED_2,
- SFX_BMOBE_SHOCKED_3,
- SFX_BMOBE_TAXI_1,
-
- SFX_WMYGO_BUMP_1,
- SFX_WMYGO_BUMP_2,
- SFX_WMYGO_BUMP_3,
- SFX_WMYGO_BUMP_4,
- SFX_WMYGO_BUMP_5,
- SFX_WMYGO_BUMP_6,
- SFX_WMYGO_BUMP_7,
- SFX_WMYGO_BUMP_8,
- SFX_WMYGO_BUMP_9,
- SFX_WMYGO_CAR_CRASH_1,
- SFX_WMYGO_CAR_CRASH_2,
- SFX_WMYGO_CAR_CRASH_3,
- SFX_WMYGO_CAR_CRASH_4,
- SFX_WMYGO_CAR_CRASH_5,
- SFX_WMYGO_CAR_CRASH_6,
- SFX_WMYGO_CAR_CRASH_7,
- SFX_WMYGO_CHAT_1,
- SFX_WMYGO_CHAT_2,
- SFX_WMYGO_CHAT_3,
- SFX_WMYGO_CHAT_4,
- SFX_WMYGO_CHAT_5,
- SFX_WMYGO_CHAT_6,
- SFX_WMYGO_CHAT_7,
- SFX_WMYGO_CHAT_8,
- SFX_WMYGO_CHAT_9,
- SFX_WMYGO_CHAT_10,
- SFX_WMYGO_DODGE_1,
- SFX_WMYGO_DODGE_2,
- SFX_WMYGO_DODGE_3,
- SFX_WMYGO_DODGE_4,
- SFX_WMYGO_DODGE_5,
- SFX_WMYGO_DODGE_6,
- SFX_WMYGO_DODGE_7,
- SFX_WMYGO_DODGE_8,
- SFX_WMYGO_DODGE_9,
- SFX_WMYGO_DODGE_10,
- SFX_WMYGO_DODGE_11,
- SFX_WMYGO_EYEING_1,
- SFX_WMYGO_EYEING_2,
- SFX_WMYGO_GENERIC_CRASH_1,
- SFX_WMYGO_GENERIC_CRASH_2,
- SFX_WMYGO_GENERIC_CRASH_3,
- SFX_WMYGO_GENERIC_CRASH_4,
- SFX_WMYGO_GENERIC_CRASH_5,
- SFX_WMYGO_GENERIC_CRASH_6,
- SFX_WMYGO_GENERIC_CRASH_7,
- SFX_WMYGO_GUN_PANIC_1,
- SFX_WMYGO_GUN_PANIC_2,
- SFX_WMYGO_GUN_PANIC_3,
- SFX_WMYGO_GUN_PANIC_4,
- SFX_WMYGO_GUN_PANIC_5,
- SFX_WMYGO_JACKED_1,
- SFX_WMYGO_JACKED_2,
- SFX_WMYGO_JACKED_3,
- SFX_WMYGO_JACKED_4,
- SFX_WMYGO_JACKED_5,
- SFX_WMYGO_JACKED_6,
- SFX_WMYGO_MUGGED_1,
- SFX_WMYGO_MUGGED_2,
- SFX_WMYGO_RUN_1,
- SFX_WMYGO_RUN_2,
- SFX_WMYGO_RUN_3,
- SFX_WMYGO_RUN_4,
- SFX_WMYGO_RUN_5,
- SFX_WMYGO_RUN_6,
- SFX_WMYGO_SAVED_1,
- SFX_WMYGO_SHOCKED_1,
- SFX_WMYGO_SHOCKED_2,
- SFX_WMYGO_TAXI_1,
- SFX_WMYGO_TAXI_2,
- SFX_WMYGO_TAXI_3,
-
- SFX_WFYBE_BLOCKED_1,
- SFX_WFYBE_BLOCKED_2,
- SFX_WFYBE_BLOCKED_3,
- SFX_WFYBE_BLOCKED_4,
- SFX_WFYBE_BLOCKED_5,
- SFX_WFYBE_BLOCKED_6,
- SFX_WFYBE_BLOCKED_7,
- SFX_WFYBE_BUMP_1,
- SFX_WFYBE_BUMP_2,
- SFX_WFYBE_BUMP_3,
- SFX_WFYBE_BUMP_4,
- SFX_WFYBE_BUMP_5,
- SFX_WFYBE_BUMP_6,
- SFX_WFYBE_BUMP_7,
- SFX_WFYBE_BUMP_8,
- SFX_WFYBE_BUMP_9,
- SFX_WFYBE_BUMP_10,
- SFX_WFYBE_BUMP_11,
- SFX_WFYBE_CAR_CRASH_1,
- SFX_WFYBE_CAR_CRASH_2,
- SFX_WFYBE_CAR_CRASH_3,
- SFX_WFYBE_CAR_CRASH_4,
- SFX_WFYBE_CAR_CRASH_5,
- SFX_WFYBE_CAR_CRASH_6,
- SFX_WFYBE_CHAT_1,
- SFX_WFYBE_CHAT_2,
- SFX_WFYBE_CHAT_3,
- SFX_WFYBE_CHAT_4,
- SFX_WFYBE_CHAT_5,
- SFX_WFYBE_CHAT_6,
- SFX_WFYBE_CHAT_7,
- SFX_WFYBE_CHAT_8,
- SFX_WFYBE_CHAT_9,
- SFX_WFYBE_CHAT_10,
- SFX_WFYBE_DODGE_1,
- SFX_WFYBE_DODGE_2,
- SFX_WFYBE_DODGE_3,
- SFX_WFYBE_DODGE_4,
- SFX_WFYBE_DODGE_5,
- SFX_WFYBE_DODGE_6,
- SFX_WFYBE_DODGE_7,
- SFX_WFYBE_DODGE_8,
- SFX_WFYBE_GENERIC_CRASH_1,
- SFX_WFYBE_GENERIC_CRASH_2,
- SFX_WFYBE_GENERIC_CRASH_3,
- SFX_WFYBE_GENERIC_CRASH_4,
- SFX_WFYBE_GENERIC_CRASH_5,
- SFX_WFYBE_GENERIC_CRASH_6,
- SFX_WFYBE_GUN_PANIC_1,
- SFX_WFYBE_GUN_PANIC_2,
- SFX_WFYBE_GUN_PANIC_3,
- SFX_WFYBE_GUN_PANIC_4,
- SFX_WFYBE_GUN_PANIC_5,
- SFX_WFYBE_JACKED_1,
- SFX_WFYBE_JACKED_2,
- SFX_WFYBE_JACKED_3,
- SFX_WFYBE_JACKED_4,
- SFX_WFYBE_RUN_1,
- SFX_WFYBE_RUN_2,
- SFX_WFYBE_RUN_3,
- SFX_WFYBE_RUN_4,
- SFX_WFYBE_RUN_5,
- SFX_WFYBE_SAVED_1,
- SFX_WFYBE_SHOCKED_1,
- SFX_WFYBE_SHOCKED_2,
- SFX_WFYBE_SHOCKED_3,
- SFX_WFYBE_TAXI_1,
-
- SFX_WFORI_BLOCKED_1,
- SFX_WFORI_BLOCKED_2,
- SFX_WFORI_BLOCKED_3,
- SFX_WFORI_BLOCKED_4,
- SFX_WFORI_BLOCKED_5,
- SFX_WFORI_BLOCKED_6,
- SFX_WFORI_BLOCKED_7,
- SFX_WFORI_BUMP_1,
- SFX_WFORI_BUMP_2,
- SFX_WFORI_BUMP_3,
- SFX_WFORI_BUMP_4,
- SFX_WFORI_BUMP_5,
- SFX_WFORI_BUMP_6,
- SFX_WFORI_BUMP_7,
- SFX_WFORI_BUMP_8,
- SFX_WFORI_BUMP_9,
- SFX_WFORI_BUMP_10,
- SFX_WFORI_BUMP_11,
- SFX_WFORI_CAR_CRASH_1,
- SFX_WFORI_CAR_CRASH_2,
- SFX_WFORI_CAR_CRASH_3,
- SFX_WFORI_CAR_CRASH_4,
- SFX_WFORI_CAR_CRASH_5,
- SFX_WFORI_CAR_CRASH_6,
- SFX_WFORI_CAR_CRASH_7,
- SFX_WFORI_CAR_CRASH_8,
- SFX_WFORI_CAR_CRASH_9,
- SFX_WFORI_CAR_CRASH_10,
- SFX_WFORI_DODGE_1,
- SFX_WFORI_DODGE_2,
- SFX_WFORI_DODGE_3,
- SFX_WFORI_DODGE_4,
- SFX_WFORI_DODGE_5,
- SFX_WFORI_DODGE_6,
- SFX_WFORI_DODGE_7,
- SFX_WFORI_DODGE_8,
- SFX_WFORI_DODGE_9,
- SFX_WFORI_DODGE_10,
- SFX_WFORI_DODGE_11,
- SFX_WFORI_FIGHT_1,
- SFX_WFORI_FIGHT_2,
- SFX_WFORI_FIGHT_3,
- SFX_WFORI_FIGHT_4,
- SFX_WFORI_FIGHT_5,
- SFX_WFORI_FIGHT_6,
- SFX_WFORI_FIGHT_7,
- SFX_WFORI_GENERIC_CRASH_1,
- SFX_WFORI_GENERIC_CRASH_2,
- SFX_WFORI_GENERIC_CRASH_3,
- SFX_WFORI_GENERIC_CRASH_4,
- SFX_WFORI_GENERIC_CRASH_5,
- SFX_WFORI_GENERIC_CRASH_6,
- SFX_WFORI_GENERIC_CRASH_7,
- SFX_WFORI_GENERIC_CRASH_8,
- SFX_WFORI_GUN_PANIC_1,
- SFX_WFORI_GUN_PANIC_2,
- SFX_WFORI_GUN_PANIC_3,
- SFX_WFORI_GUN_PANIC_4,
- SFX_WFORI_GUN_PANIC_5,
- SFX_WFORI_GUN_PANIC_6,
- SFX_WFORI_JACKED_1,
- SFX_WFORI_JACKED_2,
- SFX_WFORI_JACKED_3,
- SFX_WFORI_JACKED_4,
- SFX_WFORI_JACKED_5,
- SFX_WFORI_JACKED_6,
- SFX_WFORI_LOST_1,
- SFX_WFORI_LOST_2,
- SFX_WFORI_MUGGED_1,
- SFX_WFORI_MUGGED_2,
- SFX_WFORI_MUGGED_3,
- SFX_WFORI_SAVED_1,
- SFX_WFORI_SHOCKED_1,
- SFX_WFORI_SHOCKED_2,
- SFX_WFORI_SHOCKED_3,
- SFX_WFORI_TAXI_1,
-
- SFX_WFOGO_BUMP_1,
- SFX_WFOGO_BUMP_2,
- SFX_WFOGO_BUMP_3,
- SFX_WFOGO_BUMP_4,
- SFX_WFOGO_BUMP_5,
- SFX_WFOGO_BUMP_6,
- SFX_WFOGO_BUMP_7,
- SFX_WFOGO_BUMP_8,
- SFX_WFOGO_CAR_CRASH_1,
- SFX_WFOGO_CAR_CRASH_2,
- SFX_WFOGO_CAR_CRASH_3,
- SFX_WFOGO_CAR_CRASH_4,
- SFX_WFOGO_CAR_CRASH_5,
- SFX_WFOGO_CAR_CRASH_6,
- SFX_WFOGO_CAR_CRASH_7,
- SFX_WFOGO_CAR_CRASH_8,
- SFX_WFOGO_CHAT_1,
- SFX_WFOGO_CHAT_2,
- SFX_WFOGO_CHAT_3,
- SFX_WFOGO_CHAT_4,
- SFX_WFOGO_CHAT_5,
- SFX_WFOGO_CHAT_6,
- SFX_WFOGO_CHAT_7,
- SFX_WFOGO_CHAT_8,
- SFX_WFOGO_CHAT_9,
- SFX_WFOGO_CHAT_10,
- SFX_WFOGO_CHAT_11,
- SFX_WFOGO_DODGE_1,
- SFX_WFOGO_DODGE_2,
- SFX_WFOGO_DODGE_3,
- SFX_WFOGO_DODGE_4,
- SFX_WFOGO_DODGE_5,
- SFX_WFOGO_DODGE_6,
- SFX_WFOGO_DODGE_7,
- SFX_WFOGO_DODGE_8,
- SFX_WFOGO_DODGE_9,
- SFX_WFOGO_FIGHT_1,
- SFX_WFOGO_FIGHT_2,
- SFX_WFOGO_FIGHT_3,
- SFX_WFOGO_FIGHT_4,
- SFX_WFOGO_FIGHT_5,
- SFX_WFOGO_FIGHT_6,
- SFX_WFOGO_FIGHT_7,
- SFX_WFOGO_FIGHT_8,
- SFX_WFOGO_FIGHT_9,
- SFX_WFOGO_FIGHT_10,
- SFX_WFOGO_FIGHT_11,
- SFX_WFOGO_FIGHT_12,
- SFX_WFOGO_FIGHT_13,
- SFX_WFOGO_FIGHT_14,
- SFX_WFOGO_GENERIC_CRASH_1,
- SFX_WFOGO_GENERIC_CRASH_2,
- SFX_WFOGO_GENERIC_CRASH_3,
- SFX_WFOGO_GENERIC_CRASH_4,
- SFX_WFOGO_GENERIC_CRASH_5,
- SFX_WFOGO_GENERIC_CRASH_6,
- SFX_WFOGO_GENERIC_CRASH_7,
- SFX_WFOGO_GUN_PANIC_1,
- SFX_WFOGO_GUN_PANIC_2,
- SFX_WFOGO_GUN_PANIC_3,
- SFX_WFOGO_GUN_PANIC_4,
- SFX_WFOGO_GUN_PANIC_5,
- SFX_WFOGO_JACKED_1,
- SFX_WFOGO_JACKED_2,
- SFX_WFOGO_JACKED_3,
- SFX_WFOGO_JACKED_4,
- SFX_WFOGO_JACKED_5,
- SFX_WFOGO_JACKED_6,
- SFX_WFOGO_MUGGED_1,
- SFX_WFOGO_MUGGED_2,
- SFX_WFOGO_RUN_1,
- SFX_WFOGO_RUN_2,
- SFX_WFOGO_SAVED_1,
- SFX_WFOGO_SHOCKED_1,
- SFX_WFOGO_SHOCKED_2,
-
- SFX_HMYST_BUMP_1,
- SFX_HMYST_BUMP_2,
- SFX_HMYST_BUMP_3,
- SFX_HMYST_BUMP_4,
- SFX_HMYST_BUMP_5,
- SFX_HMYST_BUMP_6,
- SFX_HMYST_BUMP_7,
- SFX_HMYST_BUMP_8,
- SFX_HMYST_BUMP_9,
- SFX_HMYST_BUMP_10,
- SFX_HMYST_BUMP_11,
- SFX_HMYST_BUMP_12,
- SFX_HMYST_BUMP_13,
- SFX_HMYST_CHAT_1,
- SFX_HMYST_CHAT_2,
- SFX_HMYST_CHAT_3,
- SFX_HMYST_CHAT_4,
- SFX_HMYST_CHAT_5,
- SFX_HMYST_CHAT_6,
- SFX_HMYST_CHAT_7,
- SFX_HMYST_CHAT_8,
- SFX_HMYST_CHAT_9,
- SFX_HMYST_CHAT_10,
- SFX_HMYST_CHAT_11,
- SFX_HMYST_DODGE_1,
- SFX_HMYST_DODGE_2,
- SFX_HMYST_DODGE_3,
- SFX_HMYST_DODGE_4,
- SFX_HMYST_DODGE_5,
- SFX_HMYST_DODGE_6,
- SFX_HMYST_EYEING_1,
- SFX_HMYST_EYEING_2,
- SFX_HMYST_GENERIC_CRASH_1,
- SFX_HMYST_GENERIC_CRASH_2,
- SFX_HMYST_GENERIC_CRASH_3,
- SFX_HMYST_GENERIC_CRASH_4,
- SFX_HMYST_GENERIC_CRASH_5,
- SFX_HMYST_GENERIC_CRASH_6,
- SFX_HMYST_GENERIC_CRASH_7,
- SFX_HMYST_GUN_PANIC_1,
- SFX_HMYST_GUN_PANIC_2,
- SFX_HMYST_GUN_PANIC_3,
- SFX_HMYST_GUN_PANIC_4,
- SFX_HMYST_GUN_PANIC_5,
- SFX_HMYST_GUN_PANIC_6,
- SFX_HMYST_RUN_1,
- SFX_HMYST_RUN_2,
- SFX_HMYST_RUN_3,
- SFX_HMYST_RUN_4,
- SFX_HMYST_SAVED_1,
- SFX_HMYST_SHOCKED_1,
- SFX_HMYST_SHOCKED_2,
- SFX_HMYST_TAXI_1,
-
- SFX_WMOCA_BLOCKED_1,
- SFX_WMOCA_BLOCKED_2,
- SFX_WMOCA_BLOCKED_3,
- SFX_WMOCA_BLOCKED_4,
- SFX_WMOCA_BLOCKED_5,
- SFX_WMOCA_BLOCKED_6,
- SFX_WMOCA_BLOCKED_7,
- SFX_WMOCA_BLOCKED_8,
- SFX_WMOCA_BLOCKED_9,
- SFX_WMOCA_BLOCKED_10,
- SFX_WMOCA_BLOCKED_11,
- SFX_WMOCA_BLOCKED_12,
- SFX_WMOCA_BUMP_1,
- SFX_WMOCA_BUMP_2,
- SFX_WMOCA_BUMP_3,
- SFX_WMOCA_BUMP_4,
- SFX_WMOCA_BUMP_5,
- SFX_WMOCA_BUMP_6,
- SFX_WMOCA_CAR_CRASH_1,
- SFX_WMOCA_CAR_CRASH_2,
- SFX_WMOCA_CAR_CRASH_3,
- SFX_WMOCA_CAR_CRASH_4,
- SFX_WMOCA_CAR_CRASH_5,
- SFX_WMOCA_CAR_CRASH_6,
- SFX_WMOCA_CAR_CRASH_7,
- SFX_WMOCA_CAR_CRASH_8,
- SFX_WMOCA_CAR_CRASH_9,
- SFX_WMOCA_CAR_CRASH_10,
- SFX_WMOCA_DODGE_1,
- SFX_WMOCA_DODGE_2,
- SFX_WMOCA_DODGE_3,
- SFX_WMOCA_DODGE_4,
- SFX_WMOCA_DODGE_5,
- SFX_WMOCA_DODGE_6,
- SFX_WMOCA_DODGE_7,
- SFX_WMOCA_DODGE_8,
- SFX_WMOCA_DODGE_9,
- SFX_WMOCA_DODGE_10,
- SFX_WMOCA_EYEING_1,
- SFX_WMOCA_EYEING_2,
- SFX_WMOCA_FIGHT_1,
- SFX_WMOCA_FIGHT_2,
- SFX_WMOCA_FIGHT_3,
- SFX_WMOCA_FIGHT_4,
- SFX_WMOCA_FIGHT_5,
- SFX_WMOCA_FIGHT_6,
- SFX_WMOCA_FIGHT_7,
- SFX_WMOCA_FIGHT_8,
- SFX_WMOCA_GENERIC_CRASH_1,
- SFX_WMOCA_GENERIC_CRASH_2,
- SFX_WMOCA_GENERIC_CRASH_3,
- SFX_WMOCA_GENERIC_CRASH_4,
- SFX_WMOCA_GENERIC_CRASH_5,
- SFX_WMOCA_GENERIC_CRASH_6,
- SFX_WMOCA_GENERIC_CRASH_7,
- SFX_WMOCA_GENERIC_CRASH_8,
- SFX_WMOCA_GENERIC_CRASH_9,
- SFX_WMOCA_GUN_PANIC_1,
- SFX_WMOCA_GUN_PANIC_2,
- SFX_WMOCA_GUN_PANIC_3,
- SFX_WMOCA_GUN_PANIC_4,
- SFX_WMOCA_GUN_PANIC_5,
- SFX_WMOCA_GUN_PANIC_6,
- SFX_WMOCA_JACKED_1,
- SFX_WMOCA_JACKED_2,
- SFX_WMOCA_JACKED_3,
- SFX_WMOCA_JACKED_4,
- SFX_WMOCA_JACKED_5,
- SFX_WMOCA_JACKED_6,
- SFX_WMOCA_JACKED_7,
- SFX_WMOCA_JACKED_8,
- SFX_WMOCA_JACKED_9,
- SFX_WMOCA_JACKED_10,
- SFX_WMOCA_JACKING_1,
- SFX_WMOCA_JACKING_2,
- SFX_WMOCA_JACKING_3,
- SFX_WMOCA_JACKING_4,
- SFX_WMOCA_JACKING_5,
- SFX_WMOCA_JACKING_6,
- SFX_WMOCA_JACKING_7,
- SFX_WMOCA_JACKING_8,
- SFX_WMOCA_JACKING_9,
- SFX_WMOCA_JACKING_10,
- SFX_WMOCA_JACKING_11,
- SFX_WMOCA_MUGGED_1,
- SFX_WMOCA_MUGGED_2,
- SFX_WMOCA_SAVED_1,
- SFX_WMOCA_TAXI_1,
-
- SFX_WMYBE_BLOCKED_1,
- SFX_WMYBE_BLOCKED_2,
- SFX_WMYBE_BLOCKED_3,
- SFX_WMYBE_BLOCKED_4,
- SFX_WMYBE_BLOCKED_5,
- SFX_WMYBE_BLOCKED_6,
- SFX_WMYBE_BLOCKED_7,
- SFX_WMYBE_BLOCKED_8,
- SFX_WMYBE_BLOCKED_9,
- SFX_WMYBE_BUMP_1,
- SFX_WMYBE_BUMP_2,
- SFX_WMYBE_BUMP_3,
- SFX_WMYBE_BUMP_4,
- SFX_WMYBE_BUMP_5,
- SFX_WMYBE_BUMP_6,
- SFX_WMYBE_BUMP_7,
- SFX_WMYBE_BUMP_8,
- SFX_WMYBE_BUMP_9,
- SFX_WMYBE_BUMP_10,
- SFX_WMYBE_BUMP_11,
- SFX_WMYBE_BUMP_12,
- SFX_WMYBE_BUMP_13,
- SFX_WMYBE_BUMP_14,
- SFX_WMYBE_CAR_CRASH_1,
- SFX_WMYBE_CAR_CRASH_2,
- SFX_WMYBE_CAR_CRASH_3,
- SFX_WMYBE_CAR_CRASH_4,
- SFX_WMYBE_CAR_CRASH_5,
- SFX_WMYBE_CAR_CRASH_6,
- SFX_WMYBE_CAR_CRASH_7,
- SFX_WMYBE_CAR_CRASH_8,
- SFX_WMYBE_CHAT_1,
- SFX_WMYBE_CHAT_2,
- SFX_WMYBE_CHAT_3,
- SFX_WMYBE_CHAT_4,
- SFX_WMYBE_CHAT_5,
- SFX_WMYBE_CHAT_6,
- SFX_WMYBE_CHAT_7,
- SFX_WMYBE_CHAT_8,
- SFX_WMYBE_CHAT_9,
- SFX_WMYBE_CHAT_10,
- SFX_WMYBE_CHAT_11,
- SFX_WMYBE_DODGE_1,
- SFX_WMYBE_DODGE_2,
- SFX_WMYBE_DODGE_3,
- SFX_WMYBE_DODGE_4,
- SFX_WMYBE_DODGE_5,
- SFX_WMYBE_DODGE_6,
- SFX_WMYBE_DODGE_7,
- SFX_WMYBE_DODGE_8,
- SFX_WMYBE_DODGE_9,
- SFX_WMYBE_DODGE_10,
- SFX_WMYBE_DODGE_11,
- SFX_WMYBE_DODGE_12,
- SFX_WMYBE_EYEING_1,
- SFX_WMYBE_EYEING_2,
- SFX_WMYBE_GENERIC_CRASH_1,
- SFX_WMYBE_GENERIC_CRASH_2,
- SFX_WMYBE_GENERIC_CRASH_3,
- SFX_WMYBE_GENERIC_CRASH_4,
- SFX_WMYBE_GENERIC_CRASH_5,
- SFX_WMYBE_GENERIC_CRASH_6,
- SFX_WMYBE_GENERIC_CRASH_7,
- SFX_WMYBE_GENERIC_CRASH_8,
- SFX_WMYBE_GUN_PANIC_1,
- SFX_WMYBE_GUN_PANIC_2,
- SFX_WMYBE_GUN_PANIC_3,
- SFX_WMYBE_GUN_PANIC_4,
- SFX_WMYBE_GUN_PANIC_5,
- SFX_WMYBE_GUN_PANIC_6,
- SFX_WMYBE_GUN_PANIC_7,
- SFX_WMYBE_GUN_PANIC_8,
- SFX_WMYBE_JACKED_1,
- SFX_WMYBE_JACKED_2,
- SFX_WMYBE_JACKED_3,
- SFX_WMYBE_JACKED_4,
- SFX_WMYBE_JACKED_5,
- SFX_WMYBE_JACKED_6,
- SFX_WMYBE_JACKED_7,
- SFX_WMYBE_JACKING_1,
- SFX_WMYBE_JACKING_2,
- SFX_WMYBE_JACKING_3,
- SFX_WMYBE_JEER_1,
- SFX_WMYBE_JEER_2,
- SFX_WMYBE_JEER_3,
- SFX_WMYBE_JEER_4,
- SFX_WMYBE_JEER_5,
- SFX_WMYBE_JEER_6,
- SFX_WMYBE_JEER_7,
- SFX_WMYBE_LOST_1,
- SFX_WMYBE_LOST_2,
- SFX_WMYBE_LOST_3,
- SFX_WMYBE_RUN_1,
- SFX_WMYBE_RUN_2,
- SFX_WMYBE_RUN_3,
- SFX_WMYBE_RUN_4,
- SFX_WMYBE_RUN_5,
- SFX_WMYBE_SHOCKED_1,
- SFX_WMYBE_SHOCKED_2,
- SFX_WMYBE_SHOCKED_3,
- SFX_WMYBE_SHOCKED_4,
- SFX_WMYBE_SHOCKED_5,
- SFX_WMYBE_SHOCKED_6,
-
- SFX_BFOBE_BLOCKED_1,
- SFX_BFOBE_BLOCKED_2,
- SFX_BFOBE_BLOCKED_3,
- SFX_BFOBE_BLOCKED_4,
- SFX_BFOBE_BLOCKED_5,
- SFX_BFOBE_BLOCKED_6,
- SFX_BFOBE_BLOCKED_7,
- SFX_BFOBE_BLOCKED_8,
- SFX_BFOBE_BUMP_1,
- SFX_BFOBE_BUMP_2,
- SFX_BFOBE_BUMP_3,
- SFX_BFOBE_BUMP_4,
- SFX_BFOBE_BUMP_5,
- SFX_BFOBE_BUMP_6,
- SFX_BFOBE_BUMP_7,
- SFX_BFOBE_BUMP_8,
- SFX_BFOBE_CAR_CRASH_1,
- SFX_BFOBE_CAR_CRASH_2,
- SFX_BFOBE_CAR_CRASH_3,
- SFX_BFOBE_CAR_CRASH_4,
- SFX_BFOBE_CAR_CRASH_5,
- SFX_BFOBE_CAR_CRASH_6,
- SFX_BFOBE_CAR_CRASH_7,
- SFX_BFOBE_CHAT_1,
- SFX_BFOBE_CHAT_2,
- SFX_BFOBE_CHAT_3,
- SFX_BFOBE_CHAT_4,
- SFX_BFOBE_CHAT_5,
- SFX_BFOBE_CHAT_6,
- SFX_BFOBE_CHAT_7,
- SFX_BFOBE_CHAT_8,
- SFX_BFOBE_DODGE_1,
- SFX_BFOBE_DODGE_2,
- SFX_BFOBE_DODGE_3,
- SFX_BFOBE_DODGE_4,
- SFX_BFOBE_DODGE_5,
- SFX_BFOBE_DODGE_6,
- SFX_BFOBE_DODGE_7,
- SFX_BFOBE_DODGE_8,
- SFX_BFOBE_DODGE_9,
- SFX_BFOBE_GENERIC_CRASH_1,
- SFX_BFOBE_GENERIC_CRASH_2,
- SFX_BFOBE_GENERIC_CRASH_3,
- SFX_BFOBE_GENERIC_CRASH_4,
- SFX_BFOBE_GENERIC_CRASH_5,
- SFX_BFOBE_GENERIC_CRASH_6,
- SFX_BFOBE_GENERIC_CRASH_7,
- SFX_BFOBE_GUN_PANIC_1,
- SFX_BFOBE_GUN_PANIC_2,
- SFX_BFOBE_GUN_PANIC_3,
- SFX_BFOBE_GUN_PANIC_4,
- SFX_BFOBE_GUN_PANIC_5,
- SFX_BFOBE_JACKED_1,
- SFX_BFOBE_JACKED_2,
- SFX_BFOBE_JACKED_3,
- SFX_BFOBE_JACKED_4,
- SFX_BFOBE_JACKED_5,
- SFX_BFOBE_JACKING_1,
- SFX_BFOBE_JACKING_2,
- SFX_BFOBE_JACKING_3,
- SFX_BFOBE_JACKING_4,
- SFX_BFOBE_MUGGED_1,
- SFX_BFOBE_MUGGED_2,
- SFX_BFOBE_SHOCKED_1,
- SFX_BFOBE_SHOCKED_2,
- SFX_BFOBE_TAXI_1,
-
- SFX_WFYLG_BUMP_1,
- SFX_WFYLG_BUMP_2,
- SFX_WFYLG_BUMP_3,
- SFX_WFYLG_BUMP_4,
- SFX_WFYLG_BUMP_5,
- SFX_WFYLG_BUMP_6,
- SFX_WFYLG_BUMP_7,
- SFX_WFYLG_BUMP_8,
- SFX_WFYLG_BUMP_9,
- SFX_WFYLG_BUMP_10,
- SFX_WFYLG_CHAT_1,
- SFX_WFYLG_CHAT_2,
- SFX_WFYLG_CHAT_3,
- SFX_WFYLG_CHAT_4,
- SFX_WFYLG_CHAT_5,
- SFX_WFYLG_CHAT_6,
- SFX_WFYLG_CHAT_7,
- SFX_WFYLG_CHAT_8,
- SFX_WFYLG_CHAT_9,
- SFX_WFYLG_CHAT_10,
- SFX_WFYLG_DODGE_1,
- SFX_WFYLG_DODGE_2,
- SFX_WFYLG_DODGE_3,
- SFX_WFYLG_DODGE_4,
- SFX_WFYLG_DODGE_5,
- SFX_WFYLG_DODGE_6,
- SFX_WFYLG_DODGE_7,
- SFX_WFYLG_DODGE_8,
- SFX_WFYLG_FIGHT_1,
- SFX_WFYLG_FIGHT_2,
- SFX_WFYLG_FIGHT_3,
- SFX_WFYLG_FIGHT_4,
- SFX_WFYLG_FIGHT_5,
- SFX_WFYLG_FIGHT_6,
- SFX_WFYLG_FIGHT_7,
- SFX_WFYLG_GUN_COOL_1,
- SFX_WFYLG_GUN_COOL_2,
- SFX_WFYLG_GUN_COOL_3,
- SFX_WFYLG_GUN_COOL_4,
- SFX_WFYLG_GUN_COOL_5,
- SFX_WFYLG_SAVED_1,
- SFX_WFYLG_TAXI_1,
-
- SFX_WFOST_BLOCKED_1,
- SFX_WFOST_BLOCKED_2,
- SFX_WFOST_BLOCKED_3,
- SFX_WFOST_BLOCKED_4,
- SFX_WFOST_BLOCKED_5,
- SFX_WFOST_BLOCKED_6,
- SFX_WFOST_BLOCKED_7,
- SFX_WFOST_BLOCKED_8,
- SFX_WFOST_BLOCKED_9,
- SFX_WFOST_BLOCKED_10,
- SFX_WFOST_BLOCKED_11,
- SFX_WFOST_BLOCKED_12,
- SFX_WFOST_BUMP_1,
- SFX_WFOST_BUMP_2,
- SFX_WFOST_BUMP_3,
- SFX_WFOST_BUMP_4,
- SFX_WFOST_BUMP_5,
- SFX_WFOST_BUMP_6,
- SFX_WFOST_BUMP_7,
- SFX_WFOST_BUMP_8,
- SFX_WFOST_BUMP_9,
- SFX_WFOST_BUMP_10,
- SFX_WFOST_BUMP_11,
- SFX_WFOST_BUMP_12,
- SFX_WFOST_BUMP_13,
- SFX_WFOST_BUMP_14,
- SFX_WFOST_BUMP_15,
- SFX_WFOST_BUMP_16,
- SFX_WFOST_BUMP_17,
- SFX_WFOST_BUMP_18,
- SFX_WFOST_BUMP_19,
- SFX_WFOST_CAR_CRASH_1,
- SFX_WFOST_CAR_CRASH_2,
- SFX_WFOST_CAR_CRASH_3,
- SFX_WFOST_CAR_CRASH_4,
- SFX_WFOST_CAR_CRASH_5,
- SFX_WFOST_CAR_CRASH_6,
- SFX_WFOST_CAR_CRASH_7,
- SFX_WFOST_CAR_CRASH_8,
- SFX_WFOST_CAR_CRASH_9,
- SFX_WFOST_CAR_CRASH_10,
- SFX_WFOST_CAR_CRASH_11,
- SFX_WFOST_CHAT_1,
- SFX_WFOST_CHAT_2,
- SFX_WFOST_CHAT_3,
- SFX_WFOST_CHAT_4,
- SFX_WFOST_CHAT_5,
- SFX_WFOST_CHAT_6,
- SFX_WFOST_CHAT_7,
- SFX_WFOST_CHAT_8,
- SFX_WFOST_CHAT_9,
- SFX_WFOST_CHAT_10,
- SFX_WFOST_CHAT_11,
- SFX_WFOST_CHAT_12,
- SFX_WFOST_CHAT_13,
- SFX_WFOST_CHAT_14,
- SFX_WFOST_CHAT_15,
- SFX_WFOST_CHAT_16,
- SFX_WFOST_DODGE_1,
- SFX_WFOST_DODGE_2,
- SFX_WFOST_DODGE_3,
- SFX_WFOST_DODGE_4,
- SFX_WFOST_DODGE_5,
- SFX_WFOST_DODGE_6,
- SFX_WFOST_DODGE_7,
- SFX_WFOST_DODGE_8,
- SFX_WFOST_DODGE_9,
- SFX_WFOST_DODGE_10,
- SFX_WFOST_DODGE_11,
- SFX_WFOST_DODGE_12,
- SFX_WFOST_GENERIC_CRASH_1,
- SFX_WFOST_GENERIC_CRASH_2,
- SFX_WFOST_GENERIC_CRASH_3,
- SFX_WFOST_GENERIC_CRASH_4,
- SFX_WFOST_GENERIC_CRASH_5,
- SFX_WFOST_GENERIC_CRASH_6,
- SFX_WFOST_GENERIC_CRASH_7,
- SFX_WFOST_GENERIC_CRASH_8,
- SFX_WFOST_GENERIC_CRASH_9,
- SFX_WFOST_GENERIC_CRASH_10,
- SFX_WFOST_GUN_PANIC_1,
- SFX_WFOST_GUN_PANIC_2,
- SFX_WFOST_GUN_PANIC_3,
- SFX_WFOST_GUN_PANIC_4,
- SFX_WFOST_JACKED_1,
- SFX_WFOST_JACKED_2,
- SFX_WFOST_JACKED_3,
- SFX_WFOST_JACKED_4,
- SFX_WFOST_JACKED_5,
- SFX_WFOST_JACKED_6,
- SFX_WFOST_JACKED_7,
- SFX_WFOST_JACKED_8,
- SFX_WFOST_LOST_1,
- SFX_WFOST_LOST_2,
- SFX_WFOST_LOST_3,
- SFX_WFOST_MUGGED_1,
- SFX_WFOST_MUGGED_2,
- SFX_WFOST_MUGGED_3,
- SFX_WFOST_MUGGED_4,
- SFX_WFOST_MUGGED_5,
- SFX_WFOST_RUN_1,
- SFX_WFOST_RUN_2,
- SFX_WFOST_RUN_3,
- SFX_WFOST_RUN_4,
- SFX_WFOST_RUN_5,
- SFX_WFOST_RUN_6,
- SFX_WFOST_RUN_7,
- SFX_WFOST_SAVED_1,
- SFX_WFOST_SAVED_2,
- SFX_WFOST_SAVED_3,
- SFX_WFOST_SAVED_4,
- SFX_WFOST_TAXI_1,
-
- SFX_WFYST_BLOCKED_1,
- SFX_WFYST_BLOCKED_2,
- SFX_WFYST_BLOCKED_3,
- SFX_WFYST_BLOCKED_4,
- SFX_WFYST_BLOCKED_5,
- SFX_WFYST_BLOCKED_6,
- SFX_WFYST_BUMP_1,
- SFX_WFYST_BUMP_2,
- SFX_WFYST_BUMP_3,
- SFX_WFYST_BUMP_4,
- SFX_WFYST_BUMP_5,
- SFX_WFYST_BUMP_6,
- SFX_WFYST_BUMP_7,
- SFX_WFYST_BUMP_8,
- SFX_WFYST_BUMP_9,
- SFX_WFYST_BUMP_10,
- SFX_WFYST_CAR_CRASH_1,
- SFX_WFYST_CAR_CRASH_2,
- SFX_WFYST_CAR_CRASH_3,
- SFX_WFYST_CAR_CRASH_4,
- SFX_WFYST_CAR_CRASH_5,
- SFX_WFYST_CAR_CRASH_6,
- SFX_WFYST_CAR_CRASH_7,
- SFX_WFYST_CAR_CRASH_8,
- SFX_WFYST_CHAT_1,
- SFX_WFYST_CHAT_2,
- SFX_WFYST_CHAT_3,
- SFX_WFYST_CHAT_4,
- SFX_WFYST_CHAT_5,
- SFX_WFYST_CHAT_6,
- SFX_WFYST_CHAT_7,
- SFX_WFYST_CHAT_8,
- SFX_WFYST_CHAT_9,
- SFX_WFYST_CHAT_10,
- SFX_WFYST_DODGE_1,
- SFX_WFYST_DODGE_2,
- SFX_WFYST_DODGE_3,
- SFX_WFYST_DODGE_4,
- SFX_WFYST_DODGE_5,
- SFX_WFYST_DODGE_6,
- SFX_WFYST_DODGE_7,
- SFX_WFYST_DODGE_8,
- SFX_WFYST_DODGE_9,
- SFX_WFYST_DODGE_10,
- SFX_WFYST_FIGHT_1,
- SFX_WFYST_FIGHT_2,
- SFX_WFYST_FIGHT_3,
- SFX_WFYST_FIGHT_4,
- SFX_WFYST_FIGHT_5,
- SFX_WFYST_FIGHT_6,
- SFX_WFYST_FIGHT_7,
- SFX_WFYST_GENERIC_CRASH_1,
- SFX_WFYST_GENERIC_CRASH_2,
- SFX_WFYST_GENERIC_CRASH_3,
- SFX_WFYST_GENERIC_CRASH_4,
- SFX_WFYST_GENERIC_CRASH_5,
- SFX_WFYST_GENERIC_CRASH_6,
- SFX_WFYST_GENERIC_CRASH_7,
- SFX_WFYST_GENERIC_CRASH_8,
- SFX_WFYST_GUN_COOL_1,
- SFX_WFYST_GUN_COOL_2,
- SFX_WFYST_GUN_COOL_3,
- SFX_WFYST_GUN_COOL_4,
- SFX_WFYST_GUN_COOL_5,
- SFX_WFYST_JACKED_1,
- SFX_WFYST_JACKED_2,
- SFX_WFYST_JACKED_3,
- SFX_WFYST_JACKED_4,
- SFX_WFYST_JACKED_5,
- SFX_WFYST_JACKED_6,
- SFX_WFYST_JACKING_1,
- SFX_WFYST_JACKING_2,
- SFX_WFYST_JACKING_3,
- SFX_WFYST_JACKING_4,
- SFX_WFYST_LOST_1,
- SFX_WFYST_MUGGED_1,
- SFX_WFYST_MUGGED_2,
- SFX_WFYST_MUGGING_1,
- SFX_WFYST_MUGGING_2,
- SFX_WFYST_MUGGING_3,
- SFX_WFYST_MUGGING_4,
- SFX_WFYST_SAVED_1,
- SFX_WFYST_TAXI_1,
-
- SFX_COP_VOICE_1_ARREST_1,
- SFX_COP_VOICE_1_ARREST_2,
- SFX_COP_VOICE_1_ARREST_3,
- SFX_COP_VOICE_1_ARREST_4,
- SFX_COP_VOICE_1_PULLOUTWEAPON_1,
- SFX_COP_VOICE_1_PULLOUTWEAPON_2,
- SFX_COP_VOICE_1_PULLOUTWEAPON_3,
- SFX_COP_VOICE_1_BUMP_1,
- SFX_COP_VOICE_1_BUMP_2,
- SFX_COP_VOICE_1_BUMP_3,
- SFX_COP_VOICE_1_BUMP_4,
- SFX_COP_VOICE_1_BUMP_5,
- SFX_COP_VOICE_1_COP_LITTLECOPSAROUND_1,
- SFX_COP_VOICE_1_COP_LITTLECOPSAROUND_2,
- SFX_COP_VOICE_1_COP_LITTLECOPSAROUND_3,
- SFX_COP_VOICE_1_COP_LITTLECOPSAROUND_4,
- SFX_COP_VOICE_1_GUNAIMEDAT3_1,
- SFX_COP_VOICE_1_GUNAIMEDAT3_2,
- SFX_COP_VOICE_1_CAR_CRASH_1,
- SFX_COP_VOICE_1_CAR_CRASH_2,
- SFX_COP_VOICE_1_CAR_CRASH_3,
- SFX_COP_VOICE_1_CAR_CRASH_4,
- SFX_COP_VOICE_1_DODGE_1,
- SFX_COP_VOICE_1_DODGE_2,
- SFX_COP_VOICE_1_DODGE_3,
- SFX_COP_VOICE_1_FIGHT_1,
- SFX_COP_VOICE_1_FIGHT_2,
- SFX_COP_VOICE_1_FIGHT_3,
- SFX_COP_VOICE_1_FIGHT_4,
- SFX_COP_VOICE_1_GUNAIMEDAT2_1,
- SFX_COP_VOICE_1_GUNAIMEDAT2_2,
- SFX_COP_VOICE_1_SAVED_1,
- SFX_COP_VOICE_1_SAVED_2,
- SFX_COP_VOICE_1_COP_ASK_FOR_ID_1,
- SFX_COP_VOICE_1_COP_ASK_FOR_ID_2,
- SFX_COP_VOICE_1_COP_ALONE_1,
- SFX_COP_VOICE_1_COP_ALONE_2,
- SFX_COP_VOICE_1_COP_ALONE_3,
- SFX_COP_VOICE_1_COP_ALONE_4,
- SFX_COP_VOICE_1_COP_MANYCOPSAROUND_1,
- SFX_COP_VOICE_1_COP_MANYCOPSAROUND_2,
- SFX_COP_VOICE_1_COP_TARGETING_1,
- SFX_COP_VOICE_1_COP_TARGETING_2,
- SFX_COP_VOICE_1_COP_TARGETING_3,
- SFX_COP_VOICE_1_COP_TARGETING_4,
-
- SFX_COP_VOICE_2_ARREST_1,
- SFX_COP_VOICE_2_ARREST_2,
- SFX_COP_VOICE_2_ARREST_3,
- SFX_COP_VOICE_2_ARREST_4,
- SFX_COP_VOICE_2_PULLOUTWEAPON_1,
- SFX_COP_VOICE_2_PULLOUTWEAPON_2,
- SFX_COP_VOICE_2_PULLOUTWEAPON_3,
- SFX_COP_VOICE_2_BUMP_1,
- SFX_COP_VOICE_2_BUMP_2,
- SFX_COP_VOICE_2_BUMP_3,
- SFX_COP_VOICE_2_BUMP_4,
- SFX_COP_VOICE_2_BUMP_5,
- SFX_COP_VOICE_2_COP_LITTLECOPSAROUND_1,
- SFX_COP_VOICE_2_COP_LITTLECOPSAROUND_2,
- SFX_COP_VOICE_2_COP_LITTLECOPSAROUND_3,
- SFX_COP_VOICE_2_COP_LITTLECOPSAROUND_4,
- SFX_COP_VOICE_2_GUNAIMEDAT3_1,
- SFX_COP_VOICE_2_GUNAIMEDAT3_2,
- SFX_COP_VOICE_2_CAR_CRASH_1,
- SFX_COP_VOICE_2_CAR_CRASH_2,
- SFX_COP_VOICE_2_CAR_CRASH_3,
- SFX_COP_VOICE_2_CAR_CRASH_4,
- SFX_COP_VOICE_2_DODGE_1,
- SFX_COP_VOICE_2_DODGE_2,
- SFX_COP_VOICE_2_DODGE_3,
- SFX_COP_VOICE_2_FIGHT_1,
- SFX_COP_VOICE_2_FIGHT_2,
- SFX_COP_VOICE_2_FIGHT_3,
- SFX_COP_VOICE_2_FIGHT_4,
- SFX_COP_VOICE_2_GUNAIMEDAT2_1,
- SFX_COP_VOICE_2_GUNAIMEDAT2_2,
- SFX_COP_VOICE_2_SAVED_1,
- SFX_COP_VOICE_2_SAVED_2,
- SFX_COP_VOICE_2_COP_ASK_FOR_ID_1,
- SFX_COP_VOICE_2_COP_ASK_FOR_ID_2,
- SFX_COP_VOICE_2_COP_ALONE_1,
- SFX_COP_VOICE_2_COP_ALONE_2,
- SFX_COP_VOICE_2_COP_ALONE_3,
- SFX_COP_VOICE_2_COP_ALONE_4,
- SFX_COP_VOICE_2_COP_MANYCOPSAROUND_1,
- SFX_COP_VOICE_2_COP_MANYCOPSAROUND_2,
- SFX_COP_VOICE_2_COP_TARGETING_1,
- SFX_COP_VOICE_2_COP_TARGETING_2,
- SFX_COP_VOICE_2_COP_TARGETING_3,
- SFX_COP_VOICE_2_COP_TARGETING_4,
-
- SFX_COP_VOICE_3_ARREST_1,
- SFX_COP_VOICE_3_ARREST_2,
- SFX_COP_VOICE_3_ARREST_3,
- SFX_COP_VOICE_3_ARREST_4,
- SFX_COP_VOICE_3_PULLOUTWEAPON_1,
- SFX_COP_VOICE_3_PULLOUTWEAPON_2,
- SFX_COP_VOICE_3_PULLOUTWEAPON_3,
- SFX_COP_VOICE_3_BUMP_1,
- SFX_COP_VOICE_3_BUMP_2,
- SFX_COP_VOICE_3_BUMP_3,
- SFX_COP_VOICE_3_BUMP_4,
- SFX_COP_VOICE_3_BUMP_5,
- SFX_COP_VOICE_3_COP_LITTLECOPSAROUND_1,
- SFX_COP_VOICE_3_COP_LITTLECOPSAROUND_2,
- SFX_COP_VOICE_3_COP_LITTLECOPSAROUND_3,
- SFX_COP_VOICE_3_COP_LITTLECOPSAROUND_4,
- SFX_COP_VOICE_3_GUNAIMEDAT3_1,
- SFX_COP_VOICE_3_GUNAIMEDAT3_2,
- SFX_COP_VOICE_3_CAR_CRASH_1,
- SFX_COP_VOICE_3_CAR_CRASH_2,
- SFX_COP_VOICE_3_CAR_CRASH_3,
- SFX_COP_VOICE_3_CAR_CRASH_4,
- SFX_COP_VOICE_3_DODGE_1,
- SFX_COP_VOICE_3_DODGE_2,
- SFX_COP_VOICE_3_DODGE_3,
- SFX_COP_VOICE_3_FIGHT_1,
- SFX_COP_VOICE_3_FIGHT_2,
- SFX_COP_VOICE_3_FIGHT_3,
- SFX_COP_VOICE_3_FIGHT_4,
- SFX_COP_VOICE_3_GUNAIMEDAT2_1,
- SFX_COP_VOICE_3_GUNAIMEDAT2_2,
- SFX_COP_VOICE_3_SAVED_1,
- SFX_COP_VOICE_3_SAVED_2,
- SFX_COP_VOICE_3_COP_ASK_FOR_ID_1,
- SFX_COP_VOICE_3_COP_ASK_FOR_ID_2,
- SFX_COP_VOICE_3_COP_ALONE_1,
- SFX_COP_VOICE_3_COP_ALONE_2,
- SFX_COP_VOICE_3_COP_ALONE_3,
- SFX_COP_VOICE_3_COP_ALONE_4,
- SFX_COP_VOICE_3_COP_MANYCOPSAROUND_1,
- SFX_COP_VOICE_3_COP_MANYCOPSAROUND_2,
- SFX_COP_VOICE_3_COP_TARGETING_1,
- SFX_COP_VOICE_3_COP_TARGETING_2,
- SFX_COP_VOICE_3_COP_TARGETING_3,
- SFX_COP_VOICE_3_COP_TARGETING_4,
-
- SFX_COP_VOICE_4_ARREST_1,
- SFX_COP_VOICE_4_ARREST_2,
- SFX_COP_VOICE_4_ARREST_3,
- SFX_COP_VOICE_4_ARREST_4,
- SFX_COP_VOICE_4_PULLOUTWEAPON_1,
- SFX_COP_VOICE_4_PULLOUTWEAPON_2,
- SFX_COP_VOICE_4_PULLOUTWEAPON_3,
- SFX_COP_VOICE_4_BUMP_1,
- SFX_COP_VOICE_4_BUMP_2,
- SFX_COP_VOICE_4_BUMP_3,
- SFX_COP_VOICE_4_BUMP_4,
- SFX_COP_VOICE_4_BUMP_5,
- SFX_COP_VOICE_4_COP_LITTLECOPSAROUND_1,
- SFX_COP_VOICE_4_COP_LITTLECOPSAROUND_2,
- SFX_COP_VOICE_4_COP_LITTLECOPSAROUND_3,
- SFX_COP_VOICE_4_COP_LITTLECOPSAROUND_4,
- SFX_COP_VOICE_4_GUNAIMEDAT3_1,
- SFX_COP_VOICE_4_GUNAIMEDAT3_2,
- SFX_COP_VOICE_4_CAR_CRASH_1,
- SFX_COP_VOICE_4_CAR_CRASH_2,
- SFX_COP_VOICE_4_CAR_CRASH_3,
- SFX_COP_VOICE_4_CAR_CRASH_4,
- SFX_COP_VOICE_4_DODGE_1,
- SFX_COP_VOICE_4_DODGE_2,
- SFX_COP_VOICE_4_DODGE_3,
- SFX_COP_VOICE_4_FIGHT_1,
- SFX_COP_VOICE_4_FIGHT_2,
- SFX_COP_VOICE_4_FIGHT_3,
- SFX_COP_VOICE_4_FIGHT_4,
- SFX_COP_VOICE_4_GUNAIMEDAT2_1,
- SFX_COP_VOICE_4_GUNAIMEDAT2_2,
- SFX_COP_VOICE_4_SAVED_1,
- SFX_COP_VOICE_4_SAVED_2,
- SFX_COP_VOICE_4_COP_ASK_FOR_ID_1,
- SFX_COP_VOICE_4_COP_ASK_FOR_ID_2,
- SFX_COP_VOICE_4_COP_ALONE_1,
- SFX_COP_VOICE_4_COP_ALONE_2,
- SFX_COP_VOICE_4_COP_ALONE_3,
- SFX_COP_VOICE_4_COP_ALONE_4,
- SFX_COP_VOICE_4_COP_MANYCOPSAROUND_1,
- SFX_COP_VOICE_4_COP_MANYCOPSAROUND_2,
- SFX_COP_VOICE_4_COP_TARGETING_1,
- SFX_COP_VOICE_4_COP_TARGETING_2,
- SFX_COP_VOICE_4_COP_TARGETING_3,
- SFX_COP_VOICE_4_COP_TARGETING_4,
-
- SFX_COP_VOICE_5_ARREST_1,
- SFX_COP_VOICE_5_ARREST_2,
- SFX_COP_VOICE_5_ARREST_3,
- SFX_COP_VOICE_5_ARREST_4,
- SFX_COP_VOICE_5_PULLOUTWEAPON_1,
- SFX_COP_VOICE_5_PULLOUTWEAPON_2,
- SFX_COP_VOICE_5_PULLOUTWEAPON_3,
- SFX_COP_VOICE_5_BUMP_1,
- SFX_COP_VOICE_5_BUMP_2,
- SFX_COP_VOICE_5_BUMP_3,
- SFX_COP_VOICE_5_BUMP_4,
- SFX_COP_VOICE_5_BUMP_5,
- SFX_COP_VOICE_5_COP_LITTLECOPSAROUND_1,
- SFX_COP_VOICE_5_COP_LITTLECOPSAROUND_2,
- SFX_COP_VOICE_5_COP_LITTLECOPSAROUND_3,
- SFX_COP_VOICE_5_COP_LITTLECOPSAROUND_4,
- SFX_COP_VOICE_5_GUNAIMEDAT3_1,
- SFX_COP_VOICE_5_GUNAIMEDAT3_2,
- SFX_COP_VOICE_5_CAR_CRASH_1,
- SFX_COP_VOICE_5_CAR_CRASH_2,
- SFX_COP_VOICE_5_CAR_CRASH_3,
- SFX_COP_VOICE_5_CAR_CRASH_4,
- SFX_COP_VOICE_5_DODGE_1,
- SFX_COP_VOICE_5_DODGE_2,
- SFX_COP_VOICE_5_DODGE_3,
- SFX_COP_VOICE_5_FIGHT_1,
- SFX_COP_VOICE_5_FIGHT_2,
- SFX_COP_VOICE_5_FIGHT_3,
- SFX_COP_VOICE_5_FIGHT_4,
- SFX_COP_VOICE_5_GUNAIMEDAT2_1,
- SFX_COP_VOICE_5_GUNAIMEDAT2_2,
- SFX_COP_VOICE_5_SAVED_1,
- SFX_COP_VOICE_5_SAVED_2,
- SFX_COP_VOICE_5_COP_ASK_FOR_ID_1,
- SFX_COP_VOICE_5_COP_ASK_FOR_ID_2,
- SFX_COP_VOICE_5_COP_ALONE_1,
- SFX_COP_VOICE_5_COP_ALONE_2,
- SFX_COP_VOICE_5_COP_ALONE_3,
- SFX_COP_VOICE_5_COP_ALONE_4,
- SFX_COP_VOICE_5_COP_MANYCOPSAROUND_1,
- SFX_COP_VOICE_5_COP_MANYCOPSAROUND_2,
- SFX_COP_VOICE_5_COP_TARGETING_1,
- SFX_COP_VOICE_5_COP_TARGETING_2,
- SFX_COP_VOICE_5_COP_TARGETING_3,
- SFX_COP_VOICE_5_COP_TARGETING_4,
-
- FIRST_PLAYER_COMMENT(SFX_PLAYER_ANGRY_BUSTED_1),
- SFX_PLAYER_ANGRY_BUSTED_2,
- SFX_PLAYER_ANGRY_BUSTED_3,
- SFX_PLAYER_ANGRY_BUSTED_4,
- SFX_PLAYER_ANGRY_BUSTED_5,
- SFX_PLAYER_ANGRY_BUSTED_6,
- SFX_PLAYER_ANGRY_BUSTED_7,
- SFX_PLAYER_ANGRY_BUSTED_8,
- SFX_PLAYER_ANGRY_BUSTED_9,
- SFX_PLAYER_ANGRY_BUSTED_10,
- SFX_PLAYER_ANGRY_BUSTED_11,
- SFX_PLAYER_ANGRY_BUSTED_12,
- SFX_PLAYER_ANGRY_BUSTED_13,
- SFX_PLAYER_ANGRY_BUSTED_14,
- SFX_PLAYER_ANGRY_BUSTED_15,
- SFX_PLAYER_ANGRY_BUSTED_16,
- SFX_PLAYER_ANGRY_BUSTED_17,
- SFX_PLAYER_ANGRY_BUSTED_18,
- SFX_PLAYER_ANGRY_BUSTED_19,
- SFX_PLAYER_ANGRY_BUSTED_20,
- SFX_PLAYER_ANGRY_BUSTED_21,
- SFX_PLAYER_ANGRY_BUSTED_22,
- SFX_PLAYER_ANGRY_BUSTED_23,
- SFX_PLAYER_ANGRY_BUSTED_24,
- SFX_PLAYER_ANGRY_BUSTED_25,
- SFX_PLAYER_ANGRY_BUSTED_26,
- SFX_PLAYER_ANGRY_BUSTED_27,
- SFX_PLAYER_ANGRY_BUSTED_28,
- SFX_PLAYER_ANGRY_BUSTED_29,
- SFX_PLAYER_ANGRY_BUSTED_30,
- SFX_PLAYER_ANGRY_BUSTED_31,
- SFX_PLAYER_ANGRY_BUSTED_32,
- SFX_PLAYER_ANGRY_BUSTED_33,
- SFX_PLAYER_ANGRY_BUSTED_34,
- SFX_PLAYER_ANGRY_BUSTED_35,
- SFX_PLAYER_ANGRY_BUSTED_36,
- SFX_PLAYER_ANGRY_BUSTED_37,
- SFX_PLAYER_ANGRY_BUSTED_38,
- SFX_PLAYER_ANGRY_CHASED_1,
- SFX_PLAYER_ANGRY_CHASED_2,
- SFX_PLAYER_ANGRY_CHASED_3,
- SFX_PLAYER_ANGRY_CHASED_4,
- SFX_PLAYER_ANGRY_CHASED_5,
- SFX_PLAYER_ANGRY_CHASED_6,
- SFX_PLAYER_ANGRY_CHASED_7,
- SFX_PLAYER_ANGRY_CHASED_8,
- SFX_PLAYER_ANGRY_CHASED_9,
- SFX_PLAYER_ANGRY_CRASH_1,
- SFX_PLAYER_ANGRY_CRASH_2,
- SFX_PLAYER_ANGRY_CRASH_3,
- SFX_PLAYER_ANGRY_CRASH_4,
- SFX_PLAYER_ANGRY_CRASH_5,
- SFX_PLAYER_ANGRY_CRASH_6,
- SFX_PLAYER_ANGRY_CRASH_7,
- SFX_PLAYER_ANGRY_CRASH_8,
- SFX_PLAYER_ANGRY_CRASH_9,
- SFX_PLAYER_ANGRY_CRASH_10,
- SFX_PLAYER_ANGRY_CRASH_11,
- SFX_PLAYER_ANGRY_CRASH_12,
- SFX_PLAYER_ANGRY_CRASH_13,
- SFX_PLAYER_ANGRY_CRASH_14,
- SFX_PLAYER_ANGRY_CRASH_15,
- SFX_PLAYER_ANGRY_CRASH_16,
- SFX_PLAYER_ANGRY_CRASH_17,
- SFX_PLAYER_ANGRY_CRASH_18,
- SFX_PLAYER_ANGRY_CRASH_19,
- SFX_PLAYER_ANGRY_CRASH_20,
- SFX_PLAYER_ANGRY_CRASH_21,
- SFX_PLAYER_ANGRY_CRASH_22,
- SFX_PLAYER_ANGRY_CRASH_23,
- SFX_PLAYER_ANGRY_CRASH_24,
- SFX_PLAYER_ANGRY_CRASH_25,
- SFX_PLAYER_ANGRY_CRASH_26,
- SFX_PLAYER_ANGRY_CRASH_27,
- SFX_PLAYER_ANGRY_CRASH_28,
- SFX_PLAYER_ANGRY_CRASH_29,
- SFX_PLAYER_ANGRY_CRASH_30,
- SFX_PLAYER_ANGRY_CRASH_31,
- SFX_PLAYER_ANGRY_CRASH_32,
- SFX_PLAYER_ANGRY_CRASH_33,
- SFX_PLAYER_ANGRY_CRASH_34,
- SFX_PLAYER_ANGRY_CRASH_35,
- SFX_PLAYER_ANGRY_CRASH_36,
- SFX_PLAYER_ANGRY_CRASH_37,
- SFX_PLAYER_ANGRY_CRASH_38,
- SFX_PLAYER_ANGRY_CRASH_39,
- SFX_PLAYER_ANGRY_CRASH_40,
- SFX_PLAYER_ANGRY_CRASH_41,
- SFX_PLAYER_ANGRY_FIGHT_1,
- SFX_PLAYER_ANGRY_FIGHT_2,
- SFX_PLAYER_ANGRY_FIGHT_3,
- SFX_PLAYER_ANGRY_FIGHT_4,
- SFX_PLAYER_ANGRY_FIGHT_5,
- SFX_PLAYER_ANGRY_FIGHT_6,
- SFX_PLAYER_ANGRY_FIGHT_7,
- SFX_PLAYER_ANGRY_FIGHT_8,
- SFX_PLAYER_ANGRY_FIGHT_9,
- SFX_PLAYER_ANGRY_FIGHT_10,
- SFX_PLAYER_ANGRY_FIGHT_11,
- SFX_PLAYER_ANGRY_FIGHT_12,
- SFX_PLAYER_ANGRY_FIGHT_13,
- SFX_PLAYER_ANGRY_FIGHT_14,
- SFX_PLAYER_ANGRY_FIGHT_15,
- SFX_PLAYER_ANGRY_FIGHT_16,
- SFX_PLAYER_ANGRY_FIGHT_17,
- SFX_PLAYER_ANGRY_FIGHT_18,
- SFX_PLAYER_ANGRY_FIGHT_19,
- SFX_PLAYER_ANGRY_FIGHT_20,
- SFX_PLAYER_ANGRY_FIGHT_21,
- SFX_PLAYER_ANGRY_FIGHT_22,
- SFX_PLAYER_ANGRY_FIGHT_23,
- SFX_PLAYER_ANGRY_FIGHT_24,
- SFX_PLAYER_ANGRY_FIGHT_25,
- SFX_PLAYER_ANGRY_FIGHT_26,
- SFX_PLAYER_ANGRY_FIGHT_27,
- SFX_PLAYER_ANGRY_FIGHT_28,
- SFX_PLAYER_ANGRY_FIGHT_29,
- SFX_PLAYER_ANGRY_FIGHT_30,
- SFX_PLAYER_ANGRY_FIGHT_31,
- SFX_PLAYER_ANGRY_FIGHT_32,
- SFX_PLAYER_ANGRY_FIGHT_33,
- SFX_PLAYER_ANGRY_FIGHT_34,
- SFX_PLAYER_ANGRY_FIGHT_35,
- SFX_PLAYER_ANGRY_FIGHT_36,
- SFX_PLAYER_ANGRY_FIGHT_37,
- SFX_PLAYER_ANGRY_FIGHT_38,
- SFX_PLAYER_ANGRY_FIGHT_39,
- SFX_PLAYER_ANGRY_FIGHT_40,
- SFX_PLAYER_ANGRY_FIGHT_41,
- SFX_PLAYER_ANGRY_FIGHT_42,
- SFX_PLAYER_ANGRY_FIGHT_43,
- SFX_PLAYER_ANGRY_FIGHT_44,
- SFX_PLAYER_ANGRY_FIGHT_45,
- SFX_PLAYER_ANGRY_FIGHT_46,
- SFX_PLAYER_ANGRY_FIGHT_47,
- SFX_PLAYER_ANGRY_FIGHT_48,
- SFX_PLAYER_ANGRY_FIGHT_49,
- SFX_PLAYER_ANGRY_FIGHT_50,
- SFX_PLAYER_ANGRY_FIGHT_51,
- SFX_PLAYER_ANGRY_FIGHT_52,
- SFX_PLAYER_ANGRY_FIGHT_53,
- SFX_PLAYER_ANGRY_FIGHT_54,
- SFX_PLAYER_ANGRY_FIGHT_55,
- SFX_PLAYER_ANGRY_FIGHT_56,
- SFX_PLAYER_ANGRY_FIGHT_57,
- SFX_PLAYER_ANGRY_FIGHT_58,
- SFX_PLAYER_ANGRY_FIGHT_59,
- SFX_PLAYER_ANGRY_FIGHT_60,
- SFX_PLAYER_ANGRY_FIGHT_61,
- SFX_PLAYER_ANGRY_JACKED_1,
- SFX_PLAYER_ANGRY_JACKED_2,
- SFX_PLAYER_ANGRY_JACKED_3,
- SFX_PLAYER_ANGRY_JACKED_4,
- SFX_PLAYER_ANGRY_JACKED_5,
- SFX_PLAYER_ANGRY_JACKED_6,
- SFX_PLAYER_ANGRY_JACKED_7,
- SFX_PLAYER_ANGRY_JACKED_8,
- SFX_PLAYER_ANGRY_JACKED_9,
- SFX_PLAYER_ANGRY_JACKED_10,
- SFX_PLAYER_ANGRY_JACKED_11,
- SFX_PLAYER_ANGRY_JACKED_12,
- SFX_PLAYER_ANGRY_JACKED_13,
- SFX_PLAYER_ANGRY_JACKED_14,
- SFX_PLAYER_ANGRY_JACKED_15,
- SFX_PLAYER_ANGRY_JACKED_16,
- SFX_PLAYER_ANGRY_JACKED_17,
- SFX_PLAYER_ANGRY_JACKED_18,
- SFX_PLAYER_ANGRY_JACKED_19,
- SFX_PLAYER_ANGRY_JACKED_20,
- SFX_PLAYER_ANGRY_JACKED_21,
- SFX_PLAYER_ANGRY_JACKED_22,
- SFX_PLAYER_ANGRY_JACKED_23,
- SFX_PLAYER_ANGRY_JACKED_24,
- SFX_PLAYER_ANGRY_JACKED_25,
- SFX_PLAYER_ANGRY_JACKED_26,
- SFX_PLAYER_ANGRY_JACKED_27,
- SFX_PLAYER_ANGRY_JACKED_28,
- SFX_PLAYER_ANGRY_JACKED_29,
- SFX_PLAYER_ANGRY_JACKED_30,
- SFX_PLAYER_ANGRY_JACKED_31,
- SFX_PLAYER_ANGRY_JACKED_32,
- SFX_PLAYER_ANGRY_JACKED_33,
- SFX_PLAYER_ANGRY_JACKING_1,
- SFX_PLAYER_ANGRY_JACKING_2,
- SFX_PLAYER_ANGRY_JACKING_3,
- SFX_PLAYER_ANGRY_JACKING_4,
- SFX_PLAYER_ANGRY_JACKING_5,
- SFX_PLAYER_ANGRY_JACKING_6,
- SFX_PLAYER_ANGRY_JACKING_7,
- SFX_PLAYER_ANGRY_JACKING_8,
- SFX_PLAYER_ANGRY_JACKING_9,
- SFX_PLAYER_ANGRY_JACKING_10,
- SFX_PLAYER_ANGRY_JACKING_11,
- SFX_PLAYER_ANGRY_JACKING_12,
- SFX_PLAYER_ANGRY_JACKING_13,
- SFX_PLAYER_ANGRY_JACKING_14,
- SFX_PLAYER_ANGRY_JACKING_15,
- SFX_PLAYER_ANGRY_JACKING_16,
- SFX_PLAYER_ANGRY_JACKING_17,
- SFX_PLAYER_ANGRY_JACKING_18,
- SFX_PLAYER_ANGRY_JACKING_19,
- SFX_PLAYER_ANGRY_JACKING_20,
- SFX_PLAYER_ANGRY_JACKING_21,
- SFX_PLAYER_ANGRY_JACKING_22,
- SFX_PLAYER_ANGRY_JACKING_23,
- SFX_PLAYER_ANGRY_JACKING_24,
- SFX_PLAYER_ANGRY_JACKING_25,
- SFX_PLAYER_ANGRY_JACKING_26,
- SFX_PLAYER_ANGRY_JACKING_27,
- SFX_PLAYER_ANGRY_JACKING_28,
- SFX_PLAYER_ANGRY_JACKING_29,
- SFX_PLAYER_ANGRY_JACKING_30,
- SFX_PLAYER_ANGRY_JACKING_31,
- SFX_PLAYER_ANGRY_JACKING_32,
- SFX_PLAYER_ANGRY_JACKING_33,
- SFX_PLAYER_ANGRY_JACKING_34,
- SFX_PLAYER_ANGRY_JACKING_35,
- SFX_PLAYER_ANGRY_JACKING_36,
- SFX_PLAYER_ANGRY_JACKING_37,
- SFX_PLAYER_ANGRY_JACKING_38,
- SFX_PLAYER_ANGRY_JACKING_39,
- SFX_PLAYER_ANGRY_JACKING_40,
- SFX_PLAYER_ANGRY_JACKING_41,
- SFX_PLAYER_ANGRY_JACKING_42,
- SFX_PLAYER_ANGRY_JACKING_43,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_1,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_2,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_3,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_4,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_5,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_6,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_7,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_8,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_9,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_10,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_11,
- SFX_PLAYER_ANGRY_PICK_UP_CASH_12,
- SFX_PLAYER_ANGRY_PICK_UP_HOOKER_1,
- SFX_PLAYER_ANGRY_PICK_UP_HOOKER_2,
- SFX_PLAYER_ANGRY_PICK_UP_HOOKER_3,
- SFX_PLAYER_ANGRY_PICK_UP_HOOKER_4,
- SFX_PLAYER_ANGRY_PICK_UP_HOOKER_5,
- SFX_PLAYER_ANGRY_PICK_UP_HOOKER_6,
- SFX_PLAYER_ANGRY_PULL_GUN_1,
- SFX_PLAYER_ANGRY_PULL_GUN_2,
- SFX_PLAYER_ANGRY_PULL_GUN_3,
- SFX_PLAYER_ANGRY_PULL_GUN_4,
- SFX_PLAYER_ANGRY_PULL_GUN_5,
- SFX_PLAYER_ANGRY_PULL_GUN_6,
- SFX_PLAYER_ANGRY_PULL_GUN_7,
- SFX_PLAYER_ANGRY_PULL_GUN_8,
- SFX_PLAYER_ANGRY_PULL_GUN_9,
- SFX_PLAYER_ANGRY_PULL_GUN_10,
- SFX_PLAYER_ANGRY_PULL_GUN_11,
- SFX_PLAYER_ANGRY_PULL_GUN_12,
- SFX_PLAYER_ANGRY_PULL_GUN_13,
- SFX_PLAYER_ANGRY_PULL_GUN_14,
- SFX_PLAYER_ANGRY_PULL_GUN_15,
- SFX_PLAYER_ANGRY_PULL_GUN_16,
- SFX_PLAYER_ANGRY_PULL_GUN_17,
- SFX_PLAYER_ANGRY_PULL_GUN_18,
- SFX_PLAYER_ANGRY_PULL_GUN_19,
- SFX_PLAYER_ANGRY_PULL_GUN_20,
- SFX_PLAYER_ANGRY_PULL_GUN_21,
- SFX_PLAYER_ANGRY_PULL_GUN_22,
- SFX_PLAYER_ANGRY_PULL_GUN_23,
- SFX_PLAYER_ANGRY_PULL_GUN_24,
- SFX_PLAYER_ANGRY_PULL_GUN_25,
- SFX_PLAYER_ANGRY_PULL_GUN_26,
- SFX_PLAYER_ANGRY_PULL_GUN_27,
- SFX_PLAYER_ANGRY_PULL_GUN_28,
- SFX_PLAYER_ANGRY_PULL_GUN_29,
- SFX_PLAYER_ANGRY_PULL_GUN_30,
- SFX_PLAYER_ANGRY_PULL_GUN_31,
- SFX_PLAYER_ANGRY_PULL_GUN_32,
- SFX_PLAYER_ANGRY_PULL_GUN_33,
- SFX_PLAYER_ANGRY_PULL_GUN_34,
- SFX_PLAYER_ANGRY_PULL_GUN_35,
- SFX_PLAYER_ANGRY_PULL_GUN_36,
- SFX_PLAYER_ANGRY_PULL_GUN_37,
- SFX_PLAYER_ANGRY_PULL_GUN_38,
- SFX_PLAYER_ANGRY_PULL_GUN_39,
- SFX_PLAYER_ANGRY_PULL_GUN_40,
- SFX_PLAYER_ANGRY_PULL_GUN_41,
- SFX_PLAYER_ANGRY_PULL_GUN_42,
- SFX_PLAYER_ANGRY_PULL_GUN_43,
- SFX_PLAYER_ANGRY_PULL_GUN_44,
- SFX_PLAYER_ANGRY_PULL_GUN_45,
- SFX_PLAYER_ANGRY_PULL_GUN_46,
- SFX_PLAYER_ANGRY_PULL_GUN_47,
- SFX_PLAYER_ANGRY_PULL_GUN_48,
- SFX_PLAYER_ANGRY_PULL_GUN_49,
- SFX_PLAYER_ANGRY_PULL_GUN_50,
- SFX_PLAYER_ANGRY_PULL_GUN_51,
- SFX_PLAYER_ANGRY_PULL_GUN_52,
- SFX_PLAYER_ANGRY_SEX_1,
- SFX_PLAYER_ANGRY_SEX_2,
- SFX_PLAYER_ANGRY_SEX_3,
- SFX_PLAYER_ANGRY_SEX_4,
- SFX_PLAYER_ANGRY_SEX_5,
- SFX_PLAYER_ANGRY_SEX_6,
- SFX_PLAYER_ANGRY_SEX_7,
- SFX_PLAYER_ANGRY_SEX_8,
- SFX_PLAYER_ANGRY_SEX_9,
- SFX_PLAYER_ANGRY_SEX_10,
- SFX_PLAYER_ANGRY_SEX_11,
- SFX_PLAYER_ANGRY_SEX_12,
- SFX_PLAYER_ANGRY_SEX_13,
- SFX_PLAYER_ANGRY_SEX_14,
- SFX_PLAYER_ANGRY_SEX_15,
- SFX_PLAYER_ANGRY_SEX_16,
- SFX_PLAYER_ANGRY_SEX_17,
- SFX_PLAYER_ANGRY_SEX_18,
- SFX_PLAYER_ANGRY_SHOOT_1,
- SFX_PLAYER_ANGRY_SHOOT_2,
- SFX_PLAYER_ANGRY_SHOOT_3,
- SFX_PLAYER_ANGRY_SHOOT_4,
- SFX_PLAYER_ANGRY_SHOOT_5,
- SFX_PLAYER_ANGRY_SHOOT_6,
- SFX_PLAYER_ANGRY_SHOOT_7,
- SFX_PLAYER_ANGRY_SHOOT_8,
- SFX_PLAYER_ANGRY_SHOOT_9,
- SFX_PLAYER_ANGRY_SHOOT_10,
- SFX_PLAYER_ANGRY_SHOOT_11,
- SFX_PLAYER_ANGRY_SHOOT_12,
- SFX_PLAYER_ANGRY_SHOOT_13,
- SFX_PLAYER_ANGRY_SHOOT_14,
- SFX_PLAYER_ANGRY_SHOOT_15,
- SFX_PLAYER_ANGRY_SHOOT_16,
- SFX_PLAYER_ANGRY_SHOOT_17,
- SFX_PLAYER_ANGRY_SHOOT_18,
- SFX_PLAYER_ANGRY_SHOOT_19,
- SFX_PLAYER_ANGRY_SHOOT_20,
- SFX_PLAYER_ANGRY_SHOOT_21,
- SFX_PLAYER_ANGRY_SHOOT_22,
- SFX_PLAYER_ANGRY_SHOOT_23,
- SFX_PLAYER_ANGRY_SHOOT_24,
- SFX_PLAYER_ANGRY_SHOOT_25,
- SFX_PLAYER_ANGRY_SHOOT_26,
- SFX_PLAYER_ANGRY_SHOOT_27,
- SFX_PLAYER_ANGRY_SHOOT_28,
- SFX_PLAYER_ANGRY_SHOOT_29,
- SFX_PLAYER_ANGRY_SHOOT_30,
- SFX_PLAYER_ANGRY_SHOOT_31,
- SFX_PLAYER_ANGRY_SHOOT_32,
- SFX_PLAYER_ANGRY_SHOOT_33,
- SFX_PLAYER_ANGRY_SHOOT_34,
- SFX_PLAYER_ANGRY_SHOOT_35,
- SFX_PLAYER_ANGRY_SHOOT_36,
- SFX_PLAYER_ANGRY_SHOOT_37,
- SFX_PLAYER_ANGRY_SHOOT_38,
- SFX_PLAYER_ANGRY_SHOOT_39,
-
- SFX_PLAYER_CALM_BUSTED_1,
- SFX_PLAYER_CALM_BUSTED_2,
- SFX_PLAYER_CALM_BUSTED_3,
- SFX_PLAYER_CALM_BUSTED_4,
- SFX_PLAYER_CALM_BUSTED_5,
- SFX_PLAYER_CALM_BUSTED_6,
- SFX_PLAYER_CALM_BUSTED_7,
- SFX_PLAYER_CALM_BUSTED_8,
- SFX_PLAYER_CALM_BUSTED_9,
- SFX_PLAYER_CALM_BUSTED_10,
- SFX_PLAYER_CALM_BUSTED_11,
- SFX_PLAYER_CALM_BUSTED_12,
- SFX_PLAYER_CALM_BUSTED_13,
- SFX_PLAYER_CALM_BUSTED_14,
- SFX_PLAYER_CALM_BUSTED_15,
- SFX_PLAYER_CALM_BUSTED_16,
- SFX_PLAYER_CALM_BUSTED_17,
- SFX_PLAYER_CALM_BUSTED_18,
- SFX_PLAYER_CALM_BUSTED_19,
- SFX_PLAYER_CALM_BUSTED_20,
- SFX_PLAYER_CALM_BUSTED_21,
- SFX_PLAYER_CALM_BUSTED_22,
- SFX_PLAYER_CALM_CHASED_1,
- SFX_PLAYER_CALM_CHASED_2,
- SFX_PLAYER_CALM_CHASED_3,
- SFX_PLAYER_CALM_CHASED_4,
- SFX_PLAYER_CALM_CHASED_5,
- SFX_PLAYER_CALM_CHASED_6,
- SFX_PLAYER_CALM_CHASED_7,
- SFX_PLAYER_CALM_CHASED_8,
- SFX_PLAYER_CALM_CHASED_9,
- SFX_PLAYER_CALM_CHASED_10,
- SFX_PLAYER_CALM_CHASED_11,
- SFX_PLAYER_CALM_CHASED_12,
- SFX_PLAYER_CALM_CHASED_13,
- SFX_PLAYER_CALM_CHASED_14,
- SFX_PLAYER_CALM_CHASED_15,
- SFX_PLAYER_CALM_CHASED_16,
- SFX_PLAYER_CALM_CHASED_17,
- SFX_PLAYER_CALM_CHASED_18,
- SFX_PLAYER_CALM_CHASED_19,
- SFX_PLAYER_CALM_CHASED_20,
- SFX_PLAYER_CALM_CRASH_1,
- SFX_PLAYER_CALM_CRASH_2,
- SFX_PLAYER_CALM_CRASH_3,
- SFX_PLAYER_CALM_CRASH_4,
- SFX_PLAYER_CALM_CRASH_5,
- SFX_PLAYER_CALM_CRASH_6,
- SFX_PLAYER_CALM_CRASH_7,
- SFX_PLAYER_CALM_CRASH_8,
- SFX_PLAYER_CALM_CRASH_9,
- SFX_PLAYER_CALM_CRASH_10,
- SFX_PLAYER_CALM_CRASH_11,
- SFX_PLAYER_CALM_CRASH_12,
- SFX_PLAYER_CALM_CRASH_13,
- SFX_PLAYER_CALM_CRASH_14,
- SFX_PLAYER_CALM_CRASH_15,
- SFX_PLAYER_CALM_CRASH_16,
- SFX_PLAYER_CALM_CRASH_17,
- SFX_PLAYER_CALM_CRASH_18,
- SFX_PLAYER_CALM_CRASH_19,
- SFX_PLAYER_CALM_CRASH_20,
- SFX_PLAYER_CALM_CRASH_21,
- SFX_PLAYER_CALM_CRASH_22,
- SFX_PLAYER_CALM_CRASH_23,
- SFX_PLAYER_CALM_CRASH_24,
- SFX_PLAYER_CALM_CRASH_25,
- SFX_PLAYER_CALM_CRASH_26,
- SFX_PLAYER_CALM_CRASH_27,
- SFX_PLAYER_CALM_CRASH_28,
- SFX_PLAYER_CALM_CRASH_29,
- SFX_PLAYER_CALM_CRASH_30,
- SFX_PLAYER_CALM_CRASH_31,
- SFX_PLAYER_CALM_CRASH_32,
- SFX_PLAYER_CALM_CRASH_33,
- SFX_PLAYER_CALM_CRASH_34,
- SFX_PLAYER_CALM_CRASH_35,
- SFX_PLAYER_CALM_CRASH_36,
- SFX_PLAYER_CALM_CRASH_37,
- SFX_PLAYER_CALM_CRASH_38,
- SFX_PLAYER_CALM_CRASH_39,
- SFX_PLAYER_CALM_CRASH_40,
- SFX_PLAYER_CALM_CRASH_41,
- SFX_PLAYER_CALM_CRASH_42,
- SFX_PLAYER_CALM_CRASH_43,
- SFX_PLAYER_CALM_FIGHT_1,
- SFX_PLAYER_CALM_FIGHT_2,
- SFX_PLAYER_CALM_FIGHT_3,
- SFX_PLAYER_CALM_FIGHT_4,
- SFX_PLAYER_CALM_FIGHT_5,
- SFX_PLAYER_CALM_FIGHT_6,
- SFX_PLAYER_CALM_FIGHT_7,
- SFX_PLAYER_CALM_FIGHT_8,
- SFX_PLAYER_CALM_FIGHT_9,
- SFX_PLAYER_CALM_FIGHT_10,
- SFX_PLAYER_CALM_FIGHT_11,
- SFX_PLAYER_CALM_FIGHT_12,
- SFX_PLAYER_CALM_FIGHT_13,
- SFX_PLAYER_CALM_FIGHT_14,
- SFX_PLAYER_CALM_FIGHT_15,
- SFX_PLAYER_CALM_FIGHT_16,
- SFX_PLAYER_CALM_FIGHT_17,
- SFX_PLAYER_CALM_FIGHT_18,
- SFX_PLAYER_CALM_FIGHT_19,
- SFX_PLAYER_CALM_FIGHT_20,
- SFX_PLAYER_CALM_FIGHT_21,
- SFX_PLAYER_CALM_FIGHT_22,
- SFX_PLAYER_CALM_FIGHT_23,
- SFX_PLAYER_CALM_FIGHT_24,
- SFX_PLAYER_CALM_FIGHT_25,
- SFX_PLAYER_CALM_FIGHT_26,
- SFX_PLAYER_CALM_FIGHT_27,
- SFX_PLAYER_CALM_FIGHT_28,
- SFX_PLAYER_CALM_FIGHT_29,
- SFX_PLAYER_CALM_FIGHT_30,
- SFX_PLAYER_CALM_FIGHT_31,
- SFX_PLAYER_CALM_FIGHT_32,
- SFX_PLAYER_CALM_FIGHT_33,
- SFX_PLAYER_CALM_FIGHT_34,
- SFX_PLAYER_CALM_FIGHT_35,
- SFX_PLAYER_CALM_FIGHT_36,
- SFX_PLAYER_CALM_FIGHT_37,
- SFX_PLAYER_CALM_FIGHT_38,
- SFX_PLAYER_CALM_FIGHT_39,
- SFX_PLAYER_CALM_FIGHT_40,
- SFX_PLAYER_CALM_FIGHT_41,
- SFX_PLAYER_CALM_FIGHT_42,
- SFX_PLAYER_CALM_FIGHT_43,
- SFX_PLAYER_CALM_FIGHT_44,
- SFX_PLAYER_CALM_FIGHT_45,
- SFX_PLAYER_CALM_FIGHT_46,
- SFX_PLAYER_CALM_FIGHT_47,
- SFX_PLAYER_CALM_JACKED_1,
- SFX_PLAYER_CALM_JACKED_2,
- SFX_PLAYER_CALM_JACKED_3,
- SFX_PLAYER_CALM_JACKED_4,
- SFX_PLAYER_CALM_JACKED_5,
- SFX_PLAYER_CALM_JACKED_6,
- SFX_PLAYER_CALM_JACKED_7,
- SFX_PLAYER_CALM_JACKED_8,
- SFX_PLAYER_CALM_JACKED_9,
- SFX_PLAYER_CALM_JACKED_10,
- SFX_PLAYER_CALM_JACKED_11,
- SFX_PLAYER_CALM_JACKED_12,
- SFX_PLAYER_CALM_JACKED_13,
- SFX_PLAYER_CALM_JACKED_14,
- SFX_PLAYER_CALM_JACKED_15,
- SFX_PLAYER_CALM_JACKED_16,
- SFX_PLAYER_CALM_JACKED_17,
- SFX_PLAYER_CALM_JACKED_18,
- SFX_PLAYER_CALM_JACKED_19,
- SFX_PLAYER_CALM_JACKED_20,
- SFX_PLAYER_CALM_JACKED_21,
- SFX_PLAYER_CALM_JACKED_22,
- SFX_PLAYER_CALM_JACKED_23,
- SFX_PLAYER_CALM_JACKED_24,
- SFX_PLAYER_CALM_JACKING_1,
- SFX_PLAYER_CALM_JACKING_2,
- SFX_PLAYER_CALM_JACKING_3,
- SFX_PLAYER_CALM_JACKING_4,
- SFX_PLAYER_CALM_JACKING_5,
- SFX_PLAYER_CALM_JACKING_6,
- SFX_PLAYER_CALM_JACKING_7,
- SFX_PLAYER_CALM_JACKING_8,
- SFX_PLAYER_CALM_JACKING_9,
- SFX_PLAYER_CALM_JACKING_10,
- SFX_PLAYER_CALM_JACKING_11,
- SFX_PLAYER_CALM_JACKING_12,
- SFX_PLAYER_CALM_JACKING_13,
- SFX_PLAYER_CALM_JACKING_14,
- SFX_PLAYER_CALM_JACKING_15,
- SFX_PLAYER_CALM_JACKING_16,
- SFX_PLAYER_CALM_JACKING_17,
- SFX_PLAYER_CALM_JACKING_18,
- SFX_PLAYER_CALM_JACKING_19,
- SFX_PLAYER_CALM_JACKING_20,
- SFX_PLAYER_CALM_JACKING_21,
- SFX_PLAYER_CALM_JACKING_22,
- SFX_PLAYER_CALM_JACKING_23,
- SFX_PLAYER_CALM_JACKING_24,
- SFX_PLAYER_CALM_JACKING_25,
- SFX_PLAYER_CALM_JACKING_26,
- SFX_PLAYER_CALM_JACKING_27,
- SFX_PLAYER_CALM_JACKING_28,
- SFX_PLAYER_CALM_JACKING_29,
- SFX_PLAYER_CALM_JACKING_30,
- SFX_PLAYER_CALM_JACKING_31,
- SFX_PLAYER_CALM_JACKING_32,
- SFX_PLAYER_CALM_JACKING_33,
- SFX_PLAYER_CALM_JACKING_34,
- SFX_PLAYER_CALM_JACKING_35,
- SFX_PLAYER_CALM_JACKING_36,
- SFX_PLAYER_CALM_JACKING_37,
- SFX_PLAYER_CALM_JACKING_38,
- SFX_PLAYER_CALM_JACKING_39,
- SFX_PLAYER_CALM_JACKING_40,
- SFX_PLAYER_CALM_PICK_UP_CASH_1,
- SFX_PLAYER_CALM_PICK_UP_CASH_2,
- SFX_PLAYER_CALM_PICK_UP_CASH_3,
- SFX_PLAYER_CALM_PICK_UP_CASH_4,
- SFX_PLAYER_CALM_PICK_UP_CASH_5,
- SFX_PLAYER_CALM_PICK_UP_CASH_6,
- SFX_PLAYER_CALM_PICK_UP_CASH_7,
- SFX_PLAYER_CALM_PICK_UP_CASH_8,
- SFX_PLAYER_CALM_PICK_UP_CASH_9,
- SFX_PLAYER_CALM_PICK_UP_CASH_10,
- SFX_PLAYER_CALM_PICK_UP_CASH_11,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_1,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_2,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_3,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_4,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_5,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_6,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_7,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_8,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_9,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_10,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_11,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_12,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_13,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_14,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_15,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_16,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_17,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_18,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_19,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_20,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_21,
- SFX_PLAYER_CALM_PICK_UP_HOOKER_22,
- SFX_PLAYER_CALM_PULL_GUN_1,
- SFX_PLAYER_CALM_PULL_GUN_2,
- SFX_PLAYER_CALM_PULL_GUN_3,
- SFX_PLAYER_CALM_PULL_GUN_4,
- SFX_PLAYER_CALM_PULL_GUN_5,
- SFX_PLAYER_CALM_PULL_GUN_6,
- SFX_PLAYER_CALM_PULL_GUN_7,
- SFX_PLAYER_CALM_PULL_GUN_8,
- SFX_PLAYER_CALM_PULL_GUN_9,
- SFX_PLAYER_CALM_PULL_GUN_10,
- SFX_PLAYER_CALM_PULL_GUN_11,
- SFX_PLAYER_CALM_PULL_GUN_12,
- SFX_PLAYER_CALM_PULL_GUN_13,
- SFX_PLAYER_CALM_PULL_GUN_14,
- SFX_PLAYER_CALM_PULL_GUN_15,
- SFX_PLAYER_CALM_PULL_GUN_16,
- SFX_PLAYER_CALM_PULL_GUN_17,
- SFX_PLAYER_CALM_PULL_GUN_18,
- SFX_PLAYER_CALM_PULL_GUN_19,
- SFX_PLAYER_CALM_PULL_GUN_20,
- SFX_PLAYER_CALM_PULL_GUN_21,
- SFX_PLAYER_CALM_PULL_GUN_22,
- SFX_PLAYER_CALM_PULL_GUN_23,
- SFX_PLAYER_CALM_PULL_GUN_24,
- SFX_PLAYER_CALM_PULL_GUN_25,
- SFX_PLAYER_CALM_PULL_GUN_26,
- SFX_PLAYER_CALM_PULL_GUN_27,
- SFX_PLAYER_CALM_PULL_GUN_28,
- SFX_PLAYER_CALM_PULL_GUN_29,
- SFX_PLAYER_CALM_PULL_GUN_30,
- SFX_PLAYER_CALM_PULL_GUN_31,
- SFX_PLAYER_CALM_PULL_GUN_32,
- SFX_PLAYER_CALM_PULL_GUN_33,
- SFX_PLAYER_CALM_PULL_GUN_34,
- SFX_PLAYER_CALM_PULL_GUN_35,
- SFX_PLAYER_CALM_PULL_GUN_36,
- SFX_PLAYER_CALM_PULL_GUN_37,
- SFX_PLAYER_CALM_PULL_GUN_38,
- SFX_PLAYER_CALM_PULL_GUN_39,
- SFX_PLAYER_CALM_SEX_1,
- SFX_PLAYER_CALM_SEX_2,
- SFX_PLAYER_CALM_SEX_3,
- SFX_PLAYER_CALM_SEX_4,
- SFX_PLAYER_CALM_SEX_5,
- SFX_PLAYER_CALM_SEX_6,
- SFX_PLAYER_CALM_SEX_7,
- SFX_PLAYER_CALM_SEX_8,
- SFX_PLAYER_CALM_SHOOT_1,
- SFX_PLAYER_CALM_SHOOT_2,
- SFX_PLAYER_CALM_SHOOT_3,
- SFX_PLAYER_CALM_SHOOT_4,
- SFX_PLAYER_CALM_SHOOT_5,
- SFX_PLAYER_CALM_SHOOT_6,
- SFX_PLAYER_CALM_SHOOT_7,
- SFX_PLAYER_CALM_SHOOT_8,
- SFX_PLAYER_CALM_SHOOT_9,
- SFX_PLAYER_CALM_SHOOT_10,
- SFX_PLAYER_CALM_SHOOT_11,
- SFX_PLAYER_CALM_SHOOT_12,
- SFX_PLAYER_CALM_SHOOT_13,
- SFX_PLAYER_CALM_SHOOT_14,
- SFX_PLAYER_CALM_SHOOT_15,
- SFX_PLAYER_CALM_SHOOT_16,
- SFX_PLAYER_CALM_SHOOT_17,
- SFX_PLAYER_CALM_SHOOT_18,
- SFX_PLAYER_CALM_SHOOT_19,
- SFX_PLAYER_CALM_SHOOT_20,
- SFX_PLAYER_CALM_SHOOT_21,
- SFX_PLAYER_CALM_SHOOT_22,
- SFX_PLAYER_CALM_SHOOT_23,
- SFX_PLAYER_CALM_SHOOT_24,
- SFX_PLAYER_CALM_SHOOT_25,
- SFX_PLAYER_CALM_SHOOT_26,
- SFX_PLAYER_CALM_SHOOT_27,
- SFX_PLAYER_CALM_SHOOT_28,
- SFX_PLAYER_CALM_SHOOT_29,
- SFX_PLAYER_CALM_SHOOT_30,
- SFX_PLAYER_CALM_SHOOT_31,
- SFX_PLAYER_CALM_SHOOT_32,
- SFX_PLAYER_CALM_SHOOT_33,
- SFX_PLAYER_CALM_SHOOT_34,
- SFX_PLAYER_CALM_SHOOT_35,
-
- SFX_PLAYER_PISSED_OFF_CRASH_1,
- SFX_PLAYER_PISSED_OFF_CRASH_2,
- SFX_PLAYER_PISSED_OFF_CRASH_3,
- SFX_PLAYER_PISSED_OFF_CRASH_4,
- SFX_PLAYER_PISSED_OFF_CRASH_5,
- SFX_PLAYER_PISSED_OFF_CRASH_6,
- SFX_PLAYER_PISSED_OFF_CRASH_7,
- SFX_PLAYER_PISSED_OFF_CRASH_8,
- SFX_PLAYER_PISSED_OFF_CRASH_9,
- SFX_PLAYER_PISSED_OFF_CRASH_10,
- SFX_PLAYER_PISSED_OFF_CRASH_11,
- SFX_PLAYER_PISSED_OFF_CRASH_12,
- SFX_PLAYER_PISSED_OFF_CRASH_13,
- SFX_PLAYER_PISSED_OFF_CRASH_14,
- SFX_PLAYER_PISSED_OFF_CRASH_15,
- SFX_PLAYER_PISSED_OFF_CRASH_16,
- SFX_PLAYER_PISSED_OFF_CRASH_17,
- SFX_PLAYER_PISSED_OFF_CRASH_18,
- SFX_PLAYER_PISSED_OFF_CRASH_19,
- SFX_PLAYER_PISSED_OFF_CRASH_20,
- SFX_PLAYER_PISSED_OFF_CRASH_21,
- SFX_PLAYER_PISSED_OFF_CRASH_22,
- SFX_PLAYER_PISSED_OFF_CRASH_23,
- SFX_PLAYER_PISSED_OFF_CRASH_24,
- SFX_PLAYER_PISSED_OFF_CRASH_25,
- SFX_PLAYER_PISSED_OFF_CRASH_26,
- SFX_PLAYER_PISSED_OFF_CRASH_27,
- SFX_PLAYER_PISSED_OFF_CRASH_28,
- SFX_PLAYER_PISSED_OFF_CRASH_29,
- SFX_PLAYER_PISSED_OFF_CRASH_30,
- SFX_PLAYER_PISSED_OFF_CRASH_31,
- SFX_PLAYER_PISSED_OFF_CRASH_32,
- SFX_PLAYER_PISSED_OFF_CRASH_33,
- SFX_PLAYER_PISSED_OFF_CRASH_34,
- SFX_PLAYER_PISSED_OFF_CRASH_35,
- SFX_PLAYER_PISSED_OFF_CRASH_36,
- SFX_PLAYER_PISSED_OFF_CRASH_37,
- SFX_PLAYER_PISSED_OFF_CRASH_38,
- SFX_PLAYER_PISSED_OFF_CRASH_39,
- SFX_PLAYER_PISSED_OFF_CRASH_40,
- SFX_PLAYER_PISSED_OFF_CRASH_41,
- SFX_PLAYER_PISSED_OFF_CRASH_42,
- SFX_PLAYER_PISSED_OFF_CRASH_43,
- SFX_PLAYER_PISSED_OFF_CRASH_44,
- SFX_PLAYER_PISSED_OFF_FIGHT_1,
- SFX_PLAYER_PISSED_OFF_FIGHT_2,
- SFX_PLAYER_PISSED_OFF_FIGHT_3,
- SFX_PLAYER_PISSED_OFF_FIGHT_4,
- SFX_PLAYER_PISSED_OFF_FIGHT_5,
- SFX_PLAYER_PISSED_OFF_FIGHT_6,
- SFX_PLAYER_PISSED_OFF_FIGHT_7,
- SFX_PLAYER_PISSED_OFF_FIGHT_8,
- SFX_PLAYER_PISSED_OFF_FIGHT_9,
- SFX_PLAYER_PISSED_OFF_FIGHT_10,
- SFX_PLAYER_PISSED_OFF_FIGHT_11,
- SFX_PLAYER_PISSED_OFF_FIGHT_12,
- SFX_PLAYER_PISSED_OFF_FIGHT_13,
- SFX_PLAYER_PISSED_OFF_FIGHT_14,
- SFX_PLAYER_PISSED_OFF_FIGHT_15,
- SFX_PLAYER_PISSED_OFF_FIGHT_16,
- SFX_PLAYER_PISSED_OFF_FIGHT_17,
- SFX_PLAYER_PISSED_OFF_FIGHT_18,
- SFX_PLAYER_PISSED_OFF_FIGHT_19,
- SFX_PLAYER_PISSED_OFF_FIGHT_20,
- SFX_PLAYER_PISSED_OFF_FIGHT_21,
- SFX_PLAYER_PISSED_OFF_FIGHT_22,
- SFX_PLAYER_PISSED_OFF_FIGHT_23,
- SFX_PLAYER_PISSED_OFF_FIGHT_24,
- SFX_PLAYER_PISSED_OFF_FIGHT_25,
- SFX_PLAYER_PISSED_OFF_FIGHT_26,
- SFX_PLAYER_PISSED_OFF_FIGHT_27,
- SFX_PLAYER_PISSED_OFF_FIGHT_28,
- SFX_PLAYER_PISSED_OFF_FIGHT_29,
- SFX_PLAYER_PISSED_OFF_FIGHT_30,
- SFX_PLAYER_PISSED_OFF_FIGHT_31,
- SFX_PLAYER_PISSED_OFF_FIGHT_32,
- SFX_PLAYER_PISSED_OFF_FIGHT_33,
- SFX_PLAYER_PISSED_OFF_FIGHT_34,
- SFX_PLAYER_PISSED_OFF_FIGHT_35,
- SFX_PLAYER_PISSED_OFF_FIGHT_36,
- SFX_PLAYER_PISSED_OFF_FIGHT_37,
- SFX_PLAYER_PISSED_OFF_FIGHT_38,
- SFX_PLAYER_PISSED_OFF_FIGHT_39,
- SFX_PLAYER_PISSED_OFF_FIGHT_40,
- SFX_PLAYER_PISSED_OFF_FIGHT_41,
- SFX_PLAYER_PISSED_OFF_FIGHT_42,
- SFX_PLAYER_PISSED_OFF_FIGHT_43,
- SFX_PLAYER_PISSED_OFF_FIGHT_44,
- SFX_PLAYER_PISSED_OFF_FIGHT_45,
- SFX_PLAYER_PISSED_OFF_FIGHT_46,
- SFX_PLAYER_PISSED_OFF_FIGHT_47,
- SFX_PLAYER_PISSED_OFF_FIGHT_48,
- SFX_PLAYER_PISSED_OFF_FIGHT_49,
- SFX_PLAYER_PISSED_OFF_FIGHT_50,
- SFX_PLAYER_PISSED_OFF_FIGHT_51,
- SFX_PLAYER_PISSED_OFF_FIGHT_52,
- SFX_PLAYER_PISSED_OFF_FIGHT_53,
- SFX_PLAYER_PISSED_OFF_FIGHT_54,
- SFX_PLAYER_PISSED_OFF_FIGHT_55,
- SFX_PLAYER_PISSED_OFF_FIGHT_56,
- SFX_PLAYER_PISSED_OFF_FIGHT_57,
- SFX_PLAYER_PISSED_OFF_FIGHT_58,
- SFX_PLAYER_PISSED_OFF_FIGHT_59,
- SFX_PLAYER_PISSED_OFF_FIGHT_60,
- SFX_PLAYER_PISSED_OFF_FIGHT_61,
- SFX_PLAYER_PISSED_OFF_JACKED_1,
- SFX_PLAYER_PISSED_OFF_JACKED_2,
- SFX_PLAYER_PISSED_OFF_JACKED_3,
- SFX_PLAYER_PISSED_OFF_JACKED_4,
- SFX_PLAYER_PISSED_OFF_JACKED_5,
- SFX_PLAYER_PISSED_OFF_JACKED_6,
- SFX_PLAYER_PISSED_OFF_JACKED_7,
- SFX_PLAYER_PISSED_OFF_JACKED_8,
- SFX_PLAYER_PISSED_OFF_JACKED_9,
- SFX_PLAYER_PISSED_OFF_JACKED_10,
- SFX_PLAYER_PISSED_OFF_JACKED_11,
- SFX_PLAYER_PISSED_OFF_JACKED_12,
- SFX_PLAYER_PISSED_OFF_JACKED_13,
- SFX_PLAYER_PISSED_OFF_JACKED_14,
- SFX_PLAYER_PISSED_OFF_JACKED_15,
- SFX_PLAYER_PISSED_OFF_JACKED_16,
- SFX_PLAYER_PISSED_OFF_JACKED_17,
- SFX_PLAYER_PISSED_OFF_JACKED_18,
- SFX_PLAYER_PISSED_OFF_JACKED_19,
- SFX_PLAYER_PISSED_OFF_JACKED_20,
- SFX_PLAYER_PISSED_OFF_JACKED_21,
- SFX_PLAYER_PISSED_OFF_JACKING_1,
- SFX_PLAYER_PISSED_OFF_JACKING_2,
- SFX_PLAYER_PISSED_OFF_JACKING_3,
- SFX_PLAYER_PISSED_OFF_JACKING_4,
- SFX_PLAYER_PISSED_OFF_JACKING_5,
- SFX_PLAYER_PISSED_OFF_JACKING_6,
- SFX_PLAYER_PISSED_OFF_JACKING_7,
- SFX_PLAYER_PISSED_OFF_JACKING_8,
- SFX_PLAYER_PISSED_OFF_JACKING_9,
- SFX_PLAYER_PISSED_OFF_JACKING_10,
- SFX_PLAYER_PISSED_OFF_JACKING_11,
- SFX_PLAYER_PISSED_OFF_JACKING_12,
- SFX_PLAYER_PISSED_OFF_JACKING_13,
- SFX_PLAYER_PISSED_OFF_JACKING_14,
- SFX_PLAYER_PISSED_OFF_JACKING_15,
- SFX_PLAYER_PISSED_OFF_JACKING_16,
- SFX_PLAYER_PISSED_OFF_JACKING_17,
- SFX_PLAYER_PISSED_OFF_JACKING_18,
- SFX_PLAYER_PISSED_OFF_JACKING_19,
- SFX_PLAYER_PISSED_OFF_JACKING_20,
- SFX_PLAYER_PISSED_OFF_JACKING_21,
- SFX_PLAYER_PISSED_OFF_JACKING_22,
- SFX_PLAYER_PISSED_OFF_JACKING_23,
- SFX_PLAYER_PISSED_OFF_JACKING_24,
- SFX_PLAYER_PISSED_OFF_JACKING_25,
- SFX_PLAYER_PISSED_OFF_JACKING_26,
- SFX_PLAYER_PISSED_OFF_JACKING_27,
- SFX_PLAYER_PISSED_OFF_JACKING_28,
- SFX_PLAYER_PISSED_OFF_JACKING_29,
- SFX_PLAYER_PISSED_OFF_JACKING_30,
- SFX_PLAYER_PISSED_OFF_JACKING_31,
- SFX_PLAYER_PISSED_OFF_JACKING_32,
- SFX_PLAYER_PISSED_OFF_JACKING_33,
- SFX_PLAYER_PISSED_OFF_JACKING_34,
- SFX_PLAYER_PISSED_OFF_JACKING_35,
- SFX_PLAYER_PISSED_OFF_JACKING_36,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_1,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_2,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_3,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_4,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_5,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_6,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_7,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_8,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_9,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_10,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_11,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_12,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_13,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_14,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_15,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_16,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_17,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_18,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_19,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_20,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_21,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_22,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_23,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_24,
- SFX_PLAYER_PISSED_OFF_PICK_UP_CASH_25,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_1,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_2,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_3,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_4,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_5,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_6,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_7,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_8,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_9,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_10,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_11,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_12,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_13,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_14,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_15,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_16,
- SFX_PLAYER_PISSED_OFF_PICK_UP_HOOKER_17,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_1,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_2,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_3,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_4,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_5,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_6,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_7,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_8,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_9,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_10,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_11,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_12,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_13,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_14,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_15,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_16,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_17,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_18,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_19,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_20,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_21,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_22,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_23,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_24,
- SFX_PLAYER_PISSED_OFF_PULL_GUN_25,
- SFX_PLAYER_PISSED_OFF_SHOOT_1,
- SFX_PLAYER_PISSED_OFF_SHOOT_2,
- SFX_PLAYER_PISSED_OFF_SHOOT_3,
- SFX_PLAYER_PISSED_OFF_SHOOT_4,
- SFX_PLAYER_PISSED_OFF_SHOOT_5,
- SFX_PLAYER_PISSED_OFF_SHOOT_6,
- SFX_PLAYER_PISSED_OFF_SHOOT_7,
- SFX_PLAYER_PISSED_OFF_SHOOT_8,
- SFX_PLAYER_PISSED_OFF_SHOOT_9,
- SFX_PLAYER_PISSED_OFF_SHOOT_10,
- SFX_PLAYER_PISSED_OFF_SHOOT_11,
- SFX_PLAYER_PISSED_OFF_SHOOT_12,
- SFX_PLAYER_PISSED_OFF_SHOOT_13,
- SFX_PLAYER_PISSED_OFF_SHOOT_14,
- SFX_PLAYER_PISSED_OFF_SHOOT_15,
- SFX_PLAYER_PISSED_OFF_SHOOT_16,
- SFX_PLAYER_PISSED_OFF_SHOOT_17,
- SFX_PLAYER_PISSED_OFF_SHOOT_18,
- SFX_PLAYER_PISSED_OFF_SHOOT_19,
- SFX_PLAYER_PISSED_OFF_SHOOT_20,
- SFX_PLAYER_PISSED_OFF_SHOOT_21,
- SFX_PLAYER_PISSED_OFF_SHOOT_22,
- SFX_PLAYER_PISSED_OFF_SHOOT_23,
- SFX_PLAYER_PISSED_OFF_SHOOT_24,
- SFX_PLAYER_PISSED_OFF_SHOOT_25,
- SFX_PLAYER_PISSED_OFF_SHOOT_26,
- SFX_PLAYER_PISSED_OFF_SHOOT_27,
- SFX_PLAYER_PISSED_OFF_SHOOT_28,
- SFX_PLAYER_PISSED_OFF_SHOOT_29,
+ SFX_AMBULAN_VOICE_1_VAN_1,
+ SFX_AMBULAN_VOICE_1_VAN_2,
+ SFX_AMBULAN_VOICE_1_VAN_3,
+ SFX_AMBULAN_VOICE_1_VAN_4,
+ SFX_AMBULAN_VOICE_1_VICTIM_1,
+ SFX_AMBULAN_VOICE_1_VICTIM_2,
+ SFX_AMBULAN_VOICE_1_VICTIM_3,
+ SFX_AMBULAN_VOICE_1_VICTIM_4,
+ SFX_AMBULAN_VOICE_2_VAN_1,
+ SFX_AMBULAN_VOICE_2_VAN_2,
+ SFX_AMBULAN_VOICE_2_VAN_3,
+ SFX_AMBULAN_VOICE_2_VAN_4,
+ SFX_AMBULAN_VOICE_2_VICTIM_1,
+ SFX_AMBULAN_VOICE_2_VICTIM_2,
+ SFX_AMBULAN_VOICE_2_VICTIM_3,
+ SFX_AMBULAN_VOICE_2_VICTIM_4,
+ SFX_AVE1_AA,
+ SFX_AVE1_AB,
+ SFX_AVE1_AC,
+ SFX_AVE1_AD,
+ SFX_AVE1_AE,
+ SFX_AVE1_AF,
+ SFX_AVE1_AG,
+ SFX_AVE2_AA,
+ SFX_AVE2_AC,
+ SFX_AVE2_AD,
+ SFX_AVE2_AE,
+ SFX_AVE2_AG,
+ SFX_AVE2_AH,
+ SFX_AVE3_AA,
+ SFX_AVE3_AB,
+ SFX_AVE3_AC,
+ SFX_AVE3_AD,
+ SFX_AVE3_AE,
+ SFX_AVE3_AF,
+ SFX_AVE3_AG,
+ SFX_AVE4_AA,
+ SFX_AVE4_AB,
+ SFX_AVE4_AD,
+ SFX_AVE4_AE,
+ SFX_AVE4_AF,
+ SFX_AVE4_AG,
+ SFX_AVE4_AH,
+ SFX_AVE5_AA,
+ SFX_AVE5_AB,
+ SFX_AVE5_AC,
+ SFX_AVE5_AD,
+ SFX_AVE5_AE,
+ SFX_AVE5_AF,
+ SFX_AVE5_AG,
+ SFX_AVE6_AA,
+ SFX_AVE6_AB,
+ SFX_AVE6_AC,
+ SFX_AVE6_AD,
+ SFX_AVE6_AE,
+ SFX_AVEN_AA,
+ SFX_AVEN_AB,
+ SFX_AVEN_AC,
+ SFX_AVEN_AD,
+ SFX_AVEN_AE,
+ SFX_AVEN_AF,
+ SFX_AVEN_AG,
+ SFX_AVEN_AH,
+ SFX_AVEN_AI,
+ SFX_AVEN_AJ,
+ SFX_AVEN_AK,
+ SFX_AVEN_AL,
+ SFX_AVEN_AM,
+ SFX_AVEN_AN,
+ SFX_AVEN_AO,
+ SFX_AVEN_AP,
+ SFX_AVEN_AQ,
+ SFX_AVEN_AR,
+ SFX_AVEN_AS,
+ SFX_AVEN_AT,
+ SFX_AVEN_AU,
+ SFX_AVEN_AV,
+ SFX_AVEN_AW,
+ SFX_BIKER1_BUMP_1,
+ SFX_BIKER1_BUMP_2,
+ SFX_BIKER1_BUMP_3,
+ SFX_BIKER1_CHAT_1,
+ SFX_BIKER1_CHAT_2,
+ SFX_BIKER1_CHAT_3,
+ SFX_BIKER1_CHAT_4,
+ SFX_BIKER1_CRASH_CAR_1,
+ SFX_BIKER1_CRASH_CAR_2,
+ SFX_BIKER1_DODGE_1,
+ SFX_BIKER1_DODGE_2,
+ SFX_BIKER1_DRIVER_BLOCKED_1,
+ SFX_BIKER1_DRIVER_BLOCKED_2,
+ SFX_BIKER1_FIGHT_1,
+ SFX_BIKER1_FIGHT_2,
+ SFX_BIKER1_FIGHT_3,
+ SFX_BIKER1_GUN_THREATENED_1,
+ SFX_BIKER1_GUN_THREATENED_2,
+ SFX_BIKER1_JACKED_CAR_1,
+ SFX_BIKER1_JACKED_CAR_2,
+ SFX_BIKER1_JACKED_CAR_3,
+ SFX_BIKER2_BUMP_1,
+ SFX_BIKER2_BUMP_2,
+ SFX_BIKER2_BUMP_3,
+ SFX_BIKER2_CHAT_1,
+ SFX_BIKER2_CHAT_2,
+ SFX_BIKER2_CHAT_3,
+ SFX_BIKER2_CRASH_CAR_1,
+ SFX_BIKER2_CRASH_CAR_2,
+ SFX_BIKER2_DODGE_1,
+ SFX_BIKER2_DODGE_2,
+ SFX_BIKER2_DODGE_3,
+ SFX_BIKER2_DRIVER_BLOCKED_1,
+ SFX_BIKER2_DRIVER_BLOCKED_2,
+ SFX_BIKER2_FIGHT_1,
+ SFX_BIKER2_FIGHT_2,
+ SFX_BIKER2_FIGHT_3,
+ SFX_BIKER2_GUN_THREATENED_1,
+ SFX_BIKER2_GUN_THREATENED_2,
+ SFX_BIKER2_JACKED_CAR_1,
+ SFX_BIKER2_JACKED_CAR_2,
+ SFX_BIKER2_JACKED_CAR_3,
+ SFX_BIKER2_SHOCKED_1,
+ SFX_BONS2BA,
+ SFX_BONS2BB,
+ SFX_BONS2BC,
+ SFX_BONS2BD,
+ SFX_BONS2BE,
+ SFX_BRIDGE_BELL,
+ SFX_B_MAN1_BUMP_1,
+ SFX_B_MAN1_BUMP_2,
+ SFX_B_MAN1_BUMP_3,
+ SFX_B_MAN1_CHAT_1,
+ SFX_B_MAN1_CHAT_2,
+ SFX_B_MAN1_CHAT_3,
+ SFX_B_MAN1_CRASH_CAR_1,
+ SFX_B_MAN1_CRASH_CAR_2,
+ SFX_B_MAN1_DODGE_1,
+ SFX_B_MAN1_DODGE_2,
+ SFX_B_MAN1_DRIVER_BLOCKED_1,
+ SFX_B_MAN1_DRIVER_BLOCKED_2,
+ SFX_B_MAN1_FIGHT_1,
+ SFX_B_MAN1_FIGHT_2,
+ SFX_B_MAN1_FIGHT_3,
+ SFX_B_MAN1_GUN_THREATENED_1,
+ SFX_B_MAN1_GUN_THREATENED_2,
+ SFX_B_MAN1_JACKED_CAR_1,
+ SFX_B_MAN1_JACKED_CAR_2,
+ SFX_B_MAN1_JACKED_CAR_3,
+ SFX_B_MAN1_SHOCKED_1,
+ SFX_B_MAN2_BUMP_1,
+ SFX_B_MAN2_BUMP_2,
+ SFX_B_MAN2_BUMP_3,
+ SFX_B_MAN2_CHAT_1,
+ SFX_B_MAN2_CHAT_2,
+ SFX_B_MAN2_CHAT_3,
+ SFX_B_MAN2_CHAT_4,
+ SFX_B_MAN2_CRASH_CAR_1,
+ SFX_B_MAN2_CRASH_CAR_2,
+ SFX_B_MAN2_DODGE_1,
+ SFX_B_MAN2_DODGE_2,
+ SFX_B_MAN2_DRIVER_BLOCKED_1,
+ SFX_B_MAN2_DRIVER_BLOCKED_2,
+ SFX_B_MAN2_FIGHT_1,
+ SFX_B_MAN2_FIGHT_2,
+ SFX_B_MAN2_FIGHT_3,
+ SFX_B_MAN2_GUN_THREATENED_1,
+ SFX_B_MAN2_GUN_THREATENED_2,
+ SFX_B_MAN2_JACKED_CAR_1,
+ SFX_B_MAN2_JACKED_CAR_2,
+ SFX_B_MAN2_JACKED_CAR_3,
+ SFX_B_MAN2_SHOCKED_1,
+ SFX_B_MAN3_BUMP_1,
+ SFX_B_MAN3_BUMP_2,
+ SFX_B_MAN3_BUMP_3,
+ SFX_B_MAN3_CHAT_1,
+ SFX_B_MAN3_CHAT_2,
+ SFX_B_MAN3_CHAT_3,
+ SFX_B_MAN3_CHAT_4,
+ SFX_B_MAN3_CHAT_5,
+ SFX_B_MAN3_CRASH_CAR_1,
+ SFX_B_MAN3_CRASH_CAR_2,
+ SFX_B_MAN3_DODGE_1,
+ SFX_B_MAN3_DODGE_2,
+ SFX_B_MAN3_DRIVER_BLOCKED_1,
+ SFX_B_MAN3_DRIVER_BLOCKED_2,
+ SFX_B_MAN3_FIGHT_1,
+ SFX_B_MAN3_FIGHT_2,
+ SFX_B_MAN3_FIGHT_3,
+ SFX_B_MAN3_FIGHT_4,
+ SFX_B_MAN3_GUN_THREATENED_1,
+ SFX_B_MAN3_GUN_THREATENED_2,
+ SFX_B_MAN3_JACKED_CAR_1,
+ SFX_B_MAN3_JACKED_CAR_2,
+ SFX_B_MAN3_JACKED_CAR_3,
+ SFX_B_MAN3_SHOCKED_1,
+ SFX_B_WOM1_BUMP_1,
+ SFX_B_WOM1_BUMP_2,
+ SFX_B_WOM1_BUMP_3,
+ SFX_B_WOM1_CHAT_1,
+ SFX_B_WOM1_CHAT_2,
+ SFX_B_WOM1_CHAT_3,
+ SFX_B_WOM1_CRASH_CAR_1,
+ SFX_B_WOM1_CRASH_CAR_2,
+ SFX_B_WOM1_DODGE_1,
+ SFX_B_WOM1_DODGE_2,
+ SFX_B_WOM1_DRIVER_BLOCKED_1,
+ SFX_B_WOM1_DRIVER_BLOCKED_2,
+ SFX_B_WOM1_FIGHT_1,
+ SFX_B_WOM1_FIGHT_2,
+ SFX_B_WOM1_FIGHT_3,
+ SFX_B_WOM1_GUN_THREATENED_1,
+ SFX_B_WOM1_GUN_THREATENED_2,
+ SFX_B_WOM1_JACKED_CAR_1,
+ SFX_B_WOM1_JACKED_CAR_2,
+ SFX_B_WOM1_JACKED_CAR_3,
+ SFX_B_WOM1_SHOCKED_1,
+ SFX_B_WOM2_BUMP_1,
+ SFX_B_WOM2_BUMP_2,
+ SFX_B_WOM2_BUMP_3,
+ SFX_B_WOM2_CHAT_1,
+ SFX_B_WOM2_CHAT_2,
+ SFX_B_WOM2_CHAT_3,
+ SFX_B_WOM2_CHAT_4,
+ SFX_B_WOM2_CRASH_CAR_1,
+ SFX_B_WOM2_CRASH_CAR_2,
+ SFX_B_WOM2_DODGE_1,
+ SFX_B_WOM2_DODGE_2,
+ SFX_B_WOM2_DODGE_3,
+ SFX_B_WOM2_DRIVER_BLOCKED_1,
+ SFX_B_WOM2_DRIVER_BLOCKED_2,
+ SFX_B_WOM2_FIGHT_1,
+ SFX_B_WOM2_FIGHT_2,
+ SFX_B_WOM2_FIGHT_3,
+ SFX_B_WOM2_GUN_THREATENED_1,
+ SFX_B_WOM2_GUN_THREATENED_2,
+ SFX_B_WOM2_JACKED_CAR_1,
+ SFX_B_WOM2_JACKED_CAR_2,
+ SFX_B_WOM2_JACKED_CAR_3,
+ SFX_B_WOM2_SHOCKED_1,
+ SFX_B_WOM3_BUMP_1,
+ SFX_B_WOM3_BUMP_2,
+ SFX_B_WOM3_BUMP_3,
+ SFX_B_WOM3_CHAT_1,
+ SFX_B_WOM3_CHAT_2,
+ SFX_B_WOM3_CHAT_3,
+ SFX_B_WOM3_CRASH_CAR_1,
+ SFX_B_WOM3_CRASH_CAR_2,
+ SFX_B_WOM3_DODGE_1,
+ SFX_B_WOM3_DODGE_2,
+ SFX_B_WOM3_DRIVER_BLOCKED_1,
+ SFX_B_WOM3_DRIVER_BLOCKED_2,
+ SFX_B_WOM3_FIGHT_1,
+ SFX_B_WOM3_FIGHT_2,
+ SFX_B_WOM3_FIGHT_3,
+ SFX_B_WOM3_GUN_THREATENED_1,
+ SFX_B_WOM3_GUN_THREATENED_2,
+ SFX_B_WOM3_JACKED_CAR_1,
+ SFX_B_WOM3_JACKED_CAR_2,
+ SFX_B_WOM3_JACKED_CAR_3,
+ SFX_B_WOM3_SHOCKED_1,
+ SFX_CAD1_AA,
+ SFX_CAD1_AB,
+ SFX_CAD1_AC,
+ SFX_CAD1_AD,
+ SFX_CAD1_AE,
+ SFX_CAD2_AA,
+ SFX_CAD2_AB,
+ SFX_CAD2_AC,
+ SFX_CAD2_AD,
+ SFX_CAD2_AE,
+ SFX_CAD2_AF,
+ SFX_CAD3_AA,
+ SFX_CAD3_AB,
+ SFX_CAD3_AC,
+ SFX_CAD3_AD,
+ SFX_CAD3_AE,
+ SFX_CAD3_AF,
+ SFX_CAD4_AA,
+ SFX_CAD4_AB,
+ SFX_CAD4_AC,
+ SFX_CAD4_AD,
+ SFX_CAD4_AE,
+ SFX_CAD4_AF,
+ SFX_CAD5_AA,
+ SFX_CAD5_AB,
+ SFX_CAD5_AC,
+ SFX_CAD5_AD,
+ SFX_CAD5_AE,
+ SFX_CAD5_AF,
+ SFX_CAD6_AA,
+ SFX_CAD6_AB,
+ SFX_CAD6_AC,
+ SFX_CAD6_AD,
+ SFX_CAD6_AE,
+ SFX_CAD6_AF,
+ SFX_CAD7_AB,
+ SFX_CAD7_AC,
+ SFX_CAD7_AD,
+ SFX_CAD7_AE,
+ SFX_CAD8_AB,
+ SFX_CAD8_AC,
+ SFX_CAD8_AD,
+ SFX_CAD8_AE,
+ SFX_CAD8_AF,
+ SFX_CAD9_AA,
+ SFX_CAD9_AB,
+ SFX_CAD9_AC,
+ SFX_CAD9_AD,
+ SFX_CAD9_AE,
+ SFX_CAD9_AF,
+ SFX_CSHUTR,
+ SFX_CAMP_MAN_BUMP_1,
+ SFX_CAMP_MAN_BUMP_2,
+ SFX_CAMP_MAN_BUMP_3,
+ SFX_CAMP_MAN_CHAT_1,
+ SFX_CAMP_MAN_CHAT_2,
+ SFX_CAMP_MAN_CHAT_3,
+ SFX_CAMP_MAN_CHAT_4,
+ SFX_CAMP_MAN_CRASH_CAR_1,
+ SFX_CAMP_MAN_CRASH_CAR_2,
+ SFX_CAMP_MAN_CRASH_CAR_3,
+ SFX_CAMP_MAN_DODGE_1,
+ SFX_CAMP_MAN_DODGE_2,
+ SFX_CAMP_MAN_DRIVER_BLOCKED_1,
+ SFX_CAMP_MAN_DRIVER_BLOCKED_2,
+ SFX_CAMP_MAN_DRIVER_BLOCKED_3,
+ SFX_CAMP_MAN_FIGHT_1,
+ SFX_CAMP_MAN_FIGHT_2,
+ SFX_CAMP_MAN_FIGHT_3,
+ SFX_CAMP_MAN_GUN_THREATENED_1,
+ SFX_CAMP_MAN_GUN_THREATENED_2,
+ SFX_CAMP_MAN_JACKED_CAR_1,
+ SFX_CAMP_MAN_JACKED_CAR_2,
+ SFX_CAMP_MAN_JACKED_CAR_3,
+ SFX_CAMP_MAN_SHOCKED_1,
+ SFX_CAMP_WOM_BUMP_1,
+ SFX_CAMP_WOM_BUMP_2,
+ SFX_CAMP_WOM_BUMP_3,
+ SFX_CAMP_WOM_CHAT_1,
+ SFX_CAMP_WOM_CHAT_2,
+ SFX_CAMP_WOM_CHAT_3,
+ SFX_CAMP_WOM_CHAT_4,
+ SFX_CAMP_WOM_CHAT_5,
+ SFX_CAMP_WOM_CRASH_CAR_1,
+ SFX_CAMP_WOM_CRASH_CAR_2,
+ SFX_CAMP_WOM_DODGE_1,
+ SFX_CAMP_WOM_DODGE_2,
+ SFX_CAMP_WOM_DRIVER_BLOCKED_1,
+ SFX_CAMP_WOM_DRIVER_BLOCKED_2,
+ SFX_CAMP_WOM_FIGHT_1,
+ SFX_CAMP_WOM_FIGHT_2,
+ SFX_CAMP_WOM_FIGHT_3,
+ SFX_CAMP_WOM_GUN_THREATENED_1,
+ SFX_CAMP_WOM_GUN_THREATENED_2,
+ SFX_CAMP_WOM_JACKED_CAR_1,
+ SFX_CAMP_WOM_JACKED_CAR_2,
+ SFX_CAMP_WOM_JACKED_CAR_3,
+ SFX_CAMP_WOM_SHOCKED_1,
+ SFX_CAS_MAN_BUMP_1,
+ SFX_CAS_MAN_BUMP_2,
+ SFX_CAS_MAN_BUMP_3,
+ SFX_CAS_MAN_CHAT_1,
+ SFX_CAS_MAN_CHAT_2,
+ SFX_CAS_MAN_CHAT_3,
+ SFX_CAS_MAN_CHAT_4,
+ SFX_CAS_MAN_CRASH_CAR_1,
+ SFX_CAS_MAN_CRASH_CAR_2,
+ SFX_CAS_MAN_DODGE_1,
+ SFX_CAS_MAN_DODGE_2,
+ SFX_CAS_MAN_DRIVER_BLOCKED_1,
+ SFX_CAS_MAN_DRIVER_BLOCKED_2,
+ SFX_CAS_MAN_FIGHT_1,
+ SFX_CAS_MAN_FIGHT_2,
+ SFX_CAS_MAN_FIGHT_3,
+ SFX_CAS_MAN_GUN_THREATENED_1,
+ SFX_CAS_MAN_GUN_THREATENED_2,
+ SFX_CAS_MAN_JACKED_CAR_1,
+ SFX_CAS_MAN_JACKED_CAR_2,
+ SFX_CAS_MAN_JACKED_CAR_3,
+ SFX_CAS_MAN_SHOCKED_1,
+ SFX_CAS_WOM_BUMP_1,
+ SFX_CAS_WOM_BUMP_2,
+ SFX_CAS_WOM_BUMP_3,
+ SFX_CAS_WOM_CHAT_1,
+ SFX_CAS_WOM_CHAT_2,
+ SFX_CAS_WOM_CHAT_3,
+ SFX_CAS_WOM_CHAT_4,
+ SFX_CAS_WOM_CRASH_CAR_1,
+ SFX_CAS_WOM_CRASH_CAR_2,
+ SFX_CAS_WOM_DODGE_1,
+ SFX_CAS_WOM_DODGE_2,
+ SFX_CAS_WOM_DRIVER_BLOCKED_1,
+ SFX_CAS_WOM_DRIVER_BLOCKED_2,
+ SFX_CAS_WOM_FIGHT_1,
+ SFX_CAS_WOM_FIGHT_2,
+ SFX_CAS_WOM_FIGHT_3,
+ SFX_CAS_WOM_GUN_THREATENED_1,
+ SFX_CAS_WOM_GUN_THREATENED_2,
+ SFX_CAS_WOM_JACKED_CAR_1,
+ SFX_CAS_WOM_JACKED_CAR_2,
+ SFX_CAS_WOM_JACKED_CAR_3,
+ SFX_CAS_WOM_SHOCKED_1,
+ SFX_CAS_WOM_SPECIAL_CASE_1,
+ SFX_CAS_WOM_SPECIAL_CASE_2,
+ SFX_CAS_WOM_SPECIAL_CASE_3,
+ SFX_CHOP_1,
+ SFX_CHOP_2,
+ SFX_CLICK,
+ SFX_COLT_45,
+ SFX_CONST1_BUMP_1,
+ SFX_CONST1_BUMP_2,
+ SFX_CONST1_CHAT_1,
+ SFX_CONST1_CHAT_3,
+ SFX_CONST1_CHAT_4,
+ SFX_CONST1_CRASH_CAR_1,
+ SFX_CONST1_CRASH_CAR_2,
+ SFX_CONST1_DODGE_1,
+ SFX_CONST1_DODGE_2,
+ SFX_CONST1_DRIVER_BLOCKED_1,
+ SFX_CONST1_DRIVER_BLOCKED_2,
+ SFX_CONST1_FIGHT_1,
+ SFX_CONST1_FIGHT_2,
+ SFX_CONST1_FIGHT_3,
+ SFX_CONST1_GUN_THREATENED_1,
+ SFX_CONST1_GUN_THREATENED_2,
+ SFX_CONST1_JACKED_CAR_1,
+ SFX_CONST1_JACKED_CAR_2,
+ SFX_CONST1_JACKED_CAR_3,
+ SFX_CONST1_SHOCKED_1,
+ SFX_CONST1_SPECIAL_CASE_1,
+ SFX_CONST1_SPECIAL_CASE_2,
+ SFX_CONST1_SPECIAL_CASE_3,
+ SFX_CONST2_BUMP_1,
+ SFX_CONST2_BUMP_2,
+ SFX_CONST2_BUMP_3,
+ SFX_CONST2_CHAT_1,
+ SFX_CONST2_CHAT_2,
+ SFX_CONST2_CHAT_3,
+ SFX_CONST2_CHAT_4,
+ SFX_CONST2_CRASH_CAR_1,
+ SFX_CONST2_CRASH_CAR_2,
+ SFX_CONST2_DODGE_1,
+ SFX_CONST2_DODGE_2,
+ SFX_CONST2_DRIVER_BLOCKED_1,
+ SFX_CONST2_DRIVER_BLOCKED_2,
+ SFX_CONST2_FIGHT_1,
+ SFX_CONST2_FIGHT_2,
+ SFX_CONST2_FIGHT_3,
+ SFX_CONST2_GUN_THREATENED_1,
+ SFX_CONST2_GUN_THREATENED_2,
+ SFX_CONST2_JACKED_CAR_1,
+ SFX_CONST2_JACKED_CAR_2,
+ SFX_CONST2_SHOCKED_1,
+ SFX_COP1_ARREST_1,
+ SFX_COP1_ARREST_2,
+ SFX_COP1_BUMP_1,
+ SFX_COP1_BUMP_2,
+ SFX_COP1_BUMP_3,
+ SFX_COP1_CHASE_FOOT_1,
+ SFX_COP1_CHASE_FOOT_2,
+ SFX_COP1_CHASE_FOOT_3,
+ SFX_COP1_CHASE_FOOT_4,
+ SFX_COP1_CHASE_FOOT_5,
+ SFX_COP1_CHASE_FOOT_6,
+ SFX_COP1_DODGE_1,
+ SFX_COP1_DODGE_2,
+ SFX_COP1_FIGHT_1,
+ SFX_COP1_FIGHT_2,
+ SFX_COP1_FIGHT_3,
+ SFX_COP1_SHOOT_1,
+ SFX_COP1_SHOOT_2,
+ SFX_COP1_SHOOT_3,
+ SFX_COP1_SHOOT_4,
+ SFX_COP1_SHOOT_5,
+ SFX_COP1_SHOOT_6,
+ SFX_COP2_ARREST_1,
+ SFX_COP2_ARREST_2,
+ SFX_COP2_BUMP_1,
+ SFX_COP2_BUMP_2,
+ SFX_COP2_BUMP_3,
+ SFX_COP2_CHASE_FOOT_1,
+ SFX_COP2_CHASE_FOOT_2,
+ SFX_COP2_CHASE_FOOT_3,
+ SFX_COP2_CHASE_FOOT_4,
+ SFX_COP2_CHASE_FOOT_5,
+ SFX_COP2_CHASE_FOOT_6,
+ SFX_COP2_DODGE_1,
+ SFX_COP2_DODGE_2,
+ SFX_COP2_FIGHT_1,
+ SFX_COP2_FIGHT_2,
+ SFX_COP2_FIGHT_3,
+ SFX_COP2_SHOOT_1,
+ SFX_COP2_SHOOT_2,
+ SFX_COP2_SHOOT_3,
+ SFX_COP2_SHOOT_4,
+ SFX_COP2_SHOOT_5,
+ SFX_COP2_SHOOT_6,
+ SFX_COP3_ARREST_1,
+ SFX_COP3_ARREST_2,
+ SFX_COP3_BUMP_1,
+ SFX_COP3_BUMP_2,
+ SFX_COP3_BUMP_3,
+ SFX_COP3_CHASE_FOOT_1,
+ SFX_COP3_CHASE_FOOT_2,
+ SFX_COP3_CHASE_FOOT_3,
+ SFX_COP3_CHASE_FOOT_4,
+ SFX_COP3_CHASE_FOOT_5,
+ SFX_COP3_CHASE_FOOT_6,
+ SFX_COP3_DODGE_1,
+ SFX_COP3_DODGE_2,
+ SFX_COP3_FIGHT_1,
+ SFX_COP3_FIGHT_2,
+ SFX_COP3_FIGHT_3,
+ SFX_COP3_SHOOT_1,
+ SFX_COP3_SHOOT_2,
+ SFX_COP3_SHOOT_3,
+ SFX_COP3_SHOOT_4,
+ SFX_COP3_SHOOT_5,
+ SFX_COP3_SHOOT_6,
+ SFX_COP4_ARREST_1,
+ SFX_COP4_ARREST_2,
+ SFX_COP4_BUMP_1,
+ SFX_COP4_BUMP_2,
+ SFX_COP4_BUMP_3,
+ SFX_COP4_CHASE_FOOT_1,
+ SFX_COP4_CHASE_FOOT_2,
+ SFX_COP4_CHASE_FOOT_3,
+ SFX_COP4_CHASE_FOOT_4,
+ SFX_COP4_CHASE_FOOT_5,
+ SFX_COP4_CHASE_FOOT_6,
+ SFX_COP4_DODGE_1,
+ SFX_COP4_DODGE_2,
+ SFX_COP4_FIGHT_1,
+ SFX_COP4_FIGHT_2,
+ SFX_COP4_FIGHT_3,
+ SFX_COP4_SHOOT_1,
+ SFX_COP4_SHOOT_2,
+ SFX_COP4_SHOOT_3,
+ SFX_COP4_SHOOT_4,
+ SFX_COP4_SHOOT_5,
+ SFX_COP4_SHOOT_6,
+ SFX_COP5_ARREST_1,
+ SFX_COP5_ARREST_2,
+ SFX_COP5_BUMP_1,
+ SFX_COP5_BUMP_2,
+ SFX_COP5_BUMP_3,
+ SFX_COP5_CHASE_FOOT_1,
+ SFX_COP5_CHASE_FOOT_2,
+ SFX_COP5_CHASE_FOOT_3,
+ SFX_COP5_CHASE_FOOT_4,
+ SFX_COP5_CHASE_FOOT_5,
+ SFX_COP5_CHASE_FOOT_6,
+ SFX_COP5_DODGE_1,
+ SFX_COP5_DODGE_2,
+ SFX_COP5_FIGHT_1,
+ SFX_COP5_FIGHT_2,
+ SFX_COP5_FIGHT_3,
+ SFX_COP5_SHOOT_1,
+ SFX_COP5_SHOOT_2,
+ SFX_COP5_SHOOT_3,
+ SFX_COP5_SHOOT_4,
+ SFX_COP5_SHOOT_5,
+ SFX_COP5_SHOOT_6,
+ SFX_COP6_ARREST_1,
+ SFX_COP6_ARREST_2,
+ SFX_COP6_BUMP_1,
+ SFX_COP6_BUMP_2,
+ SFX_COP6_BUMP_3,
+ SFX_COP6_CHASE_FOOT_1,
+ SFX_COP6_CHASE_FOOT_2,
+ SFX_COP6_CHASE_FOOT_3,
+ SFX_COP6_CHASE_FOOT_4,
+ SFX_COP6_CHASE_FOOT_5,
+ SFX_COP6_CHASE_FOOT_6,
+ SFX_COP6_DODGE_1,
+ SFX_COP6_DODGE_2,
+ SFX_COP6_FIGHT_1,
+ SFX_COP6_FIGHT_2,
+ SFX_COP6_FIGHT_3,
+ SFX_COP6_SHOOT_1,
+ SFX_COP6_SHOOT_2,
+ SFX_COP6_SHOOT_3,
+ SFX_COP6_SHOOT_4,
+ SFX_COP6_SHOOT_5,
+ SFX_COP6_SHOOT_6,
+ SFX_CRIMINAL01_BUMP_1,
+ SFX_CRIMINAL01_BUMP_2,
+ SFX_CRIMINAL01_BUMP_3,
+ SFX_CRIMINAL01_CHAT_1,
+ SFX_CRIMINAL01_CHAT_2,
+ SFX_CRIMINAL01_CHAT_3,
+ SFX_CRIMINAL01_CHAT_4,
+ SFX_CRIMINAL01_CRASH_CAR_1,
+ SFX_CRIMINAL01_CRASH_CAR_2,
+ SFX_CRIMINAL01_DODGE_1,
+ SFX_CRIMINAL01_DODGE_2,
+ SFX_CRIMINAL01_DRIVER_BLOCKED_1,
+ SFX_CRIMINAL01_DRIVER_BLOCKED_2,
+ SFX_CRIMINAL01_FIGHT_1,
+ SFX_CRIMINAL01_FIGHT_2,
+ SFX_CRIMINAL01_FIGHT_3,
+ SFX_CRIMINAL01_GUN_THREATENED_1,
+ SFX_CRIMINAL01_GUN_THREATENED_2,
+ SFX_CRIMINAL01_JACKED_CAR_1,
+ SFX_CRIMINAL01_JACKED_CAR_2,
+ SFX_CRIMINAL01_JACKED_CAR_3,
+ SFX_CRIMINAL01_SHOCKED_1,
+ SFX_CRIMINAL02_BUMP_1,
+ SFX_CRIMINAL02_BUMP_2,
+ SFX_CRIMINAL02_BUMP_3,
+ SFX_CRIMINAL02_CHAT_1,
+ SFX_CRIMINAL02_CHAT_2,
+ SFX_CRIMINAL02_CHAT_3,
+ SFX_CRIMINAL02_CHAT_4,
+ SFX_CRIMINAL02_CRASH_CAR_1,
+ SFX_CRIMINAL02_CRASH_CAR_2,
+ SFX_CRIMINAL02_DODGE_1,
+ SFX_CRIMINAL02_DODGE_2,
+ SFX_CRIMINAL02_DRIVER_BLOCKED_1,
+ SFX_CRIMINAL02_DRIVER_BLOCKED_2,
+ SFX_CRIMINAL02_FIGHT_1,
+ SFX_CRIMINAL02_FIGHT_2,
+ SFX_CRIMINAL02_FIGHT_3,
+ SFX_CRIMINAL02_GUN_THREATENED_1,
+ SFX_CRIMINAL02_GUN_THREATENED_2,
+ SFX_CRIMINAL02_JACKED_CAR_1,
+ SFX_CRIMINAL02_JACKED_CAR_2,
+ SFX_CRIMINAL02_JACKED_CAR_3,
+ SFX_CRIMINAL02_SHOCKED_1,
+ SFX_CRIMINAL02_SPECIAL_CASE_1,
+ SFX_CRIMINAL02_SPECIAL_CASE_2,
+ SFX_CT_MAN1_BUMP_1,
+ SFX_CT_MAN1_BUMP_2,
+ SFX_CT_MAN1_BUMP_3,
+ SFX_CT_MAN1_CHAT_1,
+ SFX_CT_MAN1_CHAT_2,
+ SFX_CT_MAN1_CHAT_3,
+ SFX_CT_MAN1_CHAT_4,
+ SFX_CT_MAN1_CRASH_CAR_1,
+ SFX_CT_MAN1_CRASH_CAR_2,
+ SFX_CT_MAN1_DODGE_1,
+ SFX_CT_MAN1_DODGE_2,
+ SFX_CT_MAN1_DRIVER_BLOCKED_1,
+ SFX_CT_MAN1_DRIVER_BLOCKED_2,
+ SFX_CT_MAN1_FIGHT_1,
+ SFX_CT_MAN1_FIGHT_2,
+ SFX_CT_MAN1_FIGHT_3,
+ SFX_CT_MAN1_GUN_THREATENED_1,
+ SFX_CT_MAN1_GUN_THREATENED_2,
+ SFX_CT_MAN1_JACKED_CAR_1,
+ SFX_CT_MAN1_JACKED_CAR_2,
+ SFX_CT_MAN1_JACKED_CAR_3,
+ SFX_CT_MAN1_SHOCKED_1,
+ SFX_CT_MAN1_SPECIAL_CASE_1,
+ SFX_CT_MAN1_SPECIAL_CASE_2,
+ SFX_CT_MAN1_SPECIAL_CASE_3,
+ SFX_CT_MAN2_BUMP_1,
+ SFX_CT_MAN2_BUMP_2,
+ SFX_CT_MAN2_BUMP_3,
+ SFX_CT_MAN2_CHAT_1,
+ SFX_CT_MAN2_CHAT_2,
+ SFX_CT_MAN2_CHAT_3,
+ SFX_CT_MAN2_CHAT_4,
+ SFX_CT_MAN2_CRASH_CAR_1,
+ SFX_CT_MAN2_CRASH_CAR_2,
+ SFX_CT_MAN2_DODGE_1,
+ SFX_CT_MAN2_DODGE_2,
+ SFX_CT_MAN2_DRIVER_BLOCKED_1,
+ SFX_CT_MAN2_DRIVER_BLOCKED_2,
+ SFX_CT_MAN2_FIGHT_1,
+ SFX_CT_MAN2_FIGHT_2,
+ SFX_CT_MAN2_FIGHT_3,
+ SFX_CT_MAN2_GUN_THREATENED_1,
+ SFX_CT_MAN2_GUN_THREATENED_2,
+ SFX_CT_MAN2_JACKED_CAR_1,
+ SFX_CT_MAN2_JACKED_CAR_2,
+ SFX_CT_MAN2_JACKED_CAR_3,
+ SFX_CT_MAN2_SHOCKED_1,
+ SFX_CT_WOM1_BUMP_1,
+ SFX_CT_WOM1_BUMP_2,
+ SFX_CT_WOM1_BUMP_3,
+ SFX_CT_WOM1_CHAT_1,
+ SFX_CT_WOM1_CHAT_2,
+ SFX_CT_WOM1_CHAT_3,
+ SFX_CT_WOM1_CHAT_4,
+ SFX_CT_WOM1_CRASH_CAR_1,
+ SFX_CT_WOM1_CRASH_CAR_2,
+ SFX_CT_WOM1_DODGE_1,
+ SFX_CT_WOM1_DODGE_2,
+ SFX_CT_WOM1_DRIVER_BLOCKED_1,
+ SFX_CT_WOM1_DRIVER_BLOCKED_2,
+ SFX_CT_WOM1_FIGHT_1,
+ SFX_CT_WOM1_FIGHT_2,
+ SFX_CT_WOM1_FIGHT_3,
+ SFX_CT_WOM1_GUN_THREATENED_1,
+ SFX_CT_WOM1_GUN_THREATENED_2,
+ SFX_CT_WOM1_JACKED_CAR_1,
+ SFX_CT_WOM1_JACKED_CAR_2,
+ SFX_CT_WOM1_JACKED_CAR_3,
+ SFX_CT_WOM1_SHOCKED_1,
+ SFX_CT_WOM2_BUMP_1,
+ SFX_CT_WOM2_BUMP_2,
+ SFX_CT_WOM2_BUMP_3,
+ SFX_CT_WOM2_CHAT_1,
+ SFX_CT_WOM2_CHAT_2,
+ SFX_CT_WOM2_CHAT_3,
+ SFX_CT_WOM2_CHAT_4,
+ SFX_CT_WOM2_CRASH_CAR_1,
+ SFX_CT_WOM2_CRASH_CAR_2,
+ SFX_CT_WOM2_DODGE_1,
+ SFX_CT_WOM2_DODGE_2,
+ SFX_CT_WOM2_DRIVER_BLOCKED_1,
+ SFX_CT_WOM2_DRIVER_BLOCKED_2,
+ SFX_CT_WOM2_FIGHT_1,
+ SFX_CT_WOM2_FIGHT_2,
+ SFX_CT_WOM2_FIGHT_3,
+ SFX_CT_WOM2_GUN_THREATENED_1,
+ SFX_CT_WOM2_GUN_THREATENED_2,
+ SFX_CT_WOM2_JACKED_CAR_1,
+ SFX_CT_WOM2_JACKED_CAR_2,
+ SFX_CT_WOM2_JACKED_CAR_3,
+ SFX_CT_WOM2_SHOCKED_1,
+ SFX_DOCKER_BUMP_1,
+ SFX_DOCKER_BUMP_2,
+ SFX_DOCKER_BUMP_3,
+ SFX_DOCKER_CHAT_1,
+ SFX_DOCKER_CHAT_2,
+ SFX_DOCKER_CHAT_3,
+ SFX_DOCKER_CHAT_4,
+ SFX_DOCKER_CRASH_CAR_1,
+ SFX_DOCKER_CRASH_CAR_2,
+ SFX_DOCKER_DODGE_1,
+ SFX_DOCKER_DODGE_2,
+ SFX_DOCKER_DRIVER_BLOCKED_1,
+ SFX_DOCKER_DRIVER_BLOCKED_2,
+ SFX_DOCKER_FIGHT_1,
+ SFX_DOCKER_FIGHT_2,
+ SFX_DOCKER_FIGHT_3,
+ SFX_DOCKER_GUN_THREATENED_1,
+ SFX_DOCKER_GUN_THREATENED_2,
+ SFX_DOCKER_JACKED_CAR_1,
+ SFX_DOCKER_JACKED_CAR_2,
+ SFX_DOCKER_JACKED_CAR_3,
+ SFX_DOCKER_SHOCKED_1,
+ SFX_DOCKER_SPECIAL_CASE_1,
+ SFX_DOCKER_SPECIAL_CASE_2,
+ SFX_DOCKER_SPECIAL_CASE_3,
+ SFX_DONALD_CRASH_CAR_1,
+ SFX_DONALD_CRASH_CAR_2,
+ SFX_DONALD_CRASH_CAR_3,
+ SFX_DONALD_DRIVER_BLOCKED_1,
+ SFX_DONALD_DRIVER_BLOCKED_2,
+ SFX_DONALD_JACKED_CAR_1,
+ SFX_DONALD_JACKED_CAR_2,
+ SFX_DONALD_JACKED_CAR_3,
+ SFX_DONALD_SHOCKED_1,
+ SFX_DONALD_SHOCKED_2,
+ SFX_DONH1CA,
+ SFX_DONH1DA,
+ SFX_DONH1DB,
+ SFX_DONH1EA,
+ SFX_DONH1EB,
+ SFX_DONH1EC,
+ SFX_DONH1ED,
+ SFX_DONH1EE,
+ SFX_DONH1FA,
+ SFX_DONH1GA,
+ SFX_DONH1GB,
+ SFX_DONH1GC,
+ SFX_DONH1HA,
+ SFX_DONH1IA,
+ SFX_DONH1IB,
+ SFX_DONH1JA,
+ SFX_DONH1JB,
+ SFX_DONH1JC,
+ SFX_DONH1JD,
+ SFX_DONH1JE,
+ SFX_DONH2AA,
+ SFX_DONH2AB,
+ SFX_DONH2AC,
+ SFX_DONH2AD,
+ SFX_DONH2AF,
+ SFX_DONH2AG,
+ SFX_DONH2AH,
+ SFX_DONH2BA,
+ SFX_DONH2BB,
+ SFX_DONH2BC,
+ SFX_DONH2BD,
+ SFX_DONH2BE,
+ SFX_DONH2BF,
+ SFX_DONH2BG,
+ SFX_DONH2BH,
+ SFX_DONH2BI,
+ SFX_DONH2BJ,
+ SFX_DONH2BK,
+ SFX_DONH2BL,
+ SFX_DONH2CA,
+ SFX_DONH2CB,
+ SFX_DONH2CC,
+ SFX_DONH2CD,
+ SFX_DONH2CE,
+ SFX_DONH2CF,
+ SFX_DONH2CG,
+ SFX_DONH2DA,
+ SFX_DONH2DB,
+ SFX_DONH2DC,
+ SFX_DONH2EA,
+ SFX_DONH2EC,
+ SFX_DONH3AA,
+ SFX_DONH3AB,
+ SFX_DONH3AC,
+ SFX_DONH3AD,
+ SFX_DONH3AE,
+ SFX_DONH3AF,
+ SFX_DONH3AG,
+ SFX_DONH3AH,
+ SFX_DONH3AI,
+ SFX_DONH3BA,
+ SFX_DONH3BB,
+ SFX_DONH3CA,
+ SFX_DONH3DA,
+ SFX_DONH3EA,
+ SFX_DONH3EB,
+ SFX_DONH3EC,
+ SFX_DONH3ED,
+ SFX_DONH3EE,
+ SFX_DONH3EF,
+ SFX_DONH3FA,
+ SFX_DONH3GA,
+ SFX_DONH3GB,
+ SFX_DONH3GC,
+ SFX_DONH3GD,
+ SFX_DONH3GE,
+ SFX_DONH3GF,
+ SFX_DONH3HA,
+ SFX_DONH3HB,
+ SFX_DONH3IA,
+ SFX_DONH3JA,
+ SFX_DONH4AA,
+ SFX_DONH4AB,
+ SFX_DONH4AC,
+ SFX_DONH4AD,
+ SFX_DONH4AE,
+ SFX_DONH4AF,
+ SFX_DONH4AG,
+ SFX_DONH4AH,
+ SFX_DONH4AI,
+ SFX_DONH4AJ,
+ SFX_DONH5AA,
+ SFX_DONH5AB,
+ SFX_DONH5AC,
+ SFX_DONH5AD,
+ SFX_DONH5AE,
+ SFX_DONH5AF,
+ SFX_DONH5AG,
+ SFX_DONH5AH,
+ SFX_DONH5AI,
+ SFX_DONH5AJ,
+ SFX_DONH5BA,
+ SFX_DONH5CA,
+ SFX_DONH5CB,
+ SFX_DONH6BA,
+ SFX_DONH6CA,
+ SFX_DONH6CB,
+ SFX_DONH6DA,
+ SFX_DONH6DB,
+ SFX_DONH6EA,
+ SFX_DONH6EB,
+ SFX_DONH6EC,
+ SFX_DONH6FA,
+ SFX_DONH6GA,
+ SFX_DONH6GB,
+ SFX_DONH6GC,
+ SFX_DONH6GD,
+ SFX_DONH6GF,
+ SFX_DONS1AA,
+ SFX_DONS1AB,
+ SFX_DONS1AC,
+ SFX_DONS1BA,
+ SFX_DONS1BB,
+ SFX_DONS2AA,
+ SFX_DONS2AB,
+ SFX_DONS2AC,
+ SFX_DONS2AD,
+ SFX_DONS2AE,
+ SFX_DONS2AF,
+ SFX_DONS2BA,
+ SFX_DONS2BB,
+ SFX_DONS2BC,
+ SFX_DONS2BD,
+ SFX_DONS2BE,
+ SFX_DONS2CA,
+ SFX_DONS2CB,
+ SFX_DONS2CC,
+ SFX_DONS2CD,
+ SFX_DONS2CE,
+ SFX_DONS2CF,
+ SFX_DONS2CG,
+ SFX_DONS2CH,
+ SFX_DONS2CI,
+ SFX_DONS2CJ,
+ SFX_DONS2CK,
+ SFX_DONS2CL,
+ SFX_DONS2CM,
+ SFX_DONS2CN,
+ SFX_DONS4AA,
+ SFX_DONS4AB,
+ SFX_DONS4AC,
+ SFX_DONS4AD,
+ SFX_DONS4AE,
+ SFX_DONS4AF,
+ SFX_DONS5AA,
+ SFX_DONS5AB,
+ SFX_DONS5AC,
+ SFX_DONS5AD,
+ SFX_DONS5AE,
+ SFX_DONS5BA,
+ SFX_DONS5BB,
+ SFX_DONS5BC,
+ SFX_DONS5BD,
+ SFX_DONS5BE,
+ SFX_DONS5CA,
+ SFX_DONS5DA,
+ SFX_DONS5EA,
+ SFX_DONS5EB,
+ SFX_DONS6AA,
+ SFX_DONS6AB,
+ SFX_DONS6AC,
+ SFX_DONS6AD,
+ SFX_DONS6AE,
+ SFX_DONS6AF,
+ SFX_DONS6AG,
+ SFX_DONS7AA,
+ SFX_DONS7AB,
+ SFX_DONS7AC,
+ SFX_DONS7AD,
+ SFX_DONS7AE,
+ SFX_DONS7AF,
+ SFX_DONS7AG,
+ SFX_DONS7CA,
+ SFX_DONS7CB,
+ SFX_DONS7CC,
+ SFX_DONS7CD,
+ SFX_DONS7CE,
+ SFX_DRKNOCK,
+ SFX_FAN_MAN1_BUMP_1,
+ SFX_FAN_MAN1_BUMP_2,
+ SFX_FAN_MAN1_BUMP_3,
+ SFX_FAN_MAN1_CHAT_1,
+ SFX_FAN_MAN1_CHAT_2,
+ SFX_FAN_MAN1_CHAT_3,
+ SFX_FAN_MAN1_CHAT_4,
+ SFX_FAN_MAN1_CRASH_CAR_1,
+ SFX_FAN_MAN1_CRASH_CAR_2,
+ SFX_FAN_MAN1_DODGE_1,
+ SFX_FAN_MAN1_DRIVER_BLOCKED_1,
+ SFX_FAN_MAN1_DRIVER_BLOCKED_2,
+ SFX_FAN_MAN1_FIGHT_1,
+ SFX_FAN_MAN1_FIGHT_2,
+ SFX_FAN_MAN1_FIGHT_3,
+ SFX_FAN_MAN1_GUN_THREATENED_1,
+ SFX_FAN_MAN1_GUN_THREATENED_2,
+ SFX_FAN_MAN1_JACKED_CAR_1,
+ SFX_FAN_MAN1_JACKED_CAR_2,
+ SFX_FAN_MAN1_JACKED_CAR_3,
+ SFX_FAN_MAN1_SHOCKED_1,
+ SFX_FAN_MAN2_BUMP_1,
+ SFX_FAN_MAN2_BUMP_2,
+ SFX_FAN_MAN2_BUMP_3,
+ SFX_FAN_MAN2_CHAT_1,
+ SFX_FAN_MAN2_CHAT_2,
+ SFX_FAN_MAN2_CHAT_3,
+ SFX_FAN_MAN2_CHAT_4,
+ SFX_FAN_MAN2_CRASH_CAR_1,
+ SFX_FAN_MAN2_CRASH_CAR_2,
+ SFX_FAN_MAN2_DODGE_1,
+ SFX_FAN_MAN2_DODGE_2,
+ SFX_FAN_MAN2_DRIVER_BLOCKED_1,
+ SFX_FAN_MAN2_DRIVER_BLOCKED_2,
+ SFX_FAN_MAN2_FIGHT_1,
+ SFX_FAN_MAN2_FIGHT_2,
+ SFX_FAN_MAN2_FIGHT_3,
+ SFX_FAN_MAN2_GUN_THREATENED_1,
+ SFX_FAN_MAN2_GUN_THREATENED_2,
+ SFX_FAN_MAN2_JACKED_CAR_1,
+ SFX_FAN_MAN2_JACKED_CAR_2,
+ SFX_FAN_MAN2_JACKED_CAR_3,
+ SFX_FAN_MAN2_SHOCKED_1,
+ SFX_FAN_WOM_BUMP_1,
+ SFX_FAN_WOM_BUMP_2,
+ SFX_FAN_WOM_BUMP_3,
+ SFX_FAN_WOM_CHAT_1,
+ SFX_FAN_WOM_CHAT_2,
+ SFX_FAN_WOM_CHAT_3,
+ SFX_FAN_WOM_CHAT_4,
+ SFX_FAN_WOM_CRASH_CAR_1,
+ SFX_FAN_WOM_CRASH_CAR_2,
+ SFX_FAN_WOM_DODGE_1,
+ SFX_FAN_WOM_DODGE_2,
+ SFX_FAN_WOM_DRIVER_BLOCKED_1,
+ SFX_FAN_WOM_DRIVER_BLOCKED_2,
+ SFX_FAN_WOM_FIGHT_1,
+ SFX_FAN_WOM_FIGHT_2,
+ SFX_FAN_WOM_FIGHT_3,
+ SFX_FAN_WOM_GUN_THREATENED_1,
+ SFX_FAN_WOM_GUN_THREATENED_2,
+ SFX_FAN_WOM_JACKED_CAR_1,
+ SFX_FAN_WOM_JACKED_CAR_2,
+ SFX_FAN_WOM_JACKED_CAR_3,
+ SFX_FAN_WOM_SHOCKED_1,
+ SFX_FATFEMALE01_BUMP_1,
+ SFX_FATFEMALE01_BUMP_2,
+ SFX_FATFEMALE01_BUMP_3,
+ SFX_FATFEMALE01_CHAT_1,
+ SFX_FATFEMALE01_CHAT_2,
+ SFX_FATFEMALE01_CHAT_3,
+ SFX_FATFEMALE01_CHAT_4,
+ SFX_FATFEMALE01_CRASH_CAR_1,
+ SFX_FATFEMALE01_CRASH_CAR_2,
+ SFX_FATFEMALE01_DODGE_1,
+ SFX_FATFEMALE01_DODGE_2,
+ SFX_FATFEMALE01_DRIVER_BLOCKED_1,
+ SFX_FATFEMALE01_DRIVER_BLOCKED_2,
+ SFX_FATFEMALE01_FIGHT_1,
+ SFX_FATFEMALE01_FIGHT_2,
+ SFX_FATFEMALE01_FIGHT_3,
+ SFX_FATFEMALE01_FIGHT_4,
+ SFX_FATFEMALE01_GUN_THREATENED_1,
+ SFX_FATFEMALE01_GUN_THREATENED_2,
+ SFX_FATFEMALE01_JACKED_CAR_1,
+ SFX_FATFEMALE01_JACKED_CAR_2,
+ SFX_FATFEMALE01_JACKED_CAR_3,
+ SFX_FATFEMALE01_SHOCKED_1,
+ SFX_FATFEMALE02_BUMP_1,
+ SFX_FATFEMALE02_BUMP_2,
+ SFX_FATFEMALE02_BUMP_3,
+ SFX_FATFEMALE02_CHAT_1,
+ SFX_FATFEMALE02_CHAT_2,
+ SFX_FATFEMALE02_CHAT_3,
+ SFX_FATFEMALE02_CHAT_4,
+ SFX_FATFEMALE02_CRASH_CAR_1,
+ SFX_FATFEMALE02_CRASH_CAR_2,
+ SFX_FATFEMALE02_DODGE_1,
+ SFX_FATFEMALE02_DODGE_2,
+ SFX_FATFEMALE02_DRIVER_BLOCKED_1,
+ SFX_FATFEMALE02_DRIVER_BLOCKED_2,
+ SFX_FATFEMALE02_FIGHT_1,
+ SFX_FATFEMALE02_FIGHT_2,
+ SFX_FATFEMALE02_FIGHT_3,
+ SFX_FATFEMALE02_GUN_THREATENED_1,
+ SFX_FATFEMALE02_GUN_THREATENED_2,
+ SFX_FATFEMALE02_JACKED_CAR_1,
+ SFX_FATFEMALE02_JACKED_CAR_2,
+ SFX_FATFEMALE02_JACKED_CAR_3,
+ SFX_FATFEMALE02_SHOCKED_1,
+ SFX_FATMALE_BUMP_1,
+ SFX_FATMALE_BUMP_2,
+ SFX_FATMALE_BUMP_3,
+ SFX_FATMALE_CHAT_1,
+ SFX_FATMALE_CHAT_2,
+ SFX_FATMALE_CHAT_3,
+ SFX_FATMALE_CHAT_4,
+ SFX_FATMALE_CRASH_CAR_1,
+ SFX_FATMALE_CRASH_CAR_2,
+ SFX_FATMALE_DODGE_1,
+ SFX_FATMALE_DODGE_2,
+ SFX_FATMALE_DRIVER_BLOCKED_1,
+ SFX_FATMALE_DRIVER_BLOCKED_2,
+ SFX_FATMALE_FIGHT_1,
+ SFX_FATMALE_FIGHT_2,
+ SFX_FATMALE_FIGHT_3,
+ SFX_FATMALE_GUN_THREATENED_1,
+ SFX_FATMALE_GUN_THREATENED_2,
+ SFX_FATMALE_JACKED_CAR_1,
+ SFX_FATMALE_JACKED_CAR_2,
+ SFX_FATMALE_JACKED_CAR_3,
+ SFX_FATMALE_SHOCKED_1,
+ SFX_FBI_VOICE_1_SHOOT_1,
+ SFX_FBI_VOICE_1_SHOOT_2,
+ SFX_FBI_VOICE_1_SHOOT_3,
+ SFX_FBI_VOICE_1_SHOOT_4,
+ SFX_FBI_VOICE_1_SHOOT_5,
+ SFX_FBI_VOICE_1_VAN_1,
+ SFX_FBI_VOICE_1_VAN_2,
+ SFX_FBI_VOICE_2_SHOOT_1,
+ SFX_FBI_VOICE_2_SHOOT_2,
+ SFX_FBI_VOICE_2_SHOOT_3,
+ SFX_FBI_VOICE_2_SHOOT_4,
+ SFX_FBI_VOICE_2_SHOOT_5,
+ SFX_FBI_VOICE_2_VAN_1,
+ SFX_FBI_VOICE_2_VAN_2,
+ SFX_FEMALE01_BUMP_1,
+ SFX_FEMALE01_BUMP_2,
+ SFX_FEMALE01_BUMP_3,
+ SFX_FEMALE01_CHAT_1,
+ SFX_FEMALE01_CHAT_2,
+ SFX_FEMALE01_CHAT_3,
+ SFX_FEMALE01_CHAT_4,
+ SFX_FEMALE01_CRASH_CAR_1,
+ SFX_FEMALE01_CRASH_CAR_2,
+ SFX_FEMALE01_DODGE_1,
+ SFX_FEMALE01_DODGE_2,
+ SFX_FEMALE01_DRIVER_BLOCKED_1,
+ SFX_FEMALE01_DRIVER_BLOCKED_2,
+ SFX_FEMALE01_FIGHT_1,
+ SFX_FEMALE01_FIGHT_2,
+ SFX_FEMALE01_FIGHT_3,
+ SFX_FEMALE01_GUN_THREATENED_1,
+ SFX_FEMALE01_GUN_THREATENED_2,
+ SFX_FEMALE01_SHOCKED_1,
+ SFX_FEMALE01_SPECIAL_CASE_1,
+ SFX_FEMALE01_SPECIAL_CASE_2,
+ SFX_FEMALE01_SPECIAL_CASE_3,
+ SFX_FEMALE02_BUMP_1,
+ SFX_FEMALE02_BUMP_2,
+ SFX_FEMALE02_CHAT_1,
+ SFX_FEMALE02_CHAT_2,
+ SFX_FEMALE02_CHAT_3,
+ SFX_FEMALE02_CRASH_CAR_1,
+ SFX_FEMALE02_DODGE_1,
+ SFX_FEMALE02_DODGE_2,
+ SFX_FEMALE02_DRIVER_BLOCKED_1,
+ SFX_FEMALE02_DRIVER_BLOCKED_2,
+ SFX_FEMALE02_FIGHT_1,
+ SFX_FEMALE02_FIGHT_2,
+ SFX_FEMALE02_GUN_THREATENED_1,
+ SFX_FEMALE02_GUN_THREATENED_2,
+ SFX_FEMALE02_JACKED_CAR_1,
+ SFX_FEMALE02_JACKED_CAR_2,
+ SFX_FEMALE02_JACKED_CAR_3,
+ SFX_FEMALE02_SHOCKED_1,
+ SFX_FEMALE03_BUMP_1,
+ SFX_FEMALE03_BUMP_2,
+ SFX_FEMALE03_BUMP_3,
+ SFX_FEMALE03_CHAT_1,
+ SFX_FEMALE03_CHAT_2,
+ SFX_FEMALE03_CRASH_CAR_1,
+ SFX_FEMALE03_CRASH_CAR_2,
+ SFX_FEMALE03_CRASH_CAR_3,
+ SFX_FEMALE03_DODGE_1,
+ SFX_FEMALE03_DODGE_2,
+ SFX_FEMALE03_DRIVER_BLOCKED_1,
+ SFX_FEMALE03_FIGHT_1,
+ SFX_FEMALE03_FIGHT_2,
+ SFX_FEMALE03_FIGHT_3,
+ SFX_FEMALE03_GUN_THREATENED_1,
+ SFX_FEMALE03_GUN_THREATENED_2,
+ SFX_FEMALE03_JACKED_CAR_1,
+ SFX_FEMALE03_JACKED_CAR_2,
+ SFX_FEMALE03_JACKED_CAR_3,
+ SFX_FEMALE03_SHOCKED_1,
+ SFX_FEMALE_DEATH_01,
+ SFX_FEMALE_DEATH_02,
+ SFX_FEMALE_DEATH_03,
+ SFX_FEMALE_DEATH_04,
+ SFX_FEMALE_DEATH_05,
+ SFX_FEMALE_DEATH_06,
+ SFX_FEMALE_DEATH_07,
+ SFX_FEMALE_DEATH_08,
+ SFX_FEMALE_DEATH_09,
+ SFX_FEMALE_DEATH_10,
+ SFX_FEMALE_DEATH_11,
+ SFX_FEMALE_DEATH_12,
+ SFX_FEMALE_DEATH_13,
+ SFX_FEMALE_DEATH_14,
+ SFX_FEMALE_DEATH_15,
+ SFX_FEMALE_DEATH_16,
+ SFX_FEMALE_PAIN_01,
+ SFX_FEMALE_PAIN_02,
+ SFX_FEMALE_PAIN_03,
+ SFX_FEMALE_PAIN_04,
+ SFX_FEMALE_PAIN_05,
+ SFX_FEMALE_PAIN_06,
+ SFX_FEMALE_PAIN_07,
+ SFX_FEMALE_PAIN_08,
+ SFX_FEMALE_PAIN_09,
+ SFX_FEMALE_PAIN_10,
+ SFX_FEMALE_PAIN_11,
+ SFX_FEMALE_PAIN_12,
+ SFX_FEMALE_PAIN_13,
+ SFX_FEMALE_PAIN_14,
+ SFX_FEMALE_PAIN_15,
+ SFX_FEMALE_PAIN_16,
+ SFX_FEMALE_PAIN_17,
+ SFX_FEMALE_PAIN_18,
+ SFX_FEMALE_PAIN_19,
+ SFX_FEMALE_PAIN_20,
+ SFX_FEMALE_PAIN_21,
+ SFX_FEMALE_PAIN_22,
+ SFX_FEMALE_PAIN_23,
+ SFX_FEMALE_PAIN_24,
+ SFX_FEMALE_PAIN_25,
+ SFX_FEMALE_PAIN_26,
+ SFX_FEMALE_PAIN_27,
+ SFX_FEMALE_PAIN_28,
+ SFX_FEMALE_PAIN_29,
+ SFX_FEMALE_PAIN_30,
+ SFX_FEMALE_PAIN_31,
+ SFX_FEMALE_PAIN_32,
+ SFX_FEMALE_PAIN_33,
+ SFX_FEMALE_PAIN_34,
+ SFX_FEMALE_PAIN_ON_FIRE_01,
+ SFX_FEMALE_PAIN_ON_FIRE_02,
+ SFX_FEMALE_PAIN_ON_FIRE_03,
+ SFX_FEMALE_PAIN_ON_FIRE_04,
+ SFX_FEMALE_PAIN_ON_FIRE_05,
+ SFX_FEMALE_PAIN_ON_FIRE_06,
+ SFX_FEMALE_PAIN_ON_FIRE_07,
+ SFX_FEMALE_PAIN_ON_FIRE_08,
+ SFX_FEMALE_PAIN_ON_FIRE_09,
+ SFX_FEMALE_PAIN_ON_FIRE_10,
+ SFX_FEMALE_PAIN_ON_FIRE_11,
+ SFX_FEMALE_PANIC_01,
+ SFX_FEMALE_PANIC_02,
+ SFX_FEMALE_PANIC_03,
+ SFX_FEMALE_PANIC_04,
+ SFX_FEMALE_PANIC_05,
+ SFX_FEMALE_PANIC_06,
+ SFX_FEMALE_PANIC_07,
+ SFX_FEMALE_PANIC_08,
+ SFX_FEMALE_PANIC_09,
+ SFX_FEMALE_PANIC_10,
+ SFX_FEMALE_PANIC_11,
+ SFX_FEMALE_PANIC_12,
+ SFX_FEMALE_PANIC_13,
+ SFX_FEMALE_SEX_01,
+ SFX_FEMALE_SEX_02,
+ SFX_FEMALE_SEX_03,
+ SFX_FEMALE_SEX_04,
+ SFX_FEMALE_SEX_05,
+ SFX_FEMALE_SEX_06,
+ SFX_FEMALE_SEX_07,
+ SFX_FEMALE_SEX_08,
+ SFX_FEMALE_SEX_09,
+ SFX_FEMALE_SEX_10,
+ SFX_FEMALE_SEX_11,
+ SFX_GANG01_BUMP_1,
+ SFX_GANG01_BUMP_2,
+ SFX_GANG01_BUMP_3,
+ SFX_GANG01_CHAT_1,
+ SFX_GANG01_CHAT_2,
+ SFX_GANG01_CHAT_3,
+ SFX_GANG01_CRASH_CAR_1,
+ SFX_GANG01_CRASH_CAR_2,
+ SFX_GANG01_DODGE_1,
+ SFX_GANG01_DODGE_2,
+ SFX_GANG01_DRIVER_BLOCKED_1,
+ SFX_GANG01_DRIVER_BLOCKED_2,
+ SFX_GANG01_FIGHT_1,
+ SFX_GANG01_FIGHT_2,
+ SFX_GANG01_GUN_THREATENED_1,
+ SFX_GANG01_GUN_THREATENED_2,
+ SFX_GANG01_JACKED_CAR_1,
+ SFX_GANG01_JACKED_CAR_2,
+ SFX_GANG01_JACKING_1,
+ SFX_GANG01_JACKING_2,
+ SFX_GANG01_SHOOT_1,
+ SFX_GANG01_SHOOT_2,
+ SFX_GANG01_SHOOT_3,
+ SFX_GANG01_SHOOT_4,
+ SFX_GANG01_SHOOT_5,
+ SFX_GANG02_BUMP_1,
+ SFX_GANG02_BUMP_2,
+ SFX_GANG02_BUMP_3,
+ SFX_GANG02_CHAT_1,
+ SFX_GANG02_CHAT_2,
+ SFX_GANG02_CRASH_CAR_1,
+ SFX_GANG02_CRASH_CAR_2,
+ SFX_GANG02_DODGE_1,
+ SFX_GANG02_DODGE_2,
+ SFX_GANG02_DRIVER_BLOCKED_1,
+ SFX_GANG02_DRIVER_BLOCKED_2,
+ SFX_GANG02_FIGHT_1,
+ SFX_GANG02_FIGHT_2,
+ SFX_GANG02_GUN_THREATENED_1,
+ SFX_GANG02_GUN_THREATENED_2,
+ SFX_GANG02_JACKED_CAR_1,
+ SFX_GANG02_JACKED_CAR_2,
+ SFX_GANG02_JACKING_1,
+ SFX_GANG02_JACKING_2,
+ SFX_GANG02_SHOOT_1,
+ SFX_GANG02_SHOOT_2,
+ SFX_GANG02_SHOOT_3,
+ SFX_GANG02_SHOOT_4,
+ SFX_GANG02_SHOOT_5,
+ SFX_GANG03_BUMP_1,
+ SFX_GANG03_BUMP_2,
+ SFX_GANG03_BUMP_3,
+ SFX_GANG03_CHAT_1,
+ SFX_GANG03_CHAT_2,
+ SFX_GANG03_CHAT_3,
+ SFX_GANG03_CHAT_4,
+ SFX_GANG03_CRASH_CAR_1,
+ SFX_GANG03_CRASH_CAR_2,
+ SFX_GANG03_CRASH_CAR_3,
+ SFX_GANG03_DODGE_1,
+ SFX_GANG03_DODGE_2,
+ SFX_GANG03_DRIVER_BLOCKED_1,
+ SFX_GANG03_DRIVER_BLOCKED_2,
+ SFX_GANG03_FIGHT_1,
+ SFX_GANG03_FIGHT_2,
+ SFX_GANG03_FIGHT_3,
+ SFX_GANG03_GUN_THREATENED_1,
+ SFX_GANG03_GUN_THREATENED_2,
+ SFX_GANG03_JACKED_CAR_1,
+ SFX_GANG03_JACKED_CAR_2,
+ SFX_GANG03_SHOOT_1,
+ SFX_GANG03_SHOOT_2,
+ SFX_GANG03_SHOOT_3,
+ SFX_GANG03_SHOOT_4,
+ SFX_GANG04_BUMP_1,
+ SFX_GANG04_BUMP_2,
+ SFX_GANG04_BUMP_3,
+ SFX_GANG04_CHAT_1,
+ SFX_GANG04_CHAT_2,
+ SFX_GANG04_CRASH_CAR_1,
+ SFX_GANG04_CRASH_CAR_2,
+ SFX_GANG04_DODGE_1,
+ SFX_GANG04_DODGE_2,
+ SFX_GANG04_DRIVER_BLOCKED_1,
+ SFX_GANG04_DRIVER_BLOCKED_2,
+ SFX_GANG04_FIGHT_1,
+ SFX_GANG04_FIGHT_2,
+ SFX_GANG04_GUN_THREATENED_1,
+ SFX_GANG04_GUN_THREATENED_2,
+ SFX_GANG04_JACKED_CAR_1,
+ SFX_GANG04_JACKED_CAR_2,
+ SFX_GANG04_JACKING_1,
+ SFX_GANG04_JACKING_2,
+ SFX_GANG04_SHOOT_1,
+ SFX_GANG04_SHOOT_2,
+ SFX_GANG04_SHOOT_3,
+ SFX_GANG04_SHOOT_4,
+ SFX_GANG04_SHOOT_5,
+ SFX_GANG05_BUMP_1,
+ SFX_GANG05_BUMP_2,
+ SFX_GANG05_BUMP_3,
+ SFX_GANG05_CHAT_1,
+ SFX_GANG05_CHAT_2,
+ SFX_GANG05_CHAT_3,
+ SFX_GANG05_CRASH_CAR_1,
+ SFX_GANG05_CRASH_CAR_2,
+ SFX_GANG05_DODGE_1,
+ SFX_GANG05_DODGE_2,
+ SFX_GANG05_DRIVER_BLOCKED_1,
+ SFX_GANG05_DRIVER_BLOCKED_2,
+ SFX_GANG05_FIGHT_1,
+ SFX_GANG05_FIGHT_2,
+ SFX_GANG05_GUN_THREATENED_1,
+ SFX_GANG05_GUN_THREATENED_2,
+ SFX_GANG05_JACKED_CAR_1,
+ SFX_GANG05_JACKED_CAR_2,
+ SFX_GANG05_JACKING_1,
+ SFX_GANG05_JACKING_2,
+ SFX_GANG05_SHOOT_1,
+ SFX_GANG05_SHOOT_2,
+ SFX_GANG05_SHOOT_3,
+ SFX_GANG05_SHOOT_4,
+ SFX_GANG06_BUMP_1,
+ SFX_GANG06_BUMP_2,
+ SFX_GANG06_BUMP_3,
+ SFX_GANG06_CHAT_1,
+ SFX_GANG06_CHAT_2,
+ SFX_GANG06_CHAT_3,
+ SFX_GANG06_CRASH_CAR_1,
+ SFX_GANG06_CRASH_CAR_2,
+ SFX_GANG06_DODGE_1,
+ SFX_GANG06_DODGE_2,
+ SFX_GANG06_DRIVER_BLOCKED_1,
+ SFX_GANG06_DRIVER_BLOCKED_2,
+ SFX_GANG06_FIGHT_1,
+ SFX_GANG06_FIGHT_2,
+ SFX_GANG06_GUN_THREATENED_1,
+ SFX_GANG06_GUN_THREATENED_2,
+ SFX_GANG06_JACKED_CAR_1,
+ SFX_GANG06_JACKED_CAR_2,
+ SFX_GANG06_JACKING_1,
+ SFX_GANG06_JACKING_2,
+ SFX_GANG06_SHOOT_1,
+ SFX_GANG06_SHOOT_2,
+ SFX_GANG06_SHOOT_3,
+ SFX_GANG06_SHOOT_4,
+ SFX_GANG06_SHOOT_5,
+ SFX_GANG07_BUMP_1,
+ SFX_GANG07_BUMP_2,
+ SFX_GANG07_BUMP_3,
+ SFX_GANG07_CHAT_1,
+ SFX_GANG07_CHAT_2,
+ SFX_GANG07_CRASH_CAR_1,
+ SFX_GANG07_CRASH_CAR_2,
+ SFX_GANG07_DODGE_1,
+ SFX_GANG07_DODGE_2,
+ SFX_GANG07_DRIVER_BLOCKED_1,
+ SFX_GANG07_DRIVER_BLOCKED_2,
+ SFX_GANG07_FIGHT_1,
+ SFX_GANG07_FIGHT_2,
+ SFX_GANG07_GUN_THREATENED_1,
+ SFX_GANG07_GUN_THREATENED_2,
+ SFX_GANG07_JACKED_CAR_1,
+ SFX_GANG07_JACKED_CAR_2,
+ SFX_GANG07_JACKING_1,
+ SFX_GANG07_SHOOT_1,
+ SFX_GANG07_SHOOT_2,
+ SFX_GANG07_SHOOT_3,
+ SFX_GANG07_SHOOT_4,
+ SFX_GANG08_BUMP_1,
+ SFX_GANG08_BUMP_2,
+ SFX_GANG08_BUMP_3,
+ SFX_GANG08_CHAT_1,
+ SFX_GANG08_CHAT_2,
+ SFX_GANG08_CRASH_CAR_1,
+ SFX_GANG08_CRASH_CAR_2,
+ SFX_GANG08_DODGE_1,
+ SFX_GANG08_DODGE_2,
+ SFX_GANG08_DRIVER_BLOCKED_1,
+ SFX_GANG08_DRIVER_BLOCKED_2,
+ SFX_GANG08_FIGHT_1,
+ SFX_GANG08_FIGHT_2,
+ SFX_GANG08_GUN_THREATENED_1,
+ SFX_GANG08_GUN_THREATENED_2,
+ SFX_GANG08_JACKED_CAR_1,
+ SFX_GANG08_JACKED_CAR_2,
+ SFX_GANG08_JACKING_1,
+ SFX_GANG08_JACKING_2,
+ SFX_GANG08_SHOOT_1,
+ SFX_GANG08_SHOOT_2,
+ SFX_GANG08_SHOOT_3,
+ SFX_GANG08_SHOOT_4,
+ SFX_GANG08_SHOOT_5,
+ SFX_GANG09_BUMP_1,
+ SFX_GANG09_BUMP_2,
+ SFX_GANG09_BUMP_3,
+ SFX_GANG09_CHAT_1,
+ SFX_GANG09_CHAT_2,
+ SFX_GANG09_CHAT_3,
+ SFX_GANG09_CRASH_CAR_1,
+ SFX_GANG09_CRASH_CAR_2,
+ SFX_GANG09_DODGE_1,
+ SFX_GANG09_DODGE_2,
+ SFX_GANG09_DRIVER_BLOCKED_1,
+ SFX_GANG09_DRIVER_BLOCKED_2,
+ SFX_GANG09_FIGHT_1,
+ SFX_GANG09_FIGHT_2,
+ SFX_GANG09_GUN_THREATENED_1,
+ SFX_GANG09_GUN_THREATENED_2,
+ SFX_GANG09_JACKED_CAR_1,
+ SFX_GANG09_JACKED_CAR_2,
+ SFX_GANG09_JACKING_1,
+ SFX_GANG09_JACKING_2,
+ SFX_GANG09_SHOOT_1,
+ SFX_GANG09_SHOOT_2,
+ SFX_GANG09_SHOOT_3,
+ SFX_GANG09_SHOOT_4,
+ SFX_GANG09_SHOOT_5,
+ SFX_GANG10_BUMP_1,
+ SFX_GANG10_BUMP_2,
+ SFX_GANG10_BUMP_3,
+ SFX_GANG10_CHAT_1,
+ SFX_GANG10_CHAT_2,
+ SFX_GANG10_CHAT_3,
+ SFX_GANG10_CRASH_CAR_1,
+ SFX_GANG10_CRASH_CAR_2,
+ SFX_GANG10_DODGE_1,
+ SFX_GANG10_DODGE_2,
+ SFX_GANG10_DRIVER_BLOCKED_1,
+ SFX_GANG10_DRIVER_BLOCKED_2,
+ SFX_GANG10_FIGHT_1,
+ SFX_GANG10_FIGHT_2,
+ SFX_GANG10_GUN_THREATENED_1,
+ SFX_GANG10_GUN_THREATENED_2,
+ SFX_GANG10_JACKED_CAR_1,
+ SFX_GANG10_JACKED_CAR_2,
+ SFX_GANG10_JACKING_1,
+ SFX_GANG10_JACKING_2,
+ SFX_GANG10_SHOOT_1,
+ SFX_GANG10_SHOOT_2,
+ SFX_GANG10_SHOOT_3,
+ SFX_GANG10_SHOOT_4,
+ SFX_GANG10_SHOOT_5,
+ SFX_GANG11_BUMP_1,
+ SFX_GANG11_BUMP_2,
+ SFX_GANG11_BUMP_3,
+ SFX_GANG11_CHAT_1,
+ SFX_GANG11_CHAT_2,
+ SFX_GANG11_CRASH_CAR_1,
+ SFX_GANG11_CRASH_CAR_2,
+ SFX_GANG11_DODGE_1,
+ SFX_GANG11_DODGE_2,
+ SFX_GANG11_DRIVER_BLOCKED_1,
+ SFX_GANG11_DRIVER_BLOCKED_2,
+ SFX_GANG11_FIGHT_1,
+ SFX_GANG11_FIGHT_2,
+ SFX_GANG11_GUN_THREATENED_1,
+ SFX_GANG11_GUN_THREATENED_2,
+ SFX_GANG11_JACKED_CAR_1,
+ SFX_GANG11_JACKED_CAR_2,
+ SFX_GANG11_JACKING_1,
+ SFX_GANG11_JACKING_2,
+ SFX_GANG11_SHOOT_1,
+ SFX_GANG11_SHOOT_2,
+ SFX_GANG11_SHOOT_3,
+ SFX_GANG11_SHOOT_4,
+ SFX_GANG11_SHOOT_5,
+ SFX_GANG12_BUMP_1,
+ SFX_GANG12_BUMP_2,
+ SFX_GANG12_BUMP_3,
+ SFX_GANG12_CHAT_1,
+ SFX_GANG12_CHAT_2,
+ SFX_GANG12_CHAT_3,
+ SFX_GANG12_CRASH_CAR_1,
+ SFX_GANG12_CRASH_CAR_2,
+ SFX_GANG12_DODGE_1,
+ SFX_GANG12_DODGE_2,
+ SFX_GANG12_DRIVER_BLOCKED_1,
+ SFX_GANG12_DRIVER_BLOCKED_2,
+ SFX_GANG12_FIGHT_1,
+ SFX_GANG12_FIGHT_2,
+ SFX_GANG12_GUN_THREATENED_1,
+ SFX_GANG12_GUN_THREATENED_2,
+ SFX_GANG12_JACKED_CAR_1,
+ SFX_GANG12_JACKED_CAR_2,
+ SFX_GANG12_JACKING_1,
+ SFX_GANG12_JACKING_2,
+ SFX_GANG12_SHOOT_1,
+ SFX_GANG12_SHOOT_2,
+ SFX_GANG12_SHOOT_3,
+ SFX_GANG12_SHOOT_4,
+ SFX_GANG12_SHOOT_5,
+ SFX_GANG13_BUMP_1,
+ SFX_GANG13_BUMP_2,
+ SFX_GANG13_BUMP_3,
+ SFX_GANG13_CHAT_1,
+ SFX_GANG13_CHAT_2,
+ SFX_GANG13_CRASH_CAR_1,
+ SFX_GANG13_CRASH_CAR_2,
+ SFX_GANG13_DODGE_1,
+ SFX_GANG13_DODGE_2,
+ SFX_GANG13_DRIVER_BLOCKED_1,
+ SFX_GANG13_DRIVER_BLOCKED_2,
+ SFX_GANG13_FIGHT_1,
+ SFX_GANG13_FIGHT_2,
+ SFX_GANG13_GUN_THREATENED_1,
+ SFX_GANG13_GUN_THREATENED_2,
+ SFX_GANG13_JACKED_CAR_1,
+ SFX_GANG13_JACKED_CAR_2,
+ SFX_GANG13_JACKING_1,
+ SFX_GANG13_JACKING_2,
+ SFX_GANG13_SHOOT_1,
+ SFX_GANG13_SHOOT_2,
+ SFX_GANG13_SHOOT_3,
+ SFX_GANG13_SHOOT_4,
+ SFX_GANG13_SHOOT_5,
+ SFX_GANG14_BUMP_1,
+ SFX_GANG14_BUMP_2,
+ SFX_GANG14_BUMP_3,
+ SFX_GANG14_CHAT_1,
+ SFX_GANG14_CHAT_2,
+ SFX_GANG14_CHAT_3,
+ SFX_GANG14_CRASH_CAR_1,
+ SFX_GANG14_CRASH_CAR_2,
+ SFX_GANG14_DODGE_1,
+ SFX_GANG14_DODGE_2,
+ SFX_GANG14_DRIVER_BLOCKED_1,
+ SFX_GANG14_DRIVER_BLOCKED_2,
+ SFX_GANG14_FIGHT_1,
+ SFX_GANG14_FIGHT_2,
+ SFX_GANG14_GUN_THREATENED_1,
+ SFX_GANG14_GUN_THREATENED_2,
+ SFX_GANG14_JACKED_CAR_1,
+ SFX_GANG14_JACKED_CAR_2,
+ SFX_GANG14_JACKING_1,
+ SFX_GANG14_JACKING_2,
+ SFX_GANG14_SHOOT_1,
+ SFX_GANG14_SHOOT_2,
+ SFX_GANG14_SHOOT_3,
+ SFX_GANG14_SHOOT_4,
+ SFX_GANG14_SHOOT_5,
+ SFX_GANG15_BUMP_1,
+ SFX_GANG15_BUMP_2,
+ SFX_GANG15_BUMP_3,
+ SFX_GANG15_CHAT_1,
+ SFX_GANG15_CHAT_2,
+ SFX_GANG15_CHAT_3,
+ SFX_GANG15_CRASH_CAR_1,
+ SFX_GANG15_CRASH_CAR_2,
+ SFX_GANG15_DODGE_1,
+ SFX_GANG15_DODGE_2,
+ SFX_GANG15_DRIVER_BLOCKED_1,
+ SFX_GANG15_DRIVER_BLOCKED_2,
+ SFX_GANG15_FIGHT_1,
+ SFX_GANG15_FIGHT_2,
+ SFX_GANG15_GUN_THREATENED_1,
+ SFX_GANG15_GUN_THREATENED_2,
+ SFX_GANG15_JACKING_1,
+ SFX_GANG15_JACKING_2,
+ SFX_GANG15_JACKING_CAR_1,
+ SFX_GANG15_JACKING_CAR_2,
+ SFX_GANG15_SHOOT_1,
+ SFX_GANG15_SHOOT_2,
+ SFX_GANG15_SHOOT_3,
+ SFX_GANG15_SHOOT_4,
+ SFX_GANG16_BUMP_1,
+ SFX_GANG16_BUMP_2,
+ SFX_GANG16_BUMP_3,
+ SFX_GANG16_CHAT_1,
+ SFX_GANG16_CHAT_2,
+ SFX_GANG16_CRASH_CAR_1,
+ SFX_GANG16_CRASH_CAR_2,
+ SFX_GANG16_DODGE_1,
+ SFX_GANG16_DODGE_2,
+ SFX_GANG16_DRIVER_BLOCKED_1,
+ SFX_GANG16_DRIVER_BLOCKED_2,
+ SFX_GANG16_FIGHT_1,
+ SFX_GANG16_FIGHT_2,
+ SFX_GANG16_GUN_THREATENED_1,
+ SFX_GANG16_GUN_THREATENED_2,
+ SFX_GANG16_JACKED_CAR_1,
+ SFX_GANG16_JACKED_CAR_2,
+ SFX_GANG16_JACKING_1,
+ SFX_GANG16_JACKING_2,
+ SFX_GANG16_SHOOT_1,
+ SFX_GANG16_SHOOT_2,
+ SFX_GANG16_SHOOT_3,
+ SFX_GANG16_SHOOT_4,
+ SFX_GANG16_SHOOT_5,
+ SFX_GANG17_BUMP_1,
+ SFX_GANG17_BUMP_2,
+ SFX_GANG17_BUMP_3,
+ SFX_GANG17_CHAT_1,
+ SFX_GANG17_CHAT_2,
+ SFX_GANG17_CRASH_CAR_1,
+ SFX_GANG17_CRASH_CAR_2,
+ SFX_GANG17_DODGE_1,
+ SFX_GANG17_DODGE_2,
+ SFX_GANG17_DRIVER_BLOCKED_1,
+ SFX_GANG17_DRIVER_BLOCKED_2,
+ SFX_GANG17_FIGHT_1,
+ SFX_GANG17_FIGHT_2,
+ SFX_GANG17_GUN_THREATENED_1,
+ SFX_GANG17_GUN_THREATENED_2,
+ SFX_GANG17_JACKED_CAR_1,
+ SFX_GANG17_JACKED_CAR_2,
+ SFX_GANG17_JACKING_1,
+ SFX_GANG17_JACKING_2,
+ SFX_GANG17_SHOOT_1,
+ SFX_GANG17_SHOOT_2,
+ SFX_GANG17_SHOOT_3,
+ SFX_GANG17_SHOOT_4,
+ SFX_GANG17_SHOOT_5,
+ SFX_GANG18_BUMP_1,
+ SFX_GANG18_BUMP_2,
+ SFX_GANG18_BUMP_3,
+ SFX_GANG18_CHAT_1,
+ SFX_GANG18_CHAT_2,
+ SFX_GANG18_CHAT_3,
+ SFX_GANG18_CRASH_CAR_1,
+ SFX_GANG18_CRASH_CAR_2,
+ SFX_GANG18_DODGE_1,
+ SFX_GANG18_DODGE_2,
+ SFX_GANG18_DRIVER_BLOCKED_1,
+ SFX_GANG18_DRIVER_BLOCKED_2,
+ SFX_GANG18_FIGHT_1,
+ SFX_GANG18_FIGHT_2,
+ SFX_GANG18_GUN_THREATENED_1,
+ SFX_GANG18_GUN_THREATENED_2,
+ SFX_GANG18_JACKED_CAR_1,
+ SFX_GANG18_JACKED_CAR_2,
+ SFX_GANG18_JACKING_1,
+ SFX_GANG18_JACKING_2,
+ SFX_GANG18_SHOOT_1,
+ SFX_GANG18_SHOOT_2,
+ SFX_GANG18_SHOOT_3,
+ SFX_GANG18_SHOOT_4,
+ SFX_GRDANG1_BUMP_1,
+ SFX_GRDANG1_BUMP_2,
+ SFX_GRDANG1_BUMP_3,
+ SFX_GRDANG1_CHAT_1,
+ SFX_GRDANG1_CHAT_2,
+ SFX_GRDANG1_CHAT_3,
+ SFX_GRDANG1_CRASH_CAR_1,
+ SFX_GRDANG1_CRASH_CAR_2,
+ SFX_GRDANG1_DODGE_1,
+ SFX_GRDANG1_DODGE_2,
+ SFX_GRDANG1_DRIVER_BLOCKED_1,
+ SFX_GRDANG1_DRIVER_BLOCKED_2,
+ SFX_GRDANG1_FIGHT_1,
+ SFX_GRDANG1_FIGHT_2,
+ SFX_GRDANG1_FIGHT_3,
+ SFX_GRDANG1_GUN_THREATENED_1,
+ SFX_GRDANG1_GUN_THREATENED_2,
+ SFX_GRDANG1_JACKED_CAR_1,
+ SFX_GRDANG1_JACKED_CAR_2,
+ SFX_GRDANG1_JACKED_CAR_3,
+ SFX_GRDANG1_SHOCKED_1,
+ SFX_GRDANG1_SPECIAL_CASE_1,
+ SFX_GRDANG1_SPECIAL_CASE_2,
+ SFX_GRDANG1_SPECIAL_CASE_3,
+ SFX_GRDANG2_BUMP_1,
+ SFX_GRDANG2_BUMP_2,
+ SFX_GRDANG2_BUMP_3,
+ SFX_GRDANG2_CHAT_1,
+ SFX_GRDANG2_CHAT_2,
+ SFX_GRDANG2_CHAT_3,
+ SFX_GRDANG2_CHAT_4,
+ SFX_GRDANG2_CRASH_CAR_1,
+ SFX_GRDANG2_CRASH_CAR_2,
+ SFX_GRDANG2_DODGE_1,
+ SFX_GRDANG2_DODGE_2,
+ SFX_GRDANG2_DRIVER_BLOCKED_1,
+ SFX_GRDANG2_DRIVER_BLOCKED_2,
+ SFX_GRDANG2_FIGHT_1,
+ SFX_GRDANG2_FIGHT_2,
+ SFX_GRDANG2_FIGHT_3,
+ SFX_GRDANG2_GUN_THREATENED_1,
+ SFX_GRDANG2_GUN_THREATENED_2,
+ SFX_GRDANG2_JACKED_CAR_1,
+ SFX_GRDANG2_JACKED_CAR_2,
+ SFX_GRDANG2_JACKED_CAR_3,
+ SFX_GRDANG2_SHOCKED_1,
+ SFX_HIT1_AA,
+ SFX_HIT1_AB,
+ SFX_HIT1_AC,
+ SFX_HIT1_AD,
+ SFX_HIT1_AE,
+ SFX_HIT1_AF,
+ SFX_HIT1_AG,
+ SFX_HIT2_AA,
+ SFX_HIT2_AB,
+ SFX_HIT2_AC,
+ SFX_HIT2_AD,
+ SFX_HIT2_AE,
+ SFX_HIT2_AF,
+ SFX_HIT2_AG,
+ SFX_HIT2_AH,
+ SFX_HIT3_AA,
+ SFX_HIT3_AB,
+ SFX_HIT3_AC,
+ SFX_HIT3_AD,
+ SFX_HIT3_AE,
+ SFX_HIT3_AF,
+ SFX_HIT3_AG,
+ SFX_HITM_AA,
+ SFX_HITM_AB,
+ SFX_HITM_AC,
+ SFX_HITM_AD,
+ SFX_HOS_MAN_BUMP_1,
+ SFX_HOS_MAN_BUMP_2,
+ SFX_HOS_MAN_BUMP_3,
+ SFX_HOS_MAN_CHAT_1,
+ SFX_HOS_MAN_CHAT_2,
+ SFX_HOS_MAN_CHAT_3,
+ SFX_HOS_MAN_CRASH_CAR_1,
+ SFX_HOS_MAN_CRASH_CAR_2,
+ SFX_HOS_MAN_DODGE_1,
+ SFX_HOS_MAN_DODGE_2,
+ SFX_HOS_MAN_DRIVER_BLOCKED_1,
+ SFX_HOS_MAN_DRIVER_BLOCKED_2,
+ SFX_HOS_MAN_FIGHT_1,
+ SFX_HOS_MAN_FIGHT_2,
+ SFX_HOS_MAN_FIGHT_3,
+ SFX_HOS_MAN_GUN_THREATENED_1,
+ SFX_HOS_MAN_GUN_THREATENED_2,
+ SFX_HOS_MAN_JACKED_CAR_1,
+ SFX_HOS_MAN_JACKED_CAR_2,
+ SFX_HOS_MAN_JACKED_CAR_3,
+ SFX_HOS_MAN_SHOCKED_1,
+ SFX_HOS_WOM_BUMP_1,
+ SFX_HOS_WOM_BUMP_2,
+ SFX_HOS_WOM_BUMP_3,
+ SFX_HOS_WOM_CHAT_1,
+ SFX_HOS_WOM_CHAT_2,
+ SFX_HOS_WOM_CHAT_3,
+ SFX_HOS_WOM_CRASH_CAR_1,
+ SFX_HOS_WOM_CRASH_CAR_2,
+ SFX_HOS_WOM_DODGE_1,
+ SFX_HOS_WOM_DODGE_2,
+ SFX_HOS_WOM_DRIVER_BLOCKED_1,
+ SFX_HOS_WOM_DRIVER_BLOCKED_2,
+ SFX_HOS_WOM_FIGHT_1,
+ SFX_HOS_WOM_FIGHT_2,
+ SFX_HOS_WOM_FIGHT_3,
+ SFX_HOS_WOM_GUN_THREATENED_1,
+ SFX_HOS_WOM_GUN_THREATENED_2,
+ SFX_HOS_WOM_JACKED_CAR_1,
+ SFX_HOS_WOM_JACKED_CAR_2,
+ SFX_HOS_WOM_JACKED_CAR_3,
+ SFX_HOS_WOM_SHOCKED_1,
+ SFX_JDT1_BA,
+ SFX_JDT1_BB,
+ SFX_JDT1_CA,
+ SFX_JDT1_CB,
+ SFX_JDT1_DA,
+ SFX_JDT1_DB,
+ SFX_JDT1_DC,
+ SFX_JDT1_DD,
+ SFX_JDT1_DE,
+ SFX_JDT1_DF,
+ SFX_JDT1_DG,
+ SFX_JDT1_DH,
+ SFX_JDT1_DI,
+ SFX_JDT1_DJ,
+ SFX_JDT1_EA,
+ SFX_JDT1_EB,
+ SFX_JDT1_EC,
+ SFX_JDT1_ED,
+ SFX_JDT1_EE,
+ SFX_JDT1_FA,
+ SFX_JDT1_FB,
+ SFX_JDT1_FC,
+ SFX_JDT1_FD,
+ SFX_JDT1_FE,
+ SFX_JDT1_FF,
+ SFX_JDT1_GA,
+ SFX_JDT1_HA,
+ SFX_JDT1_HB,
+ SFX_JDT1_HC,
+ SFX_JDT1_HD,
+ SFX_JDT1_HE,
+ SFX_JDT1_HF,
+ SFX_JDT1_IA,
+ SFX_JDT1_JA,
+ SFX_JDT1_JB,
+ SFX_JDT1_KA,
+ SFX_JDT1_KB,
+ SFX_JDT1_KC,
+ SFX_JDT1_KD,
+ SFX_JDT1_KE,
+ SFX_JDT1_KF,
+ SFX_JDT1_LA,
+ SFX_JDT1_LB,
+ SFX_JDT1_MA,
+ SFX_JDT1_MB,
+ SFX_JDT1_MC,
+ SFX_JDT1_MD,
+ SFX_JDT1_ME,
+ SFX_JDT1_MF,
+ SFX_JDT1_MG,
+ SFX_JDT1_MH,
+ SFX_JDT2_AA,
+ SFX_JDT2_AB,
+ SFX_JDT2_AC,
+ SFX_JDT2_AD,
+ SFX_JDT2_AE,
+ SFX_JDT2_AF,
+ SFX_JDT2_AG,
+ SFX_JDT2_AH,
+ SFX_JDT2_BA,
+ SFX_JDT2_BB,
+ SFX_JDT2_BC,
+ SFX_JDT2_CA,
+ SFX_JDT2_CB,
+ SFX_JDT2_DA,
+ SFX_JDT2_DC,
+ SFX_JDT2_DD,
+ SFX_JDT2_DE,
+ SFX_JDT2_DF,
+ SFX_JDT3_AA,
+ SFX_JDT3_AB,
+ SFX_JDT3_AC,
+ SFX_JDT3_AD,
+ SFX_JDT3_AE,
+ SFX_JDT3_AG,
+ SFX_JDT3_AH,
+ SFX_JDT3_BA,
+ SFX_JDT3_BB,
+ SFX_JDT3_BC,
+ SFX_JDT3_BD,
+ SFX_JDT3_BE,
+ SFX_JDT3_BF,
+ SFX_JDT4_AA,
+ SFX_JDT4_AB,
+ SFX_JDT4_AC,
+ SFX_JDT4_AD,
+ SFX_JDT4_AE,
+ SFX_JDT4_AF,
+ SFX_JDT4_BA,
+ SFX_JDT4_BB,
+ SFX_JDT4_BC,
+ SFX_JDT5_BA,
+ SFX_JDT5_CA,
+ SFX_JDT5_CC,
+ SFX_JDT5_CD,
+ SFX_JDT5_CE,
+ SFX_JDT5_CG,
+ SFX_JDT5_CI,
+ SFX_JDT5_DA,
+ SFX_JDT5_EA,
+ SFX_JDT5_EB,
+ SFX_JDT5_EC,
+ SFX_JDT5_ED,
+ SFX_JDT5_EE,
+ SFX_JDT5_FA,
+ SFX_JDT5_FB,
+ SFX_JDT5_FC,
+ SFX_JDT5_GA,
+ SFX_JDT5_GB,
+ SFX_JDT6_AA,
+ SFX_JDT6_AB,
+ SFX_JDT6_AC,
+ SFX_JDT6_AE,
+ SFX_JDT6_AF,
+ SFX_JDT6_AG,
+ SFX_JDT6_AH,
+ SFX_JDT6_BA,
+ SFX_JDT6_BB,
+ SFX_JDT6_BC,
+ SFX_JDT6_BD,
+ SFX_JDT6_BE,
+ SFX_JDT6_BF,
+ SFX_JDT6_BG,
+ SFX_JDT6_CA,
+ SFX_JDT6_CB,
+ SFX_JDT6_DA,
+ SFX_JDT7_AA,
+ SFX_JDT7_AB,
+ SFX_JDT7_AC,
+ SFX_JDT7_AD,
+ SFX_JDT7_AE,
+ SFX_JDT7_AF,
+ SFX_JDT7_AG,
+ SFX_JDT7_BA,
+ SFX_JDT7_BB,
+ SFX_JDT7_BC,
+ SFX_JDT7_CA,
+ SFX_JDT7_CB,
+ SFX_JDT7_CC,
+ SFX_JDT7_CD,
+ SFX_JDT8_AA,
+ SFX_JDT8_AB,
+ SFX_JDT8_AC,
+ SFX_JDT8_AD,
+ SFX_JDT8_AE,
+ SFX_JDT8_AF,
+ SFX_JDT8_AG,
+ SFX_JDT8_AH,
+ SFX_JDT8_AI,
+ SFX_JDT8_BA,
+ SFX_JDT8_CA,
+ SFX_JDT8_CB,
+ SFX_JDT8_DA,
+ SFX_JDT8_DB,
+ SFX_JDT8_DC,
+ SFX_JDT8_DD,
+ SFX_JDT8_DE,
+ SFX_JDT8_DF,
+ SFX_JDT8_DG,
+ SFX_JDT8_EA,
+ SFX_JDT8_EB,
+ SFX_JDT8_EC,
+ SFX_JDT8_ED,
+ SFX_JDT8_EE,
+ SFX_JDT8_FA,
+ SFX_JDT8_FB,
+ SFX_JDT8_FC,
+ SFX_JDT8_FD,
+ SFX_JDT8_FE,
+ SFX_JDT8_FF,
+ SFX_JDT8_FG,
+ SFX_JDT8_FH,
+ SFX_JDT8_GA,
+ SFX_JDT8_HA,
+ SFX_JDT8_HB,
+ SFX_JDX_AA,
+ SFX_JDX_AB,
+ SFX_JDX_AC,
+ SFX_JD_CRASH_CAR_1,
+ SFX_JD_CRASH_CAR_2,
+ SFX_JD_CRASH_CAR_3,
+ SFX_JD_JACKED_CAR_1,
+ SFX_JD_JACKED_CAR_2,
+ SFX_JD_JACKED_CAR_3,
+ SFX_JD_SHOCKED_1,
+ SFX_JD_SHOCKED_2,
+ SFX_JD_SLPN,
+ SFX_LCN_AA,
+ SFX_LCN_AB,
+ SFX_LEAR,
+ SFX_LEON_CRASH_CAR_1,
+ SFX_LEON_CRASH_CAR_2,
+ SFX_LEON_CRASH_CAR_3,
+ SFX_LEON_CRASH_CAR_4,
+ SFX_LEON_CRASH_CAR_5,
+ SFX_LEON_DRIVER_BLOCKED_1,
+ SFX_LEON_DRIVER_BLOCKED_2,
+ SFX_LEON_DRIVER_BLOCKED_3,
+ SFX_LEON_DRIVER_BLOCKED_4,
+ SFX_LEON_JACKED_CAR_1,
+ SFX_LEON_JACKED_CAR_2,
+ SFX_LEON_JACKED_CAR_3,
+ SFX_LEON_SHOCKED_1,
+ SFX_LEON_SHOCKED_2,
+ SFX_LI_MAN1_BUMP_1,
+ SFX_LI_MAN1_BUMP_2,
+ SFX_LI_MAN1_BUMP_3,
+ SFX_LI_MAN1_CHAT_1,
+ SFX_LI_MAN1_CHAT_2,
+ SFX_LI_MAN1_CHAT_3,
+ SFX_LI_MAN1_CHAT_4,
+ SFX_LI_MAN1_CRASH_CAR_1,
+ SFX_LI_MAN1_CRASH_CAR_2,
+ SFX_LI_MAN1_DODGE_1,
+ SFX_LI_MAN1_DODGE_2,
+ SFX_LI_MAN1_DRIVER_BLOCKED_1,
+ SFX_LI_MAN1_DRIVER_BLOCKED_2,
+ SFX_LI_MAN1_FIGHT_1,
+ SFX_LI_MAN1_FIGHT_2,
+ SFX_LI_MAN1_FIGHT_3,
+ SFX_LI_MAN1_GUN_THREATENED_1,
+ SFX_LI_MAN1_GUN_THREATENED_2,
+ SFX_LI_MAN1_JACKED_CAR_1,
+ SFX_LI_MAN1_JACKED_CAR_2,
+ SFX_LI_MAN1_JACKED_CAR_3,
+ SFX_LI_MAN2_BUMP_1,
+ SFX_LI_MAN2_BUMP_2,
+ SFX_LI_MAN2_BUMP_3,
+ SFX_LI_MAN2_CHAT_1,
+ SFX_LI_MAN2_CHAT_2,
+ SFX_LI_MAN2_CHAT_3,
+ SFX_LI_MAN2_CHAT_4,
+ SFX_LI_MAN2_CRASH_CAR_1,
+ SFX_LI_MAN2_CRASH_CAR_2,
+ SFX_LI_MAN2_DODGE_1,
+ SFX_LI_MAN2_DODGE_2,
+ SFX_LI_MAN2_DRIVER_BLOCKED_1,
+ SFX_LI_MAN2_DRIVER_BLOCKED_2,
+ SFX_LI_MAN2_FIGHT_1,
+ SFX_LI_MAN2_FIGHT_2,
+ SFX_LI_MAN2_FIGHT_3,
+ SFX_LI_MAN2_GUN_THREATENED_1,
+ SFX_LI_MAN2_GUN_THREATENED_2,
+ SFX_LI_MAN2_JACKED_CAR_1,
+ SFX_LI_MAN2_JACKED_CAR_2,
+ SFX_LI_MAN2_JACKED_CAR_3,
+ SFX_LI_MAN2_SHOCKED_1,
+ SFX_LI_WOM1_BUMP_1,
+ SFX_LI_WOM1_BUMP_2,
+ SFX_LI_WOM1_BUMP_3,
+ SFX_LI_WOM1_CHAT_1,
+ SFX_LI_WOM1_CHAT_2,
+ SFX_LI_WOM1_CHAT_3,
+ SFX_LI_WOM1_CRASH_CAR_1,
+ SFX_LI_WOM1_CRASH_CAR_2,
+ SFX_LI_WOM1_DODGE_1,
+ SFX_LI_WOM1_DODGE_2,
+ SFX_LI_WOM1_DRIVER_BLOCKED_1,
+ SFX_LI_WOM1_DRIVER_BLOCKED_2,
+ SFX_LI_WOM1_FIGHT_1,
+ SFX_LI_WOM1_FIGHT_2,
+ SFX_LI_WOM1_FIGHT_3,
+ SFX_LI_WOM1_GUN_THREATENED_1,
+ SFX_LI_WOM1_GUN_THREATENED_2,
+ SFX_LI_WOM1_JACKED_CAR_1,
+ SFX_LI_WOM1_JACKED_CAR_2,
+ SFX_LI_WOM1_SHOCKED_1,
+ SFX_LI_WOM2_BUMP_1,
+ SFX_LI_WOM2_BUMP_2,
+ SFX_LI_WOM2_BUMP_3,
+ SFX_LI_WOM2_CHAT_1,
+ SFX_LI_WOM2_CHAT_2,
+ SFX_LI_WOM2_CHAT_3,
+ SFX_LI_WOM2_CHAT_4,
+ SFX_LI_WOM2_CRASH_CAR_1,
+ SFX_LI_WOM2_CRASH_CAR_2,
+ SFX_LI_WOM2_DODGE_1,
+ SFX_LI_WOM2_DODGE_2,
+ SFX_LI_WOM2_DRIVER_BLOCKED_1,
+ SFX_LI_WOM2_DRIVER_BLOCKED_2,
+ SFX_LI_WOM2_FIGHT_1,
+ SFX_LI_WOM2_FIGHT_2,
+ SFX_LI_WOM2_FIGHT_3,
+ SFX_LI_WOM2_GUN_THREATENED_1,
+ SFX_LI_WOM2_GUN_THREATENED_2,
+ SFX_LI_WOM2_JACKED_CAR_1,
+ SFX_LI_WOM2_JACKED_CAR_2,
+ SFX_LI_WOM2_JACKED_CAR_3,
+ SFX_LI_WOM2_SHOCKED_1,
+ SFX_M8B1AA,
+ SFX_M8B1AB,
+ SFX_MAC1_AA,
+ SFX_MAC1_AB,
+ SFX_MAC1_AC,
+ SFX_MAC1_AD,
+ SFX_MAC1_AE,
+ SFX_MAC1_AF,
+ SFX_MAC1_AG,
+ SFX_MAC1_AH,
+ SFX_MAC1_AI,
+ SFX_MAC1_AJ,
+ SFX_MAC1_AK,
+ SFX_MAC1_AL,
+ SFX_MAC1_AM,
+ SFX_MAC1_AN,
+ SFX_MAC1_AO,
+ SFX_MAC1_BA,
+ SFX_MAC1_BB,
+ SFX_MAC1_BC,
+ SFX_MAC1_BD,
+ SFX_MAC1_BE,
+ SFX_MAC1_BF,
+ SFX_MAC1_BG,
+ SFX_MAC1_CA,
+ SFX_MAC1_CB,
+ SFX_MAC1_DA,
+ SFX_MAC1_EA,
+ SFX_MAC1_FA,
+ SFX_MAC1_FB,
+ SFX_MAC1_GA,
+ SFX_MAC1_GB,
+ SFX_MAC1_HA,
+ SFX_MAC1_IA,
+ SFX_MAC1_IB,
+ SFX_MAC1_JA,
+ SFX_MAC1_JB,
+ SFX_MAC1_JC,
+ SFX_MAC2_AA,
+ SFX_MAC2_AB,
+ SFX_MAC2_AC,
+ SFX_MAC2_AD,
+ SFX_MAC2_AE,
+ SFX_MAC2_AF,
+ SFX_MAC2_AG,
+ SFX_MAC2_AH,
+ SFX_MAC2_AI,
+ SFX_MAC2_BA,
+ SFX_MAC2_BB,
+ SFX_MAC2_BC,
+ SFX_MAC3_AA,
+ SFX_MAC3_AB,
+ SFX_MAC3_AC,
+ SFX_MAC3_AD,
+ SFX_MAC3_AE,
+ SFX_MAC3_AF,
+ SFX_MAC3_AG,
+ SFX_MAC3_AH,
+ SFX_MAC3_AI,
+ SFX_MAC3_AJ,
+ SFX_MAC3_AK,
+ SFX_MAC3_AL,
+ SFX_MAC3_AM,
+ SFX_MAC3_AN,
+ SFX_MAC3_BA,
+ SFX_MAC4_AA,
+ SFX_MAC4_AB,
+ SFX_MAC4_AC,
+ SFX_MAC4_AD,
+ SFX_MAC4_AE,
+ SFX_MAC4_AF,
+ SFX_MAC4_AG,
+ SFX_MAC4_AH,
+ SFX_MAC4_AI,
+ SFX_MAC4_AJ,
+ SFX_MAC4_AK,
+ SFX_MAC4_AL,
+ SFX_MAC4_BA,
+ SFX_MAC4_BB,
+ SFX_MAC4_BC,
+ SFX_MAC4_BD,
+ SFX_MAC4_BE,
+ SFX_MAC4_BF,
+ SFX_MAC4_BG,
+ SFX_MAC4_BI,
+ SFX_MAC4_BJ,
+ SFX_MAC4_BL,
+ SFX_MAC4_BM,
+ SFX_MAC4_BO,
+ SFX_MAC4_BP,
+ SFX_MAC4_BQ,
+ SFX_MAC4_BR,
+ SFX_MAC4_BS,
+ SFX_MAC4_BT,
+ SFX_MAC4_BU,
+ SFX_MAC4_CA,
+ SFX_MAC4_CB,
+ SFX_MAC4_CC,
+ SFX_MAC4_CD,
+ SFX_MAC4_CE,
+ SFX_MAC4_CF,
+ SFX_MAC4_CG,
+ SFX_MAC4_CH,
+ SFX_MAC4_CI,
+ SFX_MAC4_CK,
+ SFX_MAC4_CM,
+ SFX_MAC4_CN,
+ SFX_MAC4_CO,
+ SFX_MAC4_CP,
+ SFX_MAC4_CQ,
+ SFX_MAC4_CR,
+ SFX_MAC4_CS,
+ SFX_MAC4_DA,
+ SFX_MAC4_DB,
+ SFX_MAC4_DC,
+ SFX_MAC4_DD,
+ SFX_MAC4_DE,
+ SFX_MAC4_DF,
+ SFX_MAC4_DG,
+ SFX_MAC4_DH,
+ SFX_MAC5_AA,
+ SFX_MAC5_AB,
+ SFX_MAC5_AC,
+ SFX_MAC5_AD,
+ SFX_MAC5_AE,
+ SFX_MAC5_AF,
+ SFX_MAC5_AG,
+ SFX_MAC5_AH,
+ SFX_MAC5_AI,
+ SFX_MAC5_AJ,
+ SFX_MAC5_AK,
+ SFX_MAC5_AL,
+ SFX_MAC5_AM,
+ SFX_MAC5_AN,
+ SFX_MALE01_BUMP_1,
+ SFX_MALE01_BUMP_2,
+ SFX_MALE01_BUMP_3,
+ SFX_MALE01_CHAT_1,
+ SFX_MALE01_CHAT_2,
+ SFX_MALE01_CHAT_3,
+ SFX_MALE01_CHAT_4,
+ SFX_MALE01_CRASH_CAR_1,
+ SFX_MALE01_CRASH_CAR_2,
+ SFX_MALE01_DRIVER_BLOCKED_1,
+ SFX_MALE01_DRIVER_BLOCKED_2,
+ SFX_MALE01_FIGHT_1,
+ SFX_MALE01_FIGHT_2,
+ SFX_MALE01_FIGHT_3,
+ SFX_MALE01_GUN_THREATENED_1,
+ SFX_MALE01_GUN_THREATENED_2,
+ SFX_MALE01_JACKED_CAR_1,
+ SFX_MALE01_JACKED_CAR_2,
+ SFX_MALE01_SHOCKED_1,
+ SFX_MALE02_BUMP_1,
+ SFX_MALE02_BUMP_2,
+ SFX_MALE02_BUMP_3,
+ SFX_MALE02_CHAT_1,
+ SFX_MALE02_CHAT_2,
+ SFX_MALE02_CHAT_3,
+ SFX_MALE02_CHAT_4,
+ SFX_MALE02_CRASH_CAR_1,
+ SFX_MALE02_CRASH_CAR_2,
+ SFX_MALE02_DODGE_1,
+ SFX_MALE02_DODGE_2,
+ SFX_MALE02_DRIVER_BLOCKED_1,
+ SFX_MALE02_DRIVER_BLOCKED_2,
+ SFX_MALE02_FIGHT_1,
+ SFX_MALE02_FIGHT_2,
+ SFX_MALE02_FIGHT_3,
+ SFX_MALE02_GUN_THREATENED_1,
+ SFX_MALE02_GUN_THREATENED_2,
+ SFX_MALE02_JACKED_CAR_1,
+ SFX_MALE02_JACKED_CAR_2,
+ SFX_MALE02_JACKED_CAR_3,
+ SFX_MALE02_SHOCKED_1,
+ SFX_MALE02_SPECIAL_CASE_1,
+ SFX_MALE02_SPECIAL_CASE_2,
+ SFX_MALE03_BUMP_1,
+ SFX_MALE03_BUMP_2,
+ SFX_MALE03_BUMP_3,
+ SFX_MALE03_CHAT_1,
+ SFX_MALE03_CHAT_2,
+ SFX_MALE03_CHAT_3,
+ SFX_MALE03_CRASH_CAR_1,
+ SFX_MALE03_CRASH_CAR_2,
+ SFX_MALE03_DODGE_1,
+ SFX_MALE03_DODGE_2,
+ SFX_MALE03_DRIVER_BLOCKED_1,
+ SFX_MALE03_DRIVER_BLOCKED_2,
+ SFX_MALE03_FIGHT_1,
+ SFX_MALE03_FIGHT_2,
+ SFX_MALE03_FIGHT_3,
+ SFX_MALE03_GUN_THREATENED_1,
+ SFX_MALE03_GUN_THREATENED_2,
+ SFX_MALE03_JACKED_CAR_1,
+ SFX_MALE03_JACKED_CAR_2,
+ SFX_MALE03_JACKED_CAR_3,
+ SFX_MALE03_SHOCKED_1,
+ SFX_MALE_DEATH_01,
+ SFX_MALE_DEATH_02,
+ SFX_MALE_DEATH_03,
+ SFX_MALE_DEATH_04,
+ SFX_MALE_DEATH_05,
+ SFX_MALE_DEATH_06,
+ SFX_MALE_DEATH_07,
+ SFX_MALE_DEATH_08,
+ SFX_MALE_DEATH_09,
+ SFX_MALE_DEATH_10,
+ SFX_MALE_DEATH_11,
+ SFX_MALE_DEATH_12,
+ SFX_MALE_DEATH_13,
+ SFX_MALE_DEATH_14,
+ SFX_MALE_DEATH_15,
+ SFX_MALE_DEATH_16,
+ SFX_MALE_DEATH_17,
+ SFX_MALE_DEATH_18,
+ SFX_MALE_DEATH_19,
+ SFX_MALE_DEATH_20,
+ SFX_MALE_DEATH_21,
+ SFX_MALE_DEATH_22,
+ SFX_MALE_DEATH_23,
+ SFX_MALE_DEATH_24,
+ SFX_MALE_DEATH_25,
+ SFX_MALE_DEATH_26,
+ SFX_MALE_DEATH_27,
+ SFX_MALE_DEATH_28,
+ SFX_MALE_PAIN_01,
+ SFX_MALE_PAIN_02,
+ SFX_MALE_PAIN_03,
+ SFX_MALE_PAIN_04,
+ SFX_MALE_PAIN_05,
+ SFX_MALE_PAIN_06,
+ SFX_MALE_PAIN_07,
+ SFX_MALE_PAIN_08,
+ SFX_MALE_PAIN_09,
+ SFX_MALE_PAIN_10,
+ SFX_MALE_PAIN_11,
+ SFX_MALE_PAIN_12,
+ SFX_MALE_PAIN_13,
+ SFX_MALE_PAIN_16,
+ SFX_MALE_PAIN_17,
+ SFX_MALE_PAIN_18,
+ SFX_MALE_PAIN_19,
+ SFX_MALE_PAIN_20,
+ SFX_MALE_PAIN_21,
+ SFX_MALE_PAIN_22,
+ SFX_MALE_PAIN_23,
+ SFX_MALE_PAIN_24,
+ SFX_MALE_PAIN_25,
+ SFX_MALE_PAIN_26,
+ SFX_MALE_PAIN_27,
+ SFX_MALE_PAIN_28,
+ SFX_MALE_PAIN_29,
+ SFX_MALE_PAIN_30,
+ SFX_MALE_PAIN_31,
+ SFX_MALE_PAIN_32,
+ SFX_MALE_PAIN_33,
+ SFX_MALE_PAIN_34,
+ SFX_MALE_PAIN_35,
+ SFX_MALE_PAIN_36,
+ SFX_MALE_PAIN_37,
+ SFX_MALE_PAIN_38,
+ SFX_MALE_PAIN_39,
+ SFX_MALE_PAIN_40,
+ SFX_MALE_PAIN_41,
+ SFX_MALE_PAIN_42,
+ SFX_MALE_PAIN_43,
+ SFX_MALE_PAIN_44,
+ SFX_MALE_PAIN_45,
+ SFX_MALE_PAIN_46,
+ SFX_MALE_PAIN_47,
+ SFX_MALE_PAIN_48,
+ SFX_MALE_PAIN_49,
+ SFX_MALE_PAIN_50,
+ SFX_MALE_PAIN_51,
+ SFX_MALE_PAIN_52,
+ SFX_MALE_PAIN_53,
+ SFX_MALE_PAIN_ON_FIRE_01,
+ SFX_MALE_PAIN_ON_FIRE_02,
+ SFX_MALE_PAIN_ON_FIRE_03,
+ SFX_MALE_PAIN_ON_FIRE_04,
+ SFX_MALE_PAIN_ON_FIRE_05,
+ SFX_MALE_PAIN_ON_FIRE_06,
+ SFX_MALE_PAIN_ON_FIRE_07,
+ SFX_MALE_PAIN_ON_FIRE_08,
+ SFX_MALE_PAIN_ON_FIRE_09,
+ SFX_MALE_PAIN_ON_FIRE_10,
+ SFX_MALE_PAIN_ON_FIRE_11,
+ SFX_MALE_PAIN_ON_FIRE_12,
+ SFX_MALE_PAIN_ON_FIRE_13,
+ SFX_MALE_PAIN_ON_FIRE_14,
+ SFX_MALE_PAIN_ON_FIRE_15,
+ SFX_MALE_PAIN_ON_FIRE_16,
+ SFX_MALE_PAIN_ON_FIRE_17,
+ SFX_MALE_PAIN_ON_FIRE_18,
+ SFX_MALE_PAIN_ON_FIRE_19,
+ SFX_MALE_PAIN_ON_FIRE_20,
+ SFX_MALE_PAIN_ON_FIRE_21,
+ SFX_MALE_PANIC_01,
+ SFX_MALE_PANIC_02,
+ SFX_MALE_PANIC_03,
+ SFX_MALE_PANIC_04,
+ SFX_MALE_PANIC_05,
+ SFX_MALE_PANIC_06,
+ SFX_MALE_PANIC_07,
+ SFX_MALE_PANIC_08,
+ SFX_MALE_PANIC_09,
+ SFX_MALE_PANIC_10,
+ SFX_MALE_PANIC_11,
+ SFX_MALE_PANIC_12,
+ SFX_MALE_PANIC_13,
+ SFX_MALE_PANIC_14,
+ SFX_MALE_PANIC_15,
+ SFX_MALE_PANIC_16,
+ SFX_MALE_PANIC_17,
+ SFX_MALE_PANIC_18,
+ SFX_MALE_PANIC_19,
+ SFX_MALE_PANIC_20,
+ SFX_MALE_PANIC_21,
+ SFX_MALE_PANIC_22,
+ SFX_MALE_PANIC_23,
+ SFX_MAR1_AA,
+ SFX_MAR1_AB,
+ SFX_MAR1_AC,
+ SFX_MAR1_AD,
+ SFX_MAR1_AE,
+ SFX_MAR1_BA,
+ SFX_MAR1_CA,
+ SFX_MAR1_DA,
+ SFX_MAR1_DB,
+ SFX_MAR1_EA,
+ SFX_MAR1_FA,
+ SFX_MAR1_FB,
+ SFX_MAR1_FC,
+ SFX_MAR1_FD,
+ SFX_MAR1_GA,
+ SFX_MAR1_GB,
+ SFX_MAR1_GC,
+ SFX_MAR1_HA,
+ SFX_MAR1_HB,
+ SFX_MAR1_HC,
+ SFX_MAR1_HD,
+ SFX_MAR1_IA,
+ SFX_MAR1_IB,
+ SFX_MAR1_IC,
+ SFX_MAR2_AA,
+ SFX_MAR2_AB,
+ SFX_MAR2_AC,
+ SFX_MAR2_AD,
+ SFX_MAR2_AE,
+ SFX_MAR2_AF,
+ SFX_MAR2_AG,
+ SFX_MAR2_AH,
+ SFX_MAR2_BA,
+ SFX_MAR2_BB,
+ SFX_MAR2_BC,
+ SFX_MAR2_CA,
+ SFX_MAR2_CB,
+ SFX_MAR2_CC,
+ SFX_MAR2_CD,
+ SFX_MAR2_CE,
+ SFX_MAR2_DA,
+ SFX_MAR2_EA,
+ SFX_MAR2_EB,
+ SFX_MAR2_EC,
+ SFX_MAR2_FA,
+ SFX_MAR2_FB,
+ SFX_MAR2_GA,
+ SFX_MAR2_GB,
+ SFX_MAR2_GC,
+ SFX_MAR2_GE,
+ SFX_MAR2_GF,
+ SFX_MAR2_GG,
+ SFX_MAR2_GH,
+ SFX_MAR2_HA,
+ SFX_MAR2_HB,
+ SFX_MAR2_HC,
+ SFX_MAR3_AA,
+ SFX_MAR3_AB,
+ SFX_MAR3_AC,
+ SFX_MAR3_AD,
+ SFX_MAR3_BA,
+ SFX_MAR3_BB,
+ SFX_MAR3_BC,
+ SFX_MAR3_BD,
+ SFX_MAR3_BE,
+ SFX_MAR3_BF,
+ SFX_MAR4_BA,
+ SFX_MAR4_BC,
+ SFX_MAR4_BD,
+ SFX_MAR4_BF,
+ SFX_MAR5_AA,
+ SFX_MAR5_AB,
+ SFX_MAR5_AC,
+ SFX_MAR5_AD,
+ SFX_MAR5_AE,
+ SFX_MAR5_BA,
+ SFX_MAR5_BB,
+ SFX_MAR5_CA,
+ SFX_MAR5_CB,
+ SFX_MAR5_CC,
+ SFX_MAR5_CD,
+ SFX_MAR5_CE,
+ SFX_MAR5_DA,
+ SFX_MAR5_DB,
+ SFX_MAR5_DC,
+ SFX_MAR5_EA,
+ SFX_MAR5_EB,
+ SFX_MAR5_EC,
+ SFX_MAR5_ED,
+ SFX_MAR5_FA,
+ SFX_MAR5_FB,
+ SFX_MAR5_FC,
+ SFX_MAR5_FD,
+ SFX_MAR5_FE,
+ SFX_MAR5_FF,
+ SFX_MARIA_CRASH_CAR_1,
+ SFX_MARIA_CRASH_CAR_2,
+ SFX_MARIA_CRASH_CAR_3,
+ SFX_MARIA_CRASH_CAR_4,
+ SFX_MARIA_DRIVER_BLOCKED_1,
+ SFX_MARIA_DRIVER_BLOCKED_2,
+ SFX_MARIA_JACKED_CAR_1,
+ SFX_MARIA_JACKED_CAR_2,
+ SFX_MARIA_JACKED_CAR_3,
+ SFX_MARIA_SHOCKED_1,
+ SFX_MARIA_SHOCKED_2,
+ SFX_MARX_AA,
+ SFX_MARX_AB,
+ SFX_MARX_AC,
+ SFX_MDON1AA,
+ SFX_MDON1AB,
+ SFX_MDON1AC,
+ SFX_MDON2AA,
+ SFX_MDON2AB,
+ SFX_MDON2AC,
+ SFX_MDON2AD,
+ SFX_MDON2AE,
+ SFX_MDON2AF,
+ SFX_MDON2AG,
+ SFX_MDON2AH,
+ SFX_MDON3AA,
+ SFX_MDON3AB,
+ SFX_MDON3AC,
+ SFX_MDON3AD,
+ SFX_MDON3AE,
+ SFX_MDON3AF,
+ SFX_MDON3AG,
+ SFX_MDON3AH,
+ SFX_MICKEY_BUMP_1,
+ SFX_MICKEY_BUMP_2,
+ SFX_MICKEY_BUMP_3,
+ SFX_MICKEY_BUMP_4,
+ SFX_MICKEY_CHAT_1,
+ SFX_MICKEY_CHAT_2,
+ SFX_MICKEY_CRASH_CAR_1,
+ SFX_MICKEY_CRASH_CAR_2,
+ SFX_MICKEY_DODGE_1,
+ SFX_MICKEY_DODGE_2,
+ SFX_MICKEY_DRIVER_BLOCKED_1,
+ SFX_MICKEY_DRIVER_BLOCKED_2,
+ SFX_MICKEY_FIGHT_1,
+ SFX_MICKEY_FIGHT_2,
+ SFX_MICKEY_GUN_THREATENED_1,
+ SFX_MICKEY_GUN_THREATENED_2,
+ SFX_MICKEY_JACKED_CAR_1,
+ SFX_MICKEY_JACKED_CAR_2,
+ SFX_MICKEY_JACKING_1,
+ SFX_MICKEY_JACKING_2,
+ SFX_MICKEY_SHOOT_1,
+ SFX_MICKEY_SHOOT_2,
+ SFX_MICKEY_SHOOT_3,
+ SFX_MICKEY_SHOOT_4,
+ SFX_MICKEY_SHOOT_5,
+ SFX_MJDT1AA,
+ SFX_MJDT1AB,
+ SFX_MJDT1AC,
+ SFX_MJDT1AE,
+ SFX_MMA1AA,
+ SFX_MMA1AB,
+ SFX_MMA1AC,
+ SFX_MMA1AD,
+ SFX_MMA1AE,
+ SFX_MMA2AA,
+ SFX_MMA2AB,
+ SFX_MMA2AC,
+ SFX_MMA2AD,
+ SFX_MMA2AE,
+ SFX_MMA2AF,
+ SFX_MMA2AG,
+ SFX_MMA2AH,
+ SFX_MMA2AI,
+ SFX_MMA2AJ,
+ SFX_MMAR1AA,
+ SFX_MMAR1AB,
+ SFX_MMAR1AC,
+ SFX_MMAR1AD,
+ SFX_MMCA1AA,
+ SFX_MMCA1AB,
+ SFX_MMCA1AC,
+ SFX_MMCA1AD,
+ SFX_MMCA2AA,
+ SFX_MMCA2AB,
+ SFX_MMCA2AC,
+ SFX_MMCA2AD,
+ SFX_MMCA2AE,
+ SFX_MMCA2AF,
+ SFX_MOD_MAN_BUMP_1,
+ SFX_MOD_MAN_BUMP_2,
+ SFX_MOD_MAN_BUMP_3,
+ SFX_MOD_MAN_CHAT_1,
+ SFX_MOD_MAN_CHAT_2,
+ SFX_MOD_MAN_CHAT_3,
+ SFX_MOD_MAN_CHAT_4,
+ SFX_MOD_MAN_CRASH_CAR_1,
+ SFX_MOD_MAN_CRASH_CAR_2,
+ SFX_MOD_MAN_DODGE_1,
+ SFX_MOD_MAN_DODGE_2,
+ SFX_MOD_MAN_DRIVER_BLOCKED_1,
+ SFX_MOD_MAN_DRIVER_BLOCKED_2,
+ SFX_MOD_MAN_FIGHT_1,
+ SFX_MOD_MAN_FIGHT_2,
+ SFX_MOD_MAN_FIGHT_3,
+ SFX_MOD_MAN_GUN_THREATENED_1,
+ SFX_MOD_MAN_GUN_THREATENED_2,
+ SFX_MOD_MAN_JACKED_CAR_1,
+ SFX_MOD_MAN_JACKED_CAR_2,
+ SFX_MOD_MAN_JACKED_CAR_3,
+ SFX_MOD_MAN_SHOCKED_1,
+ SFX_MOD_WOM_BUMP_1,
+ SFX_MOD_WOM_BUMP_2,
+ SFX_MOD_WOM_BUMP_3,
+ SFX_MOD_WOM_CHAT_1,
+ SFX_MOD_WOM_CHAT_2,
+ SFX_MOD_WOM_CHAT_3,
+ SFX_MOD_WOM_CHAT_4,
+ SFX_MOD_WOM_CRASH_CAR_1,
+ SFX_MOD_WOM_CRASH_CAR_2,
+ SFX_MOD_WOM_DODGE_1,
+ SFX_MOD_WOM_DODGE_2,
+ SFX_MOD_WOM_DRIVER_BLOCKED_1,
+ SFX_MOD_WOM_DRIVER_BLOCKED_2,
+ SFX_MOD_WOM_FIGHT_1,
+ SFX_MOD_WOM_FIGHT_2,
+ SFX_MOD_WOM_FIGHT_3,
+ SFX_MOD_WOM_GUN_THREATENED_1,
+ SFX_MOD_WOM_GUN_THREATENED_2,
+ SFX_MOD_WOM_JACKED_CAR_1,
+ SFX_MOD_WOM_JACKED_CAR_2,
+ SFX_MOD_WOM_JACKED_CAR_3,
+ SFX_MOD_WOM_SHOCKED_1,
+ SFX_MSA10AA,
+ SFX_MSA10AB,
+ SFX_MSA10AC,
+ SFX_MSA10AD,
+ SFX_MSA11AA,
+ SFX_MSA11AB,
+ SFX_MSA11AC,
+ SFX_MSA11AD,
+ SFX_MSA12AA,
+ SFX_MSA12AC,
+ SFX_MSA12AD,
+ SFX_MSA13AA,
+ SFX_MSA13AB,
+ SFX_MSA13AC,
+ SFX_MSA13AD,
+ SFX_MSA13AE,
+ SFX_MSA13AF,
+ SFX_MSA13AG,
+ SFX_MSA13AH,
+ SFX_MSA14AA,
+ SFX_MSA14AB,
+ SFX_MSA14AC,
+ SFX_MSA14AD,
+ SFX_MSAL5AA,
+ SFX_MSAL5AB,
+ SFX_MSAL6AA,
+ SFX_MSAL6AB,
+ SFX_MSAL6AC,
+ SFX_MSAL6AD,
+ SFX_MSAL7AA,
+ SFX_MSAL7AB,
+ SFX_MSAL7AC,
+ SFX_MSAL7AD,
+ SFX_MSAL7AE,
+ SFX_MSAL7AF,
+ SFX_MSAL7AG,
+ SFX_MSAL8AA,
+ SFX_MSAL8AB,
+ SFX_MSAL8AC,
+ SFX_MSAL8AD,
+ SFX_MSAL8AF,
+ SFX_MSAL8AG,
+ SFX_MSAL9AA,
+ SFX_MSAL9AB,
+ SFX_MSAL9AC,
+ SFX_MSAL9AD,
+ SFX_MSAL9AE,
+ SFX_MSAL9AF,
+ SFX_MTOS1AA,
+ SFX_MTOS1AB,
+ SFX_MTOS1AC,
+ SFX_MTOS1AD,
+ SFX_MTOS1AE,
+ SFX_MTOS1AF,
+ SFX_MTOS1AG,
+ SFX_MTOS2AA,
+ SFX_MTOS2AB,
+ SFX_MTOS2AC,
+ SFX_MTOS2AD,
+ SFX_MTOS2AE,
+ SFX_MTOS2AF,
+ SFX_MTOS2AG,
+ SFX_MVIC1AA,
+ SFX_MVIC1AB,
+ SFX_MVIC1AC,
+ SFX_MVIC1AD,
+ SFX_MVIC1AE,
+ SFX_MVIC1AF,
+ SFX_MVIC1AG,
+ SFX_MVIC1AH,
+ SFX_MVIC1AI,
+ SFX_MVIC1AJ,
+ SFX_MVIC1AK,
+ SFX_NEDS1AA,
+ SFX_NEDS1AB,
+ SFX_NEDS1AC,
+ SFX_NEDS1AD,
+ SFX_NEDS1AE,
+ SFX_NEDS1AF,
+ SFX_NEDS1AG,
+ SFX_NEDS1BA,
+ SFX_NEDS1BB,
+ SFX_NEDS1BC,
+ SFX_NEDS1BD,
+ SFX_NEDS1BE,
+ SFX_NEDS1BF,
+ SFX_NEDS2AA,
+ SFX_NEDS2AB,
+ SFX_NEDS2AC,
+ SFX_NEDS2AD,
+ SFX_NEDS2AE,
+ SFX_NEDS2AF,
+ SFX_NEDS2BA,
+ SFX_NEDS3AA,
+ SFX_NEDS3AB,
+ SFX_NEDS3AC,
+ SFX_NEDS3AD,
+ SFX_NEDS4AA,
+ SFX_NEDS4AB,
+ SFX_NEDS4AC,
+ SFX_NEDS4AD,
+ SFX_NEDS4AE,
+ SFX_NEDS4BA,
+ SFX_NEDS4BB,
+ SFX_NEDS4BC,
+ SFX_NEDS4BD,
+ SFX_NEDS4BE,
+ SFX_NEDS4BF,
+ SFX_NEDS4CA,
+ SFX_NOOD_AA,
+ SFX_NOOD_AB,
+ SFX_NOOD_AC,
+ SFX_NOOD_AD,
+ SFX_NOOD_AE,
+ SFX_NOOD_AF,
+ SFX_NOOD_AG,
+ SFX_NOOD_AH,
+ SFX_NOOD_AI,
+ SFX_NOOD_AJ,
+ SFX_NOOD_AK,
+ SFX_NOOD_AL,
+ SFX_NOOD_AM,
+ SFX_NOOD_AN,
+ SFX_NOOD_AO,
+ SFX_NOOD_AP,
+ SFX_NOOD_AQ,
+ SFX_NOOD_AR,
+ SFX_NOOD_AS,
+ SFX_NOOD_AT,
+ SFX_PBCHAT1,
+ SFX_PBCHAT10,
+ SFX_PBCHAT11,
+ SFX_PBCHAT12,
+ SFX_PBCHAT13,
+ SFX_PBCHAT14,
+ SFX_PBCHAT15,
+ SFX_PBCHAT16,
+ SFX_PBCHAT17,
+ SFX_PBCHAT18,
+ SFX_PBCHAT19,
+ SFX_PBCHAT2,
+ SFX_PBCHAT20,
+ SFX_PBCHAT21,
+ SFX_PBCHAT22,
+ SFX_PBCHAT23,
+ SFX_PBCHAT24,
+ SFX_PBCHAT25,
+ SFX_PBCHAT26,
+ SFX_PBCHAT27,
+ SFX_PBCHAT28,
+ SFX_PBCHAT29,
+ SFX_PBCHAT3,
+ SFX_PBCHAT4,
+ SFX_PBCHAT5,
+ SFX_PBCHAT6,
+ SFX_PBCHAT7,
+ SFX_PBCHAT8,
+ SFX_PBCHAT9,
+ SFX_PHCHAT1,
+ SFX_PHCHAT10,
+ SFX_PHCHAT11,
+ SFX_PHCHAT12,
+ SFX_PHCHAT13,
+ SFX_PHCHAT14,
+ SFX_PHCHAT15,
+ SFX_PHCHAT16,
+ SFX_PHCHAT17,
+ SFX_PHCHAT18,
+ SFX_PHCHAT19,
+ SFX_PHCHAT2,
+ SFX_PHCHAT20,
+ SFX_PHCHAT21,
+ SFX_PHCHAT22,
+ SFX_PHCHAT23,
+ SFX_PHCHAT24,
+ SFX_PHCHAT25,
+ SFX_PHCHAT26,
+ SFX_PHCHAT27,
+ SFX_PHCHAT28,
+ SFX_PHCHAT29,
+ SFX_PHCHAT3,
+ SFX_PHCHAT4,
+ SFX_PHCHAT5,
+ SFX_PHCHAT6,
+ SFX_PHCHAT7,
+ SFX_PHCHAT8,
+ SFX_PHCHAT9,
+ SFX_PIMP_BUMP_1,
+ SFX_PIMP_BUMP_2,
+ SFX_PIMP_BUMP_3,
+ SFX_PIMP_CHAT_1,
+ SFX_PIMP_CHAT_2,
+ SFX_PIMP_CHAT_3,
+ SFX_PIMP_CHAT_4,
+ SFX_PIMP_CRASH_CAR_1,
+ SFX_PIMP_CRASH_CAR_2,
+ SFX_PIMP_DODGE_1,
+ SFX_PIMP_DODGE_2,
+ SFX_PIMP_DRIVER_BLOCKED_1,
+ SFX_PIMP_DRIVER_BLOCKED_2,
+ SFX_PIMP_FIGHT_1,
+ SFX_PIMP_FIGHT_2,
+ SFX_PIMP_FIGHT_3,
+ SFX_PIMP_GUN_THREATENED_1,
+ SFX_PIMP_GUN_THREATENED_2,
+ SFX_PIMP_JACKED_CAR_1,
+ SFX_PIMP_JACKED_CAR_2,
+ SFX_PIMP_JACKED_CAR_3,
+ SFX_PIMP_SHOCKED_1,
+ SFX_PIMP_SPECIAL_CASE_1,
+ SFX_PIMP_SPECIAL_CASE_2,
+ SFX_PIMP_SPECIAL_CASE_3,
+ SFX_PIZZ_AA,
+ SFX_PIZZ_AB,
+ SFX_PIZZ_AC,
+ SFX_PIZZ_AD,
+ SFX_PIZZ_AE,
+ SFX_PIZZ_AF,
+ SFX_PIZZ_AG,
+ SFX_PIZZ_AH,
+ SFX_PIZZ_AI,
+ SFX_PIZZ_AJ,
+ SFX_PIZZ_AK,
+ SFX_PIZZ_AL,
+ SFX_PIZZ_AM,
+ SFX_PIZZ_AN,
+ SFX_PIZZ_AO,
+ SFX_PIZZ_AP,
+ SFX_PIZZ_AQ,
+ SFX_PIZZ_AR,
+ SFX_PIZZ_AS,
+ SFX_PIZZ_AT,
+ SFX_PROSTITUTE2_BUMP_1,
+ SFX_PROSTITUTE2_BUMP_2,
+ SFX_PROSTITUTE2_BUMP_3,
+ SFX_PROSTITUTE2_CHAT_1,
+ SFX_PROSTITUTE2_CHAT_2,
+ SFX_PROSTITUTE2_CHAT_3,
+ SFX_PROSTITUTE2_CHAT_4,
+ SFX_PROSTITUTE2_CRASH_CAR_1,
+ SFX_PROSTITUTE2_CRASH_CAR_2,
+ SFX_PROSTITUTE2_DODGE_1,
+ SFX_PROSTITUTE2_DODGE_2,
+ SFX_PROSTITUTE2_DRIVER_BLOCKED_1,
+ SFX_PROSTITUTE2_DRIVER_BLOCKED_2,
+ SFX_PROSTITUTE2_FIGHT_1,
+ SFX_PROSTITUTE2_FIGHT_2,
+ SFX_PROSTITUTE2_FIGHT_3,
+ SFX_PROSTITUTE2_GUN_THREATENED_1,
+ SFX_PROSTITUTE2_GUN_THREATENED_2,
+ SFX_PROSTITUTE2_JACKED_CAR_1,
+ SFX_PROSTITUTE2_JACKED_CAR_2,
+ SFX_PROSTITUTE2_JACKED_CAR_3,
+ SFX_PROSTITUTE2_SPECIAL_CASE_1,
+ SFX_PROSTITUTE2_SPECIAL_CASE_2,
+ SFX_PROSTITUTE2_SPECIAL_CASE_3,
+ SFX_PROSTITUTE_BUMP_1,
+ SFX_PROSTITUTE_BUMP_2,
+ SFX_PROSTITUTE_BUMP_3,
+ SFX_PROSTITUTE_CHAT_1,
+ SFX_PROSTITUTE_CHAT_2,
+ SFX_PROSTITUTE_CHAT_3,
+ SFX_PROSTITUTE_CHAT_4,
+ SFX_PROSTITUTE_CRASH_CAR_1,
+ SFX_PROSTITUTE_CRASH_CAR_2,
+ SFX_PROSTITUTE_DODGE_1,
+ SFX_PROSTITUTE_DODGE_2,
+ SFX_PROSTITUTE_DRIVER_BLOCKED_1,
+ SFX_PROSTITUTE_DRIVER_BLOCKED_2,
+ SFX_PROSTITUTE_FIGHT_1,
+ SFX_PROSTITUTE_FIGHT_2,
+ SFX_PROSTITUTE_GUN_THREATENED_1,
+ SFX_PROSTITUTE_GUN_THREATENED_2,
+ SFX_PROSTITUTE_JACKED_CAR_1,
+ SFX_PROSTITUTE_JACKED_CAR_2,
+ SFX_PROSTITUTE_JACKED_CAR_3,
+ SFX_PROSTITUTE_JACKED_CAR_4,
+ SFX_PROSTITUTE_SHOCKED_1,
+ SFX_PROSTITUTE_SHOCKED_2,
+ SFX_PROSTITUTE_SHOCKED_3,
+ SFX_P_MAN1_BUMP_1,
+ SFX_P_MAN1_BUMP_2,
+ SFX_P_MAN1_BUMP_3,
+ SFX_P_MAN1_CHAT_1,
+ SFX_P_MAN1_CHAT_2,
+ SFX_P_MAN1_CHAT_3,
+ SFX_P_MAN1_CRASH_CAR_1,
+ SFX_P_MAN1_CRASH_CAR_2,
+ SFX_P_MAN1_DODGE_1,
+ SFX_P_MAN1_DODGE_2,
+ SFX_P_MAN1_DRIVER_BLOCKED_1,
+ SFX_P_MAN1_DRIVER_BLOCKED_2,
+ SFX_P_MAN1_FIGHT_1,
+ SFX_P_MAN1_FIGHT_2,
+ SFX_P_MAN1_FIGHT_3,
+ SFX_P_MAN1_GUN_THREATENED_1,
+ SFX_P_MAN1_GUN_THREATENED_2,
+ SFX_P_MAN1_JACKED_CAR_1,
+ SFX_P_MAN1_JACKED_CAR_2,
+ SFX_P_MAN1_JACKED_CAR_3,
+ SFX_P_MAN2_BUMP_1,
+ SFX_P_MAN2_BUMP_2,
+ SFX_P_MAN2_BUMP_3,
+ SFX_P_MAN2_CHAT_1,
+ SFX_P_MAN2_CHAT_2,
+ SFX_P_MAN2_CHAT_3,
+ SFX_P_MAN2_CHAT_4,
+ SFX_P_MAN2_CRASH_CAR_1,
+ SFX_P_MAN2_CRASH_CAR_2,
+ SFX_P_MAN2_DODGE_1,
+ SFX_P_MAN2_DODGE_2,
+ SFX_P_MAN2_DRIVER_BLOCKED_1,
+ SFX_P_MAN2_DRIVER_BLOCKED_2,
+ SFX_P_MAN2_FIGHT_1,
+ SFX_P_MAN2_FIGHT_2,
+ SFX_P_MAN2_FIGHT_3,
+ SFX_P_MAN2_FIGHT_4,
+ SFX_P_MAN2_GUN_THREATENED_1,
+ SFX_P_MAN2_GUN_THREATENED_2,
+ SFX_P_MAN2_JACKED_CAR_1,
+ SFX_P_MAN2_JACKED_CAR_2,
+ SFX_P_MAN2_JACKED_CAR_3,
+ SFX_P_MAN2_SHOCKED_1,
+ SFX_P_WOM1_BUMP_1,
+ SFX_P_WOM1_BUMP_2,
+ SFX_P_WOM1_BUMP_3,
+ SFX_P_WOM1_CHAT_1,
+ SFX_P_WOM1_CHAT_2,
+ SFX_P_WOM1_CHAT_3,
+ SFX_P_WOM1_CHAT_4,
+ SFX_P_WOM1_CRASH_CAR_1,
+ SFX_P_WOM1_CRASH_CAR_2,
+ SFX_P_WOM1_DODGE_1,
+ SFX_P_WOM1_DODGE_2,
+ SFX_P_WOM1_DRIVER_BLOCKED_1,
+ SFX_P_WOM1_DRIVER_BLOCKED_2,
+ SFX_P_WOM1_FIGHT_1,
+ SFX_P_WOM1_FIGHT_2,
+ SFX_P_WOM1_FIGHT_3,
+ SFX_P_WOM1_GUN_THREATENED_1,
+ SFX_P_WOM1_GUN_THREATENED_2,
+ SFX_P_WOM1_JACKED_CAR_1,
+ SFX_P_WOM1_JACKED_CAR_2,
+ SFX_P_WOM1_JACKED_CAR_3,
+ SFX_P_WOM1_SHOCKED_1,
+ SFX_P_WOM2_BUMP_1,
+ SFX_P_WOM2_BUMP_2,
+ SFX_P_WOM2_BUMP_3,
+ SFX_P_WOM2_CHAT_1,
+ SFX_P_WOM2_CHAT_2,
+ SFX_P_WOM2_CHAT_3,
+ SFX_P_WOM2_CHAT_4,
+ SFX_P_WOM2_CRASH_CAR_1,
+ SFX_P_WOM2_CRASH_CAR_2,
+ SFX_P_WOM2_DODGE_1,
+ SFX_P_WOM2_DODGE_2,
+ SFX_P_WOM2_DRIVER_BLOCKED_1,
+ SFX_P_WOM2_DRIVER_BLOCKED_2,
+ SFX_P_WOM2_FIGHT_1,
+ SFX_P_WOM2_FIGHT_2,
+ SFX_P_WOM2_FIGHT_3,
+ SFX_P_WOM2_GUN_THREATENED_1,
+ SFX_P_WOM2_GUN_THREATENED_2,
+ SFX_P_WOM2_JACKED_CAR_1,
+ SFX_P_WOM2_JACKED_CAR_2,
+ SFX_P_WOM2_SHOCKED_1,
+ SFX_RAC1_AA,
+ SFX_RAC1_AB,
+ SFX_RAC1_AC,
+ SFX_RAC1_AD,
+ SFX_RAC1_AE,
+ SFX_RAC1_AF,
+ SFX_RAC1_AG,
+ SFX_RAC2_AA,
+ SFX_RAC2_AB,
+ SFX_RAC2_AC,
+ SFX_RAC2_AD,
+ SFX_RAC2_AE,
+ SFX_RAC2_AF,
+ SFX_RAC3_AB,
+ SFX_RAC3_AC,
+ SFX_RAC3_AD,
+ SFX_RAC3_AE,
+ SFX_RAC3_AF,
+ SFX_RAC3_AG,
+ SFX_RAYS1AA,
+ SFX_RAYS1AB,
+ SFX_RAYS1AC,
+ SFX_RAYS1BA,
+ SFX_RAYS1BB,
+ SFX_RAYS1CA,
+ SFX_RAYS1CB,
+ SFX_RAYS1CC,
+ SFX_RAYS1CD,
+ SFX_RAYS1CE,
+ SFX_RAYS1CF,
+ SFX_RAYS1DA,
+ SFX_RAYS1DB,
+ SFX_RAYS1DC,
+ SFX_RAYS2AA,
+ SFX_RAYS2AB,
+ SFX_RAYS2AD,
+ SFX_RAYS2AE,
+ SFX_RAYS2AF,
+ SFX_RAYS2AG,
+ SFX_RAYS2AH,
+ SFX_RAYS2AI,
+ SFX_RAYS2BA,
+ SFX_RAYS2BB,
+ SFX_RAYS2CA,
+ SFX_RAYS2CB,
+ SFX_RAYS2DA,
+ SFX_RAYS2DB,
+ SFX_RAYS2EA,
+ SFX_RAYS2EB,
+ SFX_RAYS4AA,
+ SFX_RAYS4AB,
+ SFX_RAYS4AC,
+ SFX_RAYS4AD,
+ SFX_RAYS4AE,
+ SFX_RAYS4AF,
+ SFX_RAYS4BA,
+ SFX_RAYS4BB,
+ SFX_RAYS4BC,
+ SFX_RAYS4BD,
+ SFX_RAYS4BE,
+ SFX_RAYS4BF,
+ SFX_RAYS4BG,
+ SFX_RAYS5AA,
+ SFX_RAYS5AB,
+ SFX_RAYS5AC,
+ SFX_RAYS5AD,
+ SFX_RAYS5AE,
+ SFX_RAYS5AF,
+ SFX_RAYS5AG,
+ SFX_RAYS5AH,
+ SFX_RAYS5AI,
+ SFX_RAYS5BA,
+ SFX_RAYS5BB,
+ SFX_RMN_AA,
+ SFX_RMN_AB,
+ SFX_RMN_AC,
+ SFX_RMN_AD,
+ SFX_RMN_AE,
+ SFX_RMN_AF,
+ SFX_RMN_AG,
+ SFX_RMN_AH,
+ SFX_RMN_AI,
+ SFX_RMN_AJ,
+ SFX_RMN_AK,
+ SFX_RUNPAST,
+ SFX_SAL1_AA,
+ SFX_SAL1_AB,
+ SFX_SAL1_AC,
+ SFX_SAL1_AE,
+ SFX_SAL1_BA,
+ SFX_SAL1_BB,
+ SFX_SAL1_BC,
+ SFX_SAL1_BD,
+ SFX_SAL2_AA,
+ SFX_SAL2_AB,
+ SFX_SAL2_AC,
+ SFX_SAL2_AD,
+ SFX_SAL2_AF,
+ SFX_SAL2_AG,
+ SFX_SAL2_BA,
+ SFX_SAL2_BB,
+ SFX_SAL2_BC,
+ SFX_SAL2_BD,
+ SFX_SAL2_CA,
+ SFX_SAL2_CB,
+ SFX_SAL2_CC,
+ SFX_SAL2_CD,
+ SFX_SAL2_CE,
+ SFX_SAL2_CF,
+ SFX_SAL2_CG,
+ SFX_SAL2_CH,
+ SFX_SAL2_CI,
+ SFX_SAL2_CJ,
+ SFX_SAL2_CK,
+ SFX_SAL2_CL,
+ SFX_SAL2_CM,
+ SFX_SAL2_CN,
+ SFX_SAL2_CO,
+ SFX_SAL2_CP,
+ SFX_SAL2_CQ,
+ SFX_SAL2_CR,
+ SFX_SAL2_CS,
+ SFX_SAL2_CT,
+ SFX_SAL2_CU,
+ SFX_SAL2_CV,
+ SFX_SAL2_DA,
+ SFX_SAL2_DB,
+ SFX_SAL2_DC,
+ SFX_SAL2_DD,
+ SFX_SAL2_DE,
+ SFX_SAL2_EA,
+ SFX_SAL3_AA,
+ SFX_SAL3_AD,
+ SFX_SAL3_AE,
+ SFX_SAL3_AF,
+ SFX_SAL3_AG,
+ SFX_SAL3_AI,
+ SFX_SAL3_BA,
+ SFX_SAL3_BB,
+ SFX_SAL3_CA,
+ SFX_SAL3_CB,
+ SFX_SAL3_DA,
+ SFX_SAL4_AA,
+ SFX_SAL4_AB,
+ SFX_SAL4_AC,
+ SFX_SAL4_AD,
+ SFX_SAL4_AE,
+ SFX_SAL4_AF,
+ SFX_SAL4_AH,
+ SFX_SAL4_AI,
+ SFX_SAL4_AJ,
+ SFX_SAL4_BA,
+ SFX_SAL4_CA,
+ SFX_SAL4_CB,
+ SFX_SAL4_CC,
+ SFX_SAL4_CD,
+ SFX_SAL4_CE,
+ SFX_SAL4_CF,
+ SFX_SAL4_CG,
+ SFX_SAL4_CH,
+ SFX_SAL4_CI,
+ SFX_SAL4_CJ,
+ SFX_SAL4_CK,
+ SFX_SAL4_CL,
+ SFX_SAL4_CM,
+ SFX_SAL4_CN,
+ SFX_SAL4_CO,
+ SFX_SAL4_CP,
+ SFX_SAL4_CQ,
+ SFX_SAL4_DA,
+ SFX_SAL4_EA,
+ SFX_SAL5_AA,
+ SFX_SAL5_AB,
+ SFX_SAL5_AD,
+ SFX_SAL5_AE,
+ SFX_SAL5_AF,
+ SFX_SAL5_AG,
+ SFX_SAL5_AH,
+ SFX_SAL5_AI,
+ SFX_SAL5_AJ,
+ SFX_SAL6_AA,
+ SFX_SAL6_AB,
+ SFX_SAL6_AC,
+ SFX_SAL6_AE,
+ SFX_SAL6_AF,
+ SFX_SAL6_AG,
+ SFX_SAL6_AH,
+ SFX_SAL6_AI,
+ SFX_SAL6_AJ,
+ SFX_SAL6_BA,
+ SFX_SAL6_BB,
+ SFX_SAL6_BC,
+ SFX_SAL6_BD,
+ SFX_SAL6_BE,
+ SFX_SAL6_BF,
+ SFX_SAL6_BH,
+ SFX_SAL6_BJ,
+ SFX_SAL6_BK,
+ SFX_SAL6_CA,
+ SFX_SAL6_CB,
+ SFX_SAL6_CC,
+ SFX_SAL6_CD,
+ SFX_SAL7_AA,
+ SFX_SAL7_AB,
+ SFX_SAL7_AC,
+ SFX_SAL7_AD,
+ SFX_SAL7_AE,
+ SFX_SAL7_AF,
+ SFX_SAL7_AG,
+ SFX_SAL7_AI,
+ SFX_SAL7_AJ,
+ SFX_SAL7_AK,
+ SFX_SAL7_BA,
+ SFX_SAL7_BB,
+ SFX_SAL7_BC,
+ SFX_SAL7_BD,
+ SFX_SAL7_BE,
+ SFX_SAL7_BF,
+ SFX_SAL7_BG,
+ SFX_SAL7_BH,
+ SFX_SAL7_CA,
+ SFX_SAL7_CB,
+ SFX_SAL7_CC,
+ SFX_SAL7_CD,
+ SFX_SAL8_AA,
+ SFX_SAL8_AB,
+ SFX_SAL8_AC,
+ SFX_SAL8_BA,
+ SFX_SAL8_BC,
+ SFX_SAL8_BD,
+ SFX_SAL8_BE,
+ SFX_SAL8_BF,
+ SFX_SAL8_CA,
+ SFX_SAL8_CC,
+ SFX_SAL8_DA,
+ SFX_SAL8_DB,
+ SFX_SAL8_DC,
+ SFX_SAL8_EA,
+ SFX_SAL8_EC,
+ SFX_SAL8_ED,
+ SFX_SAL8_EE,
+ SFX_SAL8_FA,
+ SFX_SAL8_GA,
+ SFX_SAL8_GB,
+ SFX_SAL8_HA,
+ SFX_SAL8_HB,
+ SFX_SAL8_HC,
+ SFX_SAL8_HD,
+ SFX_SAL8_HE,
+ SFX_SAL8_HF,
+ SFX_SAL8_HG,
+ SFX_SAL8_HH,
+ SFX_SALH1AA,
+ SFX_SALH1AB,
+ SFX_SALH1BA,
+ SFX_SALH1BB,
+ SFX_SALH1CA,
+ SFX_SALH1CB,
+ SFX_SALH1DA,
+ SFX_SALH1EA,
+ SFX_SALH1EB,
+ SFX_SALH1FB,
+ SFX_SALH1FC,
+ SFX_SALH1FG,
+ SFX_SALH1GA,
+ SFX_SALH1GB,
+ SFX_SALH1HA,
+ SFX_SALH1HB,
+ SFX_SALH2AA,
+ SFX_SALH2AB,
+ SFX_SALH2AC,
+ SFX_SALH2AD,
+ SFX_SALH2AE,
+ SFX_SALH2AF,
+ SFX_SALH2AG,
+ SFX_SALH2AH,
+ SFX_SALH2BA,
+ SFX_SALH2BB,
+ SFX_SALH2BC,
+ SFX_SALH2BD,
+ SFX_SALH2BE,
+ SFX_SALH2BF,
+ SFX_SALH2BG,
+ SFX_SALH2BH,
+ SFX_SALH2BI,
+ SFX_SALH2CA,
+ SFX_SALH3AA,
+ SFX_SALH3AB,
+ SFX_SALH3AC,
+ SFX_SALH3AD,
+ SFX_SALH3AE,
+ SFX_SALH3AF,
+ SFX_SALH3AG,
+ SFX_SALH3AH,
+ SFX_SALH3AI,
+ SFX_SALH3AJ,
+ SFX_SALH3AK,
+ SFX_SALH3BA,
+ SFX_SALH3BB,
+ SFX_SALH3CA,
+ SFX_SALH3CC,
+ SFX_SALH3CD,
+ SFX_SALH4AA,
+ SFX_SALH4AB,
+ SFX_SALH4AC,
+ SFX_SALH4AD,
+ SFX_SALH4AE,
+ SFX_SALH4AF,
+ SFX_SALH4AG,
+ SFX_SALH4AH,
+ SFX_SALH4AI,
+ SFX_SALH4AJ,
+ SFX_SALH4BA,
+ SFX_SALH4BB,
+ SFX_SALH4BC,
+ SFX_SALH4CA,
+ SFX_SALH4CB,
+ SFX_SALH5CA,
+ SFX_SALH5CB,
+ SFX_SALH5CC,
+ SFX_SALH5DA,
+ SFX_SALH5DB,
+ SFX_SALH5EA,
+ SFX_SALH5EB,
+ SFX_SALH5FA,
+ SFX_SALH5GA,
+ SFX_SALH5GB,
+ SFX_SALH5GC,
+ SFX_SALH5HA,
+ SFX_SALH5IA,
+ SFX_SALH5IB,
+ SFX_SALH5JA,
+ SFX_SALH5KA,
+ SFX_SALH5KB,
+ SFX_SALH5LA,
+ SFX_SALH5LB,
+ SFX_SALH5MA,
+ SFX_SALH5MB,
+ SFX_SALH5MC,
+ SFX_SALH5NA,
+ SFX_SALH5OA,
+ SFX_SALH5OB,
+ SFX_SALH5OC,
+ SFX_SALH5OD,
+ SFX_SALH5OE,
+ SFX_SALH5OF,
+ SFX_SALH5OG,
+ SFX_SALH5OH,
+ SFX_SALH5OI,
+ SFX_SALH5OJ,
+ SFX_SALH5OK,
+ SFX_SALS1AA,
+ SFX_SALS1AB,
+ SFX_SALS1AC,
+ SFX_SALS1AD,
+ SFX_SALS1AE,
+ SFX_SALS1AF,
+ SFX_SALS1AG,
+ SFX_SALS1AH,
+ SFX_SALS1AI,
+ SFX_SALS1BA,
+ SFX_SALS1BB,
+ SFX_SALS1BC,
+ SFX_SALS1BD,
+ SFX_SALS2AA,
+ SFX_SALS2AB,
+ SFX_SALS2AC,
+ SFX_SALS2AD,
+ SFX_SALS2BA,
+ SFX_SALS2BB,
+ SFX_SALS2BC,
+ SFX_SALS2BD,
+ SFX_SALS2BE,
+ SFX_SALS2BF,
+ SFX_SALS2CA,
+ SFX_SALS2CB,
+ SFX_SALS2CC,
+ SFX_SALS2CD,
+ SFX_SALS2CE,
+ SFX_SALS3AA,
+ SFX_SALS3AB,
+ SFX_SALS3AC,
+ SFX_SALS3BA,
+ SFX_SALS3BB,
+ SFX_SALS3BC,
+ SFX_SALS3BD,
+ SFX_SALS3CA,
+ SFX_SALS3CB,
+ SFX_SALS3CC,
+ SFX_SALS3CD,
+ SFX_SALS3CE,
+ SFX_SALS3CF,
+ SFX_SALS3CG,
+ SFX_SALS3DA,
+ SFX_SALS3DB,
+ SFX_SALS3DC,
+ SFX_SALS3DD,
+ SFX_SALS3DE,
+ SFX_SALS3DF,
+ SFX_SALS3DG,
+ SFX_SALS3DH,
+ SFX_SALS3DI,
+ SFX_SALS4AA,
+ SFX_SALS4AB,
+ SFX_SALS4AC,
+ SFX_SALS4AD,
+ SFX_SALS4AE,
+ SFX_SALS4AF,
+ SFX_SALS4BA,
+ SFX_SALS4BB,
+ SFX_SALS4BC,
+ SFX_SALS4BD,
+ SFX_SALS4BE,
+ SFX_SALS4BF,
+ SFX_SALS4BG,
+ SFX_SALS4BH,
+ SFX_SALS5AA,
+ SFX_SALS5AB,
+ SFX_SALS5AC,
+ SFX_SALS5AD,
+ SFX_SALS5AE,
+ SFX_SALS5AF,
+ SFX_SALS5BA,
+ SFX_SALS5BB,
+ SFX_SALS5BC,
+ SFX_SALS5BD,
+ SFX_SALS5BE,
+ SFX_SALS5BF,
+ SFX_SALS5BG,
+ SFX_SALS5CA,
+ SFX_SALS5CB,
+ SFX_SALS5CC,
+ SFX_SALS5CD,
+ SFX_SALS5CE,
+ SFX_SALS5CF,
+ SFX_SALS5CG,
+ SFX_SALS6AA,
+ SFX_SALS6AB,
+ SFX_SALS6AD,
+ SFX_SALS6AE,
+ SFX_SALS6AF,
+ SFX_SALS6AG,
+ SFX_SALS6AH,
+ SFX_SALVATORE_CRASH_CAR_1,
+ SFX_SALVATORE_CRASH_CAR_2,
+ SFX_SALVATORE_CRASH_CAR_3,
+ SFX_SALVATORE_CRASH_CAR_4,
+ SFX_SALVATORE_DRIVER_BLOCKED_1,
+ SFX_SALVATORE_DRIVER_BLOCKED_2,
+ SFX_SALVATORE_DRIVER_BLOCKED_3,
+ SFX_SALVATORE_JACKED_CAR_1,
+ SFX_SALVATORE_JACKED_CAR_2,
+ SFX_SALVATORE_SHOCKED_1,
+ SFX_SALVATORE_SHOCKED_2,
+ SFX_SALX_AA,
+ SFX_SALX_AB,
+ SFX_SALX_AC,
+ SFX_SALX_AD,
+ SFX_SALX_AE,
+ SFX_SALX_AF,
+ SFX_SALX_AG,
+ SFX_SALX_AH,
+ SFX_SALX_AI,
+ SFX_SALX_AK,
+ SFX_SALX_AL,
+ SFX_SALX_AM,
+ SFX_SALX_AN,
+ SFX_SALX_AO,
+ SFX_SALX_AP,
+ SFX_SALX_AQ,
+ SFX_SALX_AR,
+ SFX_SALX_AS,
+ SFX_SCUM_MAN_BUMP_1,
+ SFX_SCUM_MAN_BUMP_2,
+ SFX_SCUM_MAN_BUMP_3,
+ SFX_SCUM_MAN_CHAT_1,
+ SFX_SCUM_MAN_CHAT_2,
+ SFX_SCUM_MAN_CHAT_3,
+ SFX_SCUM_MAN_CHAT_4,
+ SFX_SCUM_MAN_CRASH_CAR_1,
+ SFX_SCUM_MAN_CRASH_CAR_2,
+ SFX_SCUM_MAN_DODGE_1,
+ SFX_SCUM_MAN_DODGE_2,
+ SFX_SCUM_MAN_DRIVER_BLOCKED_1,
+ SFX_SCUM_MAN_DRIVER_BLOCKED_2,
+ SFX_SCUM_MAN_FIGHT_1,
+ SFX_SCUM_MAN_FIGHT_2,
+ SFX_SCUM_MAN_FIGHT_3,
+ SFX_SCUM_MAN_GUN_THREATENED_1,
+ SFX_SCUM_MAN_GUN_THREATENED_2,
+ SFX_SCUM_MAN_JACKED_CAR_1,
+ SFX_SCUM_MAN_JACKED_CAR_2,
+ SFX_SCUM_MAN_JACKED_CAR_3,
+ SFX_SCUM_MAN_SHOCKED_1,
+ SFX_SCUM_MAN_SPECIAL_CASE_1,
+ SFX_SCUM_MAN_SPECIAL_CASE_2,
+ SFX_SCUM_MAN_SPECIAL_CASE_3,
+ SFX_SCUM_WOM_BUMP_1,
+ SFX_SCUM_WOM_BUMP_2,
+ SFX_SCUM_WOM_BUMP_3,
+ SFX_SCUM_WOM_CAR_JACKED_1,
+ SFX_SCUM_WOM_CAR_JACKED_2,
+ SFX_SCUM_WOM_CHAT_1,
+ SFX_SCUM_WOM_CHAT_2,
+ SFX_SCUM_WOM_CHAT_3,
+ SFX_SCUM_WOM_CHAT_4,
+ SFX_SCUM_WOM_CRASH_CAR_1,
+ SFX_SCUM_WOM_CRASH_CAR_2,
+ SFX_SCUM_WOM_DODGE_1,
+ SFX_SCUM_WOM_DODGE_2,
+ SFX_SCUM_WOM_DRIVER_BLOCKED_1,
+ SFX_SCUM_WOM_DRIVER_BLOCKED_2,
+ SFX_SCUM_WOM_FIGHT_1,
+ SFX_SCUM_WOM_FIGHT_2,
+ SFX_SCUM_WOM_FIGHT_3,
+ SFX_SCUM_WOM_GUN_THREATENED_1,
+ SFX_SCUM_WOM_GUN_THREATENED_2,
+ SFX_SCUM_WOM_SHOCKED_1,
+ SFX_SFX_AIRHORN_LEFT,
+ SFX_SFX_AIRHORN_RIGHT,
+ SFX_SFX_ANG1_AA,
+ SFX_SFX_ANG1_AB,
+ SFX_SFX_ANG1_AC,
+ SFX_SFX_ANG1_AD,
+ SFX_SFX_ANG1_AE,
+ SFX_SFX_ANG1_AF,
+ SFX_SFX_ANG1_AG,
+ SFX_SFX_ANG1_AH,
+ SFX_SFX_ANG1_AI,
+ SFX_SFX_ANG1_AJ,
+ SFX_SFX_ANG1_AK,
+ SFX_SFX_ANG1_AL,
+ SFX_SFX_ANG1_AM,
+ SFX_SFX_ANG1_AN,
+ SFX_SFX_ANG1_AO,
+ SFX_SFX_ANG1_AP,
+ SFX_SFX_ANG1_AQ,
+ SFX_SFX_ANG1_AR,
+ SFX_SFX_ANG1_AS,
+ SFX_SFX_ANG1_AT,
+ SFX_SFX_ANG1_AU,
+ SFX_SFX_ANG1_AV,
+ SFX_SFX_ANG1_AW,
+ SFX_SFX_BLOW_ROOF,
+ SFX_SFX_BNK1_12,
+ SFX_SFX_CAMERA_LEFT,
+ SFX_SFX_CAMERA_RIGHT,
+ SFX_SFX_CHEER1,
+ SFX_SFX_CHEER2,
+ SFX_SFX_CHEER3,
+ SFX_SFX_CHEER4,
+ SFX_SFX_CRIME_1,
+ SFX_SFX_CRIME_10,
+ SFX_SFX_CRIME_11,
+ SFX_SFX_CRIME_12,
+ SFX_SFX_CRIME_2,
+ SFX_SFX_CRIME_3,
+ SFX_SFX_CRIME_4,
+ SFX_SFX_CRIME_5,
+ SFX_SFX_CRIME_6,
+ SFX_SFX_CRIME_7,
+ SFX_SFX_CRIME_8,
+ SFX_SFX_CRIME_9,
+ SFX_SFX_IN_LIFT,
+ SFX_SFX_JDT3_AA,
+ SFX_SFX_JDT3_AB,
+ SFX_SFX_JDT3_AC,
+ SFX_SFX_JDT3_AD,
+ SFX_SFX_JDT3_AE,
+ SFX_SFX_JDT3_AG,
+ SFX_SFX_JDT3_AH,
+ SFX_SFX_JDT3_BA,
+ SFX_SFX_JDT3_BB,
+ SFX_SFX_JDT3_BC,
+ SFX_SFX_JDT3_BD,
+ SFX_SFX_JDT3_BE,
+ SFX_SFX_JDT3_BF,
+ SFX_SFX_LANAMU1,
+ SFX_SFX_LANAMU2,
+ SFX_SFX_LANSTP1,
+ SFX_SFX_LANSTP2,
+ SFX_SFX_LIFT_BELL,
+ SFX_SFX_LIFT_CLOSE,
+ SFX_SFX_LIFT_OPEN,
+ SFX_SFX_LIFT_RUNNING,
+ SFX_SFX_MAR4_AA,
+ SFX_SFX_MAR4_AB,
+ SFX_SFX_MAR4_AC,
+ SFX_SFX_MAR4_AD,
+ SFX_SFX_MAR4_BA,
+ SFX_SFX_MAR4_BB,
+ SFX_SFX_MAR4_BC,
+ SFX_SFX_MAR4_BD,
+ SFX_SFX_MAR4_BE,
+ SFX_SFX_MAR4_BF,
+ SFX_SFX_MAR4_BG,
+ SFX_SFX_RING,
+ SFX_SFX_OOH1,
+ SFX_SFX_OOH2,
+ SFX_SFX_PAGER_RING,
+ SFX_SFX_POLICE_RADIO_AMBULANCE,
+ SFX_SFX_POLICE_RADIO_BLACK,
+ SFX_SFX_POLICE_RADIO_BLUE,
+ SFX_SFX_POLICE_RADIO_BOAT,
+ SFX_SFX_POLICE_RADIO_BUGGY,
+ SFX_SFX_POLICE_RADIO_BUS,
+ SFX_SFX_POLICE_RADIO_COACH,
+ SFX_SFX_POLICE_RADIO_CRUISER,
+ SFX_SFX_POLICE_RADIO_DINGHY,
+ SFX_SFX_POLICE_RADIO_DOWNTOWN,
+ SFX_SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL,
+ SFX_SFX_POLICE_RADIO_FIRE_TRUCK,
+ SFX_SFX_POLICE_RADIO_GARBAGE_TRUCK,
+ SFX_SFX_POLICE_RADIO_GOLF_CART,
+ SFX_SFX_POLICE_RADIO_GREEN,
+ SFX_SFX_POLICE_RADIO_GREY,
+ SFX_SFX_POLICE_RADIO_HEARSE,
+ SFX_SFX_POLICE_RADIO_HELICOPTER,
+ SFX_SFX_POLICE_RADIO_ICE_CREAM_VAN,
+ SFX_SFX_POLICE_RADIO_LEAF_LINKS,
+ SFX_SFX_POLICE_RADIO_LITTLE_HAITI,
+ SFX_SFX_POLICE_RADIO_LITTLE_HAVANA,
+ SFX_SFX_POLICE_RADIO_LOWRIDER,
+ SFX_SFX_POLICE_RADIO_MOPED,
+ SFX_SFX_POLICE_RADIO_MOTOBIKE,
+ SFX_SFX_POLICE_RADIO_OCEAN_BEACH,
+ SFX_SFX_POLICE_RADIO_OFFROAD,
+ SFX_SFX_POLICE_RADIO_ORANGE,
+ SFX_SFX_POLICE_RADIO_PICKUP,
+ SFX_SFX_POLICE_RADIO_PLANE,
+ SFX_SFX_POLICE_RADIO_POLICE_CAR,
+ SFX_SFX_POLICE_RADIO_PRAWN_ISLAND,
+ SFX_SFX_POLICE_RADIO_PURPLE,
+ SFX_SFX_POLICE_RADIO_RED,
+ SFX_SFX_POLICE_RADIO_RIG,
+ SFX_SFX_POLICE_RADIO_SEDAN,
+ SFX_SFX_POLICE_RADIO_SILVER,
+ SFX_SFX_POLICE_RADIO_SPEEDBOAT,
+ SFX_SFX_POLICE_RADIO_SPORTS_CAR,
+ SFX_SFX_POLICE_RADIO_STARFISH_ISLAND,
+ SFX_SFX_POLICE_RADIO_STATION_WAGON,
+ SFX_SFX_POLICE_RADIO_STRETCH,
+ SFX_SFX_POLICE_RADIO_SWAT_VAN,
+ SFX_SFX_POLICE_RADIO_TANK,
+ SFX_SFX_POLICE_RADIO_TAXI,
+ SFX_SFX_POLICE_RADIO_TRUCK,
+ SFX_SFX_POLICE_RADIO_TUDOOR,
+ SFX_SFX_POLICE_RADIO_VAN,
+ SFX_SFX_POLICE_RADIO_VICEPORT,
+ SFX_SFX_POLICE_RADIO_VICE_CITY,
+ SFX_SFX_POLICE_RADIO_VICE_CITY_BEACH,
+ SFX_SFX_POLICE_RADIO_VICE_CITY_MAINLAND,
+ SFX_SFX_POLICE_RADIO_VICE_POINT,
+ SFX_SFX_POLICE_RADIO_WASHINGTON_BEACH,
+ SFX_SFX_POLICE_RADIO_WHITE,
+ SFX_SFX_POLICE_RADIO_YELLOW,
+ SFX_SFX_PSYCH_1,
+ SFX_SFX_PSYCH_2,
+ SFX_SFX_SAL7_BA,
+ SFX_SFX_SAL7_BB,
+ SFX_SFX_SAL7_BC,
+ SFX_SFX_SAL7_BD,
+ SFX_SFX_SAL7_BE,
+ SFX_SFX_SAL7_BF,
+ SFX_SFX_SAL7_BG,
+ SFX_SFX_SAL7_BH,
+ SFX_SFX_SAL7_CA,
+ SFX_SFX_SAL7_CB,
+ SFX_SFX_SAL7_CC,
+ SFX_SFX_SAL7_CD,
+ SFX_SFX_SFX_01,
+ SFX_SFX_SFX_02,
+ SFX_SFX_SNIPER_SHOT_1,
+ SFX_SFX_SNIPER_SHOT_2,
+ SFX_SFX_TAX1_1,
+ SFX_SFX_TAX1_2,
+ SFX_SFX_TAX1_3,
+ SFX_SFX_TAX1_4,
+ SFX_SFX_TAX1_5,
+ SFX_SFX_TAX2_1,
+ SFX_SFX_TAX2_2,
+ SFX_SFX_TAX2_3,
+ SFX_SFX_TAX2_4,
+ SFX_SFX_TAX2_5,
+ SFX_SFX_TAX2_6,
+ SFX_SFX_TAX2_7,
+ SFX_SFX_TAX3_1,
+ SFX_SFX_TAX3_2,
+ SFX_SFX_TAX3_3,
+ SFX_SFX_TAX3_4,
+ SFX_SFX_TAX3_5,
+ SFX_SFX_VICE_VOICE_1_ARREST_1,
+ SFX_SFX_VICE_VOICE_1_ARREST_2,
+ SFX_SFX_VICE_VOICE_1_ARREST_3,
+ SFX_SFX_VICE_VOICE_1_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_2_ARREST_1,
+ SFX_SFX_VICE_VOICE_2_ARREST_2,
+ SFX_SFX_VICE_VOICE_2_ARREST_3,
+ SFX_SFX_VICE_VOICE_2_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_3_ARREST_1,
+ SFX_SFX_VICE_VOICE_3_ARREST_2,
+ SFX_SFX_VICE_VOICE_3_ARREST_3,
+ SFX_SFX_VICE_VOICE_3_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_4_ARREST_1,
+ SFX_SFX_VICE_VOICE_4_ARREST_2,
+ SFX_SFX_VICE_VOICE_4_ARREST_3,
+ SFX_SFX_VICE_VOICE_4_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_5_ARREST_1,
+ SFX_SFX_VICE_VOICE_5_ARREST_2,
+ SFX_SFX_VICE_VOICE_5_ARREST_3,
+ SFX_SFX_VICE_VOICE_5_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_6_ARREST_1,
+ SFX_SFX_VICE_VOICE_6_ARREST_2,
+ SFX_SFX_VICE_VOICE_6_ARREST_3,
+ SFX_SFX_VICE_VOICE_6_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_WILLIE_BIKE_REV,
+ SFX_SFX_WILLIE_CAR_REV,
+ SFX_SHOPBELL,
+ SFX_SHOPPER1_BUMP_1,
+ SFX_SHOPPER1_BUMP_2,
+ SFX_SHOPPER1_BUMP_3,
+ SFX_SHOPPER1_CHAT_1,
+ SFX_SHOPPER1_CHAT_2,
+ SFX_SHOPPER1_CHAT_3,
+ SFX_SHOPPER1_CHAT_4,
+ SFX_SHOPPER1_CRASH_CAR_1,
+ SFX_SHOPPER1_CRASH_CAR_2,
+ SFX_SHOPPER1_DODGE_1,
+ SFX_SHOPPER1_DODGE_2,
+ SFX_SHOPPER1_DRIVER_BLOCKED_1,
+ SFX_SHOPPER1_DRIVER_BLOCKED_2,
+ SFX_SHOPPER1_FIGHT_1,
+ SFX_SHOPPER1_FIGHT_2,
+ SFX_SHOPPER1_FIGHT_3,
+ SFX_SHOPPER1_GUN_THREATENED_1,
+ SFX_SHOPPER1_GUN_THREATENED_2,
+ SFX_SHOPPER1_JACKED_CAR_1,
+ SFX_SHOPPER1_JACKED_CAR_2,
+ SFX_SHOPPER1_JACKED_CAR_3,
+ SFX_SHOPPER1_SHOCKED_1,
+ SFX_SHOPPER2_BUMP_1,
+ SFX_SHOPPER2_BUMP_2,
+ SFX_SHOPPER2_BUMP_3,
+ SFX_SHOPPER2_CHAT_1,
+ SFX_SHOPPER2_CHAT_2,
+ SFX_SHOPPER2_CHAT_3,
+ SFX_SHOPPER2_CRASH_CAR_1,
+ SFX_SHOPPER2_CRASH_CAR_2,
+ SFX_SHOPPER2_DODGE_1,
+ SFX_SHOPPER2_DODGE_2,
+ SFX_SHOPPER2_DRIVER_BLOCKED_1,
+ SFX_SHOPPER2_DRIVER_BLOCKED_2,
+ SFX_SHOPPER2_FIGHT_1,
+ SFX_SHOPPER2_FIGHT_2,
+ SFX_SHOPPER2_FIGHT_3,
+ SFX_SHOPPER2_GUN_THREATENED_1,
+ SFX_SHOPPER2_GUN_THREATENED_2,
+ SFX_SHOPPER2_JACKED_CAR_1,
+ SFX_SHOPPER2_JACKED_CAR_2,
+ SFX_SHOPPER2_JACKED_CAR_3,
+ SFX_SHOPPER2_SHOCKED_1,
+ SFX_SHOPPER3_BUMP_1,
+ SFX_SHOPPER3_BUMP_2,
+ SFX_SHOPPER3_BUMP_3,
+ SFX_SHOPPER3_CHAT_1,
+ SFX_SHOPPER3_CHAT_2,
+ SFX_SHOPPER3_CHAT_3,
+ SFX_SHOPPER3_CRASH_CAR_1,
+ SFX_SHOPPER3_CRASH_CAR_2,
+ SFX_SHOPPER3_DODGE_1,
+ SFX_SHOPPER3_DODGE_2,
+ SFX_SHOPPER3_DRIVER_BLOCKED_1,
+ SFX_SHOPPER3_DRIVER_BLOCKED_2,
+ SFX_SHOPPER3_FIGHT_1,
+ SFX_SHOPPER3_FIGHT_2,
+ SFX_SHOPPER3_FIGHT_3,
+ SFX_SHOPPER3_GUN_THREATENED_1,
+ SFX_SHOPPER3_GUN_THREATENED_2,
+ SFX_SHOPPER3_JACKED_CAR_1,
+ SFX_SHOPPER3_JACKED_CAR_2,
+ SFX_SHOPPER3_JACKED_CAR_3,
+ SFX_SHOPPER3_SHOCKED_1,
+ SFX_STRE_AA,
+ SFX_STRE_AB,
+ SFX_STRE_AC,
+ SFX_STRE_AD,
+ SFX_STRE_AE,
+ SFX_STRE_AF,
+ SFX_STRE_AG,
+ SFX_STRE_BA,
+ SFX_STRE_BB,
+ SFX_STRE_BC,
+ SFX_STRE_BD,
+ SFX_STRE_BE,
+ SFX_STRE_BF,
+ SFX_STRE_BG,
+ SFX_STRE_CA,
+ SFX_STRE_CB,
+ SFX_STRE_CC,
+ SFX_STUD_MAN_CHAT_1,
+ SFX_STUD_MAN_CHAT_2,
+ SFX_STUD_MAN_CHAT_3,
+ SFX_STUD_MAN_CHAT_4,
+ SFX_STUD_MAN_CRASH_CAR_1,
+ SFX_STUD_MAN_CRASH_CAR_2,
+ SFX_STUD_MAN_DODGE_1,
+ SFX_STUD_MAN_DODGE_2,
+ SFX_STUD_MAN_DRIVER_BLOCKED_1,
+ SFX_STUD_MAN_DRIVER_BLOCKED_2,
+ SFX_STUD_MAN_FIGHT_1,
+ SFX_STUD_MAN_FIGHT_2,
+ SFX_STUD_MAN_FIGHT_3,
+ SFX_STUD_MAN_GUN_THREATENED_1,
+ SFX_STUD_MAN_GUN_THREATENED_2,
+ SFX_STUD_MAN_JACKED_CAR_1,
+ SFX_STUD_MAN_JACKED_CAR_2,
+ SFX_STUD_MAN_JACKED_CAR_3,
+ SFX_STUD_MAN_SHOCKED_1,
+ SFX_STUD_MAN_SPECIAL_CASE_1,
+ SFX_STUD_MAN_SPECIAL_CASE_2,
+ SFX_STUD_MAN_SPECIAL_CASE_3,
+ SFX_STUD_WOM_BUMP_1,
+ SFX_STUD_WOM_BUMP_2,
+ SFX_STUD_WOM_BUMP_3,
+ SFX_STUD_WOM_CHAT_1,
+ SFX_STUD_WOM_CHAT_2,
+ SFX_STUD_WOM_CHAT_3,
+ SFX_STUD_WOM_CHAT_4,
+ SFX_STUD_WOM_CRASH_CAR_1,
+ SFX_STUD_WOM_CRASH_CAR_2,
+ SFX_STUD_WOM_DODGE_1,
+ SFX_STUD_WOM_DODGE_2,
+ SFX_STUD_WOM_DRIVER_BLOCKED_1,
+ SFX_STUD_WOM_DRIVER_BLOCKED_2,
+ SFX_STUD_WOM_FIGHT_1,
+ SFX_STUD_WOM_FIGHT_2,
+ SFX_STUD_WOM_GUN_THREATENED_1,
+ SFX_STUD_WOM_GUN_THREATENED_2,
+ SFX_STUD_WOM_JACKED_CAR_1,
+ SFX_STUD_WOM_JACKED_CAR_2,
+ SFX_STUD_WOM_JACKED_CAR_3,
+ SFX_STUD_WOM_SHOCKED_1,
+ SFX_ST_MAN_BUMP_1,
+ SFX_ST_MAN_BUMP_2,
+ SFX_ST_MAN_BUMP_3,
+ SFX_ST_MAN_CHAT_1,
+ SFX_ST_MAN_CHAT_2,
+ SFX_ST_MAN_CHAT_3,
+ SFX_ST_MAN_CRASH_CAR_1,
+ SFX_ST_MAN_CRASH_CAR_2,
+ SFX_ST_MAN_DODGE_1,
+ SFX_ST_MAN_DODGE_2,
+ SFX_ST_MAN_DRIVER_BLOCKED_1,
+ SFX_ST_MAN_DRIVER_BLOCKED_2,
+ SFX_ST_MAN_FIGHT_1,
+ SFX_ST_MAN_FIGHT_2,
+ SFX_ST_MAN_GUN_THREATENED_1,
+ SFX_ST_MAN_GUN_THREATENED_2,
+ SFX_ST_MAN_JACKED_CAR_1,
+ SFX_ST_MAN_JACKED_CAR_2,
+ SFX_ST_MAN_JACKED_CAR_3,
+ SFX_ST_WOM_BUMP_1,
+ SFX_ST_WOM_BUMP_2,
+ SFX_ST_WOM_BUMP_3,
+ SFX_ST_WOM_CHAT_1,
+ SFX_ST_WOM_CHAT_2,
+ SFX_ST_WOM_CHAT_3,
+ SFX_ST_WOM_CHAT_4,
+ SFX_ST_WOM_CRASH_CAR_1,
+ SFX_ST_WOM_CRASH_CAR_2,
+ SFX_ST_WOM_DODGE_1,
+ SFX_ST_WOM_DODGE_2,
+ SFX_ST_WOM_DRIVER_BLOCKED_1,
+ SFX_ST_WOM_DRIVER_BLOCKED_2,
+ SFX_ST_WOM_FIGHT_1,
+ SFX_ST_WOM_FIGHT_2,
+ SFX_ST_WOM_FIGHT_3,
+ SFX_ST_WOM_GUN_THREATENED_1,
+ SFX_ST_WOM_GUN_THREATENED_2,
+ SFX_ST_WOM_JACKED_CAR_1,
+ SFX_ST_WOM_JACKED_CAR_2,
+ SFX_ST_WOM_JACKED_CAR_3,
+ SFX_ST_WOM_SHOCKED_1,
+ SFX_SWAT_VOICE_1_ROPE_1,
+ SFX_SWAT_VOICE_1_ROPE_2,
+ SFX_SWAT_VOICE_1_SHOOT_1,
+ SFX_SWAT_VOICE_1_SHOOT_2,
+ SFX_SWAT_VOICE_1_SHOOT_3,
+ SFX_SWAT_VOICE_1_SHOOT_4,
+ SFX_SWAT_VOICE_1_SHOOT_5,
+ SFX_SWAT_VOICE_2_ROPE_1,
+ SFX_SWAT_VOICE_2_ROPE_2,
+ SFX_SWAT_VOICE_2_SHOOT_1,
+ SFX_SWAT_VOICE_2_SHOOT_2,
+ SFX_SWAT_VOICE_2_SHOOT_3,
+ SFX_SWAT_VOICE_2_SHOOT_4,
+ SFX_SWAT_VOICE_2_SHOOT_5,
+ SFX_TAN1_AA,
+ SFX_TAN1_AB,
+ SFX_TAN1_AD,
+ SFX_TAN1_AE,
+ SFX_TAN1_AF,
+ SFX_TAN1_AG,
+ SFX_TAN1_AH,
+ SFX_TAN1_AI,
+ SFX_TAN1_AJ,
+ SFX_TAN2_AA,
+ SFX_TAN2_AB,
+ SFX_TAN2_AC,
+ SFX_TAN2_AE,
+ SFX_TAN2_AF,
+ SFX_TAN2_AG,
+ SFX_TAN2_AH,
+ SFX_TAN2_AJ,
+ SFX_TAN3_AA,
+ SFX_TAN3_AB,
+ SFX_TAN3_AC,
+ SFX_TAN3_AD,
+ SFX_TAN3_AE,
+ SFX_TAN3_AF,
+ SFX_TAN3_AG,
+ SFX_TAN3_AH,
+ SFX_TING,
+ FIRST_PLAYER_COMMENT(SFX_TONI_ANGRY_BUSTED_01),
+ SFX_TONI_ANGRY_BUSTED_02,
+ SFX_TONI_ANGRY_BUSTED_03,
+ SFX_TONI_ANGRY_BUSTED_04,
+ SFX_TONI_ANGRY_BUSTED_05,
+ SFX_TONI_ANGRY_BUSTED_06,
+ SFX_TONI_ANGRY_BUSTED_07,
+ SFX_TONI_ANGRY_BUSTED_08,
+ SFX_TONI_ANGRY_BUSTED_09,
+ SFX_TONI_ANGRY_BUSTED_10,
+ SFX_TONI_ANGRY_BUSTED_11,
+ SFX_TONI_ANGRY_BUSTED_12,
+ SFX_TONI_ANGRY_BUSTED_13,
+ SFX_TONI_ANGRY_BUSTED_14,
+ SFX_TONI_ANGRY_BUSTED_15,
+ SFX_TONI_ANGRY_BUSTED_16,
+ SFX_TONI_ANGRY_CHASED_01,
+ SFX_TONI_ANGRY_CHASED_02,
+ SFX_TONI_ANGRY_CHASED_03,
+ SFX_TONI_ANGRY_CHASED_04,
+ SFX_TONI_ANGRY_CHASED_05,
+ SFX_TONI_ANGRY_CHASED_06,
+ SFX_TONI_ANGRY_CHASED_07,
+ SFX_TONI_ANGRY_CHASED_08,
+ SFX_TONI_ANGRY_CHASED_09,
+ SFX_TONI_ANGRY_CHASED_10,
+ SFX_TONI_ANGRY_CHASED_11,
+ SFX_TONI_ANGRY_CHASED_12,
+ SFX_TONI_ANGRY_CHASED_13,
+ SFX_TONI_ANGRY_CHASED_14,
+ SFX_TONI_ANGRY_CHASED_15,
+ SFX_TONI_ANGRY_CHASED_16,
+ SFX_TONI_ANGRY_CHASED_17,
+ SFX_TONI_ANGRY_CHASED_18,
+ SFX_TONI_ANGRY_CHASED_19,
+ SFX_TONI_ANGRY_CHASED_20,
+ SFX_TONI_ANGRY_CHASED_21,
+ SFX_TONI_ANGRY_CHASED_22,
+ SFX_TONI_ANGRY_CHASED_23,
+ SFX_TONI_ANGRY_CHASED_24,
+ SFX_TONI_ANGRY_CHASED_25,
+ SFX_TONI_ANGRY_CRASH_01,
+ SFX_TONI_ANGRY_CRASH_02,
+ SFX_TONI_ANGRY_CRASH_03,
+ SFX_TONI_ANGRY_CRASH_04,
+ SFX_TONI_ANGRY_CRASH_05,
+ SFX_TONI_ANGRY_CRASH_06,
+ SFX_TONI_ANGRY_CRASH_07,
+ SFX_TONI_ANGRY_CRASH_08,
+ SFX_TONI_ANGRY_CRASH_09,
+ SFX_TONI_ANGRY_CRASH_10,
+ SFX_TONI_ANGRY_CRASH_11,
+ SFX_TONI_ANGRY_CRASH_12,
+ SFX_TONI_ANGRY_CRASH_13,
+ SFX_TONI_ANGRY_CRASH_14,
+ SFX_TONI_ANGRY_CRASH_15,
+ SFX_TONI_ANGRY_CRASH_16,
+ SFX_TONI_ANGRY_CRASH_17,
+ SFX_TONI_ANGRY_CRASH_18,
+ SFX_TONI_ANGRY_CRASH_19,
+ SFX_TONI_ANGRY_CRASH_20,
+ SFX_TONI_ANGRY_CRASH_21,
+ SFX_TONI_ANGRY_CRASH_22,
+ SFX_TONI_ANGRY_CRASH_23,
+ SFX_TONI_ANGRY_CRASH_24,
+ SFX_TONI_ANGRY_CRASH_25,
+ SFX_TONI_ANGRY_CRASH_26,
+ SFX_TONI_ANGRY_CRASH_27,
+ SFX_TONI_ANGRY_CRASH_28,
+ SFX_TONI_ANGRY_CRASH_29,
+ SFX_TONI_ANGRY_FIGHT_01,
+ SFX_TONI_ANGRY_FIGHT_02,
+ SFX_TONI_ANGRY_FIGHT_03,
+ SFX_TONI_ANGRY_FIGHT_04,
+ SFX_TONI_ANGRY_FIGHT_05,
+ SFX_TONI_ANGRY_FIGHT_06,
+ SFX_TONI_ANGRY_FIGHT_07,
+ SFX_TONI_ANGRY_FIGHT_08,
+ SFX_TONI_ANGRY_FIGHT_09,
+ SFX_TONI_ANGRY_FIGHT_10,
+ SFX_TONI_ANGRY_FIGHT_11,
+ SFX_TONI_ANGRY_FIGHT_12,
+ SFX_TONI_ANGRY_FIGHT_13,
+ SFX_TONI_ANGRY_FIGHT_14,
+ SFX_TONI_ANGRY_FIGHT_15,
+ SFX_TONI_ANGRY_FIGHT_16,
+ SFX_TONI_ANGRY_FIGHT_17,
+ SFX_TONI_ANGRY_FIGHT_18,
+ SFX_TONI_ANGRY_FIGHT_19,
+ SFX_TONI_ANGRY_FIGHT_20,
+ SFX_TONI_ANGRY_FIGHT_21,
+ SFX_TONI_ANGRY_FIGHT_22,
+ SFX_TONI_ANGRY_FIGHT_23,
+ SFX_TONI_ANGRY_FIGHT_24,
+ SFX_TONI_ANGRY_FIGHT_25,
+ SFX_TONI_ANGRY_FIGHT_26,
+ SFX_TONI_ANGRY_FIGHT_27,
+ SFX_TONI_ANGRY_FIGHT_28,
+ SFX_TONI_ANGRY_FIGHT_29,
+ SFX_TONI_ANGRY_FIGHT_30,
+ SFX_TONI_ANGRY_FIGHT_31,
+ SFX_TONI_ANGRY_FIGHT_32,
+ SFX_TONI_ANGRY_FIGHT_33,
+ SFX_TONI_ANGRY_FIGHT_34,
+ SFX_TONI_ANGRY_FIGHT_35,
+ SFX_TONI_ANGRY_FIGHT_36,
+ SFX_TONI_ANGRY_FIGHT_37,
+ SFX_TONI_ANGRY_FIGHT_38,
+ SFX_TONI_ANGRY_FIGHT_39,
+ SFX_TONI_ANGRY_JACKED_01,
+ SFX_TONI_ANGRY_JACKED_02,
+ SFX_TONI_ANGRY_JACKED_03,
+ SFX_TONI_ANGRY_JACKED_04,
+ SFX_TONI_ANGRY_JACKED_05,
+ SFX_TONI_ANGRY_JACKED_06,
+ SFX_TONI_ANGRY_JACKED_07,
+ SFX_TONI_ANGRY_JACKED_08,
+ SFX_TONI_ANGRY_JACKED_09,
+ SFX_TONI_ANGRY_JACKED_10,
+ SFX_TONI_ANGRY_JACKED_11,
+ SFX_TONI_ANGRY_JACKED_12,
+ SFX_TONI_ANGRY_JACKED_13,
+ SFX_TONI_ANGRY_JACKED_14,
+ SFX_TONI_ANGRY_JACKED_15,
+ SFX_TONI_ANGRY_JACKED_16,
+ SFX_TONI_ANGRY_JACKING_01,
+ SFX_TONI_ANGRY_JACKING_02,
+ SFX_TONI_ANGRY_JACKING_03,
+ SFX_TONI_ANGRY_JACKING_04,
+ SFX_TONI_ANGRY_JACKING_05,
+ SFX_TONI_ANGRY_JACKING_06,
+ SFX_TONI_ANGRY_JACKING_07,
+ SFX_TONI_ANGRY_JACKING_08,
+ SFX_TONI_ANGRY_JACKING_09,
+ SFX_TONI_ANGRY_JACKING_10,
+ SFX_TONI_ANGRY_JACKING_11,
+ SFX_TONI_ANGRY_JACKING_12,
+ SFX_TONI_ANGRY_JACKING_13,
+ SFX_TONI_ANGRY_JACKING_14,
+ SFX_TONI_ANGRY_JACKING_15,
+ SFX_TONI_ANGRY_JACKING_16,
+ SFX_TONI_ANGRY_JACKING_17,
+ SFX_TONI_ANGRY_JACKING_18,
+ SFX_TONI_ANGRY_JACKING_19,
+ SFX_TONI_ANGRY_JACKING_20,
+ SFX_TONI_ANGRY_JACKING_21,
+ SFX_TONI_ANGRY_JACKING_22,
+ SFX_TONI_ANGRY_JACKING_23,
+ SFX_TONI_ANGRY_JACKING_24,
+ SFX_TONI_ANGRY_JACKING_25,
+ SFX_TONI_ANGRY_JACKING_26,
+ SFX_TONI_ANGRY_JACKING_27,
+ SFX_TONI_ANGRY_JACKING_28,
+ SFX_TONI_ANGRY_JACKING_29,
+ SFX_TONI_ANGRY_JACKING_30,
+ SFX_TONI_ANGRY_JACKING_31,
+ SFX_TONI_ANGRY_JACKING_32,
+ SFX_TONI_ANGRY_JACKING_33,
+ SFX_TONI_ANGRY_PICK_UP_CASH_01,
+ SFX_TONI_ANGRY_PICK_UP_CASH_02,
+ SFX_TONI_ANGRY_PICK_UP_CASH_03,
+ SFX_TONI_ANGRY_PICK_UP_CASH_04,
+ SFX_TONI_ANGRY_PICK_UP_CASH_05,
+ SFX_TONI_ANGRY_PICK_UP_CASH_06,
+ SFX_TONI_ANGRY_PICK_UP_CASH_07,
+ SFX_TONI_ANGRY_PICK_UP_CASH_08,
+ SFX_TONI_ANGRY_PICK_UP_CASH_09,
+ SFX_TONI_ANGRY_PICK_UP_CASH_10,
+ SFX_TONI_ANGRY_PICK_UP_CASH_11,
+ SFX_TONI_ANGRY_PICK_UP_CASH_12,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_01,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_02,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_03,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_04,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_05,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_06,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_07,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_08,
+ SFX_TONI_ANGRY_PULL_GUN_01,
+ SFX_TONI_ANGRY_PULL_GUN_02,
+ SFX_TONI_ANGRY_PULL_GUN_03,
+ SFX_TONI_ANGRY_PULL_GUN_04,
+ SFX_TONI_ANGRY_PULL_GUN_05,
+ SFX_TONI_ANGRY_PULL_GUN_06,
+ SFX_TONI_ANGRY_PULL_GUN_07,
+ SFX_TONI_ANGRY_PULL_GUN_08,
+ SFX_TONI_ANGRY_PULL_GUN_09,
+ SFX_TONI_ANGRY_PULL_GUN_10,
+ SFX_TONI_ANGRY_PULL_GUN_11,
+ SFX_TONI_ANGRY_PULL_GUN_12,
+ SFX_TONI_ANGRY_PULL_GUN_13,
+ SFX_TONI_ANGRY_PULL_GUN_14,
+ SFX_TONI_ANGRY_PULL_GUN_15,
+ SFX_TONI_ANGRY_PULL_GUN_16,
+ SFX_TONI_ANGRY_PULL_GUN_17,
+ SFX_TONI_ANGRY_PULL_GUN_18,
+ SFX_TONI_ANGRY_PULL_GUN_19,
+ SFX_TONI_ANGRY_PULL_GUN_20,
+ SFX_TONI_ANGRY_PULL_GUN_21,
+ SFX_TONI_ANGRY_PULL_GUN_22,
+ SFX_TONI_ANGRY_PULL_GUN_23,
+ SFX_TONI_ANGRY_PULL_GUN_24,
+ SFX_TONI_ANGRY_PULL_GUN_25,
+ SFX_TONI_ANGRY_PULL_GUN_26,
+ SFX_TONI_ANGRY_PULL_GUN_27,
+ SFX_TONI_ANGRY_PULL_GUN_28,
+ SFX_TONI_ANGRY_PULL_GUN_29,
+ SFX_TONI_ANGRY_SEX_01,
+ SFX_TONI_ANGRY_SEX_02,
+ SFX_TONI_ANGRY_SEX_03,
+ SFX_TONI_ANGRY_SEX_04,
+ SFX_TONI_ANGRY_SEX_05,
+ SFX_TONI_ANGRY_SEX_06,
+ SFX_TONI_ANGRY_SEX_07,
+ SFX_TONI_ANGRY_SEX_08,
+ SFX_TONI_ANGRY_SEX_09,
+ SFX_TONI_ANGRY_SEX_10,
+ SFX_TONI_ANGRY_SHOOT_01,
+ SFX_TONI_ANGRY_SHOOT_02,
+ SFX_TONI_ANGRY_SHOOT_03,
+ SFX_TONI_ANGRY_SHOOT_04,
+ SFX_TONI_ANGRY_SHOOT_05,
+ SFX_TONI_ANGRY_SHOOT_06,
+ SFX_TONI_ANGRY_SHOOT_07,
+ SFX_TONI_ANGRY_SHOOT_08,
+ SFX_TONI_ANGRY_SHOOT_09,
+ SFX_TONI_ANGRY_SHOOT_10,
+ SFX_TONI_ANGRY_SHOOT_11,
+ SFX_TONI_ANGRY_SHOOT_12,
+ SFX_TONI_ANGRY_SHOOT_13,
+ SFX_TONI_ANGRY_SHOOT_14,
+ SFX_TONI_ANGRY_SHOOT_15,
+ SFX_TONI_ANGRY_SHOOT_16,
+ SFX_TONI_ANGRY_SHOOT_17,
+ SFX_TONI_ANGRY_SHOOT_18,
+ SFX_TONI_ANGRY_SHOOT_19,
+ SFX_TONI_ANGRY_SHOOT_20,
+ SFX_TONI_ANGRY_SHOOT_21,
+ SFX_TONI_ANGRY_SHOOT_22,
+ SFX_TONI_ANGRY_SHOOT_23,
+ SFX_TONI_ANGRY_SHOOT_24,
+ SFX_TONI_ANGRY_SHOOT_25,
+ SFX_TONI_ANGRY_SHOOT_26,
+ SFX_TONI_ANGRY_SHOOT_27,
+ SFX_TONI_ANGRY_SHOOT_28,
+ SFX_TONI_ANGRY_SHOOT_29,
+ SFX_TONI_ANGRY_SHOOT_30,
+ SFX_TONI_ANGRY_SHOOT_31,
+ SFX_TONI_ANGRY_SHOOT_32,
+ SFX_TONI_ANGRY_SHOOT_33,
+ SFX_TONI_ANGRY_SHOOT_34,
+ SFX_TONI_ANGRY_SHOOT_35,
+ SFX_TONI_ANGRY_SHOOT_36,
+ SFX_TONI_CALM_BUSTED_01,
+ SFX_TONI_CALM_BUSTED_02,
+ SFX_TONI_CALM_BUSTED_03,
+ SFX_TONI_CALM_BUSTED_04,
+ SFX_TONI_CALM_BUSTED_05,
+ SFX_TONI_CALM_BUSTED_06,
+ SFX_TONI_CALM_BUSTED_07,
+ SFX_TONI_CALM_BUSTED_08,
+ SFX_TONI_CALM_BUSTED_10,
+ SFX_TONI_CALM_BUSTED_11,
+ SFX_TONI_CALM_BUSTED_12,
+ SFX_TONI_CALM_BUSTED_13,
+ SFX_TONI_CALM_BUSTED_14,
+ SFX_TONI_CALM_BUSTED_15,
+ SFX_TONI_CALM_BUSTED_16,
+ SFX_TONI_CALM_BUSTED_17,
+ SFX_TONI_CALM_BUSTED_18,
+ SFX_TONI_CALM_BUSTED_19,
+ SFX_TONI_CALM_BUSTED_20,
+ SFX_TONI_CALM_BUSTED_21,
+ SFX_TONI_CALM_BUSTED_22,
+ SFX_TONI_CALM_BUSTED_23,
+ SFX_TONI_CALM_BUSTED_24,
+ SFX_TONI_CALM_BUSTED_25,
+ SFX_TONI_CALM_CHASED_01,
+ SFX_TONI_CALM_CHASED_02,
+ SFX_TONI_CALM_CHASED_03,
+ SFX_TONI_CALM_CHASED_04,
+ SFX_TONI_CALM_CHASED_05,
+ SFX_TONI_CALM_CHASED_06,
+ SFX_TONI_CALM_CHASED_07,
+ SFX_TONI_CALM_CHASED_08,
+ SFX_TONI_CALM_CHASED_09,
+ SFX_TONI_CALM_CHASED_10,
+ SFX_TONI_CALM_CHASED_11,
+ SFX_TONI_CALM_CHASED_12,
+ SFX_TONI_CALM_CHASED_13,
+ SFX_TONI_CALM_CHASED_14,
+ SFX_TONI_CALM_CHASED_15,
+ SFX_TONI_CALM_CHASED_16,
+ SFX_TONI_CALM_CHASED_17,
+ SFX_TONI_CALM_CHASED_18,
+ SFX_TONI_CALM_CHASED_19,
+ SFX_TONI_CALM_CHASED_20,
+ SFX_TONI_CALM_CRASH_01,
+ SFX_TONI_CALM_CRASH_02,
+ SFX_TONI_CALM_CRASH_03,
+ SFX_TONI_CALM_CRASH_04,
+ SFX_TONI_CALM_CRASH_05,
+ SFX_TONI_CALM_CRASH_06,
+ SFX_TONI_CALM_CRASH_07,
+ SFX_TONI_CALM_CRASH_08,
+ SFX_TONI_CALM_CRASH_09,
+ SFX_TONI_CALM_CRASH_10,
+ SFX_TONI_CALM_CRASH_11,
+ SFX_TONI_CALM_CRASH_12,
+ SFX_TONI_CALM_CRASH_13,
+ SFX_TONI_CALM_CRASH_14,
+ SFX_TONI_CALM_CRASH_15,
+ SFX_TONI_CALM_CRASH_16,
+ SFX_TONI_CALM_CRASH_17,
+ SFX_TONI_CALM_CRASH_18,
+ SFX_TONI_CALM_CRASH_19,
+ SFX_TONI_CALM_CRASH_20,
+ SFX_TONI_CALM_CRASH_21,
+ SFX_TONI_CALM_CRASH_22,
+ SFX_TONI_CALM_CRASH_23,
+ SFX_TONI_CALM_CRASH_24,
+ SFX_TONI_CALM_CRASH_25,
+ SFX_TONI_CALM_CRASH_26,
+ SFX_TONI_CALM_CRASH_27,
+ SFX_TONI_CALM_CRASH_28,
+ SFX_TONI_CALM_CRASH_29,
+ SFX_TONI_CALM_CRASH_30,
+ SFX_TONI_CALM_CRASH_31,
+ SFX_TONI_CALM_FIGHT_01,
+ SFX_TONI_CALM_FIGHT_02,
+ SFX_TONI_CALM_FIGHT_03,
+ SFX_TONI_CALM_FIGHT_04,
+ SFX_TONI_CALM_FIGHT_05,
+ SFX_TONI_CALM_FIGHT_06,
+ SFX_TONI_CALM_FIGHT_07,
+ SFX_TONI_CALM_FIGHT_08,
+ SFX_TONI_CALM_FIGHT_09,
+ SFX_TONI_CALM_FIGHT_10,
+ SFX_TONI_CALM_FIGHT_11,
+ SFX_TONI_CALM_FIGHT_12,
+ SFX_TONI_CALM_FIGHT_13,
+ SFX_TONI_CALM_FIGHT_14,
+ SFX_TONI_CALM_FIGHT_15,
+ SFX_TONI_CALM_FIGHT_16,
+ SFX_TONI_CALM_FIGHT_17,
+ SFX_TONI_CALM_FIGHT_18,
+ SFX_TONI_CALM_FIGHT_19,
+ SFX_TONI_CALM_FIGHT_20,
+ SFX_TONI_CALM_FIGHT_21,
+ SFX_TONI_CALM_FIGHT_22,
+ SFX_TONI_CALM_FIGHT_23,
+ SFX_TONI_CALM_FIGHT_24,
+ SFX_TONI_CALM_FIGHT_25,
+ SFX_TONI_CALM_FIGHT_26,
+ SFX_TONI_CALM_FIGHT_27,
+ SFX_TONI_CALM_FIGHT_28,
+ SFX_TONI_CALM_FIGHT_29,
+ SFX_TONI_CALM_FIGHT_30,
+ SFX_TONI_CALM_FIGHT_31,
+ SFX_TONI_CALM_FIGHT_32,
+ SFX_TONI_CALM_FIGHT_33,
+ SFX_TONI_CALM_FIGHT_34,
+ SFX_TONI_CALM_FIGHT_35,
+ SFX_TONI_CALM_FIGHT_36,
+ SFX_TONI_CALM_FIGHT_37,
+ SFX_TONI_CALM_FIGHT_38,
+ SFX_TONI_CALM_FIGHT_39,
+ SFX_TONI_CALM_FIGHT_40,
+ SFX_TONI_CALM_FIGHT_41,
+ SFX_TONI_CALM_FIGHT_42,
+ SFX_TONI_CALM_JACKED_01,
+ SFX_TONI_CALM_JACKED_02,
+ SFX_TONI_CALM_JACKED_03,
+ SFX_TONI_CALM_JACKED_04,
+ SFX_TONI_CALM_JACKED_05,
+ SFX_TONI_CALM_JACKED_06,
+ SFX_TONI_CALM_JACKED_07,
+ SFX_TONI_CALM_JACKED_08,
+ SFX_TONI_CALM_JACKED_09,
+ SFX_TONI_CALM_JACKED_10,
+ SFX_TONI_CALM_JACKED_11,
+ SFX_TONI_CALM_JACKED_12,
+ SFX_TONI_CALM_JACKED_13,
+ SFX_TONI_CALM_JACKED_14,
+ SFX_TONI_CALM_JACKED_15,
+ SFX_TONI_CALM_JACKED_16,
+ SFX_TONI_CALM_JACKED_17,
+ SFX_TONI_CALM_JACKED_18,
+ SFX_TONI_CALM_JACKED_19,
+ SFX_TONI_CALM_JACKED_20,
+ SFX_TONI_CALM_JACKED_21,
+ SFX_TONI_CALM_JACKED_22,
+ SFX_TONI_CALM_JACKED_23,
+ SFX_TONI_CALM_JACKING_01,
+ SFX_TONI_CALM_JACKING_02,
+ SFX_TONI_CALM_JACKING_03,
+ SFX_TONI_CALM_JACKING_04,
+ SFX_TONI_CALM_JACKING_05,
+ SFX_TONI_CALM_JACKING_06,
+ SFX_TONI_CALM_JACKING_07,
+ SFX_TONI_CALM_JACKING_08,
+ SFX_TONI_CALM_JACKING_09,
+ SFX_TONI_CALM_JACKING_10,
+ SFX_TONI_CALM_JACKING_11,
+ SFX_TONI_CALM_JACKING_12,
+ SFX_TONI_CALM_JACKING_13,
+ SFX_TONI_CALM_JACKING_14,
+ SFX_TONI_CALM_JACKING_15,
+ SFX_TONI_CALM_JACKING_16,
+ SFX_TONI_CALM_JACKING_17,
+ SFX_TONI_CALM_JACKING_18,
+ SFX_TONI_CALM_JACKING_19,
+ SFX_TONI_CALM_JACKING_20,
+ SFX_TONI_CALM_JACKING_21,
+ SFX_TONI_CALM_JACKING_22,
+ SFX_TONI_CALM_JACKING_23,
+ SFX_TONI_CALM_JACKING_24,
+ SFX_TONI_CALM_JACKING_25,
+ SFX_TONI_CALM_JACKING_26,
+ SFX_TONI_CALM_JACKING_27,
+ SFX_TONI_CALM_JACKING_28,
+ SFX_TONI_CALM_JACKING_29,
+ SFX_TONI_CALM_JACKING_30,
+ SFX_TONI_CALM_JACKING_31,
+ SFX_TONI_CALM_JACKING_32,
+ SFX_TONI_CALM_JACKING_33,
+ SFX_TONI_CALM_JACKING_34,
+ SFX_TONI_CALM_JACKING_35,
+ SFX_TONI_CALM_JACKING_36,
+ SFX_TONI_CALM_JACKING_37,
+ SFX_TONI_CALM_JACKING_38,
+ SFX_TONI_CALM_JACKING_39,
+ SFX_TONI_CALM_PICK_UP_CASH_01,
+ SFX_TONI_CALM_PICK_UP_CASH_02,
+ SFX_TONI_CALM_PICK_UP_CASH_03,
+ SFX_TONI_CALM_PICK_UP_CASH_04,
+ SFX_TONI_CALM_PICK_UP_CASH_05,
+ SFX_TONI_CALM_PICK_UP_CASH_06,
+ SFX_TONI_CALM_PICK_UP_CASH_07,
+ SFX_TONI_CALM_PICK_UP_CASH_08,
+ SFX_TONI_CALM_PICK_UP_CASH_09,
+ SFX_TONI_CALM_PICK_UP_CASH_10,
+ SFX_TONI_CALM_PICK_UP_CASH_11,
+ SFX_TONI_CALM_PICK_UP_CASH_12,
+ SFX_TONI_CALM_PICK_UP_CASH_13,
+ SFX_TONI_CALM_PICK_UP_CASH_14,
+ SFX_TONI_CALM_PICK_UP_CASH_15,
+ SFX_TONI_CALM_PICK_UP_CASH_16,
+ SFX_TONI_CALM_PICK_UP_HOOKER_01,
+ SFX_TONI_CALM_PICK_UP_HOOKER_02,
+ SFX_TONI_CALM_PICK_UP_HOOKER_03,
+ SFX_TONI_CALM_PICK_UP_HOOKER_04,
+ SFX_TONI_CALM_PICK_UP_HOOKER_05,
+ SFX_TONI_CALM_PICK_UP_HOOKER_06,
+ SFX_TONI_CALM_PICK_UP_HOOKER_07,
+ SFX_TONI_CALM_PICK_UP_HOOKER_08,
+ SFX_TONI_CALM_PICK_UP_HOOKER_09,
+ SFX_TONI_CALM_PICK_UP_HOOKER_10,
+ SFX_TONI_CALM_PICK_UP_HOOKER_11,
+ SFX_TONI_CALM_PICK_UP_HOOKER_12,
+ SFX_TONI_CALM_PICK_UP_HOOKER_13,
+ SFX_TONI_CALM_PICK_UP_HOOKER_14,
+ SFX_TONI_CALM_PICK_UP_HOOKER_15,
+ SFX_TONI_CALM_PICK_UP_HOOKER_16,
+ SFX_TONI_CALM_PICK_UP_HOOKER_17,
+ SFX_TONI_CALM_PICK_UP_HOOKER_18,
+ SFX_TONI_CALM_PULL_GUN_01,
+ SFX_TONI_CALM_PULL_GUN_02,
+ SFX_TONI_CALM_PULL_GUN_03,
+ SFX_TONI_CALM_PULL_GUN_04,
+ SFX_TONI_CALM_PULL_GUN_05,
+ SFX_TONI_CALM_PULL_GUN_06,
+ SFX_TONI_CALM_PULL_GUN_07,
+ SFX_TONI_CALM_PULL_GUN_08,
+ SFX_TONI_CALM_PULL_GUN_09,
+ SFX_TONI_CALM_PULL_GUN_10,
+ SFX_TONI_CALM_PULL_GUN_11,
+ SFX_TONI_CALM_PULL_GUN_12,
+ SFX_TONI_CALM_PULL_GUN_13,
+ SFX_TONI_CALM_PULL_GUN_14,
+ SFX_TONI_CALM_PULL_GUN_15,
+ SFX_TONI_CALM_PULL_GUN_16,
+ SFX_TONI_CALM_PULL_GUN_17,
+ SFX_TONI_CALM_PULL_GUN_18,
+ SFX_TONI_CALM_PULL_GUN_19,
+ SFX_TONI_CALM_PULL_GUN_20,
+ SFX_TONI_CALM_PULL_GUN_21,
+ SFX_TONI_CALM_PULL_GUN_22,
+ SFX_TONI_CALM_PULL_GUN_23,
+ SFX_TONI_CALM_PULL_GUN_24,
+ SFX_TONI_CALM_PULL_GUN_25,
+ SFX_TONI_CALM_PULL_GUN_26,
+ SFX_TONI_CALM_PULL_GUN_27,
+ SFX_TONI_CALM_PULL_GUN_28,
+ SFX_TONI_CALM_PULL_GUN_29,
+ SFX_TONI_CALM_PULL_GUN_30,
+ SFX_TONI_CALM_PULL_GUN_31,
+ SFX_TONI_CALM_PULL_GUN_32,
+ SFX_TONI_CALM_PULL_GUN_33,
+ SFX_TONI_CALM_PULL_GUN_34,
+ SFX_TONI_CALM_PULL_GUN_35,
+ SFX_TONI_CALM_SEX_01,
+ SFX_TONI_CALM_SEX_02,
+ SFX_TONI_CALM_SEX_03,
+ SFX_TONI_CALM_SEX_04,
+ SFX_TONI_CALM_SEX_05,
+ SFX_TONI_CALM_SEX_06,
+ SFX_TONI_CALM_SEX_07,
+ SFX_TONI_CALM_SEX_08,
+ SFX_TONI_CALM_SEX_09,
+ SFX_TONI_CALM_SEX_10,
+ SFX_TONI_CALM_SEX_11,
+ SFX_TONI_CALM_SHOOT_01,
+ SFX_TONI_CALM_SHOOT_02,
+ SFX_TONI_CALM_SHOOT_03,
+ SFX_TONI_CALM_SHOOT_04,
+ SFX_TONI_CALM_SHOOT_05,
+ SFX_TONI_CALM_SHOOT_06,
+ SFX_TONI_CALM_SHOOT_07,
+ SFX_TONI_CALM_SHOOT_08,
+ SFX_TONI_CALM_SHOOT_09,
+ SFX_TONI_CALM_SHOOT_10,
+ SFX_TONI_CALM_SHOOT_11,
+ SFX_TONI_CALM_SHOOT_12,
+ SFX_TONI_CALM_SHOOT_13,
+ SFX_TONI_CALM_SHOOT_14,
+ SFX_TONI_CALM_SHOOT_15,
+ SFX_TONI_CALM_SHOOT_16,
+ SFX_TONI_CALM_SHOOT_17,
+ SFX_TONI_CALM_SHOOT_18,
+ SFX_TONI_CALM_SHOOT_19,
+ SFX_TONI_CALM_SHOOT_20,
+ SFX_TONI_CALM_SHOOT_21,
+ SFX_TONI_CALM_SHOOT_22,
+ SFX_TONI_CALM_SHOOT_23,
+ SFX_TONI_CALM_SHOOT_24,
+ SFX_TONI_CALM_SHOOT_25,
+ SFX_TONI_CALM_SHOOT_26,
+ SFX_TONI_CALM_SHOOT_27,
+ SFX_TONI_CALM_SHOOT_28,
+ SFX_TONI_CALM_SHOOT_29,
+ SFX_TONI_CALM_SHOOT_30,
+ SFX_TONI_GENERAL_AFTER_SEX_01,
+ SFX_TONI_GENERAL_AFTER_SEX_02,
+ SFX_TONI_GENERAL_AFTER_SEX_03,
+ SFX_TONI_GENERAL_AFTER_SEX_04,
+ SFX_TONI_GENERAL_AFTER_SEX_05,
+ SFX_TONI_GENERAL_AFTER_SEX_06,
+ SFX_TONI_GENERAL_AFTER_SEX_07,
+ SFX_TONI_GENERAL_AFTER_SEX_08,
+ SFX_TONI_GENERAL_AFTER_SEX_09,
+ SFX_TONI_GENERAL_AFTER_SEX_10,
+ SFX_TONI_GENERAL_AFTER_SEX_11,
+ SFX_TONI_GENERAL_AFTER_SEX_12,
+ SFX_TONI_GENERAL_AFTER_SEX_13,
+ SFX_TONI_GENERAL_AFTER_SEX_14,
+ SFX_TONI_GENERAL_HIT_GROUND_01,
+ SFX_TONI_GENERAL_HIT_GROUND_02,
+ SFX_TONI_GENERAL_HIT_GROUND_03,
+ SFX_TONI_GENERAL_HIT_GROUND_04,
+ SFX_TONI_GENERAL_HIT_GROUND_08,
+ SFX_TONI_GENERAL_HIT_GROUND_09,
+ SFX_TONI_GENERAL_HIT_GROUND_10,
+ SFX_TONI_GENERAL_HIT_GROUND_11,
+ SFX_TONI_GENERAL_HIT_GROUND_12,
+ SFX_TONI_GENERAL_HIT_GROUND_13,
+ SFX_TONI_GENERAL_HIT_GROUND_14,
+ SFX_TONI_GENERAL_HIT_GROUND_15,
+ SFX_TONI_GENERAL_IMP_HI_01,
+ SFX_TONI_GENERAL_IMP_HI_02,
+ SFX_TONI_GENERAL_IMP_HI_03,
+ SFX_TONI_GENERAL_IMP_HI_04,
+ SFX_TONI_GENERAL_IMP_HI_05,
+ SFX_TONI_GENERAL_IMP_HI_06,
+ SFX_TONI_GENERAL_IMP_HI_07,
+ SFX_TONI_GENERAL_IMP_HI_08,
+ SFX_TONI_GENERAL_IMP_HI_09,
+ SFX_TONI_GENERAL_IMP_HI_10,
+ SFX_TONI_GENERAL_IMP_HI_11,
+ SFX_TONI_GENERAL_IMP_HI_12,
+ SFX_TONI_GENERAL_IMP_HI_13,
+ SFX_TONI_GENERAL_IMP_HI_14,
+ SFX_TONI_GENERAL_IMP_HI_15,
+ SFX_TONI_GENERAL_IMP_HI_16,
+ SFX_TONI_GENERAL_IMP_LOW_01,
+ SFX_TONI_GENERAL_IMP_LOW_02,
+ SFX_TONI_GENERAL_IMP_LOW_03,
+ SFX_TONI_GENERAL_IMP_LOW_04,
+ SFX_TONI_GENERAL_IMP_LOW_05,
+ SFX_TONI_GENERAL_IMP_LOW_06,
+ SFX_TONI_GENERAL_IMP_LOW_07,
+ SFX_TONI_GENERAL_IMP_LOW_08,
+ SFX_TONI_GENERAL_IMP_LOW_09,
+ SFX_TONI_GENERAL_IMP_LOW_10,
+ SFX_TONI_GENERAL_IMP_LOW_11,
+ SFX_TONI_GENERAL_IMP_LOW_12,
+ SFX_TONI_GENERAL_IMP_LOW_13,
+ SFX_TONI_GENERAL_IMP_LOW_14,
+ SFX_TONI_GENERAL_IMP_LOW_15,
+ SFX_TONI_GENERAL_ON_FIRE_01,
+ SFX_TONI_GENERAL_ON_FIRE_02,
+ SFX_TONI_GENERAL_ON_FIRE_03,
+ SFX_TONI_GENERAL_ON_FIRE_04,
+ SFX_TONI_GENERAL_ON_FIRE_05,
+ SFX_TONI_GENERAL_ON_FIRE_06,
+ SFX_TONI_GENERAL_ON_FIRE_08,
+ SFX_TONI_PISSED_OFF_BUSTED_01,
+ SFX_TONI_PISSED_OFF_BUSTED_02,
+ SFX_TONI_PISSED_OFF_BUSTED_03,
+ SFX_TONI_PISSED_OFF_BUSTED_04,
+ SFX_TONI_PISSED_OFF_BUSTED_05,
+ SFX_TONI_PISSED_OFF_BUSTED_06,
+ SFX_TONI_PISSED_OFF_BUSTED_07,
+ SFX_TONI_PISSED_OFF_BUSTED_08,
+ SFX_TONI_PISSED_OFF_BUSTED_09,
+ SFX_TONI_PISSED_OFF_BUSTED_10,
+ SFX_TONI_PISSED_OFF_BUSTED_11,
+ SFX_TONI_PISSED_OFF_BUSTED_12,
+ SFX_TONI_PISSED_OFF_CHASED_01,
+ SFX_TONI_PISSED_OFF_CHASED_02,
+ SFX_TONI_PISSED_OFF_CHASED_03,
+ SFX_TONI_PISSED_OFF_CHASED_04,
+ SFX_TONI_PISSED_OFF_CHASED_05,
+ SFX_TONI_PISSED_OFF_CHASED_06,
+ SFX_TONI_PISSED_OFF_CHASED_07,
+ SFX_TONI_PISSED_OFF_CHASED_08,
+ SFX_TONI_PISSED_OFF_CHASED_09,
+ SFX_TONI_PISSED_OFF_CHASED_10,
+ SFX_TONI_PISSED_OFF_CHASED_11,
+ SFX_TONI_PISSED_OFF_CHASED_12,
+ SFX_TONI_PISSED_OFF_CHASED_13,
+ SFX_TONI_PISSED_OFF_CHASED_14,
+ SFX_TONI_PISSED_OFF_CHASED_15,
+ SFX_TONI_PISSED_OFF_CHASED_16,
+ SFX_TONI_PISSED_OFF_CHASED_17,
+ SFX_TONI_PISSED_OFF_CHASED_18,
+ SFX_TONI_PISSED_OFF_CHASED_19,
+ SFX_TONI_PISSED_OFF_CHASED_20,
+ SFX_TONI_PISSED_OFF_CHASED_21,
+ SFX_TONI_PISSED_OFF_CHASED_22,
+ SFX_TONI_PISSED_OFF_CHASED_23,
+ SFX_TONI_PISSED_OFF_CHASED_24,
+ SFX_TONI_PISSED_OFF_CHASED_25,
+ SFX_TONI_PISSED_OFF_CRASH_01,
+ SFX_TONI_PISSED_OFF_CRASH_02,
+ SFX_TONI_PISSED_OFF_CRASH_03,
+ SFX_TONI_PISSED_OFF_CRASH_04,
+ SFX_TONI_PISSED_OFF_CRASH_05,
+ SFX_TONI_PISSED_OFF_CRASH_06,
+ SFX_TONI_PISSED_OFF_CRASH_07,
+ SFX_TONI_PISSED_OFF_CRASH_08,
+ SFX_TONI_PISSED_OFF_CRASH_09,
+ SFX_TONI_PISSED_OFF_CRASH_10,
+ SFX_TONI_PISSED_OFF_CRASH_11,
+ SFX_TONI_PISSED_OFF_CRASH_12,
+ SFX_TONI_PISSED_OFF_CRASH_13,
+ SFX_TONI_PISSED_OFF_CRASH_14,
+ SFX_TONI_PISSED_OFF_CRASH_15,
+ SFX_TONI_PISSED_OFF_CRASH_16,
+ SFX_TONI_PISSED_OFF_CRASH_17,
+ SFX_TONI_PISSED_OFF_CRASH_18,
+ SFX_TONI_PISSED_OFF_CRASH_19,
+ SFX_TONI_PISSED_OFF_CRASH_20,
+ SFX_TONI_PISSED_OFF_CRASH_21,
+ SFX_TONI_PISSED_OFF_CRASH_22,
+ SFX_TONI_PISSED_OFF_CRASH_23,
+ SFX_TONI_PISSED_OFF_CRASH_24,
+ SFX_TONI_PISSED_OFF_CRASH_25,
+ SFX_TONI_PISSED_OFF_FIGHT_01,
+ SFX_TONI_PISSED_OFF_FIGHT_02,
+ SFX_TONI_PISSED_OFF_FIGHT_03,
+ SFX_TONI_PISSED_OFF_FIGHT_04,
+ SFX_TONI_PISSED_OFF_FIGHT_05,
+ SFX_TONI_PISSED_OFF_FIGHT_06,
+ SFX_TONI_PISSED_OFF_FIGHT_07,
+ SFX_TONI_PISSED_OFF_FIGHT_08,
+ SFX_TONI_PISSED_OFF_FIGHT_09,
+ SFX_TONI_PISSED_OFF_FIGHT_10,
+ SFX_TONI_PISSED_OFF_FIGHT_11,
+ SFX_TONI_PISSED_OFF_FIGHT_12,
+ SFX_TONI_PISSED_OFF_FIGHT_13,
+ SFX_TONI_PISSED_OFF_FIGHT_14,
+ SFX_TONI_PISSED_OFF_FIGHT_15,
+ SFX_TONI_PISSED_OFF_FIGHT_16,
+ SFX_TONI_PISSED_OFF_FIGHT_17,
+ SFX_TONI_PISSED_OFF_FIGHT_18,
+ SFX_TONI_PISSED_OFF_JACKED_01,
+ SFX_TONI_PISSED_OFF_JACKED_02,
+ SFX_TONI_PISSED_OFF_JACKED_03,
+ SFX_TONI_PISSED_OFF_JACKED_04,
+ SFX_TONI_PISSED_OFF_JACKED_05,
+ SFX_TONI_PISSED_OFF_JACKED_06,
+ SFX_TONI_PISSED_OFF_JACKED_07,
+ SFX_TONI_PISSED_OFF_JACKED_08,
+ SFX_TONI_PISSED_OFF_JACKED_09,
+ SFX_TONI_PISSED_OFF_JACKED_10,
+ SFX_TONI_PISSED_OFF_JACKED_11,
+ SFX_TONI_PISSED_OFF_JACKING_01,
+ SFX_TONI_PISSED_OFF_JACKING_02,
+ SFX_TONI_PISSED_OFF_JACKING_03,
+ SFX_TONI_PISSED_OFF_JACKING_04,
+ SFX_TONI_PISSED_OFF_JACKING_05,
+ SFX_TONI_PISSED_OFF_JACKING_06,
+ SFX_TONI_PISSED_OFF_JACKING_07,
+ SFX_TONI_PISSED_OFF_JACKING_08,
+ SFX_TONI_PISSED_OFF_JACKING_09,
+ SFX_TONI_PISSED_OFF_JACKING_10,
+ SFX_TONI_PISSED_OFF_JACKING_11,
+ SFX_TONI_PISSED_OFF_JACKING_12,
+ SFX_TONI_PISSED_OFF_JACKING_13,
+ SFX_TONI_PISSED_OFF_JACKING_14,
+ SFX_TONI_PISSED_OFF_JACKING_15,
+ SFX_TONI_PISSED_OFF_JACKING_16,
+ SFX_TONI_PISSED_OFF_JACKING_17,
+ SFX_TONI_PISSED_OFF_JACKING_18,
+ SFX_TONI_PISSED_OFF_JACKING_19,
+ SFX_TONI_PISSED_OFF_JACKING_20,
+ SFX_TONI_PISSED_OFF_JACKING_21,
+ SFX_TONI_PISSED_OFF_JACKING_22,
+ SFX_TONI_PISSED_OFF_JACKING_23,
+ SFX_TONI_PISSED_OFF_JACKING_24,
+ SFX_TONI_PISSED_OFF_JACKING_25,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_01,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_02,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_03,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_04,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_05,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_06,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_07,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_08,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_09,
+ SFX_TONI_PISSED_OFF_PULL_GUN_01,
+ SFX_TONI_PISSED_OFF_PULL_GUN_02,
+ SFX_TONI_PISSED_OFF_PULL_GUN_03,
+ SFX_TONI_PISSED_OFF_PULL_GUN_04,
+ SFX_TONI_PISSED_OFF_PULL_GUN_05,
+ SFX_TONI_PISSED_OFF_PULL_GUN_06,
+ SFX_TONI_PISSED_OFF_PULL_GUN_07,
+ SFX_TONI_PISSED_OFF_PULL_GUN_08,
+ SFX_TONI_PISSED_OFF_PULL_GUN_09,
+ SFX_TONI_PISSED_OFF_PULL_GUN_10,
+ SFX_TONI_PISSED_OFF_PULL_GUN_11,
+ SFX_TONI_PISSED_OFF_PULL_GUN_12,
+ SFX_TONI_PISSED_OFF_PULL_GUN_13,
+ SFX_TONI_PISSED_OFF_PULL_GUN_14,
+ SFX_TONI_PISSED_OFF_PULL_GUN_15,
+ SFX_TONI_PISSED_OFF_PULL_GUN_16,
+ SFX_TONI_PISSED_OFF_PULL_GUN_17,
+ SFX_TONI_PISSED_OFF_PULL_GUN_18,
+ SFX_TONI_PISSED_OFF_SHOOT_01,
+ SFX_TONI_PISSED_OFF_SHOOT_02,
+ SFX_TONI_PISSED_OFF_SHOOT_03,
+ SFX_TONI_PISSED_OFF_SHOOT_04,
+ SFX_TONI_PISSED_OFF_SHOOT_05,
+ SFX_TONI_PISSED_OFF_SHOOT_06,
+ SFX_TONI_PISSED_OFF_SHOOT_07,
+ SFX_TONI_PISSED_OFF_SHOOT_08,
+ SFX_TONI_PISSED_OFF_SHOOT_09,
+ SFX_TONI_PISSED_OFF_SHOOT_10,
+ SFX_TONI_PISSED_OFF_SHOOT_11,
+ SFX_TONI_PISSED_OFF_SHOOT_12,
+ SFX_TONI_PISSED_OFF_SHOOT_13,
+ SFX_TONI_PISSED_OFF_SHOOT_14,
+ SFX_TONI_PISSED_OFF_SHOOT_15,
+ SFX_TONI_PISSED_OFF_SHOOT_16,
+ SFX_TONI_PISSED_OFF_SHOOT_17,
+ SFX_TONI_PISSED_OFF_SHOOT_18,
+ SFX_TONI_PISSED_OFF_SHOOT_19,
+ SFX_TONI_PISSED_OFF_SHOOT_20,
+ SFX_TONI_PISSED_OFF_SHOOT_21,
+ SFX_TONI_PISSED_OFF_SHOOT_22,
+ SFX_TONI_PISSED_OFF_SHOOT_23,
+ SFX_TONI_PISSED_OFF_SHOOT_24,
+ SFX_TONI_PISSED_OFF_SHOOT_25,
+ SFX_TONI_PISSED_OFF_SHOOT_26,
+ SFX_TONI_PISSED_OFF_SHOOT_27,
+ SFX_TONI_PISSED_OFF_SHOOT_28,
+ SFX_TONI_PISSED_OFF_SHOOT_29,
+ SFX_TONI_PISSED_OFF_SHOOT_30,
+ SFX_TONI_PISSED_OFF_SHOOT_31,
+ SFX_TONI_WISECRACKING_CRASH_01,
+ SFX_TONI_WISECRACKING_CRASH_02,
+ SFX_TONI_WISECRACKING_CRASH_03,
+ SFX_TONI_WISECRACKING_CRASH_04,
+ SFX_TONI_WISECRACKING_CRASH_05,
+ SFX_TONI_WISECRACKING_CRASH_06,
+ SFX_TONI_WISECRACKING_CRASH_07,
+ SFX_TONI_WISECRACKING_CRASH_08,
+ SFX_TONI_WISECRACKING_CRASH_09,
+ SFX_TONI_WISECRACKING_CRASH_10,
+ SFX_TONI_WISECRACKING_CRASH_11,
+ SFX_TONI_WISECRACKING_CRASH_12,
+ SFX_TONI_WISECRACKING_CRASH_13,
+ SFX_TONI_WISECRACKING_CRASH_14,
+ SFX_TONI_WISECRACKING_CRASH_15,
+ SFX_TONI_WISECRACKING_CRASH_16,
+ SFX_TONI_WISECRACKING_CRASH_17,
+ SFX_TONI_WISECRACKING_FIGHT_01,
+ SFX_TONI_WISECRACKING_FIGHT_02,
+ SFX_TONI_WISECRACKING_FIGHT_03,
+ SFX_TONI_WISECRACKING_FIGHT_04,
+ SFX_TONI_WISECRACKING_FIGHT_05,
+ SFX_TONI_WISECRACKING_FIGHT_06,
+ SFX_TONI_WISECRACKING_FIGHT_07,
+ SFX_TONI_WISECRACKING_FIGHT_08,
+ SFX_TONI_WISECRACKING_FIGHT_09,
+ SFX_TONI_WISECRACKING_FIGHT_10,
+ SFX_TONI_WISECRACKING_FIGHT_11,
+ SFX_TONI_WISECRACKING_FIGHT_12,
+ SFX_TONI_WISECRACKING_FIGHT_13,
+ SFX_TONI_WISECRACKING_FIGHT_14,
+ SFX_TONI_WISECRACKING_FIGHT_15,
+ SFX_TONI_WISECRACKING_FIGHT_16,
+ SFX_TONI_WISECRACKING_FIGHT_17,
+ SFX_TONI_WISECRACKING_FIGHT_18,
+ SFX_TONI_WISECRACKING_FIGHT_19,
+ SFX_TONI_WISECRACKING_FIGHT_20,
+ SFX_TONI_WISECRACKING_JACKED_01,
+ SFX_TONI_WISECRACKING_JACKED_02,
+ SFX_TONI_WISECRACKING_JACKED_03,
+ SFX_TONI_WISECRACKING_JACKED_04,
+ SFX_TONI_WISECRACKING_JACKED_05,
+ SFX_TONI_WISECRACKING_JACKED_06,
+ SFX_TONI_WISECRACKING_JACKED_07,
+ SFX_TONI_WISECRACKING_JACKED_08,
+ SFX_TONI_WISECRACKING_JACKED_09,
+ SFX_TONI_WISECRACKING_JACKED_10,
+ SFX_TONI_WISECRACKING_JACKED_11,
+ SFX_TONI_WISECRACKING_JACKED_12,
+ SFX_TONI_WISECRACKING_JACKED_13,
+ SFX_TONI_WISECRACKING_JACKED_14,
+ SFX_TONI_WISECRACKING_JACKED_15,
+ SFX_TONI_WISECRACKING_JACKED_16,
+ SFX_TONI_WISECRACKING_JACKED_17,
+ SFX_TONI_WISECRACKING_JACKING_01,
+ SFX_TONI_WISECRACKING_JACKING_02,
+ SFX_TONI_WISECRACKING_JACKING_03,
+ SFX_TONI_WISECRACKING_JACKING_04,
+ SFX_TONI_WISECRACKING_JACKING_05,
+ SFX_TONI_WISECRACKING_JACKING_06,
+ SFX_TONI_WISECRACKING_JACKING_07,
+ SFX_TONI_WISECRACKING_JACKING_08,
+ SFX_TONI_WISECRACKING_JACKING_09,
+ SFX_TONI_WISECRACKING_JACKING_10,
+ SFX_TONI_WISECRACKING_JACKING_11,
+ SFX_TONI_WISECRACKING_JACKING_12,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_01,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_02,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_03,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_04,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_05,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_06,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_07,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_08,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_09,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_10,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_11,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_12,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_13,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_14,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_15,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_01,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_02,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_03,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_04,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_05,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_06,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_07,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_08,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_09,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_10,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_11,
+ SFX_TONI_WISECRACKING_PULL_GUN_01,
+ SFX_TONI_WISECRACKING_PULL_GUN_02,
+ SFX_TONI_WISECRACKING_PULL_GUN_03,
+ SFX_TONI_WISECRACKING_PULL_GUN_04,
+ SFX_TONI_WISECRACKING_PULL_GUN_05,
+ SFX_TONI_WISECRACKING_PULL_GUN_06,
+ SFX_TONI_WISECRACKING_PULL_GUN_07,
+ SFX_TONI_WISECRACKING_PULL_GUN_08,
+ SFX_TONI_WISECRACKING_PULL_GUN_09,
+ SFX_TONI_WISECRACKING_PULL_GUN_10,
+ SFX_TONI_WISECRACKING_PULL_GUN_11,
+ SFX_TONI_WISECRACKING_PULL_GUN_12,
+ SFX_TONI_WISECRACKING_PULL_GUN_13,
+ SFX_TONI_WISECRACKING_PULL_GUN_14,
+ SFX_TONI_WISECRACKING_PULL_GUN_15,
+ SFX_TONI_WISECRACKING_PULL_GUN_16,
+ SFX_TONI_WISECRACKING_PULL_GUN_17,
+ SFX_TONI_WISECRACKING_PULL_GUN_18,
+ SFX_TONI_WISECRACKING_PULL_GUN_19,
+ SFX_TONI_WISECRACKING_SEX_01,
+ SFX_TONI_WISECRACKING_SEX_02,
+ SFX_TONI_WISECRACKING_SEX_03,
+ SFX_TONI_WISECRACKING_SEX_04,
+ SFX_TONI_WISECRACKING_SEX_05,
+ SFX_TONI_WISECRACKING_SEX_06,
+ SFX_TONI_WISECRACKING_SEX_07,
+ SFX_TONI_WISECRACKING_SEX_08,
+ SFX_TONI_WISECRACKING_SEX_09,
+ SFX_TONI_WISECRACKING_SEX_10,
+ SFX_TONI_WISECRACKING_SHOOT_01,
+ SFX_TONI_WISECRACKING_SHOOT_02,
+ SFX_TONI_WISECRACKING_SHOOT_03,
+ SFX_TONI_WISECRACKING_SHOOT_04,
+ SFX_TONI_WISECRACKING_SHOOT_05,
+ SFX_TONI_WISECRACKING_SHOOT_06,
+ SFX_TONI_WISECRACKING_SHOOT_07,
+ SFX_TONI_WISECRACKING_SHOOT_08,
+ SFX_TONI_WISECRACKING_SHOOT_09,
+ SFX_TONI_WISECRACKING_SHOOT_10,
+ SFX_TONI_WISECRACKING_SHOOT_11,
+ SFX_TONI_WISECRACKING_SHOOT_12,
+ SFX_TONI_WISECRACKING_SHOOT_13,
+ SFX_TONI_WISECRACKING_SHOOT_14,
+ SFX_TONI_WISECRACKING_SHOOT_15,
+ SFX_TONI_WISECRACKING_SHOOT_16,
+ SFX_TONI_WISECRACKING_SHOOT_17,
+ SFX_TONI_WISECRACKING_SHOOT_18,
+ SFX_TONI_WISECRACKING_SHOOT_19,
+ SFX_TONI_WISECRACKING_SHOOT_20,
+ SFX_TONI_WISECRACKING_SHOOT_21,
+ SFX_TONI_WISECRACKING_SHOOT_22,
+ SFX_TONI_WISECRACKING_SHOOT_23,
+ SFX_TONI_WISECRACKING_SHOOT_24,
+ SFX_TONI_WISECRACKING_SHOOT_25,
+ LAST_PLAYER_COMMENT(SFX_TONI_WISECRACKING_SHOOT_26),
+ SFX_TOSH1AA,
+ SFX_TOSH1AB,
+ SFX_TOSH1AC,
+ SFX_TOSH1AD,
+ SFX_TOSH1BA,
+ SFX_TOSH1BB,
+ SFX_TOSH1BC,
+ SFX_TOSH1BD,
+ SFX_TOSH2AA,
+ SFX_TOSH2AB,
+ SFX_TOSH2AC,
+ SFX_TOSH2AE,
+ SFX_TOSH2AF,
+ SFX_TOSH2AG,
+ SFX_TOSH2AH,
+ SFX_TOSH2AI,
+ SFX_TOSH2AJ,
+ SFX_TOSH2AK,
+ SFX_TOSH2AL,
+ SFX_TOSH2AM,
+ SFX_TOSH3AA,
+ SFX_TOSH3AB,
+ SFX_TOSH3AC,
+ SFX_TOSH3AD,
+ SFX_TOSH3AE,
+ SFX_TOSH3AF,
+ SFX_TOSH3AG,
+ SFX_TOSH3AH,
+ SFX_TOSH3AI,
+ SFX_TOSH3AJ,
+ SFX_TOSH3AK,
+ SFX_TOSH3BA,
+ SFX_TOSH3BB,
+ SFX_TOSH3CA,
+ SFX_TOSH3CB,
+ SFX_TOSH3CC,
+ SFX_TOSH3CD,
+ SFX_TOSH3CE,
+ SFX_TOSH3CF,
+ SFX_TOSH3CG,
+ SFX_TOSH3CH,
+ SFX_TOSH3CI,
+ SFX_TOSH3CJ,
+ SFX_TOSH3CK,
+ SFX_TOSH3DA,
+ SFX_TOSH3EA,
+ SFX_TOSH3FA,
+ SFX_TOSH3FB,
+ SFX_TOSH3FC,
+ SFX_TOSH3FD,
+ SFX_TOSH3FE,
+ SFX_TOSH3FF,
+ SFX_TOSH3GA,
+ SFX_TOSH3GB,
+ SFX_TOSH3HA,
+ SFX_TOSH3IA,
+ SFX_TOSH3IB,
+ SFX_TOSH4AA,
+ SFX_TOSH4AB,
+ SFX_TOSH4AC,
+ SFX_TOSH4AD,
+ SFX_TOSH4AE,
+ SFX_TOSH4AF,
+ SFX_TOSH4AG,
+ SFX_TOSH4AH,
+ SFX_TOSH4AI,
+ SFX_TOSH4AJ,
+ SFX_TOSH4BA,
+ SFX_TOSH4BB,
+ SFX_TOSH4BC,
+ SFX_TOSH4CA,
+ SFX_TOSH4CB,
+ SFX_TOSH4CC,
+ SFX_TOSH4CD,
+ SFX_TOSH4CE,
+ SFX_TOSH4DA,
+ SFX_TOSH4DB,
+ SFX_TOSH4DC,
+ SFX_TOSHIKO_CRASH_CAR_1,
+ SFX_TOSHIKO_CRASH_CAR_2,
+ SFX_TOSHIKO_CRASH_CAR_3,
+ SFX_TOSHIKO_CRASH_CAR_4,
+ SFX_TOSHIKO_DRIVER_BLOCKED_1,
+ SFX_TOSHIKO_DRIVER_BLOCKED_2,
+ SFX_TOSHIKO_DRIVER_BLOCKED_3,
+ SFX_TOSHIKO_DRIVER_BLOCKED_4,
+ SFX_TOSHIKO_JACKED_CAR_1,
+ SFX_TOSHIKO_JACKED_CAR_2,
+ SFX_TOSHIKO_JACKED_CAR_3,
+ SFX_TOSHIKO_JACKED_CAR_4,
+ SFX_TOSHIKO_JACKED_CAR_5,
+ SFX_TOSHIKO_SHOCKED_1,
+ SFX_TOSHIKO_SHOCKED_2,
+ SFX_TOSHIKO_SHOCKED_3,
+ SFX_VAL1_AA,
+ SFX_VAL1_AB,
+ SFX_VAL1_AC,
+ SFX_VAL1_AD,
+ SFX_VAL1_AE,
+ SFX_VAL1_AF,
+ SFX_VAL1_AG,
+ SFX_VAL1_AH,
+ SFX_VAL1_AI,
+ SFX_VAL2_AA,
+ SFX_VAL2_AB,
+ SFX_VAL2_AC,
+ SFX_VAL2_AD,
+ SFX_VAL2_AE,
+ SFX_VAL2_AF,
+ SFX_VAL2_AG,
+ SFX_VAL2_AH,
+ SFX_VAL2_AI,
+ SFX_VAL3_AA,
+ SFX_VAL3_AB,
+ SFX_VAL3_AC,
+ SFX_VAL3_AD,
+ SFX_VAL3_AE,
+ SFX_VAL3_AF,
+ SFX_VIC1_BA,
+ SFX_VIC1_BB,
+ SFX_VIC1_BC,
+ SFX_VIC1_BD,
+ SFX_VIC1_BE,
+ SFX_VIC1_BF,
+ SFX_VIC1_CA,
+ SFX_VIC1_CB,
+ SFX_VIC1_CC,
+ SFX_VIC1_CD,
+ SFX_VIC1_CE,
+ SFX_VIC1_DA,
+ SFX_VIC1_DB,
+ SFX_VIC1_DC,
+ SFX_VIC1_DD,
+ SFX_VIC1_DE,
+ SFX_VIC1_DF,
+ SFX_VIC1_DG,
+ SFX_VIC1_DH,
+ SFX_VIC2_AA,
+ SFX_VIC2_AB,
+ SFX_VIC2_AC,
+ SFX_VIC2_AD,
+ SFX_VIC2_AF,
+ SFX_VIC2_AG,
+ SFX_VIC2_AH,
+ SFX_VIC2_BA,
+ SFX_VIC2_BB,
+ SFX_VIC2_BC,
+ SFX_VIC2_BD,
+ SFX_VIC2_BE,
+ SFX_VIC2_BF,
+ SFX_VIC2_BH,
+ SFX_VIC2_BI,
+ SFX_VIC2_BJ,
+ SFX_VIC2_CA,
+ SFX_VIC2_DA,
+ SFX_VIC2_DB,
+ SFX_VIC2_DC,
+ SFX_VIC3_AA,
+ SFX_VIC3_AB,
+ SFX_VIC3_AD,
+ SFX_VIC3_AE,
+ SFX_VIC3_AF,
+ SFX_VIC3_AG,
+ SFX_VIC3_AH,
+ SFX_VIC3_AJ,
+ SFX_VIC3_AK,
+ SFX_VIC3_AL,
+ SFX_VIC3_AM,
+ SFX_VIC3_AN,
+ SFX_VIC3_AO,
+ SFX_VIC3_BA,
+ SFX_VIC3_BB,
+ SFX_VIC3_BC,
+ SFX_VIC4_AA,
+ SFX_VIC4_AB,
+ SFX_VIC4_AC,
+ SFX_VIC4_AD,
+ SFX_VIC4_AE,
+ SFX_VIC4_AF,
+ SFX_VIC4_AG,
+ SFX_VIC4_AH,
+ SFX_VIC4_AI,
+ SFX_VIC4_AJ,
+ SFX_VIC4_AK,
+ SFX_VIC4_AL,
+ SFX_VIC4_AM,
+ SFX_VIC4_AN,
+ SFX_VIC4_BA,
+ SFX_VIC4_BB,
+ SFX_VIC4_BC,
+ SFX_VIC4_BD,
+ SFX_VIC4_BE,
+ SFX_VIC4_BF,
+ SFX_VIC4_BG,
+ SFX_VIC4_BH,
+ SFX_VIC4_CA,
+ SFX_VIC4_CB,
+ SFX_VIC5_AA,
+ SFX_VIC5_AB,
+ SFX_VIC5_AC,
+ SFX_VIC5_AD,
+ SFX_VIC5_AE,
+ SFX_VIC5_AF,
+ SFX_VIC5_AG,
+ SFX_VIC5_AH,
+ SFX_VIC5_AI,
+ SFX_VIC5_AJ,
+ SFX_VIC5_AK,
+ SFX_VIC5_AL,
+ SFX_VIC5_DA,
+ SFX_VIC5_DB,
+ SFX_VIC5_DC,
+ SFX_VIC5_EA,
+ SFX_VIC5_EB,
+ SFX_VIC5_EC,
+ SFX_VIC5_FA,
+ SFX_VIC5_FB,
+ SFX_VIC5_FC,
+ SFX_VIC5_FD,
+ SFX_VIC5_FE,
+ SFX_VIC5_FF,
+ SFX_VIC5_FG,
+ SFX_VIC5_FH,
+ SFX_VIC5_FI,
+ SFX_VIC5_FJ,
+ SFX_VIC5_FK,
+ SFX_VIC6_AA,
+ SFX_VIC6_AB,
+ SFX_VIC6_AC,
+ SFX_VIC6_AD,
+ SFX_VIC6_AE,
+ SFX_VIC6_AF,
+ SFX_VIC6_AG,
+ SFX_VIC6_AH,
+ SFX_VIC6_AI,
+ SFX_VIC6_AJ,
+ SFX_VIC6_AK,
+ SFX_VIC6_AL,
+ SFX_VIC6_AM,
+ SFX_VIC6_AN,
+ SFX_VIC6_AO,
+ SFX_VIC6_BA,
+ SFX_VIC6_BB,
+ SFX_VIC7_AA,
+ SFX_VIC7_AB,
+ SFX_VIC7_AC,
+ SFX_VIC7_AD,
+ SFX_VIC7_AE,
+ SFX_VIC7_AG,
+ SFX_VIC7_AH,
+ SFX_VIC7_AJ,
+ SFX_VIC7_AL,
+ SFX_VIC7_AM,
+ SFX_VIC7_AN,
+ SFX_VIC7_AO,
+ SFX_VIC7_BA,
+ SFX_VIC7_BB,
+ SFX_VIC7_BC,
+ SFX_VIC7_BD,
+ SFX_VIC7_BE,
+ SFX_VIC7_BF,
+ SFX_VIC7_BG,
+ SFX_VIC7_BH,
+ SFX_VIC7_BI,
+ SFX_VIC7_CA,
+ SFX_VIC7_CB,
+ SFX_VIC7_CC,
+ SFX_WAC1_AA,
+ SFX_WAC1_AB,
+ SFX_WAC1_AC,
+ SFX_WAC1_AD,
+ SFX_WAC1_AE,
+ SFX_WAC1_AF,
+ SFX_WAC1_AG,
+ SFX_WAC1_AH,
+ SFX_WAC2_AA,
+ SFX_WAC2_AB,
+ SFX_WAC2_AC,
+ SFX_WAC2_AD,
+ SFX_WAC2_AE,
+ SFX_WAC2_AF,
+ SFX_WAC2_AG,
+ SFX_WED1_AA,
+ SFX_WED1_AB,
+ SFX_WED1_AC,
+ SFX_WED1_AD,
+ SFX_WED1_AE,
+ SFX_WED1_AF,
+ SFX_WED1_AG,
+ SFX_WED2_AA,
+ SFX_WED2_AB,
+ SFX_WED2_AC,
+ SFX_WED2_AD,
+ SFX_WED2_AE,
+ SFX_WED2_AF,
+ SFX_WED2_AG,
+ SFX_WED2_AH,
+ SFX_WED3_AA,
+ SFX_WED3_AB,
+ SFX_WED3_AC,
+ SFX_WED3_AD,
+ SFX_WED3_AE,
+ SFX_WED3_AF,
+ SFX_WED3_AG,
+ SFX_WED3_AH,
+ SFX_WED3_AI,
+ SFX_WED3_AJ,
+ SFX_WED3_AK,
+ SFX_WED3_AL,
+ SFX_WORKER1_BUMP_1,
+ SFX_WORKER1_BUMP_2,
+ SFX_WORKER1_BUMP_3,
+ SFX_WORKER1_CHAT_1,
+ SFX_WORKER1_CHAT_2,
+ SFX_WORKER1_CHAT_3,
+ SFX_WORKER1_CHAT_4,
+ SFX_WORKER1_CRASH_CAR_1,
+ SFX_WORKER1_CRASH_CAR_2,
+ SFX_WORKER1_DODGE_1,
+ SFX_WORKER1_DODGE_2,
+ SFX_WORKER1_DRIVER_BLOCKED_1,
+ SFX_WORKER1_DRIVER_BLOCKED_2,
+ SFX_WORKER1_FIGHT_1,
+ SFX_WORKER1_FIGHT_2,
+ SFX_WORKER1_FIGHT_3,
+ SFX_WORKER1_GUN_THREATENED_1,
+ SFX_WORKER1_GUN_THREATENED_2,
+ SFX_WORKER1_JACKED_CAR_1,
+ SFX_WORKER1_JACKED_CAR_2,
+ SFX_WORKER1_JACKED_CAR_3,
+ SFX_WORKER1_SHOCKED_1,
+ SFX_WORKER1_SPECIAL_CASE_1,
+ SFX_WORKER1_SPECIAL_CASE_2,
+ SFX_WORKER1_SPECIAL_CASE_3,
+ SFX_WORKER2_BUMP_1,
+ SFX_WORKER2_BUMP_2,
+ SFX_WORKER2_BUMP_3,
+ SFX_WORKER2_CHAT_1,
+ SFX_WORKER2_CHAT_2,
+ SFX_WORKER2_CHAT_3,
+ SFX_WORKER2_CHAT_4,
+ SFX_WORKER2_CRASH_CAR_1,
+ SFX_WORKER2_CRASH_CAR_2,
+ SFX_WORKER2_DODGE_1,
+ SFX_WORKER2_DODGE_2,
+ SFX_WORKER2_DRIVER_BLOCKED_1,
+ SFX_WORKER2_DRIVER_BLOCKED_2,
+ SFX_WORKER2_FIGHT_1,
+ SFX_WORKER2_FIGHT_2,
+ SFX_WORKER2_FIGHT_3,
+ SFX_WORKER2_GUN_THREATENED_1,
+ SFX_WORKER2_GUN_THREATENED_2,
+ SFX_WORKER2_JACKED_CAR_1,
+ SFX_WORKER2_JACKED_CAR_2,
+ SFX_WORKER2_JACKED_CAR_3,
+ SFX_WORKER2_SHOCKED_1,
+ SFX_WORKER2_SPECIAL_CASE_1,
+ SFX_WORKER2_SPECIAL_CASE_2,
+ SFX_WORKER2_SPECIAL_CASE_3,
- SFX_PLAYER_WISECRACKING_BUSTED_1,
- SFX_PLAYER_WISECRACKING_BUSTED_2,
- SFX_PLAYER_WISECRACKING_BUSTED_3,
- SFX_PLAYER_WISECRACKING_BUSTED_4,
- SFX_PLAYER_WISECRACKING_BUSTED_5,
- SFX_PLAYER_WISECRACKING_BUSTED_6,
- SFX_PLAYER_WISECRACKING_BUSTED_7,
- SFX_PLAYER_WISECRACKING_BUSTED_8,
- SFX_PLAYER_WISECRACKING_BUSTED_9,
- SFX_PLAYER_WISECRACKING_BUSTED_10,
- SFX_PLAYER_WISECRACKING_BUSTED_11,
- SFX_PLAYER_WISECRACKING_BUSTED_12,
- SFX_PLAYER_WISECRACKING_BUSTED_13,
- SFX_PLAYER_WISECRACKING_BUSTED_14,
- SFX_PLAYER_WISECRACKING_BUSTED_15,
- SFX_PLAYER_WISECRACKING_BUSTED_16,
- SFX_PLAYER_WISECRACKING_BUSTED_17,
- SFX_PLAYER_WISECRACKING_BUSTED_18,
- SFX_PLAYER_WISECRACKING_BUSTED_19,
- SFX_PLAYER_WISECRACKING_BUSTED_20,
- SFX_PLAYER_WISECRACKING_CHASED_1,
- SFX_PLAYER_WISECRACKING_CHASED_2,
- SFX_PLAYER_WISECRACKING_CHASED_3,
- SFX_PLAYER_WISECRACKING_CHASED_4,
- SFX_PLAYER_WISECRACKING_CHASED_5,
- SFX_PLAYER_WISECRACKING_CHASED_6,
- SFX_PLAYER_WISECRACKING_CHASED_7,
- SFX_PLAYER_WISECRACKING_CRASH_1,
- SFX_PLAYER_WISECRACKING_CRASH_2,
- SFX_PLAYER_WISECRACKING_CRASH_3,
- SFX_PLAYER_WISECRACKING_CRASH_4,
- SFX_PLAYER_WISECRACKING_CRASH_5,
- SFX_PLAYER_WISECRACKING_CRASH_6,
- SFX_PLAYER_WISECRACKING_CRASH_7,
- SFX_PLAYER_WISECRACKING_CRASH_8,
- SFX_PLAYER_WISECRACKING_CRASH_9,
- SFX_PLAYER_WISECRACKING_CRASH_10,
- SFX_PLAYER_WISECRACKING_CRASH_11,
- SFX_PLAYER_WISECRACKING_CRASH_12,
- SFX_PLAYER_WISECRACKING_CRASH_13,
- SFX_PLAYER_WISECRACKING_CRASH_14,
- SFX_PLAYER_WISECRACKING_CRASH_15,
- SFX_PLAYER_WISECRACKING_CRASH_16,
- SFX_PLAYER_WISECRACKING_CRASH_17,
- SFX_PLAYER_WISECRACKING_CRASH_18,
- SFX_PLAYER_WISECRACKING_CRASH_19,
- SFX_PLAYER_WISECRACKING_FIGHT_1,
- SFX_PLAYER_WISECRACKING_FIGHT_2,
- SFX_PLAYER_WISECRACKING_FIGHT_3,
- SFX_PLAYER_WISECRACKING_FIGHT_4,
- SFX_PLAYER_WISECRACKING_FIGHT_5,
- SFX_PLAYER_WISECRACKING_FIGHT_6,
- SFX_PLAYER_WISECRACKING_FIGHT_7,
- SFX_PLAYER_WISECRACKING_FIGHT_8,
- SFX_PLAYER_WISECRACKING_FIGHT_9,
- SFX_PLAYER_WISECRACKING_FIGHT_10,
- SFX_PLAYER_WISECRACKING_FIGHT_11,
- SFX_PLAYER_WISECRACKING_FIGHT_12,
- SFX_PLAYER_WISECRACKING_FIGHT_13,
- SFX_PLAYER_WISECRACKING_FIGHT_14,
- SFX_PLAYER_WISECRACKING_FIGHT_15,
- SFX_PLAYER_WISECRACKING_FIGHT_16,
- SFX_PLAYER_WISECRACKING_FIGHT_17,
- SFX_PLAYER_WISECRACKING_FIGHT_18,
- SFX_PLAYER_WISECRACKING_FIGHT_19,
- SFX_PLAYER_WISECRACKING_FIGHT_20,
- SFX_PLAYER_WISECRACKING_FIGHT_21,
- SFX_PLAYER_WISECRACKING_FIGHT_22,
- SFX_PLAYER_WISECRACKING_FIGHT_23,
- SFX_PLAYER_WISECRACKING_FIGHT_24,
- SFX_PLAYER_WISECRACKING_FIGHT_25,
- SFX_PLAYER_WISECRACKING_FIGHT_26,
- SFX_PLAYER_WISECRACKING_FIGHT_27,
- SFX_PLAYER_WISECRACKING_JACKED_1,
- SFX_PLAYER_WISECRACKING_JACKED_2,
- SFX_PLAYER_WISECRACKING_JACKED_3,
- SFX_PLAYER_WISECRACKING_JACKED_4,
- SFX_PLAYER_WISECRACKING_JACKED_5,
- SFX_PLAYER_WISECRACKING_JACKED_6,
- SFX_PLAYER_WISECRACKING_JACKED_7,
- SFX_PLAYER_WISECRACKING_JACKED_8,
- SFX_PLAYER_WISECRACKING_JACKED_9,
- SFX_PLAYER_WISECRACKING_JACKED_10,
- SFX_PLAYER_WISECRACKING_JACKED_11,
- SFX_PLAYER_WISECRACKING_JACKED_12,
- SFX_PLAYER_WISECRACKING_JACKED_13,
- SFX_PLAYER_WISECRACKING_JACKED_14,
- SFX_PLAYER_WISECRACKING_JACKED_15,
- SFX_PLAYER_WISECRACKING_JACKED_16,
- SFX_PLAYER_WISECRACKING_JACKED_17,
- SFX_PLAYER_WISECRACKING_JACKED_18,
- SFX_PLAYER_WISECRACKING_JACKING_1,
- SFX_PLAYER_WISECRACKING_JACKING_2,
- SFX_PLAYER_WISECRACKING_JACKING_3,
- SFX_PLAYER_WISECRACKING_JACKING_4,
- SFX_PLAYER_WISECRACKING_JACKING_5,
- SFX_PLAYER_WISECRACKING_JACKING_6,
- SFX_PLAYER_WISECRACKING_JACKING_7,
- SFX_PLAYER_WISECRACKING_JACKING_8,
- SFX_PLAYER_WISECRACKING_JACKING_9,
- SFX_PLAYER_WISECRACKING_JACKING_10,
- SFX_PLAYER_WISECRACKING_JACKING_11,
- SFX_PLAYER_WISECRACKING_JACKING_12,
- SFX_PLAYER_WISECRACKING_JACKING_13,
- SFX_PLAYER_WISECRACKING_JACKING_14,
- SFX_PLAYER_WISECRACKING_JACKING_15,
- SFX_PLAYER_WISECRACKING_JACKING_16,
- SFX_PLAYER_WISECRACKING_JACKING_17,
- SFX_PLAYER_WISECRACKING_JACKING_18,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_1,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_2,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_3,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_4,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_5,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_6,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_7,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_8,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_9,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_10,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_11,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_12,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_13,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_14,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_15,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_16,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_17,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_18,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_19,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_20,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_21,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_22,
- SFX_PLAYER_WISECRACKING_PICK_UP_CASH_23,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_1,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_2,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_3,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_4,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_5,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_6,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_7,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_8,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_9,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_10,
- SFX_PLAYER_WISECRACKING_PICK_UP_HOOKER_11,
- SFX_PLAYER_WISECRACKING_PULL_GUN_1,
- SFX_PLAYER_WISECRACKING_PULL_GUN_2,
- SFX_PLAYER_WISECRACKING_PULL_GUN_3,
- SFX_PLAYER_WISECRACKING_PULL_GUN_4,
- SFX_PLAYER_WISECRACKING_PULL_GUN_5,
- SFX_PLAYER_WISECRACKING_PULL_GUN_6,
- SFX_PLAYER_WISECRACKING_PULL_GUN_7,
- SFX_PLAYER_WISECRACKING_PULL_GUN_8,
- SFX_PLAYER_WISECRACKING_PULL_GUN_9,
- SFX_PLAYER_WISECRACKING_PULL_GUN_10,
- SFX_PLAYER_WISECRACKING_PULL_GUN_11,
- SFX_PLAYER_WISECRACKING_PULL_GUN_12,
- SFX_PLAYER_WISECRACKING_PULL_GUN_13,
- SFX_PLAYER_WISECRACKING_PULL_GUN_14,
- SFX_PLAYER_WISECRACKING_PULL_GUN_15,
- SFX_PLAYER_WISECRACKING_PULL_GUN_16,
- SFX_PLAYER_WISECRACKING_PULL_GUN_17,
- SFX_PLAYER_WISECRACKING_PULL_GUN_18,
- SFX_PLAYER_WISECRACKING_PULL_GUN_19,
- SFX_PLAYER_WISECRACKING_SEX_1,
- SFX_PLAYER_WISECRACKING_SEX_2,
- SFX_PLAYER_WISECRACKING_SEX_3,
- SFX_PLAYER_WISECRACKING_SEX_4,
- SFX_PLAYER_WISECRACKING_SEX_5,
- SFX_PLAYER_WISECRACKING_SEX_6,
- SFX_PLAYER_WISECRACKING_SEX_7,
- SFX_PLAYER_WISECRACKING_SEX_8,
- SFX_PLAYER_WISECRACKING_SEX_9,
- SFX_PLAYER_WISECRACKING_SEX_10,
- SFX_PLAYER_WISECRACKING_SHOOT_1,
- SFX_PLAYER_WISECRACKING_SHOOT_2,
- SFX_PLAYER_WISECRACKING_SHOOT_3,
- SFX_PLAYER_WISECRACKING_SHOOT_4,
- SFX_PLAYER_WISECRACKING_SHOOT_5,
- SFX_PLAYER_WISECRACKING_SHOOT_6,
- SFX_PLAYER_WISECRACKING_SHOOT_7,
- SFX_PLAYER_WISECRACKING_SHOOT_8,
- SFX_PLAYER_WISECRACKING_SHOOT_9,
- SFX_PLAYER_DEATH,
- SFX_PLAYER_AFTERSEX_1,
- SFX_PLAYER_AFTERSEX_2,
- SFX_PLAYER_AFTERSEX_3,
- SFX_PLAYER_AFTERSEX_4,
- SFX_PLAYER_AFTERSEX_5,
- SFX_PLAYER_AFTERSEX_6,
- SFX_PLAYER_AFTERSEX_7,
- SFX_PLAYER_AFTERSEX_8,
- SFX_PLAYER_AFTERSEX_9,
- SFX_PLAYER_AFTERSEX_10,
- SFX_PLAYER_AFTERSEX_11,
- SFX_PLAYER_AFTERSEX_12,
- SFX_PLAYER_AFTERSEX_13,
- SFX_PLAYER_AFTERSEX_14,
- SFX_PLAYER_AFTERSEX_15,
- SFX_PLAYER_AFTERSEX_16,
- SFX_PLAYER_AFTERSEX_17,
- SFX_PLAYER_AFTERSEX_18,
- SFX_PLAYER_HIT_BULLET_1,
- SFX_PLAYER_HIT_BULLET_2,
- SFX_PLAYER_HIT_BULLET_3,
- SFX_PLAYER_HIT_BULLET_4,
- SFX_PLAYER_HIT_BULLET_5,
- SFX_PLAYER_HIT_BULLET_6,
- SFX_PLAYER_HIT_BULLET_7,
- SFX_PLAYER_HIT_BULLET_8,
- SFX_PLAYER_HIT_BULLET_9,
- SFX_PLAYER_HIT_BULLET_10,
- SFX_PLAYER_HIT_BULLET_11,
- SFX_PLAYER_HIT_BULLET_12,
- SFX_PLAYER_HIT_BULLET_13,
- SFX_PLAYER_HIT_BULLET_14,
- SFX_PLAYER_HIT_BULLET_15,
- SFX_PLAYER_HIT_BULLET_16,
- SFX_PLAYER_HIT_BULLET_17,
- SFX_PLAYER_HIT_BULLET_18,
- SFX_PLAYER_HIT_BULLET_19,
- SFX_PLAYER_HIT_BULLET_20,
- SFX_PLAYER_HIT_BULLET_21,
- SFX_PLAYER_HIT_BULLET_22,
- SFX_PLAYER_HIT_BULLET_23,
- SFX_PLAYER_HIT_BULLET_24,
- SFX_PLAYER_HIT_BULLET_25,
- SFX_PLAYER_HIT_BULLET_26,
- SFX_PLAYER_HIT_BULLET_27,
- SFX_PLAYER_HIT_BULLET_28,
- SFX_PLAYER_HIT_BULLET_29,
- SFX_PLAYER_HIT_BULLET_30,
- SFX_PLAYER_HIT_BULLET_31,
- SFX_PLAYER_HIT_BULLET_32,
- SFX_PLAYER_HIT_BULLET_33,
- SFX_PLAYER_HIT_GROUND_1,
- SFX_PLAYER_HIT_GROUND_2,
- SFX_PLAYER_HIT_GROUND_3,
- SFX_PLAYER_HIT_GROUND_4,
- SFX_PLAYER_HIT_GROUND_5,
- SFX_PLAYER_HIT_GROUND_6,
- SFX_PLAYER_HIT_GROUND_7,
- SFX_PLAYER_HIT_GROUND_8,
- SFX_PLAYER_HIT_GROUND_9,
- SFX_PLAYER_HIT_GROUND_10,
- SFX_PLAYER_HIT_GROUND_11,
- SFX_PLAYER_HIT_GROUND_12,
- SFX_PLAYER_HIT_GROUND_13,
- SFX_PLAYER_HIT_GROUND_14,
- SFX_PLAYER_HIT_GROUND_15,
- SFX_PLAYER_HIT_GROUND_16,
- SFX_PLAYER_HIT_GROUND_17,
- SFX_PLAYER_HIT_GROUND_18,
- SFX_PLAYER_HIT_GROUND_19,
- SFX_PLAYER_HIT_GROUND_20,
- SFX_PLAYER_HIT_GROUND_21,
- SFX_PLAYER_HIT_GROUND_22,
- SFX_PLAYER_HIT_GROUND_23,
- SFX_PLAYER_HIT_GROUND_24,
- SFX_PLAYER_HIT_GROUND_25,
- SFX_PLAYER_HIT_GROUND_26,
- SFX_PLAYER_HIT_GROUND_27,
- SFX_PLAYER_HIT_GROUND_28,
- SFX_PLAYER_HIT_GROUND_29,
- SFX_PLAYER_HIT_GROUND_30,
- SFX_PLAYER_HIT_GROUND_31,
- SFX_PLAYER_HIT_GROUND_32,
- SFX_PLAYER_HIT_GROUND_33,
- SFX_PLAYER_HIT_GROUND_34,
- SFX_PLAYER_HIT_GROUND_35,
- SFX_PLAYER_HIT_FIST_1,
- SFX_PLAYER_HIT_FIST_2,
- SFX_PLAYER_HIT_FIST_3,
- SFX_PLAYER_HIT_FIST_4,
- SFX_PLAYER_HIT_FIST_5,
- SFX_PLAYER_HIT_FIST_6,
- SFX_PLAYER_HIT_FIST_7,
- SFX_PLAYER_HIT_FIST_8,
- SFX_PLAYER_HIT_FIST_9,
- SFX_PLAYER_HIT_FIST_10,
- SFX_PLAYER_HIT_FIST_11,
- SFX_PLAYER_HIT_FIST_12,
- SFX_PLAYER_HIT_FIST_13,
- SFX_PLAYER_HIT_FIST_14,
- SFX_PLAYER_HIT_FIST_15,
- SFX_PLAYER_HIT_FIST_16,
- SFX_PLAYER_HIT_FIST_17,
- SFX_PLAYER_HIT_FIST_18,
- SFX_PLAYER_HIT_FIST_19,
- SFX_PLAYER_HIT_FIST_20,
- SFX_PLAYER_HIT_FIST_21,
- SFX_PLAYER_HIT_FIST_22,
- SFX_PLAYER_HIT_FIST_23,
- SFX_PLAYER_HIT_FIST_24,
- SFX_PLAYER_HIT_FIST_25,
- SFX_PLAYER_HIT_FIST_26,
- SFX_PLAYER_HIT_FIST_27,
- SFX_PLAYER_HIT_FIST_28,
- SFX_PLAYER_HIT_FIST_29,
- SFX_PLAYER_HIT_FIST_30,
- SFX_PLAYER_HIT_FIST_31,
- SFX_PLAYER_HIT_FIST_32,
- SFX_PLAYER_HIT_FIST_33,
- SFX_PLAYER_HIT_FIST_34,
- SFX_PLAYER_HIT_FIST_35,
- SFX_PLAYER_HIT_FIST_36,
- SFX_PLAYER_HIT_FIST_37,
- SFX_PLAYER_HIT_FIST_38,
- SFX_PLAYER_HIT_FIST_39,
- SFX_PLAYER_HIT_FIST_40,
- SFX_PLAYER_HIT_FIST_41,
- SFX_PLAYER_HIT_FIST_42,
- SFX_PLAYER_ON_FIRE_1,
- SFX_PLAYER_ON_FIRE_2,
- SFX_PLAYER_ON_FIRE_3,
- SFX_PLAYER_ON_FIRE_4,
- SFX_PLAYER_ON_FIRE_5,
- SFX_PLAYER_ON_FIRE_6,
- SFX_PLAYER_ON_FIRE_7,
- SFX_PLAYER_ON_FIRE_8,
- SFX_PLAYER_ON_FIRE_9,
- SFX_PLAYER_ON_FIRE_10,
- SFX_PLAYER_ON_FIRE_11,
- SFX_PLAYER_ON_FIRE_12,
- SFX_PLAYER_ON_FIRE_13,
- SFX_PLAYER_ON_FIRE_14,
- SFX_PLAYER_ON_FIRE_15,
- LAST_PLAYER_COMMENT(SFX_PLAYER_ON_FIRE_16),
TOTAL_AUDIO_SAMPLES,
NO_SAMPLE,
// shorthands
- SAMPLEBANK_START = SFX_CAR_HORN_JEEP,
+ SAMPLEBANK_START = SFX_AIR_BRAKES,
SAMPLEBANK_END = SFX_FOOTSTEP_SAND_4,
SAMPLEBANK_MAX = SFX_FOOTSTEP_SAND_4 + 1,
SAMPLEBANK_PED_START = SFX_FOOTSTEP_SAND_4 + 1,
- SAMPLEBANK_PED_END = SFX_PLAYER_ON_FIRE_16,
+ SAMPLEBANK_PED_END = SFX_WORKER2_SPECIAL_CASE_3,
SAMPLEBANK_PED_MAX = SAMPLEBANK_PED_END + 1,
};
diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp
index c97b9c24..623b6ad5 100644
--- a/src/audio/MusicManager.cpp
+++ b/src/audio/MusicManager.cpp
@@ -164,8 +164,8 @@ cMusicManager::SetStartingTrackPositions(bool8 isNewGameTimer)
if (i < STREAMED_SOUND_CITY_AMBIENT && isNewGameTimer)
m_aTracks[i].m_nPosition = NewGameRadioTimers[i];
- else if (i < STREAMED_SOUND_ANNOUNCE_BRIDGE_CLOSED)
- m_aTracks[i].m_nPosition = (pos * AudioManager.m_anRandomTable[i % 5]) % m_aTracks[i].m_nLength;
+ //else if (i < STREAMED_SOUND_ANNOUNCE_BRIDGE_CLOSED)
+ // m_aTracks[i].m_nPosition = (pos * AudioManager.GetRandomNumber(i % 5)) % m_aTracks[i].m_nLength;
else
m_aTracks[i].m_nPosition = 0;
@@ -315,7 +315,7 @@ cMusicManager::ChangeMusicMode(uint8 mode)
#ifdef PAUSE_RADIO_IN_FRONTEND
// rewind those streams we weren't listening right now
- for( uint32 i = STREAMED_SOUND_RADIO_WILD; i < STREAMED_SOUND_CUTSCENE_ASS_1; i++ ) {
+ for( uint32 i = STREAMED_SOUND_RADIO_HEAD; i < STREAMED_SOUND_CUTSCENE_BIKER; i++ ) {
m_aTracks[i].m_nPosition = GetTrackStartPos(i);
m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
}
@@ -427,7 +427,7 @@ cMusicManager::ServiceFrontEndMode()
#ifdef PAUSE_RADIO_IN_FRONTEND
// pause radio
- for (uint32 i = STREAMED_SOUND_RADIO_WILD; i < STREAMED_SOUND_CUTSCENE_ASS_1; i++)
+ for( uint32 i = STREAMED_SOUND_RADIO_HEAD; i < STREAMED_SOUND_CUTSCENE_BIKER; i++ )
m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
#endif
@@ -595,7 +595,7 @@ cMusicManager::ServiceGameMode()
if (!m_bRadioStreamReady)
{
if(vehicle == nil) {
- m_nFrontendTrack = STREAMED_SOUND_RADIO_WAVE; // huh?
+ m_nFrontendTrack = STREAMED_SOUND_RADIO_LCFR; // huh?
return;
}
if(m_bRadioSetByScript) {
@@ -768,7 +768,7 @@ cMusicManager::SetUpCorrectAmbienceTrack()
else if (TheCamera.DistanceToWater <= 90.0f) {
if (CCullZones::bAtBeachForAudio) {
if (CWeather::OldWeatherType != WEATHER_HURRICANE && CWeather::NewWeatherType != WEATHER_HURRICANE || CWeather::Wind <= 1.0f)
- m_nFrontendTrack = STREAMED_SOUND_BEACH_AMBIENT;
+ m_nFrontendTrack = STREAMED_SOUND_SAWMILL;
else
m_nFrontendTrack = STREAMED_SOUND_HAVANA_BEACH_AMBIENT;
}
@@ -1320,27 +1320,12 @@ cMusicManager::DisplayRadioStationName()
case RADIO_ESPANTOSO: string = TheText.Get("FEA_FM6"); break;
case EMOTION: string = TheText.Get("FEA_FM7"); break;
case WAVE: string = TheText.Get("FEA_FM8"); break;
- case USERTRACK:
+ case 9: string = TheText.Get("FEA_FM9"); break;
+ case 10:
if (!SampleManager.IsMP3RadioChannelAvailable())
return;
string = TheText.Get("FEA_MP3"); break;
-#ifdef RADIO_OFF_TEXT
- case RADIO_OFF: {
- // Otherwise RADIO OFF will be seen after pausing-resuming game and Mission Complete text
- if (!m_bRadioStreamReady || !m_bGameplayAllowsRadio)
- return;
-
- extern wchar WideErrorString[];
-
- string = TheText.Get("FEA_NON");
- if (string == WideErrorString) {
- pCurrentStation = nil;
- return;
- }
- break;
- }
-#endif
- default: return;
+ default: string = TheText.Get("FEA_NON"); break;
};
if (pCurrentStation != string) {
@@ -1358,21 +1343,22 @@ cMusicManager::DisplayRadioStationName()
CFont::SetJustifyOff();
CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(0.8f), SCREEN_SCALE_Y(1.35f));
+ CFont::SetDropShadowPosition(2);
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.5f), PSP_SCREEN_SCALE_Y(0.88f));
CFont::SetPropOn();
- CFont::SetFontStyle(FONT_STANDARD);
+ CFont::SetFontStyle(FONT_BANK);
CFont::SetCentreOn();
- CFont::SetCentreSize(SCREEN_STRETCH_X(DEFAULT_SCREEN_WIDTH));
- CFont::SetColor(CRGBA(0, 0, 0, 255));
- CFont::PrintString(SCREEN_WIDTH / 2 + SCREEN_SCALE_X(2.0f), SCREEN_SCALE_Y(22.0f) + SCREEN_SCALE_Y(2.0f), pCurrentStation);
+ CFont::SetCentreSize(PSP_SCREEN_SCALE_X(260.0f));
+ CFont::SetDropColor(CRGBA(0, 0, 0, 255));
if (gNumRetunePresses)
- CFont::SetColor(CRGBA(102, 133, 143, 255));
+ CFont::SetColor(CRGBA(77, 155, 210, 255));
else
- CFont::SetColor(CRGBA(147, 196, 211, 255));
+ CFont::SetColor(CRGBA(77, 155, 210, 255));
- CFont::PrintString(SCREEN_WIDTH / 2, SCREEN_SCALE_Y(22.0f), pCurrentStation);
+ CFont::PrintString(SCREEN_WIDTH / 2, PSP_SCREEN_SCALE_Y(7.0f), pCurrentStation);
CFont::DrawFonts();
+ CFont::SetCentreSize(SCREEN_STRETCH_X(DEFAULT_SCREEN_WIDTH));
}
}
// Always show station text after entering car. Same behaviour as III and SA.
@@ -1403,7 +1389,7 @@ cMusicManager::UsesPoliceRadio(CVehicle *veh)
bool8
cMusicManager::UsesTaxiRadio(CVehicle *veh)
{
- if (veh->GetModelIndex() != MI_KAUFMAN) return FALSE;
+ if (veh->GetModelIndex() != MI_CABBIE) return FALSE;
return CTheScripts::bPlayerHasMetDebbieHarry;
}
diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp
index 26ade81e..fda3aa09 100644
--- a/src/audio/PolRadio.cpp
+++ b/src/audio/PolRadio.cpp
@@ -38,20 +38,20 @@ cAudioManager::InitialisePoliceRadioZones()
strcpy(ZoneSfx[i].m_aName, name); \
ZoneSfx[i].m_nSampleIndex = sample;
- SETZONESFX(0, "VICE_C", SFX_POLICE_RADIO_VICE_CITY);
- SETZONESFX(1, "IND_ZON", SFX_POLICE_RADIO_VICE_CITY_BEACH);
- SETZONESFX(2, "COM_ZON", SFX_POLICE_RADIO_VICE_CITY_MAINLAND);
- SETZONESFX(3, "BEACH1", SFX_POLICE_RADIO_OCEAN_BEACH);
- SETZONESFX(4, "BEACH2", SFX_POLICE_RADIO_WASHINGTON_BEACH);
- SETZONESFX(5, "BEACH3", SFX_POLICE_RADIO_VICE_POINT);
- SETZONESFX(6, "GOLFC", SFX_POLICE_RADIO_LEAF_LINKS);
- SETZONESFX(7, "STARI", SFX_POLICE_RADIO_STARFISH_ISLAND);
- SETZONESFX(8, "DOCKS", SFX_POLICE_RADIO_VICEPORT);
- SETZONESFX(9, "HAVANA", SFX_POLICE_RADIO_LITTLE_HAVANA);
- SETZONESFX(10, "HAITI", SFX_POLICE_RADIO_LITTLE_HAITI);
- SETZONESFX(11, "PORNI", SFX_POLICE_RADIO_PRAWN_ISLAND);
- SETZONESFX(12, "DTOWN", SFX_POLICE_RADIO_DOWNTOWN);
- SETZONESFX(13, "A_PORT", SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL);
+ SETZONESFX(0, "VICE_C", SFX_SFX_POLICE_RADIO_VICE_CITY);
+ SETZONESFX(1, "IND_ZON", SFX_SFX_POLICE_RADIO_VICE_CITY_BEACH);
+ SETZONESFX(2, "COM_ZON", SFX_SFX_POLICE_RADIO_VICE_CITY_MAINLAND);
+ SETZONESFX(3, "BEACH1", SFX_SFX_POLICE_RADIO_OCEAN_BEACH);
+ SETZONESFX(4, "BEACH2", SFX_SFX_POLICE_RADIO_WASHINGTON_BEACH);
+ SETZONESFX(5, "BEACH3", SFX_SFX_POLICE_RADIO_VICE_POINT);
+ SETZONESFX(6, "GOLFC", SFX_SFX_POLICE_RADIO_LEAF_LINKS);
+ SETZONESFX(7, "STARI", SFX_SFX_POLICE_RADIO_STARFISH_ISLAND);
+ SETZONESFX(8, "DOCKS", SFX_SFX_POLICE_RADIO_VICEPORT);
+ SETZONESFX(9, "HAVANA", SFX_SFX_POLICE_RADIO_LITTLE_HAVANA);
+ SETZONESFX(10, "HAITI", SFX_SFX_POLICE_RADIO_LITTLE_HAITI);
+ SETZONESFX(11, "PORNI", SFX_SFX_POLICE_RADIO_PRAWN_ISLAND);
+ SETZONESFX(12, "DTOWN", SFX_SFX_POLICE_RADIO_DOWNTOWN);
+ SETZONESFX(13, "A_PORT", SFX_SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL);
#undef SETZONESFX
}
@@ -119,6 +119,7 @@ cAudioManager::DoPoliceRadioCrackle()
void
cAudioManager::ServicePoliceRadio()
{
+ /*
int32 wantedLevel = 0; // uninitialized variable
static uint32 nLastSeen = 300;
@@ -150,6 +151,7 @@ cAudioManager::ServicePoliceRadio()
}
}
ServicePoliceRadioChannel(wantedLevel);
+ */
}
void
@@ -306,9 +308,9 @@ cAudioManager::SetupCrimeReport()
default: break;
}
#ifdef FIX_BUGS
- m_sPoliceRadioQueue.Add(m_aCrimes[i].type + SFX_CRIME_1 - 1);
+ m_sPoliceRadioQueue.Add(m_aCrimes[i].type + SFX_SFX_CRIME_1 - 1);
#else
- m_sPoliceRadioQueue.Add(m_aCrimes[i].type + SFX_CRIME_1);
+ m_sPoliceRadioQueue.Add(m_aCrimes[i].type + SFX_SFX_CRIME_1);
#endif
m_sPoliceRadioQueue.Add(SFX_IN);
rangeX = zone->maxx - zone->minx;
@@ -346,85 +348,85 @@ cAudioManager::SetupCrimeReport()
}
Const uint32 gCarColourTable[][3] = {
- {NO_SAMPLE, SFX_POLICE_RADIO_BLACK, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_WHITE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {SFX_POLICE_RADIO_BRIGHT, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_BLUE, SFX_POLICE_RADIO_GREY},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLACK, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_WHITE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {SFX_POLICE_RADIO_DARK, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {SFX_POLICE_RADIO_BRIGHT, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {SFX_POLICE_RADIO_LIGHT, SFX_SFX_POLICE_RADIO_BLUE, SFX_SFX_POLICE_RADIO_GREY},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {SFX_POLICE_RADIO_DARK, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
@@ -471,7 +473,7 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_RANCHER:
case MI_FBIRANCH:
case MI_SANDKING:
- sample = SFX_POLICE_RADIO_OFFROAD;
+ sample = SFX_SFX_POLICE_RADIO_OFFROAD;
break;
case MI_IDAHO:
case MI_MANANA:
@@ -482,7 +484,7 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_SABRETUR:
case MI_VIRGO:
case MI_BLISTAC:
- sample = SFX_POLICE_RADIO_TUDOOR;
+ sample = SFX_SFX_POLICE_RADIO_TUDOOR;
break;
case MI_STINGER:
case MI_INFERNUS:
@@ -492,14 +494,14 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_COMET:
case MI_DELUXO:
case MI_HOTRING:
- sample = SFX_POLICE_RADIO_SPORTS_CAR;
+ sample = SFX_SFX_POLICE_RADIO_SPORTS_CAR;
break;
case MI_LINERUN:
- sample = SFX_POLICE_RADIO_RIG;
+ sample = SFX_SFX_POLICE_RADIO_RIG;
break;
case MI_PEREN:
case MI_REGINA:
- sample = SFX_POLICE_RADIO_STATION_WAGON;
+ sample = SFX_SFX_POLICE_RADIO_STATION_WAGON;
break;
case MI_SENTINEL:
case MI_FBICAR:
@@ -510,23 +512,23 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_OCEANIC:
case MI_HERMES:
case MI_GREENWOO:
- sample = SFX_POLICE_RADIO_SEDAN;
+ sample = SFX_SFX_POLICE_RADIO_SEDAN;
break;
case MI_RIO:
- sample = SFX_POLICE_RADIO_CRUISER;
+ sample = SFX_SFX_POLICE_RADIO_CRUISER;
break;
case MI_FIRETRUCK:
- sample = SFX_POLICE_RADIO_FIRE_TRUCK;
+ sample = SFX_SFX_POLICE_RADIO_FIRE_TRUCK;
break;
case MI_TRASH:
- sample = SFX_POLICE_RADIO_GARBAGE_TRUCK;
+ sample = SFX_SFX_POLICE_RADIO_GARBAGE_TRUCK;
break;
case MI_STRETCH:
case MI_LOVEFIST:
- sample = SFX_POLICE_RADIO_STRETCH;
+ sample = SFX_SFX_POLICE_RADIO_STRETCH;
break;
case MI_VOODOO:
- sample = SFX_POLICE_RADIO_LOWRIDER;
+ sample = SFX_SFX_POLICE_RADIO_LOWRIDER;
break;
case MI_PONY:
case MI_MOONBEAM:
@@ -537,32 +539,31 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_TOPFUN:
case MI_BURRITO:
case MI_SPAND:
- sample = SFX_POLICE_RADIO_VAN;
+ sample = SFX_SFX_POLICE_RADIO_VAN;
break;
case MI_MULE:
case MI_BARRACKS:
case MI_PACKER:
case MI_FLATBED:
- sample = SFX_POLICE_RADIO_TRUCK;
+ sample = SFX_SFX_POLICE_RADIO_TRUCK;
break;
case MI_AMBULAN:
- sample = SFX_POLICE_RADIO_AMBULANCE;
+ sample = SFX_SFX_POLICE_RADIO_AMBULANCE;
break;
case MI_TAXI:
case MI_CABBIE:
- case MI_ZEBRA:
- case MI_KAUFMAN:
- sample = SFX_POLICE_RADIO_TAXI;
+ case MI_BORGNINE:
+ sample = SFX_SFX_POLICE_RADIO_TAXI;
break;
case MI_BOBCAT:
case MI_WALTON:
- sample = SFX_POLICE_RADIO_PICKUP;
+ sample = SFX_SFX_POLICE_RADIO_PICKUP;
break;
case MI_MRWHOOP:
- sample = SFX_POLICE_RADIO_ICE_CREAM_VAN;
+ sample = SFX_SFX_POLICE_RADIO_ICE_CREAM_VAN;
break;
case MI_BFINJECT:
- sample = SFX_POLICE_RADIO_BUGGY;
+ sample = SFX_SFX_POLICE_RADIO_BUGGY;
break;
case MI_HUNTER:
case MI_CHOPPER:
@@ -571,57 +572,57 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_MAVERICK:
case MI_VCNMAV:
case MI_POLMAV:
- sample = SFX_POLICE_RADIO_HELICOPTER;
+ sample = SFX_SFX_POLICE_RADIO_HELICOPTER;
break;
case MI_POLICE:
- sample = SFX_POLICE_RADIO_POLICE_CAR;
+ sample = SFX_SFX_POLICE_RADIO_POLICE_CAR;
break;
case MI_ENFORCER:
- sample = SFX_POLICE_RADIO_SWAT_VAN;
+ sample = SFX_SFX_POLICE_RADIO_SWAT_VAN;
break;
case MI_PREDATOR:
case MI_SQUALO:
case MI_SPEEDER:
- sample = SFX_POLICE_RADIO_SPEEDBOAT;
+ sample = SFX_SFX_POLICE_RADIO_SPEEDBOAT;
break;
case MI_BUS:
- sample = SFX_POLICE_RADIO_BUS;
+ sample = SFX_SFX_POLICE_RADIO_BUS;
break;
case MI_RHINO:
- sample = SFX_POLICE_RADIO_TANK;
+ sample = SFX_SFX_POLICE_RADIO_TANK;
break;
case MI_ANGEL:
case MI_PCJ600:
case MI_FREEWAY:
case MI_SANCHEZ:
- sample = SFX_POLICE_RADIO_MOTOBIKE;
+ sample = SFX_SFX_POLICE_RADIO_MOTOBIKE;
break;
case MI_COACH:
- sample = SFX_POLICE_RADIO_COACH;
+ sample = SFX_SFX_POLICE_RADIO_COACH;
break;
- case MI_ROMERO:
- sample = SFX_POLICE_RADIO_HEARSE;
+ case MI_HEARSE:
+ sample = SFX_SFX_POLICE_RADIO_HEARSE;
break;
case MI_PIZZABOY:
case MI_FAGGIO:
- sample = SFX_POLICE_RADIO_MOPED;
+ sample = SFX_SFX_POLICE_RADIO_MOPED;
break;
case MI_DEADDODO:
case MI_SKIMMER:
- sample = SFX_POLICE_RADIO_PLANE;
+ sample = SFX_SFX_POLICE_RADIO_PLANE;
break;
case MI_REEFER:
case MI_TROPIC:
case MI_COASTG:
case MI_MARQUIS:
case MI_JETMAX:
- sample = SFX_POLICE_RADIO_BOAT;
+ sample = SFX_SFX_POLICE_RADIO_BOAT;
break;
case MI_CADDY:
- sample = SFX_POLICE_RADIO_GOLF_CART;
+ sample = SFX_SFX_POLICE_RADIO_GOLF_CART;
break;
case MI_DINGHY:
- sample = SFX_POLICE_RADIO_DINGHY;
+ sample = SFX_SFX_POLICE_RADIO_DINGHY;
break;
default:
//debug("\n *** UNKNOWN CAR MODEL INDEX %d *** ", veh->GetModelIndex());
diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h
index 22b425e7..a7de4a91 100644
--- a/src/audio/audio_enums.h
+++ b/src/audio/audio_enums.h
@@ -12,8 +12,8 @@ enum eRadioStation
EMOTION,
WAVE,
USERTRACK,
- NUM_RADIOS = 10,
- POLICE_RADIO = 10,
+ NUM_RADIOS = 11,
+ POLICE_RADIO = 11,
RADIO_OFF = 10,
//TAXI_RADIO,
};
@@ -38,1230 +38,72 @@ enum ePlayerMood
enum eStreamedSounds
{
- STREAMED_SOUND_RADIO_WILD,
+ STREAMED_SOUND_RADIO_HEAD,
+ STREAMED_SOUND_RADIO_DOUBLE,
+ STREAMED_SOUND_RADIO_KJAH,
+ STREAMED_SOUND_RADIO_RISE,
+ STREAMED_SOUND_RADIO_LIPS,
+ STREAMED_SOUND_RADIO_MUNDO,
+ STREAMED_SOUND_RADIO_MSX,
STREAMED_SOUND_RADIO_FLASH,
- STREAMED_SOUND_RADIO_KCHAT,
- STREAMED_SOUND_RADIO_FEVER,
- STREAMED_SOUND_RADIO_VROCK,
- STREAMED_SOUND_RADIO_VCPR,
- STREAMED_SOUND_RADIO_ESPANTOSO,
- STREAMED_SOUND_RADIO_EMOTION,
- STREAMED_SOUND_RADIO_WAVE,
+ STREAMED_SOUND_RADIO_LCJ,
+ STREAMED_SOUND_RADIO_LCFR,
STREAMED_SOUND_RADIO_MP3_PLAYER,
STREAMED_SOUND_CITY_AMBIENT,
STREAMED_SOUND_WATER_AMBIENT,
- STREAMED_SOUND_BEACH_AMBIENT,
- STREAMED_SOUND_HAVANA_CITY_AMBIENT,
- STREAMED_SOUND_HAVANA_WATER_AMBIENT,
- STREAMED_SOUND_HAVANA_BEACH_AMBIENT,
- STREAMED_SOUND_MALL_AMBIENT,
- STREAMED_SOUND_STRIPCLUB_AMBIENT,
- STREAMED_SOUND_MALIBU_AMBIENT,
- STREAMED_SOUND_HOTEL_AMBIENT,
- STREAMED_SOUND_DIRTRING_AMBIENT,
- STREAMED_SOUND_LAW4RIOT_AMBIENT,
- STREAMED_SOUND_AMBSIL_AMBIENT,
+ STREAMED_SOUND_SAWMILL,
+ STREAMED_SOUND_HAVANA_CITY_AMBIENT, // CITY
+ STREAMED_SOUND_HAVANA_WATER_AMBIENT, // WATER
+ STREAMED_SOUND_HAVANA_BEACH_AMBIENT, // WATER
+ STREAMED_SOUND_MALL_AMBIENT, // CITY
+ STREAMED_SOUND_STRIPCLUB_AMBIENT, // CITY
+ STREAMED_SOUND_MALIBU_AMBIENT, // CITY
+ STREAMED_SOUND_HOTEL_AMBIENT, // CITY
+ STREAMED_SOUND_DIRTRING_AMBIENT, // CITY
+ STREAMED_SOUND_LAW4RIOT_AMBIENT, // CITY
+ STREAMED_SOUND_AMBSIL_AMBIENT, // CITY
STREAMED_SOUND_RADIO_POLICE,
STREAMED_SOUND_RADIO_TAXI,
- STREAMED_SOUND_ANNOUNCE_BRIDGE_CLOSED,
- STREAMED_SOUND_ANNOUNCE_BRIDGE_OPEN,
- STREAMED_SOUND_CUTSCENE_ASS_1,
- STREAMED_SOUND_CUTSCENE_ASS_2,
- STREAMED_SOUND_CUTSCENE_BANK_1,
- STREAMED_SOUND_CUTSCENE_BANK_2A,
- STREAMED_SOUND_CUTSCENE_BANK_2B,
- STREAMED_SOUND_CUTSCENE_BANK_3A,
- STREAMED_SOUND_CUTSCENE_BANK_3B,
- STREAMED_SOUND_CUTSCENE_BANK_4,
- STREAMED_SOUND_CUTSCENE_BIKE_1,
- STREAMED_SOUND_CUTSCENE_BIKE_2,
- STREAMED_SOUND_CUTSCENE_BIKE_3,
- STREAMED_SOUND_CUTSCENE_BUD_1,
- STREAMED_SOUND_CUTSCENE_BUD_2,
- STREAMED_SOUND_CUTSCENE_BUD_3,
- STREAMED_SOUND_CUTSCENE_CAP_1,
- STREAMED_SOUND_CUTSCENE_CAR_1,
- STREAMED_SOUND_CUTSCENE_CNT_1A,
- STREAMED_SOUND_CUTSCENE_CNT_1B,
- STREAMED_SOUND_CUTSCENE_CNT_2,
- STREAMED_SOUND_CUTSCENE_COK_1,
- STREAMED_SOUND_CUTSCENE_COK_2A,
- STREAMED_SOUND_CUTSCENE_COK_2B,
- STREAMED_SOUND_CUTSCENE_COK_3,
- STREAMED_SOUND_CUTSCENE_COK_4A,
- STREAMED_SOUND_CUTSCENE_COK_4A2,
- STREAMED_SOUND_CUTSCENE_COK_4B,
- STREAMED_SOUND_CUTSCENE_COL_1,
- STREAMED_SOUND_CUTSCENE_COL_2,
- STREAMED_SOUND_CUTSCENE_COL_3A,
- STREAMED_SOUND_CUTSCENE_COL_4A,
- STREAMED_SOUND_CUTSCENE_COL_5A,
- STREAMED_SOUND_CUTSCENE_COL_5B,
- STREAMED_SOUND_CUTSCENE_CUB_1,
- STREAMED_SOUND_CUTSCENE_CUB_2,
- STREAMED_SOUND_CUTSCENE_CUB_3,
- STREAMED_SOUND_CUTSCENE_CUB_4,
- STREAMED_SOUND_CUTSCENE_DRUG_1,
- STREAMED_SOUND_CUTSCENE_FIN,
- STREAMED_SOUND_CUTSCENE_FIN2,
+ STREAMED_SOUND_NEWS_A,
+ STREAMED_SOUND_NEWS_B,
+ STREAMED_SOUND_NEWS_C,
+ STREAMED_SOUND_NEWS_D,
+ STREAMED_SOUND_NEWS_E,
+ STREAMED_SOUND_NEWS_F,
+ STREAMED_SOUND_NEWS_G,
+ STREAMED_SOUND_NEWS_H,
+ STREAMED_SOUND_NEWS_I,
+ STREAMED_SOUND_NEWS_J,
+ STREAMED_SOUND_NEWS_K,
+ STREAMED_SOUND_NEWS_L,
+ STREAMED_SOUND_NEWS_M,
+ STREAMED_SOUND_NEWS_N,
+ STREAMED_SOUND_CUTSCENE_BIKER,
+ STREAMED_SOUND_CUTSCENE_BONEVOY,
+ STREAMED_SOUND_CUTSCENE_CAMPAIN,
+ STREAMED_SOUND_CUTSCENE_CASHCHP,
+ STREAMED_SOUND_CUTSCENE_CONTBAN,
+ STREAMED_SOUND_CUTSCENE_CRAZY69,
+ STREAMED_SOUND_CUTSCENE_CUTTEST,
+ STREAMED_SOUND_CUTSCENE_DEADLY,
+ STREAMED_SOUND_CUTSCENE_DONPROB,
+ STREAMED_SOUND_CUTSCENE_DRIVNMR,
+ STREAMED_SOUND_CUTSCENE_ELECTON,
+ STREAMED_SOUND_CUTSCENE_FINAL,
+ STREAMED_SOUND_CUTSCENE_FINAL_2,
+ STREAMED_SOUND_CUTSCENE_HOMSWET,
+ STREAMED_SOUND_CUTSCENE_HOTWHEL,
+ STREAMED_SOUND_CUTSCENE_KIDNAPP,
+ STREAMED_SOUND_CUTSCENE_LANDGRB,
+ STREAMED_SOUND_CUTSCENE_MORGUE,
+ STREAMED_SOUND_CUTSCENE_OVERDOS,
+ STREAMED_SOUND_CUTSCENE_RUFJUST,
+ STREAMED_SOUND_CUTSCENE_SAYONAR,
+ STREAMED_SOUND_CUTSCENE_SICILAN,
+ STREAMED_SOUND_CUTSCENE_THEOFER,
+ STREAMED_SOUND_CUTSCENE_INTRO,
STREAMED_SOUND_CUTSCENE_FINALE,
- STREAMED_SOUND_CUTSCENE_HAT_1,
- STREAMED_SOUND_CUTSCENE_HAT_2,
- STREAMED_SOUND_CUTSCENE_HAT_3,
- STREAMED_SOUND_CUTSCENE_ICE_1,
- STREAMED_SOUND_CUTSCENE_INT_A,
- STREAMED_SOUND_CUTSCENE_INT_B,
- STREAMED_SOUND_CUTSCENE_INT_D,
- STREAMED_SOUND_CUTSCENE_INT_M,
- STREAMED_SOUND_CUTSCENE_LAW_1A,
- STREAMED_SOUND_CUTSCENE_LAW_1B,
- STREAMED_SOUND_CUTSCENE_LAW_2A,
- STREAMED_SOUND_CUTSCENE_LAW_2B,
- STREAMED_SOUND_CUTSCENE_LAW_2C,
- STREAMED_SOUND_CUTSCENE_LAW_3,
- STREAMED_SOUND_CUTSCENE_LAW_4,
- STREAMED_SOUND_CUTSCENE_PHIL_1,
- STREAMED_SOUND_CUTSCENE_PHIL_2,
- STREAMED_SOUND_CUTSCENE_PORN_1,
- STREAMED_SOUND_CUTSCENE_PORN_2,
- STREAMED_SOUND_CUTSCENE_PORN_3,
- STREAMED_SOUND_CUTSCENE_PORN_4,
- STREAMED_SOUND_CUTSCENE_RESC_1A,
- STREAMED_SOUND_CUTSCENE_ROK_1,
- STREAMED_SOUND_CUTSCENE_ROK_2,
- STREAMED_SOUND_CUTSCENE_ROK_3A,
- STREAMED_SOUND_CUTSCENE_STRIPA,
- STREAMED_SOUND_CUTSCENE_TAX_1,
- STREAMED_SOUND_CUTSCENE_TEX_1,
- STREAMED_SOUND_CUTSCENE_TEX_2,
- STREAMED_SOUND_CUTSCENE_TEX_3,
- STREAMED_SOUND_CUTSCENE_GLIGHT,
- STREAMED_SOUND_CUTSCENE_FIST,
- STREAMED_SOUND_CUTSCENE_ELBURRO1_PH1,
- STREAMED_SOUND_CUTSCENE_ELBURRO2_PH2,
STREAMED_SOUND_MISSION_COMPLETED,
- STREAMED_SOUND_MISSION_COMPLETED4,
- STREAMED_SOUND_MISSION_MOBR1,
- STREAMED_SOUND_MISSION_PAGER,
- STREAMED_SOUND_MISSION_CARREV,
- STREAMED_SOUND_MISSION_BIKEREV,
- STREAMED_SOUND_MISSION_LIFTOP,
- STREAMED_SOUND_MISSION_LIFTCL,
- STREAMED_SOUND_MISSION_LIFTRUN,
- STREAMED_SOUND_MISSION_LIFTBEL,
- STREAMED_SOUND_MISSION_INLIFT,
- STREAMED_SOUND_MISSION_SFX_01,
- STREAMED_SOUND_MISSION_SFX_02,
- STREAMED_SOUND_MISSION_CAMERAL,
- STREAMED_SOUND_MISSION_CAMERAR,
- STREAMED_SOUND_MISSION_CHEER1,
- STREAMED_SOUND_MISSION_CHEER2,
- STREAMED_SOUND_MISSION_CHEER3,
- STREAMED_SOUND_MISSION_CHEER4,
- STREAMED_SOUND_MISSION_OOH1,
- STREAMED_SOUND_MISSION_OOH2,
- STREAMED_SOUND_MISSION_RACE1,
- STREAMED_SOUND_MISSION_RACE2,
- STREAMED_SOUND_MISSION_RACE3,
- STREAMED_SOUND_MISSION_RACE4,
- STREAMED_SOUND_MISSION_RACE5,
- STREAMED_SOUND_MISSION_RACE6,
- STREAMED_SOUND_MISSION_RACE7,
- STREAMED_SOUND_MISSION_RACE8,
- STREAMED_SOUND_MISSION_RACE9,
- STREAMED_SOUND_MISSION_RACE10,
- STREAMED_SOUND_MISSION_RACE11,
- STREAMED_SOUND_MISSION_RACE12,
- STREAMED_SOUND_MISSION_RACE13,
- STREAMED_SOUND_MISSION_RACE14,
- STREAMED_SOUND_MISSION_RACE15,
- STREAMED_SOUND_MISSION_HOT1,
- STREAMED_SOUND_MISSION_HOT2,
- STREAMED_SOUND_MISSION_HOT3,
- STREAMED_SOUND_MISSION_HOT4,
- STREAMED_SOUND_MISSION_HOT5,
- STREAMED_SOUND_MISSION_HOT6,
- STREAMED_SOUND_MISSION_HOT7,
- STREAMED_SOUND_MISSION_HOT8,
- STREAMED_SOUND_MISSION_HOT9,
- STREAMED_SOUND_MISSION_HOT10,
- STREAMED_SOUND_MISSION_HOT11,
- STREAMED_SOUND_MISSION_HOT12,
- STREAMED_SOUND_MISSION_HOT13,
- STREAMED_SOUND_MISSION_HOT14,
- STREAMED_SOUND_MISSION_HOT15,
- STREAMED_SOUND_MISSION_LANSTP1,
- STREAMED_SOUND_MISSION_LANSTP2,
- STREAMED_SOUND_MISSION_LANAMU1,
- STREAMED_SOUND_MISSION_LANAMU2,
- STREAMED_SOUND_MISSION_AIRHORNL,
- STREAMED_SOUND_MISSION_AIRHORNR,
- STREAMED_SOUND_MISSION_SNIPSCRL,
- STREAMED_SOUND_MISSION_SNIPSHORT,
- STREAMED_SOUND_MISSION_BLOWROOF,
- STREAMED_SOUND_MISSION_ASS_1,
- STREAMED_SOUND_MISSION_ASS_2,
- STREAMED_SOUND_MISSION_ASS_3,
- STREAMED_SOUND_MISSION_ASS_4,
- STREAMED_SOUND_MISSION_ASS_5,
- STREAMED_SOUND_MISSION_ASS_6,
- STREAMED_SOUND_MISSION_ASS_7,
- STREAMED_SOUND_MISSION_ASS_8,
- STREAMED_SOUND_MISSION_ASS_9,
- STREAMED_SOUND_MISSION_ASS_10,
- STREAMED_SOUND_MISSION_ASS_11,
- STREAMED_SOUND_MISSION_ASS_12,
- STREAMED_SOUND_MISSION_ASS_13,
- STREAMED_SOUND_MISSION_ASS_14,
- STREAMED_SOUND_MISSION_BIKE1_1,
- STREAMED_SOUND_MISSION_BIKE1_2,
- STREAMED_SOUND_MISSION_BIKE1_3,
- STREAMED_SOUND_MISSION_BNK1_1,
- STREAMED_SOUND_MISSION_BNK1_2,
- STREAMED_SOUND_MISSION_BNK1_3,
- STREAMED_SOUND_MISSION_BNK1_4,
- STREAMED_SOUND_MISSION_BNK1_5,
- STREAMED_SOUND_MISSION_BNK1_6,
- STREAMED_SOUND_MISSION_BNK1_7,
- STREAMED_SOUND_MISSION_BNK1_8,
- STREAMED_SOUND_MISSION_BNK1_10,
- STREAMED_SOUND_MISSION_BNK1_11,
- STREAMED_SOUND_MISSION_BNK1_12,
- STREAMED_SOUND_MISSION_BNK1_13,
- STREAMED_SOUND_MISSION_BNK1_14,
- STREAMED_SOUND_MISSION_BNK2_1,
- STREAMED_SOUND_MISSION_BNK2_2,
- STREAMED_SOUND_MISSION_BNK2_3,
- STREAMED_SOUND_MISSION_BNK2_4,
- STREAMED_SOUND_MISSION_BNK2_5,
- STREAMED_SOUND_MISSION_BNK2_6,
- STREAMED_SOUND_MISSION_BNK2_7,
- STREAMED_SOUND_MISSION_BNK2_8,
- STREAMED_SOUND_MISSION_BNK2_9,
- STREAMED_SOUND_MISSION_BNK3_1,
- STREAMED_SOUND_MISSION_BNK3_2,
- STREAMED_SOUND_MISSION_BNK3_3A,
- STREAMED_SOUND_MISSION_BNK3_3B,
- STREAMED_SOUND_MISSION_BNK3_3C,
- STREAMED_SOUND_MISSION_BNK3_4A,
- STREAMED_SOUND_MISSION_BNK3_4B,
- STREAMED_SOUND_MISSION_BNK3_4C,
- STREAMED_SOUND_MISSION_BNK4_1,
- STREAMED_SOUND_MISSION_BNK4_2,
- STREAMED_SOUND_MISSION_BNK4_3A,
- STREAMED_SOUND_MISSION_BNK4_3B,
- STREAMED_SOUND_MISSION_BNK4_3C,
- STREAMED_SOUND_MISSION_BNK4_3D,
- STREAMED_SOUND_MISSION_BNK4_3E,
- STREAMED_SOUND_MISSION_BNK4_3F,
- STREAMED_SOUND_MISSION_BNK4_3G,
- STREAMED_SOUND_MISSION_BNK4_3H,
- STREAMED_SOUND_MISSION_BNK4_3I,
- STREAMED_SOUND_MISSION_BNK4_3J,
- STREAMED_SOUND_MISSION_BNK4_3K,
- STREAMED_SOUND_MISSION_BNK4_3M,
- STREAMED_SOUND_MISSION_BNK4_3O,
- STREAMED_SOUND_MISSION_BNK4_3P,
- STREAMED_SOUND_MISSION_BNK4_3Q,
- STREAMED_SOUND_MISSION_BNK4_3R,
- STREAMED_SOUND_MISSION_BNK4_3S,
- STREAMED_SOUND_MISSION_BNK4_3T,
- STREAMED_SOUND_MISSION_BNK4_3U,
- STREAMED_SOUND_MISSION_BNK4_3V,
- STREAMED_SOUND_MISSION_BNK4_4A,
- STREAMED_SOUND_MISSION_BNK4_4B,
- STREAMED_SOUND_MISSION_BNK4_5,
- STREAMED_SOUND_MISSION_BNK4_6,
- STREAMED_SOUND_MISSION_BNK4_7,
- STREAMED_SOUND_MISSION_BNK4_8,
- STREAMED_SOUND_MISSION_BNK4_9,
- STREAMED_SOUND_MISSION_BNK4_10,
- STREAMED_SOUND_MISSION_BNK4_11,
- STREAMED_SOUND_MISSION_BK4_12A,
- STREAMED_SOUND_MISSION_BK4_12B,
- STREAMED_SOUND_MISSION_BK4_12C,
- STREAMED_SOUND_MISSION_BNK4_13,
- STREAMED_SOUND_MISSION_BK4_14A,
- STREAMED_SOUND_MISSION_BK4_14B,
- STREAMED_SOUND_MISSION_BNK4_15,
- STREAMED_SOUND_MISSION_BNK4_16,
- STREAMED_SOUND_MISSION_BNK4_17,
- STREAMED_SOUND_MISSION_BNK4_18,
- STREAMED_SOUND_MISSION_BK4_19A,
- STREAMED_SOUND_MISSION_BK4_19B,
- STREAMED_SOUND_MISSION_BK4_20A,
- STREAMED_SOUND_MISSION_BK4_20B,
- STREAMED_SOUND_MISSION_BNK4_21,
- STREAMED_SOUND_MISSION_BNK422A,
- STREAMED_SOUND_MISSION_BNK422B,
- STREAMED_SOUND_MISSION_BK4_23A,
- STREAMED_SOUND_MISSION_BK4_23B,
- STREAMED_SOUND_MISSION_BK4_23C,
- STREAMED_SOUND_MISSION_BK4_23D,
- STREAMED_SOUND_MISSION_BK4_24A,
- STREAMED_SOUND_MISSION_BK4_24B,
- STREAMED_SOUND_MISSION_BNK4_25,
- STREAMED_SOUND_MISSION_BNK4_26,
- STREAMED_SOUND_MISSION_BNK4_27,
- STREAMED_SOUND_MISSION_BNK4_28,
- STREAMED_SOUND_MISSION_BNK4_29,
- STREAMED_SOUND_MISSION_BNK4_30,
- STREAMED_SOUND_MISSION_BK4_31A,
- STREAMED_SOUND_MISSION_BK4_31B,
- STREAMED_SOUND_MISSION_BNK4_32,
- STREAMED_SOUND_MISSION_BK4_34A,
- STREAMED_SOUND_MISSION_BK4_34B,
- STREAMED_SOUND_MISSION_BK4_35A,
- STREAMED_SOUND_MISSION_BK4_35B,
- STREAMED_SOUND_MISSION_BNK4_36,
- STREAMED_SOUND_MISSION_BNK4_37,
- STREAMED_SOUND_MISSION_BNK4_38,
- STREAMED_SOUND_MISSION_BNK4_39,
- STREAMED_SOUND_MISSION_BK4_40A,
- STREAMED_SOUND_MISSION_BK4_40B,
- STREAMED_SOUND_MISSION_BNK4_41,
- STREAMED_SOUND_MISSION_BNK4_42,
- STREAMED_SOUND_MISSION_BNK4_43,
- STREAMED_SOUND_MISSION_BNK4_44,
- STREAMED_SOUND_MISSION_BNK4_45,
- STREAMED_SOUND_MISSION_BNK4_46,
- STREAMED_SOUND_MISSION_BNK4_47,
- STREAMED_SOUND_MISSION_BNK4_48,
- STREAMED_SOUND_MISSION_BNK4_49,
- STREAMED_SOUND_MISSION_BNK450A,
- STREAMED_SOUND_MISSION_BNK450B,
- STREAMED_SOUND_MISSION_BNK4_51,
- STREAMED_SOUND_MISSION_BNK4_94,
- STREAMED_SOUND_MISSION_BNK4_95,
- STREAMED_SOUND_MISSION_BNK4_96,
- STREAMED_SOUND_MISSION_BNK4_97,
- STREAMED_SOUND_MISSION_BNK4_98,
- STREAMED_SOUND_MISSION_BNK4_99,
- STREAMED_SOUND_MISSION_BUD1_1,
- STREAMED_SOUND_MISSION_BUD1_2,
- STREAMED_SOUND_MISSION_BUD1_3,
- STREAMED_SOUND_MISSION_BUD1_4,
- STREAMED_SOUND_MISSION_BUD1_5,
- STREAMED_SOUND_MISSION_BUD1_9,
- STREAMED_SOUND_MISSION_BUD1_10,
- STREAMED_SOUND_MISSION_BUD2_1,
- STREAMED_SOUND_MISSION_BUD2_2,
- STREAMED_SOUND_MISSION_BUD2_3,
- STREAMED_SOUND_MISSION_BUD2_4,
- STREAMED_SOUND_MISSION_BUD2_5,
- STREAMED_SOUND_MISSION_BUD2_6,
- STREAMED_SOUND_MISSION_BUD2_7,
- STREAMED_SOUND_MISSION_BUD3_1,
- STREAMED_SOUND_MISSION_BUD3_1A,
- STREAMED_SOUND_MISSION_BUD3_1B,
- STREAMED_SOUND_MISSION_BUD3_1C,
- STREAMED_SOUND_MISSION_BUD3_2,
- STREAMED_SOUND_MISSION_BUD3_3,
- STREAMED_SOUND_MISSION_BUD3_4,
- STREAMED_SOUND_MISSION_BUD3_5,
- STREAMED_SOUND_MISSION_BUD3_6,
- STREAMED_SOUND_MISSION_BUD3_7,
- STREAMED_SOUND_MISSION_BUD3_8A,
- STREAMED_SOUND_MISSION_BUD3_8B,
- STREAMED_SOUND_MISSION_BUD3_8C,
- STREAMED_SOUND_MISSION_BUD3_9A,
- STREAMED_SOUND_MISSION_BUD3_9B,
- STREAMED_SOUND_MISSION_BUD3_9C,
- STREAMED_SOUND_MISSION_CAP1_2,
- STREAMED_SOUND_MISSION_CAP1_3,
- STREAMED_SOUND_MISSION_CAP1_4,
- STREAMED_SOUND_MISSION_CAP1_5,
- STREAMED_SOUND_MISSION_CAP1_6,
- STREAMED_SOUND_MISSION_CAP1_7,
- STREAMED_SOUND_MISSION_CAP1_8,
- STREAMED_SOUND_MISSION_CAP1_9,
- STREAMED_SOUND_MISSION_CAP1_10,
- STREAMED_SOUND_MISSION_CAP1_11,
- STREAMED_SOUND_MISSION_CAP1_12,
- STREAMED_SOUND_MISSION_CNT1_1,
- STREAMED_SOUND_MISSION_CNT1_2,
- STREAMED_SOUND_MISSION_CNT1_3,
- STREAMED_SOUND_MISSION_CNT1_4,
- STREAMED_SOUND_MISSION_CNT1_5,
- STREAMED_SOUND_MISSION_CNT2_1,
- STREAMED_SOUND_MISSION_CNT2_2,
- STREAMED_SOUND_MISSION_CNT2_3,
- STREAMED_SOUND_MISSION_CNT2_4,
- STREAMED_SOUND_MISSION_COK1_1,
- STREAMED_SOUND_MISSION_COK1_2,
- STREAMED_SOUND_MISSION_COK1_3,
- STREAMED_SOUND_MISSION_COK1_4,
- STREAMED_SOUND_MISSION_COK1_5,
- STREAMED_SOUND_MISSION_COK1_6,
- STREAMED_SOUND_MISSION_COK2_1,
- STREAMED_SOUND_MISSION_COK2_2,
- STREAMED_SOUND_MISSION_COK2_3,
- STREAMED_SOUND_MISSION_COK2_4,
- STREAMED_SOUND_MISSION_COK2_5,
- STREAMED_SOUND_MISSION_COK2_6,
- STREAMED_SOUND_MISSION_COK2_7A,
- STREAMED_SOUND_MISSION_COK2_7B,
- STREAMED_SOUND_MISSION_COK2_7C,
- STREAMED_SOUND_MISSION_COK2_8A,
- STREAMED_SOUND_MISSION_COK2_8B,
- STREAMED_SOUND_MISSION_COK2_8C,
- STREAMED_SOUND_MISSION_COK2_8D,
- STREAMED_SOUND_MISSION_COK2_9,
- STREAMED_SOUND_MISSION_COK210A,
- STREAMED_SOUND_MISSION_COK210B,
- STREAMED_SOUND_MISSION_COK210C,
- STREAMED_SOUND_MISSION_COK212A,
- STREAMED_SOUND_MISSION_COK212B,
- STREAMED_SOUND_MISSION_COK2_13,
- STREAMED_SOUND_MISSION_COK2_14,
- STREAMED_SOUND_MISSION_COK2_15,
- STREAMED_SOUND_MISSION_COK2_16,
- STREAMED_SOUND_MISSION_COK2_20,
- STREAMED_SOUND_MISSION_COK2_21,
- STREAMED_SOUND_MISSION_COK2_22,
- STREAMED_SOUND_MISSION_COK3_1,
- STREAMED_SOUND_MISSION_COK3_2,
- STREAMED_SOUND_MISSION_COK3_3,
- STREAMED_SOUND_MISSION_COK3_4,
- STREAMED_SOUND_MISSION_COK4_1,
- STREAMED_SOUND_MISSION_COK4_2,
- STREAMED_SOUND_MISSION_COK4_3,
- STREAMED_SOUND_MISSION_COK4_4,
- STREAMED_SOUND_MISSION_COK4_5,
- STREAMED_SOUND_MISSION_COK4_6,
- STREAMED_SOUND_MISSION_COK4_7,
- STREAMED_SOUND_MISSION_COK4_8,
- STREAMED_SOUND_MISSION_COK4_9,
- STREAMED_SOUND_MISSION_COK4_9A,
- STREAMED_SOUND_MISSION_COK4_10,
- STREAMED_SOUND_MISSION_COK4_11,
- STREAMED_SOUND_MISSION_COK4_12,
- STREAMED_SOUND_MISSION_COK4_13,
- STREAMED_SOUND_MISSION_COK4_14,
- STREAMED_SOUND_MISSION_COK4_15,
- STREAMED_SOUND_MISSION_COK4_16,
- STREAMED_SOUND_MISSION_COK4_17,
- STREAMED_SOUND_MISSION_COK4_18,
- STREAMED_SOUND_MISSION_COK4_19,
- STREAMED_SOUND_MISSION_COK4_20,
- STREAMED_SOUND_MISSION_COK4_21,
- STREAMED_SOUND_MISSION_COK4_22,
- STREAMED_SOUND_MISSION_COK4_23,
- STREAMED_SOUND_MISSION_COK4_24,
- STREAMED_SOUND_MISSION_COK4_25,
- STREAMED_SOUND_MISSION_COK4_26,
- STREAMED_SOUND_MISSION_COK4_27,
- STREAMED_SOUND_MISSION_COL1_1,
- STREAMED_SOUND_MISSION_COL1_2,
- STREAMED_SOUND_MISSION_COL1_3,
- STREAMED_SOUND_MISSION_COL1_4,
- STREAMED_SOUND_MISSION_COL1_5,
- STREAMED_SOUND_MISSION_COL1_6,
- STREAMED_SOUND_MISSION_COL1_7,
- STREAMED_SOUND_MISSION_COL1_8,
- STREAMED_SOUND_MISSION_COL2_1,
- STREAMED_SOUND_MISSION_COL2_2,
- STREAMED_SOUND_MISSION_COL2_3,
- STREAMED_SOUND_MISSION_COL2_4,
- STREAMED_SOUND_MISSION_COL2_5,
- STREAMED_SOUND_MISSION_COL2_6A,
- STREAMED_SOUND_MISSION_COL2_7,
- STREAMED_SOUND_MISSION_COL2_8,
- STREAMED_SOUND_MISSION_COL2_9,
- STREAMED_SOUND_MISSION_COL2_10,
- STREAMED_SOUND_MISSION_COL2_11,
- STREAMED_SOUND_MISSION_COL2_12,
- STREAMED_SOUND_MISSION_COL2_13,
- STREAMED_SOUND_MISSION_COL2_14,
- STREAMED_SOUND_MISSION_COL2_15,
- STREAMED_SOUND_MISSION_COL2_16,
- STREAMED_SOUND_MISSION_COL3_1,
- STREAMED_SOUND_MISSION_COL3_2,
- STREAMED_SOUND_MISSION_COL3_2A,
- STREAMED_SOUND_MISSION_COL3_2B,
- STREAMED_SOUND_MISSION_COL3_3,
- STREAMED_SOUND_MISSION_COL3_4,
- STREAMED_SOUND_MISSION_COL3_5,
- STREAMED_SOUND_MISSION_COL3_6,
- STREAMED_SOUND_MISSION_COL3_7,
- STREAMED_SOUND_MISSION_COL3_8,
- STREAMED_SOUND_MISSION_COL3_9,
- STREAMED_SOUND_MISSION_COL3_10,
- STREAMED_SOUND_MISSION_COL3_11,
- STREAMED_SOUND_MISSION_COL3_12,
- STREAMED_SOUND_MISSION_COL3_13,
- STREAMED_SOUND_MISSION_COL3_14,
- STREAMED_SOUND_MISSION_COL3_15,
- STREAMED_SOUND_MISSION_COL3_16,
- STREAMED_SOUND_MISSION_COL3_17,
- STREAMED_SOUND_MISSION_COL3_18,
- STREAMED_SOUND_MISSION_COL3_19,
- STREAMED_SOUND_MISSION_COL3_20,
- STREAMED_SOUND_MISSION_COL3_21,
- STREAMED_SOUND_MISSION_COL3_23,
- STREAMED_SOUND_MISSION_COL3_24,
- STREAMED_SOUND_MISSION_COL3_25,
- STREAMED_SOUND_MISSION_COL4_1,
- STREAMED_SOUND_MISSION_COL4_2,
- STREAMED_SOUND_MISSION_COL4_3,
- STREAMED_SOUND_MISSION_COL4_4,
- STREAMED_SOUND_MISSION_COL4_5,
- STREAMED_SOUND_MISSION_COL4_6,
- STREAMED_SOUND_MISSION_COL4_7,
- STREAMED_SOUND_MISSION_COL4_8,
- STREAMED_SOUND_MISSION_COL4_9,
- STREAMED_SOUND_MISSION_COL4_10,
- STREAMED_SOUND_MISSION_COL4_11,
- STREAMED_SOUND_MISSION_COL4_12,
- STREAMED_SOUND_MISSION_COL4_13,
- STREAMED_SOUND_MISSION_COL4_14,
- STREAMED_SOUND_MISSION_COL4_15,
- STREAMED_SOUND_MISSION_COL4_16,
- STREAMED_SOUND_MISSION_COL4_17,
- STREAMED_SOUND_MISSION_COL4_18,
- STREAMED_SOUND_MISSION_COL4_19,
- STREAMED_SOUND_MISSION_COL4_20,
- STREAMED_SOUND_MISSION_COL4_21,
- STREAMED_SOUND_MISSION_COL4_22,
- STREAMED_SOUND_MISSION_COL4_23,
- STREAMED_SOUND_MISSION_COL4_24,
- STREAMED_SOUND_MISSION_COL4_25,
- STREAMED_SOUND_MISSION_COL4_26,
- STREAMED_SOUND_MISSION_COL5_1,
- STREAMED_SOUND_MISSION_COL5_2,
- STREAMED_SOUND_MISSION_COL5_3,
- STREAMED_SOUND_MISSION_COL5_4,
- STREAMED_SOUND_MISSION_COL5_5,
- STREAMED_SOUND_MISSION_COL5_6,
- STREAMED_SOUND_MISSION_COL5_7,
- STREAMED_SOUND_MISSION_COL5_8,
- STREAMED_SOUND_MISSION_COL5_9,
- STREAMED_SOUND_MISSION_COL5_10,
- STREAMED_SOUND_MISSION_COL5_11,
- STREAMED_SOUND_MISSION_COL5_12,
- STREAMED_SOUND_MISSION_COL5_13,
- STREAMED_SOUND_MISSION_COL5_14,
- STREAMED_SOUND_MISSION_COL5_15,
- STREAMED_SOUND_MISSION_COL5_16,
- STREAMED_SOUND_MISSION_COL5_17,
- STREAMED_SOUND_MISSION_COL5_18,
- STREAMED_SOUND_MISSION_COL5_19,
- STREAMED_SOUND_MISSION_COL5_20,
- STREAMED_SOUND_MISSION_COL5_21,
- STREAMED_SOUND_MISSION_COL5_22,
- STREAMED_SOUND_MISSION_CUB1_1,
- STREAMED_SOUND_MISSION_CUB1_2,
- STREAMED_SOUND_MISSION_CUB1_3,
- STREAMED_SOUND_MISSION_CUB1_4,
- STREAMED_SOUND_MISSION_CUB1_5,
- STREAMED_SOUND_MISSION_CUB1_6,
- STREAMED_SOUND_MISSION_CUB1_7,
- STREAMED_SOUND_MISSION_CUB1_8,
- STREAMED_SOUND_MISSION_CUB1_9,
- STREAMED_SOUND_MISSION_CUB1_10,
- STREAMED_SOUND_MISSION_CUB2_1,
- STREAMED_SOUND_MISSION_CUB2_2,
- STREAMED_SOUND_MISSION_CUB2_3A,
- STREAMED_SOUND_MISSION_CUB2_3B,
- STREAMED_SOUND_MISSION_CUB2_3C,
- STREAMED_SOUND_MISSION_CUB2_4A,
- STREAMED_SOUND_MISSION_CUB2_5,
- STREAMED_SOUND_MISSION_CUB2_6,
- STREAMED_SOUND_MISSION_CUB2_7,
- STREAMED_SOUND_MISSION_CUB2_8,
- STREAMED_SOUND_MISSION_CUB2_9,
- STREAMED_SOUND_MISSION_CUB2_10,
- STREAMED_SOUND_MISSION_CUB2_11,
- STREAMED_SOUND_MISSION_CUB3_1,
- STREAMED_SOUND_MISSION_CUB3_2,
- STREAMED_SOUND_MISSION_CUB3_3,
- STREAMED_SOUND_MISSION_CUB3_4,
- STREAMED_SOUND_MISSION_CUB4_1,
- STREAMED_SOUND_MISSION_CUB4_2,
- STREAMED_SOUND_MISSION_CUB4_3,
- STREAMED_SOUND_MISSION_CUB4_4,
- STREAMED_SOUND_MISSION_CUB4_5,
- STREAMED_SOUND_MISSION_CUB4_5A,
- STREAMED_SOUND_MISSION_CUB4_6,
- STREAMED_SOUND_MISSION_CUB4_7,
- STREAMED_SOUND_MISSION_CUB4_8,
- STREAMED_SOUND_MISSION_CUB4_9,
- STREAMED_SOUND_MISSION_CUB4_10,
- STREAMED_SOUND_MISSION_CUB4_11,
- STREAMED_SOUND_MISSION_CUB4_12,
- STREAMED_SOUND_MISSION_CUB4_13,
- STREAMED_SOUND_MISSION_CUB4_14,
- STREAMED_SOUND_MISSION_CUB4_15,
- STREAMED_SOUND_MISSION_CUB4_16,
- STREAMED_SOUND_MISSION_GOLF_1,
- STREAMED_SOUND_MISSION_GOLF_2,
- STREAMED_SOUND_MISSION_GOLF_3,
- STREAMED_SOUND_MISSION_BAR_1,
- STREAMED_SOUND_MISSION_BAR_2,
- STREAMED_SOUND_MISSION_BAR_3,
- STREAMED_SOUND_MISSION_BAR_4,
- STREAMED_SOUND_MISSION_BAR_5,
- STREAMED_SOUND_MISSION_BAR_6,
- STREAMED_SOUND_MISSION_BAR_7,
- STREAMED_SOUND_MISSION_BAR_8,
- STREAMED_SOUND_MISSION_STRIP_1,
- STREAMED_SOUND_MISSION_STRIP_2,
- STREAMED_SOUND_MISSION_STRIP_3,
- STREAMED_SOUND_MISSION_STRIP_4,
- STREAMED_SOUND_MISSION_STRIP_5,
- STREAMED_SOUND_MISSION_STRIP_6,
- STREAMED_SOUND_MISSION_STRIP_7,
- STREAMED_SOUND_MISSION_STRIP_8,
- STREAMED_SOUND_MISSION_STRIP_9,
- STREAMED_SOUND_MISSION_STAR_1,
- STREAMED_SOUND_MISSION_STAR_2,
- STREAMED_SOUND_MISSION_STAR_3,
- STREAMED_SOUND_MISSION_STAR_4,
- STREAMED_SOUND_MISSION_FIN_1A,
- STREAMED_SOUND_MISSION_FIN_1B,
- STREAMED_SOUND_MISSION_FIN_1C,
- STREAMED_SOUND_MISSION_FIN_2B,
- STREAMED_SOUND_MISSION_FIN_2C,
- STREAMED_SOUND_MISSION_FIN_3,
- STREAMED_SOUND_MISSION_FIN_4,
- STREAMED_SOUND_MISSION_FIN_5,
- STREAMED_SOUND_MISSION_FIN_6,
- STREAMED_SOUND_MISSION_FIN_10,
- STREAMED_SOUND_MISSION_FIN_11A,
- STREAMED_SOUND_MISSION_FIN_11B,
- STREAMED_SOUND_MISSION_FIN_12A,
- STREAMED_SOUND_MISSION_FIN_12B,
- STREAMED_SOUND_MISSION_FIN_12C,
- STREAMED_SOUND_MISSION_FIN_13,
- STREAMED_SOUND_MISSION_FINKILL,
- STREAMED_SOUND_MISSION_LAW1_1,
- STREAMED_SOUND_MISSION_LAW1_2,
- STREAMED_SOUND_MISSION_LAW1_3,
- STREAMED_SOUND_MISSION_LAW1_4,
- STREAMED_SOUND_MISSION_LAW1_5,
- STREAMED_SOUND_MISSION_LAW1_6,
- STREAMED_SOUND_MISSION_LAW1_7,
- STREAMED_SOUND_MISSION_LAW1_8,
- STREAMED_SOUND_MISSION_LAW1_9,
- STREAMED_SOUND_MISSION_LAW1_10,
- STREAMED_SOUND_MISSION_LAW2_1,
- STREAMED_SOUND_MISSION_LAW2_2,
- STREAMED_SOUND_MISSION_LAW2_3,
- STREAMED_SOUND_MISSION_LAW2_4,
- STREAMED_SOUND_MISSION_LAW2_5,
- STREAMED_SOUND_MISSION_LAW2_6,
- STREAMED_SOUND_MISSION_LAW2_7,
- STREAMED_SOUND_MISSION_LAW2_8,
- STREAMED_SOUND_MISSION_LAW2_9,
- STREAMED_SOUND_MISSION_LAW2_10,
- STREAMED_SOUND_MISSION_LAW3_1,
- STREAMED_SOUND_MISSION_LAW3_2,
- STREAMED_SOUND_MISSION_LAW3_3,
- STREAMED_SOUND_MISSION_LAW3_4,
- STREAMED_SOUND_MISSION_LAW3_5,
- STREAMED_SOUND_MISSION_LAW3_6,
- STREAMED_SOUND_MISSION_LAW3_10,
- STREAMED_SOUND_MISSION_LAW3_11,
- STREAMED_SOUND_MISSION_LAW3_12,
- STREAMED_SOUND_MISSION_LAW3_13,
- STREAMED_SOUND_MISSION_LAW3_14,
- STREAMED_SOUND_MISSION_LAW3_16,
- STREAMED_SOUND_MISSION_LAW3_17,
- STREAMED_SOUND_MISSION_LAW3_18,
- STREAMED_SOUND_MISSION_LAW3_19,
- STREAMED_SOUND_MISSION_LAW3_20,
- STREAMED_SOUND_MISSION_LAW3_21,
- STREAMED_SOUND_MISSION_LAW3_22,
- STREAMED_SOUND_MISSION_LAW3_23,
- STREAMED_SOUND_MISSION_LAW3_24,
- STREAMED_SOUND_MISSION_LAW3_25,
- STREAMED_SOUND_MISSION_LAW4_1A,
- STREAMED_SOUND_MISSION_LAW4_1B,
- STREAMED_SOUND_MISSION_LAW4_1C,
- STREAMED_SOUND_MISSION_LAW4_1D,
- STREAMED_SOUND_MISSION_LAW4_10,
- STREAMED_SOUND_MISSION_LAW4_3,
- STREAMED_SOUND_MISSION_LAW4_4,
- STREAMED_SOUND_MISSION_LAW4_5,
- STREAMED_SOUND_MISSION_LAW4_6,
- STREAMED_SOUND_MISSION_LAW4_7,
- STREAMED_SOUND_MISSION_LAW4_8,
- STREAMED_SOUND_MISSION_LAW4_9,
- STREAMED_SOUND_MISSION_PHIL1_2,
- STREAMED_SOUND_MISSION_PHIL1_3,
- STREAMED_SOUND_MISSION_PHIL2_1,
- STREAMED_SOUND_MISSION_PHIL2_2,
- STREAMED_SOUND_MISSION_PHIL2_3,
- STREAMED_SOUND_MISSION_PHIL2_4,
- STREAMED_SOUND_MISSION_PHIL2_5,
- STREAMED_SOUND_MISSION_PHIL2_6,
- STREAMED_SOUND_MISSION_PHIL2_7,
- STREAMED_SOUND_MISSION_PHIL2_8,
- STREAMED_SOUND_MISSION_PHIL2_9,
- STREAMED_SOUND_MISSION_PHIL210,
- STREAMED_SOUND_MISSION_PHIL211,
- STREAMED_SOUND_MISSION_PORN1_1,
- STREAMED_SOUND_MISSION_PORN1_2,
- STREAMED_SOUND_MISSION_PORN1_3,
- STREAMED_SOUND_MISSION_PRN1_3A,
- STREAMED_SOUND_MISSION_PORN1_4,
- STREAMED_SOUND_MISSION_PORN1_5,
- STREAMED_SOUND_MISSION_PORN1_6,
- STREAMED_SOUND_MISSION_PORN1_7,
- STREAMED_SOUND_MISSION_PORN1_8,
- STREAMED_SOUND_MISSION_PORN1_9,
- STREAMED_SOUND_MISSION_PRN1_10,
- STREAMED_SOUND_MISSION_PRN1_11,
- STREAMED_SOUND_MISSION_PRN1_12,
- STREAMED_SOUND_MISSION_PRN1_13,
- STREAMED_SOUND_MISSION_PRN1_14,
- STREAMED_SOUND_MISSION_PRN1_15,
- STREAMED_SOUND_MISSION_PRN1_16,
- STREAMED_SOUND_MISSION_PRN1_17,
- STREAMED_SOUND_MISSION_PRN1_18,
- STREAMED_SOUND_MISSION_PRN1_19,
- STREAMED_SOUND_MISSION_PRN1_20,
- STREAMED_SOUND_MISSION_PRN1_21,
- STREAMED_SOUND_MISSION_PORN3_1,
- STREAMED_SOUND_MISSION_PORN3_2,
- STREAMED_SOUND_MISSION_PORN3_3,
- STREAMED_SOUND_MISSION_PORN3_4,
- STREAMED_SOUND_MISSION_PSYCH_1,
- STREAMED_SOUND_MISSION_PSYCH_2,
- STREAMED_SOUND_MISSION_ROK2_01,
- STREAMED_SOUND_MISSION_ROK3_1,
- STREAMED_SOUND_MISSION_ROK3_2,
- STREAMED_SOUND_MISSION_ROK3_3,
- STREAMED_SOUND_MISSION_ROK3_4,
- STREAMED_SOUND_MISSION_ROK3_5,
- STREAMED_SOUND_MISSION_ROK3_6,
- STREAMED_SOUND_MISSION_ROK3_7,
- STREAMED_SOUND_MISSION_ROK3_8,
- STREAMED_SOUND_MISSION_ROK3_9,
- STREAMED_SOUND_MISSION_ROK3_10,
- STREAMED_SOUND_MISSION_ROK3_11,
- STREAMED_SOUND_MISSION_ROK3_12,
- STREAMED_SOUND_MISSION_ROK3_13,
- STREAMED_SOUND_MISSION_ROK3_14,
- STREAMED_SOUND_MISSION_ROK3_15,
- STREAMED_SOUND_MISSION_ROK3_16,
- STREAMED_SOUND_MISSION_ROK3_17,
- STREAMED_SOUND_MISSION_ROK3_18,
- STREAMED_SOUND_MISSION_ROK3_19,
- STREAMED_SOUND_MISSION_ROK3_20,
- STREAMED_SOUND_MISSION_ROK3_21,
- STREAMED_SOUND_MISSION_ROK3_22,
- STREAMED_SOUND_MISSION_ROK3_23,
- STREAMED_SOUND_MISSION_ROK3_24,
- STREAMED_SOUND_MISSION_ROK3_25,
- STREAMED_SOUND_MISSION_ROK3_26,
- STREAMED_SOUND_MISSION_ROK3_27,
- STREAMED_SOUND_MISSION_ROK3_62,
- STREAMED_SOUND_MISSION_ROK3_63,
- STREAMED_SOUND_MISSION_ROK3_64,
- STREAMED_SOUND_MISSION_ROK3_65,
- STREAMED_SOUND_MISSION_ROK3_66,
- STREAMED_SOUND_MISSION_ROK3_67,
- STREAMED_SOUND_MISSION_ROK3_68,
- STREAMED_SOUND_MISSION_ROK3_69,
- STREAMED_SOUND_MISSION_ROK3_70,
- STREAMED_SOUND_MISSION_ROK3_71,
- STREAMED_SOUND_MISSION_ROK3_73,
- STREAMED_SOUND_MISSION_RESC_1,
- STREAMED_SOUND_MISSION_RESC_2,
- STREAMED_SOUND_MISSION_RESC_3,
- STREAMED_SOUND_MISSION_RESC_4,
- STREAMED_SOUND_MISSION_RESC_5,
- STREAMED_SOUND_MISSION_RESC_6,
- STREAMED_SOUND_MISSION_RESC_7,
- STREAMED_SOUND_MISSION_RESC_8,
- STREAMED_SOUND_MISSION_RESC_9,
- STREAMED_SOUND_MISSION_RESC_10,
- STREAMED_SOUND_MISSION_ROK1_1A,
- STREAMED_SOUND_MISSION_ROK1_1B,
- STREAMED_SOUND_MISSION_ROK1_5,
- STREAMED_SOUND_MISSION_ROK1_6,
- STREAMED_SOUND_MISSION_ROK1_7,
- STREAMED_SOUND_MISSION_ROK1_8,
- STREAMED_SOUND_MISSION_ROK1_9,
- STREAMED_SOUND_MISSION_TAX1_1,
- STREAMED_SOUND_MISSION_TAX1_2,
- STREAMED_SOUND_MISSION_TAX1_3,
- STREAMED_SOUND_MISSION_TAX1_4,
- STREAMED_SOUND_MISSION_TAX1_5,
- STREAMED_SOUND_MISSION_TAX2_1,
- STREAMED_SOUND_MISSION_TAX2_2,
- STREAMED_SOUND_MISSION_TAX2_3,
- STREAMED_SOUND_MISSION_TAX2_4,
- STREAMED_SOUND_MISSION_TAX2_5,
- STREAMED_SOUND_MISSION_TAX2_6,
- STREAMED_SOUND_MISSION_TAX2_7,
- STREAMED_SOUND_MISSION_TAX3_1,
- STREAMED_SOUND_MISSION_TAX3_2,
- STREAMED_SOUND_MISSION_TAX3_3,
- STREAMED_SOUND_MISSION_TAX3_4,
- STREAMED_SOUND_MISSION_TAX3_5,
- STREAMED_SOUND_MISSION_TEX1_1,
- STREAMED_SOUND_MISSION_TEX1_2,
- STREAMED_SOUND_MISSION_TEX1_3,
- STREAMED_SOUND_MISSION_TEX1_4,
- STREAMED_SOUND_MISSION_TEX1_5,
- STREAMED_SOUND_MISSION_TEX1_6,
- STREAMED_SOUND_MISSION_TEX2_1,
- STREAMED_SOUND_MISSION_TEX3_1,
- STREAMED_SOUND_MISSION_TEX3_2,
- STREAMED_SOUND_MISSION_TEX3_3,
- STREAMED_SOUND_MISSION_TEX3_4,
- STREAMED_SOUND_MISSION_TEX3_5,
- STREAMED_SOUND_MISSION_TEX3_6,
- STREAMED_SOUND_MISSION_TEX3_7,
- STREAMED_SOUND_MISSION_TEX3_8,
- STREAMED_SOUND_MISSION_HAT_1A,
- STREAMED_SOUND_MISSION_INTRO1,
- STREAMED_SOUND_MISSION_INTRO2,
- STREAMED_SOUND_MISSION_INTRO3,
- STREAMED_SOUND_MISSION_INTRO4,
- STREAMED_SOUND_MISSION_MOB_01A,
- STREAMED_SOUND_MISSION_MOB_01B,
- STREAMED_SOUND_MISSION_MOB_01C,
- STREAMED_SOUND_MISSION_MOB_02A,
- STREAMED_SOUND_MISSION_MOB_02B,
- STREAMED_SOUND_MISSION_MOB_02C,
- STREAMED_SOUND_MISSION_MOB_03A,
- STREAMED_SOUND_MISSION_MOB_03B,
- STREAMED_SOUND_MISSION_MOB_03C,
- STREAMED_SOUND_MISSION_MOB_03D,
- STREAMED_SOUND_MISSION_MOB_03E,
- STREAMED_SOUND_MISSION_SHARK_1,
- STREAMED_SOUND_MISSION_SHARK_2,
- STREAMED_SOUND_MISSION_SHARK_3,
- STREAMED_SOUND_MISSION_SHARK_4,
- STREAMED_SOUND_MISSION_SHARK_5,
- STREAMED_SOUND_MISSION_MOB_04A,
- STREAMED_SOUND_MISSION_MOB_04B,
- STREAMED_SOUND_MISSION_MOB_04C,
- STREAMED_SOUND_MISSION_MOB_04D,
- STREAMED_SOUND_MISSION_MOB_05A,
- STREAMED_SOUND_MISSION_MOB_05B,
- STREAMED_SOUND_MISSION_MOB_05C,
- STREAMED_SOUND_MISSION_MOB_05D,
- STREAMED_SOUND_MISSION_MOB_06A,
- STREAMED_SOUND_MISSION_MOB_06B,
- STREAMED_SOUND_MISSION_MOB_06C,
- STREAMED_SOUND_MISSION_MOB_07A,
- STREAMED_SOUND_MISSION_MOB_07B,
- STREAMED_SOUND_MISSION_MOB_08A,
- STREAMED_SOUND_MISSION_MOB_08B,
- STREAMED_SOUND_MISSION_MOB_08C,
- STREAMED_SOUND_MISSION_MOB_08D,
- STREAMED_SOUND_MISSION_MOB_08E,
- STREAMED_SOUND_MISSION_MOB_08F,
- STREAMED_SOUND_MISSION_MOB_08G,
- STREAMED_SOUND_MISSION_MOB_09A,
- STREAMED_SOUND_MISSION_MOB_09B,
- STREAMED_SOUND_MISSION_MOB_09C,
- STREAMED_SOUND_MISSION_MOB_09D,
- STREAMED_SOUND_MISSION_MOB_09E,
- STREAMED_SOUND_MISSION_MOB_09F,
- STREAMED_SOUND_MISSION_MOB_10A,
- STREAMED_SOUND_MISSION_MOB_10B,
- STREAMED_SOUND_MISSION_MOB_10C,
- STREAMED_SOUND_MISSION_MOB_10D,
- STREAMED_SOUND_MISSION_MOB_10E,
- STREAMED_SOUND_MISSION_MOB_11A,
- STREAMED_SOUND_MISSION_MOB_11B,
- STREAMED_SOUND_MISSION_MOB_11C,
- STREAMED_SOUND_MISSION_MOB_11D,
- STREAMED_SOUND_MISSION_MOB_11E,
- STREAMED_SOUND_MISSION_MOB_11F,
- STREAMED_SOUND_MISSION_MOB_14A,
- STREAMED_SOUND_MISSION_MOB_14B,
- STREAMED_SOUND_MISSION_MOB_14C,
- STREAMED_SOUND_MISSION_MOB_14D,
- STREAMED_SOUND_MISSION_MOB_14E,
- STREAMED_SOUND_MISSION_MOB_14F,
- STREAMED_SOUND_MISSION_MOB_14G,
- STREAMED_SOUND_MISSION_MOB_14H,
- STREAMED_SOUND_MISSION_MOB_16A,
- STREAMED_SOUND_MISSION_MOB_16B,
- STREAMED_SOUND_MISSION_MOB_16C,
- STREAMED_SOUND_MISSION_MOB_16D,
- STREAMED_SOUND_MISSION_MOB_16E,
- STREAMED_SOUND_MISSION_MOB_16F,
- STREAMED_SOUND_MISSION_MOB_16G,
- STREAMED_SOUND_MISSION_MOB_17A,
- STREAMED_SOUND_MISSION_MOB_17B,
- STREAMED_SOUND_MISSION_MOB_17C,
- STREAMED_SOUND_MISSION_MOB_17D,
- STREAMED_SOUND_MISSION_MOB_17E,
- STREAMED_SOUND_MISSION_MOB_17G,
- STREAMED_SOUND_MISSION_MOB_17H,
- STREAMED_SOUND_MISSION_MOB_17I,
- STREAMED_SOUND_MISSION_MOB_17J,
- STREAMED_SOUND_MISSION_MOB_17K,
- STREAMED_SOUND_MISSION_MOB_17L,
- STREAMED_SOUND_MISSION_MOB_18A,
- STREAMED_SOUND_MISSION_MOB_18B,
- STREAMED_SOUND_MISSION_MOB_18C,
- STREAMED_SOUND_MISSION_MOB_18D,
- STREAMED_SOUND_MISSION_MOB_18E,
- STREAMED_SOUND_MISSION_MOB_18F,
- STREAMED_SOUND_MISSION_MOB_18G,
- STREAMED_SOUND_MISSION_MOB_20A,
- STREAMED_SOUND_MISSION_MOB_20B,
- STREAMED_SOUND_MISSION_MOB_20C,
- STREAMED_SOUND_MISSION_MOB_20D,
- STREAMED_SOUND_MISSION_MOB_20E,
- STREAMED_SOUND_MISSION_MOB_24A,
- STREAMED_SOUND_MISSION_MOB_24B,
- STREAMED_SOUND_MISSION_MOB_24C,
- STREAMED_SOUND_MISSION_MOB_24D,
- STREAMED_SOUND_MISSION_MOB_24E,
- STREAMED_SOUND_MISSION_MOB_24F,
- STREAMED_SOUND_MISSION_MOB_24G,
- STREAMED_SOUND_MISSION_MOB_24H,
- STREAMED_SOUND_MISSION_MOB_25A,
- STREAMED_SOUND_MISSION_MOB_25B,
- STREAMED_SOUND_MISSION_MOB_25C,
- STREAMED_SOUND_MISSION_MOB_25D,
- STREAMED_SOUND_MISSION_MOB_26A,
- STREAMED_SOUND_MISSION_MOB_26B,
- STREAMED_SOUND_MISSION_MOB_26C,
- STREAMED_SOUND_MISSION_MOB_26D,
- STREAMED_SOUND_MISSION_MOB_26E,
- STREAMED_SOUND_MISSION_MOB_29A,
- STREAMED_SOUND_MISSION_MOB_29B,
- STREAMED_SOUND_MISSION_MOB_29C,
- STREAMED_SOUND_MISSION_MOB_29D,
- STREAMED_SOUND_MISSION_MOB_29E,
- STREAMED_SOUND_MISSION_MOB_29F,
- STREAMED_SOUND_MISSION_MOB_29G,
- STREAMED_SOUND_MISSION_MOB_30A,
- STREAMED_SOUND_MISSION_MOB_30B,
- STREAMED_SOUND_MISSION_MOB_30C,
- STREAMED_SOUND_MISSION_MOB_30D,
- STREAMED_SOUND_MISSION_MOB_30E,
- STREAMED_SOUND_MISSION_MOB_30F,
- STREAMED_SOUND_MISSION_MOB_33A,
- STREAMED_SOUND_MISSION_MOB_33B,
- STREAMED_SOUND_MISSION_MOB_33C,
- STREAMED_SOUND_MISSION_MOB_33D,
- STREAMED_SOUND_MISSION_MOB_34A,
- STREAMED_SOUND_MISSION_MOB_34B,
- STREAMED_SOUND_MISSION_MOB_34C,
- STREAMED_SOUND_MISSION_MOB_34D,
- STREAMED_SOUND_MISSION_MOB_35A,
- STREAMED_SOUND_MISSION_MOB_35B,
- STREAMED_SOUND_MISSION_MOB_35C,
- STREAMED_SOUND_MISSION_MOB_35D,
- STREAMED_SOUND_MISSION_MOB_36A,
- STREAMED_SOUND_MISSION_MOB_36B,
- STREAMED_SOUND_MISSION_MOB_36C,
- STREAMED_SOUND_MISSION_MOB_40A,
- STREAMED_SOUND_MISSION_MOB_40B,
- STREAMED_SOUND_MISSION_MOB_40C,
- STREAMED_SOUND_MISSION_MOB_40D,
- STREAMED_SOUND_MISSION_MOB_40E,
- STREAMED_SOUND_MISSION_MOB_40F,
- STREAMED_SOUND_MISSION_MOB_40G,
- STREAMED_SOUND_MISSION_MOB_40H,
- STREAMED_SOUND_MISSION_MOB_40I,
- STREAMED_SOUND_MISSION_MOB_41A,
- STREAMED_SOUND_MISSION_MOB_41B,
- STREAMED_SOUND_MISSION_MOB_41C,
- STREAMED_SOUND_MISSION_MOB_41D,
- STREAMED_SOUND_MISSION_MOB_41E,
- STREAMED_SOUND_MISSION_MOB_41F,
- STREAMED_SOUND_MISSION_MOB_41G,
- STREAMED_SOUND_MISSION_MOB_41H,
- STREAMED_SOUND_MISSION_MOB_42A,
- STREAMED_SOUND_MISSION_MOB_42B,
- STREAMED_SOUND_MISSION_MOB_42C,
- STREAMED_SOUND_MISSION_MOB_42D,
- STREAMED_SOUND_MISSION_MOB_42E,
- STREAMED_SOUND_MISSION_MOB_43A,
- STREAMED_SOUND_MISSION_MOB_43B,
- STREAMED_SOUND_MISSION_MOB_43C,
- STREAMED_SOUND_MISSION_MOB_43D,
- STREAMED_SOUND_MISSION_MOB_43E,
- STREAMED_SOUND_MISSION_MOB_43F,
- STREAMED_SOUND_MISSION_MOB_43G,
- STREAMED_SOUND_MISSION_MOB_43H,
- STREAMED_SOUND_MISSION_MOB_45A,
- STREAMED_SOUND_MISSION_MOB_45B,
- STREAMED_SOUND_MISSION_MOB_45C,
- STREAMED_SOUND_MISSION_MOB_45D,
- STREAMED_SOUND_MISSION_MOB_45E,
- STREAMED_SOUND_MISSION_MOB_45F,
- STREAMED_SOUND_MISSION_MOB_45G,
- STREAMED_SOUND_MISSION_MOB_45H,
- STREAMED_SOUND_MISSION_MOB_45I,
- STREAMED_SOUND_MISSION_MOB_45J,
- STREAMED_SOUND_MISSION_MOB_45K,
- STREAMED_SOUND_MISSION_MOB_45L,
- STREAMED_SOUND_MISSION_MOB_45M,
- STREAMED_SOUND_MISSION_MOB_45N,
- STREAMED_SOUND_MISSION_MOB_46A,
- STREAMED_SOUND_MISSION_MOB_46B,
- STREAMED_SOUND_MISSION_MOB_46C,
- STREAMED_SOUND_MISSION_MOB_46D,
- STREAMED_SOUND_MISSION_MOB_46E,
- STREAMED_SOUND_MISSION_MOB_46F,
- STREAMED_SOUND_MISSION_MOB_46G,
- STREAMED_SOUND_MISSION_MOB_46H,
- STREAMED_SOUND_MISSION_MOB_47A,
- STREAMED_SOUND_MISSION_MOB_52A,
- STREAMED_SOUND_MISSION_MOB_52B,
- STREAMED_SOUND_MISSION_MOB_52C,
- STREAMED_SOUND_MISSION_MOB_52D,
- STREAMED_SOUND_MISSION_MOB_52E,
- STREAMED_SOUND_MISSION_MOB_52F,
- STREAMED_SOUND_MISSION_MOB_52G,
- STREAMED_SOUND_MISSION_MOB_52H,
- STREAMED_SOUND_MISSION_MOB_54A,
- STREAMED_SOUND_MISSION_MOB_54B,
- STREAMED_SOUND_MISSION_MOB_54C,
- STREAMED_SOUND_MISSION_MOB_54D,
- STREAMED_SOUND_MISSION_MOB_54E,
- STREAMED_SOUND_MISSION_MOB_55A,
- STREAMED_SOUND_MISSION_MOB_55B,
- STREAMED_SOUND_MISSION_MOB_55C,
- STREAMED_SOUND_MISSION_MOB_55D,
- STREAMED_SOUND_MISSION_MOB_55E,
- STREAMED_SOUND_MISSION_MOB_55F,
- STREAMED_SOUND_MISSION_MOB_56A,
- STREAMED_SOUND_MISSION_MOB_56B,
- STREAMED_SOUND_MISSION_MOB_56C,
- STREAMED_SOUND_MISSION_MOB_56D,
- STREAMED_SOUND_MISSION_MOB_56E,
- STREAMED_SOUND_MISSION_MOB_56F,
- STREAMED_SOUND_MISSION_MOB_57A,
- STREAMED_SOUND_MISSION_MOB_57B,
- STREAMED_SOUND_MISSION_MOB_57C,
- STREAMED_SOUND_MISSION_MOB_57D,
- STREAMED_SOUND_MISSION_MOB_57E,
- STREAMED_SOUND_MISSION_MOB_58A,
- STREAMED_SOUND_MISSION_MOB_58B,
- STREAMED_SOUND_MISSION_MOB_58C,
- STREAMED_SOUND_MISSION_MOB_58D,
- STREAMED_SOUND_MISSION_MOB_58E,
- STREAMED_SOUND_MISSION_MOB_58F,
- STREAMED_SOUND_MISSION_MOB_58G,
- STREAMED_SOUND_MISSION_MOB_61A,
- STREAMED_SOUND_MISSION_MOB_61B,
- STREAMED_SOUND_MISSION_MOB_62A,
- STREAMED_SOUND_MISSION_MOB_62B,
- STREAMED_SOUND_MISSION_MOB_62C,
- STREAMED_SOUND_MISSION_MOB_62D,
- STREAMED_SOUND_MISSION_MOB_63A,
- STREAMED_SOUND_MISSION_MOB_63B,
- STREAMED_SOUND_MISSION_MOB_63C,
- STREAMED_SOUND_MISSION_MOB_63D,
- STREAMED_SOUND_MISSION_MOB_63E,
- STREAMED_SOUND_MISSION_MOB_63F,
- STREAMED_SOUND_MISSION_MOB_63G,
- STREAMED_SOUND_MISSION_MOB_63H,
- STREAMED_SOUND_MISSION_MOB_63I,
- STREAMED_SOUND_MISSION_MOB_63J,
- STREAMED_SOUND_MISSION_MOB_66A,
- STREAMED_SOUND_MISSION_MOB_66B,
- STREAMED_SOUND_MISSION_MOB_68A,
- STREAMED_SOUND_MISSION_MOB_68B,
- STREAMED_SOUND_MISSION_MOB_68C,
- STREAMED_SOUND_MISSION_MOB_68D,
- STREAMED_SOUND_MISSION_MOB_70A,
- STREAMED_SOUND_MISSION_MOB_70B,
- STREAMED_SOUND_MISSION_MOB_71A,
- STREAMED_SOUND_MISSION_MOB_71B,
- STREAMED_SOUND_MISSION_MOB_71C,
- STREAMED_SOUND_MISSION_MOB_71D,
- STREAMED_SOUND_MISSION_MOB_71E,
- STREAMED_SOUND_MISSION_MOB_71F,
- STREAMED_SOUND_MISSION_MOB_71G,
- STREAMED_SOUND_MISSION_MOB_71H,
- STREAMED_SOUND_MISSION_MOB_71I,
- STREAMED_SOUND_MISSION_MOB_71J,
- STREAMED_SOUND_MISSION_MOB_71K,
- STREAMED_SOUND_MISSION_MOB_71L,
- STREAMED_SOUND_MISSION_MOB_71M,
- STREAMED_SOUND_MISSION_MOB_71N,
- STREAMED_SOUND_MISSION_MOB_72A,
- STREAMED_SOUND_MISSION_MOB_72B,
- STREAMED_SOUND_MISSION_MOB_72C,
- STREAMED_SOUND_MISSION_MOB_72D,
- STREAMED_SOUND_MISSION_MOB_72E,
- STREAMED_SOUND_MISSION_MOB_72F,
- STREAMED_SOUND_MISSION_MOB_72G,
- STREAMED_SOUND_MISSION_MOB_73A,
- STREAMED_SOUND_MISSION_MOB_73C,
- STREAMED_SOUND_MISSION_MOB_73D,
- STREAMED_SOUND_MISSION_MOB_73F,
- STREAMED_SOUND_MISSION_MOB_73G,
- STREAMED_SOUND_MISSION_MOB_73I,
- STREAMED_SOUND_MISSION_MOB_95A,
- STREAMED_SOUND_MISSION_MOB_96A,
- STREAMED_SOUND_MISSION_MOB_98A,
- STREAMED_SOUND_MISSION_MOB_99A,
- STREAMED_SOUND_MISSION_JOB1_1B,
- STREAMED_SOUND_MISSION_JOB1_1C,
- STREAMED_SOUND_MISSION_JOB1_1D,
- STREAMED_SOUND_MISSION_JOB2_1B,
- STREAMED_SOUND_MISSION_JOB2_2,
- STREAMED_SOUND_MISSION_JOB2_3,
- STREAMED_SOUND_MISSION_JOB2_4,
- STREAMED_SOUND_MISSION_JOB2_5,
- STREAMED_SOUND_MISSION_JOB2_6,
- STREAMED_SOUND_MISSION_JOB2_7,
- STREAMED_SOUND_MISSION_JOB2_8,
- STREAMED_SOUND_MISSION_JOB2_9,
- STREAMED_SOUND_MISSION_JOB3_1,
- STREAMED_SOUND_MISSION_JOB3_2,
- STREAMED_SOUND_MISSION_JOB3_3,
- STREAMED_SOUND_MISSION_JOB4_1,
- STREAMED_SOUND_MISSION_JOB4_2,
- STREAMED_SOUND_MISSION_JOB4_3,
- STREAMED_SOUND_MISSION_JOB5_1,
- STREAMED_SOUND_MISSION_JOB5_2,
- STREAMED_SOUND_MISSION_JOB5_3,
- STREAMED_SOUND_MISSION_BJM1_20,
- STREAMED_SOUND_MISSION_BJM1_4,
- STREAMED_SOUND_MISSION_BJM1_5,
- STREAMED_SOUND_MISSION_MERC_39,
- STREAMED_SOUND_MISSION_MONO_1,
- STREAMED_SOUND_MISSION_MONO_2,
- STREAMED_SOUND_MISSION_MONO_3,
- STREAMED_SOUND_MISSION_MONO_4,
- STREAMED_SOUND_MISSION_MONO_5,
- STREAMED_SOUND_MISSION_MONO_6,
- STREAMED_SOUND_MISSION_MONO_7,
- STREAMED_SOUND_MISSION_MONO_8,
- STREAMED_SOUND_MISSION_MONO_9,
- STREAMED_SOUND_MISSION_MONO10,
- STREAMED_SOUND_MISSION_MONO11,
- STREAMED_SOUND_MISSION_MONO12,
- STREAMED_SOUND_MISSION_MONO13,
- STREAMED_SOUND_MISSION_MONO14,
- STREAMED_SOUND_MISSION_MONO15,
- STREAMED_SOUND_MISSION_MONO16,
- STREAMED_SOUND_MISSION_FUD_01,
- STREAMED_SOUND_MISSION_FUD_02,
- STREAMED_SOUND_MISSION_FUD_03,
- STREAMED_SOUND_MISSION_FUD_04,
- STREAMED_SOUND_MISSION_FUD_05,
- STREAMED_SOUND_MISSION_FUD_06,
- STREAMED_SOUND_MISSION_FUD_07,
- STREAMED_SOUND_MISSION_FUD_08,
- STREAMED_SOUND_MISSION_FUD_09,
- STREAMED_SOUND_MISSION_FUD_10,
- STREAMED_SOUND_MISSION_FUD_11,
- STREAMED_SOUND_MISSION_FUD_12,
- STREAMED_SOUND_MISSION_FUD_13,
- STREAMED_SOUND_MISSION_FUD_14,
- STREAMED_SOUND_MISSION_FUD_15,
- STREAMED_SOUND_MISSION_FUD_16,
- STREAMED_SOUND_MISSION_FUD_17,
- STREAMED_SOUND_MISSION_FUD_18,
- STREAMED_SOUND_MISSION_FUD_19,
- STREAMED_SOUND_MISSION_FUD_20,
- STREAMED_SOUND_MISSION_BURG_01,
- STREAMED_SOUND_MISSION_BURG_02,
- STREAMED_SOUND_MISSION_BURG_03,
- STREAMED_SOUND_MISSION_BURG_04,
- STREAMED_SOUND_MISSION_BURG_05,
- STREAMED_SOUND_MISSION_BURG_06,
- STREAMED_SOUND_MISSION_BURG_07,
- STREAMED_SOUND_MISSION_BURG_08,
- STREAMED_SOUND_MISSION_BURG_09,
- STREAMED_SOUND_MISSION_BURG_10,
- STREAMED_SOUND_MISSION_BURG_11,
- STREAMED_SOUND_MISSION_BURG_12,
- STREAMED_SOUND_MISSION_CRUST01,
- STREAMED_SOUND_MISSION_CRUST02,
- STREAMED_SOUND_MISSION_CRUST03,
- STREAMED_SOUND_MISSION_CRUST04,
- STREAMED_SOUND_MISSION_CRUST05,
- STREAMED_SOUND_MISSION_CRUST06,
- STREAMED_SOUND_MISSION_CRUST07,
- STREAMED_SOUND_MISSION_CRUST08,
- STREAMED_SOUND_MISSION_CRUST09,
- STREAMED_SOUND_MISSION_BAND_01,
- STREAMED_SOUND_MISSION_BAND_02,
- STREAMED_SOUND_MISSION_BAND_03,
- STREAMED_SOUND_MISSION_BAND_04,
- STREAMED_SOUND_MISSION_BAND_05,
- STREAMED_SOUND_MISSION_BAND_06,
- STREAMED_SOUND_MISSION_BAND_07,
- STREAMED_SOUND_MISSION_BAND_08,
- STREAMED_SOUND_MISSION_SHAFT01,
- STREAMED_SOUND_MISSION_SHAFT02,
- STREAMED_SOUND_MISSION_SHAFT03,
- STREAMED_SOUND_MISSION_SHAFT04,
- STREAMED_SOUND_MISSION_SHAFT05,
- STREAMED_SOUND_MISSION_SHAFT06,
- STREAMED_SOUND_MISSION_SHAFT07,
- STREAMED_SOUND_MISSION_SHAFT08,
- STREAMED_SOUND_MISSION_PISS_01,
- STREAMED_SOUND_MISSION_PISS_02,
- STREAMED_SOUND_MISSION_PISS_03,
- STREAMED_SOUND_MISSION_PISS_04,
- STREAMED_SOUND_MISSION_PISS_05,
- STREAMED_SOUND_MISSION_PISS_06,
- STREAMED_SOUND_MISSION_PISS_07,
- STREAMED_SOUND_MISSION_PISS_08,
- STREAMED_SOUND_MISSION_PISS_09,
- STREAMED_SOUND_MISSION_PISS_10,
- STREAMED_SOUND_MISSION_PISS_11,
- STREAMED_SOUND_MISSION_PISS_12,
- STREAMED_SOUND_MISSION_PISS_13,
- STREAMED_SOUND_MISSION_PISS_14,
- STREAMED_SOUND_MISSION_PISS_15,
- STREAMED_SOUND_MISSION_PISS_16,
- STREAMED_SOUND_MISSION_PISS_17,
- STREAMED_SOUND_MISSION_PISS_18,
- STREAMED_SOUND_MISSION_PISS_19,
- STREAMED_SOUND_MISSION_GIMME01,
- STREAMED_SOUND_MISSION_GIMME02,
- STREAMED_SOUND_MISSION_GIMME03,
- STREAMED_SOUND_MISSION_GIMME04,
- STREAMED_SOUND_MISSION_GIMME05,
- STREAMED_SOUND_MISSION_GIMME06,
- STREAMED_SOUND_MISSION_GIMME07,
- STREAMED_SOUND_MISSION_GIMME08,
- STREAMED_SOUND_MISSION_GIMME09,
- STREAMED_SOUND_MISSION_GIMME10,
- STREAMED_SOUND_MISSION_GIMME11,
- STREAMED_SOUND_MISSION_GIMME12,
- STREAMED_SOUND_MISSION_GIMME13,
- STREAMED_SOUND_MISSION_GIMME14,
- STREAMED_SOUND_MISSION_GIMME15,
- STREAMED_SOUND_MISSION_BUST_01,
- STREAMED_SOUND_MISSION_BUST_02,
- STREAMED_SOUND_MISSION_BUST_03,
- STREAMED_SOUND_MISSION_BUST_04,
- STREAMED_SOUND_MISSION_BUST_05,
- STREAMED_SOUND_MISSION_BUST_06,
- STREAMED_SOUND_MISSION_BUST_07,
- STREAMED_SOUND_MISSION_BUST_08,
- STREAMED_SOUND_MISSION_BUST_09,
- STREAMED_SOUND_MISSION_BUST_10,
- STREAMED_SOUND_MISSION_BUST_11,
- STREAMED_SOUND_MISSION_BUST_12,
- STREAMED_SOUND_MISSION_BUST_13,
- STREAMED_SOUND_MISSION_BUST_14,
- STREAMED_SOUND_MISSION_BUST_15,
- STREAMED_SOUND_MISSION_BUST_16,
- STREAMED_SOUND_MISSION_BUST_17,
- STREAMED_SOUND_MISSION_BUST_18,
- STREAMED_SOUND_MISSION_BUST_19,
- STREAMED_SOUND_MISSION_BUST_20,
- STREAMED_SOUND_MISSION_BUST_21,
- STREAMED_SOUND_MISSION_BUST_22,
- STREAMED_SOUND_MISSION_BUST_23,
- STREAMED_SOUND_MISSION_BUST_24,
- STREAMED_SOUND_MISSION_BUST_25,
- STREAMED_SOUND_MISSION_BUST_26,
- STREAMED_SOUND_MISSION_BUST_27,
- STREAMED_SOUND_MISSION_BUST_28,
TOTAL_STREAMED_SOUNDS,
NO_TRACK,
};
@@ -1299,7 +141,7 @@ enum eAudioType
#ifdef GTA_PS2
enum
{
- NUM_CHANNELS_GENERIC = 42,
+ NUM_CHANNELS_GENERIC = 40,
CHANNEL_POLICE_RADIO = NUM_CHANNELS_GENERIC,
CHANNEL_MISSION_AUDIO_1,
CHANNEL_MISSION_AUDIO_2,
@@ -1316,11 +158,13 @@ enum
enum
{
#ifdef PS2_AUDIO_CHANNELS
- NUM_CHANNELS_GENERIC = 42,
+ NUM_CHANNELS_GENERIC = 40,
#else
- NUM_CHANNELS_GENERIC = 27,
+ NUM_CHANNELS_GENERIC = 20,
#endif
CHANNEL_POLICE_RADIO,
+ CHANNEL_MISSION_AUDIO_1,
+ CHANNEL_MISSION_AUDIO_2,
NUM_CHANNELS
};
#endif
diff --git a/src/audio/sampman.h b/src/audio/sampman.h
index e585b0d6..e7fe3e7f 100644
--- a/src/audio/sampman.h
+++ b/src/audio/sampman.h
@@ -113,20 +113,21 @@ enum
};
#define MAX_PEDSFX 7
#define PED_BLOCKSIZE 79000
+#define MISSION_AUDIO_BLOCKSIZE 160000
#define MAXPROVIDERS 64
#ifdef EXTERNAL_3D_SOUND
#define MAXCHANNELS (NUM_CHANNELS_GENERIC+1)
#define MAXCHANNELS_SURROUND (MAXCHANNELS-4)
-#define MAX2DCHANNELS 1
+#define MAX2DCHANNELS 3
#else
#define MAXCHANNELS 0
#define MAXCHANNELS_SURROUND 0
#define MAX2DCHANNELS NUM_CHANNELS
#endif
-#define MAX_STREAMS 3
+#define MAX_STREAMS 1
#define DIGITALRATE 32000
#define DIGITALBITS 16
@@ -140,6 +141,8 @@ enum
static_assert( NUM_CHANNELS == MAXCHANNELS + MAX2DCHANNELS, "The number of channels doesn't match with an enum" );
+extern int gBankStartOffset[67];
+
class cSampleManager
{
uint8 m_nEffectsVolume;
@@ -205,10 +208,8 @@ public:
void UnloadSampleBank (uint8 nBank);
int8 IsSampleBankLoaded(uint8 nBank);
-#if defined (GTA_PS2) || defined (FIX_BUGS)
uint8 IsMissionAudioLoaded(uint8 nSlot, uint32 nSample);
bool8 LoadMissionAudio (uint8 nSlot, uint32 nSample);
-#endif
uint8 IsPedCommentLoaded(uint32 nComment);
bool8 LoadPedComment (uint32 nComment);
@@ -255,2465 +256,77 @@ public:
bool8 InitialiseSampleBanks(void);
uint8 GetMusicVolume() const { return m_nMusicVolume; }
+ uint8 GetMusicFadeVolume() const { return m_nMusicFadeVolume; }
};
extern cSampleManager SampleManager;
extern uint32 BankStartOffset[MAX_SFX_BANKS];
-#ifdef PS2_AUDIO_PATHS
-static char PS2StreamedNameTable[][40] =
-{
- "AUDIO\\MUSIC\\WILD.VB",
- "AUDIO\\MUSIC\\FLASH.VB",
- "AUDIO\\MUSIC\\KCHAT.VB", // 16 khz
- "AUDIO\\MUSIC\\FEVER.VB",
- "AUDIO\\MUSIC\\VROCK.VB",
- "AUDIO\\MUSIC\\VCPR.VB", // 16 khz
- "AUDIO\\MUSIC\\ESPANT.VB",
- "AUDIO\\MUSIC\\EMOTION.VB",
- "AUDIO\\MUSIC\\WAVE.VB",
- "AUDIO\\MUSIC\\MISCOM.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\WATER.VB",
- "AUDIO\\MUSIC\\BEACHAMB.VB",
- "AUDIO\\MUSIC\\HCITY.VB",
- "AUDIO\\MUSIC\\HWATER.VB",
- "AUDIO\\MUSIC\\HBEACH.VB",
- "AUDIO\\MUSIC\\MALLAMB.VB",
- "AUDIO\\MUSIC\\STRIP.VB",
- "AUDIO\\MUSIC\\MALIBU.VB",
- "AUDIO\\MUSIC\\HOTEL.VB",
- "AUDIO\\MUSIC\\DIRTRING.VB",
- "AUDIO\\MUSIC\\LAW4RIOT.VB",
- "AUDIO\\MUSIC\\AMBSIL.VB",
- "AUDIO\\MUSIC\\POLICE.VB", // 16 khz
- "AUDIO\\MUSIC\\TAXI.VB",
- "AUDIO\\MUSIC\\BCLOSED.VB",
- "AUDIO\\MUSIC\\BOPEN.VB",
- "AUDIO\\CUTSCENE\\ASS\\ASS_1.VB",
- "AUDIO\\CUTSCENE\\ASS\\ASS_2.VB",
- "AUDIO\\CUTSCENE\\BANK\\BANK_1.VB",
- "AUDIO\\CUTSCENE\\BANK\\BANK_2A.VB",
- "AUDIO\\CUTSCENE\\BANK\\BANK_2B.VB",
- "AUDIO\\CUTSCENE\\BANK\\BANK_3A.VB",
- "AUDIO\\CUTSCENE\\BANK\\BANK_3B.VB",
- "AUDIO\\CUTSCENE\\BANK\\BANK_4.VB",
- "AUDIO\\CUTSCENE\\BIKE\\BIKE_1.VB",
- "AUDIO\\CUTSCENE\\BIKE\\BIKE_2.VB",
- "AUDIO\\CUTSCENE\\BIKE\\BIKE_3.VB",
- "AUDIO\\CUTSCENE\\BUD\\BUD_1.VB",
- "AUDIO\\CUTSCENE\\BUD\\BUD_2.VB",
- "AUDIO\\CUTSCENE\\BUD\\BUD_3.VB",
- "AUDIO\\CUTSCENE\\CAP\\CAP_1.VB",
- "AUDIO\\CUTSCENE\\CAR\\CAR_1.VB",
- "AUDIO\\CUTSCENE\\CNT\\CNT_1A.VB",
- "AUDIO\\CUTSCENE\\CNT\\CNT_1B.VB",
- "AUDIO\\CUTSCENE\\CNT\\CNT_2.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_1.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_2A.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_2B.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_3.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_4A.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_4A2.VB",
- "AUDIO\\CUTSCENE\\COK\\COK_4B.VB",
- "AUDIO\\CUTSCENE\\COL\\COL_1.VB",
- "AUDIO\\CUTSCENE\\COL\\COL_2.VB",
- "AUDIO\\CUTSCENE\\COL\\COL_3A.VB",
- "AUDIO\\CUTSCENE\\COL\\COL_4A.VB",
- "AUDIO\\CUTSCENE\\COL\\COL_5A.VB",
- "AUDIO\\CUTSCENE\\COL\\COL_5B.VB",
- "AUDIO\\CUTSCENE\\CUB\\CUB_1.VB",
- "AUDIO\\CUTSCENE\\CUB\\CUB_2.VB",
- "AUDIO\\CUTSCENE\\CUB\\CUB_3.VB",
- "AUDIO\\CUTSCENE\\CUB\\CUB_4.VB",
- "AUDIO\\CUTSCENE\\DRUG\\DRUG_1.VB",
- "AUDIO\\CUTSCENE\\FIN\\FIN.VB",
- "AUDIO\\CUTSCENE\\FIN\\FIN2.VB",
- "AUDIO\\CUTSCENE\\FINALE\\FINALE.VB",
- "AUDIO\\CUTSCENE\\HAT\\HAT_1.VB",
- "AUDIO\\CUTSCENE\\HAT\\HAT_2.VB",
- "AUDIO\\CUTSCENE\\HAT\\HAT_3.VB",
- "AUDIO\\CUTSCENE\\ICE\\ICE_1.VB",
- "AUDIO\\CUTSCENE\\INT\\INT_A.VB",
- "AUDIO\\CUTSCENE\\INT\\INT_B.VB",
- "AUDIO\\CUTSCENE\\INT\\INT_D.VB",
- "AUDIO\\CUTSCENE\\INT\\INT_M.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_1A.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_1B.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_2A.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_2B.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_2C.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_3.VB",
- "AUDIO\\CUTSCENE\\LAW\\LAW_4.VB",
- "AUDIO\\CUTSCENE\\PHIL\\PHIL_1.VB",
- "AUDIO\\CUTSCENE\\PHIL\\PHIL_2.VB",
- "AUDIO\\CUTSCENE\\PORN\\PORN_1.VB",
- "AUDIO\\CUTSCENE\\PORN\\PORN_2.VB",
- "AUDIO\\CUTSCENE\\PORN\\PORN_3.VB",
- "AUDIO\\CUTSCENE\\PORN\\PORN_4.VB",
- "AUDIO\\CUTSCENE\\RESC\\RESC_1A.VB",
- "AUDIO\\CUTSCENE\\ROK\\ROK_1.VB",
- "AUDIO\\CUTSCENE\\ROK\\ROK_2.VB",
- "AUDIO\\CUTSCENE\\ROK\\ROK_3A.VB",
- "AUDIO\\CUTSCENE\\STRIPA\\STRIPA.VB",
- "AUDIO\\CUTSCENE\\TAX\\TAX_1.VB",
- "AUDIO\\CUTSCENE\\TEX\\TEX_1.VB",
- "AUDIO\\CUTSCENE\\TEX\\TEX_2.VB",
- "AUDIO\\CUTSCENE\\TEX\\TEX_3.VB",
- "AUDIO\\MUSIC\\GLIGHT.VB",
- "AUDIO\\MUSIC\\FIST.VB",
- "AUDIO\\MUSIC\\MISCOM.VB",
- "AUDIO\\MUSIC\\MISCOM.VB",
- "AUDIO\\MUSIC\\MISCOM.VB",
- "AUDIO\\MUSIC\\MISCOM.VB",
- "AUDIO\\MOBR1.WAV",
- "AUDIO\\PAGER.WAV",
- "AUDIO\\CARREV.WAV",
- "AUDIO\\BIKEREV.WAV",
- "AUDIO\\LIFTOP.WAV",
- "AUDIO\\LIFTCL.WAV",
- "AUDIO\\LIFTRUN.WAV",
- "AUDIO\\LIFTBEL.WAV",
- "AUDIO\\INLIFT.WAV",
- "AUDIO\\SFX_01.WAV",
- "AUDIO\\SFX_02.WAV",
- "AUDIO\\CAMERAL.WAV",
- "AUDIO\\CAMERAR.WAV",
- "AUDIO\\CHEER1.WAV",
- "AUDIO\\CHEER2.WAV",
- "AUDIO\\CHEER3.WAV",
- "AUDIO\\CHEER4.WAV",
- "AUDIO\\OOH1.WAV",
- "AUDIO\\OOH2.WAV",
- "AUDIO\\RACE1.WAV",
- "AUDIO\\RACE2.WAV",
- "AUDIO\\RACE3.WAV",
- "AUDIO\\RACE4.WAV",
- "AUDIO\\RACE5.WAV",
- "AUDIO\\RACE6.WAV",
- "AUDIO\\RACE7.WAV",
- "AUDIO\\RACE8.WAV",
- "AUDIO\\RACE9.WAV",
- "AUDIO\\RACE10.WAV",
- "AUDIO\\RACE11.WAV",
- "AUDIO\\RACE12.WAV",
- "AUDIO\\RACE13.WAV",
- "AUDIO\\RACE14.WAV",
- "AUDIO\\RACE15.WAV",
- "AUDIO\\HOT1.WAV",
- "AUDIO\\HOT2.WAV",
- "AUDIO\\HOT3.WAV",
- "AUDIO\\HOT4.WAV",
- "AUDIO\\HOT5.WAV",
- "AUDIO\\HOT6.WAV",
- "AUDIO\\HOT7.WAV",
- "AUDIO\\HOT8.WAV",
- "AUDIO\\HOT9.WAV",
- "AUDIO\\HOT10.WAV",
- "AUDIO\\HOT11.WAV",
- "AUDIO\\HOT12.WAV",
- "AUDIO\\HOT13.WAV",
- "AUDIO\\HOT14.WAV",
- "AUDIO\\HOT15.WAV",
- "AUDIO\\LANSTP1.WAV",
- "AUDIO\\LANSTP2.WAV",
- "AUDIO\\LANAMU1.WAV",
- "AUDIO\\LANAMU2.WAV",
- "AUDIO\\AIRHORNL.WAV",
- "AUDIO\\AIRHORNR.WAV",
- "AUDIO\\SNIPSCRL.WAV",
- "AUDIO\\SNIPSHORT.WAV",
- "AUDIO\\BLOWROOF.WAV",
- "AUDIO\\ASS_1.WAV",
- "AUDIO\\ASS_2.WAV",
- "AUDIO\\ASS_3.WAV",
- "AUDIO\\ASS_4.WAV",
- "AUDIO\\ASS_5.WAV",
- "AUDIO\\ASS_6.WAV",
- "AUDIO\\ASS_7.WAV",
- "AUDIO\\ASS_8.WAV",
- "AUDIO\\ASS_9.WAV",
- "AUDIO\\ASS_10.WAV",
- "AUDIO\\ASS_11.WAV",
- "AUDIO\\ASS_12.WAV",
- "AUDIO\\ASS_13.WAV",
- "AUDIO\\ASS_14.WAV",
- "AUDIO\\BIKE1_1.WAV",
- "AUDIO\\BIKE1_2.WAV",
- "AUDIO\\BIKE1_3.WAV",
- "AUDIO\\BNK1_1.WAV",
- "AUDIO\\BNK1_2.WAV",
- "AUDIO\\BNK1_3.WAV",
- "AUDIO\\BNK1_4.WAV",
- "AUDIO\\BNK1_5.WAV",
- "AUDIO\\BNK1_6.WAV",
- "AUDIO\\BNK1_7.WAV",
- "AUDIO\\BNK1_8.WAV",
- "AUDIO\\BNK1_10.WAV",
- "AUDIO\\BNK1_11.WAV",
- "AUDIO\\BNK1_12.WAV",
- "AUDIO\\BNK1_13.WAV",
- "AUDIO\\BNK1_14.WAV",
- "AUDIO\\BNK2_1.WAV",
- "AUDIO\\BNK2_2.WAV",
- "AUDIO\\BNK2_3.WAV",
- "AUDIO\\BNK2_4.WAV",
- "AUDIO\\BNK2_5.WAV",
- "AUDIO\\BNK2_6.WAV",
- "AUDIO\\BNK2_7.WAV",
- "AUDIO\\BNK2_8.WAV",
- "AUDIO\\BNK2_9.WAV",
- "AUDIO\\BNK3_1.WAV",
- "AUDIO\\BNK3_2.WAV",
- "AUDIO\\BNK3_3A.WAV",
- "AUDIO\\BNK3_3B.WAV",
- "AUDIO\\BNK3_3C.WAV",
- "AUDIO\\BNK3_4A.WAV",
- "AUDIO\\BNK3_4B.WAV",
- "AUDIO\\BNK3_4C.WAV",
- "AUDIO\\BNK4_1.WAV",
- "AUDIO\\BNK4_2.WAV",
- "AUDIO\\BNK4_3A.WAV",
- "AUDIO\\BNK4_3B.WAV",
- "AUDIO\\BNK4_3C.WAV",
- "AUDIO\\BNK4_3D.WAV",
- "AUDIO\\BNK4_3E.WAV",
- "AUDIO\\BNK4_3F.WAV",
- "AUDIO\\BNK4_3G.WAV",
- "AUDIO\\BNK4_3H.WAV",
- "AUDIO\\BNK4_3I.WAV",
- "AUDIO\\BNK4_3J.WAV",
- "AUDIO\\BNK4_3K.WAV",
- "AUDIO\\BNK4_3M.WAV",
- "AUDIO\\BNK4_3O.WAV",
- "AUDIO\\BNK4_3P.WAV",
- "AUDIO\\BNK4_3Q.WAV",
- "AUDIO\\BNK4_3R.WAV",
- "AUDIO\\BNK4_3S.WAV",
- "AUDIO\\BNK4_3T.WAV",
- "AUDIO\\BNK4_3U.WAV",
- "AUDIO\\BNK4_3V.WAV",
- "AUDIO\\BNK4_4A.WAV",
- "AUDIO\\BNK4_4B.WAV",
- "AUDIO\\BNK4_5.WAV",
- "AUDIO\\BNK4_6.WAV",
- "AUDIO\\BNK4_7.WAV",
- "AUDIO\\BNK4_8.WAV",
- "AUDIO\\BNK4_9.WAV",
- "AUDIO\\BNK4_10.WAV",
- "AUDIO\\BNK4_11.WAV",
- "AUDIO\\BK4_12A.WAV",
- "AUDIO\\BK4_12B.WAV",
- "AUDIO\\BK4_12C.WAV",
- "AUDIO\\BNK4_13.WAV",
- "AUDIO\\BK4_14A.WAV",
- "AUDIO\\BK4_14B.WAV",
- "AUDIO\\BNK4_15.WAV",
- "AUDIO\\BNK4_16.WAV",
- "AUDIO\\BNK4_17.WAV",
- "AUDIO\\BNK4_18.WAV",
- "AUDIO\\BK4_19A.WAV",
- "AUDIO\\BK4_19B.WAV",
- "AUDIO\\BK4_20A.WAV",
- "AUDIO\\BK4_20B.WAV",
- "AUDIO\\BNK4_21.WAV",
- "AUDIO\\BNK422A.WAV",
- "AUDIO\\BNK422B.WAV",
- "AUDIO\\BK4_23A.WAV",
- "AUDIO\\BK4_23B.WAV",
- "AUDIO\\BK4_23C.WAV",
- "AUDIO\\BK4_23D.WAV",
- "AUDIO\\BK4_24A.WAV",
- "AUDIO\\BK4_24B.WAV",
- "AUDIO\\BNK4_25.WAV",
- "AUDIO\\BNK4_26.WAV",
- "AUDIO\\BNK4_27.WAV",
- "AUDIO\\BNK4_28.WAV",
- "AUDIO\\BNK4_29.WAV",
- "AUDIO\\BNK4_30.WAV",
- "AUDIO\\BK4_31A.WAV",
- "AUDIO\\BK4_31B.WAV",
- "AUDIO\\BNK4_32.WAV",
- "AUDIO\\BK4_34A.WAV",
- "AUDIO\\BK4_34B.WAV",
- "AUDIO\\BK4_35A.WAV",
- "AUDIO\\BK4_35B.WAV",
- "AUDIO\\BNK4_36.WAV",
- "AUDIO\\BNK4_37.WAV",
- "AUDIO\\BNK4_38.WAV",
- "AUDIO\\BNK4_39.WAV",
- "AUDIO\\BK4_40A.WAV",
- "AUDIO\\BK4_40B.WAV",
- "AUDIO\\BNK4_41.WAV",
- "AUDIO\\BNK4_42.WAV",
- "AUDIO\\BNK4_43.WAV",
- "AUDIO\\BNK4_44.WAV",
- "AUDIO\\BNK4_45.WAV",
- "AUDIO\\BNK4_46.WAV",
- "AUDIO\\BNK4_47.WAV",
- "AUDIO\\BNK4_48.WAV",
- "AUDIO\\BNK4_49.WAV",
- "AUDIO\\BNK450A.WAV",
- "AUDIO\\BNK450B.WAV",
- "AUDIO\\BNK4_51.WAV",
- "AUDIO\\BNK4_94.WAV",
- "AUDIO\\BNK4_95.WAV",
- "AUDIO\\BNK4_96.WAV",
- "AUDIO\\BNK4_97.WAV",
- "AUDIO\\BNK4_98.WAV",
- "AUDIO\\BNK4_99.WAV",
- "AUDIO\\BUD1_1.WAV",
- "AUDIO\\BUD1_2.WAV",
- "AUDIO\\BUD1_3.WAV",
- "AUDIO\\BUD1_4.WAV",
- "AUDIO\\BUD1_5.WAV",
- "AUDIO\\BUD1_9.WAV",
- "AUDIO\\BUD1_10.WAV",
- "AUDIO\\BUD2_1.WAV",
- "AUDIO\\BUD2_2.WAV",
- "AUDIO\\BUD2_3.WAV",
- "AUDIO\\BUD2_4.WAV",
- "AUDIO\\BUD2_5.WAV",
- "AUDIO\\BUD2_6.WAV",
- "AUDIO\\BUD2_7.WAV",
- "AUDIO\\BUD3_1.WAV",
- "AUDIO\\BUD3_1A.WAV",
- "AUDIO\\BUD3_1B.WAV",
- "AUDIO\\BUD3_1C.WAV",
- "AUDIO\\BUD3_2.WAV",
- "AUDIO\\BUD3_3.WAV",
- "AUDIO\\BUD3_4.WAV",
- "AUDIO\\BUD3_5.WAV",
- "AUDIO\\BUD3_6.WAV",
- "AUDIO\\BUD3_7.WAV",
- "AUDIO\\BUD3_8A.WAV",
- "AUDIO\\BUD3_8B.WAV",
- "AUDIO\\BUD3_8C.WAV",
- "AUDIO\\BUD3_9A.WAV",
- "AUDIO\\BUD3_9B.WAV",
- "AUDIO\\BUD3_9C.WAV",
- "AUDIO\\CAP1_2.WAV",
- "AUDIO\\CAP1_3.WAV",
- "AUDIO\\CAP1_4.WAV",
- "AUDIO\\CAP1_5.WAV",
- "AUDIO\\CAP1_6.WAV",
- "AUDIO\\CAP1_7.WAV",
- "AUDIO\\CAP1_8.WAV",
- "AUDIO\\CAP1_9.WAV",
- "AUDIO\\CAP1_10.WAV",
- "AUDIO\\CAP1_11.WAV",
- "AUDIO\\CAP1_12.WAV",
- "AUDIO\\CNT1_1.WAV",
- "AUDIO\\CNT1_2.WAV",
- "AUDIO\\CNT1_3.WAV",
- "AUDIO\\CNT1_4.WAV",
- "AUDIO\\CNT1_5.WAV",
- "AUDIO\\CNT2_1.WAV",
- "AUDIO\\CNT2_2.WAV",
- "AUDIO\\CNT2_3.WAV",
- "AUDIO\\CNT2_4.WAV",
- "AUDIO\\COK1_1.WAV",
- "AUDIO\\COK1_2.WAV",
- "AUDIO\\COK1_3.WAV",
- "AUDIO\\COK1_4.WAV",
- "AUDIO\\COK1_5.WAV",
- "AUDIO\\COK1_6.WAV",
- "AUDIO\\COK2_1.WAV",
- "AUDIO\\COK2_2.WAV",
- "AUDIO\\COK2_3.WAV",
- "AUDIO\\COK2_4.WAV",
- "AUDIO\\COK2_5.WAV",
- "AUDIO\\COK2_6.WAV",
- "AUDIO\\COK2_7A.WAV",
- "AUDIO\\COK2_7B.WAV",
- "AUDIO\\COK2_7C.WAV",
- "AUDIO\\COK2_8A.WAV",
- "AUDIO\\COK2_8B.WAV",
- "AUDIO\\COK2_8C.WAV",
- "AUDIO\\COK2_8D.WAV",
- "AUDIO\\COK2_9.WAV",
- "AUDIO\\COK210A.WAV",
- "AUDIO\\COK210B.WAV",
- "AUDIO\\COK210C.WAV",
- "AUDIO\\COK212A.WAV",
- "AUDIO\\COK212B.WAV",
- "AUDIO\\COK2_13.WAV",
- "AUDIO\\COK2_14.WAV",
- "AUDIO\\COK2_15.WAV",
- "AUDIO\\COK2_16.WAV",
- "AUDIO\\COK2_20.WAV",
- "AUDIO\\COK2_21.WAV",
- "AUDIO\\COK2_2.WAV", // this is probably a typo of COK2_22
- "AUDIO\\COK3_1.WAV",
- "AUDIO\\COK3_2.WAV",
- "AUDIO\\COK3_3.WAV",
- "AUDIO\\COK3_4.WAV",
- "AUDIO\\COK4_1.WAV",
- "AUDIO\\COK4_2.WAV",
- "AUDIO\\COK4_3.WAV",
- "AUDIO\\COK4_4.WAV",
- "AUDIO\\COK4_5.WAV",
- "AUDIO\\COK4_6.WAV",
- "AUDIO\\COK4_7.WAV",
- "AUDIO\\COK4_8.WAV",
- "AUDIO\\COK4_9.WAV",
- "AUDIO\\COK4_9A.WAV",
- "AUDIO\\COK4_10.WAV",
- "AUDIO\\COK4_11.WAV",
- "AUDIO\\COK4_12.WAV",
- "AUDIO\\COK4_13.WAV",
- "AUDIO\\COK4_14.WAV",
- "AUDIO\\COK4_15.WAV",
- "AUDIO\\COK4_16.WAV",
- "AUDIO\\COK4_17.WAV",
- "AUDIO\\COK4_18.WAV",
- "AUDIO\\COK4_19.WAV",
- "AUDIO\\COK4_20.WAV",
- "AUDIO\\COK4_21.WAV",
- "AUDIO\\COK4_22.WAV",
- "AUDIO\\COK4_23.WAV",
- "AUDIO\\COK4_24.WAV",
- "AUDIO\\COK4_25.WAV",
- "AUDIO\\COK4_26.WAV",
- "AUDIO\\COK4_27.WAV",
- "AUDIO\\COL1_1.WAV",
- "AUDIO\\COL1_2.WAV",
- "AUDIO\\COL1_3.WAV",
- "AUDIO\\COL1_4.WAV",
- "AUDIO\\COL1_5.WAV",
- "AUDIO\\COL1_6.WAV",
- "AUDIO\\COL1_7.WAV",
- "AUDIO\\COL1_8.WAV",
- "AUDIO\\COL2_1.WAV",
- "AUDIO\\COL2_2.WAV",
- "AUDIO\\COL2_3.WAV",
- "AUDIO\\COL2_4.WAV",
- "AUDIO\\COL2_5.WAV",
- "AUDIO\\COL2_6A.WAV",
- "AUDIO\\COL2_7.WAV",
- "AUDIO\\COL2_8.WAV",
- "AUDIO\\COL2_9.WAV",
- "AUDIO\\COL2_10.WAV",
- "AUDIO\\COL2_11.WAV",
- "AUDIO\\COL2_12.WAV",
- "AUDIO\\COL2_13.WAV",
- "AUDIO\\COL2_14.WAV",
- "AUDIO\\COL2_15.WAV",
- "AUDIO\\COL2_16.WAV",
- "AUDIO\\COL3_1.WAV",
- "AUDIO\\COL3_2.WAV",
- "AUDIO\\COL3_2A.WAV",
- "AUDIO\\COL3_2B.WAV",
- "AUDIO\\COL3_3.WAV",
- "AUDIO\\COL3_4.WAV",
- "AUDIO\\COL3_5.WAV",
- "AUDIO\\COL3_6.WAV",
- "AUDIO\\COL3_7.WAV",
- "AUDIO\\COL3_8.WAV",
- "AUDIO\\COL3_9.WAV",
- "AUDIO\\COL3_10.WAV",
- "AUDIO\\COL3_11.WAV",
- "AUDIO\\COL3_12.WAV",
- "AUDIO\\COL3_13.WAV",
- "AUDIO\\COL3_14.WAV",
- "AUDIO\\COL3_15.WAV",
- "AUDIO\\COL3_16.WAV",
- "AUDIO\\COL3_17.WAV",
- "AUDIO\\COL3_18.WAV",
- "AUDIO\\COL3_19.WAV",
- "AUDIO\\COL3_20.WAV",
- "AUDIO\\COL3_21.WAV",
- "AUDIO\\COL3_23.WAV",
- "AUDIO\\COL3_24.WAV",
- "AUDIO\\COL3_25.WAV",
- "AUDIO\\COL4_1.WAV",
- "AUDIO\\COL4_2.WAV",
- "AUDIO\\COL4_3.WAV",
- "AUDIO\\COL4_4.WAV",
- "AUDIO\\COL4_5.WAV",
- "AUDIO\\COL4_6.WAV",
- "AUDIO\\COL4_7.WAV",
- "AUDIO\\COL4_8.WAV",
- "AUDIO\\COL4_9.WAV",
- "AUDIO\\COL4_10.WAV",
- "AUDIO\\COL4_11.WAV",
- "AUDIO\\COL4_12.WAV",
- "AUDIO\\COL4_13.WAV",
- "AUDIO\\COL4_14.WAV",
- "AUDIO\\COL4_15.WAV",
- "AUDIO\\COL4_16.WAV",
- "AUDIO\\COL4_17.WAV",
- "AUDIO\\COL4_18.WAV",
- "AUDIO\\COL4_19.WAV",
- "AUDIO\\COL4_20.WAV",
- "AUDIO\\COL4_21.WAV",
- "AUDIO\\COL4_22.WAV",
- "AUDIO\\COL4_23.WAV",
- "AUDIO\\COL4_24.WAV",
- "AUDIO\\COL4_25.WAV",
- "AUDIO\\COL4_26.WAV",
- "AUDIO\\COL5_1.WAV",
- "AUDIO\\COL5_2.WAV",
- "AUDIO\\COL5_3.WAV",
- "AUDIO\\COL5_4.WAV",
- "AUDIO\\COL5_5.WAV",
- "AUDIO\\COL5_6.WAV",
- "AUDIO\\COL5_7.WAV",
- "AUDIO\\COL5_8.WAV",
- "AUDIO\\COL5_9.WAV",
- "AUDIO\\COL5_10.WAV",
- "AUDIO\\COL5_11.WAV",
- "AUDIO\\COL5_12.WAV",
- "AUDIO\\COL5_13.WAV",
- "AUDIO\\COL5_14.WAV",
- "AUDIO\\COL5_15.WAV",
- "AUDIO\\COL5_16.WAV",
- "AUDIO\\COL5_17.WAV",
- "AUDIO\\COL5_18.WAV",
- "AUDIO\\COL5_19.WAV",
- "AUDIO\\COL5_20.WAV",
- "AUDIO\\COL5_21.WAV",
- "AUDIO\\COL5_22.WAV",
- "AUDIO\\CUB1_1.WAV",
- "AUDIO\\CUB1_2.WAV",
- "AUDIO\\CUB1_3.WAV",
- "AUDIO\\CUB1_4.WAV",
- "AUDIO\\CUB1_5.WAV",
- "AUDIO\\CUB1_6.WAV",
- "AUDIO\\CUB1_7.WAV",
- "AUDIO\\CUB1_8.WAV",
- "AUDIO\\CUB1_9.WAV",
- "AUDIO\\CUB1_10.WAV",
- "AUDIO\\CUB2_1.WAV",
- "AUDIO\\CUB2_2.WAV",
- "AUDIO\\CUB2_3A.WAV",
- "AUDIO\\CUB2_3B.WAV",
- "AUDIO\\CUB2_3C.WAV",
- "AUDIO\\CUB2_4A.WAV",
- "AUDIO\\CUB2_5.WAV",
- "AUDIO\\CUB2_6.WAV",
- "AUDIO\\CUB2_7.WAV",
- "AUDIO\\CUB2_8.WAV",
- "AUDIO\\CUB2_9.WAV",
- "AUDIO\\CUB2_10.WAV",
- "AUDIO\\CUB2_11.WAV",
- "AUDIO\\CUB3_1.WAV",
- "AUDIO\\CUB3_2.WAV",
- "AUDIO\\CUB3_3.WAV",
- "AUDIO\\CUB3_4.WAV",
- "AUDIO\\CUB4_1.WAV",
- "AUDIO\\CUB4_2.WAV",
- "AUDIO\\CUB4_3.WAV",
- "AUDIO\\CUB4_4.WAV",
- "AUDIO\\CUB4_5.WAV",
- "AUDIO\\CUB4_5A.WAV",
- "AUDIO\\CUB4_6.WAV",
- "AUDIO\\CUB4_7.WAV",
- "AUDIO\\CUB4_8.WAV",
- "AUDIO\\CUB4_9.WAV",
- "AUDIO\\CUB4_10.WAV",
- "AUDIO\\CUB4_11.WAV",
- "AUDIO\\CUB4_12.WAV",
- "AUDIO\\CUB4_13.WAV",
- "AUDIO\\CUB4_14.WAV",
- "AUDIO\\CUB4_15.WAV",
- "AUDIO\\CUB4_16.WAV",
- "AUDIO\\GOLF_1.WAV",
- "AUDIO\\GOLF_2.WAV",
- "AUDIO\\GOLF_3.WAV",
- "AUDIO\\BAR_1.WAV",
- "AUDIO\\BAR_2.WAV",
- "AUDIO\\BAR_3.WAV",
- "AUDIO\\BAR_4.WAV",
- "AUDIO\\BAR_5.WAV",
- "AUDIO\\BAR_6.WAV",
- "AUDIO\\BAR_7.WAV",
- "AUDIO\\BAR_8.WAV",
- "AUDIO\\STRIP_1.WAV",
- "AUDIO\\STRIP_2.WAV",
- "AUDIO\\STRIP_3.WAV",
- "AUDIO\\STRIP_4.WAV",
- "AUDIO\\STRIP_5.WAV",
- "AUDIO\\STRIP_6.WAV",
- "AUDIO\\STRIP_7.WAV",
- "AUDIO\\STRIP_8.WAV",
- "AUDIO\\STRIP_9.WAV",
- "AUDIO\\STAR_1.WAV",
- "AUDIO\\STAR_2.WAV",
- "AUDIO\\STAR_3.WAV",
- "AUDIO\\STAR_4.WAV",
- "AUDIO\\FIN_1A.WAV",
- "AUDIO\\FIN_1B.WAV",
- "AUDIO\\FIN_1C.WAV",
- "AUDIO\\FIN_2B.WAV",
- "AUDIO\\FIN_2C.WAV",
- "AUDIO\\FIN_3.WAV",
- "AUDIO\\FIN_4.WAV",
- "AUDIO\\FIN_5.WAV",
- "AUDIO\\FIN_6.WAV",
- "AUDIO\\FIN_10.WAV",
- "AUDIO\\FIN_11A.WAV",
- "AUDIO\\FIN_11B.WAV",
- "AUDIO\\FIN_12A.WAV",
- "AUDIO\\FIN_12B.WAV",
- "AUDIO\\FIN_12C.WAV",
- "AUDIO\\FIN_13.WAV",
- "AUDIO\\FINKILL.WAV",
- "AUDIO\\LAW1_1.WAV",
- "AUDIO\\LAW1_2.WAV",
- "AUDIO\\LAW1_3.WAV",
- "AUDIO\\LAW1_4.WAV",
- "AUDIO\\LAW1_5.WAV",
- "AUDIO\\LAW1_6.WAV",
- "AUDIO\\LAW1_7.WAV",
- "AUDIO\\LAW1_8.WAV",
- "AUDIO\\LAW1_9.WAV",
- "AUDIO\\LAW1_10.WAV",
- "AUDIO\\LAW2_1.WAV",
- "AUDIO\\LAW2_2.WAV",
- "AUDIO\\LAW2_3.WAV",
- "AUDIO\\LAW2_4.WAV",
- "AUDIO\\LAW2_5.WAV",
- "AUDIO\\LAW2_6.WAV",
- "AUDIO\\LAW2_7.WAV",
- "AUDIO\\LAW2_8.WAV",
- "AUDIO\\LAW2_9.WAV",
- "AUDIO\\LAW2_10.WAV",
- "AUDIO\\LAW3_1.WAV",
- "AUDIO\\LAW3_2.WAV",
- "AUDIO\\LAW3_3.WAV",
- "AUDIO\\LAW3_4.WAV",
- "AUDIO\\LAW3_5.WAV",
- "AUDIO\\LAW3_6.WAV",
- "AUDIO\\LAW3_10.WAV",
- "AUDIO\\LAW3_11.WAV",
- "AUDIO\\LAW3_12.WAV",
- "AUDIO\\LAW3_13.WAV",
- "AUDIO\\LAW3_14.WAV",
- "AUDIO\\LAW3_16.WAV",
- "AUDIO\\LAW3_17.WAV",
- "AUDIO\\LAW3_18.WAV",
- "AUDIO\\LAW3_19.WAV",
- "AUDIO\\LAW3_20.WAV",
- "AUDIO\\LAW3_21.WAV",
- "AUDIO\\LAW3_22.WAV",
- "AUDIO\\LAW3_23.WAV",
- "AUDIO\\LAW3_24.WAV",
- "AUDIO\\LAW3_25.WAV",
- "AUDIO\\LAW4_1A.WAV",
- "AUDIO\\LAW4_1B.WAV",
- "AUDIO\\LAW4_1C.WAV",
- "AUDIO\\LAW4_1D.WAV",
- "AUDIO\\LAW4_10.WAV",
- "AUDIO\\LAW4_3.WAV",
- "AUDIO\\LAW4_4.WAV",
- "AUDIO\\LAW4_5.WAV",
- "AUDIO\\LAW4_6.WAV",
- "AUDIO\\LAW4_7.WAV",
- "AUDIO\\LAW4_8.WAV",
- "AUDIO\\LAW4_9.WAV",
- "AUDIO\\PHIL1_2.WAV",
- "AUDIO\\PHIL1_3.WAV",
- "AUDIO\\PHIL2_1.WAV",
- "AUDIO\\PHIL2_2.WAV",
- "AUDIO\\PHIL2_3.WAV",
- "AUDIO\\PHIL2_4.WAV",
- "AUDIO\\PHIL2_5.WAV",
- "AUDIO\\PHIL2_6.WAV",
- "AUDIO\\PHIL2_7.WAV",
- "AUDIO\\PHIL2_8.WAV",
- "AUDIO\\PHIL2_9.WAV",
- "AUDIO\\PHIL210.WAV",
- "AUDIO\\PHIL211.WAV",
- "AUDIO\\PORN1_1.WAV",
- "AUDIO\\PORN1_2.WAV",
- "AUDIO\\PORN1_3.WAV",
- "AUDIO\\PRN1_3A.WAV",
- "AUDIO\\PORN1_4.WAV",
- "AUDIO\\PORN1_5.WAV",
- "AUDIO\\PORN1_6.WAV",
- "AUDIO\\PORN1_7.WAV",
- "AUDIO\\PORN1_8.WAV",
- "AUDIO\\PORN1_9.WAV",
- "AUDIO\\PRN1_10.WAV",
- "AUDIO\\PRN1_11.WAV",
- "AUDIO\\PRN1_12.WAV",
- "AUDIO\\PRN1_13.WAV",
- "AUDIO\\PRN1_14.WAV",
- "AUDIO\\PRN1_15.WAV",
- "AUDIO\\PRN1_16.WAV",
- "AUDIO\\PRN1_17.WAV",
- "AUDIO\\PRN1_18.WAV",
- "AUDIO\\PRN1_19.WAV",
- "AUDIO\\PRN1_20.WAV",
- "AUDIO\\PRN1_21.WAV",
- "AUDIO\\PORN3_1.WAV",
- "AUDIO\\PORN3_2.WAV",
- "AUDIO\\PORN3_3.WAV",
- "AUDIO\\PORN3_4.WAV",
- "AUDIO\\PSYCH_1.WAV",
- "AUDIO\\PSYCH_2.WAV",
- "AUDIO\\ROK2_01.WAV",
- "AUDIO\\ROK3_1.WAV",
- "AUDIO\\ROK3_2.WAV",
- "AUDIO\\ROK3_3.WAV",
- "AUDIO\\ROK3_4.WAV",
- "AUDIO\\ROK3_5.WAV",
- "AUDIO\\ROK3_6.WAV",
- "AUDIO\\ROK3_7.WAV",
- "AUDIO\\ROK3_8.WAV",
- "AUDIO\\ROK3_9.WAV",
- "AUDIO\\ROK3_10.WAV",
- "AUDIO\\ROK3_11.WAV",
- "AUDIO\\ROK3_12.WAV",
- "AUDIO\\ROK3_13.WAV",
- "AUDIO\\ROK3_14.WAV",
- "AUDIO\\ROK3_15.WAV",
- "AUDIO\\ROK3_16.WAV",
- "AUDIO\\ROK3_17.WAV",
- "AUDIO\\ROK3_18.WAV",
- "AUDIO\\ROK3_19.WAV",
- "AUDIO\\ROK3_20.WAV",
- "AUDIO\\ROK3_21.WAV",
- "AUDIO\\ROK3_22.WAV",
- "AUDIO\\ROK3_23.WAV",
- "AUDIO\\ROK3_24.WAV",
- "AUDIO\\ROK3_25.WAV",
- "AUDIO\\ROK3_26.WAV",
- "AUDIO\\ROK3_27.WAV",
- "AUDIO\\ROK3_62.WAV",
- "AUDIO\\ROK3_63.WAV",
- "AUDIO\\ROK3_64.WAV",
- "AUDIO\\ROK3_65.WAV",
- "AUDIO\\ROK3_66.WAV",
- "AUDIO\\ROK3_67.WAV",
- "AUDIO\\ROK3_68.WAV",
- "AUDIO\\ROK3_69.WAV",
- "AUDIO\\ROK3_70.WAV",
- "AUDIO\\ROK3_71.WAV",
- "AUDIO\\ROK3_73.WAV",
- "AUDIO\\RESC_1.WAV",
- "AUDIO\\RESC_2.WAV",
- "AUDIO\\RESC_3.WAV",
- "AUDIO\\RESC_4.WAV",
- "AUDIO\\RESC_5.WAV",
- "AUDIO\\RESC_6.WAV",
- "AUDIO\\RESC_7.WAV",
- "AUDIO\\RESC_8.WAV",
- "AUDIO\\RESC_9.WAV",
- "AUDIO\\RESC_10.WAV",
- "AUDIO\\ROK1_1A.WAV",
- "AUDIO\\ROK1_1B.WAV",
- "AUDIO\\ROK1_5.WAV",
- "AUDIO\\ROK1_6.WAV",
- "AUDIO\\ROK1_7.WAV",
- "AUDIO\\ROK1_8.WAV",
- "AUDIO\\ROK1_9.WAV",
- "AUDIO\\TAX1_1.WAV",
- "AUDIO\\TAX1_2.WAV",
- "AUDIO\\TAX1_3.WAV",
- "AUDIO\\TAX1_4.WAV",
- "AUDIO\\TAX1_5.WAV",
- "AUDIO\\TAX2_1.WAV",
- "AUDIO\\TAX2_2.WAV",
- "AUDIO\\TAX2_3.WAV",
- "AUDIO\\TAX2_4.WAV",
- "AUDIO\\TAX2_5.WAV",
- "AUDIO\\TAX2_6.WAV",
- "AUDIO\\TAX2_7.WAV",
- "AUDIO\\TAX3_1.WAV",
- "AUDIO\\TAX3_2.WAV",
- "AUDIO\\TAX3_3.WAV",
- "AUDIO\\TAX3_4.WAV",
- "AUDIO\\TAX3_5.WAV",
- "AUDIO\\TEX1_1.WAV",
- "AUDIO\\TEX1_2.WAV",
- "AUDIO\\TEX1_3.WAV",
- "AUDIO\\TEX1_4.WAV",
- "AUDIO\\TEX1_5.WAV",
- "AUDIO\\TEX1_6.WAV",
- "AUDIO\\TEX2_1.WAV",
- "AUDIO\\TEX3_1.WAV",
- "AUDIO\\TEX3_2.WAV",
- "AUDIO\\TEX3_3.WAV",
- "AUDIO\\TEX3_4.WAV",
- "AUDIO\\TEX3_5.WAV",
- "AUDIO\\TEX3_6.WAV",
- "AUDIO\\TEX3_7.WAV",
- "AUDIO\\TEX3_8.WAV",
- "AUDIO\\HAT_1A.WAV",
- "AUDIO\\INTRO1.WAV",
- "AUDIO\\INTRO2.WAV",
- "AUDIO\\INTRO3.WAV",
- "AUDIO\\INTRO4.WAV",
- "AUDIO\\MOB_01A.WAV",
- "AUDIO\\MOB_01B.WAV",
- "AUDIO\\MOB_01C.WAV",
- "AUDIO\\MOB_02A.WAV",
- "AUDIO\\MOB_02B.WAV",
- "AUDIO\\MOB_02C.WAV",
- "AUDIO\\MOB_03A.WAV",
- "AUDIO\\MOB_03B.WAV",
- "AUDIO\\MOB_03C.WAV",
- "AUDIO\\MOB_03D.WAV",
- "AUDIO\\MOB_03E.WAV",
- "AUDIO\\SHARK_1.WAV",
- "AUDIO\\SHARK_2.WAV",
- "AUDIO\\SHARK_3.WAV",
- "AUDIO\\SHARK_4.WAV",
- "AUDIO\\SHARK_5.WAV",
- "AUDIO\\MOB_04A.WAV",
- "AUDIO\\MOB_04B.WAV",
- "AUDIO\\MOB_04C.WAV",
- "AUDIO\\MOB_04D.WAV",
- "AUDIO\\MOB_05A.WAV",
- "AUDIO\\MOB_05B.WAV",
- "AUDIO\\MOB_05C.WAV",
- "AUDIO\\MOB_05D.WAV",
- "AUDIO\\MOB_06A.WAV",
- "AUDIO\\MOB_06B.WAV",
- "AUDIO\\MOB_06C.WAV",
- "AUDIO\\MOB_07A.WAV",
- "AUDIO\\MOB_07B.WAV",
- "AUDIO\\MOB_08A.WAV",
- "AUDIO\\MOB_08B.WAV",
- "AUDIO\\MOB_08C.WAV",
- "AUDIO\\MOB_08D.WAV",
- "AUDIO\\MOB_08E.WAV",
- "AUDIO\\MOB_08F.WAV",
- "AUDIO\\MOB_08G.WAV",
- "AUDIO\\MOB_09A.WAV",
- "AUDIO\\MOB_09B.WAV",
- "AUDIO\\MOB_09C.WAV",
- "AUDIO\\MOB_09D.WAV",
- "AUDIO\\MOB_09E.WAV",
- "AUDIO\\MOB_09F.WAV",
- "AUDIO\\MOB_10A.WAV",
- "AUDIO\\MOB_10B.WAV",
- "AUDIO\\MOB_10C.WAV",
- "AUDIO\\MOB_10D.WAV",
- "AUDIO\\MOB_10E.WAV",
- "AUDIO\\MOB_11A.WAV",
- "AUDIO\\MOB_11B.WAV",
- "AUDIO\\MOB_11C.WAV",
- "AUDIO\\MOB_11D.WAV",
- "AUDIO\\MOB_11E.WAV",
- "AUDIO\\MOB_11F.WAV",
- "AUDIO\\MOB_14A.WAV",
- "AUDIO\\MOB_14B.WAV",
- "AUDIO\\MOB_14C.WAV",
- "AUDIO\\MOB_14D.WAV",
- "AUDIO\\MOB_14E.WAV",
- "AUDIO\\MOB_14F.WAV",
- "AUDIO\\MOB_14G.WAV",
- "AUDIO\\MOB_14H.WAV",
- "AUDIO\\MOB_16A.WAV",
- "AUDIO\\MOB_16B.WAV",
- "AUDIO\\MOB_16C.WAV",
- "AUDIO\\MOB_16D.WAV",
- "AUDIO\\MOB_16E.WAV",
- "AUDIO\\MOB_16F.WAV",
- "AUDIO\\MOB_16G.WAV",
- "AUDIO\\MOB_17A.WAV",
- "AUDIO\\MOB_17B.WAV",
- "AUDIO\\MOB_17C.WAV",
- "AUDIO\\MOB_17D.WAV",
- "AUDIO\\MOB_17E.WAV",
- "AUDIO\\MOB_17G.WAV",
- "AUDIO\\MOB_17H.WAV",
- "AUDIO\\MOB_17I.WAV",
- "AUDIO\\MOB_17J.WAV",
- "AUDIO\\MOB_17K.WAV",
- "AUDIO\\MOB_17L.WAV",
- "AUDIO\\MOB_18A.WAV",
- "AUDIO\\MOB_18B.WAV",
- "AUDIO\\MOB_18C.WAV",
- "AUDIO\\MOB_18D.WAV",
- "AUDIO\\MOB_18E.WAV",
- "AUDIO\\MOB_18F.WAV",
- "AUDIO\\MOB_18G.WAV",
- "AUDIO\\MOB_20A.WAV",
- "AUDIO\\MOB_20B.WAV",
- "AUDIO\\MOB_20C.WAV",
- "AUDIO\\MOB_20D.WAV",
- "AUDIO\\MOB_20E.WAV",
- "AUDIO\\MOB_24A.WAV",
- "AUDIO\\MOB_24B.WAV",
- "AUDIO\\MOB_24C.WAV",
- "AUDIO\\MOB_24D.WAV",
- "AUDIO\\MOB_24E.WAV",
- "AUDIO\\MOB_24F.WAV",
- "AUDIO\\MOB_24G.WAV",
- "AUDIO\\MOB_24H.WAV",
- "AUDIO\\MOB_25A.WAV",
- "AUDIO\\MOB_25B.WAV",
- "AUDIO\\MOB_25C.WAV",
- "AUDIO\\MOB_25D.WAV",
- "AUDIO\\MOB_26A.WAV",
- "AUDIO\\MOB_26B.WAV",
- "AUDIO\\MOB_26C.WAV",
- "AUDIO\\MOB_26D.WAV",
- "AUDIO\\MOB_26E.WAV",
- "AUDIO\\MOB_29A.WAV",
- "AUDIO\\MOB_29B.WAV",
- "AUDIO\\MOB_29C.WAV",
- "AUDIO\\MOB_29D.WAV",
- "AUDIO\\MOB_29E.WAV",
- "AUDIO\\MOB_29F.WAV",
- "AUDIO\\MOB_29G.WAV",
- "AUDIO\\MOB_30A.WAV",
- "AUDIO\\MOB_30B.WAV",
- "AUDIO\\MOB_30C.WAV",
- "AUDIO\\MOB_30D.WAV",
- "AUDIO\\MOB_30E.WAV",
- "AUDIO\\MOB_30F.WAV",
- "AUDIO\\MOB_33A.WAV",
- "AUDIO\\MOB_33B.WAV",
- "AUDIO\\MOB_33C.WAV",
- "AUDIO\\MOB_33D.WAV",
- "AUDIO\\MOB_34A.WAV",
- "AUDIO\\MOB_34B.WAV",
- "AUDIO\\MOB_34C.WAV",
- "AUDIO\\MOB_34D.WAV",
- "AUDIO\\MOB_35A.WAV",
- "AUDIO\\MOB_35B.WAV",
- "AUDIO\\MOB_35C.WAV",
- "AUDIO\\MOB_35D.WAV",
- "AUDIO\\MOB_36A.WAV",
- "AUDIO\\MOB_36B.WAV",
- "AUDIO\\MOB_36C.WAV",
- "AUDIO\\MOB_40A.WAV",
- "AUDIO\\MOB_40B.WAV",
- "AUDIO\\MOB_40C.WAV",
- "AUDIO\\MOB_40D.WAV",
- "AUDIO\\MOB_40E.WAV",
- "AUDIO\\MOB_40F.WAV",
- "AUDIO\\MOB_40G.WAV",
- "AUDIO\\MOB_40H.WAV",
- "AUDIO\\MOB_40I.WAV",
- "AUDIO\\MOB_41A.WAV",
- "AUDIO\\MOB_41B.WAV",
- "AUDIO\\MOB_41C.WAV",
- "AUDIO\\MOB_41D.WAV",
- "AUDIO\\MOB_41E.WAV",
- "AUDIO\\MOB_41F.WAV",
- "AUDIO\\MOB_41G.WAV",
- "AUDIO\\MOB_41H.WAV",
- "AUDIO\\MOB_42A.WAV",
- "AUDIO\\MOB_42B.WAV",
- "AUDIO\\MOB_42C.WAV",
- "AUDIO\\MOB_42D.WAV",
- "AUDIO\\MOB_42E.WAV",
- "AUDIO\\MOB_43A.WAV",
- "AUDIO\\MOB_43B.WAV",
- "AUDIO\\MOB_43C.WAV",
- "AUDIO\\MOB_43D.WAV",
- "AUDIO\\MOB_43E.WAV",
- "AUDIO\\MOB_43F.WAV",
- "AUDIO\\MOB_43G.WAV",
- "AUDIO\\MOB_43H.WAV",
- "AUDIO\\MOB_45A.WAV",
- "AUDIO\\MOB_45B.WAV",
- "AUDIO\\MOB_45C.WAV",
- "AUDIO\\MOB_45D.WAV",
- "AUDIO\\MOB_45E.WAV",
- "AUDIO\\MOB_45F.WAV",
- "AUDIO\\MOB_45G.WAV",
- "AUDIO\\MOB_45H.WAV",
- "AUDIO\\MOB_45I.WAV",
- "AUDIO\\MOB_45J.WAV",
- "AUDIO\\MOB_45K.WAV",
- "AUDIO\\MOB_45L.WAV",
- "AUDIO\\MOB_45M.WAV",
- "AUDIO\\MOB_45N.WAV",
- "AUDIO\\MOB_46A.WAV",
- "AUDIO\\MOB_46B.WAV",
- "AUDIO\\MOB_46C.WAV",
- "AUDIO\\MOB_46D.WAV",
- "AUDIO\\MOB_46E.WAV",
- "AUDIO\\MOB_46F.WAV",
- "AUDIO\\MOB_46G.WAV",
- "AUDIO\\MOB_46H.WAV",
- "AUDIO\\MOB_47A.WAV",
- "AUDIO\\MOB_52A.WAV",
- "AUDIO\\MOB_52B.WAV",
- "AUDIO\\MOB_52C.WAV",
- "AUDIO\\MOB_52D.WAV",
- "AUDIO\\MOB_52E.WAV",
- "AUDIO\\MOB_52F.WAV",
- "AUDIO\\MOB_52G.WAV",
- "AUDIO\\MOB_52H.WAV",
- "AUDIO\\MOB_54A.WAV",
- "AUDIO\\MOB_54B.WAV",
- "AUDIO\\MOB_54C.WAV",
- "AUDIO\\MOB_54D.WAV",
- "AUDIO\\MOB_54E.WAV",
- "AUDIO\\MOB_55A.WAV",
- "AUDIO\\MOB_55B.WAV",
- "AUDIO\\MOB_55C.WAV",
- "AUDIO\\MOB_55D.WAV",
- "AUDIO\\MOB_55E.WAV",
- "AUDIO\\MOB_55F.WAV",
- "AUDIO\\MOB_56A.WAV",
- "AUDIO\\MOB_56B.WAV",
- "AUDIO\\MOB_56C.WAV",
- "AUDIO\\MOB_56D.WAV",
- "AUDIO\\MOB_56E.WAV",
- "AUDIO\\MOB_56F.WAV",
- "AUDIO\\MOB_57A.WAV",
- "AUDIO\\MOB_57B.WAV",
- "AUDIO\\MOB_57C.WAV",
- "AUDIO\\MOB_57D.WAV",
- "AUDIO\\MOB_57E.WAV",
- "AUDIO\\MOB_58A.WAV",
- "AUDIO\\MOB_58B.WAV",
- "AUDIO\\MOB_58C.WAV",
- "AUDIO\\MOB_58D.WAV",
- "AUDIO\\MOB_58E.WAV",
- "AUDIO\\MOB_58F.WAV",
- "AUDIO\\MOB_58G.WAV",
- "AUDIO\\MOB_61A.WAV",
- "AUDIO\\MOB_61B.WAV",
- "AUDIO\\MOB_62A.WAV",
- "AUDIO\\MOB_62B.WAV",
- "AUDIO\\MOB_62C.WAV",
- "AUDIO\\MOB_62D.WAV",
- "AUDIO\\MOB_63A.WAV",
- "AUDIO\\MOB_63B.WAV",
- "AUDIO\\MOB_63C.WAV",
- "AUDIO\\MOB_63D.WAV",
- "AUDIO\\MOB_63E.WAV",
- "AUDIO\\MOB_63F.WAV",
- "AUDIO\\MOB_63G.WAV",
- "AUDIO\\MOB_63H.WAV",
- "AUDIO\\MOB_63I.WAV",
- "AUDIO\\MOB_63J.WAV",
- "AUDIO\\MOB_66A.WAV",
- "AUDIO\\MOB_66B.WAV",
- "AUDIO\\MOB_68A.WAV",
- "AUDIO\\MOB_68B.WAV",
- "AUDIO\\MOB_68C.WAV",
- "AUDIO\\MOB_68D.WAV",
- "AUDIO\\MOB_70A.WAV",
- "AUDIO\\MOB_70B.WAV",
- "AUDIO\\MOB_71A.WAV",
- "AUDIO\\MOB_71B.WAV",
- "AUDIO\\MOB_71C.WAV",
- "AUDIO\\MOB_71D.WAV",
- "AUDIO\\MOB_71E.WAV",
- "AUDIO\\MOB_71F.WAV",
- "AUDIO\\MOB_71G.WAV",
- "AUDIO\\MOB_71H.WAV",
- "AUDIO\\MOB_71I.WAV",
- "AUDIO\\MOB_71J.WAV",
- "AUDIO\\MOB_71K.WAV",
- "AUDIO\\MOB_71L.WAV",
- "AUDIO\\MOB_71M.WAV",
- "AUDIO\\MOB_71N.WAV",
- "AUDIO\\MOB_72A.WAV",
- "AUDIO\\MOB_72B.WAV",
- "AUDIO\\MOB_72C.WAV",
- "AUDIO\\MOB_72D.WAV",
- "AUDIO\\MOB_72E.WAV",
- "AUDIO\\MOB_72F.WAV",
- "AUDIO\\MOB_72G.WAV",
- "AUDIO\\MOB_73A.WAV",
- "AUDIO\\MOB_73C.WAV",
- "AUDIO\\MOB_73D.WAV",
- "AUDIO\\MOB_73F.WAV",
- "AUDIO\\MOB_73G.WAV",
- "AUDIO\\MOB_73I.WAV",
- "AUDIO\\MOB_95A.WAV",
- "AUDIO\\MOB_96A.WAV",
- "AUDIO\\MOB_98A.WAV",
- "AUDIO\\MOB_99A.WAV",
- "AUDIO\\JOB1_1B.WAV",
- "AUDIO\\JOB1_1C.WAV",
- "AUDIO\\JOB1_1D.WAV",
- "AUDIO\\JOB2_1B.WAV",
- "AUDIO\\JOB2_2.WAV",
- "AUDIO\\JOB2_3.WAV",
- "AUDIO\\JOB2_4.WAV",
- "AUDIO\\JOB2_5.WAV",
- "AUDIO\\JOB2_6.WAV",
- "AUDIO\\JOB2_7.WAV",
- "AUDIO\\JOB2_8.WAV",
- "AUDIO\\JOB2_9.WAV",
- "AUDIO\\JOB3_1.WAV",
- "AUDIO\\JOB3_2.WAV",
- "AUDIO\\JOB3_3.WAV",
- "AUDIO\\JOB4_1.WAV",
- "AUDIO\\JOB4_2.WAV",
- "AUDIO\\JOB4_3.WAV",
- "AUDIO\\JOB5_1.WAV",
- "AUDIO\\JOB5_2.WAV",
- "AUDIO\\JOB5_3.WAV",
- "AUDIO\\BJM1_20.WAV",
- "AUDIO\\BJM1_4.WAV",
- "AUDIO\\BJM1_5.WAV",
- "AUDIO\\MERC_39.WAV",
- "AUDIO\\MONO_1.WAV",
- "AUDIO\\MONO_2.WAV",
- "AUDIO\\MONO_3.WAV",
- "AUDIO\\MONO_4.WAV",
- "AUDIO\\MONO_5.WAV",
- "AUDIO\\MONO_6.WAV",
- "AUDIO\\MONO_7.WAV",
- "AUDIO\\MONO_8.WAV",
- "AUDIO\\MONO_9.WAV",
- "AUDIO\\MONO10.WAV",
- "AUDIO\\MONO11.WAV",
- "AUDIO\\MONO12.WAV",
- "AUDIO\\MONO13.WAV",
- "AUDIO\\MONO14.WAV",
- "AUDIO\\MONO15.WAV",
- "AUDIO\\MONO16.WAV",
- "AUDIO\\FUD_01.WAV",
- "AUDIO\\FUD_02.WAV",
- "AUDIO\\FUD_03.WAV",
- "AUDIO\\FUD_04.WAV",
- "AUDIO\\FUD_05.WAV",
- "AUDIO\\FUD_06.WAV",
- "AUDIO\\FUD_07.WAV",
- "AUDIO\\FUD_08.WAV",
- "AUDIO\\FUD_09.WAV",
- "AUDIO\\FUD_10.WAV",
- "AUDIO\\FUD_11.WAV",
- "AUDIO\\FUD_12.WAV",
- "AUDIO\\FUD_13.WAV",
- "AUDIO\\FUD_14.WAV",
- "AUDIO\\FUD_15.WAV",
- "AUDIO\\FUD_16.WAV",
- "AUDIO\\FUD_17.WAV",
- "AUDIO\\FUD_18.WAV",
- "AUDIO\\FUD_19.WAV",
- "AUDIO\\FUD_20.WAV",
- "AUDIO\\BURG_01.WAV",
- "AUDIO\\BURG_02.WAV",
- "AUDIO\\BURG_03.WAV",
- "AUDIO\\BURG_04.WAV",
- "AUDIO\\BURG_05.WAV",
- "AUDIO\\BURG_06.WAV",
- "AUDIO\\BURG_07.WAV",
- "AUDIO\\BURG_08.WAV",
- "AUDIO\\BURG_09.WAV",
- "AUDIO\\BURG_10.WAV",
- "AUDIO\\BURG_11.WAV",
- "AUDIO\\BURG_12.WAV",
- "AUDIO\\CRUST01.WAV",
- "AUDIO\\CRUST02.WAV",
- "AUDIO\\CRUST03.WAV",
- "AUDIO\\CRUST04.WAV",
- "AUDIO\\CRUST05.WAV",
- "AUDIO\\CRUST06.WAV",
- "AUDIO\\CRUST07.WAV",
- "AUDIO\\CRUST08.WAV",
- "AUDIO\\CRUST09.WAV",
- "AUDIO\\BAND_01.WAV",
- "AUDIO\\BAND_02.WAV",
- "AUDIO\\BAND_03.WAV",
- "AUDIO\\BAND_04.WAV",
- "AUDIO\\BAND_05.WAV",
- "AUDIO\\BAND_06.WAV",
- "AUDIO\\BAND_07.WAV",
- "AUDIO\\BAND_08.WAV",
- "AUDIO\\SHAFT01.WAV",
- "AUDIO\\SHAFT02.WAV",
- "AUDIO\\SHAFT03.WAV",
- "AUDIO\\SHAFT04.WAV",
- "AUDIO\\SHAFT05.WAV",
- "AUDIO\\SHAFT06.WAV",
- "AUDIO\\SHAFT07.WAV",
- "AUDIO\\SHAFT08.WAV",
- "AUDIO\\PISS_01.WAV",
- "AUDIO\\PISS_02.WAV",
- "AUDIO\\PISS_03.WAV",
- "AUDIO\\PISS_04.WAV",
- "AUDIO\\PISS_05.WAV",
- "AUDIO\\PISS_06.WAV",
- "AUDIO\\PISS_07.WAV",
- "AUDIO\\PISS_08.WAV",
- "AUDIO\\PISS_09.WAV",
- "AUDIO\\PISS_10.WAV",
- "AUDIO\\PISS_11.WAV",
- "AUDIO\\PISS_12.WAV",
- "AUDIO\\PISS_13.WAV",
- "AUDIO\\PISS_14.WAV",
- "AUDIO\\PISS_15.WAV",
- "AUDIO\\PISS_16.WAV",
- "AUDIO\\PISS_17.WAV",
- "AUDIO\\PISS_18.WAV",
- "AUDIO\\PISS_19.WAV",
- "AUDIO\\GIMME01.WAV",
- "AUDIO\\GIMME02.WAV",
- "AUDIO\\GIMME03.WAV",
- "AUDIO\\GIMME04.WAV",
- "AUDIO\\GIMME05.WAV",
- "AUDIO\\GIMME06.WAV",
- "AUDIO\\GIMME07.WAV",
- "AUDIO\\GIMME08.WAV",
- "AUDIO\\GIMME09.WAV",
- "AUDIO\\GIMME10.WAV",
- "AUDIO\\GIMME11.WAV",
- "AUDIO\\GIMME12.WAV",
- "AUDIO\\GIMME13.WAV",
- "AUDIO\\GIMME14.WAV",
- "AUDIO\\GIMME15.WAV",
- "AUDIO\\BUST_01.WAV",
- "AUDIO\\BUST_02.WAV",
- "AUDIO\\BUST_03.WAV",
- "AUDIO\\BUST_04.WAV",
- "AUDIO\\BUST_05.WAV",
- "AUDIO\\BUST_06.WAV",
- "AUDIO\\BUST_07.WAV",
- "AUDIO\\BUST_08.WAV",
- "AUDIO\\BUST_09.WAV",
- "AUDIO\\BUST_10.WAV",
- "AUDIO\\BUST_11.WAV",
- "AUDIO\\BUST_12.WAV",
- "AUDIO\\BUST_13.WAV",
- "AUDIO\\BUST_14.WAV",
- "AUDIO\\BUST_15.WAV",
- "AUDIO\\BUST_16.WAV",
- "AUDIO\\BUST_17.WAV",
- "AUDIO\\BUST_18.WAV",
- "AUDIO\\BUST_19.WAV",
- "AUDIO\\BUST_20.WAV",
- "AUDIO\\BUST_21.WAV",
- "AUDIO\\BUST_22.WAV",
- "AUDIO\\BUST_23.WAV",
- "AUDIO\\BUST_24.WAV",
- "AUDIO\\BUST_25.WAV",
- "AUDIO\\BUST_26.WAV",
- "AUDIO\\BUST_27.WAV",
- "AUDIO\\BUST_28.WAV",
-};
-#endif
-
-static char StreamedNameTable[][25] =
-{
- "AUDIO\\WILD.ADF",
- "AUDIO\\FLASH.ADF",
- "AUDIO\\KCHAT.ADF",
- "AUDIO\\FEVER.ADF",
- "AUDIO\\VROCK.ADF",
- "AUDIO\\VCPR.ADF",
- "AUDIO\\ESPANT.ADF",
- "AUDIO\\EMOTION.ADF",
- "AUDIO\\WAVE.ADF",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\CITY.MP3",
- "AUDIO\\WATER.MP3",
- "AUDIO\\BEACHAMB.MP3",
- "AUDIO\\HCITY.MP3",
- "AUDIO\\HWATER.MP3",
- "AUDIO\\HBEACH.MP3",
- "AUDIO\\MALLAMB.MP3",
- "AUDIO\\STRIP.MP3",
- "AUDIO\\MALIBU.MP3",
- "AUDIO\\HOTEL.MP3",
- "AUDIO\\DIRTRING.MP3",
- "AUDIO\\LAW4RIOT.MP3",
- "AUDIO\\AMBSIL.MP3",
- "AUDIO\\POLICE.MP3",
- "AUDIO\\TAXI.MP3",
- "AUDIO\\BCLOSED.MP3",
- "AUDIO\\BOPEN.MP3",
- "AUDIO\\ASS_1.MP3",
- "AUDIO\\ASS_2.MP3",
- "AUDIO\\BANK_1.MP3",
- "AUDIO\\BANK_2A.MP3",
- "AUDIO\\BANK_2B.MP3",
- "AUDIO\\BANK_3A.MP3",
- "AUDIO\\BANK_3B.MP3",
- "AUDIO\\BANK_4.MP3",
- "AUDIO\\BIKE_1.MP3",
- "AUDIO\\BIKE_2.MP3",
- "AUDIO\\BIKE_3.MP3",
- "AUDIO\\BUD_1.MP3",
- "AUDIO\\BUD_2.MP3",
- "AUDIO\\BUD_3.MP3",
- "AUDIO\\CAP_1.MP3",
- "AUDIO\\CAR_1.MP3",
- "AUDIO\\CNT_1A.MP3",
- "AUDIO\\CNT_1B.MP3",
- "AUDIO\\CNT_2.MP3",
- "AUDIO\\COK_1.MP3",
- "AUDIO\\COK_2A.MP3",
- "AUDIO\\COK_2B.MP3",
- "AUDIO\\COK_3.MP3",
- "AUDIO\\COK_4A.MP3",
- "AUDIO\\COK_4A2.MP3",
- "AUDIO\\COK_4B.MP3",
- "AUDIO\\COL_1.MP3",
- "AUDIO\\COL_2.MP3",
- "AUDIO\\COL_3A.MP3",
- "AUDIO\\COL_4A.MP3",
- "AUDIO\\COL_5A.MP3",
- "AUDIO\\COL_5B.MP3",
- "AUDIO\\CUB_1.MP3",
- "AUDIO\\CUB_2.MP3",
- "AUDIO\\CUB_3.MP3",
- "AUDIO\\CUB_4.MP3",
- "AUDIO\\DRUG_1.MP3",
- "AUDIO\\FIN.MP3",
- "AUDIO\\FIN2.MP3",
- "AUDIO\\FINALE.MP3",
- "AUDIO\\HAT_1.MP3",
- "AUDIO\\HAT_2.MP3",
- "AUDIO\\HAT_3.MP3",
- "AUDIO\\ICE_1.MP3",
- "AUDIO\\INT_A.MP3",
- "AUDIO\\INT_B.MP3",
- "AUDIO\\INT_D.MP3",
- "AUDIO\\INT_M.MP3",
- "AUDIO\\LAW_1A.MP3",
- "AUDIO\\LAW_1B.MP3",
- "AUDIO\\LAW_2A.MP3",
- "AUDIO\\LAW_2B.MP3",
- "AUDIO\\LAW_2C.MP3",
- "AUDIO\\LAW_3.MP3",
- "AUDIO\\LAW_4.MP3",
- "AUDIO\\PHIL_1.MP3",
- "AUDIO\\PHIL_2.MP3",
- "AUDIO\\PORN_1.MP3",
- "AUDIO\\PORN_2.MP3",
- "AUDIO\\PORN_3.MP3",
- "AUDIO\\PORN_4.MP3",
- "AUDIO\\RESC_1A.MP3",
- "AUDIO\\ROK_1.MP3",
- "AUDIO\\ROK_2.MP3",
- "AUDIO\\ROK_3A.MP3",
- "AUDIO\\STRIPA.MP3",
- "AUDIO\\TAX_1.MP3",
- "AUDIO\\TEX_1.MP3",
- "AUDIO\\TEX_2.MP3",
- "AUDIO\\TEX_3.MP3",
- "AUDIO\\GLIGHT.MP3",
- "AUDIO\\FIST.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MOBR1.WAV",
- "AUDIO\\PAGER.WAV",
- "AUDIO\\CARREV.WAV",
- "AUDIO\\BIKEREV.WAV",
- "AUDIO\\LIFTOP.WAV",
- "AUDIO\\LIFTCL.WAV",
- "AUDIO\\LIFTRUN.WAV",
- "AUDIO\\LIFTBEL.WAV",
- "AUDIO\\INLIFT.WAV",
- "AUDIO\\SFX_01.WAV",
- "AUDIO\\SFX_02.WAV",
- "AUDIO\\CAMERAL.WAV",
- "AUDIO\\CAMERAR.WAV",
- "AUDIO\\CHEER1.WAV",
- "AUDIO\\CHEER2.WAV",
- "AUDIO\\CHEER3.WAV",
- "AUDIO\\CHEER4.WAV",
- "AUDIO\\OOH1.WAV",
- "AUDIO\\OOH2.WAV",
- "AUDIO\\RACE1.WAV",
- "AUDIO\\RACE2.WAV",
- "AUDIO\\RACE3.WAV",
- "AUDIO\\RACE4.WAV",
- "AUDIO\\RACE5.WAV",
- "AUDIO\\RACE6.WAV",
- "AUDIO\\RACE7.WAV",
- "AUDIO\\RACE8.WAV",
- "AUDIO\\RACE9.WAV",
- "AUDIO\\RACE10.WAV",
- "AUDIO\\RACE11.WAV",
- "AUDIO\\RACE12.WAV",
- "AUDIO\\RACE13.WAV",
- "AUDIO\\RACE14.WAV",
- "AUDIO\\RACE15.WAV",
- "AUDIO\\HOT1.WAV",
- "AUDIO\\HOT2.WAV",
- "AUDIO\\HOT3.WAV",
- "AUDIO\\HOT4.WAV",
- "AUDIO\\HOT5.WAV",
- "AUDIO\\HOT6.WAV",
- "AUDIO\\HOT7.WAV",
- "AUDIO\\HOT8.WAV",
- "AUDIO\\HOT9.WAV",
- "AUDIO\\HOT10.WAV",
- "AUDIO\\HOT11.WAV",
- "AUDIO\\HOT12.WAV",
- "AUDIO\\HOT13.WAV",
- "AUDIO\\HOT14.WAV",
- "AUDIO\\HOT15.WAV",
- "AUDIO\\LANSTP1.WAV",
- "AUDIO\\LANSTP2.WAV",
- "AUDIO\\LANAMU1.WAV",
- "AUDIO\\LANAMU2.WAV",
- "AUDIO\\AIRHORNL.WAV",
- "AUDIO\\AIRHORNR.WAV",
- "AUDIO\\SNIPSCRL.WAV",
- "AUDIO\\SNIPSHORT.WAV",
- "AUDIO\\BLOWROOF.WAV",
- "AUDIO\\ASS_1.WAV",
- "AUDIO\\ASS_2.WAV",
- "AUDIO\\ASS_3.WAV",
- "AUDIO\\ASS_4.WAV",
- "AUDIO\\ASS_5.WAV",
- "AUDIO\\ASS_6.WAV",
- "AUDIO\\ASS_7.WAV",
- "AUDIO\\ASS_8.WAV",
- "AUDIO\\ASS_9.WAV",
- "AUDIO\\ASS_10.WAV",
- "AUDIO\\ASS_11.WAV",
- "AUDIO\\ASS_12.WAV",
- "AUDIO\\ASS_13.WAV",
- "AUDIO\\ASS_14.WAV",
- "AUDIO\\BIKE1_1.WAV",
- "AUDIO\\BIKE1_2.WAV",
- "AUDIO\\BIKE1_3.WAV",
- "AUDIO\\BNK1_1.WAV",
- "AUDIO\\BNK1_2.WAV",
- "AUDIO\\BNK1_3.WAV",
- "AUDIO\\BNK1_4.WAV",
- "AUDIO\\BNK1_5.WAV",
- "AUDIO\\BNK1_6.WAV",
- "AUDIO\\BNK1_7.WAV",
- "AUDIO\\BNK1_8.WAV",
- "AUDIO\\BNK1_10.WAV",
- "AUDIO\\BNK1_11.WAV",
- "AUDIO\\BNK1_12.WAV",
- "AUDIO\\BNK1_13.WAV",
- "AUDIO\\BNK1_14.WAV",
- "AUDIO\\BNK2_1.WAV",
- "AUDIO\\BNK2_2.WAV",
- "AUDIO\\BNK2_3.WAV",
- "AUDIO\\BNK2_4.WAV",
- "AUDIO\\BNK2_5.WAV",
- "AUDIO\\BNK2_6.WAV",
- "AUDIO\\BNK2_7.WAV",
- "AUDIO\\BNK2_8.WAV",
- "AUDIO\\BNK2_9.WAV",
- "AUDIO\\BNK3_1.WAV",
- "AUDIO\\BNK3_2.WAV",
- "AUDIO\\BNK3_3A.WAV",
- "AUDIO\\BNK3_3B.WAV",
- "AUDIO\\BNK3_3C.WAV",
- "AUDIO\\BNK3_4A.WAV",
- "AUDIO\\BNK3_4B.WAV",
- "AUDIO\\BNK3_4C.WAV",
- "AUDIO\\BNK4_1.WAV",
- "AUDIO\\BNK4_2.WAV",
- "AUDIO\\BNK4_3A.WAV",
- "AUDIO\\BNK4_3B.WAV",
- "AUDIO\\BNK4_3C.WAV",
- "AUDIO\\BNK4_3D.WAV",
- "AUDIO\\BNK4_3E.WAV",
- "AUDIO\\BNK4_3F.WAV",
- "AUDIO\\BNK4_3G.WAV",
- "AUDIO\\BNK4_3H.WAV",
- "AUDIO\\BNK4_3I.WAV",
- "AUDIO\\BNK4_3J.WAV",
- "AUDIO\\BNK4_3K.WAV",
- "AUDIO\\BNK4_3M.WAV",
- "AUDIO\\BNK4_3O.WAV",
- "AUDIO\\BNK4_3P.WAV",
- "AUDIO\\BNK4_3Q.WAV",
- "AUDIO\\BNK4_3R.WAV",
- "AUDIO\\BNK4_3S.WAV",
- "AUDIO\\BNK4_3T.WAV",
- "AUDIO\\BNK4_3U.WAV",
- "AUDIO\\BNK4_3V.WAV",
- "AUDIO\\BNK4_4A.WAV",
- "AUDIO\\BNK4_4B.WAV",
- "AUDIO\\BNK4_5.WAV",
- "AUDIO\\BNK4_6.WAV",
- "AUDIO\\BNK4_7.WAV",
- "AUDIO\\BNK4_8.WAV",
- "AUDIO\\BNK4_9.WAV",
- "AUDIO\\BNK4_10.WAV",
- "AUDIO\\BNK4_11.WAV",
- "AUDIO\\BK4_12A.WAV",
- "AUDIO\\BK4_12B.WAV",
- "AUDIO\\BK4_12C.WAV",
- "AUDIO\\BNK4_13.WAV",
- "AUDIO\\BK4_14A.WAV",
- "AUDIO\\BK4_14B.WAV",
- "AUDIO\\BNK4_15.WAV",
- "AUDIO\\BNK4_16.WAV",
- "AUDIO\\BNK4_17.WAV",
- "AUDIO\\BNK4_18.WAV",
- "AUDIO\\BK4_19A.WAV",
- "AUDIO\\BK4_19B.WAV",
- "AUDIO\\BK4_20A.WAV",
- "AUDIO\\BK4_20B.WAV",
- "AUDIO\\BNK4_21.WAV",
- "AUDIO\\BNK422A.WAV",
- "AUDIO\\BNK422B.WAV",
- "AUDIO\\BK4_23A.WAV",
- "AUDIO\\BK4_23B.WAV",
- "AUDIO\\BK4_23C.WAV",
- "AUDIO\\BK4_23D.WAV",
- "AUDIO\\BK4_24A.WAV",
- "AUDIO\\BK4_24B.WAV",
- "AUDIO\\BNK4_25.WAV",
- "AUDIO\\BNK4_26.WAV",
- "AUDIO\\BNK4_27.WAV",
- "AUDIO\\BNK4_28.WAV",
- "AUDIO\\BNK4_29.WAV",
- "AUDIO\\BNK4_30.WAV",
- "AUDIO\\BK4_31A.WAV",
- "AUDIO\\BK4_31B.WAV",
- "AUDIO\\BNK4_32.WAV",
- "AUDIO\\BK4_34A.WAV",
- "AUDIO\\BK4_34B.WAV",
- "AUDIO\\BK4_35A.WAV",
- "AUDIO\\BK4_35B.WAV",
- "AUDIO\\BNK4_36.WAV",
- "AUDIO\\BNK4_37.WAV",
- "AUDIO\\BNK4_38.WAV",
- "AUDIO\\BNK4_39.WAV",
- "AUDIO\\BK4_40A.WAV",
- "AUDIO\\BK4_40B.WAV",
- "AUDIO\\BNK4_41.WAV",
- "AUDIO\\BNK4_42.WAV",
- "AUDIO\\BNK4_43.WAV",
- "AUDIO\\BNK4_44.WAV",
- "AUDIO\\BNK4_45.WAV",
- "AUDIO\\BNK4_46.WAV",
- "AUDIO\\BNK4_47.WAV",
- "AUDIO\\BNK4_48.WAV",
- "AUDIO\\BNK4_49.WAV",
- "AUDIO\\BNK450A.WAV",
- "AUDIO\\BNK450B.WAV",
- "AUDIO\\BNK4_51.WAV",
- "AUDIO\\BNK4_94.WAV",
- "AUDIO\\BNK4_95.WAV",
- "AUDIO\\BNK4_96.WAV",
- "AUDIO\\BNK4_97.WAV",
- "AUDIO\\BNK4_98.WAV",
- "AUDIO\\BNK4_99.WAV",
- "AUDIO\\BUD1_1.WAV",
- "AUDIO\\BUD1_2.WAV",
- "AUDIO\\BUD1_3.WAV",
- "AUDIO\\BUD1_4.WAV",
- "AUDIO\\BUD1_5.WAV",
- "AUDIO\\BUD1_9.WAV",
- "AUDIO\\BUD1_10.WAV",
- "AUDIO\\BUD2_1.WAV",
- "AUDIO\\BUD2_2.WAV",
- "AUDIO\\BUD2_3.WAV",
- "AUDIO\\BUD2_4.WAV",
- "AUDIO\\BUD2_5.WAV",
- "AUDIO\\BUD2_6.WAV",
- "AUDIO\\BUD2_7.WAV",
- "AUDIO\\BUD3_1.WAV",
- "AUDIO\\BUD3_1A.WAV",
- "AUDIO\\BUD3_1B.WAV",
- "AUDIO\\BUD3_1C.WAV",
- "AUDIO\\BUD3_2.WAV",
- "AUDIO\\BUD3_3.WAV",
- "AUDIO\\BUD3_4.WAV",
- "AUDIO\\BUD3_5.WAV",
- "AUDIO\\BUD3_6.WAV",
- "AUDIO\\BUD3_7.WAV",
- "AUDIO\\BUD3_8A.WAV",
- "AUDIO\\BUD3_8B.WAV",
- "AUDIO\\BUD3_8C.WAV",
- "AUDIO\\BUD3_9A.WAV",
- "AUDIO\\BUD3_9B.WAV",
- "AUDIO\\BUD3_9C.WAV",
- "AUDIO\\CAP1_2.WAV",
- "AUDIO\\CAP1_3.WAV",
- "AUDIO\\CAP1_4.WAV",
- "AUDIO\\CAP1_5.WAV",
- "AUDIO\\CAP1_6.WAV",
- "AUDIO\\CAP1_7.WAV",
- "AUDIO\\CAP1_8.WAV",
- "AUDIO\\CAP1_9.WAV",
- "AUDIO\\CAP1_10.WAV",
- "AUDIO\\CAP1_11.WAV",
- "AUDIO\\CAP1_12.WAV",
- "AUDIO\\CNT1_1.WAV",
- "AUDIO\\CNT1_2.WAV",
- "AUDIO\\CNT1_3.WAV",
- "AUDIO\\CNT1_4.WAV",
- "AUDIO\\CNT1_5.WAV",
- "AUDIO\\CNT2_1.WAV",
- "AUDIO\\CNT2_2.WAV",
- "AUDIO\\CNT2_3.WAV",
- "AUDIO\\CNT2_4.WAV",
- "AUDIO\\COK1_1.WAV",
- "AUDIO\\COK1_2.WAV",
- "AUDIO\\COK1_3.WAV",
- "AUDIO\\COK1_4.WAV",
- "AUDIO\\COK1_5.WAV",
- "AUDIO\\COK1_6.WAV",
- "AUDIO\\COK2_1.WAV",
- "AUDIO\\COK2_2.WAV",
- "AUDIO\\COK2_3.WAV",
- "AUDIO\\COK2_4.WAV",
- "AUDIO\\COK2_5.WAV",
- "AUDIO\\COK2_6.WAV",
- "AUDIO\\COK2_7A.WAV",
- "AUDIO\\COK2_7B.WAV",
- "AUDIO\\COK2_7C.WAV",
- "AUDIO\\COK2_8A.WAV",
- "AUDIO\\COK2_8B.WAV",
- "AUDIO\\COK2_8C.WAV",
- "AUDIO\\COK2_8D.WAV",
- "AUDIO\\COK2_9.WAV",
- "AUDIO\\COK210A.WAV",
- "AUDIO\\COK210B.WAV",
- "AUDIO\\COK210C.WAV",
- "AUDIO\\COK212A.WAV",
- "AUDIO\\COK212B.WAV",
- "AUDIO\\COK2_13.WAV",
- "AUDIO\\COK2_14.WAV",
- "AUDIO\\COK2_15.WAV",
- "AUDIO\\COK2_16.WAV",
- "AUDIO\\COK2_20.WAV",
- "AUDIO\\COK2_21.WAV",
- "AUDIO\\COK2_2.WAV", // this is probably a typo of COK2_22
- "AUDIO\\COK3_1.WAV",
- "AUDIO\\COK3_2.WAV",
- "AUDIO\\COK3_3.WAV",
- "AUDIO\\COK3_4.WAV",
- "AUDIO\\COK4_1.WAV",
- "AUDIO\\COK4_2.WAV",
- "AUDIO\\COK4_3.WAV",
- "AUDIO\\COK4_4.WAV",
- "AUDIO\\COK4_5.WAV",
- "AUDIO\\COK4_6.WAV",
- "AUDIO\\COK4_7.WAV",
- "AUDIO\\COK4_8.WAV",
- "AUDIO\\COK4_9.WAV",
- "AUDIO\\COK4_9A.WAV",
- "AUDIO\\COK4_10.WAV",
- "AUDIO\\COK4_11.WAV",
- "AUDIO\\COK4_12.WAV",
- "AUDIO\\COK4_13.WAV",
- "AUDIO\\COK4_14.WAV",
- "AUDIO\\COK4_15.WAV",
- "AUDIO\\COK4_16.WAV",
- "AUDIO\\COK4_17.WAV",
- "AUDIO\\COK4_18.WAV",
- "AUDIO\\COK4_19.WAV",
- "AUDIO\\COK4_20.WAV",
- "AUDIO\\COK4_21.WAV",
- "AUDIO\\COK4_22.WAV",
- "AUDIO\\COK4_23.WAV",
- "AUDIO\\COK4_24.WAV",
- "AUDIO\\COK4_25.WAV",
- "AUDIO\\COK4_26.WAV",
- "AUDIO\\COK4_27.WAV",
- "AUDIO\\COL1_1.WAV",
- "AUDIO\\COL1_2.WAV",
- "AUDIO\\COL1_3.WAV",
- "AUDIO\\COL1_4.WAV",
- "AUDIO\\COL1_5.WAV",
- "AUDIO\\COL1_6.WAV",
- "AUDIO\\COL1_7.WAV",
- "AUDIO\\COL1_8.WAV",
- "AUDIO\\COL2_1.WAV",
- "AUDIO\\COL2_2.WAV",
- "AUDIO\\COL2_3.WAV",
- "AUDIO\\COL2_4.WAV",
- "AUDIO\\COL2_5.WAV",
- "AUDIO\\COL2_6A.WAV",
- "AUDIO\\COL2_7.WAV",
- "AUDIO\\COL2_8.WAV",
- "AUDIO\\COL2_9.WAV",
- "AUDIO\\COL2_10.WAV",
- "AUDIO\\COL2_11.WAV",
- "AUDIO\\COL2_12.WAV",
- "AUDIO\\COL2_13.WAV",
- "AUDIO\\COL2_14.WAV",
- "AUDIO\\COL2_15.WAV",
- "AUDIO\\COL2_16.WAV",
- "AUDIO\\COL3_1.WAV",
- "AUDIO\\COL3_2.WAV",
- "AUDIO\\COL3_2A.WAV",
- "AUDIO\\COL3_2B.WAV",
- "AUDIO\\COL3_3.WAV",
- "AUDIO\\COL3_4.WAV",
- "AUDIO\\COL3_5.WAV",
- "AUDIO\\COL3_6.WAV",
- "AUDIO\\COL3_7.WAV",
- "AUDIO\\COL3_8.WAV",
- "AUDIO\\COL3_9.WAV",
- "AUDIO\\COL3_10.WAV",
- "AUDIO\\COL3_11.WAV",
- "AUDIO\\COL3_12.WAV",
- "AUDIO\\COL3_13.WAV",
- "AUDIO\\COL3_14.WAV",
- "AUDIO\\COL3_15.WAV",
- "AUDIO\\COL3_16.WAV",
- "AUDIO\\COL3_17.WAV",
- "AUDIO\\COL3_18.WAV",
- "AUDIO\\COL3_19.WAV",
- "AUDIO\\COL3_20.WAV",
- "AUDIO\\COL3_21.WAV",
- "AUDIO\\COL3_23.WAV",
- "AUDIO\\COL3_24.WAV",
- "AUDIO\\COL3_25.WAV",
- "AUDIO\\COL4_1.WAV",
- "AUDIO\\COL4_2.WAV",
- "AUDIO\\COL4_3.WAV",
- "AUDIO\\COL4_4.WAV",
- "AUDIO\\COL4_5.WAV",
- "AUDIO\\COL4_6.WAV",
- "AUDIO\\COL4_7.WAV",
- "AUDIO\\COL4_8.WAV",
- "AUDIO\\COL4_9.WAV",
- "AUDIO\\COL4_10.WAV",
- "AUDIO\\COL4_11.WAV",
- "AUDIO\\COL4_12.WAV",
- "AUDIO\\COL4_13.WAV",
- "AUDIO\\COL4_14.WAV",
- "AUDIO\\COL4_15.WAV",
- "AUDIO\\COL4_16.WAV",
- "AUDIO\\COL4_17.WAV",
- "AUDIO\\COL4_18.WAV",
- "AUDIO\\COL4_19.WAV",
- "AUDIO\\COL4_20.WAV",
- "AUDIO\\COL4_21.WAV",
- "AUDIO\\COL4_22.WAV",
- "AUDIO\\COL4_23.WAV",
- "AUDIO\\COL4_24.WAV",
- "AUDIO\\COL4_25.WAV",
- "AUDIO\\COL4_26.WAV",
- "AUDIO\\COL5_1.WAV",
- "AUDIO\\COL5_2.WAV",
- "AUDIO\\COL5_3.WAV",
- "AUDIO\\COL5_4.WAV",
- "AUDIO\\COL5_5.WAV",
- "AUDIO\\COL5_6.WAV",
- "AUDIO\\COL5_7.WAV",
- "AUDIO\\COL5_8.WAV",
- "AUDIO\\COL5_9.WAV",
- "AUDIO\\COL5_10.WAV",
- "AUDIO\\COL5_11.WAV",
- "AUDIO\\COL5_12.WAV",
- "AUDIO\\COL5_13.WAV",
- "AUDIO\\COL5_14.WAV",
- "AUDIO\\COL5_15.WAV",
- "AUDIO\\COL5_16.WAV",
- "AUDIO\\COL5_17.WAV",
- "AUDIO\\COL5_18.WAV",
- "AUDIO\\COL5_19.WAV",
- "AUDIO\\COL5_20.WAV",
- "AUDIO\\COL5_21.WAV",
- "AUDIO\\COL5_22.WAV",
- "AUDIO\\CUB1_1.WAV",
- "AUDIO\\CUB1_2.WAV",
- "AUDIO\\CUB1_3.WAV",
- "AUDIO\\CUB1_4.WAV",
- "AUDIO\\CUB1_5.WAV",
- "AUDIO\\CUB1_6.WAV",
- "AUDIO\\CUB1_7.WAV",
- "AUDIO\\CUB1_8.WAV",
- "AUDIO\\CUB1_9.WAV",
- "AUDIO\\CUB1_10.WAV",
- "AUDIO\\CUB2_1.WAV",
- "AUDIO\\CUB2_2.WAV",
- "AUDIO\\CUB2_3A.WAV",
- "AUDIO\\CUB2_3B.WAV",
- "AUDIO\\CUB2_3C.WAV",
- "AUDIO\\CUB2_4A.WAV",
- "AUDIO\\CUB2_5.WAV",
- "AUDIO\\CUB2_6.WAV",
- "AUDIO\\CUB2_7.WAV",
- "AUDIO\\CUB2_8.WAV",
- "AUDIO\\CUB2_9.WAV",
- "AUDIO\\CUB2_10.WAV",
- "AUDIO\\CUB2_11.WAV",
- "AUDIO\\CUB3_1.WAV",
- "AUDIO\\CUB3_2.WAV",
- "AUDIO\\CUB3_3.WAV",
- "AUDIO\\CUB3_4.WAV",
- "AUDIO\\CUB4_1.WAV",
- "AUDIO\\CUB4_2.WAV",
- "AUDIO\\CUB4_3.WAV",
- "AUDIO\\CUB4_4.WAV",
- "AUDIO\\CUB4_5.WAV",
- "AUDIO\\CUB4_5A.WAV",
- "AUDIO\\CUB4_6.WAV",
- "AUDIO\\CUB4_7.WAV",
- "AUDIO\\CUB4_8.WAV",
- "AUDIO\\CUB4_9.WAV",
- "AUDIO\\CUB4_10.WAV",
- "AUDIO\\CUB4_11.WAV",
- "AUDIO\\CUB4_12.WAV",
- "AUDIO\\CUB4_13.WAV",
- "AUDIO\\CUB4_14.WAV",
- "AUDIO\\CUB4_15.WAV",
- "AUDIO\\CUB4_16.WAV",
- "AUDIO\\GOLF_1.WAV",
- "AUDIO\\GOLF_2.WAV",
- "AUDIO\\GOLF_3.WAV",
- "AUDIO\\BAR_1.WAV",
- "AUDIO\\BAR_2.WAV",
- "AUDIO\\BAR_3.WAV",
- "AUDIO\\BAR_4.WAV",
- "AUDIO\\BAR_5.WAV",
- "AUDIO\\BAR_6.WAV",
- "AUDIO\\BAR_7.WAV",
- "AUDIO\\BAR_8.WAV",
- "AUDIO\\STRIP_1.WAV",
- "AUDIO\\STRIP_2.WAV",
- "AUDIO\\STRIP_3.WAV",
- "AUDIO\\STRIP_4.WAV",
- "AUDIO\\STRIP_5.WAV",
- "AUDIO\\STRIP_6.WAV",
- "AUDIO\\STRIP_7.WAV",
- "AUDIO\\STRIP_8.WAV",
- "AUDIO\\STRIP_9.WAV",
- "AUDIO\\STAR_1.WAV",
- "AUDIO\\STAR_2.WAV",
- "AUDIO\\STAR_3.WAV",
- "AUDIO\\STAR_4.WAV",
- "AUDIO\\FIN_1A.WAV",
- "AUDIO\\FIN_1B.WAV",
- "AUDIO\\FIN_1C.WAV",
- "AUDIO\\FIN_2B.WAV",
- "AUDIO\\FIN_2C.WAV",
- "AUDIO\\FIN_3.WAV",
- "AUDIO\\FIN_4.WAV",
- "AUDIO\\FIN_5.WAV",
- "AUDIO\\FIN_6.WAV",
- "AUDIO\\FIN_10.WAV",
- "AUDIO\\FIN_11A.WAV",
- "AUDIO\\FIN_11B.WAV",
- "AUDIO\\FIN_12A.WAV",
- "AUDIO\\FIN_12B.WAV",
- "AUDIO\\FIN_12C.WAV",
- "AUDIO\\FIN_13.WAV",
- "AUDIO\\FINKILL.WAV",
- "AUDIO\\LAW1_1.WAV",
- "AUDIO\\LAW1_2.WAV",
- "AUDIO\\LAW1_3.WAV",
- "AUDIO\\LAW1_4.WAV",
- "AUDIO\\LAW1_5.WAV",
- "AUDIO\\LAW1_6.WAV",
- "AUDIO\\LAW1_7.WAV",
- "AUDIO\\LAW1_8.WAV",
- "AUDIO\\LAW1_9.WAV",
- "AUDIO\\LAW1_10.WAV",
- "AUDIO\\LAW2_1.WAV",
- "AUDIO\\LAW2_2.WAV",
- "AUDIO\\LAW2_3.WAV",
- "AUDIO\\LAW2_4.WAV",
- "AUDIO\\LAW2_5.WAV",
- "AUDIO\\LAW2_6.WAV",
- "AUDIO\\LAW2_7.WAV",
- "AUDIO\\LAW2_8.WAV",
- "AUDIO\\LAW2_9.WAV",
- "AUDIO\\LAW2_10.WAV",
- "AUDIO\\LAW3_1.WAV",
- "AUDIO\\LAW3_2.WAV",
- "AUDIO\\LAW3_3.WAV",
- "AUDIO\\LAW3_4.WAV",
- "AUDIO\\LAW3_5.WAV",
- "AUDIO\\LAW3_6.WAV",
- "AUDIO\\LAW3_10.WAV",
- "AUDIO\\LAW3_11.WAV",
- "AUDIO\\LAW3_12.WAV",
- "AUDIO\\LAW3_13.WAV",
- "AUDIO\\LAW3_14.WAV",
- "AUDIO\\LAW3_16.WAV",
- "AUDIO\\LAW3_17.WAV",
- "AUDIO\\LAW3_18.WAV",
- "AUDIO\\LAW3_19.WAV",
- "AUDIO\\LAW3_20.WAV",
- "AUDIO\\LAW3_21.WAV",
- "AUDIO\\LAW3_22.WAV",
- "AUDIO\\LAW3_23.WAV",
- "AUDIO\\LAW3_24.WAV",
- "AUDIO\\LAW3_25.WAV",
- "AUDIO\\LAW4_1A.WAV",
- "AUDIO\\LAW4_1B.WAV",
- "AUDIO\\LAW4_1C.WAV",
- "AUDIO\\LAW4_1D.WAV",
- "AUDIO\\LAW4_10.WAV",
- "AUDIO\\LAW4_3.WAV",
- "AUDIO\\LAW4_4.WAV",
- "AUDIO\\LAW4_5.WAV",
- "AUDIO\\LAW4_6.WAV",
- "AUDIO\\LAW4_7.WAV",
- "AUDIO\\LAW4_8.WAV",
- "AUDIO\\LAW4_9.WAV",
- "AUDIO\\PHIL1_2.WAV",
- "AUDIO\\PHIL1_3.WAV",
- "AUDIO\\PHIL2_1.WAV",
- "AUDIO\\PHIL2_2.WAV",
- "AUDIO\\PHIL2_3.WAV",
- "AUDIO\\PHIL2_4.WAV",
- "AUDIO\\PHIL2_5.WAV",
- "AUDIO\\PHIL2_6.WAV",
- "AUDIO\\PHIL2_7.WAV",
- "AUDIO\\PHIL2_8.WAV",
- "AUDIO\\PHIL2_9.WAV",
- "AUDIO\\PHIL210.WAV",
- "AUDIO\\PHIL211.WAV",
- "AUDIO\\PORN1_1.WAV",
- "AUDIO\\PORN1_2.WAV",
- "AUDIO\\PORN1_3.WAV",
- "AUDIO\\PRN1_3A.WAV",
- "AUDIO\\PORN1_4.WAV",
- "AUDIO\\PORN1_5.WAV",
- "AUDIO\\PORN1_6.WAV",
- "AUDIO\\PORN1_7.WAV",
- "AUDIO\\PORN1_8.WAV",
- "AUDIO\\PORN1_9.WAV",
- "AUDIO\\PRN1_10.WAV",
- "AUDIO\\PRN1_11.WAV",
- "AUDIO\\PRN1_12.WAV",
- "AUDIO\\PRN1_13.WAV",
- "AUDIO\\PRN1_14.WAV",
- "AUDIO\\PRN1_15.WAV",
- "AUDIO\\PRN1_16.WAV",
- "AUDIO\\PRN1_17.WAV",
- "AUDIO\\PRN1_18.WAV",
- "AUDIO\\PRN1_19.WAV",
- "AUDIO\\PRN1_20.WAV",
- "AUDIO\\PRN1_21.WAV",
- "AUDIO\\PORN3_1.WAV",
- "AUDIO\\PORN3_2.WAV",
- "AUDIO\\PORN3_3.WAV",
- "AUDIO\\PORN3_4.WAV",
- "AUDIO\\PSYCH_1.WAV",
- "AUDIO\\PSYCH_2.WAV",
- "AUDIO\\ROK2_01.WAV",
- "AUDIO\\ROK3_1.WAV",
- "AUDIO\\ROK3_2.WAV",
- "AUDIO\\ROK3_3.WAV",
- "AUDIO\\ROK3_4.WAV",
- "AUDIO\\ROK3_5.WAV",
- "AUDIO\\ROK3_6.WAV",
- "AUDIO\\ROK3_7.WAV",
- "AUDIO\\ROK3_8.WAV",
- "AUDIO\\ROK3_9.WAV",
- "AUDIO\\ROK3_10.WAV",
- "AUDIO\\ROK3_11.WAV",
- "AUDIO\\ROK3_12.WAV",
- "AUDIO\\ROK3_13.WAV",
- "AUDIO\\ROK3_14.WAV",
- "AUDIO\\ROK3_15.WAV",
- "AUDIO\\ROK3_16.WAV",
- "AUDIO\\ROK3_17.WAV",
- "AUDIO\\ROK3_18.WAV",
- "AUDIO\\ROK3_19.WAV",
- "AUDIO\\ROK3_20.WAV",
- "AUDIO\\ROK3_21.WAV",
- "AUDIO\\ROK3_22.WAV",
- "AUDIO\\ROK3_23.WAV",
- "AUDIO\\ROK3_24.WAV",
- "AUDIO\\ROK3_25.WAV",
- "AUDIO\\ROK3_26.WAV",
- "AUDIO\\ROK3_27.WAV",
- "AUDIO\\ROK3_62.WAV",
- "AUDIO\\ROK3_63.WAV",
- "AUDIO\\ROK3_64.WAV",
- "AUDIO\\ROK3_65.WAV",
- "AUDIO\\ROK3_66.WAV",
- "AUDIO\\ROK3_67.WAV",
- "AUDIO\\ROK3_68.WAV",
- "AUDIO\\ROK3_69.WAV",
- "AUDIO\\ROK3_70.WAV",
- "AUDIO\\ROK3_71.WAV",
- "AUDIO\\ROK3_73.WAV",
- "AUDIO\\RESC_1.WAV",
- "AUDIO\\RESC_2.WAV",
- "AUDIO\\RESC_3.WAV",
- "AUDIO\\RESC_4.WAV",
- "AUDIO\\RESC_5.WAV",
- "AUDIO\\RESC_6.WAV",
- "AUDIO\\RESC_7.WAV",
- "AUDIO\\RESC_8.WAV",
- "AUDIO\\RESC_9.WAV",
- "AUDIO\\RESC_10.WAV",
- "AUDIO\\ROK1_1A.WAV",
- "AUDIO\\ROK1_1B.WAV",
- "AUDIO\\ROK1_5.WAV",
- "AUDIO\\ROK1_6.WAV",
- "AUDIO\\ROK1_7.WAV",
- "AUDIO\\ROK1_8.WAV",
- "AUDIO\\ROK1_9.WAV",
- "AUDIO\\TAX1_1.WAV",
- "AUDIO\\TAX1_2.WAV",
- "AUDIO\\TAX1_3.WAV",
- "AUDIO\\TAX1_4.WAV",
- "AUDIO\\TAX1_5.WAV",
- "AUDIO\\TAX2_1.WAV",
- "AUDIO\\TAX2_2.WAV",
- "AUDIO\\TAX2_3.WAV",
- "AUDIO\\TAX2_4.WAV",
- "AUDIO\\TAX2_5.WAV",
- "AUDIO\\TAX2_6.WAV",
- "AUDIO\\TAX2_7.WAV",
- "AUDIO\\TAX3_1.WAV",
- "AUDIO\\TAX3_2.WAV",
- "AUDIO\\TAX3_3.WAV",
- "AUDIO\\TAX3_4.WAV",
- "AUDIO\\TAX3_5.WAV",
- "AUDIO\\TEX1_1.WAV",
- "AUDIO\\TEX1_2.WAV",
- "AUDIO\\TEX1_3.WAV",
- "AUDIO\\TEX1_4.WAV",
- "AUDIO\\TEX1_5.WAV",
- "AUDIO\\TEX1_6.WAV",
- "AUDIO\\TEX2_1.WAV",
- "AUDIO\\TEX3_1.WAV",
- "AUDIO\\TEX3_2.WAV",
- "AUDIO\\TEX3_3.WAV",
- "AUDIO\\TEX3_4.WAV",
- "AUDIO\\TEX3_5.WAV",
- "AUDIO\\TEX3_6.WAV",
- "AUDIO\\TEX3_7.WAV",
- "AUDIO\\TEX3_8.WAV",
- "AUDIO\\HAT_1A.WAV",
- "AUDIO\\INTRO1.WAV",
- "AUDIO\\INTRO2.WAV",
- "AUDIO\\INTRO3.WAV",
- "AUDIO\\INTRO4.WAV",
- "AUDIO\\MOB_01A.WAV",
- "AUDIO\\MOB_01B.WAV",
- "AUDIO\\MOB_01C.WAV",
- "AUDIO\\MOB_02A.WAV",
- "AUDIO\\MOB_02B.WAV",
- "AUDIO\\MOB_02C.WAV",
- "AUDIO\\MOB_03A.WAV",
- "AUDIO\\MOB_03B.WAV",
- "AUDIO\\MOB_03C.WAV",
- "AUDIO\\MOB_03D.WAV",
- "AUDIO\\MOB_03E.WAV",
- "AUDIO\\SHARK_1.WAV",
- "AUDIO\\SHARK_2.WAV",
- "AUDIO\\SHARK_3.WAV",
- "AUDIO\\SHARK_4.WAV",
- "AUDIO\\SHARK_5.WAV",
- "AUDIO\\MOB_04A.WAV",
- "AUDIO\\MOB_04B.WAV",
- "AUDIO\\MOB_04C.WAV",
- "AUDIO\\MOB_04D.WAV",
- "AUDIO\\MOB_05A.WAV",
- "AUDIO\\MOB_05B.WAV",
- "AUDIO\\MOB_05C.WAV",
- "AUDIO\\MOB_05D.WAV",
- "AUDIO\\MOB_06A.WAV",
- "AUDIO\\MOB_06B.WAV",
- "AUDIO\\MOB_06C.WAV",
- "AUDIO\\MOB_07A.WAV",
- "AUDIO\\MOB_07B.WAV",
- "AUDIO\\MOB_08A.WAV",
- "AUDIO\\MOB_08B.WAV",
- "AUDIO\\MOB_08C.WAV",
- "AUDIO\\MOB_08D.WAV",
- "AUDIO\\MOB_08E.WAV",
- "AUDIO\\MOB_08F.WAV",
- "AUDIO\\MOB_08G.WAV",
- "AUDIO\\MOB_09A.WAV",
- "AUDIO\\MOB_09B.WAV",
- "AUDIO\\MOB_09C.WAV",
- "AUDIO\\MOB_09D.WAV",
- "AUDIO\\MOB_09E.WAV",
- "AUDIO\\MOB_09F.WAV",
- "AUDIO\\MOB_10A.WAV",
- "AUDIO\\MOB_10B.WAV",
- "AUDIO\\MOB_10C.WAV",
- "AUDIO\\MOB_10D.WAV",
- "AUDIO\\MOB_10E.WAV",
- "AUDIO\\MOB_11A.WAV",
- "AUDIO\\MOB_11B.WAV",
- "AUDIO\\MOB_11C.WAV",
- "AUDIO\\MOB_11D.WAV",
- "AUDIO\\MOB_11E.WAV",
- "AUDIO\\MOB_11F.WAV",
- "AUDIO\\MOB_14A.WAV",
- "AUDIO\\MOB_14B.WAV",
- "AUDIO\\MOB_14C.WAV",
- "AUDIO\\MOB_14D.WAV",
- "AUDIO\\MOB_14E.WAV",
- "AUDIO\\MOB_14F.WAV",
- "AUDIO\\MOB_14G.WAV",
- "AUDIO\\MOB_14H.WAV",
- "AUDIO\\MOB_16A.WAV",
- "AUDIO\\MOB_16B.WAV",
- "AUDIO\\MOB_16C.WAV",
- "AUDIO\\MOB_16D.WAV",
- "AUDIO\\MOB_16E.WAV",
- "AUDIO\\MOB_16F.WAV",
- "AUDIO\\MOB_16G.WAV",
- "AUDIO\\MOB_17A.WAV",
- "AUDIO\\MOB_17B.WAV",
- "AUDIO\\MOB_17C.WAV",
- "AUDIO\\MOB_17D.WAV",
- "AUDIO\\MOB_17E.WAV",
- "AUDIO\\MOB_17G.WAV",
- "AUDIO\\MOB_17H.WAV",
- "AUDIO\\MOB_17I.WAV",
- "AUDIO\\MOB_17J.WAV",
- "AUDIO\\MOB_17K.WAV",
- "AUDIO\\MOB_17L.WAV",
- "AUDIO\\MOB_18A.WAV",
- "AUDIO\\MOB_18B.WAV",
- "AUDIO\\MOB_18C.WAV",
- "AUDIO\\MOB_18D.WAV",
- "AUDIO\\MOB_18E.WAV",
- "AUDIO\\MOB_18F.WAV",
- "AUDIO\\MOB_18G.WAV",
- "AUDIO\\MOB_20A.WAV",
- "AUDIO\\MOB_20B.WAV",
- "AUDIO\\MOB_20C.WAV",
- "AUDIO\\MOB_20D.WAV",
- "AUDIO\\MOB_20E.WAV",
- "AUDIO\\MOB_24A.WAV",
- "AUDIO\\MOB_24B.WAV",
- "AUDIO\\MOB_24C.WAV",
- "AUDIO\\MOB_24D.WAV",
- "AUDIO\\MOB_24E.WAV",
- "AUDIO\\MOB_24F.WAV",
- "AUDIO\\MOB_24G.WAV",
- "AUDIO\\MOB_24H.WAV",
- "AUDIO\\MOB_25A.WAV",
- "AUDIO\\MOB_25B.WAV",
- "AUDIO\\MOB_25C.WAV",
- "AUDIO\\MOB_25D.WAV",
- "AUDIO\\MOB_26A.WAV",
- "AUDIO\\MOB_26B.WAV",
- "AUDIO\\MOB_26C.WAV",
- "AUDIO\\MOB_26D.WAV",
- "AUDIO\\MOB_26E.WAV",
- "AUDIO\\MOB_29A.WAV",
- "AUDIO\\MOB_29B.WAV",
- "AUDIO\\MOB_29C.WAV",
- "AUDIO\\MOB_29D.WAV",
- "AUDIO\\MOB_29E.WAV",
- "AUDIO\\MOB_29F.WAV",
- "AUDIO\\MOB_29G.WAV",
- "AUDIO\\MOB_30A.WAV",
- "AUDIO\\MOB_30B.WAV",
- "AUDIO\\MOB_30C.WAV",
- "AUDIO\\MOB_30D.WAV",
- "AUDIO\\MOB_30E.WAV",
- "AUDIO\\MOB_30F.WAV",
- "AUDIO\\MOB_33A.WAV",
- "AUDIO\\MOB_33B.WAV",
- "AUDIO\\MOB_33C.WAV",
- "AUDIO\\MOB_33D.WAV",
- "AUDIO\\MOB_34A.WAV",
- "AUDIO\\MOB_34B.WAV",
- "AUDIO\\MOB_34C.WAV",
- "AUDIO\\MOB_34D.WAV",
- "AUDIO\\MOB_35A.WAV",
- "AUDIO\\MOB_35B.WAV",
- "AUDIO\\MOB_35C.WAV",
- "AUDIO\\MOB_35D.WAV",
- "AUDIO\\MOB_36A.WAV",
- "AUDIO\\MOB_36B.WAV",
- "AUDIO\\MOB_36C.WAV",
- "AUDIO\\MOB_40A.WAV",
- "AUDIO\\MOB_40B.WAV",
- "AUDIO\\MOB_40C.WAV",
- "AUDIO\\MOB_40D.WAV",
- "AUDIO\\MOB_40E.WAV",
- "AUDIO\\MOB_40F.WAV",
- "AUDIO\\MOB_40G.WAV",
- "AUDIO\\MOB_40H.WAV",
- "AUDIO\\MOB_40I.WAV",
- "AUDIO\\MOB_41A.WAV",
- "AUDIO\\MOB_41B.WAV",
- "AUDIO\\MOB_41C.WAV",
- "AUDIO\\MOB_41D.WAV",
- "AUDIO\\MOB_41E.WAV",
- "AUDIO\\MOB_41F.WAV",
- "AUDIO\\MOB_41G.WAV",
- "AUDIO\\MOB_41H.WAV",
- "AUDIO\\MOB_42A.WAV",
- "AUDIO\\MOB_42B.WAV",
- "AUDIO\\MOB_42C.WAV",
- "AUDIO\\MOB_42D.WAV",
- "AUDIO\\MOB_42E.WAV",
- "AUDIO\\MOB_43A.WAV",
- "AUDIO\\MOB_43B.WAV",
- "AUDIO\\MOB_43C.WAV",
- "AUDIO\\MOB_43D.WAV",
- "AUDIO\\MOB_43E.WAV",
- "AUDIO\\MOB_43F.WAV",
- "AUDIO\\MOB_43G.WAV",
- "AUDIO\\MOB_43H.WAV",
- "AUDIO\\MOB_45A.WAV",
- "AUDIO\\MOB_45B.WAV",
- "AUDIO\\MOB_45C.WAV",
- "AUDIO\\MOB_45D.WAV",
- "AUDIO\\MOB_45E.WAV",
- "AUDIO\\MOB_45F.WAV",
- "AUDIO\\MOB_45G.WAV",
- "AUDIO\\MOB_45H.WAV",
- "AUDIO\\MOB_45I.WAV",
- "AUDIO\\MOB_45J.WAV",
- "AUDIO\\MOB_45K.WAV",
- "AUDIO\\MOB_45L.WAV",
- "AUDIO\\MOB_45M.WAV",
- "AUDIO\\MOB_45N.WAV",
- "AUDIO\\MOB_46A.WAV",
- "AUDIO\\MOB_46B.WAV",
- "AUDIO\\MOB_46C.WAV",
- "AUDIO\\MOB_46D.WAV",
- "AUDIO\\MOB_46E.WAV",
- "AUDIO\\MOB_46F.WAV",
- "AUDIO\\MOB_46G.WAV",
- "AUDIO\\MOB_46H.WAV",
- "AUDIO\\MOB_47A.WAV",
- "AUDIO\\MOB_52A.WAV",
- "AUDIO\\MOB_52B.WAV",
- "AUDIO\\MOB_52C.WAV",
- "AUDIO\\MOB_52D.WAV",
- "AUDIO\\MOB_52E.WAV",
- "AUDIO\\MOB_52F.WAV",
- "AUDIO\\MOB_52G.WAV",
- "AUDIO\\MOB_52H.WAV",
- "AUDIO\\MOB_54A.WAV",
- "AUDIO\\MOB_54B.WAV",
- "AUDIO\\MOB_54C.WAV",
- "AUDIO\\MOB_54D.WAV",
- "AUDIO\\MOB_54E.WAV",
- "AUDIO\\MOB_55A.WAV",
- "AUDIO\\MOB_55B.WAV",
- "AUDIO\\MOB_55C.WAV",
- "AUDIO\\MOB_55D.WAV",
- "AUDIO\\MOB_55E.WAV",
- "AUDIO\\MOB_55F.WAV",
- "AUDIO\\MOB_56A.WAV",
- "AUDIO\\MOB_56B.WAV",
- "AUDIO\\MOB_56C.WAV",
- "AUDIO\\MOB_56D.WAV",
- "AUDIO\\MOB_56E.WAV",
- "AUDIO\\MOB_56F.WAV",
- "AUDIO\\MOB_57A.WAV",
- "AUDIO\\MOB_57B.WAV",
- "AUDIO\\MOB_57C.WAV",
- "AUDIO\\MOB_57D.WAV",
- "AUDIO\\MOB_57E.WAV",
- "AUDIO\\MOB_58A.WAV",
- "AUDIO\\MOB_58B.WAV",
- "AUDIO\\MOB_58C.WAV",
- "AUDIO\\MOB_58D.WAV",
- "AUDIO\\MOB_58E.WAV",
- "AUDIO\\MOB_58F.WAV",
- "AUDIO\\MOB_58G.WAV",
- "AUDIO\\MOB_61A.WAV",
- "AUDIO\\MOB_61B.WAV",
- "AUDIO\\MOB_62A.WAV",
- "AUDIO\\MOB_62B.WAV",
- "AUDIO\\MOB_62C.WAV",
- "AUDIO\\MOB_62D.WAV",
- "AUDIO\\MOB_63A.WAV",
- "AUDIO\\MOB_63B.WAV",
- "AUDIO\\MOB_63C.WAV",
- "AUDIO\\MOB_63D.WAV",
- "AUDIO\\MOB_63E.WAV",
- "AUDIO\\MOB_63F.WAV",
- "AUDIO\\MOB_63G.WAV",
- "AUDIO\\MOB_63H.WAV",
- "AUDIO\\MOB_63I.WAV",
- "AUDIO\\MOB_63J.WAV",
- "AUDIO\\MOB_66A.WAV",
- "AUDIO\\MOB_66B.WAV",
- "AUDIO\\MOB_68A.WAV",
- "AUDIO\\MOB_68B.WAV",
- "AUDIO\\MOB_68C.WAV",
- "AUDIO\\MOB_68D.WAV",
- "AUDIO\\MOB_70A.WAV",
- "AUDIO\\MOB_70B.WAV",
- "AUDIO\\MOB_71A.WAV",
- "AUDIO\\MOB_71B.WAV",
- "AUDIO\\MOB_71C.WAV",
- "AUDIO\\MOB_71D.WAV",
- "AUDIO\\MOB_71E.WAV",
- "AUDIO\\MOB_71F.WAV",
- "AUDIO\\MOB_71G.WAV",
- "AUDIO\\MOB_71H.WAV",
- "AUDIO\\MOB_71I.WAV",
- "AUDIO\\MOB_71J.WAV",
- "AUDIO\\MOB_71K.WAV",
- "AUDIO\\MOB_71L.WAV",
- "AUDIO\\MOB_71M.WAV",
- "AUDIO\\MOB_71N.WAV",
- "AUDIO\\MOB_72A.WAV",
- "AUDIO\\MOB_72B.WAV",
- "AUDIO\\MOB_72C.WAV",
- "AUDIO\\MOB_72D.WAV",
- "AUDIO\\MOB_72E.WAV",
- "AUDIO\\MOB_72F.WAV",
- "AUDIO\\MOB_72G.WAV",
- "AUDIO\\MOB_73A.WAV",
- "AUDIO\\MOB_73C.WAV",
- "AUDIO\\MOB_73D.WAV",
- "AUDIO\\MOB_73F.WAV",
- "AUDIO\\MOB_73G.WAV",
- "AUDIO\\MOB_73I.WAV",
- "AUDIO\\MOB_95A.WAV",
- "AUDIO\\MOB_96A.WAV",
- "AUDIO\\MOB_98A.WAV",
- "AUDIO\\MOB_99A.WAV",
- "AUDIO\\JOB1_1B.WAV",
- "AUDIO\\JOB1_1C.WAV",
- "AUDIO\\JOB1_1D.WAV",
- "AUDIO\\JOB2_1B.WAV",
- "AUDIO\\JOB2_2.WAV",
- "AUDIO\\JOB2_3.WAV",
- "AUDIO\\JOB2_4.WAV",
- "AUDIO\\JOB2_5.WAV",
- "AUDIO\\JOB2_6.WAV",
- "AUDIO\\JOB2_7.WAV",
- "AUDIO\\JOB2_8.WAV",
- "AUDIO\\JOB2_9.WAV",
- "AUDIO\\JOB3_1.WAV",
- "AUDIO\\JOB3_2.WAV",
- "AUDIO\\JOB3_3.WAV",
- "AUDIO\\JOB4_1.WAV",
- "AUDIO\\JOB4_2.WAV",
- "AUDIO\\JOB4_3.WAV",
- "AUDIO\\JOB5_1.WAV",
- "AUDIO\\JOB5_2.WAV",
- "AUDIO\\JOB5_3.WAV",
- "AUDIO\\BJM1_20.WAV",
- "AUDIO\\BJM1_4.WAV",
- "AUDIO\\BJM1_5.WAV",
- "AUDIO\\MERC_39.WAV",
- "AUDIO\\MONO_1.WAV",
- "AUDIO\\MONO_2.WAV",
- "AUDIO\\MONO_3.WAV",
- "AUDIO\\MONO_4.WAV",
- "AUDIO\\MONO_5.WAV",
- "AUDIO\\MONO_6.WAV",
- "AUDIO\\MONO_7.WAV",
- "AUDIO\\MONO_8.WAV",
- "AUDIO\\MONO_9.WAV",
- "AUDIO\\MONO10.WAV",
- "AUDIO\\MONO11.WAV",
- "AUDIO\\MONO12.WAV",
- "AUDIO\\MONO13.WAV",
- "AUDIO\\MONO14.WAV",
- "AUDIO\\MONO15.WAV",
- "AUDIO\\MONO16.WAV",
- "AUDIO\\FUD_01.WAV",
- "AUDIO\\FUD_02.WAV",
- "AUDIO\\FUD_03.WAV",
- "AUDIO\\FUD_04.WAV",
- "AUDIO\\FUD_05.WAV",
- "AUDIO\\FUD_06.WAV",
- "AUDIO\\FUD_07.WAV",
- "AUDIO\\FUD_08.WAV",
- "AUDIO\\FUD_09.WAV",
- "AUDIO\\FUD_10.WAV",
- "AUDIO\\FUD_11.WAV",
- "AUDIO\\FUD_12.WAV",
- "AUDIO\\FUD_13.WAV",
- "AUDIO\\FUD_14.WAV",
- "AUDIO\\FUD_15.WAV",
- "AUDIO\\FUD_16.WAV",
- "AUDIO\\FUD_17.WAV",
- "AUDIO\\FUD_18.WAV",
- "AUDIO\\FUD_19.WAV",
- "AUDIO\\FUD_20.WAV",
- "AUDIO\\BURG_01.WAV",
- "AUDIO\\BURG_02.WAV",
- "AUDIO\\BURG_03.WAV",
- "AUDIO\\BURG_04.WAV",
- "AUDIO\\BURG_05.WAV",
- "AUDIO\\BURG_06.WAV",
- "AUDIO\\BURG_07.WAV",
- "AUDIO\\BURG_08.WAV",
- "AUDIO\\BURG_09.WAV",
- "AUDIO\\BURG_10.WAV",
- "AUDIO\\BURG_11.WAV",
- "AUDIO\\BURG_12.WAV",
- "AUDIO\\CRUST01.WAV",
- "AUDIO\\CRUST02.WAV",
- "AUDIO\\CRUST03.WAV",
- "AUDIO\\CRUST04.WAV",
- "AUDIO\\CRUST05.WAV",
- "AUDIO\\CRUST06.WAV",
- "AUDIO\\CRUST07.WAV",
- "AUDIO\\CRUST08.WAV",
- "AUDIO\\CRUST09.WAV",
- "AUDIO\\BAND_01.WAV",
- "AUDIO\\BAND_02.WAV",
- "AUDIO\\BAND_03.WAV",
- "AUDIO\\BAND_04.WAV",
- "AUDIO\\BAND_05.WAV",
- "AUDIO\\BAND_06.WAV",
- "AUDIO\\BAND_07.WAV",
- "AUDIO\\BAND_08.WAV",
- "AUDIO\\SHAFT01.WAV",
- "AUDIO\\SHAFT02.WAV",
- "AUDIO\\SHAFT03.WAV",
- "AUDIO\\SHAFT04.WAV",
- "AUDIO\\SHAFT05.WAV",
- "AUDIO\\SHAFT06.WAV",
- "AUDIO\\SHAFT07.WAV",
- "AUDIO\\SHAFT08.WAV",
- "AUDIO\\PISS_01.WAV",
- "AUDIO\\PISS_02.WAV",
- "AUDIO\\PISS_03.WAV",
- "AUDIO\\PISS_04.WAV",
- "AUDIO\\PISS_05.WAV",
- "AUDIO\\PISS_06.WAV",
- "AUDIO\\PISS_07.WAV",
- "AUDIO\\PISS_08.WAV",
- "AUDIO\\PISS_09.WAV",
- "AUDIO\\PISS_10.WAV",
- "AUDIO\\PISS_11.WAV",
- "AUDIO\\PISS_12.WAV",
- "AUDIO\\PISS_13.WAV",
- "AUDIO\\PISS_14.WAV",
- "AUDIO\\PISS_15.WAV",
- "AUDIO\\PISS_16.WAV",
- "AUDIO\\PISS_17.WAV",
- "AUDIO\\PISS_18.WAV",
- "AUDIO\\PISS_19.WAV",
- "AUDIO\\GIMME01.WAV",
- "AUDIO\\GIMME02.WAV",
- "AUDIO\\GIMME03.WAV",
- "AUDIO\\GIMME04.WAV",
- "AUDIO\\GIMME05.WAV",
- "AUDIO\\GIMME06.WAV",
- "AUDIO\\GIMME07.WAV",
- "AUDIO\\GIMME08.WAV",
- "AUDIO\\GIMME09.WAV",
- "AUDIO\\GIMME10.WAV",
- "AUDIO\\GIMME11.WAV",
- "AUDIO\\GIMME12.WAV",
- "AUDIO\\GIMME13.WAV",
- "AUDIO\\GIMME14.WAV",
- "AUDIO\\GIMME15.WAV",
- "AUDIO\\BUST_01.WAV",
- "AUDIO\\BUST_02.WAV",
- "AUDIO\\BUST_03.WAV",
- "AUDIO\\BUST_04.WAV",
- "AUDIO\\BUST_05.WAV",
- "AUDIO\\BUST_06.WAV",
- "AUDIO\\BUST_07.WAV",
- "AUDIO\\BUST_08.WAV",
- "AUDIO\\BUST_09.WAV",
- "AUDIO\\BUST_10.WAV",
- "AUDIO\\BUST_11.WAV",
- "AUDIO\\BUST_12.WAV",
- "AUDIO\\BUST_13.WAV",
- "AUDIO\\BUST_14.WAV",
- "AUDIO\\BUST_15.WAV",
- "AUDIO\\BUST_16.WAV",
- "AUDIO\\BUST_17.WAV",
- "AUDIO\\BUST_18.WAV",
- "AUDIO\\BUST_19.WAV",
- "AUDIO\\BUST_20.WAV",
- "AUDIO\\BUST_21.WAV",
- "AUDIO\\BUST_22.WAV",
- "AUDIO\\BUST_23.WAV",
- "AUDIO\\BUST_24.WAV",
- "AUDIO\\BUST_25.WAV",
- "AUDIO\\BUST_26.WAV",
- "AUDIO\\BUST_27.WAV",
- "AUDIO\\BUST_28.WAV",
+static char StreamedNameTable[][40] = {
+ "AUDIO\\MUSIC\\HEAD",
+ "AUDIO\\MUSIC\\DOUBLE",
+ "AUDIO\\MUSIC\\KJAH",
+ "AUDIO\\MUSIC\\RISE",
+ "AUDIO\\MUSIC\\LIPS",
+ "AUDIO\\MUSIC\\MUNDO",
+ "AUDIO\\MUSIC\\MSX",
+ "AUDIO\\MUSIC\\FLASH",
+ "AUDIO\\MUSIC\\LCJ",
+ "AUDIO\\MUSIC\\LCFR",
+ "AUDIO\\MUSIC\\MISCOM2",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\WATER",
+ "AUDIO\\MUSIC\\SAWMILL",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\WATER",
+ "AUDIO\\MUSIC\\WATER",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\POLICE",
+ "AUDIO\\MUSIC\\TAXI",
+ "AUDIO\\NEWS\\NEWS_A",
+ "AUDIO\\NEWS\\NEWS_B",
+ "AUDIO\\NEWS\\NEWS_C",
+ "AUDIO\\NEWS\\NEWS_D",
+ "AUDIO\\NEWS\\NEWS_E",
+ "AUDIO\\NEWS\\NEWS_F",
+ "AUDIO\\NEWS\\NEWS_G",
+ "AUDIO\\NEWS\\NEWS_H",
+ "AUDIO\\NEWS\\NEWS_I",
+ "AUDIO\\NEWS\\NEWS_J",
+ "AUDIO\\NEWS\\NEWS_K",
+ "AUDIO\\NEWS\\NEWS_L",
+ "AUDIO\\NEWS\\NEWS_M",
+ "AUDIO\\NEWS\\NEWS_N",
+ "AUDIO\\CUTSCENE\\BIKER",
+ "AUDIO\\CUTSCENE\\BONEVOY",
+ "AUDIO\\CUTSCENE\\CAMPAIN",
+ "AUDIO\\CUTSCENE\\CASHCHP",
+ "AUDIO\\CUTSCENE\\CONTBAN",
+ "AUDIO\\CUTSCENE\\CRAZY69",
+ "AUDIO\\CUTSCENE\\CRAZY69",
+ "AUDIO\\CUTSCENE\\DEADLY",
+ "AUDIO\\CUTSCENE\\DONPROB",
+ "AUDIO\\CUTSCENE\\DRIVNMR",
+ "AUDIO\\CUTSCENE\\ELECTON",
+ "AUDIO\\CUTSCENE\\FINAL",
+ "AUDIO\\CUTSCENE\\FINAL_2",
+ "AUDIO\\CUTSCENE\\HOMSWET",
+ "AUDIO\\CUTSCENE\\HOTWHEL",
+ "AUDIO\\CUTSCENE\\KIDNAPP",
+ "AUDIO\\CUTSCENE\\LANDGRB",
+ "AUDIO\\CUTSCENE\\MORGUE",
+ "AUDIO\\CUTSCENE\\OVERDOS",
+ "AUDIO\\CUTSCENE\\RUFJUST",
+ "AUDIO\\CUTSCENE\\SAYONAR",
+ "AUDIO\\CUTSCENE\\SICILAN",
+ "AUDIO\\CUTSCENE\\THEOFER",
+ "AUDIO\\CUTSCENE\\INTRO",
+ "AUDIO\\MUSIC\\FINALE",
+ "AUDIO\\MUSIC\\MISCOM2"
}; \ No newline at end of file
diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp
index 9f8e8a9c..2f4cb227 100644
--- a/src/audio/sampman_miles.cpp
+++ b/src/audio/sampman_miles.cpp
@@ -39,10 +39,11 @@ int32 nPedSlotSfx [MAX_PEDSFX];
int32 nPedSlotSfxAddr[MAX_PEDSFX];
uint8 nCurrentPedSlot;
-#ifdef FIX_BUGS
+uint32 nMissionSlotSfx[MISSION_AUDIO_SLOTS] = { UINT32_MAX, UINT32_MAX };
+uintptr nMissionSlotSfxStartAddress;
+
uint32 gPlayerTalkSfx = UINT32_MAX;
void *gPlayerTalkData = 0;
-#endif
uint8 nChannelVolume[MAXCHANNELS+MAX2DCHANNELS];
@@ -332,6 +333,80 @@ cSampleManager::~cSampleManager(void)
}
+int gBankStartOffset[67];
+
+void
+SetUpDebugBanksInfo()
+{
+ gBankStartOffset[3] = SFX_FE_BACK;
+ gBankStartOffset[4] = SFX_CAR_ACCEL_1;
+ gBankStartOffset[5] = SFX_CAR_ACCEL_2;
+ gBankStartOffset[9] = SFX_CAR_ACCEL_6;
+ gBankStartOffset[10] = SFX_CAR_ACCEL_7;
+ gBankStartOffset[1] = SFX_EMPTY;
+ gBankStartOffset[11] = SFX_CAR_ACCEL_8;
+ gBankStartOffset[7] = SFX_CAR_ACCEL_4;
+ gBankStartOffset[15] = SFX_CAR_ACCEL_12;
+ gBankStartOffset[13] = SFX_CAR_ACCEL_10;
+ gBankStartOffset[16] = SFX_CAR_CHAINSAW_IDLE;
+ gBankStartOffset[0] = SFX_AIR_BRAKES;
+ gBankStartOffset[17] = SFX_RC_IDLE;
+ gBankStartOffset[6] = SFX_CAR_ACCEL_3;
+ gBankStartOffset[19] = SFX_CAR_ACCEL_16;
+ gBankStartOffset[12] = SFX_CAR_ACCEL_9;
+ gBankStartOffset[2] = SFX_AMBULAN_VOICE_1_VAN_1;
+ gBankStartOffset[21] = SFX_CAR_ACCEL_18;
+ gBankStartOffset[22] = SFX_CAR_ACCEL_19;
+ gBankStartOffset[8] = SFX_CAR_ACCEL_5;
+ gBankStartOffset[23] = SFX_CAR_ACCEL_20;
+ gBankStartOffset[14] = SFX_CAR_ACCEL_11;
+ gBankStartOffset[20] = SFX_CAR_ACCEL_17;
+ gBankStartOffset[18] = SFX_CAR_RC_HELI;
+ gBankStartOffset[25] = SFX_CAR_AFTER_ACCEL_21;
+ gBankStartOffset[26] = SFX_CAR_FINGER_OFF_ACCEL_21;
+ gBankStartOffset[27] = SFX_CAR_ACCEL_22;
+ gBankStartOffset[28] = SFX_CAR_AFTER_ACCEL_22;
+ gBankStartOffset[29] = SFX_CAR_FINGER_OFF_ACCEL_22;
+ gBankStartOffset[24] = SFX_CAR_ACCEL_21;
+ gBankStartOffset[30] = SFX_HELI_APACHE_1;
+ gBankStartOffset[31] = SFX_HELI_UNUSED_1;
+ gBankStartOffset[32] = SFX_HELI_UNUSED_2;
+ gBankStartOffset[33] = SFX_HELI_UNUSED_3;
+ gBankStartOffset[34] = SFX_HELI_UNUSED_4;
+ gBankStartOffset[35] = SFX_SEAPLANE_LOW;
+ gBankStartOffset[37] = SFX_PLANE_UNUSED_2;
+ gBankStartOffset[38] = SFX_PLANE_UNUSED_3;
+ gBankStartOffset[39] = SFX_PLANE_UNUSED_4;
+ gBankStartOffset[40] = SFX_BUILDINGS_BANK_ALARM;
+ gBankStartOffset[41] = SFX_BUILDING_SNORE;
+ gBankStartOffset[36] = SFX_PLANE_UNUSED_1;
+ gBankStartOffset[43] = SFX_BUILDING_BAR_2;
+ gBankStartOffset[44] = SFX_BUILDING_BAR_3;
+ gBankStartOffset[45] = SFX_BUILDING_BAR_4;
+ gBankStartOffset[46] = SFX_BUILDING_MALIBU_1;
+ gBankStartOffset[47] = SFX_BUILDING_MALIBU_2;
+ gBankStartOffset[42] = SFX_BUILDING_BAR_1;
+ gBankStartOffset[49] = SFX_BUILDING_STRIP_1;
+ gBankStartOffset[50] = SFX_BUILDING_STRIP_2;
+ gBankStartOffset[51] = SFX_BUILDING_STRIP_3;
+ gBankStartOffset[52] = SFX_BUILDING_CHURCH;
+ gBankStartOffset[53] = SFX_BUILDING_FAN_1;
+ gBankStartOffset[48] = SFX_BUILDING_MALIBU_3;
+ gBankStartOffset[55] = SFX_BUILDING_INSECTS_1;
+ gBankStartOffset[56] = SFX_BUILDING_INSECTS_2;
+ gBankStartOffset[54] = SFX_BUILDING_FAN_2;
+ gBankStartOffset[57] = SFX_CLUB_1;
+ gBankStartOffset[58] = SFX_CLUB_2;
+ gBankStartOffset[59] = SFX_CLUB_3;
+ gBankStartOffset[60] = SFX_CLUB_4;
+ gBankStartOffset[61] = SFX_FOOTSTEP_GRASS_1;
+ gBankStartOffset[62] = SFX_FOOTSTEP_GRAVEL_1;
+ gBankStartOffset[63] = SFX_FOOTSTEP_WOOD_1;
+ gBankStartOffset[64] = SFX_FOOTSTEP_METAL_1;
+ gBankStartOffset[65] = SFX_FOOTSTEP_WATER_1;
+ gBankStartOffset[66] = SFX_FOOTSTEP_SAND_1;
+}
+
#ifdef EXTERNAL_3D_SOUND
void
cSampleManager::SetSpeakerConfig(int32 which)
@@ -1041,20 +1116,20 @@ cSampleManager::Initialise(void)
if ( GetDriveType(m_szCDRomRootPath) == DRIVE_CDROM )
{
- FILE *f;
-#ifdef PS2_AUDIO_PATHS
strcpy(filepath, m_szCDRomRootPath);
- strcat(filepath, PS2StreamedNameTable[0]);
- f = fopen(filepath, "rb");
-
+ strcat(filepath, StreamedNameTable[0]);
+ strcat(filepath, ".VB");
+
+ FILE *f = fopen(filepath, "rb");
+
if ( !f )
-#endif
{
strcpy(filepath, m_szCDRomRootPath);
strcat(filepath, StreamedNameTable[0]);
-
+ strcat(filepath, ".MP3");
f = fopen(filepath, "rb");
}
+
if ( f )
{
fclose(f);
@@ -1082,26 +1157,16 @@ cSampleManager::Initialise(void)
m_szCDRomRootPath[0] = '\0';
strcpy(m_WavFilesPath, m_szCDRomRootPath);
-
+ /*
#ifdef AUDIO_CACHE
if ( CreateCache )
#endif
for ( int32 i = STREAMED_SOUND_MISSION_MOBR1; i < TOTAL_STREAMED_SOUNDS; i++ )
{
-#ifdef PS2_AUDIO_PATHS
strcpy(filepath, m_szCDRomRootPath);
- strcat(filepath, PS2StreamedNameTable[i]);
-
+ strcat(filepath, StreamedNameTable[i]);
+
mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
-
- if ( !mp3Stream[0] )
-#endif
- {
- strcpy(filepath, m_szCDRomRootPath);
- strcat(filepath, StreamedNameTable[i]);
-
- mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
- }
if ( mp3Stream[0] )
{
@@ -1119,7 +1184,7 @@ cSampleManager::Initialise(void)
return FALSE;
}
}
-
+ */
// Find path of MP3s (originally in CD-Rom)
// if NO_CDCHECK is NOT defined but AUDIO_CACHE is defined, we still need to find MP3s' path, but will exit after the first file
#ifndef NO_CDCHECK
@@ -1137,20 +1202,18 @@ cSampleManager::Initialise(void)
{
#endif
- for (int32 i = 0; i < STREAMED_SOUND_MISSION_MOBR1; i++)
+ for (int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++)
{
-#ifdef PS2_AUDIO_PATHS
strcpy(filepath, m_MP3FilesPath);
- strcat(filepath, PS2StreamedNameTable[i]);
+ strcat(filepath, StreamedNameTable[i]);
+ strcat(filepath, ".VB");
mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
-
- if ( !mp3Stream[0] )
-#endif
+ if (!mp3Stream[0])
{
strcpy(filepath, m_MP3FilesPath);
strcat(filepath, StreamedNameTable[i]);
-
+ strcat(filepath, ".MP3");
mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
}
@@ -1188,26 +1251,16 @@ cSampleManager::Initialise(void)
#endif
if ( !bFileNotFound ) {
-
+/*
#ifdef AUDIO_CACHE
if ( CreateCache )
#endif
for ( int32 i = STREAMED_SOUND_MISSION_COMPLETED4; i < STREAMED_SOUND_MISSION_PAGER; i++ )
{
-#ifdef PS2_AUDIO_PATHS
strcpy(filepath, m_MiscomPath);
- strcat(filepath, PS2StreamedNameTable[i]);
-
- mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
-
- if ( !mp3Stream[0] )
-#endif
- {
- strcpy(filepath, m_MiscomPath);
- strcat(filepath, StreamedNameTable[i]);
+ strcat(filepath, StreamedNameTable[i]);
- mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
- }
+ mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
if ( mp3Stream[0] )
{
@@ -1224,7 +1277,7 @@ cSampleManager::Initialise(void)
bFileNotFound = TRUE;
break;
}
- }
+ }*/
}
m_bInitialised = !bFileNotFound;
@@ -1271,7 +1324,13 @@ cSampleManager::Initialise(void)
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX);
-#ifdef FIX_BUGS
+ nMissionSlotSfxStartAddress = (uintptr)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX);
+ if ( !nMissionSlotSfxStartAddress )
+ {
+ Terminate();
+ return FALSE;
+ }
+
// Find biggest player comment
uint32 nMaxPedSize = 0;
for (uint32 i = PLAYER_COMMENTS_START; i <= PLAYER_COMMENTS_END; i++)
@@ -1283,7 +1342,6 @@ cSampleManager::Initialise(void)
Terminate();
return FALSE;
}
-#endif
LoadSampleBank(SFX_BANK_0);
@@ -1439,13 +1497,20 @@ cSampleManager::Terminate(void)
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0;
}
-#ifdef FIX_BUGS
+ if ( nMissionSlotSfxStartAddress != 0 )
+ {
+ AIL_mem_free_lock((void *)nMissionSlotSfxStartAddress);
+ nMissionSlotSfxStartAddress = 0;
+
+ for ( uint32 i = 0; i < MISSION_AUDIO_SLOTS; i++ )
+ nMissionSlotSfx[i] = UINT32_MAX;
+ }
+
if ( gPlayerTalkData != 0)
{
AIL_mem_free_lock(gPlayerTalkData);
gPlayerTalkData = 0;
}
-#endif
if ( DIG )
{
@@ -1463,7 +1528,6 @@ cSampleManager::CheckForAnAudioFileOnCD(void)
{
#if !defined(NO_CDCHECK) // TODO: check steam, probably GTAVC_STEAM_PATCH needs to be added
char filepath[MAX_PATH];
- FILE *f;
strcpy(filepath, m_MiscomPath);
strcat(filepath, StreamedNameTable[STREAMED_SOUND_MISSION_COMPLETED4]);
@@ -1612,32 +1676,50 @@ cSampleManager::IsSampleBankLoaded(uint8 nBank)
return gBankLoaded[nBank];
}
-#ifdef FIX_BUGS
uint8
cSampleManager::IsMissionAudioLoaded(uint8 nSlot, uint32 nSample)
{
- ASSERT(nSlot == MISSION_AUDIO_PLAYER_COMMENT); // only MISSION_AUDIO_PLAYER_COMMENT is supported on PC
+ ASSERT(nSlot != MISSION_AUDIO_POLRADIO_CRIME_OR_COLOR && nSlot != MISSION_AUDIO_POLRADIO_AREA_OR_CAR); // these are not used in LCS
- return nSample == gPlayerTalkSfx ? LOADING_STATUS_LOADED : LOADING_STATUS_NOT_LOADED;
+ switch (nSlot)
+ {
+ case MISSION_AUDIO_SLOT_1:
+ case MISSION_AUDIO_SLOT_2:
+ return nMissionSlotSfx[nSlot] == nSample ? LOADING_STATUS_LOADED : LOADING_STATUS_NOT_LOADED;
+ case MISSION_AUDIO_PLAYER_COMMENT:
+ return nSample == gPlayerTalkSfx ? LOADING_STATUS_LOADED : LOADING_STATUS_NOT_LOADED;
+ }
+ return FALSE;
}
bool8
cSampleManager::LoadMissionAudio(uint8 nSlot, uint32 nSample)
{
- ASSERT(nSlot == MISSION_AUDIO_PLAYER_COMMENT); // only MISSION_AUDIO_PLAYER_COMMENT is supported on PC
+ ASSERT(nSlot != MISSION_AUDIO_POLRADIO_CRIME_OR_COLOR && nSlot != MISSION_AUDIO_POLRADIO_AREA_OR_CAR); // these are not used in LCS
ASSERT(nSample < TOTAL_AUDIO_SAMPLES);
if (fseek(fpSampleDataHandle, m_aSamples[nSample].nOffset, SEEK_SET) != 0)
return FALSE;
- if (fread(gPlayerTalkData, 1, m_aSamples[nSample].nSize, fpSampleDataHandle) != m_aSamples[nSample].nSize)
- return FALSE;
+ switch (nSlot)
+ {
+ case MISSION_AUDIO_SLOT_1:
+ case MISSION_AUDIO_SLOT_2:
+ if (fread((void*)(nMissionSlotSfxStartAddress + nSlot*MISSION_AUDIO_BLOCKSIZE), 1, m_aSamples[nSample].nSize, fpSampleDataHandle) != m_aSamples[nSample].nSize)
+ return FALSE;
- gPlayerTalkSfx = nSample;
+ nMissionSlotSfx[nSlot] = nSample;
+ break;
+ case MISSION_AUDIO_PLAYER_COMMENT:
+ if (fread(gPlayerTalkData, 1, m_aSamples[nSample].nSize, fpSampleDataHandle) != m_aSamples[nSample].nSize)
+ return FALSE;
+
+ gPlayerTalkSfx = nSample;
+ break;
+ }
return TRUE;
}
-#endif
uint8
cSampleManager::IsPedCommentLoaded(uint32 nComment)
@@ -1815,6 +1897,8 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -1846,6 +1930,8 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -1862,7 +1948,6 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset;
}
-#ifdef FIX_BUGS
else if ( nSfx >= PLAYER_COMMENTS_START && nSfx <= PLAYER_COMMENTS_END )
{
if ( !IsMissionAudioLoaded(MISSION_AUDIO_PLAYER_COMMENT, nSfx) )
@@ -1870,9 +1955,15 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
addr = (uintptr)gPlayerTalkData;
}
-#endif
else
- {
+ {
+ for ( uint32 i = 0; i < MISSION_AUDIO_SLOTS; i++ ) {
+ if ( IsMissionAudioLoaded(i, nSfx) ) {
+ addr = nMissionSlotSfxStartAddress + i * MISSION_AUDIO_BLOCKSIZE;
+ goto MissionAudioFound;
+ }
+ }
+
int32 i;
for ( i = 0; i < _TODOCONST(3); i++ )
{
@@ -1892,6 +1983,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
return FALSE;
}
+MissionAudioFound:
#ifdef EXTERNAL_3D_SOUND
if ( b2d )
{
@@ -1974,6 +2066,8 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
#endif
nChannelVolume[nChannel] = vol;
@@ -2005,6 +2099,8 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
#endif
#if !defined(FIX_BUGS) && defined(EXTERNAL_3D_SOUND)
@@ -2030,6 +2126,8 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -2060,6 +2158,8 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -2090,6 +2190,8 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -2120,6 +2222,8 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -2155,6 +2259,8 @@ cSampleManager::StartChannel(uint32 nChannel)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -2185,6 +2291,8 @@ cSampleManager::StopChannel(uint32 nChannel)
switch ( nChannel )
{
case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
b2d = TRUE;
break;
@@ -2223,18 +2331,18 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
}
char filepath[MAX_PATH];
-#ifdef PS2_AUDIO_PATHS
- strcpy(filepath, nFile < STREAMED_SOUND_MISSION_COMPLETED4 ? m_MP3FilesPath : (nFile < STREAMED_SOUND_MISSION_MOBR1 ? m_MiscomPath : m_WavFilesPath));
- strcat(filepath, PS2StreamedNameTable[nFile]);
-
+
+ strcpy(filepath, m_MP3FilesPath);
+ strcat(filepath, StreamedNameTable[nFile]);
+ strcat(filepath, ".VB");
+
mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0);
- if ( !mp3Stream[nStream] )
-#endif
+ if(!mp3Stream[nStream])
{
- strcpy(filepath, nFile < STREAMED_SOUND_MISSION_COMPLETED4 ? m_MP3FilesPath : (nFile < STREAMED_SOUND_MISSION_MOBR1 ? m_MiscomPath : m_WavFilesPath));
+ strcpy(filepath, m_MP3FilesPath);
strcat(filepath, StreamedNameTable[nFile]);
-
+ strcat(filepath, ".MP3");
mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0);
}
@@ -2298,19 +2406,18 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
// Try to continue from previous song, if already started
if(!_GetMP3PosFromStreamPos(&position, &e) && !e) {
nFile = 0;
-#ifdef PS2_AUDIO_PATHS
strcpy(filename, m_MiscomPath);
- strcat(filename, PS2StreamedNameTable[nFile]);
-
- mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".VB");
+ mp3Stream[nStream] =
+ AIL_open_stream(DIG, filename, 0);
- if ( !mp3Stream[nStream] )
-#endif
+ if(!mp3Stream[nStream])
{
- strcpy(filename, m_MiscomPath);
+ strcpy(filename, m_MP3FilesPath);
strcat(filename, StreamedNameTable[nFile]);
- mp3Stream[nStream] =
- AIL_open_stream(DIG, filename, 0);
+ strcat(filename, ".MP3");
+ mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
}
if(mp3Stream[nStream]) {
AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
@@ -2355,19 +2462,18 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
{
nFile = 0;
_bIsMp3Active = FALSE;
-#ifdef PS2_AUDIO_PATHS
strcpy(filename, m_MiscomPath);
- strcat(filename, PS2StreamedNameTable[nFile]);
-
- mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".VB");
- if ( !mp3Stream[nStream] )
-#endif
+ mp3Stream[nStream] =
+ AIL_open_stream(DIG, filename, 0);
+ if(!mp3Stream[nStream])
{
strcpy(filename, m_MiscomPath);
strcat(filename, StreamedNameTable[nFile]);
- mp3Stream[nStream] =
- AIL_open_stream(DIG, filename, 0);
+ strcat(filename, ".MP3");
+ mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
}
if(mp3Stream[nStream]) {
AIL_set_stream_loop_count(
@@ -2409,20 +2515,18 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
position = 0;
nFile = 0;
}
-#ifdef PS2_AUDIO_PATHS
strcpy(filename, m_MiscomPath);
- strcat(filename, PS2StreamedNameTable[nFile]);
-
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".VB");
+
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
-
- if ( !mp3Stream[nStream] )
-#endif
+ if( !mp3Stream[nStream] )
{
strcpy(filename, m_MiscomPath);
strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".MP3");
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
}
-
if ( mp3Stream[nStream] )
{
AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
@@ -2546,6 +2650,8 @@ cSampleManager::IsStreamPlaying(uint8 nStream)
bool8
cSampleManager::InitialiseSampleBanks(void)
{
+ SetUpDebugBanksInfo();
+
int32 nBank = SFX_BANK_0;
fpSampleDescHandle = fopen(SampleBankDescFilename, "rb");
@@ -2569,7 +2675,7 @@ cSampleManager::InitialiseSampleBanks(void)
fclose(fpSampleDescHandle);
fpSampleDescHandle = NULL;
-
+
for ( uint32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ )
{
#ifdef FIX_BUGS
diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp
index 9cf30832..046cbb0c 100644
--- a/src/audio/sampman_oal.cpp
+++ b/src/audio/sampman_oal.cpp
@@ -102,10 +102,11 @@ int32 nPedSlotSfx [MAX_PEDSFX];
int32 nPedSlotSfxAddr[MAX_PEDSFX];
uint8 nCurrentPedSlot;
-#ifdef FIX_BUGS
+uint32 nMissionSlotSfx[MISSION_AUDIO_SLOTS] = { UINT32_MAX, UINT32_MAX };
+uintptr nMissionSlotSfxStartAddress;
+
uint32 gPlayerTalkSfx = UINT32_MAX;
void *gPlayerTalkData = 0;
-#endif
CChannel aChannel[NUM_CHANNELS];
uint8 nChannelVolume[NUM_CHANNELS];
@@ -306,7 +307,7 @@ set_new_provider(int index)
static bool8
IsThisTrackAt16KHz(uint32 track)
{
- return track == STREAMED_SOUND_RADIO_KCHAT || track == STREAMED_SOUND_RADIO_VCPR || track == STREAMED_SOUND_RADIO_POLICE;
+ return false;// track == STREAMED_SOUND_RADIO_KCHAT || track == STREAMED_SOUND_RADIO_VCPR || track == STREAMED_SOUND_RADIO_POLICE;
}
cSampleManager::cSampleManager(void)
@@ -319,6 +320,80 @@ cSampleManager::~cSampleManager(void)
}
+int gBankStartOffset[67];
+
+void
+SetUpDebugBanksInfo()
+{
+ gBankStartOffset[3] = SFX_FE_BACK;
+ gBankStartOffset[4] = SFX_CAR_ACCEL_1;
+ gBankStartOffset[5] = SFX_CAR_ACCEL_2;
+ gBankStartOffset[9] = SFX_CAR_ACCEL_6;
+ gBankStartOffset[10] = SFX_CAR_ACCEL_7;
+ gBankStartOffset[1] = SFX_EMPTY;
+ gBankStartOffset[11] = SFX_CAR_ACCEL_8;
+ gBankStartOffset[7] = SFX_CAR_ACCEL_4;
+ gBankStartOffset[15] = SFX_CAR_ACCEL_12;
+ gBankStartOffset[13] = SFX_CAR_ACCEL_10;
+ gBankStartOffset[16] = SFX_CAR_CHAINSAW_IDLE;
+ gBankStartOffset[0] = SFX_AIR_BRAKES;
+ gBankStartOffset[17] = SFX_RC_IDLE;
+ gBankStartOffset[6] = SFX_CAR_ACCEL_3;
+ gBankStartOffset[19] = SFX_CAR_ACCEL_16;
+ gBankStartOffset[12] = SFX_CAR_ACCEL_9;
+ gBankStartOffset[2] = SFX_AMBULAN_VOICE_1_VAN_1;
+ gBankStartOffset[21] = SFX_CAR_ACCEL_18;
+ gBankStartOffset[22] = SFX_CAR_ACCEL_19;
+ gBankStartOffset[8] = SFX_CAR_ACCEL_5;
+ gBankStartOffset[23] = SFX_CAR_ACCEL_20;
+ gBankStartOffset[14] = SFX_CAR_ACCEL_11;
+ gBankStartOffset[20] = SFX_CAR_ACCEL_17;
+ gBankStartOffset[18] = SFX_CAR_RC_HELI;
+ gBankStartOffset[25] = SFX_CAR_AFTER_ACCEL_21;
+ gBankStartOffset[26] = SFX_CAR_FINGER_OFF_ACCEL_21;
+ gBankStartOffset[27] = SFX_CAR_ACCEL_22;
+ gBankStartOffset[28] = SFX_CAR_AFTER_ACCEL_22;
+ gBankStartOffset[29] = SFX_CAR_FINGER_OFF_ACCEL_22;
+ gBankStartOffset[24] = SFX_CAR_ACCEL_21;
+ gBankStartOffset[30] = SFX_HELI_APACHE_1;
+ gBankStartOffset[31] = SFX_HELI_UNUSED_1;
+ gBankStartOffset[32] = SFX_HELI_UNUSED_2;
+ gBankStartOffset[33] = SFX_HELI_UNUSED_3;
+ gBankStartOffset[34] = SFX_HELI_UNUSED_4;
+ gBankStartOffset[35] = SFX_SEAPLANE_LOW;
+ gBankStartOffset[37] = SFX_PLANE_UNUSED_2;
+ gBankStartOffset[38] = SFX_PLANE_UNUSED_3;
+ gBankStartOffset[39] = SFX_PLANE_UNUSED_4;
+ gBankStartOffset[40] = SFX_BUILDINGS_BANK_ALARM;
+ gBankStartOffset[41] = SFX_BUILDING_SNORE;
+ gBankStartOffset[36] = SFX_PLANE_UNUSED_1;
+ gBankStartOffset[43] = SFX_BUILDING_BAR_2;
+ gBankStartOffset[44] = SFX_BUILDING_BAR_3;
+ gBankStartOffset[45] = SFX_BUILDING_BAR_4;
+ gBankStartOffset[46] = SFX_BUILDING_MALIBU_1;
+ gBankStartOffset[47] = SFX_BUILDING_MALIBU_2;
+ gBankStartOffset[42] = SFX_BUILDING_BAR_1;
+ gBankStartOffset[49] = SFX_BUILDING_STRIP_1;
+ gBankStartOffset[50] = SFX_BUILDING_STRIP_2;
+ gBankStartOffset[51] = SFX_BUILDING_STRIP_3;
+ gBankStartOffset[52] = SFX_BUILDING_CHURCH;
+ gBankStartOffset[53] = SFX_BUILDING_FAN_1;
+ gBankStartOffset[48] = SFX_BUILDING_MALIBU_3;
+ gBankStartOffset[55] = SFX_BUILDING_INSECTS_1;
+ gBankStartOffset[56] = SFX_BUILDING_INSECTS_2;
+ gBankStartOffset[54] = SFX_BUILDING_FAN_2;
+ gBankStartOffset[57] = SFX_CLUB_1;
+ gBankStartOffset[58] = SFX_CLUB_2;
+ gBankStartOffset[59] = SFX_CLUB_3;
+ gBankStartOffset[60] = SFX_CLUB_4;
+ gBankStartOffset[61] = SFX_FOOTSTEP_GRASS_1;
+ gBankStartOffset[62] = SFX_FOOTSTEP_GRAVEL_1;
+ gBankStartOffset[63] = SFX_FOOTSTEP_WOOD_1;
+ gBankStartOffset[64] = SFX_FOOTSTEP_METAL_1;
+ gBankStartOffset[65] = SFX_FOOTSTEP_WATER_1;
+ gBankStartOffset[66] = SFX_FOOTSTEP_SAND_1;
+}
+
void cSampleManager::SetSpeakerConfig(int32 nConfig)
{
@@ -764,7 +839,7 @@ cSampleManager::Initialise(void)
{
if ( _bSampmanInitialised )
return TRUE;
-
+ SetUpDebugBanksInfo();
EFXInit();
for(int i = 0; i < MAX_STREAMS; i++)
@@ -925,11 +1000,21 @@ cSampleManager::Initialise(void)
for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ )
{
- if ( aStream[0] && (
-#ifdef PS2_AUDIO_PATHS
- aStream[0]->Open(PS2StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000) ||
-#endif
- aStream[0]->Open(StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000)) )
+ bool opened = false;
+ char filename[MAX_PATH];
+ sprintf(filename, "%s.VB", StreamedNameTable[i]);
+ if ( aStream[0] )
+ opened = aStream[0]->Open(filename, IsThisTrackAt16KHz(i) ? 16000 : 32000);
+
+ if ( !opened )
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[i]);
+ if ( aStream[0] )
+ {
+ opened = aStream[0]->Open(filename, IsThisTrackAt16KHz(i) ? 16000 : 32000);
+ }
+ }
+ if ( opened )
{
uint32 tatalms = aStream[0]->GetLengthMS();
aStream[0]->Close();
@@ -969,7 +1054,9 @@ cSampleManager::Initialise(void)
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BLOCKSIZE*MAX_PEDSFX);
ASSERT(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0);
-#ifdef FIX_BUGS
+ nMissionSlotSfxStartAddress = (uintptr)malloc(MISSION_AUDIO_BLOCKSIZE*MISSION_AUDIO_SLOTS);
+ ASSERT(nMissionSlotSfxStartAddress != 0);
+
// Find biggest player comment
uint32 nMaxPedSize = 0;
for (uint32 i = PLAYER_COMMENTS_START; i <= PLAYER_COMMENTS_END; i++)
@@ -977,7 +1064,6 @@ cSampleManager::Initialise(void)
gPlayerTalkData = malloc(nMaxPedSize);
ASSERT(gPlayerTalkData != 0);
-#endif
LoadSampleBank(SFX_BANK_0);
}
@@ -1139,13 +1225,20 @@ cSampleManager::Terminate(void)
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0;
}
-#ifdef FIX_BUGS
+ if ( nMissionSlotSfxStartAddress != 0 )
+ {
+ free((void*)nMissionSlotSfxStartAddress);
+ nMissionSlotSfxStartAddress = 0;
+
+ for ( uint32 i = 0; i < MISSION_AUDIO_SLOTS; i++ )
+ nMissionSlotSfx[i] = UINT32_MAX;
+ }
+
if ( gPlayerTalkData != 0 )
{
free(gPlayerTalkData);
gPlayerTalkData = 0;
}
-#endif
_bSampmanInitialised = FALSE;
}
@@ -1271,32 +1364,50 @@ cSampleManager::IsSampleBankLoaded(uint8 nBank)
return gBankLoaded[nBank];
}
-#ifdef FIX_BUGS
uint8
cSampleManager::IsMissionAudioLoaded(uint8 nSlot, uint32 nSample)
{
- ASSERT(nSlot == MISSION_AUDIO_PLAYER_COMMENT); // only MISSION_AUDIO_PLAYER_COMMENT is supported on PC
-
- return nSample == gPlayerTalkSfx ? LOADING_STATUS_LOADED : LOADING_STATUS_NOT_LOADED;
+ ASSERT(nSlot != MISSION_AUDIO_POLRADIO_CRIME_OR_COLOR && nSlot != MISSION_AUDIO_POLRADIO_AREA_OR_CAR); // these are not used in LCS
+
+ switch (nSlot)
+ {
+ case MISSION_AUDIO_SLOT_1:
+ case MISSION_AUDIO_SLOT_2:
+ return nMissionSlotSfx[nSlot] == nSample ? LOADING_STATUS_LOADED : LOADING_STATUS_NOT_LOADED;
+ case MISSION_AUDIO_PLAYER_COMMENT:
+ return nSample == gPlayerTalkSfx ? LOADING_STATUS_LOADED : LOADING_STATUS_NOT_LOADED;
+ }
+ return FALSE;
}
bool8
cSampleManager::LoadMissionAudio(uint8 nSlot, uint32 nSample)
{
- ASSERT(nSlot == MISSION_AUDIO_PLAYER_COMMENT); // only MISSION_AUDIO_PLAYER_COMMENT is supported on PC
+ ASSERT(nSlot != MISSION_AUDIO_POLRADIO_CRIME_OR_COLOR && nSlot != MISSION_AUDIO_POLRADIO_AREA_OR_CAR); // these are not used in LCS
ASSERT(nSample < TOTAL_AUDIO_SAMPLES);
if (fseek(fpSampleDataHandle, m_aSamples[nSample].nOffset, SEEK_SET) != 0)
return FALSE;
- if (fread(gPlayerTalkData, 1, m_aSamples[nSample].nSize, fpSampleDataHandle) != m_aSamples[nSample].nSize)
- return FALSE;
+ switch (nSlot)
+ {
+ case MISSION_AUDIO_SLOT_1:
+ case MISSION_AUDIO_SLOT_2:
+ if (fread((void*)(nMissionSlotSfxStartAddress + nSlot*MISSION_AUDIO_BLOCKSIZE), 1, m_aSamples[nSample].nSize, fpSampleDataHandle) != m_aSamples[nSample].nSize)
+ return FALSE;
- gPlayerTalkSfx = nSample;
+ nMissionSlotSfx[nSlot] = nSample;
+ break;
+ case MISSION_AUDIO_PLAYER_COMMENT:
+ if (fread(gPlayerTalkData, 1, m_aSamples[nSample].nSize, fpSampleDataHandle) != m_aSamples[nSample].nSize)
+ return FALSE;
+
+ gPlayerTalkSfx = nSample;
+ break;
+ }
return TRUE;
}
-#endif
uint8
cSampleManager::IsPedCommentLoaded(uint32 nComment)
@@ -1532,7 +1643,6 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset;
}
-#ifdef FIX_BUGS
else if ( nSfx >= PLAYER_COMMENTS_START && nSfx <= PLAYER_COMMENTS_END )
{
if ( !IsMissionAudioLoaded(MISSION_AUDIO_PLAYER_COMMENT, nSfx) )
@@ -1540,9 +1650,15 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
addr = (uintptr)gPlayerTalkData;
}
-#endif
else
{
+ for ( uint32 i = 0; i < MISSION_AUDIO_SLOTS; i++ ) {
+ if ( IsMissionAudioLoaded(i, nSfx) ) {
+ addr = nMissionSlotSfxStartAddress + i * MISSION_AUDIO_BLOCKSIZE;
+ goto MissionAudioFound;
+ }
+ }
+
int32 i;
for ( i = 0; i < _TODOCONST(3); i++ )
{
@@ -1561,7 +1677,8 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
if (i == _TODOCONST(3))
return FALSE;
}
-
+
+MissionAudioFound:
if ( GetChannelUsedFlag(nChannel) )
{
TRACE("Stopping channel %d - really!!!", nChannel);
@@ -1622,7 +1739,7 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume)
ASSERT( nChannel >= MAXCHANNELS );
ASSERT( nChannel < NUM_CHANNELS );
- if ( nChannel == CHANNEL_POLICE_RADIO )
+ if( nChannel >= CHANNEL_POLICE_RADIO )
{
uint32 vol = nVolume;
if ( vol > MAX_VOLUME ) vol = MAX_VOLUME;
@@ -1647,7 +1764,7 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
ASSERT( nChannel >= MAXCHANNELS );
ASSERT( nChannel < NUM_CHANNELS );
- if ( nChannel == CHANNEL_POLICE_RADIO )
+ if ( nChannel >= CHANNEL_POLICE_RADIO )
{
aChannel[nChannel].SetPan(nPan);
}
@@ -1703,7 +1820,9 @@ cSampleManager::StopChannel(uint32 nChannel)
void
cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
-{
+{
+ char filename[MAX_PATH];
+
ASSERT( nStream < MAX_STREAMS );
if ( nFile < TOTAL_STREAMED_SOUNDS )
@@ -1711,11 +1830,15 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
CStream *stream = aStream[nStream];
stream->Close();
-#ifdef PS2_AUDIO_PATHS
- if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000))
-#endif
- stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- if ( !stream->Setup() )
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
+ bool opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if ( !opened )
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ }
+
+ if ( opened && !stream->Setup() )
{
stream->Close();
}
@@ -1775,12 +1898,18 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
if(!_GetMP3PosFromStreamPos(&position, &e) && !e) {
nFile = 0;
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
+
CStream *stream = aStream[nStream];
-#ifdef PS2_AUDIO_PATHS
- if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000))
-#endif
- stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- if ( stream->Setup() ) {
+ bool opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+
+ if ( !opened )
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ }
+
+ if ( opened && stream->Setup() ) {
stream->SetLoopCount(nStreamLoopedFlag[nStream] ? 0 : 1);
nStreamLoopedFlag[nStream] = TRUE;
if (position != 0)
@@ -1831,14 +1960,18 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
{
nFile = 0;
_bIsMp3Active = FALSE;
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
- CStream *stream = aStream[nStream];
-#ifdef PS2_AUDIO_PATHS
- if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000))
-#endif
- stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ CStream* stream = aStream[nStream];
+ bool opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- if (stream->Setup()) {
+ if ( !opened )
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ }
+
+ if (opened && stream->Setup()) {
stream->SetLoopCount(nStreamLoopedFlag[nStream] ? 0 : 1);
nStreamLoopedFlag[nStream] = TRUE;
if (position != 0)
@@ -1879,16 +2012,19 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
position = 0;
nFile = 0;
}
- strcpy(filename, StreamedNameTable[nFile]);
-
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
+
CStream *stream = aStream[nStream];
+
+ bool opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
-#ifdef PS2_AUDIO_PATHS
- if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000))
-#endif
- stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if ( !opened )
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ opened = stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ }
- if ( stream->Setup() ) {
+ if ( opened && stream->Setup() ) {
stream->SetLoopCount(nStreamLoopedFlag[nStream] ? 0 : 1);
nStreamLoopedFlag[nStream] = TRUE;
if (position != 0)
diff --git a/src/collision/ColBox.h b/src/collision/ColBox.h
index 0df55925..721756b4 100644
--- a/src/collision/ColBox.h
+++ b/src/collision/ColBox.h
@@ -19,4 +19,12 @@ struct CColBox : public CBox
using CBox::Set;
CColBox& operator=(const CColBox &other);
-}; \ No newline at end of file
+};
+
+// no name for this
+// bounds for a number of triangles
+struct CColTriBBox : public CBox
+{
+ int32 first;
+ int32 last;
+};
diff --git a/src/collision/ColLine.h b/src/collision/ColLine.h
index 21587a06..a2cb9a0b 100644
--- a/src/collision/ColLine.h
+++ b/src/collision/ColLine.h
@@ -4,9 +4,9 @@ struct CColLine
{
// NB: this has to be compatible with two CVuVectors
CVector p0;
- int pad0;
+// int pad0;
CVector p1;
- int pad1;
+// int pad1;
CColLine(void) { };
CColLine(const CVector &p0, const CVector &p1) { this->p0 = p0; this->p1 = p1; };
diff --git a/src/collision/ColModel.cpp b/src/collision/ColModel.cpp
index 2224a804..944f76d8 100644
--- a/src/collision/ColModel.cpp
+++ b/src/collision/ColModel.cpp
@@ -1,4 +1,5 @@
#include "common.h"
+#include "main.h"
#include "ColModel.h"
#include "Collision.h"
#include "Game.h"
@@ -7,6 +8,10 @@
CColModel::CColModel(void)
{
+ boundingSphere.Set(0.0001f, CVector(0.0f, 0.0f, 0.0f));
+ boundingBox.Set(CVector(0.0f, 0.0f, 0.0f), CVector(0.0f, 0.0f, 0.0f));
+ numTriBBoxes = 0;
+ triBBoxes = nil;
numSpheres = 0;
spheres = nil;
numLines = 0;
@@ -18,14 +23,18 @@ CColModel::CColModel(void)
triangles = nil;
trianglePlanes = nil;
level = LEVEL_GENERIC; // generic col slot
- ownsCollisionVolumes = true;
+// ownsCollisionVolumes = true;
}
CColModel::~CColModel(void)
{
- RemoveCollisionVolumes();
+ if(!gNASTY_NASTY_MEM_SHUTDOWN_HACK){
+ RemoveTrianglePlanes();
+ RemoveCollisionVolumes();
+ }
}
+//--LCS: no pool used, but maybe we better keep it?
void*
CColModel::operator new(size_t) throw()
{
@@ -43,19 +52,28 @@ CColModel::operator delete(void *p, size_t) throw()
void
CColModel::RemoveCollisionVolumes(void)
{
- if(ownsCollisionVolumes){
- RwFree(spheres);
- RwFree(lines);
- RwFree(boxes);
- RwFree(vertices);
- RwFree(triangles);
- CCollision::RemoveTrianglePlanes(this);
+#ifdef FIX_BUGS
+ // why is this missing?
+ if(ownsCollisionVolumes)
+#endif
+ if(!gUseChunkFiles){
+ delete[] triBBoxes;
+ delete[] spheres;
+ delete[] lines;
+ delete[] boxes;
+ delete[] vertices;
+ delete[] triangles;
}
+ CCollision::RemoveTrianglePlanes(this);
numSpheres = 0;
+ numTriBBoxes = 0;
numLines = 0;
numBoxes = 0;
numTriangles = 0;
spheres = nil;
+#ifdef FIX_BUGS
+ triBBoxes = nil;
+#endif
lines = nil;
boxes = nil;
vertices = nil;
@@ -68,7 +86,7 @@ CColModel::CalculateTrianglePlanes(void)
PUSH_MEMID(MEMID_COLLISION);
// HACK: allocate space for one more element to stuff the link pointer into
- trianglePlanes = (CColTrianglePlane*)RwMalloc(sizeof(CColTrianglePlane) * (numTriangles+1));
+ trianglePlanes = new CColTrianglePlane[numTriangles+1];
REGISTER_MEMPTR(&trianglePlanes);
for(int i = 0; i < numTriangles; i++)
trianglePlanes[i].Set(vertices, triangles[i]);
@@ -79,8 +97,10 @@ CColModel::CalculateTrianglePlanes(void)
void
CColModel::RemoveTrianglePlanes(void)
{
- RwFree(trianglePlanes);
- trianglePlanes = nil;
+ if(trianglePlanes){
+ delete[] trianglePlanes;
+ trianglePlanes = nil;
+ }
}
void
@@ -112,20 +132,33 @@ CColModel::operator=(const CColModel &other)
boundingSphere = other.boundingSphere;
boundingBox = other.boundingBox;
+ // copy tri bboxes
+ if(other.numTriBBoxes){
+ if(numTriBBoxes != other.numTriBBoxes){
+ numTriBBoxes = other.numTriBBoxes;
+ delete[] triBBoxes;
+ triBBoxes = new CColTriBBox[numTriBBoxes];
+ }
+ for(i = 0; i < numTriBBoxes; i++)
+ triBBoxes[i] = other.triBBoxes[i];
+ }else{
+ numTriBBoxes = 0;
+ delete[] triBBoxes;
+ triBBoxes = nil;
+ }
+
// copy spheres
if(other.numSpheres){
if(numSpheres != other.numSpheres){
numSpheres = other.numSpheres;
- if(spheres)
- RwFree(spheres);
- spheres = (CColSphere*)RwMalloc(numSpheres*sizeof(CColSphere));
+ delete[] spheres;
+ spheres = new CColSphere[numSpheres];
}
for(i = 0; i < numSpheres; i++)
spheres[i] = other.spheres[i];
}else{
numSpheres = 0;
- if(spheres)
- RwFree(spheres);
+ delete[] spheres;
spheres = nil;
}
@@ -133,16 +166,14 @@ CColModel::operator=(const CColModel &other)
if(other.numLines){
if(numLines != other.numLines){
numLines = other.numLines;
- if(lines)
- RwFree(lines);
- lines = (CColLine*)RwMalloc(numLines*sizeof(CColLine));
+ delete[] lines;
+ lines = new CColLine[numLines];
}
for(i = 0; i < numLines; i++)
lines[i] = other.lines[i];
}else{
numLines = 0;
- if(lines)
- RwFree(lines);
+ delete[] lines;
lines = nil;
}
@@ -150,23 +181,21 @@ CColModel::operator=(const CColModel &other)
if(other.numBoxes){
if(numBoxes != other.numBoxes){
numBoxes = other.numBoxes;
- if(boxes)
- RwFree(boxes);
- boxes = (CColBox*)RwMalloc(numBoxes*sizeof(CColBox));
+ delete[] boxes;
+ boxes = new CColBox[numBoxes];
}
for(i = 0; i < numBoxes; i++)
boxes[i] = other.boxes[i];
}else{
numBoxes = 0;
- if(boxes)
- RwFree(boxes);
+ delete[] boxes;
boxes = nil;
}
// copy mesh
if(other.numTriangles){
// copy vertices
- numVerts = 0;
+ numVerts = -1;
for(i = 0; i < other.numTriangles; i++){
if(other.triangles[i].a > numVerts)
numVerts = other.triangles[i].a;
@@ -176,10 +205,9 @@ CColModel::operator=(const CColModel &other)
numVerts = other.triangles[i].c;
}
numVerts++;
- if(vertices)
- RwFree(vertices);
+ delete[] vertices;
if(numVerts){
- vertices = (CompressedVector*)RwMalloc(numVerts*sizeof(CompressedVector));
+ vertices = new CompressedVector[numVerts];
for(i = 0; i < numVerts; i++)
vertices[i] = other.vertices[i];
}
@@ -187,20 +215,54 @@ CColModel::operator=(const CColModel &other)
// copy triangles
if(numTriangles != other.numTriangles){
numTriangles = other.numTriangles;
- if(triangles)
- RwFree(triangles);
- triangles = (CColTriangle*)RwMalloc(numTriangles*sizeof(CColTriangle));
+ delete[] triangles;
+ triangles = new CColTriangle[numTriangles];
}
for(i = 0; i < numTriangles; i++)
triangles[i] = other.triangles[i];
}else{
numTriangles = 0;
- if(triangles)
- RwFree(triangles);
+ delete[] triangles;
triangles = nil;
- if(vertices)
- RwFree(vertices);
+ delete[] vertices;
vertices = nil;
}
return *this;
}
+
+bool
+CColModel::Write(base::cRelocatableChunkWriter &writer, bool allocSpace)
+{
+ int numVerts = -1;
+ for(int i = 0; i < numTriangles; i++){
+ if(triangles[i].a > numVerts)
+ numVerts = triangles[i].a;
+ if(triangles[i].b > numVerts)
+ numVerts = triangles[i].b;
+ if(triangles[i].c > numVerts)
+ numVerts = triangles[i].c;
+ }
+ numVerts++;
+
+ if(allocSpace)
+ writer.AllocateRaw(this, sizeof(*this), 16, false, true);
+ writer.AllocateRaw(spheres, sizeof(*spheres)*numSpheres, 16, false, true);
+ writer.AddPatch(&spheres);
+ writer.AllocateRaw(lines, sizeof(*lines)*numLines, 16, false, true);
+ writer.AddPatch(&lines);
+ writer.AllocateRaw(boxes, sizeof(*boxes)*numBoxes, 16, false, true);
+ writer.AddPatch(&boxes);
+ if(triBBoxes && numTriBBoxes != 0){
+ writer.AllocateRaw(triBBoxes, sizeof(*triBBoxes)*numTriBBoxes, 16, false, true);
+ writer.AddPatch(&triBBoxes);
+ }else
+ triBBoxes = nil;
+ if(numTriangles != 0){
+ writer.AllocateRaw(vertices, sizeof(*vertices)*numVerts, 2, false, true);
+ writer.AddPatch(&vertices);
+ writer.AllocateRaw(triangles, sizeof(*triangles)*numTriangles, 2, false, true);
+ writer.AddPatch(&triangles);
+ RemoveTrianglePlanes();
+ }
+ return 1;
+}
diff --git a/src/collision/ColModel.h b/src/collision/ColModel.h
index 64f05f76..ce6dcd6d 100644
--- a/src/collision/ColModel.h
+++ b/src/collision/ColModel.h
@@ -15,11 +15,13 @@ struct CColModel
int16 numBoxes;
int16 numTriangles;
int8 numLines;
+ int8 numTriBBoxes;
uint8 level; // colstore slot but probably still named level
bool ownsCollisionVolumes;
CColSphere *spheres;
CColLine *lines;
CColBox *boxes;
+ CColTriBBox *triBBoxes;
CompressedVector *vertices;
CColTriangle *triangles;
CColTrianglePlane *trianglePlanes;
@@ -36,4 +38,6 @@ struct CColModel
void *operator new(size_t) throw();
void operator delete(void *p, size_t) throw();
CColModel& operator=(const CColModel& other);
+
+ bool Write(base::cRelocatableChunkWriter &writer, bool allocSpace);
}; \ No newline at end of file
diff --git a/src/collision/ColPoint.h b/src/collision/ColPoint.h
index a15b2345..36801efc 100644
--- a/src/collision/ColPoint.h
+++ b/src/collision/ColPoint.h
@@ -3,15 +3,13 @@
struct CColPoint
{
CVector point;
- int pad1;
+ float depth;
// the surface normal on the surface of point
CVector normal;
- int pad2;
uint8 surfaceA;
uint8 pieceA;
uint8 surfaceB;
uint8 pieceB;
- float depth;
const CVector &GetNormal() { return normal; }
float GetDepth() { return depth; }
diff --git a/src/collision/ColSphere.h b/src/collision/ColSphere.h
index f86b282a..3f18d8c0 100644
--- a/src/collision/ColSphere.h
+++ b/src/collision/ColSphere.h
@@ -2,10 +2,11 @@
#include "SurfaceTable.h"
-struct CSphere
+// TODO(LCS): maybe this was in a union with CVuVector? or is the alignment manual?
+struct TYPEALIGN(16) CSphere
{
// NB: this has to be compatible with a CVuVector
- CVector center;
+ RwV3d center;
float radius;
void Set(float radius, const CVector &center) { this->center = center; this->radius = radius; }
};
diff --git a/src/collision/ColStore.cpp b/src/collision/ColStore.cpp
index c74bf5ba..c50e6cbd 100644
--- a/src/collision/ColStore.cpp
+++ b/src/collision/ColStore.cpp
@@ -1,5 +1,7 @@
#include "common.h"
+#include "main.h"
+#include "smallHeap.h"
#include "templates.h"
#include "General.h"
#include "ModelInfo.h"
@@ -8,6 +10,9 @@
#include "Script.h"
#include "Timer.h"
#include "Camera.h"
+#include "World.h"
+#include "Zones.h"
+#include "Garages.h"
#include "Frontend.h"
#include "Physical.h"
#include "ColStore.h"
@@ -15,16 +20,55 @@
#include "Pools.h"
CPool<ColDef,ColDef> *CColStore::ms_pColPool;
+bool CColStore::m_onlyBB;
#ifndef MASTER
bool bDispColInMem;
#endif
+// LCS: file done except unused:
+// CColStore::LoadCol(int,char const*)
+// CColStore::LoadAllBoundingBoxes(void)
+// CColStore::Write(base::cRelocatableChunkWriter &)
+
+const CVector&
+LevelPos(eLevelName level)
+{
+ static CVector pos[4] = {
+ CVector(1060.0f, -800.0f, 0.0f),
+ CVector(1060.0f, -800.0f, 0.0f),
+ CVector(350.0f, -624.0f, 0.0f),
+ CVector(-670.0f, -511.0f, 0.0f)
+ };
+ return pos[level];
+};
+
+static eLevelName
+PosLevel(const CVector &pos)
+{
+ static eLevelName lastPlayerLevel = LEVEL_INDUSTRIAL;
+ static eLevelName lastOtherLevel = LEVEL_INDUSTRIAL;
+
+ if(Abs(FindPlayerCoors().x - pos.x) < 5.0f &&
+ Abs(FindPlayerCoors().y - pos.y) < 5.0f &&
+ Abs(FindPlayerCoors().z - pos.z) < 5.0f){
+ if(CGame::currLevel != LEVEL_GENERIC)
+ lastPlayerLevel = CGame::currLevel;
+ return lastPlayerLevel;
+ }else{
+ eLevelName lvl = CTheZones::GetLevelFromPosition(&pos);
+ if(lvl != LEVEL_GENERIC)
+ lastOtherLevel = lvl;
+ return lastOtherLevel;
+ }
+}
+
void
CColStore::Initialise(void)
{
- if(ms_pColPool == nil)
+ if(ms_pColPool == nil){
ms_pColPool = new CPool<ColDef,ColDef>(COLSTORESIZE, "CollisionFiles");
- AddColSlot("generic"); // slot 0. not streamed
+ AddColSlot("generic"); // slot 0. not streamed
+ }
#ifndef MASTER
VarConsole.Add("Display collision in memory", &bDispColInMem, true);
#endif
@@ -38,7 +82,9 @@ CColStore::Shutdown(void)
RemoveColSlot(i);
if(ms_pColPool)
delete ms_pColPool;
+#ifdef FIX_BUGS
ms_pColPool = nil;
+#endif
}
int
@@ -119,11 +165,34 @@ CColStore::LoadCol(int32 slot, uint8 *buffer, int32 bufsize)
return success;
}
+struct ColChunkEntry
+{
+ int32 modelId; // -1 marks end
+ CColModel *colModel;
+};
+
+void
+CColStore::LoadColCHK(int32 slot, void *data, void *chunk)
+{
+ ColDef *def = GetSlot(slot);
+ def->chunk = chunk;
+ CStreaming::RegisterPointer(&def->chunk, 1, true);
+ for(ColChunkEntry *entry = (ColChunkEntry*)data; entry->modelId != -1; entry++){
+ CBaseModelInfo *mi = CModelInfo::GetModelInfo(entry->modelId);
+ mi->SetColModel(entry->colModel, true); // we own this? can that work?
+ CStreaming::RegisterPointer(&mi->m_colModel, 1, true);
+ }
+ def->isLoaded = true;
+}
+
+CColModel nullCollision;
+
void
CColStore::RemoveCol(int32 slot)
{
int id;
- GetSlot(slot)->isLoaded = false;
+ ColDef *def = GetSlot(slot);
+ def->isLoaded = false;
for(id = 0; id < MODELINFOSIZE; id++){
CBaseModelInfo *mi = CModelInfo::GetModelInfo(id);
if(mi){
@@ -132,6 +201,23 @@ CColStore::RemoveCol(int32 slot)
col->RemoveCollisionVolumes();
}
}
+ if(gUseChunkFiles){
+ for(id = 0; id < MODELINFOSIZE; id++){
+ CBaseModelInfo *mi = CModelInfo::GetModelInfo(id);
+ if(mi){
+ CColModel *col = mi->GetColModel();
+ if(col && col->level == slot){
+ mi->SetColModel(&nullCollision);
+ CStreaming::UnregisterPointer(&mi->m_colModel, 1);
+ }
+ }
+ }
+ if(def->chunk){
+ CStreaming::UnregisterPointer(&def->chunk, 1);
+ cSmallHeap::msInstance.Free(def->chunk);
+ def->chunk = nil;
+ }
+ }
}
void
@@ -156,29 +242,49 @@ CColStore::RemoveAllCollision(void)
}
static bool bLoadAtSecondPosition;
-static CVector2D secondPosition;
+static CVector secondPosition;
void
-CColStore::AddCollisionNeededAtPosn(const CVector2D &pos)
+CColStore::AddCollisionNeededAtPosn(const CVector &pos)
{
bLoadAtSecondPosition = true;
secondPosition = pos;
}
void
-CColStore::LoadCollision(const CVector2D &pos)
+CColStore::LoadCollision(const CVector &pos, eLevelName level)
{
int i;
if(CStreaming::ms_disableStreaming)
return;
+ if(level == LEVEL_GENERIC)
+ level = PosLevel(pos);
+
+ eLevelName allowedLevel = (eLevelName)CTheScripts::AllowedCollision[0];
+ if(allowedLevel == LEVEL_GENERIC)
+ allowedLevel = (eLevelName)CTheScripts::AllowedCollision[1];
+
+ bool requestedSomething = false;
+
for(i = 1; i < COLSTORESIZE; i++){
- if(GetSlot(i) == nil)
+ if(GetSlot(i) == nil || !DoScriptsWantThisIn(i))
continue;
bool wantThisOne = false;
+ if(strcmp(GetColName(i), "indust") == 0){
+ if(allowedLevel != LEVEL_GENERIC && level != LEVEL_INDUSTRIAL)
+ wantThisOne = allowedLevel == LEVEL_INDUSTRIAL;
+ else
+ wantThisOne = level == LEVEL_INDUSTRIAL;
+ }else if(GetBoundingBox(i).IsPointInside(LevelPos(level)))
+ wantThisOne = true;
+ else if(allowedLevel != LEVEL_GENERIC && GetBoundingBox(i).IsPointInside(LevelPos(allowedLevel)))
+ wantThisOne = true;
+
+/* // LCS: removed
if(GetBoundingBox(i).IsPointInside(pos) ||
bLoadAtSecondPosition && GetBoundingBox(i).IsPointInside(secondPosition, -119.0f) ||
strcmp(GetColName(i), "yacht") == 0){
@@ -203,28 +309,38 @@ CColStore::LoadCollision(const CVector2D &pos)
}
}
}
+*/
- if(wantThisOne)
+ if(wantThisOne){
CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
- else
+ requestedSomething = true;
+ }else
CStreaming::RemoveCol(i);
}
+ if(requestedSomething){
+ CTimer::Suspend();
+ // BUG? request was done with priority but now loading non-priority?
+ CStreaming::LoadAllRequestedModels(false);
+ CGarages::SetupAnyGaragesForThisIsland();
+ CTimer::Resume();
+ }
bLoadAtSecondPosition = false;
}
void
-CColStore::RequestCollision(const CVector2D &pos)
+CColStore::RequestCollision(const CVector &pos)
{
int i;
for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f))
+ if(GetSlot(i) && DoScriptsWantThisIn(i) && GetBoundingBox(i).IsPointInside(LevelPos(PosLevel(pos)), -115.0f))
CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
}
void
-CColStore::EnsureCollisionIsInMemory(const CVector2D &pos)
+CColStore::EnsureCollisionIsInMemory(const CVector &pos)
{
+/* // LCS: removed
int i;
if(CStreaming::ms_disableStreaming)
@@ -240,16 +356,48 @@ CColStore::EnsureCollisionIsInMemory(const CVector2D &pos)
CStreaming::LoadAllRequestedModels(false);
CTimer::Resume();
}
+*/
}
bool
-CColStore::HasCollisionLoaded(const CVector2D &pos)
+CColStore::DoScriptsWantThisIn(int32 slot)
+{
+ if(slot == 0)
+ return false;
+ ColDef *coldef = GetSlot(slot);
+ if(coldef == nil)
+ return false;
+ if(strcmp(coldef->name, "fortstaunton") == 0)
+ return !CTheScripts::IsFortStauntonDestroyed();
+ if(strcmp(coldef->name, "fortdestroyed") == 0)
+ return CTheScripts::IsFortStauntonDestroyed();
+ return true;
+}
+
+bool
+CColStore::HasCollisionLoaded(eLevelName level)
{
int i;
+ const CVector &pos = LevelPos(level);
for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f) &&
+ if(GetSlot(i) && DoScriptsWantThisIn(i) &&
+ (!CGeneral::faststricmp(GetColName(i), "indust") && level == LEVEL_INDUSTRIAL ||
+ GetBoundingBox(i).IsPointInside(pos)) &&
!GetSlot(i)->isLoaded)
return false;
return true;
}
+
+bool
+CColStore::HasCollisionLoaded(const CVector &pos)
+{
+ return HasCollisionLoaded(PosLevel(pos));
+}
+
+void
+CColStore::Load(bool onlyBB, CPool<ColDef> *pool)
+{
+ ms_pColPool = pool;
+ m_onlyBB = onlyBB;
+}
diff --git a/src/collision/ColStore.h b/src/collision/ColStore.h
index 8e2a3a70..c66a67ed 100644
--- a/src/collision/ColStore.h
+++ b/src/collision/ColStore.h
@@ -9,11 +9,13 @@ struct ColDef { // made up name
char name[20];
int16 minIndex;
int16 maxIndex;
+ void *chunk;
};
class CColStore
{
static CPool<ColDef,ColDef> *ms_pColPool;
+ static bool m_onlyBB;
public:
static void Initialise(void);
@@ -25,14 +27,18 @@ public:
static CRect &GetBoundingBox(int32 slot);
static void IncludeModelIndex(int32 slot, int32 modelIndex);
static bool LoadCol(int32 storeID, uint8 *buffer, int32 bufsize);
+ static void LoadColCHK(int32 slot, void *data, void *chunk);
static void RemoveCol(int32 slot);
- static void AddCollisionNeededAtPosn(const CVector2D &pos);
+ static void AddCollisionNeededAtPosn(const CVector &pos);
static void LoadAllCollision(void);
static void RemoveAllCollision(void);
- static void LoadCollision(const CVector2D &pos);
- static void RequestCollision(const CVector2D &pos);
- static void EnsureCollisionIsInMemory(const CVector2D &pos);
- static bool HasCollisionLoaded(const CVector2D &pos);
+ static void LoadCollision(const CVector &pos, eLevelName level = LEVEL_GENERIC);
+ static void RequestCollision(const CVector &pos);
+ static void EnsureCollisionIsInMemory(const CVector &pos);
+ static bool DoScriptsWantThisIn(int32 slot);
+ static bool HasCollisionLoaded(eLevelName level);
+ static bool HasCollisionLoaded(const CVector &pos);
+ static void Load(bool, CPool<ColDef> *pool);
static ColDef *GetSlot(int slot) {
assert(slot >= 0);
@@ -41,3 +47,5 @@ public:
return ms_pColPool->GetSlot(slot);
}
};
+
+const CVector& LevelPos(eLevelName level);
diff --git a/src/collision/ColTriangle.h b/src/collision/ColTriangle.h
index a2580c58..5ce543b5 100644
--- a/src/collision/ColTriangle.h
+++ b/src/collision/ColTriangle.h
@@ -62,6 +62,7 @@ struct CColTrianglePlane
}
#endif
#else
+ // TODO(LCS): LCS actually uses CompressedVector too
CVector normal;
float dist;
uint8 dir;
diff --git a/src/collision/Collision.cpp b/src/collision/Collision.cpp
index f39f3f35..946513d3 100644
--- a/src/collision/Collision.cpp
+++ b/src/collision/Collision.cpp
@@ -24,6 +24,10 @@
#include "Camera.h"
#include "ColStore.h"
+// gotta figure out how they handled CSphere exactly
+// so using this to remind me to look into it again.
+#define CVECTORHACK(rwv3d) CVector(rwv3d)
+
#ifdef VU_COLLISION
#include "VuCollision.h"
@@ -398,7 +402,7 @@ CCollision::TestLineSphere(const CColLine &line, const CColSphere &sph)
// The length of the tangent would be this: Sqrt((c-p0)^2 - r^2).
// Negative if p0 is inside the sphere! This breaks the test!
float tansq = 4.0f * linesq *
- (sph.center.MagnitudeSqr() - 2.0f*DotProduct(sph.center, line.p0) + line.p0.MagnitudeSqr() - sph.radius*sph.radius);
+ (CVECTORHACK(sph.center).MagnitudeSqr() - 2.0f*DotProduct(sph.center, line.p0) + line.p0.MagnitudeSqr() - sph.radius*sph.radius);
float diffsq = projline*projline - tansq;
// if diffsq < 0 that means the line is a passant, so no intersection
if(diffsq < 0.0f)
@@ -477,9 +481,9 @@ CCollision::TestSphereTriangle(const CColSphere &sphere,
case 2:
// closest to an edge
// looks like original game as DistToLine manually inlined
- if(!insideAB) dist = DistToLine(&va, &vb, &sphere.center);
- else if(!insideAC) dist = DistToLine(&va, &vc, &sphere.center);
- else if(!insideBC) dist = DistToLine(&vb, &vc, &sphere.center);
+ if(!insideAB) dist = DistToLine(&va, &vb, &CVECTORHACK(sphere.center));
+ else if(!insideAC) dist = DistToLine(&va, &vc, &CVECTORHACK(sphere.center));
+ else if(!insideBC) dist = DistToLine(&vb, &vc, &CVECTORHACK(sphere.center));
else assert(0);
break;
case 3:
@@ -1295,9 +1299,9 @@ CCollision::ProcessSphereTriangle(const CColSphere &sphere,
case 2:
// closest to an edge
// looks like original game as DistToLine manually inlined
- if(!insideAB) dist = DistToLine(&va, &vb, &sphere.center, p);
- else if(!insideAC) dist = DistToLine(&va, &vc, &sphere.center, p);
- else if(!insideBC) dist = DistToLine(&vb, &vc, &sphere.center, p);
+ if(!insideAB) dist = DistToLine(&va, &vb, &CVECTORHACK(sphere.center), p);
+ else if(!insideAC) dist = DistToLine(&va, &vc, &CVECTORHACK(sphere.center), p);
+ else if(!insideBC) dist = DistToLine(&vb, &vc, &CVECTORHACK(sphere.center), p);
else assert(0);
break;
case 3:
diff --git a/src/collision/TempColModels.cpp b/src/collision/TempColModels.cpp
index 0c0d4376..148b86fe 100644
--- a/src/collision/TempColModels.cpp
+++ b/src/collision/TempColModels.cpp
@@ -1,22 +1,25 @@
#include "common.h"
+#include "main.h"
#include "TempColModels.h"
#include "Game.h"
-CColModel CTempColModels::ms_colModelPed1;
+// LCS: haven't yet checked the numbers but they probably haven't changed
+
CColModel CTempColModels::ms_colModelPed2;
-CColModel CTempColModels::ms_colModelBBox;
CColModel CTempColModels::ms_colModelBumper1;
CColModel CTempColModels::ms_colModelWheel1;
CColModel CTempColModels::ms_colModelPanel1;
CColModel CTempColModels::ms_colModelBodyPart2;
CColModel CTempColModels::ms_colModelBodyPart1;
-CColModel CTempColModels::ms_colModelCutObj[5];
+CColModel CTempColModels::ms_colModelCutObj[10];
CColModel CTempColModels::ms_colModelPedGroundHit;
CColModel CTempColModels::ms_colModelBoot1;
CColModel CTempColModels::ms_colModelDoor1;
CColModel CTempColModels::ms_colModelBonnet1;
-CColModel CTempColModels::ms_colModelWeapon;
+CColModel CTempColModels::ms_colModelFerryDocked;
+
+CTempColModels *gpTempColModels;
CColSphere s_aPedSpheres[3];
@@ -34,6 +37,7 @@ CColSphere s_aBootSpheres[4];
CColSphere s_aWheelSpheres[2];
CColSphere s_aBodyPartSpheres1[2];
CColSphere s_aBodyPartSpheres2[2];
+CColBox S_aFerryDockedBoxes[1];
void
CTempColModels::Initialise(void)
@@ -44,11 +48,26 @@ CTempColModels::Initialise(void)
colmodel.level = LEVEL_GENERIC;\
colmodel.ownsCollisionVolumes = false;
- int i;
+ if(gMakeResources){
+ if(gpTempColModels == nil){
+ gpTempColModels = new CTempColModels;
+ gpTempColModels->Initialise();
+ return;
+ }
+
+ ms_colModelBBox.boundingSphere.Set(2.0f, CVector(0.0f, 0.0f, 0.0f));
+ ms_colModelBBox.boundingBox.Set(CVector(-2.0f, -2.0f, -2.0f), CVector(2.0f, 2.0f, 2.0f));
+ ms_colModelBBox.level = LEVEL_GENERIC;
- ms_colModelBBox.boundingSphere.Set(2.0f, CVector(0.0f, 0.0f, 0.0f));
- ms_colModelBBox.boundingBox.Set(CVector(-2.0f, -2.0f, -2.0f), CVector(2.0f, 2.0f, 2.0f));
- ms_colModelBBox.level = LEVEL_GENERIC;
+ ms_colModelPed1.boundingSphere.Set(1.25f, CVector(0.0f, 0.0f, 0.0f));
+ ms_colModelPed1.boundingBox.Set(CVector(-0.35f, -0.35f, -1.0f), CVector(0.35f, 0.35f, 0.9f));
+ SET_COLMODEL_SPHERES(ms_colModelPed1, s_aPedSpheres);
+
+ ms_colModelWeapon.boundingSphere.Set(0.25f, CVector(0.0f, 0.0f, 0.0f));
+ ms_colModelWeapon.boundingBox.Set(CVector(-0.25f, -0.25f, -0.25f), CVector(0.25f, 0.25f, 0.25f));
+ }
+
+ int i;
for (i = 0; i < ARRAY_SIZE(ms_colModelCutObj); i++) {
ms_colModelCutObj[i].boundingSphere.Set(2.0f, CVector(0.0f, 0.0f, 0.0f));
@@ -74,10 +93,6 @@ CTempColModels::Initialise(void)
s_aPedSpheres[i].piece = 0;
}
- ms_colModelPed1.boundingSphere.Set(1.25f, CVector(0.0f, 0.0f, 0.0f));
- ms_colModelPed1.boundingBox.Set(CVector(-0.35f, -0.35f, -1.0f), CVector(0.35f, 0.35f, 0.9f));
- SET_COLMODEL_SPHERES(ms_colModelPed1, s_aPedSpheres);
-
// Ped 2 Spheres
s_aPed2Spheres[0].radius = 0.3f;
@@ -294,13 +309,47 @@ CTempColModels::Initialise(void)
SET_COLMODEL_SPHERES(ms_colModelBodyPart2, s_aBodyPartSpheres2);
- ms_colModelWeapon.boundingSphere.radius = 0.25f;
- ms_colModelWeapon.boundingBox.min.x = -0.25f;
- ms_colModelWeapon.boundingBox.min.y = -0.25f;
- ms_colModelWeapon.boundingBox.min.z = -0.25f;
- ms_colModelWeapon.boundingBox.max.x = 0.25f;
- ms_colModelWeapon.boundingBox.max.y = 0.25f;
- ms_colModelWeapon.boundingBox.max.z = 0.25f;
+ // Ferry Docked
+
+ S_aFerryDockedBoxes[0].Set(CVector(-6.3f, -22.78f, -2.0f), CVector(6.3f, 22.78f, 2.8f), SURFACE_THICK_METAL_PLATE, SURFACE_DEFAULT);
+
+ ms_colModelFerryDocked.boundingSphere.Set(35.0f, CVector(0.0f, -0.0f, 0.0f));
+ ms_colModelFerryDocked.boundingBox.Set(S_aFerryDockedBoxes[0].min, S_aFerryDockedBoxes[0].max);
+ ms_colModelFerryDocked.spheres = nil;
+ ms_colModelFerryDocked.numSpheres = 0;
+ ms_colModelFerryDocked.boxes = S_aFerryDockedBoxes;
+ ms_colModelFerryDocked.numBoxes = ARRAY_SIZE(S_aFerryDockedBoxes);
+ ms_colModelFerryDocked.level = LEVEL_GENERIC;
+
#undef SET_COLMODEL_SPHERES
}
+
+void
+CTempColModels::Write(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), 0x10, false, true);
+
+ ms_colModelBBox.Write(writer, false);
+ writer.AddPatch(&ms_colModelBBox);
+
+ ms_colModelPed1.Write(writer, false);
+ writer.AddPatch(&ms_colModelPed1);
+
+ ms_colModelWeapon.Write(writer, false);
+ writer.AddPatch(&ms_colModelWeapon);
+
+ for(int i = 0; i < ARRAY_SIZE(ms_colModelCutObj); i++)
+ ms_colModelCutObj[i].Write(writer, true);
+ ms_colModelPed2.Write(writer, true);
+ ms_colModelPedGroundHit.Write(writer, true);
+ ms_colModelDoor1.Write(writer, true);
+ ms_colModelBumper1.Write(writer, true);
+ ms_colModelPanel1.Write(writer, true);
+ ms_colModelBonnet1.Write(writer, true);
+ ms_colModelBoot1.Write(writer, true);
+ ms_colModelWheel1.Write(writer, true);
+ ms_colModelBodyPart1.Write(writer, true);
+ ms_colModelBodyPart2.Write(writer, true);
+ ms_colModelFerryDocked.Write(writer, true);
+}
diff --git a/src/collision/TempColModels.h b/src/collision/TempColModels.h
index 1a888723..0f1f06c3 100644
--- a/src/collision/TempColModels.h
+++ b/src/collision/TempColModels.h
@@ -5,20 +5,25 @@
class CTempColModels
{
public:
- static CColModel ms_colModelPed1;
+ CColModel ms_colModelPed1;
+ CColModel ms_colModelBBox;
+ CColModel ms_colModelWeapon;
+
static CColModel ms_colModelPed2;
- static CColModel ms_colModelBBox;
static CColModel ms_colModelBumper1;
static CColModel ms_colModelWheel1;
static CColModel ms_colModelPanel1;
static CColModel ms_colModelBodyPart2;
static CColModel ms_colModelBodyPart1;
- static CColModel ms_colModelCutObj[5];
+ static CColModel ms_colModelCutObj[10];
static CColModel ms_colModelPedGroundHit;
static CColModel ms_colModelBoot1;
static CColModel ms_colModelDoor1;
static CColModel ms_colModelBonnet1;
- static CColModel ms_colModelWeapon;
+ static CColModel ms_colModelFerryDocked;
- static void Initialise(void);
+ void Initialise(void);
+ void Write(base::cRelocatableChunkWriter &writer);
};
+
+extern CTempColModels *gpTempColModels;
diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp
index d7c17a68..e52d788d 100644
--- a/src/control/AutoPilot.cpp
+++ b/src/control/AutoPilot.cpp
@@ -7,6 +7,8 @@
#include "PathFind.h"
#include "SaveBuf.h"
+//--LCS: file done
+
void CAutoPilot::ModifySpeed(float speed)
{
m_fMaxTrafficSpeed = Max(0.01f, speed);
diff --git a/src/control/Bridge.cpp b/src/control/Bridge.cpp
index 1e63cf30..c1bf0369 100644
--- a/src/control/Bridge.cpp
+++ b/src/control/Bridge.cpp
@@ -6,6 +6,8 @@
#include "PathFind.h"
#include "Stats.h"
+//--LCS: file done except TODO
+
CEntity *CBridge::pLiftRoad;
CEntity *CBridge::pLiftPart;
CEntity *CBridge::pWeight;
@@ -25,14 +27,14 @@ void CBridge::Init()
{
#ifdef GTA_BRIDGE
FindBridgeEntities();
+ State = STATE_BRIDGE_LOCKED;
OldLift = -1.0f;
if (pLiftPart && pWeight)
{
DefaultZLiftPart = pLiftPart->GetPosition().z;
- DefaultZLiftWeight = pWeight->GetPosition().z;
-
if (pLiftRoad)
DefaultZLiftRoad = pLiftRoad->GetPosition().z;
+ DefaultZLiftWeight = pWeight->GetPosition().z;
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, true);
}
@@ -49,36 +51,42 @@ void CBridge::Update()
float liftHeight;
- // Set bridge height and state
- if (CStats::CommercialPassed)
- {
+ if (State == STATE_BRIDGE_LOCKED) {
+ liftHeight = 25.0f;
+ TimeOfBridgeBecomingOperational = 0;
+ }
+ else if (State == STATE_BRIDGE_ALWAYS_UNLOCKED) {
+ liftHeight = 0.0f;
+ TimeOfBridgeBecomingOperational = CTimer::GetTimeInMilliseconds() - 20001;
+ }
+ else {
if (TimeOfBridgeBecomingOperational == 0)
TimeOfBridgeBecomingOperational = CTimer::GetTimeInMilliseconds();
// Time remaining for bridge to become operational
- // uint16, so after about a minute it overflows to 0 and the cycle repeats
- uint16 timeElapsed = CTimer::GetTimeInMilliseconds() - TimeOfBridgeBecomingOperational;
+ // this time cycle duration is 0x20000, so ~2:11
+ uint32 timeElapsed = (CTimer::GetTimeInMilliseconds() - TimeOfBridgeBecomingOperational) % 0x20000;
// Calculate lift part height and bridge state
- if (timeElapsed < 10000)
+ if (timeElapsed < 20000)
{
State = STATE_LIFT_PART_MOVING_DOWN;
- liftHeight = 25.0f - timeElapsed / 10000.0f * 25.0f;
+ liftHeight = 25.0f - timeElapsed / 20000.0f * 25.0f;
}
- else if (timeElapsed < 40000)
+ else if (timeElapsed < 80000)
{
liftHeight = 0.0f;
State = STATE_LIFT_PART_IS_DOWN;
}
- else if (timeElapsed < 50000)
+ else if (timeElapsed < 90000)
{
liftHeight = 0.0f;
State = STATE_LIFT_PART_ABOUT_TO_MOVE_UP;
}
- else if (timeElapsed < 60000)
+ else if (timeElapsed < 110000)
{
State = STATE_LIFT_PART_MOVING_UP;
- liftHeight = (timeElapsed - 50000) / 10000.0f * 25.0f;
+ liftHeight = (timeElapsed - 90000) / 20000.0f * 25.0f;
}
else
{
@@ -86,12 +94,7 @@ void CBridge::Update()
State = STATE_LIFT_PART_IS_UP;
}
}
- else
- {
- liftHeight = 25.0f;
- TimeOfBridgeBecomingOperational = 0;
- State = STATE_BRIDGE_LOCKED;
- }
+
// Move bridge part
if (liftHeight != OldLift)
@@ -112,6 +115,8 @@ void CBridge::Update()
OldLift = liftHeight;
}
+ // TODO(LCS): cWorldStream
+
if (State == STATE_LIFT_PART_ABOUT_TO_MOVE_UP && OldState == STATE_LIFT_PART_IS_DOWN)
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, true);
else if (State == STATE_LIFT_PART_IS_DOWN && OldState == STATE_LIFT_PART_MOVING_DOWN)
@@ -161,3 +166,23 @@ bool CBridge::ThisIsABridgeObjectMovingUp(int index)
return false;
#endif
}
+
+void CBridge::ForceBridgeState(uint8 state)
+{
+#ifdef GTA_BRIDGE
+ State = state;
+ switch (state)
+ {
+ case STATE_BRIDGE_LOCKED:
+ case STATE_LIFT_PART_MOVING_DOWN:
+ case STATE_LIFT_PART_ABOUT_TO_MOVE_UP:
+ ThePaths.SetLinksBridgeLights(-330.0f, -230.0f, -700.0f, -588.0f, true);
+ break;
+ case STATE_BRIDGE_ALWAYS_UNLOCKED:
+ ThePaths.SetLinksBridgeLights(-330.0f, -230.0f, -700.0f, -588.0f, false);
+ break;
+ default:
+ break;
+ }
+#endif
+} \ No newline at end of file
diff --git a/src/control/Bridge.h b/src/control/Bridge.h
index c5702629..e639d4c1 100644
--- a/src/control/Bridge.h
+++ b/src/control/Bridge.h
@@ -8,7 +8,8 @@ enum bridgeStates {
STATE_LIFT_PART_MOVING_DOWN,
STATE_LIFT_PART_IS_DOWN,
STATE_LIFT_PART_ABOUT_TO_MOVE_UP,
- STATE_LIFT_PART_MOVING_UP
+ STATE_LIFT_PART_MOVING_UP,
+ STATE_BRIDGE_ALWAYS_UNLOCKED
};
class CBridge
@@ -25,4 +26,5 @@ public:
static bool ShouldLightsBeFlashing();
static void FindBridgeEntities();
static bool ThisIsABridgeObjectMovingUp(int);
+ static void ForceBridgeState(uint8 state);
};
diff --git a/src/control/CarAI.cpp b/src/control/CarAI.cpp
index c8230d4d..1ee99b89 100644
--- a/src/control/CarAI.cpp
+++ b/src/control/CarAI.cpp
@@ -4,6 +4,7 @@
#include "Accident.h"
#include "AutoPilot.h"
+#include "Bridge.h"
#include "CarCtrl.h"
#include "General.h"
#include "HandlingMgr.h"
@@ -20,6 +21,8 @@
#include "World.h"
#include "ZoneCull.h"
+//--LCS: file done
+
#define DISTANCE_TO_SWITCH_DISTANCE_GOTO 20.0f
float CCarAI::FindSwitchDistanceClose(CVehicle* pVehicle)
@@ -72,6 +75,18 @@ void CCarAI::UpdateCarAI(CVehicle* pVehicle)
case STATUS_PLAYER_DISABLED:
break;
case STATUS_SIMPLE:
+ {
+ if (pVehicle->m_pCurGroundEntity && CBridge::ThisIsABridgeObjectMovingUp(pVehicle->m_pCurGroundEntity->GetModelIndex()))
+ pVehicle->SetStatus(STATUS_PHYSICS);
+ CColPoint colPoint;
+ CEntity* pEntity;
+ if ((pVehicle->m_randomSeed & 0x3F) == (CTimer::GetFrameCounter() & 0x3F) &&
+ !CWorld::ProcessVerticalLine(pVehicle->GetPosition(), -2.0f, colPoint, pEntity, true, false, false, false, true, false, nil)) {
+ debug("FLOATING CAR TURNED INTO PHYSICS CAR!\n");
+ pVehicle->SetStatus(STATUS_PHYSICS);
+ }
+ }
+ // fallthough
case STATUS_PHYSICS:
switch (pVehicle->AutoPilot.m_nCarMission) {
case MISSION_RAMPLAYER_FARAWAY:
diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp
index 6742ccfe..3d82fc1a 100644
--- a/src/control/CarCtrl.cpp
+++ b/src/control/CarCtrl.cpp
@@ -11,11 +11,13 @@
#include "Cranes.h"
#include "Curves.h"
#include "CutsceneMgr.h"
+#include "Frontend.h"
#include "Gangs.h"
#include "Game.h"
#include "Garages.h"
#include "General.h"
#include "IniFile.h"
+#include "Lines.h"
#include "ModelIndices.h"
#include "PathFind.h"
#include "Ped.h"
@@ -37,7 +39,9 @@
#include "Zones.h"
#include "Pickups.h"
-#define DISTANCE_TO_SPAWN_ROADBLOCK_PEDS (51.0f)
+//--LCS: file done except TODO
+
+#define DISTANCE_TO_SPAWN_ROADBLOCK_PEDS (51.0f) // apparently POPULATION_CULL_RANGE? TODO: unite with CPopulation
#define DISTANCE_TO_SCAN_FOR_DANGER (14.0f)
#define DISTANCE_TO_SCAN_FOR_PED_DANGER (11.0f)
#define SAFE_DISTANCE_TO_PED (3.0f)
@@ -77,12 +81,30 @@
#define DISTANCE_BETWEEN_CAR_AND_DEAD_PED (6.0f)
#define PROBABILITY_OF_PASSENGER_IN_VEHICLE (0.125f)
-#define ONSCREEN_DESPAWN_RANGE (120.0f)
+#ifdef GTA_PSP
+#define ONSCREEN_DESPAWN_RANGE (160.0f)
#define MINIMAL_DISTANCE_TO_SPAWN_ONSCREEN (100.0f)
-#define REQUEST_ONSCREEN_DISTANCE ((ONSCREEN_DESPAWN_RANGE + MINIMAL_DISTANCE_TO_SPAWN_ONSCREEN) / 2)
-#define OFFSCREEN_DESPAWN_RANGE (40.0f)
+#define MAX_DISTANCE_FROM_CAMERA_TO_SPAWN_ONSCREEN (82.5f)
+#else
+#define ONSCREEN_DESPAWN_RANGE (190.0f)
+#define MINIMAL_DISTANCE_TO_SPAWN_ONSCREEN (130.0f)
+#define MAX_DISTANCE_FROM_CAMERA_TO_SPAWN_ONSCREEN (105.0f)
+#endif
+
+#define REQUEST_ONSCREEN_DISTANCE (140.0f)
+#define OFFSCREEN_DESPAWN_RANGE (60.0f)
+#define MINIMAL_DISTANCE_TO_SPAWN_OFFSCREEN (40.0f)
#define EXTENDED_RANGE_DESPAWN_MULTIPLIER (1.5f)
+#ifdef GTA_NETWORK
+const int32 CCarCtrl::MultiplayerCarBanks[TOTAL_MULTIPLAYER_CAR_BANKS][CARS_IN_MULTIPLAYER_BANK] =
+{
+ MI_SANCHEZ, MI_KURUMA, MI_ESPRIT, MI_MULE, MI_DIABLOS, MI_KURUMA, MI_PEREN, MI_STINGER,
+ MI_PCJ600, MI_BOBCAT, MI_BLISTA, MI_LANDSTAL,MI_SENTINEL,MI_MOONBEAM,MI_MANANA, MI_PEREN,
+ MI_SANCHEZ2,MI_PCJ600, MI_STALLION,MI_MANANA, MI_LINERUN, MI_RCBANDIT,MI_MRWONGS, MI_STINGER
+};
+#endif
+
bool CCarCtrl::bMadDriversCheat;
int CCarCtrl::NumLawEnforcerCars;
int CCarCtrl::NumAmbulancesOnDuty;
@@ -108,6 +130,15 @@ int32 CCarCtrl::CarFreqArrays[TOTAL_CUSTOM_CLASSES][MAX_CAR_MODELS_IN_ARRAY];
int32 CCarCtrl::LoadedCarsArray[TOTAL_CUSTOM_CLASSES][MAX_CAR_MODELS_IN_ARRAY];
CVehicle* apCarsToKeep[MAX_CARS_TO_KEEP];
uint32 aCarsToKeepTime[MAX_CARS_TO_KEEP];
+uint32 CCarCtrl::maxRandomMpCars = 20;
+bool CCarCtrl::scriptControlsMpCarLimit = false;
+
+bool gbEmergencyVehiclesEnabled = true;
+
+#ifdef GTA_NETWORK // TMP
+extern bool gIsMultiplayerGame;
+extern int8 nAmbientCarBank; // actually gMultiGame.nAmbientCarBank (TODO)
+#endif
void
CCarCtrl::GenerateRandomCars()
@@ -141,31 +172,60 @@ CCarCtrl::GenerateOneRandomCar()
CZoneInfo zone;
CTheZones::GetZoneInfoForTimeOfDay(&vecTargetPos, &zone);
pPlayer->m_nTrafficMultiplier = pPlayer->m_fRoadDensity * zone.carDensity;
- if (NumRandomCars >= pPlayer->m_nTrafficMultiplier * CarDensityMultiplier * CIniFile::CarNumberMultiplier)
- return;
- if (NumFiretrucksOnDuty + NumAmbulancesOnDuty + NumParkedCars + NumMissionCars + NumLawEnforcerCars + NumRandomCars >= MaxNumberOfCarsInUse)
- return;
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
+ // TODO (count number of players within 250 meters from spawn position
+ int numPlayersClose = 1;
+ if (NumRandomCars >= pPlayer->m_nTrafficMultiplier * CarDensityMultiplier * CIniFile::CarNumberMultiplier * numPlayersClose)
+ return;
+ if (NumFiretrucksOnDuty + NumAmbulancesOnDuty + NumParkedCars + NumMissionCars + NumLawEnforcerCars + NumRandomCars >= MaxNumberOfCarsInUse)
+ return;
+ }
+ else
+#endif
+ {
+ if (NumRandomCars >= pPlayer->m_nTrafficMultiplier * CarDensityMultiplier * CIniFile::CarNumberMultiplier)
+ return;
+ if (NumFiretrucksOnDuty + NumAmbulancesOnDuty + NumParkedCars + NumMissionCars + NumLawEnforcerCars + NumRandomCars >= MaxNumberOfCarsInUse)
+ return;
+ }
CWanted* pWanted = pPlayer->m_pPed->m_pWanted;
int carClass;
int carModel;
- if (pWanted->GetWantedLevel() > 1 && NumLawEnforcerCars < pWanted->m_MaximumLawEnforcerVehicles &&
- pWanted->m_CurrentCops < pWanted->m_MaxCops && !CGame::IsInInterior() && (
- pWanted->GetWantedLevel() > 3 ||
- pWanted->GetWantedLevel() > 2 && CTimer::GetTimeInMilliseconds() > LastTimeLawEnforcerCreated + 5000 ||
- pWanted->GetWantedLevel() > 1 && CTimer::GetTimeInMilliseconds() > LastTimeLawEnforcerCreated + 8000)) {
- /* Last pWanted->GetWantedLevel() > 1 is unnecessary but I added it for better readability. */
- /* Wouldn't be surprised it was there originally but was optimized out. */
- carClass = COPS;
- carModel = ChoosePoliceCarModel();
- }else{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
carModel = ChooseModel(&zone, &carClass);
- if (carModel == -1 || (carClass == COPS && pWanted->GetWantedLevel() >= 1))
- /* All cop spawns with wanted level are handled by condition above. */
- /* In particular it means that cop cars never spawn if player has wanted level of 1. */
+ if (carModel == -1)
return;
}
+ else
+#endif
+ {
+ if (pWanted->GetWantedLevel() > 1 && NumLawEnforcerCars < pWanted->m_MaximumLawEnforcerVehicles &&
+ pWanted->m_CurrentCops < pWanted->m_MaxCops && !CGame::IsInInterior() && (
+ pWanted->GetWantedLevel() > 3 ||
+ pWanted->GetWantedLevel() > 2 && CTimer::GetTimeInMilliseconds() > LastTimeLawEnforcerCreated + 5000 ||
+ pWanted->GetWantedLevel() > 1 && CTimer::GetTimeInMilliseconds() > LastTimeLawEnforcerCreated + 8000)) {
+ /* Last pWanted->GetWantedLevel() > 1 is unnecessary but I added it for better readability. */
+ /* Wouldn't be surprised it was there originally but was optimized out. */
+ carClass = COPS;
+ carModel = ChoosePoliceCarModel();
+ }
+ else {
+ for (int i = 0; i < 5; i++) {
+ carModel = ChooseModel(&zone, &carClass);
+ if (carModel == -1)
+ return;
+ if (!(carClass == COPS && pWanted->GetWantedLevel() >= 1))
+ /* All cop spawns with wanted level are handled by condition above. */
+ /* In particular it means that cop cars never spawn if player has wanted level of 1. */
+ break;
+ }
+ }
+ }
float frontX, frontY;
float preferredDistance, angleLimit;
+ float requestMultiplier = 1.0f;
bool invertAngleLimitTest;
CVector spawnPosition;
int32 curNodeId, nextNodeId;
@@ -185,11 +245,14 @@ CCarCtrl::GenerateOneRandomCar()
angleLimit = -1.0f;
bTopDownCamera = true;
invertAngleLimitTest = true;
- preferredDistance = OFFSCREEN_DESPAWN_RANGE + 15.0f;
+ preferredDistance = MINIMAL_DISTANCE_TO_SPAWN_OFFSCREEN + 15.0f;
/* BUG: testForCollision not initialized in original game. */
testForCollision = false;
}else if (!pPlayerVehicle){
/* Player is not in vehicle. */
+ requestMultiplier = 13.0f / 20.0f;
+ if (FrontEndMenuManager.m_PrefsUseWideScreen) // TODO(LCS): static
+ requestMultiplier *= 4.0f / 3.0f;
testForCollision = true;
frontX = TheCamera.CamFrontXNorm;
frontY = TheCamera.CamFrontYNorm;
@@ -199,95 +262,105 @@ CCarCtrl::GenerateOneRandomCar()
/* Forward to his current direction (camera direction). */
angleLimit = 0.707f; /* 45 degrees */
invertAngleLimitTest = true;
- preferredDistance = REQUEST_ONSCREEN_DISTANCE * TheCamera.GenerationDistMultiplier;
+ preferredDistance = REQUEST_ONSCREEN_DISTANCE * requestMultiplier * TheCamera.GenerationDistMultiplier;
break;
case 1:
/* Spawn a vehicle close to player to his side. */
/* Kinda not within camera angle. */
angleLimit = 0.707f; /* 45 degrees */
invertAngleLimitTest = false;
- preferredDistance = OFFSCREEN_DESPAWN_RANGE;
+ preferredDistance = MINIMAL_DISTANCE_TO_SPAWN_OFFSCREEN;
break;
}
- }else if (fPlayerVehicleSpeed > 0.4f){ /* 72 km/h */
+ }
+ else {
+ requestMultiplier = 13.0f / 20.0f;
+ if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON && !FrontEndMenuManager.m_PrefsUseWideScreen)
+ requestMultiplier *= 0.9f;
+ if (FrontEndMenuManager.m_PrefsUseWideScreen) // TODO(LCS): static
+ requestMultiplier *= 4.0f / 3.0f;
+ if (fPlayerVehicleSpeed > 0.4f) { /* 72 km/h */
/* Player is moving fast in vehicle */
/* Prefer spawning vehicles very far away from him. */
- frontX = vecPlayerVehicleSpeed.x / fPlayerVehicleSpeed;
- frontY = vecPlayerVehicleSpeed.y / fPlayerVehicleSpeed;
- testForCollision = false;
- switch (CTimer::GetFrameCounter() & 3) {
- case 0:
- case 1:
- /* Spawn a vehicle in a very narrow gap in front of a player */
- angleLimit = 0.85f; /* approx 30 degrees */
- invertAngleLimitTest = true;
- preferredDistance = REQUEST_ONSCREEN_DISTANCE * TheCamera.GenerationDistMultiplier;
- break;
- case 2:
- /* Spawn a vehicle relatively far away from player. */
- /* Forward to his current direction (camera direction). */
- angleLimit = 0.707f; /* 45 degrees */
- invertAngleLimitTest = true;
- preferredDistance = REQUEST_ONSCREEN_DISTANCE * TheCamera.GenerationDistMultiplier;
- break;
- case 3:
- /* Spawn a vehicle close to player to his side. */
- /* Kinda not within camera angle. */
- angleLimit = 0.707f; /* 45 degrees */
- invertAngleLimitTest = false;
- preferredDistance = OFFSCREEN_DESPAWN_RANGE;
- break;
+ frontX = vecPlayerVehicleSpeed.x / fPlayerVehicleSpeed;
+ frontY = vecPlayerVehicleSpeed.y / fPlayerVehicleSpeed;
+ testForCollision = false;
+ switch (CTimer::GetFrameCounter() & 3) {
+ case 0:
+ case 1:
+ /* Spawn a vehicle in a very narrow gap in front of a player */
+ angleLimit = 0.85f; /* approx 30 degrees */
+ invertAngleLimitTest = true;
+ preferredDistance = REQUEST_ONSCREEN_DISTANCE * requestMultiplier * TheCamera.GenerationDistMultiplier;
+ break;
+ case 2:
+ /* Spawn a vehicle relatively far away from player. */
+ /* Forward to his current direction (camera direction). */
+ angleLimit = 0.707f; /* 45 degrees */
+ invertAngleLimitTest = true;
+ preferredDistance = REQUEST_ONSCREEN_DISTANCE * requestMultiplier * TheCamera.GenerationDistMultiplier;
+ break;
+ case 3:
+ /* Spawn a vehicle close to player to his side. */
+ /* Kinda not within camera angle. */
+ angleLimit = 0.707f; /* 45 degrees */
+ invertAngleLimitTest = false;
+ preferredDistance = MINIMAL_DISTANCE_TO_SPAWN_OFFSCREEN;
+ break;
+ }
}
- }else if (fPlayerVehicleSpeed > 0.1f){ /* 18 km/h */
- /* Player is moving moderately fast in vehicle */
- /* Spawn more vehicles to player's side. */
- frontX = vecPlayerVehicleSpeed.x / fPlayerVehicleSpeed;
- frontY = vecPlayerVehicleSpeed.y / fPlayerVehicleSpeed;
- testForCollision = false;
- switch (CTimer::GetFrameCounter() & 3) {
- case 0:
- /* Spawn a vehicle in a very narrow gap in front of a player */
- angleLimit = 0.85f; /* approx 30 degrees */
- invertAngleLimitTest = true;
- preferredDistance = REQUEST_ONSCREEN_DISTANCE * TheCamera.GenerationDistMultiplier;
- break;
- case 1:
- /* Spawn a vehicle relatively far away from player. */
- /* Forward to his current direction (camera direction). */
- angleLimit = 0.707f; /* 45 degrees */
- invertAngleLimitTest = true;
- preferredDistance = REQUEST_ONSCREEN_DISTANCE * TheCamera.GenerationDistMultiplier;
- break;
- case 2:
- case 3:
- /* Spawn a vehicle close to player to his side. */
- /* Kinda not within camera angle. */
- angleLimit = 0.707f; /* 45 degrees */
- invertAngleLimitTest = false;
- preferredDistance = OFFSCREEN_DESPAWN_RANGE;
- break;
+ else if (fPlayerVehicleSpeed > 0.1f) { /* 18 km/h */
+ /* Player is moving moderately fast in vehicle */
+ /* Spawn more vehicles to player's side. */
+ frontX = vecPlayerVehicleSpeed.x / fPlayerVehicleSpeed;
+ frontY = vecPlayerVehicleSpeed.y / fPlayerVehicleSpeed;
+ testForCollision = false;
+ switch (CTimer::GetFrameCounter() & 3) {
+ case 0:
+ /* Spawn a vehicle in a very narrow gap in front of a player */
+ angleLimit = 0.85f; /* approx 30 degrees */
+ invertAngleLimitTest = true;
+ preferredDistance = REQUEST_ONSCREEN_DISTANCE * requestMultiplier * TheCamera.GenerationDistMultiplier;
+ break;
+ case 1:
+ /* Spawn a vehicle relatively far away from player. */
+ /* Forward to his current direction (camera direction). */
+ angleLimit = 0.707f; /* 45 degrees */
+ invertAngleLimitTest = true;
+ preferredDistance = REQUEST_ONSCREEN_DISTANCE * requestMultiplier * TheCamera.GenerationDistMultiplier;
+ break;
+ case 2:
+ case 3:
+ /* Spawn a vehicle close to player to his side. */
+ /* Kinda not within camera angle. */
+ angleLimit = 0.707f; /* 45 degrees */
+ invertAngleLimitTest = false;
+ preferredDistance = MINIMAL_DISTANCE_TO_SPAWN_OFFSCREEN;
+ break;
+ }
}
- }else{
- /* Player is in vehicle but moving very slow. */
- /* Then use camera direction instead of vehicle direction. */
- testForCollision = true;
- frontX = TheCamera.CamFrontXNorm;
- frontY = TheCamera.CamFrontYNorm;
- switch (CTimer::GetFrameCounter() & 1) {
- case 0:
- /* Spawn a vehicle relatively far away from player. */
- /* Forward to his current direction (camera direction). */
- angleLimit = 0.707f; /* 45 degrees */
- invertAngleLimitTest = true;
- preferredDistance = REQUEST_ONSCREEN_DISTANCE * TheCamera.GenerationDistMultiplier;
- break;
- case 1:
- /* Spawn a vehicle close to player to his side. */
- /* Kinda not within camera angle. */
- angleLimit = 0.707f; /* 45 degrees */
- invertAngleLimitTest = false;
- preferredDistance = OFFSCREEN_DESPAWN_RANGE;
- break;
+ else {
+ /* Player is in vehicle but moving very slow. */
+ /* Then use camera direction instead of vehicle direction. */
+ testForCollision = true;
+ frontX = TheCamera.CamFrontXNorm;
+ frontY = TheCamera.CamFrontYNorm;
+ switch (CTimer::GetFrameCounter() & 1) {
+ case 0:
+ /* Spawn a vehicle relatively far away from player. */
+ /* Forward to his current direction (camera direction). */
+ angleLimit = 0.707f; /* 45 degrees */
+ invertAngleLimitTest = true;
+ preferredDistance = REQUEST_ONSCREEN_DISTANCE * requestMultiplier * TheCamera.GenerationDistMultiplier;
+ break;
+ case 1:
+ /* Spawn a vehicle close to player to his side. */
+ /* Kinda not within camera angle. */
+ angleLimit = 0.707f; /* 45 degrees */
+ invertAngleLimitTest = false;
+ preferredDistance = MINIMAL_DISTANCE_TO_SPAWN_OFFSCREEN;
+ break;
+ }
}
}
if (!ThePaths.GenerateCarCreationCoors(vecTargetPos.x, vecTargetPos.y, frontX, frontY,
@@ -297,6 +370,8 @@ CCarCtrl::GenerateOneRandomCar()
CPathNode* pCurNode = &ThePaths.m_pathNodes[curNodeId];
CPathNode* pNextNode = &ThePaths.m_pathNodes[nextNodeId];
bool bBoatGenerated = false;
+ if (!OkToCreateVehicleAtThisPosition(spawnPosition))
+ return;
if ((CGeneral::GetRandomNumber() & 0xF) > Min(pCurNode->spawnRate, pNextNode->spawnRate))
return;
if (pCurNode->bWaterPath) {
@@ -346,10 +421,16 @@ CCarCtrl::GenerateOneRandomCar()
CVehicle* pVehicle;
if (CModelInfo::IsBoatModel(carModel))
pVehicle = new CBoat(carModel, RANDOM_VEHICLE);
- else if (CModelInfo::IsBikeModel(carModel))
- pVehicle = new CBike(carModel, RANDOM_VEHICLE);
else
- pVehicle = new CAutomobile(carModel, RANDOM_VEHICLE);
+ {
+ if (CModelInfo::IsBikeModel(carModel))
+ pVehicle = new CBike(carModel, RANDOM_VEHICLE);
+ else
+ pVehicle = new CAutomobile(carModel, RANDOM_VEHICLE);
+#ifdef GTA_NETWORK
+ // TODO
+#endif
+ }
pVehicle->AutoPilot.m_nPrevRouteNode = 0;
pVehicle->AutoPilot.m_nCurrentRouteNode = curNodeId;
pVehicle->AutoPilot.m_nNextRouteNode = nextNodeId;
@@ -367,7 +448,7 @@ CCarCtrl::GenerateOneRandomCar()
pVehicle->AutoPilot.m_nDrivingStyle = DRIVINGSTYLE_STOP_FOR_CARS;
pVehicle->AutoPilot.m_nCarMission = MISSION_CRUISE;
}
- if (carModel == MI_FBIRANCH){
+ if (carModel == MI_FBICAR){
pVehicle->m_currentColour1 = 0;
pVehicle->m_currentColour2 = 0;
}
@@ -589,6 +670,9 @@ CCarCtrl::GenerateOneRandomCar()
break;
}
CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), 0);
+#ifdef GTA_MOBILE
+ //CVisibilityPlugins::SetObjectDistanceAlpha(pVehicle->GetClump(), 0) // TODO(LCS)
+#endif
if (!pVehicle->GetIsOnScreen()){
if ((vecTargetPos - pVehicle->GetPosition()).Magnitude2D() > OFFSCREEN_DESPAWN_RANGE * (pVehicle->bExtendedRange ? EXTENDED_RANGE_DESPAWN_MULTIPLIER : 1.0f)) {
/* Too far away cars that are not visible aren't needed. */
@@ -596,12 +680,12 @@ CCarCtrl::GenerateOneRandomCar()
return;
}
}else{
- if ((vecTargetPos - pVehicle->GetPosition()).Magnitude2D() > TheCamera.GenerationDistMultiplier * (pVehicle->bExtendedRange ? EXTENDED_RANGE_DESPAWN_MULTIPLIER : 1.0f) * ONSCREEN_DESPAWN_RANGE ||
- (vecTargetPos - pVehicle->GetPosition()).Magnitude2D() < TheCamera.GenerationDistMultiplier * MINIMAL_DISTANCE_TO_SPAWN_ONSCREEN) {
+ if ((vecTargetPos - pVehicle->GetPosition()).Magnitude2D() > TheCamera.GenerationDistMultiplier * requestMultiplier * (pVehicle->bExtendedRange ? EXTENDED_RANGE_DESPAWN_MULTIPLIER : 1.0f) * ONSCREEN_DESPAWN_RANGE ||
+ (vecTargetPos - pVehicle->GetPosition()).Magnitude2D() < TheCamera.GenerationDistMultiplier * requestMultiplier * MINIMAL_DISTANCE_TO_SPAWN_ONSCREEN) {
delete pVehicle;
return;
}
- if ((TheCamera.GetPosition() - pVehicle->GetPosition()).Magnitude2D() < 82.5f * TheCamera.GenerationDistMultiplier || bTopDownCamera) {
+ if ((TheCamera.GetPosition() - pVehicle->GetPosition()).Magnitude2D() < MAX_DISTANCE_FROM_CAMERA_TO_SPAWN_ONSCREEN * requestMultiplier * TheCamera.GenerationDistMultiplier || bTopDownCamera) {
delete pVehicle;
return;
}
@@ -635,29 +719,34 @@ CCarCtrl::GenerateOneRandomCar()
CCarAI::AddPoliceCarOccupants(pVehicle);
else {
pVehicle->SetUpDriver();
- int32 passengers = 0;
- for (int i = 0; i < pVehicle->m_nNumMaxPassengers; i++)
- passengers += (CGeneral::GetRandomNumberInRange(0.0f, 1.0f) < PROBABILITY_OF_PASSENGER_IN_VEHICLE) ? 1 : 0;
- if (CModelInfo::IsCarModel(carModel) && (CModelInfo::GetModelInfo(carModel)->GetAnimFileIndex() == CAnimManager::GetAnimationBlockIndex("van") && passengers >= 1))
- passengers = 1;
- for (int i = 0; i < passengers; i++) {
- CPed* pPassenger = pVehicle->SetupPassenger(i);
- if (pPassenger) {
- ++CPopulation::ms_nTotalCarPassengerPeds;
- pPassenger->bCarPassenger = true;
+#ifdef GTA_NETWORK
+ if (!gIsMultiplayerGame)
+#endif
+ {
+ int32 passengers = 0;
+ for (int i = 0; i < pVehicle->m_nNumMaxPassengers; i++)
+ passengers += (CGeneral::GetRandomNumberInRange(0.0f, 1.0f) < PROBABILITY_OF_PASSENGER_IN_VEHICLE) ? 1 : 0;
+ if (CModelInfo::IsCarModel(carModel) && (CModelInfo::GetModelInfo(carModel)->GetAnimFileIndex() == CAnimManager::GetAnimationBlockIndex("van") && passengers >= 1))
+ passengers = 1;
+ for (int i = 0; i < passengers; i++) {
+ CPed* pPassenger = pVehicle->SetupPassenger(i);
+ if (pPassenger) {
+ ++CPopulation::ms_nTotalCarPassengerPeds;
+ pPassenger->bCarPassenger = true;
+ }
}
}
}
int nMadDrivers;
switch (pVehicle->GetVehicleAppearance()) {
case VEHICLE_APPEARANCE_BIKE:
- nMadDrivers = 30;
+ nMadDrivers = 20;
break;
case VEHICLE_APPEARANCE_BOAT:
nMadDrivers = 40;
break;
default:
- nMadDrivers = 6;
+ nMadDrivers = 3;
break;
}
if ((CGeneral::GetRandomNumber() & 0x7F) < nMadDrivers || bMadDriversCheat) {
@@ -714,12 +803,9 @@ CCarCtrl::GenerateOneRandomCar()
}
}
}
-}
-
-bool
-CCarCtrl::BoatWithTallMast(int32 mi)
-{
- return mi == MI_RIO || mi == MI_TROPIC || mi == MI_MARQUIS;
+#ifdef GTA_NETWORK
+ // TODO
+#endif
}
int32
@@ -755,6 +841,22 @@ int32
CCarCtrl::ChooseModel(CZoneInfo* pZone, int* pClass) {
int32 model = -1;
int32 i;
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
+ for (i = 10; i > 0 && (model == -1 || !CStreaming::HasModelLoaded(model)); i--) {
+ *pClass = ChooseCarRating(pZone);
+ model = ChooseCarModel(*pClass);
+ bool found = false;
+ for (int j = 0; j < 8; j++) {
+ if (model == MultiplayerCarBanks[nAmbientCarBank][j])
+ found = true;
+ }
+ if (!found)
+ model = -1;
+ }
+ return model;
+ }
+#endif
for (i = 10; i > 0 && (model == -1 || !CStreaming::HasModelLoaded(model)); i--) {
int rnd = CGeneral::GetRandomNumberInRange(0, 1000);
@@ -781,6 +883,9 @@ CCarCtrl::ChooseModel(CZoneInfo* pZone, int* pClass) {
}
if (i == 0)
return -1;
+ CColModel* pColModel = CModelInfo::GetColModel(model);
+ if (!pColModel || pColModel->boundingSphere.radius > 20.0f)
+ return -1;
return model;
}
@@ -941,6 +1046,7 @@ CCarCtrl::RemoveCarsIfThePoolGetsFull(void)
}
}
if (pClosestVehicle) {
+ debug(":::::::::::\'Nearest removed\' cause pools was full -> NumRandomCars %d\n", NumRandomCars);
CWorld::Remove(pClosestVehicle);
delete pClosestVehicle;
}
@@ -963,7 +1069,12 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
return;
}
float distanceToPlayer = (pVehicle->GetPosition() - vecPlayerPos).Magnitude2D();
- float threshold = OFFSCREEN_DESPAWN_RANGE;
+ float despawnMultiplier = 1.0f;
+#if !defined EXTENDED_OFFSCREEN_DESPAWN_RANGE || defined GTA_PSP
+ if (FindPlayerVehicle() && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON && !FrontEndMenuManager.m_PrefsUseWideScreen)
+ despawnMultiplier = 0.75f;
+#endif
+ float threshold = OFFSCREEN_DESPAWN_RANGE * despawnMultiplier;
#ifndef EXTENDED_OFFSCREEN_DESPAWN_RANGE
if (pVehicle->GetIsOnScreen() ||
TheCamera.Cams[TheCamera.ActiveCam].LookingLeft ||
@@ -979,7 +1090,7 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
)
#endif
{
- threshold = ONSCREEN_DESPAWN_RANGE * TheCamera.GenerationDistMultiplier;
+ threshold = ONSCREEN_DESPAWN_RANGE * despawnMultiplier * TheCamera.GenerationDistMultiplier;
}
#ifndef EXTENDED_OFFSCREEN_DESPAWN_RANGE
if (TheCamera.GetForward().z < -0.9f)
@@ -991,6 +1102,14 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
if (pVehicle->GetIsOnScreen()){
pVehicle->bFadeOut = true;
}else{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
+ // TODO
+ if (false)
+ MultiPlayerRemoveVehicleAndDriver(pVehicle);
+ return;
+ }
+#endif
CWorld::Remove(pVehicle);
delete pVehicle;
}
@@ -1008,10 +1127,33 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
!CTrafficLights::ShouldCarStopForLight(pVehicle, true) &&
!CTrafficLights::ShouldCarStopForBridge(pVehicle) &&
!CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())){
- CWorld::Remove(pVehicle);
- delete pVehicle;
+#ifdef GTA_NETWORK
+ if (!gIsMultiplayerGame)
+#endif
+ {
+ CWorld::Remove(pVehicle);
+ delete pVehicle;
+ return;
+ }
+#ifdef GTA_NETWORK
+ if (false) // TODO(LCS): figure out condition for mp
+ MultiPlayerRemoveVehicleAndDriver(pVehicle);
+#endif
+ }
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
+ if (pVehicle->GetStatus() == STATUS_WRECKED && CTimer::GetLogicalFrameCounter() == pVehicle->m_randomSeed) {
+ if ((pVehicle->GetPosition() - vecPlayerPos).MagnitudeSqr() > SQR(6.5f)) {
+ if (pVehicle->GetMoveSpeed().MagnitudeSqr() <= SQR(0.01f)) {
+ printf("viciously removing dead vehicle");
+ CWorld::Remove(pVehicle);
+ delete pVehicle;
+ }
+ }
+ }
return;
}
+#endif
if (pVehicle->GetStatus() == STATUS_WRECKED) {
if (pVehicle->m_nTimeOfDeath != 0) {
if (CTimer::GetTimeInMilliseconds() > pVehicle->m_nTimeOfDeath + 60000 &&
@@ -1347,6 +1489,10 @@ void CCarCtrl::SlowCarDownForOtherCar(CEntity* pOtherEntity, CVehicle* pVehicle,
pVehicle->AutoPilot.m_bSlowedDownBecauseOfCars = true;
*pSpeed = Min(*pSpeed, minProximity * curSpeed);
}
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame)
+ return;
+#endif
if (minProximity >= 0.0f && minProximity < 0.5f && pOtherEntity->IsVehicle() &&
CTimer::GetTimeInMilliseconds() - pVehicle->AutoPilot.m_nTimeToStartMission > 15000 &&
CTimer::GetTimeInMilliseconds() - pOtherVehicle->AutoPilot.m_nTimeToStartMission > 15000){
@@ -1594,16 +1740,12 @@ void CCarCtrl::WeaveForOtherCar(CEntity* pOtherEntity, CVehicle* pVehicle, float
diffToLeftAngle = ABS(diffToLeftAngle);
float angleToWeave = lengthToEvade / 2;
if (diffToLeftAngle < angleToWeave){
- *pAngleToWeaveLeft = angleBetweenVehicles - angleToWeave;
- while (*pAngleToWeaveLeft < -PI)
- *pAngleToWeaveLeft += TWOPI;
+ *pAngleToWeaveLeft = LimitRadianAngle(angleBetweenVehicles - angleToWeave);
}
float diffToRightAngle = LimitRadianAngle(angleBetweenVehicles - *pAngleToWeaveRight);
diffToRightAngle = ABS(diffToRightAngle);
if (diffToRightAngle < angleToWeave){
- *pAngleToWeaveRight = angleBetweenVehicles + angleToWeave;
- while (*pAngleToWeaveRight > PI)
- *pAngleToWeaveRight -= TWOPI;
+ *pAngleToWeaveRight = LimitRadianAngle(angleBetweenVehicles + angleToWeave);
}
}
@@ -1642,16 +1784,12 @@ void CCarCtrl::WeaveForPed(CEntity* pOtherEntity, CVehicle* pVehicle, float* pAn
diffToLeftAngle = ABS(diffToLeftAngle);
float angleToWeave = lengthToEvade / 2;
if (diffToLeftAngle < angleToWeave) {
- *pAngleToWeaveLeft = angleBetweenVehicleAndPed - angleToWeave;
- while (*pAngleToWeaveLeft < -PI)
- *pAngleToWeaveLeft += TWOPI;
+ *pAngleToWeaveLeft = LimitRadianAngle(angleBetweenVehicleAndPed - angleToWeave);
}
float diffToRightAngle = LimitRadianAngle(angleBetweenVehicleAndPed - *pAngleToWeaveRight);
diffToRightAngle = ABS(diffToRightAngle);
if (diffToRightAngle < angleToWeave) {
- *pAngleToWeaveRight = angleBetweenVehicleAndPed + angleToWeave;
- while (*pAngleToWeaveRight > PI)
- *pAngleToWeaveRight -= TWOPI;
+ *pAngleToWeaveRight = LimitRadianAngle(angleBetweenVehicleAndPed + angleToWeave);
}
}
@@ -1714,16 +1852,12 @@ void CCarCtrl::WeaveForObject(CEntity* pOtherEntity, CVehicle* pVehicle, float*
diffToLeftAngle = ABS(diffToLeftAngle);
float angleToWeave = lengthToEvade / 2;
if (diffToLeftAngle < angleToWeave) {
- *pAngleToWeaveLeft = angleBetweenVehicleAndObject - angleToWeave;
- while (*pAngleToWeaveLeft < -PI)
- *pAngleToWeaveLeft += TWOPI;
+ *pAngleToWeaveLeft = LimitRadianAngle(angleBetweenVehicleAndObject - angleToWeave);
}
float diffToRightAngle = LimitRadianAngle(angleBetweenVehicleAndObject - *pAngleToWeaveRight);
diffToRightAngle = ABS(diffToRightAngle);
if (diffToRightAngle < angleToWeave) {
- *pAngleToWeaveRight = angleBetweenVehicleAndObject + angleToWeave;
- while (*pAngleToWeaveRight > PI)
- *pAngleToWeaveRight -= TWOPI;
+ *pAngleToWeaveRight = LimitRadianAngle(angleBetweenVehicleAndObject + angleToWeave);
}
}
@@ -1765,7 +1899,7 @@ bool CCarCtrl::PickNextNodeAccordingStrategy(CVehicle* pVehicle)
void CCarCtrl::PickNextNodeRandomly(CVehicle* pVehicle)
{
if (pVehicle->m_nRouteSeed)
- CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed);
+ CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed++);
int32 prevNode = pVehicle->AutoPilot.m_nCurrentRouteNode;
int32 curNode = pVehicle->AutoPilot.m_nNextRouteNode;
uint8 totalLinks = ThePaths.m_pathNodes[curNode].numLinks;
@@ -1851,13 +1985,15 @@ void CCarCtrl::PickNextNodeRandomly(CVehicle* pVehicle)
pNextPathNode = &ThePaths.m_pathNodes[pVehicle->AutoPilot.m_nNextRouteNode];
if ((!pNextPathNode->bDisabled || pPrevPathNode->bDisabled) &&
(!pNextPathNode->bBetweenLevels || pPrevPathNode->bBetweenLevels || !pVehicle->AutoPilot.m_bStayInCurrentLevel))
- /* Nice way to exit loop but this will fail because this is used for indexing! */
- nextLink = 1000;
+ break;
}
}
- if (nextLink < 999)
+ if (nextLink >= totalLinks) {
/* If everything else failed, turn vehicle around */
+ nextLink = 0;
+ debug("Couldn\'t find ANYTHING. Just go back from where we came.\n");
pVehicle->AutoPilot.m_nNextRouteNode = prevNode;
+ }
}
pNextPathNode = &ThePaths.m_pathNodes[pVehicle->AutoPilot.m_nNextRouteNode];
pNextLink = &ThePaths.m_carPathLinks[ThePaths.m_carPathConnections[nextLink + pCurPathNode->firstLink]];
@@ -1970,7 +2106,7 @@ void CCarCtrl::PickNextNodeToChaseCar(CVehicle* pVehicle, float targetX, float t
#endif
{
if (pVehicle->m_nRouteSeed)
- CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed);
+ CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed++);
int prevNode = pVehicle->AutoPilot.m_nCurrentRouteNode;
int curNode = pVehicle->AutoPilot.m_nNextRouteNode;
CPathNode* pPrevNode = &ThePaths.m_pathNodes[prevNode];
@@ -1984,7 +2120,7 @@ void CCarCtrl::PickNextNodeToChaseCar(CVehicle* pVehicle, float targetX, float t
#else
CVector(targetX, targetY, 0.0f),
#endif
- pTargetNode, &numNodes, 2, pVehicle, &distanceToTargetNode, 999999.9f, -1);
+ pTargetNode, &numNodes, 2, pVehicle, &distanceToTargetNode, 100.0f, -1);
int newNextNode;
int nextLink;
@@ -2099,14 +2235,14 @@ void CCarCtrl::PickNextNodeToChaseCar(CVehicle* pVehicle, float targetX, float t
bool CCarCtrl::PickNextNodeToFollowPath(CVehicle* pVehicle)
{
if (pVehicle->m_nRouteSeed)
- CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed);
+ CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed++);
int curNode = pVehicle->AutoPilot.m_nNextRouteNode;
CPathNode* pCurNode = &ThePaths.m_pathNodes[curNode];
if (pVehicle->AutoPilot.m_nPathFindNodesCount == 0){
ThePaths.DoPathSearch(0, pVehicle->GetPosition(), curNode,
pVehicle->AutoPilot.m_vecDestinationCoors, pVehicle->AutoPilot.m_aPathFindNodesInfo,
&pVehicle->AutoPilot.m_nPathFindNodesCount, NUM_PATH_NODES_IN_AUTOPILOT,
- pVehicle, nil, 999999.9f, -1);
+ pVehicle, nil, 100.0f, -1);
if (pVehicle->AutoPilot.m_nPathFindNodesCount < 2)
return true;
pVehicle->AutoPilot.RemoveOnePathNode();
@@ -2418,6 +2554,16 @@ void CCarCtrl::SteerAICarWithPhysics_OnlyMission(CVehicle* pVehicle, float* pSwe
*pHandbrake = true;
return;
case MISSION_CRUISE:
+ if (CTrafficLights::ShouldCarStopForBridge(pVehicle)) {
+ *pAccel = 0.0f;
+ *pBrake = 1.0f;
+ *pHandbrake = true;
+#ifdef FIX_BUGS
+ *pSwerve = 0.0f;
+#endif
+ break;
+ }
+ // fallthough
case MISSION_RAMPLAYER_FARAWAY:
case MISSION_BLOCKPLAYER_FARAWAY:
case MISSION_GOTOCOORDS:
@@ -2488,11 +2634,19 @@ void CCarCtrl::SteerAICarWithPhysics_OnlyMission(CVehicle* pVehicle, float* pSwe
*pHandbrake = false;
return;
case MISSION_RAMCAR_CLOSE:
+ if (!pVehicle->AutoPilot.m_pTargetCar) {
+ debug("NO TARGET VEHICLE FOR MISSION_RAMCAR_CLOSE\n");
+ return;
+ }
SteerAICarWithPhysicsHeadingForTarget(pVehicle, pVehicle->AutoPilot.m_pTargetCar,
pVehicle->AutoPilot.m_pTargetCar->GetPosition().x, pVehicle->AutoPilot.m_pTargetCar->GetPosition().y,
pSwerve, pAccel, pBrake, pHandbrake);
return;
case MISSION_BLOCKCAR_CLOSE:
+ if (!pVehicle->AutoPilot.m_pTargetCar) {
+ debug("NO TARGET VEHICLE FOR MISSION_BLOCKCAR_CLOSE\n");
+ return;
+ }
SteerAICarWithPhysicsTryingToBlockTarget(pVehicle,
pVehicle->AutoPilot.m_pTargetCar->GetPosition().x,
pVehicle->AutoPilot.m_pTargetCar->GetPosition().y,
@@ -2501,6 +2655,9 @@ void CCarCtrl::SteerAICarWithPhysics_OnlyMission(CVehicle* pVehicle, float* pSwe
pSwerve, pAccel, pBrake, pHandbrake);
return;
case MISSION_BLOCKCAR_HANDBRAKESTOP:
+ if (!pVehicle->AutoPilot.m_pTargetCar) {
+ return;
+ }
SteerAICarWithPhysicsTryingToBlockTarget_Stop(pVehicle,
pVehicle->AutoPilot.m_pTargetCar->GetPosition().x,
pVehicle->AutoPilot.m_pTargetCar->GetPosition().y,
@@ -3109,7 +3266,7 @@ bool CCarCtrl::JoinCarWithRoadSystemGotoCoors(CVehicle* pVehicle, CVector vecTar
{
pVehicle->AutoPilot.m_vecDestinationCoors = vecTarget;
ThePaths.DoPathSearch(0, pVehicle->GetPosition(), -1, vecTarget, pVehicle->AutoPilot.m_aPathFindNodesInfo,
- &pVehicle->AutoPilot.m_nPathFindNodesCount, NUM_PATH_NODES_IN_AUTOPILOT, pVehicle, nil, 999999.9f, -1);
+ &pVehicle->AutoPilot.m_nPathFindNodesCount, NUM_PATH_NODES_IN_AUTOPILOT, pVehicle, nil, 100.0f, -1);
ThePaths.RemoveBadStartNode(pVehicle->GetPosition(),
pVehicle->AutoPilot.m_aPathFindNodesInfo, &pVehicle->AutoPilot.m_nPathFindNodesCount);
if (pVehicle->AutoPilot.m_nPathFindNodesCount < 2){
@@ -3130,7 +3287,7 @@ bool CCarCtrl::JoinCarWithRoadSystemGotoCoors(CVehicle* pVehicle, CVector vecTar
void CCarCtrl::FindLinksToGoWithTheseNodes(CVehicle* pVehicle)
{
if (pVehicle->m_nRouteSeed)
- CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed);
+ CGeneral::SetRandomSeed(pVehicle->m_nRouteSeed++);
int nextLink;
CPathNode* pCurNode = &ThePaths.m_pathNodes[pVehicle->AutoPilot.m_nCurrentRouteNode];
for (nextLink = 0; nextLink < 12; nextLink++)
@@ -3168,14 +3325,22 @@ void CCarCtrl::FindLinksToGoWithTheseNodes(CVehicle* pVehicle)
void CCarCtrl::GenerateEmergencyServicesCar(void)
{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame)
+ return;
+#endif
if (FindPlayerPed()->m_pWanted->GetWantedLevel() > 3)
return;
if (CGame::IsInInterior())
return;
+#ifndef GTA_PSP
+ if (TheCamera.m_WideScreenOn)
+ return;
+#endif
if (NumFiretrucksOnDuty + NumAmbulancesOnDuty + NumParkedCars + NumMissionCars +
NumLawEnforcerCars + NumRandomCars > MaxNumberOfCarsInUse)
return;
- if (NumAmbulancesOnDuty == 0){
+ if (NumAmbulancesOnDuty == 0 && gbEmergencyVehiclesEnabled){
if (gAccidentManager.CountActiveAccidents() < 2){
if (CStreaming::HasModelLoaded(MI_AMBULAN))
CStreaming::SetModelIsDeletable(MI_MEDIC);
@@ -3195,7 +3360,7 @@ void CCarCtrl::GenerateEmergencyServicesCar(void)
}
}
}
- if (NumFiretrucksOnDuty == 0){
+ if (NumFiretrucksOnDuty == 0 && gbEmergencyVehiclesEnabled){
if (gFireManager.GetTotalActiveFires() < 3){
if (CStreaming::HasModelLoaded(MI_FIRETRUCK))
CStreaming::SetModelIsDeletable(MI_FIREMAN);
@@ -3225,6 +3390,10 @@ void CCarCtrl::GenerateEmergencyServicesCar(void)
bool CCarCtrl::GenerateOneEmergencyServicesCar(uint32 mi, CVector vecPos)
{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame)
+ return;
+#endif
CVector pPlayerPos = FindPlayerCentreOfWorld(CWorld::PlayerInFocus);
bool created = false;
int attempts = 0;
@@ -3290,6 +3459,11 @@ bool CCarCtrl::GenerateOneEmergencyServicesCar(uint32 mi, CVector vecPos)
pVehicle->m_bSirenOrAlarm = true;
CWorld::Add(pVehicle);
printf("CREATED EMERGENCY VEHICLE\n");
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
+ // TODO (register car for network)
+ }
+#endif
return true;
}
@@ -3359,6 +3533,22 @@ bool CCarCtrl::MapCouldMoveInThisArea(float x, float y)
#endif
}
+bool
+CCarCtrl::BoatWithTallMast(int32 mi)
+{
+ return mi == MI_RIO || mi == MI_TROPIC || mi == MI_MARQUIS;
+}
+
+bool CCarCtrl::OkToCreateVehicleAtThisPosition(const CVector& pos)
+{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame) {
+ // TODO
+ }
+#endif
+ return true;
+}
+
float CCarCtrl::FindSpeedMultiplierWithSpeedFromNodes(int8 type)
{
switch (type)
@@ -3368,3 +3558,64 @@ float CCarCtrl::FindSpeedMultiplierWithSpeedFromNodes(int8 type)
}
return 1.0f;
}
+
+void CCarCtrl::RenderDebugInfo(CVehicle* pVehicle)
+{
+ if (!pVehicle->AutoPilot.m_nNextRouteNode || !pVehicle->AutoPilot.m_nCurrentRouteNode)
+ return;
+
+ CPathNode* pCurNode = &ThePaths.m_pathNodes[pVehicle->AutoPilot.m_nCurrentRouteNode];
+ CPathNode* pNextNode = &ThePaths.m_pathNodes[pVehicle->AutoPilot.m_nNextRouteNode];
+ CCarPathLink* pCurLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nCurrentPathNodeInfo];
+ CCarPathLink* pNextLink = &ThePaths.m_carPathLinks[pVehicle->AutoPilot.m_nNextPathNodeInfo];
+
+ CVector vCurNodePos(pCurNode->GetPosition());
+ vCurNodePos.z += 1.0f;
+ CVector vNextNodePos(pNextNode->GetPosition());
+ vNextNodePos.z += 1.0f;
+ CVector vCurLinkDir(pCurLink->GetDirX() * pVehicle->AutoPilot.m_nCurrentDirection, pCurLink->GetDirY() * pVehicle->AutoPilot.m_nCurrentDirection, 0.0f);
+ CVector vNextLinkDir(pNextLink->GetDirX() * pVehicle->AutoPilot.m_nNextDirection, pNextLink->GetDirY() * pVehicle->AutoPilot.m_nNextDirection, 0.0f);
+ vCurLinkDir.Normalise();
+ vNextLinkDir.Normalise();
+
+ if (vCurLinkDir.x * vNextLinkDir.x + vCurLinkDir.y * vNextLinkDir.y < 0.5f) {
+ CVector vCurPos(vCurNodePos);
+ CVector vCurDir(0.0f, 0.0f, 1.0f);
+ for (int i = 0; i < 10; i++) {
+ CVector vPrevPos = vCurPos;
+ CCurves::CalcCurvePoint(&vCurNodePos, &vNextNodePos, &vCurLinkDir, &vNextLinkDir, i * 0.1f, pVehicle->AutoPilot.m_nTimeToSpendOnCurrentCurve, &vCurPos, &vCurDir);
+ // Render3DLine(&vCurPos, &vNextPos, CVector(255.0f, 255.0f, 0.0f, 255.0f)); // <- originally this is called, let's reuse stuff we have
+ // TODO: not drawing :(
+ CLines::RenderLineWithClipping(vPrevPos.x, vPrevPos.y, vCurNodePos.z, vCurPos.x, vCurPos.y, vNextNodePos.z, 0xFFFF00FF, 0xFFFF00FF); // using NodePos for Z coord cause Curves set it to 0
+ }
+ DefinedState();
+ }
+}
+
+void CCarCtrl::SetMultiplayerAmbientCarLimit(uint32 limit)
+{
+ maxRandomMpCars = limit;
+}
+
+void CCarCtrl::ToggleScriptControlsMpCarLimit(bool toggle)
+{
+ scriptControlsMpCarLimit = toggle;
+}
+
+void CCarCtrl::MultiPlayerRemoveVehicleAndDriver(CVehicle* pVehicle)
+{
+ CPed* pDriver = pVehicle->pDriver;
+ CWorld::Remove(pVehicle);
+ delete pVehicle;
+ if (pDriver) {
+ CWorld::Remove(pDriver);
+ delete pDriver;
+ }
+}
+
+void CCarCtrl::Write(base::cRelocatableChunkWriter& writer)
+{
+ writer.AllocateRaw(CarArrays, sizeof(CarArrays), 4);
+ writer.AllocateRaw(TotalNumOfCarsOfRating, sizeof(TotalNumOfCarsOfRating), 4, false, true);
+}
+
diff --git a/src/control/CarCtrl.h b/src/control/CarCtrl.h
index 5efbe275..c6796504 100644
--- a/src/control/CarCtrl.h
+++ b/src/control/CarCtrl.h
@@ -1,6 +1,7 @@
#pragma once
#include "PathFind.h"
#include "Boat.h"
+#include "General.h"
#include "Vehicle.h"
#define GAME_SPEED_TO_METERS_PER_SECOND 50.0f
@@ -16,6 +17,13 @@ enum{
MAX_CAR_MODELS_IN_ARRAY = 25,
};
+#ifdef GTA_NETWORK
+enum {
+ TOTAL_MULTIPLAYER_CAR_BANKS = 3,
+ CARS_IN_MULTIPLAYER_BANK = 8
+};
+#endif
+
#ifdef FIX_BUGS
#define FIX_PATHFIND_BUG
#endif
@@ -130,6 +138,13 @@ public:
static void SteerAIBoatWithPhysicsAttackingPlayer(CVehicle*, float*, float*, float*, bool*);
static void SteerAICarBlockingPlayerForwardAndBack(CVehicle*, float*, float*, float*, bool*);
+ static bool OkToCreateVehicleAtThisPosition(const CVector&);
+ static void RenderDebugInfo(CVehicle*);
+ static void SetMultiplayerAmbientCarLimit(uint32);
+ static void ToggleScriptControlsMpCarLimit(bool);
+ static void MultiPlayerRemoveVehicleAndDriver(CVehicle*);
+ static void Write(base::cRelocatableChunkWriter&);
+
static float GetPositionAlongCurrentCurve(CVehicle* pVehicle)
{
uint32 timeInCurve = CTimer::GetTimeInMilliseconds() - pVehicle->AutoPilot.m_nTimeEnteredCurve;
@@ -138,11 +153,7 @@ public:
static float LimitRadianAngle(float angle)
{
- while (angle < -PI)
- angle += TWOPI;
- while (angle > PI)
- angle -= TWOPI;
- return angle;
+ return CGeneral::LimitRadianAngle(angle);
}
static bool bMadDriversCheat;
@@ -169,6 +180,15 @@ public:
static int32 NumOfLoadedCarsOfRating[TOTAL_CUSTOM_CLASSES];
static int32 CarFreqArrays[TOTAL_CUSTOM_CLASSES][MAX_CAR_MODELS_IN_ARRAY];
static int32 LoadedCarsArray[TOTAL_CUSTOM_CLASSES][MAX_CAR_MODELS_IN_ARRAY];
+
+#ifdef GTA_NETWORK
+ static const int32 MultiplayerCarBanks[TOTAL_MULTIPLAYER_CAR_BANKS][CARS_IN_MULTIPLAYER_BANK];
+#endif
+
+ static uint32 maxRandomMpCars;
+ static bool scriptControlsMpCarLimit;
+
};
-extern CVehicle* apCarsToKeep[MAX_CARS_TO_KEEP]; \ No newline at end of file
+extern CVehicle* apCarsToKeep[MAX_CARS_TO_KEEP];
+extern bool gbEmergencyVehiclesEnabled; \ No newline at end of file
diff --git a/src/control/Curves.cpp b/src/control/Curves.cpp
index 5b590440..9b075fb5 100644
--- a/src/control/Curves.cpp
+++ b/src/control/Curves.cpp
@@ -2,6 +2,8 @@
#include "Curves.h"
+//--LCS: file done except TODO
+
float CCurves::CalcSpeedScaleFactor(CVector* pPoint1, CVector* pPoint2, float dir1X, float dir1Y, float dir2X, float dir2Y)
{
CVector2D dir1(dir1X, dir1Y);
diff --git a/src/control/GameLogic.cpp b/src/control/GameLogic.cpp
index 63c685d1..595845c1 100644
--- a/src/control/GameLogic.cpp
+++ b/src/control/GameLogic.cpp
@@ -46,6 +46,7 @@ float CGameLogic::AfterDeathStartPointOrientation[NUM_SHORTCUT_START_POINTS];
CVector CGameLogic::ShortCutDropOffForMission;
float CGameLogic::ShortCutDropOffOrientationForMission;
bool CGameLogic::MissionDropOffReadyToBeUsed;
+char CGameLogic::mStoredPlayerOutfit[8] = "plr3";
#define SHORTCUT_TAXI_COST (9)
#define TOTAL_BUSTED_AUDIO (28)
@@ -89,7 +90,7 @@ CGameLogic::SortOutStreamingAndMemory(const CVector &pos)
CStreaming::DeleteRwObjectsAfterDeath(pos);
CStreaming::RemoveUnusedModelsInLoadedList();
CGame::DrasticTidyUpMemory(true);
- CWorld::Players[CWorld::PlayerInFocus].m_pPed->Undress("player");
+ CWorld::Players[CWorld::PlayerInFocus].m_pPed->Undress(mStoredPlayerOutfit);
CStreaming::LoadSceneCollision(pos);
CStreaming::LoadScene(pos);
CWorld::Players[CWorld::PlayerInFocus].m_pPed->Dress();
@@ -102,15 +103,6 @@ CGameLogic::Update()
CVector vecRestartPos;
float fRestartFloat;
-#ifdef MISSION_REPLAY
- // what a place to check!
- if (gbTryingPorn4Again) {
- CRunningScript* pScript = CTheScripts::pActiveScripts;
- if (pScript && !CGeneral::faststricmp(pScript->m_abScriptName, "porno4"))
- gbTryingPorn4Again = false;
- }
-#endif
-
if (CCutsceneMgr::IsCutsceneProcessing()) return;
UpdateShortCut();
@@ -401,7 +393,7 @@ CGameLogic::RestorePlayerStuffDuringResurrection(CPlayerPed *pPlayerPed, CVector
CWorld::Add(pPlayerPed);
CHud::ResetWastedText();
CStreaming::StreamZoneModels(pos);
- clearWaterDrop = true;
+ //clearWaterDrop = true;
}
void
@@ -428,7 +420,7 @@ CGameLogic::SetUpShortCut(CVector vStartPos, float fStartAngle, CVector vEndPos,
ShortCutStartOrientation = fStartAngle;
ShortCutDestination = vEndPos;
ShortCutDestinationOrientation = fEndAngle;
- CStreaming::RequestModel(MI_KAUFMAN, 0);
+ CStreaming::RequestModel(MI_CABBIE, 0);
}
void
@@ -460,11 +452,11 @@ CGameLogic::UpdateShortCut()
{
switch (ShortCutState) {
case SHORTCUT_INIT:
- if (!CStreaming::HasModelLoaded(MI_KAUFMAN)) {
- CStreaming::RequestModel(MI_KAUFMAN, 0);
+ if (!CStreaming::HasModelLoaded(MI_CABBIE)) {
+ CStreaming::RequestModel(MI_CABBIE, 0);
return;
}
- pShortCutTaxi = new CAutomobile(MI_KAUFMAN, RANDOM_VEHICLE);
+ pShortCutTaxi = new CAutomobile(MI_CABBIE, RANDOM_VEHICLE);
if (!pShortCutTaxi)
return;
pShortCutTaxi->SetPosition(ShortCutStart);
diff --git a/src/control/GameLogic.h b/src/control/GameLogic.h
index 9b774cc7..a12b4031 100644
--- a/src/control/GameLogic.h
+++ b/src/control/GameLogic.h
@@ -48,4 +48,5 @@ public:
static CVector ShortCutDropOffForMission;
static float ShortCutDropOffOrientationForMission;
static bool MissionDropOffReadyToBeUsed;
+ static char mStoredPlayerOutfit[8];
}; \ No newline at end of file
diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp
index b24c9122..dd9067fc 100644
--- a/src/control/Garages.cpp
+++ b/src/control/Garages.cpp
@@ -8,6 +8,7 @@
#include "DMAudio.h"
#include "General.h"
#include "Font.h"
+#include "Frontend.h"
#include "HandlingMgr.h"
#include "Hud.h"
#include "Messages.h"
@@ -15,7 +16,9 @@
#include "Pad.h"
#include "Particle.h"
#include "PlayerPed.h"
+#include "Radar.h"
#include "Replay.h"
+#include "Script.h"
#include "Stats.h"
#include "Streaming.h"
#include "Text.h"
@@ -26,6 +29,8 @@
#include "VarConsole.h"
#include "SaveBuf.h"
+//--LCS: file done except TODO
+
#define ROTATED_DOOR_OPEN_SPEED (0.015f)
#define ROTATED_DOOR_CLOSE_SPEED (0.02f)
#define DEFAULT_DOOR_OPEN_SPEED (0.035f)
@@ -37,7 +42,7 @@
#define RESPRAY_PRICE (100)
// Distances
-#define DISTANCE_TO_CALL_OFF_CHASE (10.0f)
+#define DISTANCE_TO_CALL_OFF_CHASE (50.0f)
#define DISTANCE_FOR_MRWHOOP_HACK (0.5f)
#define DISTANCE_TO_ACTIVATE_GARAGE (8.0f)
#define DISTANCE_TO_ACTIVATE_KEEPCAR_GARAGE (17.0f)
@@ -94,10 +99,10 @@
const int32 gaCarsToCollectInCraigsGarages[TOTAL_COLLECTCARS_GARAGES][TOTAL_COLLECTCARS_CARS] =
{
- { MI_LANDSTAL, MI_IDAHO, MI_ESPERANT, MI_STALLION, MI_RANCHER, MI_BLISTAC },
- { MI_SABRE, MI_VIRGO, MI_SENTINEL, MI_STRETCH, MI_WASHING, MI_ADMIRAL },
- { MI_CHEETAH, MI_INFERNUS, MI_BANSHEE, MI_PHEONIX, MI_COMET, MI_STINGER },
- { MI_VOODOO, MI_CUBAN, MI_CADDY, MI_BAGGAGE, MI_MRWHOOP, MI_PIZZABOY }
+ { MI_HEARSE, MI_FAGGIO, MI_FREEWAY, MI_SPIDER, MI_MANANA, MI_SHELBY, MI_PONTIAC, MI_ESPRIT, MI_HOTROD, MI_PCJ600, MI_SENTINEL, MI_INFERNUS, MI_BANSHEE, MI_PATRIOT, MI_BFINJECT, MI_LANDSTAL },
+ { MI_HEARSE, MI_FAGGIO, MI_FREEWAY, MI_SPIDER, MI_MANANA, MI_SHELBY, MI_PONTIAC, MI_ESPRIT, MI_HOTROD, MI_PCJ600, MI_SENTINEL, MI_INFERNUS, MI_BANSHEE, MI_PATRIOT, MI_BFINJECT, MI_LANDSTAL },
+ { MI_HEARSE, MI_FAGGIO, MI_FREEWAY, MI_SPIDER, MI_MANANA, MI_SHELBY, MI_PONTIAC, MI_ESPRIT, MI_HOTROD, MI_PCJ600, MI_SENTINEL, MI_INFERNUS, MI_BANSHEE, MI_PATRIOT, MI_BFINJECT, MI_LANDSTAL },
+ { MI_HEARSE, MI_FAGGIO, MI_FREEWAY, MI_SPIDER, MI_MANANA, MI_SHELBY, MI_PONTIAC, MI_ESPRIT, MI_HOTROD, MI_PCJ600, MI_SENTINEL, MI_INFERNUS, MI_BANSHEE, MI_PATRIOT, MI_BFINJECT, MI_LANDSTAL },
};
const int32 gaCarsToCollectIn60Seconds[] = { MI_CHEETAH, MI_TAXI, MI_ESPERANT, MI_SENTINEL, MI_IDAHO };
@@ -121,6 +126,7 @@ CStoredCar CGarages::aCarsInSafeHouses[TOTAL_HIDEOUT_GARAGES][NUM_GARAGE_STORED_
int32 hGarages = AEHANDLE_NONE;
CGarage CGarages::aGarages[NUM_GARAGES];
bool CGarages::bCamShouldBeOutisde;
+uint8 CGarages::CrusherRewardMultiplier;
#ifndef MASTER
bool bPrintNearestObject;
@@ -131,6 +137,7 @@ void CGarages::Init(void)
#ifndef MASTER
VarConsole.Add("Print nearest object", &bPrintNearestObject, true);
#endif
+ CrusherRewardMultiplier = 1;
CrushedCarId = -1;
NumGarages = 0;
MessageEndTime = 0;
@@ -211,7 +218,7 @@ int16 CGarages::AddOne(float X1, float Y1, float Z1, float X2, float Y2, float X
pGarage->m_fSupX = Max(Max(X1, X2), X3);
pGarage->m_fInfY = Min(Min(Min(Y1, Y2), Y3), Y2 + Y3 - Y1);
pGarage->m_fSupY = Max(Max(Y1, Y2), Y3);
- pGarage->m_vecCorner1 = CVector(X1, Y1, Z1);
+ pGarage->m_vecCorner1 = CVector2D(X1, Y1);
pGarage->m_fInfZ = Z1;
pGarage->m_vDir1 = CVector2D(X2 - X1, Y2 - Y1);
pGarage->m_vDir2 = CVector2D(X3 - X1, Y3 - Y1);
@@ -229,6 +236,22 @@ int16 CGarages::AddOne(float X1, float Y1, float Z1, float X2, float Y2, float X
pGarage->m_bRecreateDoorOnNextRefresh = false;
pGarage->m_bRotatedDoor = false;
pGarage->m_bCameraFollowsPlayer = false;
+ pGarage->m_nTimeToStartAction = 0;
+ pGarage->field_2 = false;
+ pGarage->m_nTargetModelIndex = targetId;
+ pGarage->m_bCollectedCarsState = 0;
+ pGarage->m_bDeactivated = false;
+ pGarage->m_bResprayHappened = false;
+ pGarage->m_bInitialized = false;
+ pGarage->m_bSSGarageAcceptedVehicle = false;
+ pGarage->m_bSSGarageStateChanging = false;
+ pGarage->m_bInitialized = InitDoorGubbins(NumGarages, type);
+ return NumGarages++;
+}
+
+bool CGarages::InitDoorGubbins(uint32 id, uint8 type)
+{
+ CGarage* pGarage = &aGarages[id];
pGarage->RefreshDoorPointers(true);
if (pGarage->m_pDoor1) {
pGarage->m_fDoor1Z = pGarage->m_pDoor1->GetPosition().z;
@@ -243,12 +266,6 @@ int16 CGarages::AddOne(float X1, float Y1, float Z1, float X2, float Y2, float X
pGarage->m_fDoorHeight = pGarage->m_pDoor1 ? FindDoorHeightForMI(pGarage->m_pDoor1->GetModelIndex()) : 4.0f;
pGarage->m_fDoorPos = 0.0f;
pGarage->m_eGarageState = GS_FULLYCLOSED;
- pGarage->m_nTimeToStartAction = 0;
- pGarage->field_2 = false;
- pGarage->m_nTargetModelIndex = targetId;
- pGarage->m_bCollectedCarsState = 0;
- pGarage->m_bDeactivated = false;
- pGarage->m_bResprayHappened = false;
switch (type) {
case GARAGE_MISSION:
case GARAGE_COLLECTORSITEMS:
@@ -257,7 +274,6 @@ int16 CGarages::AddOne(float X1, float Y1, float Z1, float X2, float Y2, float X
case GARAGE_COLLECTCARS_2:
case GARAGE_COLLECTCARS_3:
case GARAGE_FORCARTOCOMEOUTOF:
- case GARAGE_60SECONDS:
case GARAGE_MISSION_KEEPCAR:
case GARAGE_FOR_SCRIPT_TO_OPEN:
case GARAGE_HIDEOUT_ONE:
@@ -284,6 +300,7 @@ int16 CGarages::AddOne(float X1, float Y1, float Z1, float X2, float Y2, float X
case GARAGE_BOMBSHOP2:
case GARAGE_BOMBSHOP3:
case GARAGE_RESPRAY:
+ case GARAGE_CRATE_GARAGE:
pGarage->m_eGarageState = GS_OPENED;
pGarage->m_fDoorPos = pGarage->m_fDoorHeight;
break;
@@ -298,7 +315,16 @@ int16 CGarages::AddOne(float X1, float Y1, float Z1, float X2, float Y2, float X
pGarage->UpdateCrusherAngle();
else
pGarage->UpdateDoorsHeight();
- return NumGarages++;
+ return pGarage->m_fDoorHeight > 0.0f;
+}
+
+void CGarages::SetupAnyGaragesForThisIsland(void)
+{
+ for (uint32 i = 0; i < NumGarages; i++) {
+ CGarage* pGarage = &aGarages[i];
+ if (!pGarage->m_bInitialized)
+ pGarage->m_bInitialized = InitDoorGubbins(i, pGarage->m_eGarageType);
+ }
}
void CGarages::ChangeGarageType(int16 garage, uint8 type, int32 mi)
@@ -309,8 +335,27 @@ void CGarages::ChangeGarageType(int16 garage, uint8 type, int32 mi)
pGarage->m_eGarageState = GS_FULLYCLOSED;
}
+void CGarages::LockGarage(int16 garage, bool state)
+{
+ CGarage* pGarage = &aGarages[garage];
+ pGarage->m_bLocked = state;
+ if (pGarage->m_bLocked) {
+ pGarage->m_fDoorPos = 0.0f;
+ pGarage->m_eGarageState = GS_FULLYCLOSED;
+ pGarage->m_nTimeToStartAction = CTimer::GetTimeInMilliseconds() + 2000;
+ pGarage->UpdateDoorsHeight();
+ }
+ else {
+ pGarage->m_eGarageState = GS_OPENING;
+ }
+}
+
void CGarage::Update()
{
+#ifdef GTA_NETWORK
+ if (/* gIsMultiplayerGame && */m_eGarageType != GARAGE_CRATE_GARAGE) // TODO(multiplayer)
+ return;
+#endif
if (m_eGarageType != GARAGE_CRUSHER) {
switch (m_eGarageState) {
case GS_FULLYCLOSED:
@@ -348,7 +393,7 @@ void CGarage::Update()
if (m_bDeactivated && m_eGarageState == GS_FULLYCLOSED)
return;
if (m_bRotatedDoor) {
-#ifdef GTA_PS2
+#if defined GTA_PS2 || defined GTA_PSP
if (m_eGarageState == GS_OPENING) {
if (m_pDoor1) {
if (FindPlayerPed()->m_pCurrentPhysSurface == m_pDoor1)
@@ -432,7 +477,10 @@ void CGarage::Update()
#else
if (FindPlayerVehicle())
#endif
+ {
((CAutomobile*)(FindPlayerVehicle()))->m_fFireBlowUpTimer = 0.0f;
+ FindPlayerVehicle()->m_bGarageTurnedLightsOff = true;
+ }
CWorld::CallOffChaseForArea(
m_fInfX - DISTANCE_TO_CALL_OFF_CHASE,
m_fInfY - DISTANCE_TO_CALL_OFF_CHASE,
@@ -440,6 +488,7 @@ void CGarage::Update()
m_fSupY + DISTANCE_TO_CALL_OFF_CHASE);
break;
case GS_FULLYCLOSED:
+ m_fDoorPos = 0.0f;
if (CTimer::GetTimeInMilliseconds() > m_nTimeToStartAction) {
m_eGarageState = GS_OPENING;
DMAudio.PlayFrontEndSound(SOUND_GARAGE_OPENING, 1);
@@ -474,11 +523,8 @@ void CGarage::Update()
FindPlayerVehicle()->GetRight() = -FindPlayerVehicle()->GetRight();
}
bChangedColour = false;
-#ifdef FIX_BUGS
- if (!FindPlayerVehicle()->IsCar() || !((CAutomobile*)(FindPlayerVehicle()))->bFixedColour) {
-#else
- if (!((CAutomobile*)(FindPlayerVehicle()))->bFixedColour) {
-#endif
+ if ((!FindPlayerVehicle()->IsCar() || !((CAutomobile*)(FindPlayerVehicle()))->bFixedColour) &&
+ (!FindPlayerVehicle()->IsBike() || !((CBike*)(FindPlayerVehicle()))->bFixedColour)) {
uint8 colour1, colour2;
uint16 attempt;
FindPlayerVehicle()->GetModelInfo()->ChooseVehicleColour(colour1, colour2);
@@ -491,12 +537,36 @@ void CGarage::Update()
FindPlayerVehicle()->m_currentColour1 = colour1;
FindPlayerVehicle()->m_currentColour2 = colour2;
if (bChangedColour) {
+ CVector vCorners[] = {
+ CVector(m_fInfX, m_fInfY, 0.0f), CVector(m_fInfX, m_fSupY, 0.0f),
+ CVector(m_fSupX, m_fInfY, 0.0f), CVector(m_fSupX, m_fSupY, 0.0f)
+ };
+ CVector vMiddles[] = {
+ CVector(m_fInfX + (m_fSupX - m_fInfX) / 2, m_fInfY, 0.0f), CVector(m_fInfX, m_fInfY + (m_fSupY - m_fInfY) / 2, 0.0f),
+ CVector(m_fInfX + (m_fSupX - m_fInfX) / 2, m_fSupY, 0.0f), CVector(m_fSupX, m_fInfY + (m_fSupY - m_fInfY) / 2, 0.0f),
+ };
+ int nClosestCornerToCamera = 0;
+ int nClosestMiddleToCamera = 0;
+ for (int i = 1; i < 4; i++) {
+ if ((vCorners[nClosestCornerToCamera] - TheCamera.GetPosition()).Magnitude() >
+ (vCorners[i] - TheCamera.GetPosition()).Magnitude())
+ nClosestCornerToCamera = i;
+ if ((vMiddles[nClosestMiddleToCamera] - TheCamera.GetPosition()).Magnitude() >
+ (vMiddles[i] - TheCamera.GetPosition()).Magnitude())
+ nClosestMiddleToCamera = i;
+ }
+ CVector vDirectionCenterToMiddle = vMiddles[nClosestMiddleToCamera] - CVector(GetGarageCenterX(), GetGarageCenterY(), 0.0f);
+ vDirectionCenterToMiddle.Normalise();
+
for (int i = 0; i < NUM_PARTICLES_IN_RESPRAY; i++) {
- CVector pos;
- pos.x = CGeneral::GetRandomNumberInRange(m_fInfX + 0.5f, m_fSupX - 0.5f);
- pos.y = CGeneral::GetRandomNumberInRange(m_fInfY + 0.5f, m_fSupY - 0.5f);
- pos.z = CGeneral::GetRandomNumberInRange(m_fDoor1Z - 3.0f, m_fDoor1Z + 1.0f);
- CParticle::AddParticle(PARTICLE_GARAGEPAINT_SPRAY, pos, CVector(0.0f, 0.0f, 0.0f), nil, 0.0f, CVehicleModelInfo::ms_vehicleColourTable[colour1]);
+ CVector pos(vMiddles[nClosestMiddleToCamera] - vDirectionCenterToMiddle * 0.5f);
+ CVector dir(CrossProduct(vDirectionCenterToMiddle, CVector(0.0f, 0.0f, 1.0f)));
+ float fDirMultiplier = (vCorners[nClosestCornerToCamera] - vMiddles[nClosestMiddleToCamera]).Magnitude();
+ pos += dir * CGeneral::GetRandomNumberInRange(-1.0f, 1.0f) * fDirMultiplier; // TODO: base::RandomReal?
+ pos += vDirectionCenterToMiddle * CGeneral::GetRandomNumberInRange(-6.0f, 0.4f);
+ dir = vDirectionCenterToMiddle * 0.04f;
+ pos.z = m_fInfZ + CGeneral::GetRandomNumberInRange(-0.4f, 0.0f);
+ CParticle::AddParticle(PARTICLE_GARAGEPAINT_SPRAY, pos, dir, nil, 0.0f, CVehicleModelInfo::mspInfo->ms_vehicleColourTable[colour1]);
}
}
}
@@ -506,8 +576,11 @@ void CGarage::Update()
if (!CGarages::RespraysAreFree) {
CWorld::Players[CWorld::PlayerInFocus].m_nMoney = Max(0, CWorld::Players[CWorld::PlayerInFocus].m_nMoney - RESPRAY_PRICE);
CStats::AutoPaintingBudget += RESPRAY_PRICE;
+ CGarages::TriggerMessage("GA_2", -1, 4000, -1); // New engine and paint job. The cops won't recognize you!
+ }
+ else {
+ CGarages::TriggerMessage("GA_17", -1, 4000, -1);
}
- CGarages::TriggerMessage("GA_2", -1, 4000, -1); // New engine and paint job. The cops won't recognize you!
}
else if (bChangedColour) {
if (CGeneral::GetRandomTrueFalse())
@@ -532,6 +605,8 @@ void CGarage::Update()
UpdateDoorsHeight();
break;
case GS_OPENEDCONTAINSCAR:
+ if (FindPlayerVehicle())
+ FindPlayerVehicle()->m_bGarageTurnedLightsOff = false;
if (IsPlayerOutsideGarage())
m_eGarageState = GS_OPENED;
break;
@@ -544,10 +619,32 @@ void CGarage::Update()
case GARAGE_BOMBSHOP1:
case GARAGE_BOMBSHOP2:
case GARAGE_BOMBSHOP3:
+ if (m_bLocked) {
+ UpdateDoorsHeight();
+ break;
+ }
switch (m_eGarageState) {
case GS_OPENED:
+ UpdateDoorsHeight();
if (IsStaticPlayerCarEntirelyInside()) {
- if (!FindPlayerVehicle() || FindPlayerVehicle()->m_bombType) {
+#ifndef BOMBS_ON_BIKES
+ if (FindPlayerVehicle()->GetVehicleAppearance() == VEHICLE_APPEARANCE_BIKE) {
+ CGarages::TriggerMessage("GA_22", -1, 4000, -1);
+ m_eGarageState = GS_OPENEDCONTAINSCAR;
+ DMAudio.PlayFrontEndSound(SOUND_GARAGE_BOMB_ALREADY_SET, 1);
+ break;
+ }
+#endif
+ if (!FindPlayerVehicle()
+#ifdef FIX_BUGS
+ || (FindPlayerVehicle()->IsCar() && ((CAutomobile*)FindPlayerVehicle())->m_bombType)
+#else
+ || ((CAutomobile*)FindPlayerVehicle())->m_bombType
+#endif
+#ifdef BOMBS_ON_BIKES
+ || (FindPlayerVehicle()->IsBike() && ((CBike*)FindPlayerVehicle())->m_bombType)
+#endif
+ ) {
CGarages::TriggerMessage("GA_5", -1, 4000, -1); //"Your car is already fitted with a bomb"
m_eGarageState = GS_OPENEDCONTAINSCAR;
DMAudio.PlayFrontEndSound(SOUND_GARAGE_BOMB_ALREADY_SET, 1);
@@ -573,6 +670,8 @@ void CGarage::Update()
m_nTimeToStartAction = CTimer::GetTimeInMilliseconds() + TIME_TO_SETUP_BOMB;
DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_CLOSED, 1.0f);
}
+ if (FindPlayerVehicle())
+ FindPlayerVehicle()->m_bGarageTurnedLightsOff = true;
UpdateDoorsHeight();
if (m_eGarageType == GARAGE_BOMBSHOP3)
CStreaming::RequestModel(MI_BOMB, STREAMFLAGS_DONT_REMOVE);
@@ -589,13 +688,38 @@ void CGarage::Update()
if (!CGarages::BombsAreFree)
CWorld::Players[CWorld::PlayerInFocus].m_nMoney = Max(0, CWorld::Players[CWorld::PlayerInFocus].m_nMoney - BOMB_PRICE);
if (FindPlayerVehicle() && (FindPlayerVehicle()->IsCar() || FindPlayerVehicle()->IsBike())) {
-#if (!defined GTA_PS2 || defined FIX_BUGS)
- FindPlayerVehicle()->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
- FindPlayerVehicle()->m_pBombRigger = FindPlayerPed();
-#else // PS2 version contained a bug: CBike was casted to CAutomobile, but due to coincidence it didn't corrupt memory
+#ifdef BOMBS_ON_BIKES
+ if (FindPlayerVehicle()->IsCar()) {
+ ((CAutomobile*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
+ ((CAutomobile*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
+ }
+ else {
+ ((CBike*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
+ ((CBike*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
+ }
+#else
((CAutomobile*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
((CAutomobile*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
#endif
+ // what is this
+ uint32 i = CPools::GetVehiclePool()->GetSize();
+ while (i--) {
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
+ if (pVehicle) {
+ if (pVehicle->IsCar() && pVehicle->GetStatus() == STATUS_WRECKED) {
+ CAutomobile* pCar = (CAutomobile*)pVehicle;
+ pCar->m_pBombRigger = nil;
+ pCar->m_pBlowUpEntity = nil;
+ }
+#ifdef BOMBS_ON_BIKES
+ if (pVehicle->IsBike() && pVehicle->GetStatus() == STATUS_WRECKED) {
+ CBike* pBike = (CBike*)pVehicle;
+ pBike->m_pBombRigger = nil;
+ pBike->m_pBlowUpEntity = nil;
+ }
+#endif
+ }
+ }
if (m_eGarageType == GARAGE_BOMBSHOP3)
CGarages::GivePlayerDetonator();
CStats::KgsOfExplosivesUsed += KGS_OF_EXPLOSIVES_IN_BOMB;
@@ -634,6 +758,7 @@ void CGarage::Update()
CHud::SetHelpMessage(TheText.Get("GA_8"), false); // Use the detonator to activate the bomb.
break;
}
+ CGarages::TriggerMessage(CGarages::BombsAreFree ? "GA_24" : "GA_23", -1, 4000, -1);
CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_GARAGE);
FindPlayerPed()->m_pWanted->m_bIgnoredByCops = false;
}
@@ -651,6 +776,8 @@ void CGarage::Update()
UpdateDoorsHeight();
break;
case GS_OPENEDCONTAINSCAR:
+ if (FindPlayerVehicle())
+ FindPlayerVehicle()->m_bGarageTurnedLightsOff = false;
if (IsPlayerOutsideGarage())
m_eGarageState = GS_OPENED;
break;
@@ -664,16 +791,12 @@ void CGarage::Update()
switch (m_eGarageState) {
case GS_OPENED:
if (((CVector2D)FindPlayerCoors() - CVector2D(GetGarageCenterX(), GetGarageCenterY())).MagnitudeSqr() > SQR(DISTANCE_TO_CLOSE_MISSION_GARAGE)) {
- if ((CTimer::GetFrameCounter() & 0x1F) == 0
-#ifndef GTA_PS2
- && (!m_pTarget || IsEntityTouching3D(m_pTarget))
-#endif
- ) {
+ if ((CTimer::GetFrameCounter() & 0x1F) == 0 && !IsAnyOtherCarTouchingGarage(nil)) {
m_eGarageState = GS_CLOSING;
m_bClosingWithoutTargetCar = true;
}
}
- else if (!FindPlayerVehicle() && m_pTarget && IsEntityEntirelyInside3D(m_pTarget, 0.0f) &&
+ else if (m_pTarget && IsEntityEntirelyInside3D(m_pTarget, 0.0f) &&
IsEntityEntirelyOutside(FindPlayerVehicle() ? (CEntity*)FindPlayerVehicle() : (CEntity*)FindPlayerPed(), 2.0f)) {
CPad::GetPad(0)->SetDisablePlayerControls(PLAYERCONTROL_GARAGE);
FindPlayerPed()->m_pWanted->m_bIgnoredByCops = true;
@@ -685,7 +808,11 @@ void CGarage::Update()
if (m_pTarget)
ThrowCarsNearDoorOutOfGarage(m_pTarget);
m_fDoorPos = Max(0.0f, m_fDoorPos - (m_bRotatedDoor ? ROTATED_DOOR_CLOSE_SPEED : DEFAULT_DOOR_CLOSE_SPEED) * CTimer::GetTimeStep());
- if (m_fDoorPos == 0.0f) {
+ if (!IsEntityEntirelyOutside(FindPlayerPed(), 1.0f)) {
+ printf("FIX FOR IE GARAGE TRAPPING PLAYER\n");
+ m_eGarageState = GS_OPENING;
+ }
+ else if (m_fDoorPos == 0.0f) {
DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_CLOSED, 1.0f);
if (m_bClosingWithoutTargetCar)
m_eGarageState = GS_FULLYCLOSED;
@@ -781,22 +908,21 @@ void CGarage::Update()
UpdateDoorsHeight();
break;
case GS_FULLYCLOSED:
+ if (CTheScripts::IsPlayerOnAMission()) {
+ m_pTarget = nil;
+ break;
+ }
+ if (!IsEntityEntirelyOutside(FindPlayerPed(), 0.0f)) {
+ printf("FIX FOR IE GARAGE TRAPPING PLAYER\n");
+ m_eGarageState = GS_OPENING;
+ }
if (FindPlayerVehicle() &&
CalcSmallestDistToGarageDoorSquared(
FindPlayerVehicle()->GetPosition().x,
FindPlayerVehicle()->GetPosition().y
) < SQR(DISTANCE_TO_ACTIVATE_GARAGE)) {
if (DoesCraigNeedThisCar(FindPlayerVehicle()->GetModelIndex())) {
- if (FindPlayerVehicle()->VehicleCreatedBy == MISSION_VEHICLE)
- CGarages::TriggerMessage("GA_1A", -1, 5000, -1); // Come back when you're not so busy...
- else
- m_eGarageState = GS_OPENING;
- }
- else {
- if (HasCraigCollectedThisCar(FindPlayerVehicle()->GetModelIndex()))
- CGarages::TriggerMessage("GA_20", -1, 5000, -1); // We got more of these than we can shift. Sorry man, no deal.
- else if (FindPlayerSpeed().Magnitude() < MAX_SPEED_TO_SHOW_COLLECTED_MESSAGE)
- CGarages::TriggerMessage("GA_19", -1, 5000, -1); // We're not interested in that model.
+ m_eGarageState = GS_OPENING;
}
}
m_pTarget = nil;
@@ -832,6 +958,7 @@ void CGarage::Update()
m_eGarageState = GS_FULLYCLOSED;
DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_CLOSED, 1.0f);
}
+ UpdateDoorsHeight();
if (!IsGarageEmpty())
m_eGarageState = GS_OPENING;
break;
@@ -852,8 +979,169 @@ void CGarage::Update()
break;
}
break;
+ case GARAGE_CRATE_GARAGE:
+#ifdef GTA_NETWORK
+ {
+ switch (m_eGarageState) {
+ case GS_OPENED:
+ if (m_pSSVehicle) {
+ // if (m_pSSVehicle->GetVehiclePointer() && IsEntityEntirelyInside3D(m_pSSVehicle->GetVehiclePointer())
+ {
+ if (m_pSSTargetCar)
+ m_pSSTargetCar->CleanUpOldReference((CEntity**)&m_pSSTargetCar);
+ // m_pSSTargetCar = m_pSSVehicle->GetVehiclePointer();
+ m_pSSTargetCar->RegisterReference((CEntity**)&m_pSSTargetCar);
+ }
+ // else
+ {
+ if (m_pSSTargetCar)
+ m_pSSTargetCar->CleanUpOldReference((CEntity**)&m_pSSTargetCar);
+ m_pSSTargetCar = nil;
+ }
+ if (m_pSSTargetCar) {
+ if (!FindPlayerVehicle()/* && m_pSSTargetCar == m_pSSVehicle->GetVehiclePointer() */)
+ {
+ if (IsEntityEntirelyOutside(FindPlayerPed(), 6.0f)) {
+ if (FindPlayerPed()->m_fHealth > 0.0f) {
+ CPad::GetPad(0)->SetDisablePlayerControls(PLAYERCONTROL_GARAGE);
+ m_eGarageState = GS_CLOSING;
+ m_bSSGarageStateChanging = true;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case GS_CLOSING:
+ m_fDoorPos = Max(0.0f, m_fDoorPos - (m_bRotatedDoor ? ROTATED_DOOR_CLOSE_SPEED : DEFAULT_DOOR_CLOSE_SPEED) * CTimer::GetTimeStep());
+ if (m_fDoorPos == 0.0f) {
+ // if (? == m_nSSGarageState)
+ {
+ if (m_pSSTargetCar) {
+ // if (m_pSSVehicle->GetVehiclePointer())
+ {
+ if (IsEntityEntirelyInside3D(/* m_pSSVehicle->GetVehiclePointer() */nil, 0.0f)) {
+ if (m_pSSTargetCar)
+ m_pSSTargetCar->CleanUpOldReference((CEntity**)&m_pSSTargetCar);
+ CWorld::Remove(m_pSSTargetCar);
+ delete m_pSSTargetCar;
+ m_pSSTargetCar = nil;
+ m_pSSVehicle = nil;
+ m_bSSGarageAcceptedVehicle = true;
+ printf("Destroying Car Inside Crate....\n");
+ }
+ }
+ }
+ }
+ // TODO: some loop :(
+ CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_GARAGE);
+ m_eGarageState = GS_FULLYCLOSED;
+ DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_CLOSED, 1.0f);
+ }
+ UpdateDoorsHeight();
+ if (!IsGarageEmpty())
+ m_eGarageState = GS_OPENING;
+ break;
+ case GS_FULLYCLOSED:
+ {
+ // if (? == m_nSSGarageState)
+ {
+ if (CalcDistToGarageRectangleSquared(FindPlayerPed()->GetPosition().x, FindPlayerPed()->GetPosition().y) > SQR(10.0f))
+ m_eGarageState = GS_OPENING;
+ }
+ break;
+ }
+ case GS_OPENING:
+ m_fDoorPos = Min(m_fDoorHeight, m_fDoorPos + (m_bRotatedDoor ? ROTATED_DOOR_OPEN_SPEED : DEFAULT_DOOR_OPEN_SPEED) * CTimer::GetTimeStep());
+ if (m_fDoorPos == m_fDoorHeight) {
+ m_bSSGarageStateChanging = false;
+ m_eGarageState = GS_OPENED;
+ DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_OPENED, 1.0f);
+ }
+ UpdateDoorsHeight();
+ break;
+ }
+ break;
+ }
+#endif
case GARAGE_CRUSHER:
+ {
+ switch (m_eGarageState) {
+ case GS_OPENED:
+ {
+ int i = CPools::GetVehiclePool()->GetSize() * (CTimer::GetFrameCounter() % CRUSHER_VEHICLE_TEST_SPAN) / CRUSHER_VEHICLE_TEST_SPAN;
+ int end = CPools::GetVehiclePool()->GetSize() * (CTimer::GetFrameCounter() % CRUSHER_VEHICLE_TEST_SPAN + 1) / CRUSHER_VEHICLE_TEST_SPAN;
+ for (; i < end; i++) {
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
+ if (!pVehicle)
+ continue;
+ if ((pVehicle->IsCar() || pVehicle->IsBike()) && IsEntityEntirelyInside3D(pVehicle, 0.0f)) {
+ m_eGarageState = GS_WAITINGFORCAR;
+ m_pTarget = pVehicle;
+ m_nTimeCrusherCraneActivated = CTimer::GetTimeInMilliseconds();
+ m_pTarget->RegisterReference((CEntity**)&m_pTarget);
+ }
+ }
+ break;
+ }
+ case GS_CLOSING:
+ if (m_pTarget) {
+ m_fDoorPos = Max(0.0f, m_fDoorPos - CRUSHER_CRANE_SPEED * CTimer::GetTimeStep());
+ if (m_fDoorPos < TWOPI / 5) {
+ m_pTarget->bUsesCollision = false;
+ m_pTarget->bAffectedByGravity = false;
+ m_pTarget->SetMoveSpeed(0.0f, 0.0f, 0.0f);
+ }
+ else {
+ m_pTarget->SetMoveSpeed(m_pTarget->GetMoveSpeed() * Pow(0.8f, CTimer::GetTimeStep()));
+ }
+ if (m_fDoorPos == 0.0f) {
+ CGarages::CrushedCarId = CPools::GetVehiclePool()->GetIndex(m_pTarget);
+ float reward = Min(CRUSHER_MAX_REWARD, CRUSHER_MIN_REWARD + m_pTarget->pHandling->nMonetaryValue * m_pTarget->m_fHealth * CRUSHER_REWARD_COEFFICIENT);
+ CWorld::Players[CWorld::PlayerInFocus].m_nMoney += reward * CGarages::CrusherRewardMultiplier;
+ CMessages::AddMessageWithNumber(TheText.Get("CRUSHED"), 5000, 1, reward* CGarages::CrusherRewardMultiplier, -1, -1, -1, -1, -1);
+ DestroyVehicleAndDriverAndPassengers(m_pTarget);
+ //++CStats::CarsCrushed; // TODO
+ m_pTarget = nil;
+ m_eGarageState = GS_AFTERDROPOFF;
+ m_nTimeToStartAction = CTimer::GetTimeInMilliseconds() + TIME_TO_CRUSH_CAR;
+ DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_CLOSED, 1.0f);
+ }
+ }
+ else
+ m_eGarageState = GS_OPENING;
+ UpdateCrusherAngle();
+ break;
+ case GS_AFTERDROPOFF:
+ if (CTimer::GetTimeInMilliseconds() <= m_nTimeToStartAction) {
+ UpdateCrusherShake((myrand() & 0xFF - 128) * 0.0002f, (myrand() & 0xFF - 128) * 0.0002f);
+ }
+ else {
+ UpdateCrusherShake(0.0f, 0.0f);
+ m_eGarageState = GS_OPENING;
+ }
+ break;
+ case GS_OPENING:
+ m_fDoorPos = Min(HALFPI, m_fDoorPos + CTimer::GetTimeStep() * CRUSHER_CRANE_SPEED);
+ if (m_fDoorPos == HALFPI) {
+ m_eGarageState = GS_OPENED;
+ DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_OPENED, 1.0f);
+ }
+ UpdateCrusherAngle();
+ break;
+ case GS_WAITINGFORCAR:
+ if (m_pTarget) {
+ if (CTimer::GetTimeInMilliseconds() - m_nTimeCrusherCraneActivated > 3000)
+ m_eGarageState = GS_CLOSING;
+ }
+ break;
+ default:
+ break;
+ }
+ if (!FindPlayerVehicle() && (CTimer::GetFrameCounter() & 0x1F) == 0x17 && IsEntityEntirelyInside3D(FindPlayerPed(), 0.0f))
+ FindPlayerPed()->InflictDamage(nil, WEAPONTYPE_RAMMEDBYCAR, 300.0f, PEDPIECE_TORSO, 0);
break;
+ }
case GARAGE_MISSION_KEEPCAR:
case GARAGE_MISSION_KEEPCAR_REMAINCLOSED:
switch (m_eGarageState) {
@@ -1011,7 +1299,10 @@ void CGarage::Update()
break;
case GS_FULLYCLOSED:
{
- float distance = CalcDistToGarageRectangleSquared(FindPlayerCoors().x, FindPlayerCoors().y);
+ float distance = INFINITY;
+ if (CWorld::Players[CWorld::PlayerInFocus].m_pPed) {
+ distance = CalcDistToGarageRectangleSquared(FindPlayerCoors().x, FindPlayerCoors().y);
+ }
if (distance < SQR(DISTANCE_TO_OPEN_HIDEOUT_GARAGE_ON_FOOT) ||
distance < SQR(DISTANCE_TO_OPEN_HIDEOUT_GARAGE_IN_CAR) && FindPlayerVehicle()) {
if (FindPlayerVehicle() && CGarages::CountCarsInHideoutGarage(m_eGarageType) >= FindMaxNumStoredCarsForGarage()) {
@@ -1203,8 +1494,15 @@ bool CGarage::IsEntityEntirelyInside3D(CEntity* pEntity, float fMargin)
for (int i = 0; i < pColModel->numSpheres; i++) {
CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center;
float radius = pColModel->spheres[i].radius;
- if (!IsPointInsideGarage(pos, fMargin - radius))
- return false;
+ if (m_eGarageType == GARAGE_CRATE_GARAGE) {
+ if (pos.x + radius < m_fInfX - fMargin || pos.x - radius > m_fSupX + fMargin ||
+ pos.y + radius < m_fInfY - fMargin || pos.y - radius > m_fSupX + fMargin)
+ return false;
+ }
+ else {
+ if (!IsPointInsideGarage(pos, fMargin - radius))
+ return false;
+ }
}
return true;
}
@@ -1218,12 +1516,23 @@ bool CGarage::IsEntityEntirelyOutside(CEntity * pEntity, float fMargin)
for (int i = 0; i < pColModel->numSpheres; i++) {
CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center;
float radius = pColModel->spheres[i].radius;
- if (IsPointInsideGarage(pos, fMargin + radius))
- return false;
+ if (m_eGarageType == GARAGE_CRATE_GARAGE) {
+ if (pos.x + radius > m_fInfX - fMargin && pos.x - radius < m_fSupX + fMargin &&
+ pos.y + radius > m_fInfY - fMargin && pos.y - radius < m_fSupX + fMargin)
+ return false;
+ }
+ else {
+ if (IsPointInsideGarage(pos, fMargin + radius))
+ return false;
+ }
}
return true;
}
+#ifdef GTA_NETWORK
+// some CGarage method (0x134E7C)
+#endif
+
bool CGarage::IsGarageEmpty()
{
int16 num;
@@ -1394,23 +1703,20 @@ void CGarage::RemoveCarsBlockingDoorNotInside()
void CGarages::PrintMessages()
{
if (CTimer::GetTimeInMilliseconds() > MessageStartTime && CTimer::GetTimeInMilliseconds() < MessageEndTime) {
+ // CRadar::m_FadeDownRadar = true; // TODO
CFont::DrawFonts();
- CFont::SetScale(SCREEN_SCALE_X(1.2f), SCREEN_SCALE_Y(1.5f));
+ float x_scale = FrontEndMenuManager.m_PrefsUseWideScreen ? 0.34506f : 0.3834f;
+ CFont::SetScale(PSP_SCREEN_SCALE_X(x_scale), PSP_SCREEN_SCALE_Y(0.71f));
CFont::SetPropOn();
CFont::SetJustifyOff();
CFont::SetBackgroundOff();
-#ifdef FIX_BUGS
- CFont::SetCentreSize(SCREEN_SCALE_X(DEFAULT_SCREEN_WIDTH - 50));
-#else
- CFont::SetCentreSize(SCREEN_WIDTH - 50);
-#endif
CFont::SetCentreOn();
CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetColor(CRGBA(27, 89, 130, 255));
CFont::SetDropShadowPosition(2);
CFont::SetDropColor(CRGBA(0, 0, 0, 255));
-
- float y_offset = SCREEN_SCALE_Y(140.0f);
+ CFont::SetCentreSize(PSP_SCREEN_SCALE_X(454.0f));
+ float y_offset = PSP_SCREEN_SCALE_Y(170.0f);
if (MessageNumberInString2 >= 0) {
CMessages::InsertNumberInString(TheText.Get(MessageIDString), MessageNumberInString, MessageNumberInString2, -1, -1, -1, -1, gUString);
@@ -1431,6 +1737,7 @@ bool CGarages::IsCarSprayable(CVehicle * pVehicle)
switch (pVehicle->GetModelIndex()) {
case MI_FIRETRUCK:
case MI_AMBULAN:
+ case MI_FBICAR:
case MI_POLICE:
case MI_ENFORCER:
case MI_BUS:
@@ -1438,9 +1745,6 @@ bool CGarages::IsCarSprayable(CVehicle * pVehicle)
case MI_BARRACKS:
case MI_DODO:
case MI_COACH:
-#ifndef GTA_PS2
- case MI_FBIRANCH:
-#endif
return false;
default:
break;
@@ -1497,6 +1801,7 @@ void CGarage::UpdateCrusherAngle()
void CGarage::UpdateCrusherShake(float X, float Y)
{
+ /*
RefreshDoorPointers(false);
m_pDoor1->GetMatrix().GetPosition().x += X;
m_pDoor1->GetMatrix().GetPosition().y += Y;
@@ -1510,6 +1815,7 @@ void CGarage::UpdateCrusherShake(float X, float Y)
m_pDoor2->UpdateRwFrame();
m_pDoor2->GetMatrix().GetPosition().x -= X;
m_pDoor2->GetMatrix().GetPosition().y -= Y;
+ */
}
void CGarage::RefreshDoorPointers(bool bCreate)
@@ -1575,6 +1881,7 @@ void CGarages::TriggerMessage(const char* text, int16 num1, uint16 time, int16 n
MessageEndTime = CTimer::GetTimeInMilliseconds() - 500 + time;
}
else {
+ CMessages::AddToPreviousBriefArray(TheText.Get(text), -1, -1, -1, -1, -1, -1, nil);
strcpy(MessageIDString, text);
MessageStartTime = CTimer::GetTimeInMilliseconds();
MessageEndTime = CTimer::GetTimeInMilliseconds() + time;
@@ -1620,7 +1927,8 @@ int32 CGarages::QueryCarsCollected(int16 garage)
bool CGarages::HasImportExportGarageCollectedThisCar(int16 garage, int8 car)
{
- return CarTypesCollected[GetCarsCollectedIndexForGarageType(aGarages[garage].m_eGarageType)] & (BIT(car));
+ uint32 total;
+ return CarTypesCollected[GetCarsCollectedIndexForGarageType(aGarages[garage].m_eGarageType, total)] & (BIT(car));
}
bool CGarages::IsGarageOpen(int16 garage)
@@ -1640,8 +1948,9 @@ bool CGarages::HasThisCarBeenCollected(int16 garage, uint8 id)
bool CGarage::DoesCraigNeedThisCar(int32 mi)
{
- int ct = CGarages::GetCarsCollectedIndexForGarageType(m_eGarageType);
- for (int i = 0; i < TOTAL_COLLECTCARS_CARS; i++) {
+ uint32 total;
+ int ct = CGarages::GetCarsCollectedIndexForGarageType(m_eGarageType, total);
+ for (int i = 0; i < total; i++) {
if (mi == gaCarsToCollectInCraigsGarages[ct][i] || (gaCarsToCollectInCraigsGarages[ct][i] == MI_CHEETAH && mi == MI_VICECHEE))
return (CGarages::CarTypesCollected[ct] & BIT(i)) == 0;
}
@@ -1650,9 +1959,10 @@ bool CGarage::DoesCraigNeedThisCar(int32 mi)
bool CGarage::HasCraigCollectedThisCar(int32 mi)
{
- int ct = CGarages::GetCarsCollectedIndexForGarageType(m_eGarageType);
- for (int i = 0; i < TOTAL_COLLECTCARS_CARS; i++) {
- if (mi == gaCarsToCollectInCraigsGarages[ct][i] || (gaCarsToCollectInCraigsGarages[ct][i] == MI_CHEETAH && mi == MI_VICECHEE))
+ uint32 total;
+ int ct = CGarages::GetCarsCollectedIndexForGarageType(m_eGarageType, total);
+ for (int i = 0; i < total; i++) {
+ if (mi == gaCarsToCollectInCraigsGarages[ct][i])
return CGarages::CarTypesCollected[ct] & BIT(i);
}
return false;
@@ -1660,24 +1970,21 @@ bool CGarage::HasCraigCollectedThisCar(int32 mi)
bool CGarage::MarkThisCarAsCollectedForCraig(int32 mi)
{
- int ct = CGarages::GetCarsCollectedIndexForGarageType(m_eGarageType);
+ uint32 total;
+ int ct = CGarages::GetCarsCollectedIndexForGarageType(m_eGarageType, total);
int index;
- for (index = 0; index < TOTAL_COLLECTCARS_CARS; index++) {
- if (mi == gaCarsToCollectInCraigsGarages[ct][index] || (gaCarsToCollectInCraigsGarages[ct][index] == MI_CHEETAH && mi == MI_VICECHEE))
+ for (index = 0; index < total; index++) {
+ if (mi == gaCarsToCollectInCraigsGarages[ct][index])
break;
}
- if (index >= TOTAL_COLLECTCARS_CARS)
+ if (index >= total)
return false;
CGarages::CarTypesCollected[ct] |= BIT(index);
- CWorld::Players[CWorld::PlayerInFocus].m_nMoney += IMPORT_REWARD;
- for (int i = 0; i < TOTAL_COLLECTCARS_CARS; i++) {
+ for (int i = 0; i < total; i++) {
if ((CGarages::CarTypesCollected[ct] & BIT(i)) == 0) {
- CGarages::TriggerMessage("GA_13", -1, 5000, -1); // Delivered like a pro. Complete the list and there'll be a bonus for you.
return false;
}
}
- CWorld::Players[CWorld::PlayerInFocus].m_nMoney += IMPORT_ALLCARS_REWARD;
- CGarages::TriggerMessage("GA_14", -1, 5000, -1); // All the cars. NICE! Here's a little something.
return true;
}
@@ -1745,15 +2052,17 @@ void CGarage::FindDoorsEntities()
}
}
if (m_pDoor1 && m_pDoor2) {
- CVector2D vecDoor1ToGarage(m_pDoor1->GetPosition().x - GetGarageCenterX(), m_pDoor1->GetPosition().y - GetGarageCenterY());
- CVector2D vecDoor2ToGarage(m_pDoor2->GetPosition().x - GetGarageCenterX(), m_pDoor2->GetPosition().y - GetGarageCenterY());
- if (DotProduct2D(vecDoor1ToGarage, vecDoor2ToGarage) > 0.0f) {
- if (vecDoor1ToGarage.MagnitudeSqr() >= vecDoor2ToGarage.MagnitudeSqr()) {
- m_pDoor1 = m_pDoor2;
- m_bDoor1IsDummy = m_bDoor2IsDummy;
- }
- m_pDoor2 = nil;
- m_bDoor2IsDummy = false;
+ if (m_pDoor1->GetModelIndex() != MI_CRUSHERBODY && m_pDoor1->GetModelIndex() != MI_CRUSHERLID) {
+ CVector2D vecDoor1ToGarage(m_pDoor1->GetPosition().x - GetGarageCenterX(), m_pDoor1->GetPosition().y - GetGarageCenterY());
+ CVector2D vecDoor2ToGarage(m_pDoor2->GetPosition().x - GetGarageCenterX(), m_pDoor2->GetPosition().y - GetGarageCenterY());
+ if (DotProduct2D(vecDoor1ToGarage, vecDoor2ToGarage) > 0.0f) {
+ if (vecDoor1ToGarage.MagnitudeSqr() >= vecDoor2ToGarage.MagnitudeSqr()) {
+ m_pDoor1 = m_pDoor2;
+ m_bDoor1IsDummy = m_bDoor2IsDummy;
+ }
+ m_pDoor2 = nil;
+ m_bDoor2IsDummy = false;
+ }
}
}
if (m_pDoor1)
@@ -1772,8 +2081,27 @@ void CGarage::FindDoorsEntitiesSectorList(CPtrList& list, bool dummy)
pEntity->m_scanCode = CWorld::GetCurrentScanCode();
if (!pEntity || !CGarages::IsModelIndexADoor(pEntity->GetModelIndex()))
continue;
- if (!IsPointInsideGarage(pEntity->GetPosition(), 2.0f))
+ if (Abs(pEntity->GetPosition().x - GetGarageCenterX()) >= 20.0f ||
+ Abs(pEntity->GetPosition().y - GetGarageCenterY()) >= 20.0f)
+ continue;
+ if (pEntity->GetModelIndex() == MI_CRUSHERBODY) {
+ m_pDoor1 = pEntity;
+ m_bDoor1IsDummy = dummy;
+ if (dummy)
+ m_bDoor1PoolIndex = (CPools::GetDummyPool()->GetIndex((CDummy*)pEntity)) & 0x7F;
+ else
+ m_bDoor1PoolIndex = (CPools::GetObjectPool()->GetIndex((CObject*)pEntity)) & 0x7F;
+ continue;
+ }
+ if (pEntity->GetModelIndex() == MI_CRUSHERLID) {
+ m_pDoor2 = pEntity;
+ m_bDoor2IsDummy = dummy;
+ if (dummy)
+ m_bDoor2PoolIndex = (CPools::GetDummyPool()->GetIndex((CDummy*)pEntity)) & 0x7F;
+ else
+ m_bDoor2PoolIndex = (CPools::GetObjectPool()->GetIndex((CObject*)pEntity)) & 0x7F;
continue;
+ }
if (!m_pDoor1) {
m_pDoor1 = pEntity;
m_bDoor1IsDummy = dummy;
@@ -1830,26 +2158,48 @@ bool CGarages::HasCarBeenCrushed(int32 handle)
void CStoredCar::StoreCar(CVehicle* pVehicle)
{
m_nModelIndex = pVehicle->GetModelIndex();
- m_vecPos = pVehicle->GetPosition();
- m_vecAngle = pVehicle->GetForward();
+ m_fPosX = pVehicle->GetPosition().x;
+ m_fPosY = pVehicle->GetPosition().y;
+ m_fPosZ = pVehicle->GetPosition().z;
+ m_fForwardX = pVehicle->GetForward().x;
+ m_fForwardY = pVehicle->GetForward().y;
+ m_fForwardZ = pVehicle->GetForward().z;
+ m_fTractionMultiplier = 1.0f;
m_nPrimaryColor = pVehicle->m_currentColour1;
m_nSecondaryColor = pVehicle->m_currentColour2;
m_nRadioStation = pVehicle->m_nRadioStation;
m_nVariationA = pVehicle->m_aExtras[0];
m_nVariationB = pVehicle->m_aExtras[1];
m_nFlags = 0;
+ if (pVehicle->bRewardVehicle) m_nFlags |= FLAG_REWARD_VEHICLE;
if (pVehicle->bBulletProof) m_nFlags |= FLAG_BULLETPROOF;
if (pVehicle->bFireProof) m_nFlags |= FLAG_FIREPROOF;
if (pVehicle->bExplosionProof) m_nFlags |= FLAG_EXPLOSIONPROOF;
if (pVehicle->bCollisionProof) m_nFlags |= FLAG_COLLISIONPROOF;
if (pVehicle->bMeleeProof) m_nFlags |= FLAG_MELEEPROOF;
- if (pVehicle->IsCar() || pVehicle->IsBike())
- m_nCarBombType = ((CAutomobile*)pVehicle)->m_bombType; // NB: cast to CAutomobile is original behaviour
+ if (pVehicle->bTyresDontBurst) m_nFlags |= FLAG_TIRES_INVULNERABLE;
+ if (pVehicle->bTakeLessDamage) m_nFlags |= FLAG_STRONG;
+ if (pVehicle->bIsHeavy) m_nFlags |= FLAG_HEAVY;
+ if (pVehicle->IsCar()) {
+ CAutomobile* pAutomobile = (CAutomobile*)pVehicle;
+ if (pAutomobile->bFixedColour) m_nFlags |= FLAG_PERMANENT_COLOUR;
+ if (pAutomobile->m_bombType) m_nFlags |= FLAG_BOMB;
+ if (pAutomobile->bNotDamagedUpsideDown) m_nFlags |= FLAG_NOT_DAMAGED_UPSIDEDOWN;
+ m_fTractionMultiplier = pAutomobile->m_fTraction;
+ }
+ else if (pVehicle->IsBike()) {
+ CBike* pBike = (CBike*)pVehicle;
+ if (pBike->bFixedColour) m_nFlags |= FLAG_PERMANENT_COLOUR;
+ m_fTractionMultiplier = pBike->m_fTraction;
+ }
}
CVehicle* CStoredCar::RestoreCar()
{
CStreaming::RequestModel(m_nModelIndex, STREAMFLAGS_DEPENDENCY);
+ uint8 owner = RANDOM_VEHICLE;
+ if (m_nFlags & FLAG_REWARD_VEHICLE)
+ owner = MISSION_VEHICLE;
if (!CStreaming::HasModelLoaded(m_nModelIndex))
return nil;
#ifdef FIX_BUGS
@@ -1862,19 +2212,19 @@ CVehicle* CStoredCar::RestoreCar()
}
CVehicle* pVehicle;
if (CModelInfo::IsBoatModel(m_nModelIndex))
- pVehicle = new CBoat(m_nModelIndex, RANDOM_VEHICLE);
+ pVehicle = new CBoat(m_nModelIndex, owner);
else if (CModelInfo::IsBikeModel(m_nModelIndex))
{
- CBike* pBike = new CBike(m_nModelIndex, RANDOM_VEHICLE);
+ CBike* pBike = new CBike(m_nModelIndex, owner);
pBike->bIsStanding = true;
pVehicle = pBike;
}
else
- pVehicle = new CAutomobile(m_nModelIndex, RANDOM_VEHICLE);
- pVehicle->SetPosition(m_vecPos);
+ pVehicle = new CAutomobile(m_nModelIndex, owner);
+ pVehicle->SetPosition(m_fPosX, m_fPosY, m_fPosZ);
pVehicle->SetStatus(STATUS_ABANDONED);
- pVehicle->GetForward() = m_vecAngle;
- pVehicle->GetRight() = CVector(m_vecAngle.y, -m_vecAngle.x, 0.0f);
+ pVehicle->GetForward() = CVector(m_fForwardX, m_fForwardY, m_fForwardZ);
+ pVehicle->GetRight() = CVector(m_fForwardY, -m_fForwardX, 0.0f);
pVehicle->GetUp() = CVector(0.0f, 0.0f, 1.0f);
pVehicle->pDriver = nil;
pVehicle->m_currentColour1 = m_nPrimaryColor;
@@ -1891,11 +2241,36 @@ CVehicle* CStoredCar::RestoreCar()
}
pVehicle->bHasBeenOwnedByPlayer = true;
pVehicle->m_nDoorLock = CARLOCK_UNLOCKED;
+ if (m_nFlags & FLAG_REWARD_VEHICLE) pVehicle->bRewardVehicle = true;
if (m_nFlags & FLAG_BULLETPROOF) pVehicle->bBulletProof = true;
if (m_nFlags & FLAG_FIREPROOF) pVehicle->bFireProof = true;
if (m_nFlags & FLAG_EXPLOSIONPROOF) pVehicle->bExplosionProof = true;
if (m_nFlags & FLAG_COLLISIONPROOF) pVehicle->bCollisionProof = true;
if (m_nFlags & FLAG_MELEEPROOF) pVehicle->bMeleeProof = true;
+ if (m_nFlags & FLAG_TIRES_INVULNERABLE) pVehicle->bTyresDontBurst = true;
+ if (m_nFlags & FLAG_STRONG) pVehicle->bTakeLessDamage = true;
+ if (m_nFlags & FLAG_HEAVY) {
+ pVehicle->bIsHeavy = true;
+ pVehicle->m_fMass = pVehicle->pHandling->GetMass();
+ pVehicle->m_fTurnMass = pVehicle->pHandling->GetTurnMass();
+ }
+ else {
+ pVehicle->bIsHeavy = false;
+ pVehicle->m_fMass = pVehicle->pHandling->GetMass() * 3.0f;
+ pVehicle->m_fTurnMass = pVehicle->pHandling->GetTurnMass() * 5.0f;
+ }
+ if (pVehicle->IsCar()) {
+ CAutomobile* pAutomobile = (CAutomobile*)pVehicle;
+ if (m_nFlags & FLAG_PERMANENT_COLOUR) pAutomobile->bFixedColour = true;
+ if (m_nFlags & FLAG_BOMB) pAutomobile->m_bombType = CARBOMB_TIMED;
+ if (m_nFlags & FLAG_NOT_DAMAGED_UPSIDEDOWN) pAutomobile->bNotDamagedUpsideDown = true;
+ m_fTractionMultiplier = pAutomobile->m_fTraction;
+ }
+ else if (pVehicle->IsBike()) {
+ CBike* pBike = (CBike*)pVehicle;
+ if (m_nFlags & FLAG_PERMANENT_COLOUR) pBike->bFixedColour = true;
+ m_fTractionMultiplier = pBike->m_fTraction;
+ }
return pVehicle;
}
@@ -1910,13 +2285,23 @@ void CGarage::StoreAndRemoveCarsForThisHideout(CStoredCar* aCars, int32 nMax)
if (!pVehicle)
continue;
if (IsPointInsideGarage(pVehicle->GetPosition())) {
- if (pVehicle->VehicleCreatedBy != MISSION_VEHICLE) {
- if (index < Max(NUM_GARAGE_STORED_CARS, nMax) && !EntityHasASphereWayOutsideGarage(pVehicle, 1.0f))
- aCars[index++].StoreCar(pVehicle);
+#if defined GTA_PS2 || defined GTA_MOBILE
+ if (pVehicle->GetStatus() == STATUS_WRECKED) {
CWorld::Players[CWorld::PlayerInFocus].CancelPlayerEnteringCars(pVehicle);
CWorld::Remove(pVehicle);
delete pVehicle;
}
+ else if (pVehicle->m_bombType == CARBOMB_NONE || pVehicle->bRewardVehicle) // <- probably condition looked different
+#endif
+ {
+ if (pVehicle->VehicleCreatedBy != MISSION_VEHICLE || pVehicle->bRewardVehicle) {
+ if (index < Max(NUM_GARAGE_STORED_CARS, nMax) && !EntityHasASphereWayOutsideGarage(pVehicle, 1.0f))
+ aCars[index++].StoreCar(pVehicle);
+ CWorld::Players[CWorld::PlayerInFocus].CancelPlayerEnteringCars(pVehicle);
+ CWorld::Remove(pVehicle);
+ delete pVehicle;
+ }
+ }
}
}
// why?
@@ -2067,7 +2452,7 @@ void CGarage::PlayerArrestedOrDied()
case GARAGE_COLLECTCARS_2:
case GARAGE_COLLECTCARS_3:
case GARAGE_FORCARTOCOMEOUTOF:
- case GARAGE_60SECONDS:
+ case GARAGE_CRATE_GARAGE:
case GARAGE_MISSION_KEEPCAR:
case GARAGE_FOR_SCRIPT_TO_OPEN:
case GARAGE_HIDEOUT_ONE:
@@ -2254,14 +2639,12 @@ void CGarages::SetAllDoorsBackToOriginalHeight()
}
}
+#define GARAGE_SIZE 208
+
void CGarages::Save(uint8 * buf, uint32 * size)
{
-//INITSAVEBUF
- *size = 7876; // for some reason it's not actual size again
- //*size = (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + TOTAL_HIDEOUT_GARAGES * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage));
-#if !defined THIS_IS_STUPID && defined COMPATIBLE_SAVES
- memset(buf + 7340, 0, *size - 7340); // garbage data is written otherwise
-#endif
+INITSAVEBUF
+ *size = (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + TOTAL_HIDEOUT_GARAGES * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * GARAGE_SIZE);
CloseHideOutGaragesBeforeSave();
WriteSaveBuf(buf, NumGarages);
WriteSaveBuf(buf, (uint32)BombsAreFree);
@@ -2302,12 +2685,16 @@ void CGarages::Save(uint8 * buf, uint32 * size)
WriteSaveBuf(buf, aGarages[i].m_vDir1);
WriteSaveBuf(buf, aGarages[i].m_vDir2);
WriteSaveBuf(buf, aGarages[i].m_fSupZ);
+ WriteSaveBuf(buf, aGarages[i].m_vecSSGaragePos);
+ WriteSaveBuf(buf, aGarages[i].m_fSSGarageAngle);
WriteSaveBuf(buf, aGarages[i].m_fDir1Len);
WriteSaveBuf(buf, aGarages[i].m_fDir2Len);
WriteSaveBuf(buf, aGarages[i].m_fInfX);
WriteSaveBuf(buf, aGarages[i].m_fSupX);
WriteSaveBuf(buf, aGarages[i].m_fInfY);
WriteSaveBuf(buf, aGarages[i].m_fSupY);
+ WriteSaveBuf(buf, aGarages[i].m_nTimeCrusherCraneActivated);
+ ZeroSaveBuf(buf, 4);
WriteSaveBuf(buf, aGarages[i].m_fDoorPos);
WriteSaveBuf(buf, aGarages[i].m_fDoorHeight);
WriteSaveBuf(buf, aGarages[i].m_fDoor1X);
@@ -2320,33 +2707,26 @@ void CGarages::Save(uint8 * buf, uint32 * size)
WriteSaveBuf(buf, aGarages[i].m_bCollectedCarsState);
ZeroSaveBuf(buf, 3 + 4);
ZeroSaveBuf(buf, sizeof(aGarages[i].m_sStoredCar));
+ WriteSaveBuf(buf, aGarages[i].m_bInitialized);
+ ZeroSaveBuf(buf, 3);
+#ifdef GTA_NETWORK
+ ZeroSaveBuf(buf, 4);
+#endif
+ WriteSaveBuf(buf, aGarages[i].m_bSSGarageAcceptedVehicle);
+ WriteSaveBuf(buf, aGarages[i].m_bLocked);
+ WriteSaveBuf(buf, aGarages[i].m_nSSGarageState);
+ WriteSaveBuf(buf, aGarages[i].m_bSSGarageStateChanging);
#else
WriteSaveBuf(buf, aGarages[i]);
#endif
}
-//VALIDATESAVEBUF(*size);
-}
-
-const CStoredCar &CStoredCar::operator=(const CStoredCar & other)
-{
- m_nModelIndex = other.m_nModelIndex;
- m_vecPos = other.m_vecPos;
- m_vecAngle = other.m_vecAngle;
- m_nFlags = other.m_nFlags;
- m_nPrimaryColor = other.m_nPrimaryColor;
- m_nSecondaryColor = other.m_nSecondaryColor;
- m_nRadioStation = other.m_nRadioStation;
- m_nVariationA = other.m_nVariationA;
- m_nVariationB = other.m_nVariationB;
- m_nCarBombType = other.m_nCarBombType;
- return *this;
+VALIDATESAVEBUF(*size);
}
void CGarages::Load(uint8* buf, uint32 size)
{
-//INITSAVEBUF
- assert(size == 7876);
- //assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + TOTAL_HIDEOUT_GARAGES * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)));
+INITSAVEBUF
+ assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + TOTAL_HIDEOUT_GARAGES * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * GARAGE_SIZE));
CloseHideOutGaragesBeforeSave();
ReadSaveBuf(&NumGarages, buf);
int32 tempInt;
@@ -2390,12 +2770,16 @@ void CGarages::Load(uint8* buf, uint32 size)
ReadSaveBuf(&aGarages[i].m_vDir1, buf);
ReadSaveBuf(&aGarages[i].m_vDir2, buf);
ReadSaveBuf(&aGarages[i].m_fSupZ, buf);
+ ReadSaveBuf(&aGarages[i].m_vecSSGaragePos, buf);
+ ReadSaveBuf(&aGarages[i].m_fSSGarageAngle, buf);
ReadSaveBuf(&aGarages[i].m_fDir1Len, buf);
ReadSaveBuf(&aGarages[i].m_fDir2Len, buf);
ReadSaveBuf(&aGarages[i].m_fInfX, buf);
ReadSaveBuf(&aGarages[i].m_fSupX, buf);
ReadSaveBuf(&aGarages[i].m_fInfY, buf);
ReadSaveBuf(&aGarages[i].m_fSupY, buf);
+ ReadSaveBuf(&aGarages[i].m_nTimeCrusherCraneActivated, buf);
+ SkipSaveBuf(buf, 4);
ReadSaveBuf(&aGarages[i].m_fDoorPos, buf);
ReadSaveBuf(&aGarages[i].m_fDoorHeight, buf);
ReadSaveBuf(&aGarages[i].m_fDoor1X, buf);
@@ -2408,6 +2792,15 @@ void CGarages::Load(uint8* buf, uint32 size)
ReadSaveBuf(&aGarages[i].m_bCollectedCarsState, buf);
SkipSaveBuf(buf, 3 + 4);
SkipSaveBuf(buf, sizeof(aGarages[i].m_sStoredCar));
+ ReadSaveBuf(&aGarages[i].m_bInitialized, buf);
+ SkipSaveBuf(buf, 3);
+#ifdef GTA_NETWORK
+ SkipSaveBuf(buf, 4);
+#endif
+ ReadSaveBuf(&aGarages[i].m_bSSGarageAcceptedVehicle, buf);
+ ReadSaveBuf(&aGarages[i].m_bLocked, buf);
+ ReadSaveBuf(&aGarages[i].m_nSSGarageState, buf);
+ ReadSaveBuf(&aGarages[i].m_bSSGarageStateChanging, buf);
#else
ReadSaveBuf(&aGarages[i], buf);
#endif
@@ -2421,17 +2814,37 @@ void CGarages::Load(uint8* buf, uint32 size)
else
aGarages[i].UpdateDoorsHeight();
}
-//VALIDATESAVEBUF(size);
+VALIDATESAVEBUF(size);
MessageEndTime = 0;
bCamShouldBeOutisde = false;
MessageStartTime = 0;
+ hGarages = DMAudio.CreateEntity(AUDIOTYPE_GARAGE, (void*)1);
+ if (hGarages >= 0)
+ DMAudio.SetEntityStatus(hGarages, TRUE);
}
bool
CGarages::IsModelIndexADoor(uint32 id)
{
- return id == MI_GARAGEDOOR2 ||
+ return id == MI_GARAGEDOOR1 ||
+ id == MI_GARAGEDOOR17 ||
+ id == MI_GARAGEDOOR27 ||
+ id == MI_GARAGEDOOR28 ||
+ id == MI_GARAGEDOOR29 ||
+ id == MI_GARAGEDOOR30 ||
+ id == MI_GARAGEDOOR31 ||
+ id == MI_GARAGEDOOR32 ||
+ id == MI_GARAGEDOOR33 ||
+ id == MI_GARAGEDOOR34 ||
+ id == MI_GARAGEDOOR35 ||
+ id == MI_GARAGEDOOR36 ||
+ id == MI_GARAGEDOOR37 ||
+ id == MI_GARAGEDOOR38 ||
+ id == MI_GARAGEDOOR39 ||
+ id == MI_CRUSHERBODY ||
+ id == MI_CRUSHERLID ||
+ id == MI_GARAGEDOOR2 ||
id == MI_GARAGEDOOR3 ||
id == MI_GARAGEDOOR4 ||
id == MI_GARAGEDOOR5 ||
@@ -2453,7 +2866,8 @@ CGarages::IsModelIndexADoor(uint32 id)
id == MI_GARAGEDOOR23 ||
id == MI_GARAGEDOOR24 ||
id == MI_GARAGEDOOR25 ||
- id == MI_GARAGEDOOR26;
+ id == MI_GARAGEDOOR26 ||
+ id == MI_DOOR2_SJL;
}
void CGarages::StopCarFromBlowingUp(CAutomobile* pCar)
@@ -2493,3 +2907,109 @@ bool CGarage::IsPlayerEntirelyInsideGarage()
{
return IsEntityEntirelyInside3D(FindPlayerVehicle() ? (CEntity*)FindPlayerVehicle() : (CEntity*)FindPlayerPed(), 0.0f);
}
+
+int16 CGarages::AddCrateGarage(CVector pos, float angle)
+{
+ CMatrix matrix;
+ matrix.SetUnity();
+ matrix.SetRotateZOnly(DEGTORAD(angle));
+ CStreaming::RequestModel(MI_CRATE_SJL, STREAMFLAGS_DEPENDENCY);
+#ifdef FIX_BUGS
+ CStreaming::LoadAllRequestedModels(false);
+#endif
+ CObject* pCrate = new CObject(MI_CRATE_SJL, false);
+ pCrate->ObjectCreatedBy = MISSION_OBJECT;
+ pCrate->SetPosition(pos);
+ pCrate->SetOrientation(0.0f, 0.0f, DEGTORAD(angle));
+ pCrate->GetMatrix().UpdateRW();
+ pCrate->UpdateRwFrame();
+ pCrate->bAffectedByGravity = false;
+ pCrate->m_phy_flagA08 = true;
+ pCrate->bExplosionProof = true;
+ pCrate->bIsStatic = false;
+
+ CStreaming::RequestModel(MI_DOOR1_SJL, STREAMFLAGS_DEPENDENCY);
+#ifdef FIX_BUGS
+ CStreaming::LoadAllRequestedModels(false);
+#endif
+ CObject* pDoor1 = new CObject(MI_DOOR1_SJL, false);
+ pDoor1->ObjectCreatedBy = MISSION_OBJECT;
+ CVector vDoor1Pos = matrix * CVector(0.0f, 5.64f, 5.168f);
+ pDoor1->SetPosition(vDoor1Pos);
+ pDoor1->SetOrientation(0.0f, 0.0f, DEGTORAD(angle));
+ pDoor1->GetMatrix().UpdateRW();
+ pDoor1->UpdateRwFrame();
+ pDoor1->bAffectedByGravity = false;
+ pDoor1->m_phy_flagA08 = true;
+ pDoor1->bExplosionProof = true;
+ pDoor1->bIsStatic = false;
+
+ CStreaming::RequestModel(MI_DOOR2_SJL, STREAMFLAGS_DEPENDENCY);
+#ifdef FIX_BUGS
+ CStreaming::LoadAllRequestedModels(false);
+#endif
+ CObject* pDoor2 = new CObject(MI_DOOR2_SJL, false);
+ pDoor2->ObjectCreatedBy = MISSION_OBJECT;
+ CVector vDoor2Pos = matrix * CVector(0.0f, -5.64f, 5.168f);
+ pDoor2->SetPosition(vDoor2Pos);
+ pDoor2->SetOrientation(0.0f, 0.0f, DEGTORAD(angle));
+ pDoor2->GetMatrix().UpdateRW();
+ pDoor2->UpdateRwFrame();
+ pDoor2->bAffectedByGravity = false;
+ pDoor2->m_phy_flagA08 = true;
+ pDoor2->bExplosionProof = true;
+ pDoor2->bIsStatic = false;
+
+ CWorld::Add(pCrate);
+ CWorld::Add(pDoor1);
+ CWorld::Add(pDoor2);
+
+ CVector corner = matrix * CVector(-3.0f, -3.5f, -0.5f) + pos;
+ CVector xplane = matrix * CVector(0.0f, 2.0f, 0.0f) + pos;
+ CVector yplane = matrix * CVector(0.0f, 0.0f, 0.0f) + pos;
+
+ printf("Posttrans Corner[%f][%f][%f] XPlane[%f][%f][%f] YPlane[%f][%f][%f]",
+ corner.x, corner.y, corner.z, xplane.x, xplane.y, xplane.z, yplane.x, yplane.y, yplane.z);
+ int16 index = AddOne(corner.x, corner.y, corner.z, xplane.x, xplane.y, yplane.x, yplane.y, pos.z + 4.0f, GARAGE_CRATE_GARAGE, 0);
+ SetLeaveCameraForThisGarage(index);
+ CGarage* pGarage = &aGarages[index];
+ pGarage->m_bSSGarageAcceptedVehicle = false;
+ pGarage->m_bSSGarageStateChanging = false;
+ pGarage->m_vecSSGaragePos = pos;
+ pGarage->m_fSSGarageAngle = angle;
+ return index;
+}
+
+#ifdef GTA_NETWORK
+void CGarages::RemoveAllCrateGarages()
+{
+ for (uint32 i = 0; i < NUM_GARAGES; i++) {
+ CGarage* pGarage = &aGarages[i];
+ if (pGarage->m_eGarageType == GARAGE_CRATE_GARAGE) {
+ pGarage->m_eGarageType = GARAGE_NONE;
+ pGarage->m_bSSGarageStateChanging = false;
+ pGarage->m_bSSGarageAcceptedVehicle = false;
+ pGarage->m_pSSVehicle = nil;
+ --NumGarages;
+ }
+ }
+}
+
+bool CGarages::HasSSGarageAcceptedVehicle(int16 garage)
+{
+ return aGarages[garage].m_bSSGarageAcceptedVehicle;
+}
+
+void CGarages::SetVehicleForSSGarage(bool state, int16 garage, void* pVehicle)
+{
+ CGarage* pGarage = &aGarages[garage];
+ pGarage->m_pSSVehicle = pVehicle;
+ pGarage->m_nSSGarageState = state;
+ pGarage->m_bSSGarageAcceptedVehicle = false;
+ if (!pVehicle) {
+ if (pGarage->m_pSSTargetCar)
+ pGarage->m_pSSTargetCar->CleanUpOldReference((CEntity**)pGarage->m_pSSTargetCar);
+ pGarage->m_pSSTargetCar = nil;
+ }
+}
+#endif
diff --git a/src/control/Garages.h b/src/control/Garages.h
index 358d404d..5230b657 100644
--- a/src/control/Garages.h
+++ b/src/control/Garages.h
@@ -15,6 +15,7 @@ enum eGarageState
GS_OPENEDCONTAINSCAR,
GS_CLOSEDCONTAINSCAR,
GS_AFTERDROPOFF,
+ GS_WAITINGFORCAR
};
enum eGarageType
@@ -31,7 +32,7 @@ enum eGarageType
GARAGE_COLLECTCARS_2,
GARAGE_COLLECTCARS_3,
GARAGE_FORCARTOCOMEOUTOF,
- GARAGE_60SECONDS,
+ GARAGE_CRATE_GARAGE,
GARAGE_CRUSHER,
GARAGE_MISSION_KEEPCAR,
GARAGE_FOR_SCRIPT_TO_OPEN,
@@ -58,7 +59,7 @@ enum
{
TOTAL_COLLECTCARS_GARAGES = 4,
TOTAL_HIDEOUT_GARAGES = 12,
- TOTAL_COLLECTCARS_CARS = 6
+ TOTAL_COLLECTCARS_CARS = 16
};
class CStoredCar
@@ -69,10 +70,22 @@ class CStoredCar
FLAG_EXPLOSIONPROOF = 0x4,
FLAG_COLLISIONPROOF = 0x8,
FLAG_MELEEPROOF = 0x10,
+ FLAG_TIRES_INVULNERABLE = 0x20,
+ FLAG_STRONG = 0x40,
+ FLAG_HEAVY = 0x80,
+ FLAG_PERMANENT_COLOUR = 0x100,
+ FLAG_BOMB = 0x200,
+ FLAG_NOT_DAMAGED_UPSIDEDOWN = 0x400,
+ FLAG_REWARD_VEHICLE = 0x8000
};
int32 m_nModelIndex;
- CVector m_vecPos;
- CVector m_vecAngle;
+ float m_fPosX;
+ float m_fPosY;
+ float m_fPosZ;
+ float m_fForwardX;
+ float m_fForwardY;
+ float m_fForwardZ;
+ float m_fTractionMultiplier;
int32 m_nFlags;
int8 m_nPrimaryColor;
int8 m_nSecondaryColor;
@@ -84,7 +97,6 @@ public:
void Init() { m_nModelIndex = 0; }
void Clear() { m_nModelIndex = 0; }
bool HasCar() { return m_nModelIndex != 0; }
- const CStoredCar &operator=(const CStoredCar& other);
void StoreCar(CVehicle*);
CVehicle* RestoreCar();
};
@@ -118,12 +130,16 @@ public:
CVector2D m_vDir1;
CVector2D m_vDir2;
float m_fSupZ;
+ CVector m_vecSSGaragePos;
+ float m_fSSGarageAngle;
float m_fDir1Len;
float m_fDir2Len;
float m_fInfX;
float m_fSupX;
float m_fInfY;
float m_fSupY;
+ uint32 m_nTimeCrusherCraneActivated;
+ CVehicle* m_pSSTargetCar;
float m_fDoorPos;
float m_fDoorHeight;
float m_fDoor1X;
@@ -136,6 +152,14 @@ public:
uint8 m_bCollectedCarsState;
CVehicle *m_pTarget;
CStoredCar m_sStoredCar; // not needed
+ bool m_bInitialized;
+#ifdef GTA_NETWORK
+ void* m_pSSVehicle; // some multiplayer vehicle structure, +104 == GetVehiclePointer
+#endif
+ bool m_bSSGarageAcceptedVehicle;
+ bool m_bLocked;
+ bool m_nSSGarageState;
+ bool m_bSSGarageStateChanging;
void OpenThisGarage();
void CloseThisGarage();
@@ -222,6 +246,7 @@ public:
static CGarage aGarages[NUM_GARAGES];
static CStoredCar aCarsInSafeHouses[TOTAL_HIDEOUT_GARAGES][NUM_GARAGE_STORED_CARS];
static bool bCamShouldBeOutisde;
+ static uint8 CrusherRewardMultiplier;
static void Init(void);
#ifndef PS2
@@ -269,13 +294,13 @@ public:
static void CloseHideOutGaragesBeforeSave(void);
static int32 CountCarsInHideoutGarage(uint8);
static int32 GetBombTypeForGarageType(uint8 type) { return type - GARAGE_BOMBSHOP1 + 1; }
- static int32 GetCarsCollectedIndexForGarageType(uint8 type)
+ static int32 GetCarsCollectedIndexForGarageType(uint8 type, uint32& total)
{
switch (type) {
- case GARAGE_COLLECTCARS_1: return 0;
- case GARAGE_COLLECTCARS_2: return 1;
- case GARAGE_COLLECTCARS_3: return 2;
- case GARAGE_COLLECTCARS_4: return 3;
+ case GARAGE_COLLECTCARS_1: total = TOTAL_COLLECTCARS_CARS; return 0;
+ case GARAGE_COLLECTCARS_2: total = 0; return 1;
+ case GARAGE_COLLECTCARS_3: total = 0; return 2;
+ case GARAGE_COLLECTCARS_4: total = 0; return 3;
default: assert(0);
}
return 0;
@@ -300,4 +325,15 @@ public:
}
static bool IsThisGarageTypeSafehouse(uint8 type) { return FindSafeHouseIndexForGarageType(type) >= 0; }
+ static bool InitDoorGubbins(uint32, uint8);
+ static void SetupAnyGaragesForThisIsland(void);
+ static void LockGarage(int16, bool);
+ static int16 AddCrateGarage(CVector, float);
+
+#ifdef GTA_NETWORK
+ static void RemoveAllCrateGarages();
+ static bool HasSSGarageAcceptedVehicle(int16 garage);
+ static void SetVehicleForSSGarage(bool state, int16 garage, void* pVehicle); // void* -> ?
+#endif
+
};
diff --git a/src/control/OnscreenTimer.cpp b/src/control/OnscreenTimer.cpp
index 5045c1e0..45c18a7c 100644
--- a/src/control/OnscreenTimer.cpp
+++ b/src/control/OnscreenTimer.cpp
@@ -9,18 +9,31 @@
#include "OnscreenTimer.h"
#include "Camera.h"
+CRGBA gbColour(255, 255, 255, 255);
+CRGBA gbColour2(255, 255, 255, 255);
+
void
COnscreenTimer::Init()
{
m_bDisabled = false;
for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) {
m_sCounters[i].m_nCounterOffset = 0;
+ m_sCounters[i].m_nTotal = -1;
- for(uint32 j = 0; j < ARRAY_SIZE(m_sCounters[0].m_aCounterText); j++)
- m_sCounters[i].m_aCounterText[j] = '\0';
+ for (uint32 j = 0; j < ARRAY_SIZE(m_sCounters[0].m_aCounterText1); j++) {
+ m_sCounters[i].m_aCounterText1[j] = '\0';
+ }
+
+ for (uint32 j = 0; j < ARRAY_SIZE(m_sCounters[0].m_aCounterText2); j++) {
+ m_sCounters[i].m_aCounterText2[j] = '\0';
+ }
m_sCounters[i].m_nType = COUNTER_DISPLAY_NUMBER;
+ m_sCounters[i].m_nTypeOfTotal = 0;
m_sCounters[i].m_bCounterProcessed = false;
+ m_sCounters[i].m_colour1 = CRGBA(112, 132, 157, 255);
+ m_sCounters[i].m_colour2 = CRGBA(42, 58, 81, 255);
+
}
for(uint32 i = 0; i < NUMONSCREENCLOCKS; i++) {
m_sClocks[i].m_nClockOffset = 0;
@@ -30,6 +43,8 @@ COnscreenTimer::Init()
m_sClocks[i].m_bClockProcessed = false;
m_sClocks[i].m_bClockGoingDown = true;
+ m_sClocks[i].m_aClockColour = CRGBA(244, 225, 91, 255);
+ m_sClocks[i].m_bClockTickThisFrame = false;
}
}
@@ -44,6 +59,10 @@ COnscreenTimer::Process()
void
COnscreenTimer::ProcessForDisplay()
{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame)
+ return;
+#endif
if(CHud::m_Wants_To_Draw_Hud) {
m_bProcessed = false;
for(uint32 i = 0; i < NUMONSCREENCLOCKS; i++) {
@@ -71,9 +90,12 @@ COnscreenTimer::ClearCounter(uint32 offset)
for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) {
if(offset == m_sCounters[i].m_nCounterOffset) {
m_sCounters[i].m_nCounterOffset = 0;
- m_sCounters[i].m_aCounterText[0] = '\0';
+ m_sCounters[i].m_aCounterText1[0] = '\0';
+ m_sCounters[i].m_aCounterText2[0] = '\0';
+ m_sCounters[i].m_nTypeOfTotal = 0;
m_sCounters[i].m_nType = COUNTER_DISPLAY_NUMBER;
m_sCounters[i].m_bCounterProcessed = false;
+ m_sCounters[i].m_bAddDollarPrefix = false;
}
}
}
@@ -87,22 +109,45 @@ COnscreenTimer::ClearClock(uint32 offset)
m_sClocks[i].m_aClockText[0] = '\0';
m_sClocks[i].m_bClockProcessed = false;
m_sClocks[i].m_bClockGoingDown = true;
+ m_sClocks[i].m_bClockTickThisFrame = false;
}
}
void
-COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text, uint16 pos)
+COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text1, uint16 pos, int32 total, char* text2, uint16 totalType)
{
- if (m_sCounters[pos].m_aCounterText[0] != '\0')
+ if (m_sCounters[pos].m_nCounterOffset)
return;
m_sCounters[pos].m_nCounterOffset = offset;
- if(text)
- strncpy(m_sCounters[pos].m_aCounterText, text, ARRAY_SIZE(m_sCounters[0].m_aCounterText));
+ m_sCounters[pos].m_nTotal = total;
+ if(text1)
+ strncpy(m_sCounters[pos].m_aCounterText1, text1, ARRAY_SIZE(m_sCounters[0].m_aCounterText1));
+ else
+ m_sCounters[pos].m_aCounterText1[0] = '\0';
+
+ if (text2)
+ strncpy(m_sCounters[pos].m_aCounterText2, text2, ARRAY_SIZE(m_sCounters[0].m_aCounterText2));
else
- m_sCounters[pos].m_aCounterText[0] = '\0';
+ m_sCounters[pos].m_aCounterText2[0] = '\0';
+ m_sCounters[pos].m_nTypeOfTotal = totalType;
m_sCounters[pos].m_nType = type;
+ m_sCounters[pos].m_bAddDollarPrefix = 0;
+
+ if (gbColour == CRGBA(255, 255, 255, 255))
+ m_sCounters[pos].m_colour1 = CRGBA(112, 132, 157, 255);
+ else {
+ m_sCounters[pos].m_colour1 = gbColour;
+ gbColour = CRGBA(255, 255, 255, 255);
+ }
+
+ if (gbColour == CRGBA(255, 255, 255, 255))
+ m_sCounters[pos].m_colour2 = CRGBA(42, 58, 81, 255);
+ else {
+ m_sCounters[pos].m_colour2 = gbColour;
+ gbColour = CRGBA(255, 255, 255, 255);
+ }
}
void
@@ -112,6 +157,13 @@ COnscreenTimer::AddClock(uint32 offset, char* text, bool bGoingDown)
if(m_sClocks[i].m_nClockOffset == 0) {
m_sClocks[i].m_nClockOffset = offset;
m_sClocks[i].m_bClockGoingDown = bGoingDown;
+ m_sClocks[i].m_bClockTickThisFrame = false;
+ if (gbColour == CRGBA(255, 255, 255, 255))
+ m_sClocks[i].m_aClockColour = CRGBA(244, 225, 91, 255);
+ else {
+ m_sClocks[i].m_aClockColour = gbColour;
+ gbColour = CRGBA(255, 255, 255, 255);
+ }
if(text)
strncpy(m_sClocks[i].m_aClockText, text, ARRAY_SIZE(m_sClocks[0].m_aClockText));
else
@@ -140,8 +192,12 @@ COnscreenTimerEntry::Process()
}
else {
int32 oldTimeSeconds = oldTime / 1000;
- if (oldTimeSeconds < 12 && newTime / 1000 != oldTimeSeconds && !TheCamera.m_WideScreenOn) {
- DMAudio.PlayFrontEndSound(SOUND_CLOCK_TICK, newTime / 1000);
+ if (oldTimeSeconds < 12) {
+ m_bClockTickThisFrame = false;
+ if (newTime / 1000 != oldTimeSeconds) {
+ m_bClockTickThisFrame = true;
+ DMAudio.PlayFrontEndSound(SOUND_CLOCK_TICK, newTime / 1000);
+ }
}
}
}
@@ -153,7 +209,7 @@ void
COnscreenTimerEntry::ProcessForDisplayClock()
{
uint32 time = *CTheScripts::GetPointerToScriptVariable(m_nClockOffset);
- sprintf(m_aClockBuffer, "%02d:%02d", time / 1000 / 60 % 100,
+ sprintf(m_aClockBuffer, "%d:%02d", time / 1000 / 60 % 100,
time / 1000 % 60);
}
@@ -161,5 +217,28 @@ void
COnscreenCounterEntry::ProcessForDisplayCounter()
{
uint32 counter = *CTheScripts::GetPointerToScriptVariable(m_nCounterOffset);
- sprintf(m_aCounterBuffer, "%d", counter);
+ char prefix[2] = { '\0' };
+ if (m_bAddDollarPrefix)
+ sprintf(prefix, "$");
+#ifdef FIX_BUGS
+ char suffix[4] = { '\0' };
+#else
+ char suffix[2] = { '\0' };
+#endif
+ if (m_nTotal != -1) {
+ m_nTotal = Min(99, m_nTotal);
+ sprintf(suffix, "/%d", m_nTotal);
+ }
+ sprintf(m_aCounterBuffer, "%s%d%s", prefix, counter, suffix);
+}
+
+void
+COnscreenTimer::ChangeCounterPrefix(uint32 offset, bool bChange)
+{
+ for (uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) {
+ if (offset == m_sCounters[i].m_nCounterOffset) {
+ m_sCounters[i].m_bAddDollarPrefix = bChange;
+ return;
+ }
+ }
}
diff --git a/src/control/OnscreenTimer.h b/src/control/OnscreenTimer.h
index 8c049d7d..a175143f 100644
--- a/src/control/OnscreenTimer.h
+++ b/src/control/OnscreenTimer.h
@@ -1,5 +1,7 @@
#pragma once
+#include "common.h"
+
enum
{
COUNTER_DISPLAY_NUMBER,
@@ -14,27 +16,31 @@ public:
char m_aClockBuffer[40];
bool m_bClockProcessed;
bool m_bClockGoingDown;
+ CRGBA m_aClockColour;
+ bool m_bClockTickThisFrame;
void Process();
void ProcessForDisplayClock();
};
-VALIDATE_SIZE(COnscreenTimerEntry, 0x3C);
-
class COnscreenCounterEntry
{
public:
uint32 m_nCounterOffset;
- char m_aCounterText[10];
+ int32 m_nTotal;
+ char m_aCounterText1[10];
+ char m_aCounterText2[10];
+ uint16 m_nTypeOfTotal;
uint16 m_nType;
char m_aCounterBuffer[40];
bool m_bCounterProcessed;
+ CRGBA m_colour1;
+ CRGBA m_colour2;
+ bool m_bAddDollarPrefix;
void ProcessForDisplayCounter();
};
-VALIDATE_SIZE(COnscreenCounterEntry, 0x3C);
-
class COnscreenTimer
{
public:
@@ -50,8 +56,12 @@ public:
void ClearCounter(uint32 offset);
void ClearClock(uint32 offset);
- void AddCounter(uint32 offset, uint16 type, char* text, uint16 pos);
+ void AddCounter(uint32 offset, uint16 type, char* text, uint16 pos, int32, char*, uint16);
void AddClock(uint32 offset, char* text, bool bGoingDown);
+
+ void ChangeCounterPrefix(uint32 offset, bool bChange);
};
-VALIDATE_SIZE(COnscreenTimer, 0xF4);
+extern CRGBA gbColour;
+extern CRGBA gbColour2;
+
diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp
index 80d40b45..f9d58687 100644
--- a/src/control/PathFind.cpp
+++ b/src/control/PathFind.cpp
@@ -1763,18 +1763,18 @@ CPathFind::TestCoorsCloseness(CVector target, uint8 type, CVector start)
float dist;
if(type == PATH_CAR)
- DoPathSearch(type, start, -1, target, pNodeList, &DummyResult, 32, nil, &dist, 999999.88f, -1);
+ DoPathSearch(type, start, -1, target, pNodeList, &DummyResult, 32, nil, &dist, 170.0f, -1);
else
DoPathSearch(type, start, -1, target, nil, &DummyResult2, 0, nil, &dist, 50.0f, -1);
#ifdef FIX_BUGS
// dist has GenerationDistMultiplier as a factor, so our reference dist should have it too
if(type == PATH_CAR)
- return dist < 150.0f*TheCamera.GenerationDistMultiplier;
+ return dist < 180.0f*TheCamera.GenerationDistMultiplier;
else
return dist < 100.0f*TheCamera.GenerationDistMultiplier;
#else
if(type == PATH_CAR)
- return dist < 150.0f;
+ return dist < 180.0f;
else
return dist < 100.0f;
#endif
diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp
index f6b1a9b9..020083cf 100644
--- a/src/control/Pickups.cpp
+++ b/src/control/Pickups.cpp
@@ -709,8 +709,10 @@ bool
CPickups::TestForPickupsInBubble(CVector pos, float range)
{
for (int i = 0; i < NUMPICKUPS; i++) {
- if ((aPickUps[i].m_vecPos - pos).Magnitude() < range)
- return true;
+ if (aPickUps[i].m_eType != PICKUP_NONE) {
+ if ((aPickUps[i].m_vecPos - pos).Magnitude() < range)
+ return true;
+ }
}
return false;
}
@@ -1739,4 +1741,20 @@ CPed::CreateDeadPedPickupCoors(float *x, float *y, float *z)
*y = GetPosition().y;
*z = GetPosition().z + 0.4f;
#undef NUMBER_OF_ATTEMPTS
-} \ No newline at end of file
+}
+
+float CPickups::GetValue(int index)
+{
+ int i = GetActualPickupIndex(index);
+ if (i == -1)
+ return 0.0f;
+ return aPickUps[i].m_fRevenue;
+}
+
+void CPickups::SetValue(int index, float value)
+{
+ int i = GetActualPickupIndex(index);
+ if (i == -1)
+ return;
+ aPickUps[i].m_fRevenue = value;
+}
diff --git a/src/control/Pickups.h b/src/control/Pickups.h
index 0de7f827..fd8b15cd 100644
--- a/src/control/Pickups.h
+++ b/src/control/Pickups.h
@@ -117,6 +117,9 @@ public:
static void RemoveAllPickupsOfACertainWeaponGroupWithNoAmmo(eWeaponType);
static CPickup *FindPickUpForThisObject(CEntity*);
+
+ static float GetValue(int);
+ static void SetValue(int, float);
};
extern uint16 AmmoForWeapon[WEAPONTYPE_TOTALWEAPONS + 1];
diff --git a/src/control/Remote.cpp b/src/control/Remote.cpp
index 047b19f3..dc025549 100644
--- a/src/control/Remote.cpp
+++ b/src/control/Remote.cpp
@@ -9,7 +9,7 @@
#include "PlayerInfo.h"
#include "Vehicle.h"
-void
+CVehicle*
CRemote::GivePlayerRemoteControlledCar(float x, float y, float z, float rot, uint16 model)
{
CAutomobile *car = new CAutomobile(model, MISSION_VEHICLE);
@@ -40,6 +40,7 @@ CRemote::GivePlayerRemoteControlledCar(float x, float y, float z, float rot, uin
TheCamera.SetZoomValueCamStringScript(0);
} else
TheCamera.TakeControl(car, CCam::MODE_BEHINDCAR, INTERPOLATION, CAMCONTROL_SCRIPT);
+ return car;
}
void
diff --git a/src/control/Remote.h b/src/control/Remote.h
index 72cabb7c..4c40dd96 100644
--- a/src/control/Remote.h
+++ b/src/control/Remote.h
@@ -3,6 +3,6 @@
class CRemote
{
public:
- static void GivePlayerRemoteControlledCar(float, float, float, float, uint16);
+ static CVehicle* GivePlayerRemoteControlledCar(float, float, float, float, uint16);
static void TakeRemoteControlledCarFromPlayer(bool blowUp = true);
};
diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp
index 71b28f7a..8d7dbf85 100644
--- a/src/control/Replay.cpp
+++ b/src/control/Replay.cpp
@@ -1285,7 +1285,7 @@ void CReplay::TriggerPlayback(uint8 cam_mode, float cam_x, float cam_y, float ca
DMAudio.SetEffectsFadeVol(0);
DMAudio.SetMusicFadeVol(0);
CEscalators::Shutdown();
- CWaterCreatures::RemoveAll();
+ //CWaterCreatures::RemoveAll();
int current;
for (current = 0; current < NUM_REPLAYBUFFERS; current++)
if (BufferStatus[current] == REPLAYBUFFER_RECORD)
diff --git a/src/control/Replay.h b/src/control/Replay.h
index 5dd8b651..98e02577 100644
--- a/src/control/Replay.h
+++ b/src/control/Replay.h
@@ -46,7 +46,7 @@ enum {
struct CStoredDetailedAnimationState
{
- uint8 aAnimId[NUM_MAIN_ANIMS_IN_REPLAY];
+ uint16 aAnimId[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aCurTime[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aSpeed[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aBlendAmount[NUM_MAIN_ANIMS_IN_REPLAY];
@@ -54,7 +54,7 @@ struct CStoredDetailedAnimationState
uint8 aFunctionCallbackID[NUM_MAIN_ANIMS_IN_REPLAY];
uint16 aFlags[NUM_MAIN_ANIMS_IN_REPLAY];
uint8 aGroupId[NUM_MAIN_ANIMS_IN_REPLAY];
- uint8 aAnimId2[NUM_PARTIAL_ANIMS_IN_REPLAY];
+ uint16 aAnimId2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint8 aCurTime2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint8 aSpeed2[NUM_PARTIAL_ANIMS_IN_REPLAY];
uint8 aBlendAmount2[NUM_PARTIAL_ANIMS_IN_REPLAY];
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index a2dd8512..fc62aab7 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -11,15 +11,14 @@
#include "CivilianPed.h"
#include "Clock.h"
#include "CopPed.h"
+#include "Coronas.h"
#include "Debug.h"
#include "DMAudio.h"
#include "EmergencyPed.h"
#include "FileMgr.h"
#include "Frontend.h"
#include "General.h"
-#ifdef MISSION_REPLAY
#include "GenericGameStorage.h"
-#endif
#include "HandlingMgr.h"
#include "Heli.h"
#include "Hud.h"
@@ -49,16 +48,19 @@
#include "Timecycle.h"
#include "TxdStore.h"
#include "Bike.h"
+#include "smallHeap.h"
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
#include <stdarg.h>
#endif
-uint8 CTheScripts::ScriptSpace[SIZE_SCRIPT_SPACE];
+//--LCS: file done except TODOs and command table
+uint8* CTheScripts::ScriptSpace;
CRunningScript CTheScripts::ScriptsArray[MAX_NUM_SCRIPTS];
intro_text_line CTheScripts::IntroTextLines[MAX_NUM_INTRO_TEXT_LINES];
intro_script_rectangle CTheScripts::IntroRectangles[MAX_NUM_INTRO_RECTANGLES];
CSprite2d CTheScripts::ScriptSprites[MAX_NUM_SCRIPT_SRPITES];
script_sphere_struct CTheScripts::ScriptSphereArray[MAX_NUM_SCRIPT_SPHERES];
+tCollectiveData CTheScripts::CollectiveArray[MAX_NUM_COLLECTIVES];
tUsedObject CTheScripts::UsedObjectArray[MAX_NUM_USED_OBJECTS];
int32 CTheScripts::MultiScriptArray[MAX_NUM_MISSION_SCRIPTS];
tBuildingSwap CTheScripts::BuildingSwapArray[MAX_NUM_BUILDING_SWAPS];
@@ -94,119 +96,87 @@ uint32 CTheScripts::LastMissionPassedTime;
uint16 CTheScripts::NumberOfExclusiveMissionScripts;
bool CTheScripts::bPlayerHasMetDebbieHarry;
bool CTheScripts::bPlayerIsInTheStatium;
-#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
-int16 CTheScripts::CardStack[CARDS_IN_DECK * MAX_DECKS];
-int16 CTheScripts::CardStackPosition;
-#endif
+int CTheScripts::AllowedCollision[MAX_ALLOWED_COLLISIONS];
+int CTheScripts::FSDestroyedFlag;
+uint16* CTheScripts::SavedVarIndices;
+int CTheScripts::NumSaveVars;
+int gScriptsFile = -1;
+int CTheScripts::NextProcessId = 1;
+bool CTheScripts::InTheScripts;
+CRunningScript* pCurrent;
+uint16 CTheScripts::NumTrueGlobals;
+uint16 CTheScripts::MostGlobals;
+CVector gVectorSetInLua;
+int CTheScripts::NextScriptCoronaID;
+base::cSList<script_corona> CTheScripts::mCoronas;
#ifdef MISSION_REPLAY
-static const char* nonMissionScripts[] = {
- "copcar",
- "ambulan",
- "taxi",
- "firetru",
- "rampage",
- "t4x4_1",
- "t4x4_2",
- "t4x4_3",
- "rc1",
- "rc2",
- "rc3",
- "rc4",
- "hj",
- "usj",
- "mayhem",
- "range",
- "race",
- "pizza",
- "rcheli",
- "rcplne1",
- "rcrace1",
- "cokerun",
- "buypro1",
- "carbuy1",
- "buypro2",
- "icecut",
- "icecre1",
- "buypro3",
- "buypro4",
- "buypro5",
- "buypro6",
- "buypro7",
- "buypro8",
- "buypro9",
- "buypro10",
- "buypro11",
- "ovalrng",
- "mm",
- "kickst",
- "heli1sc",
- "heli2sc",
- "heli3sc",
- "heli4sc",
- "carpark_1",
- "bmx_1",
- "bmx_2"
-};
-
static const char* MissionScripts[] = {
- "LAWYER1",
- "LAWYER2",
- "LAWYER3",
- "LAWYER4",
- "GENERL1",
- "COL2",
- "GENERL3",
- "COL_4",
- "COL_5",
- "baron1",
- "baron2",
- "baron3",
- "baron4",
- "kent1",
- "baron5",
- "serg1",
- "serg2",
- "serg3",
- "bankjo1",
- "bankjo2",
- "bankjo3",
- "bankjo4",
- "phil1",
- "phil2",
- "porno1",
- "porno2",
- "porno3",
- "porno4",
- "protec1",
- "protec2",
- "protec3",
- "count1",
- "count2",
- "CAP_1",
- "FIN_1",
- "bike1",
- "bike2",
- "bike3",
- "rockb1",
- "rockb2",
- "rockb3",
- "cuban1",
- "cuban2",
- "cuban3",
- "cuban4",
- "hait1",
- "hait2",
- "hait3",
- "assin1",
- "assin2",
- "assin3",
- "assin4",
- "assin5",
- "taxwar1",
- "taxwar2",
- "taxwar3"
+ "VIC2",
+ "VIC3",
+ "VIC4",
+ "VIC5",
+ "VIC6",
+ "VIC7",
+ "SAL1",
+ "SAL2",
+ "SAL3",
+ "SAL4",
+ "SAL5",
+ "SAL6",
+ "SAL7",
+ "SAL8",
+ "JDT1",
+ "JDT2",
+ "JDT3",
+ "JDT4",
+ "JDT5",
+ "JDT6",
+ "JDT7",
+ "JDT8",
+ "MAC1",
+ "MAC2",
+ "MAC3",
+ "MAC4",
+ "MAC5",
+ "SALS1",
+ "SALS2",
+ "SALS3",
+ "SALS4",
+ "SALS5",
+ "SALS6",
+ "RAYS1",
+ "RAYS2",
+ "RAYS3",
+ "RAYS4",
+ "RAYS5",
+ "DONS1",
+ "DONS2",
+ "DONS3",
+ "DONS4",
+ "DONS5",
+ "DONS6",
+ "DONS7",
+ "NEDS1",
+ "NEDS2",
+ "NEDS3",
+ "NEDS4",
+ "SALH1",
+ "SALH2",
+ "SALH3",
+ "SALH4",
+ "SALH5",
+ "DONH1",
+ "DONH2",
+ "DONH3",
+ "DONH4",
+ "DONH5",
+ "DONH6",
+ "TOSH1",
+ "TOSH2",
+ "TOSH3",
+ "TOSH4"
};
int AllowMissionReplay;
@@ -223,7 +193,6 @@ int IsInAmmunation;
int MissionSkipLevel;
#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
-bool UsingMobileScript;
bool AlreadySavedGame;
#endif
@@ -231,7 +200,7 @@ bool AlreadySavedGame;
const uint32 CRunningScript::nSaveStructSize =
#ifdef COMPATIBLE_SAVES
- 136;
+ 536;
#else
sizeof(CRunningScript);
#endif
@@ -260,6 +229,23 @@ cleanup_entity_struct* CMissionCleanup::FindFree()
return nil;
}
+void SleepThisPed(cleanup_entity_struct* pCleanup, CPed* pPed)
+{
+ printf("*** SLEEPING PED %i %i\n", pCleanup->id, pPed->GetModelIndex());
+ if (!pPed->GetIsStatic())
+ pPed->RemoveFromMovingList();
+ pPed->bIsStaticWaitingForCollision = true;
+}
+
+void WakeThisPed(cleanup_entity_struct* pCleanup, CPed* pPed)
+{
+ printf("*** WAKING UP PED %i %i\n", pCleanup->id, pPed->GetModelIndex());
+ pPed->bIsStaticWaitingForCollision = false;
+ if (!pPed->bIsStatic)
+ pPed->AddToMovingList();
+
+}
+
void CMissionCleanup::AddEntityToList(int32 id, uint8 type)
{
cleanup_entity_struct* pNew = FindFree();
@@ -329,46 +315,100 @@ void CMissionCleanup::CheckIfCollisionHasLoadedForMissionObjects()
{
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
if (pVehicle) {
- if (pVehicle->bIsStaticWaitingForCollision) {
- if (CColStore::HasCollisionLoaded(pVehicle->GetPosition())) {
- pVehicle->bIsStaticWaitingForCollision = false;
+ eLevelName level = CTheZones::GetLevelFromPosition(&pVehicle->GetPosition());
+ if (level == LEVEL_GENERIC)
+ level = CGame::currLevel;
+ if (!CColStore::HasCollisionLoaded(level)) {
+ if (!pVehicle->bIsStaticWaitingForCollision) {
+ if (!pVehicle->IsHeli() && !pVehicle->IsPlane() && pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI &&
+ pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT && pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE) {
+ printf("*** SLEEPING VEHICLE %i %i\n", m_sEntities[i].id, pVehicle->GetModelIndex());
if (!pVehicle->GetIsStatic())
- pVehicle->AddToMovingList();
+ pVehicle->RemoveFromMovingList();
+ pVehicle->bIsStaticWaitingForCollision = true;
+ }
}
}
- }
- break;
- }
- case CLEANUP_CHAR:
- {
- CPed* pPed = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
- if (pPed) {
- if (pPed->bIsStaticWaitingForCollision) {
- if (CColStore::HasCollisionLoaded(pPed->GetPosition())) {
- pPed->bIsStaticWaitingForCollision = false;
- if (!pPed->GetIsStatic())
- pPed->AddToMovingList();
+ else {
+ if (pVehicle->bIsStaticWaitingForCollision) {
+ printf("*** WAKING UP VEHICLE %i %i\n", m_sEntities[i].id, pVehicle->GetModelIndex());
+ pVehicle->bIsStaticWaitingForCollision = false;
+ if (!pVehicle->bIsStatic)
+ pVehicle->AddToMovingList();
}
}
}
- break;
}
+ break;
case CLEANUP_OBJECT:
- {
CObject* pObject = CPools::GetObjectPool()->GetAt(m_sEntities[i].id);
if (pObject) {
- if (pObject->bIsStaticWaitingForCollision) {
- if (CColStore::HasCollisionLoaded(pObject->GetPosition())) {
- pObject->bIsStaticWaitingForCollision = false;
+ eLevelName level = CTheZones::GetLevelFromPosition(&pObject->GetPosition());
+ if (level == LEVEL_GENERIC)
+ level = CGame::currLevel;
+ if (!CColStore::HasCollisionLoaded(level)) {
+ if (!pObject->bIsStaticWaitingForCollision) {
if (!pObject->GetIsStatic())
+ pObject->RemoveFromMovingList();
+ pObject->bIsStaticWaitingForCollision = true;
+ }
+ }
+ else {
+ if (pObject->bIsStaticWaitingForCollision) {
+ pObject->bIsStaticWaitingForCollision = false;
+ if (!pObject->bIsStatic)
pObject->AddToMovingList();
}
}
}
- break;
}
- default:
- break;
+ }
+ for (int i = 0; i < MAX_CLEANUP; i++) {
+ switch (m_sEntities[i].type) {
+ case CLEANUP_CHAR:
+ {
+ CPed* pPed = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
+ if (pPed) {
+ eLevelName level = CTheZones::GetLevelFromPosition(&pPed->GetPosition());
+ if (level == LEVEL_GENERIC)
+ level = CGame::currLevel;
+ if (!pPed->bIsStaticWaitingForCollision) {
+ if (pPed->bInVehicle) {
+ if (pPed->m_pMyVehicle->GetIsStatic()) {
+ SleepThisPed(&m_sEntities[i], pPed);
+ continue;
+ }
+ }
+ if (!CColStore::HasCollisionLoaded(level)) {
+ if (pPed->bInVehicle && pPed->m_pMyVehicle->GetIsStatic() ||
+ pPed->m_attachedTo && pPed->m_attachedTo->GetIsStatic())
+ SleepThisPed(&m_sEntities[i], pPed);
+ }
+ }
+ else {
+ if (!pPed->bInVehicle) {
+ if (CColStore::HasCollisionLoaded(level)) {
+ if (!(pPed->bInVehicle && pPed->m_pMyVehicle->GetIsStatic() ||
+ pPed->m_attachedTo && pPed->m_attachedTo->GetIsStatic()))
+ WakeThisPed(&m_sEntities[i], pPed);
+ }
+ }
+ else {
+ if (!pPed->m_pMyVehicle->GetIsStatic()) {
+ WakeThisPed(&m_sEntities[i], pPed);
+ continue;
+ }
+ if (CColStore::HasCollisionLoaded(level)) {
+ if (!(pPed->bInVehicle && pPed->m_pMyVehicle->GetIsStatic() ||
+ pPed->m_attachedTo && pPed->m_attachedTo->GetIsStatic()))
+ WakeThisPed(&m_sEntities[i], pPed);
+ }
+ }
+ }
+
+ }
+ }
+ break;
}
}
}
@@ -380,6 +420,8 @@ void CMissionCleanup::Process()
CCarCtrl::CarDensityMultiplier = 1.0f;
CPed::nThreatReactionRangeMultiplier = 1;
CPed::nEnterCarRangeMultiplier = 1;
+ for (int i = 0; i < MAX_ALLOWED_COLLISIONS; i++)
+ CTheScripts::AllowedCollision[i] = 0;
FindPlayerPed()->m_pWanted->m_fCrimeSensitivity = 1.0f;
CRoadBlocks::ClearScriptRoadBlocks();
CRouteNode::Initialise();
@@ -387,20 +429,22 @@ void CMissionCleanup::Process()
TheCamera.Restore();
TheCamera.SetWideScreenOff();
CSpecialFX::bLiftCam = false;
- CSpecialFX::bVideoCam = false;
- CTimeCycle::StopExtraColour(0);
+ // TODO(LCS): CHud::m_ClockEventWarningMinutes = 0;
+ // TODO(LCS): CHud::m_ClockEventFlashTimer = 0;
+ CTimeCycle::StopExtraColour(0); // TODO: thiscall
for (int i = 0; i < MISSION_AUDIO_SLOTS; i++)
DMAudio.ClearMissionAudio(i);
CWeather::ReleaseWeather();
for (int i = 0; i < NUM_OF_SPECIAL_CHARS; i++)
CStreaming::SetMissionDoesntRequireSpecialChar(i);
- for (int i = 0; i < NUM_OF_CUTSCENE_OBJECTS; i++)
- CStreaming::SetMissionDoesntRequireModel(MI_CUTOBJ01 + i);
- CStreaming::ms_disableStreaming = false;
- CHud::m_ItemToFlash = -1;
- CHud::SetHelpMessage(nil, false);
+#ifdef GTA_NETWORK
+ if (!gIsMultiplayerGame)
+#endif
+ CStreaming::ms_disableStreaming = false;
+ if (CHud::m_ItemToFlash != ITEM_ARMOUR && CHud::m_ItemToFlash != ITEM_HEALTH)
+ CHud::m_ItemToFlash = ITEM_NONE;
+ CHud::SetHelpMessage(nil, false); // nil, false, false, true TODO(LCS)
CUserDisplay::OnscnTimer.m_bDisabled = false;
- CTheScripts::RemoveScriptTextureDictionary();
CWorld::Players[0].m_pPed->m_pWanted->m_bIgnoredByCops = false;
CWorld::Players[0].m_pPed->m_pWanted->m_bIgnoredByEveryone = false;
CWorld::Players[0].MakePlayerSafe(false);
@@ -408,10 +452,11 @@ void CMissionCleanup::Process()
CWorld::Players[0].m_pPed->m_nDrunkCountdown = 0;
CPad::GetPad(0)->SetDrunkInputDelay(0);
CWorld::Players[0].m_bDriveByAllowed = true;
+ CPad::GetPad(0)->unk_B4 = 1.0f;
+ CPad::GetPad(0)->unk_B8 = 0.5f;
DMAudio.ShutUpPlayerTalking(FALSE);
CVehicle::bDisableRemoteDetonation = false;
CVehicle::bDisableRemoteDetonationOnContact = false;
- CGameLogic::ClearShortCut();
CTheScripts::RiotIntensity = 0;
CTheScripts::StoreVehicleIndex = -1;
CTheScripts::StoreVehicleWasRandom = true;
@@ -447,6 +492,10 @@ void CMissionCleanup::Process()
}
RemoveEntityFromList(m_sEntities[i].id, m_sEntities[i].type);
}
+ for (int i = 1; i < MODELINFOSIZE; i++) {
+ if (CStreaming::IsScriptOwnedModel(i))
+ CStreaming::SetMissionDoesntRequireModel(i);
+ }
#ifdef SECUROM
if ((myrand() & 3) == 2){
// if pirated game
@@ -475,7 +524,7 @@ bool CUpsideDownCarCheck::IsCarUpsideDown(int32 id)
bool CUpsideDownCarCheck::IsCarUpsideDown(CVehicle* pVehicle)
{
- assert(pVehicle);
+ script_assert(pVehicle);
return pVehicle->GetUp().z <= UPSIDEDOWN_UP_THRESHOLD &&
pVehicle->GetMoveSpeed().Magnitude() < UPSIDEDOWN_MOVE_SPEED_THRESHOLD &&
pVehicle->GetTurnSpeed().Magnitude() < UPSIDEDOWN_TURN_SPEED_THRESHOLD;
@@ -614,50 +663,71 @@ bool CStuckCarCheck::HasCarBeenStuckForAWhile(int32 id)
return false;
}
-void CRunningScript::CollectParameters(uint32* pIp, int16 total)
+void CRunningScript::CollectParameters(uint32* pIp, int16 total, int* pParameters)
{
- for (int16 i = 0; i < total; i++){
- uint16 varIndex;
+ while (total--){
switch (CTheScripts::Read1ByteFromScript(pIp))
{
- case ARGUMENT_INT32:
- case ARGUMENT_FLOAT:
- ScriptParams[i] = CTheScripts::Read4BytesFromScript(pIp);
+ case ARGUMENT_END:
+ return;
+ case ARGUMENT_INT_ZERO:
+ *pParameters = 0;
break;
- case ARGUMENT_GLOBALVAR:
- varIndex = CTheScripts::Read2BytesFromScript(pIp);
- script_assert(varIndex >= 8 && varIndex < CTheScripts::GetSizeOfVariableSpace());
- ScriptParams[i] = *((int32*)&CTheScripts::ScriptSpace[varIndex]);
+ case ARGUMENT_FLOAT_ZERO:
+ *pParameters = 0;
break;
- case ARGUMENT_LOCALVAR:
- varIndex = CTheScripts::Read2BytesFromScript(pIp);
- script_assert(varIndex >= 0 && varIndex < ARRAY_SIZE(m_anLocalVariables));
- ScriptParams[i] = m_anLocalVariables[varIndex];
+ case ARGUMENT_FLOAT_1BYTE:
+ *pParameters = (uint32)(uint8)CTheScripts::Read1ByteFromScript(pIp) << 24;
+ break;
+ case ARGUMENT_FLOAT_2BYTES:
+ *pParameters = (uint32)(uint16)CTheScripts::Read2BytesFromScript(pIp) << 16;
+ break;
+ case ARGUMENT_FLOAT_3BYTES:
+ *pParameters = (uint32)(uint8)CTheScripts::Read1ByteFromScript(pIp) << 8;
+ *pParameters |= (uint32)(uint16)CTheScripts::Read2BytesFromScript(pIp) << 16;
+ break;
+ case ARGUMENT_INT32:
+ case ARGUMENT_FLOAT:
+ *pParameters = CTheScripts::Read4BytesFromScript(pIp);
break;
case ARGUMENT_INT8:
- ScriptParams[i] = CTheScripts::Read1ByteFromScript(pIp);
+ *pParameters = CTheScripts::Read1ByteFromScript(pIp);
break;
case ARGUMENT_INT16:
- ScriptParams[i] = CTheScripts::Read2BytesFromScript(pIp);
+ *pParameters = CTheScripts::Read2BytesFromScript(pIp);
break;
default:
- script_assert(0);
+ *pIp -= 1;
+ *pParameters = *GetPointerToScriptVariable(pIp, 0);
break;
}
+ pParameters++;
}
}
+
int32 CRunningScript::CollectNextParameterWithoutIncreasingPC(uint32 ip)
{
uint32* pIp = &ip;
+ int tmp;
switch (CTheScripts::Read1ByteFromScript(pIp))
{
+ case ARGUMENT_END:
+ return 0; // TODO(LCS)
+ case ARGUMENT_INT_ZERO:
+ return 0;
+ case ARGUMENT_FLOAT_ZERO:
+ return 0;
+ case ARGUMENT_FLOAT_1BYTE:
+ return (uint32)(uint8)CTheScripts::Read1ByteFromScript(pIp) << 24;
+ case ARGUMENT_FLOAT_2BYTES:
+ return (uint32)(uint16)CTheScripts::Read2BytesFromScript(pIp) << 16;
+ case ARGUMENT_FLOAT_3BYTES:
+ tmp = (uint32)(uint8)CTheScripts::Read1ByteFromScript(pIp) << 8;
+ tmp |= (uint32)(uint16)CTheScripts::Read2BytesFromScript(pIp) << 16;
+ return tmp;
case ARGUMENT_INT32:
return CTheScripts::Read4BytesFromScript(pIp);
- case ARGUMENT_GLOBALVAR:
- return *((int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(pIp)]);
- case ARGUMENT_LOCALVAR:
- return m_anLocalVariables[CTheScripts::Read2BytesFromScript(pIp)];
case ARGUMENT_INT8:
return CTheScripts::Read1ByteFromScript(pIp);
case ARGUMENT_INT16:
@@ -665,7 +735,8 @@ int32 CRunningScript::CollectNextParameterWithoutIncreasingPC(uint32 ip)
case ARGUMENT_FLOAT:
return CTheScripts::Read4BytesFromScript(pIp);
default:
- script_assert(0);
+ (*pIp)--;
+ return *GetPointerToScriptVariable(pIp, 0);
}
return -1;
}
@@ -673,38 +744,61 @@ int32 CRunningScript::CollectNextParameterWithoutIncreasingPC(uint32 ip)
void CRunningScript::StoreParameters(uint32* pIp, int16 number)
{
for (int16 i = 0; i < number; i++){
- switch (CTheScripts::Read1ByteFromScript(pIp)) {
- case ARGUMENT_GLOBALVAR:
- *(int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(pIp)] = ScriptParams[i];
- break;
- case ARGUMENT_LOCALVAR:
- m_anLocalVariables[CTheScripts::Read2BytesFromScript(pIp)] = ScriptParams[i];
- break;
- default:
- script_assert(0);
- }
+ *GetPointerToScriptVariable(pIp, 0) = ScriptParams[i];
}
}
+int32* GetPointerToScriptVariable(CRunningScript* pScript, uint32* pIp)
+{
+ uint8 type = CTheScripts::Read1ByteFromScript(pIp);
+ if (type >= ARGUMENT_GLOBAL_ARRAY) {
+ uint8 index_in_block = CTheScripts::Read1ByteFromScript(pIp);
+ uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
+ uint8 size = CTheScripts::Read1ByteFromScript(pIp);
+ script_assert(size > 0);
+ script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
+ uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
+ return (int32*)&CTheScripts::ScriptSpace[4 * (((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index + index_in_block)];
+ }
+ else if (type >= ARGUMENT_GLOBAL) {
+ uint8 index_in_block = CTheScripts::Read1ByteFromScript(pIp);
+ return (int32*)&CTheScripts::ScriptSpace[4 * (((int)(type - ARGUMENT_GLOBAL) << 8) + index_in_block)];
+ }
+ else if (type >= ARGUMENT_LOCAL_ARRAY) {
+ uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
+ uint8 size = CTheScripts::Read1ByteFromScript(pIp);
+ script_assert(size > 0);
+ script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
+ uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
+ return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL_ARRAY) + index];
+ }
+ else if (type >= ARGUMENT_LOCAL) {
+ return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL)];
+ }
+ else if (type >= ARGUMENT_TIMER) {
+ return &pScript->m_anLocalVariables[NUM_LOCAL_VARS + 8 + (type - ARGUMENT_TIMER)];
+ }
+ script_assert(false && "wrong type for variable");
+ return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL)];
+}
+
int32 *CRunningScript::GetPointerToScriptVariable(uint32* pIp, int16 type)
{
- switch (CTheScripts::Read1ByteFromScript(pIp))
- {
- case ARGUMENT_GLOBALVAR:
- script_assert(type == VAR_GLOBAL);
- return (int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(pIp)];
- case ARGUMENT_LOCALVAR:
- script_assert(type == VAR_LOCAL);
- return &m_anLocalVariables[CTheScripts::Read2BytesFromScript(pIp)];
- default:
- script_assert(0);
+ return ::GetPointerToScriptVariable(this, pIp);
+}
+
+int CTheScripts::GetSaveVarIndex(int var)
+{
+ for (int i = 0; i < NumSaveVars; i++) {
+ if (SavedVarIndices[i] == var)
+ return i;
}
- return nil;
+ return -1;
}
void CRunningScript::Init()
{
- strcpy(m_abScriptName, "noname");
+ sprintf(m_abScriptName, "id%02i", m_nId);
next = prev = nil;
SetIP(0);
for (int i = 0; i < MAX_STACK_DEPTH; i++)
@@ -715,13 +809,28 @@ void CRunningScript::Init()
m_bCondResult = false;
m_bIsMissionScript = false;
m_bSkipWakeTime = false;
- for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
+ for (int i = 0; i < NUM_LOCAL_VARS + 8 + NUM_TIMERS; i++)
m_anLocalVariables[i] = 0;
m_nAndOrState = 0;
m_bNotFlag = false;
m_bDeatharrestEnabled = true;
m_bDeatharrestExecuted = false;
m_bMissionFlag = false;
+ m_nLocalsPointer = 0;
+}
+
+void CTheScripts::Shutdown()
+{
+ if (gScriptsFile != -1) {
+ CFileMgr::CloseFile(gScriptsFile);
+ gScriptsFile = -1;
+ }
+ if (ScriptSpace) {
+ base::cMainMemoryManager::Instance()->Free(ScriptSpace);
+ ScriptSpace = nil;
+ FSDestroyedFlag = false;
+ OnAMissionFlag = 0;
+ }
}
#ifdef USE_DEBUG_SCRIPT_LOADER
@@ -731,18 +840,18 @@ int CTheScripts::OpenScript()
{
CFileMgr::ChangeDir("\\");
switch (ScriptToLoad) {
- case 0: return CFileMgr::OpenFile("data\\main.scm", "rb");
- case 1: return CFileMgr::OpenFile("data\\freeroam_miami.scm", "rb");
- case 2: return CFileMgr::OpenFile("data\\main_d.scm", "rb");
+ case 0: return CFileMgr::OpenFile("DATA\\main.scm", "rb");
+ case 1: return CFileMgr::OpenFile("DATA\\freeroam_lcs.scm", "rb");
+ case 2: return CFileMgr::OpenFile("DATA\\main_d.scm", "rb");
}
- return CFileMgr::OpenFile("data\\main.scm", "rb");
+ return CFileMgr::OpenFile("DATA\\main.scm", "rb");
}
#endif
-void CTheScripts::Init()
+bool CTheScripts::Init(bool loaddata)
{
- for (int i = 0; i < SIZE_SCRIPT_SPACE; i++)
- ScriptSpace[i] = 0;
+ bool retval = false;
+ printf("CTheScripts::Init\n");
pActiveScripts = pIdleScripts = nil;
for (int i = 0; i < MAX_NUM_SCRIPTS; i++){
ScriptsArray[i].Init();
@@ -751,31 +860,52 @@ void CTheScripts::Init()
MissionCleanUp.Init();
UpsideDownCars.Init();
StuckCars.Init();
-#ifdef USE_DEBUG_SCRIPT_LOADER
- // glfwGetKey doesn't work because of CGame::Initialise is blocking
- CPad::UpdatePads();
- if(CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0;
- if(CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1;
- if(CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2;
-
- int mainf = OpenScript();
-#else
- CFileMgr::SetDir("data");
- int mainf = CFileMgr::OpenFile("main.scm", "rb");
-#endif
- CFileMgr::Read(mainf, (char*)ScriptSpace, SIZE_MAIN_SCRIPT);
- CFileMgr::CloseFile(mainf);
- CFileMgr::SetDir("");
StoreVehicleIndex = -1;
StoreVehicleWasRandom = true;
OnAMissionFlag = 0;
LastMissionPassedTime = (uint32)-1;
+ for (int i = 0; i < MAX_NUM_COLLECTIVES; i++) {
+ CollectiveArray[i].colIndex = -1;
+ CollectiveArray[i].pedIndex = 0;
+ }
+ NextFreeCollectiveIndex = 0;
LastRandomPedId = -1;
for (int i = 0; i < MAX_NUM_USED_OBJECTS; i++){
memset(&UsedObjectArray[i].name, 0, sizeof(UsedObjectArray[i].name));
UsedObjectArray[i].index = 0;
}
+#if defined FIX_BUGS || (!defined GTA_PS2 && !defined GTA_PSP)
+ for (base::cSList<script_corona>::tSItem* i = CTheScripts::mCoronas.first; i;) {
+ base::cSList<script_corona>::tSItem* next = i->next;
+ delete i;
+ i = next;
+ }
+ CTheScripts::mCoronas.first = nil;
+#endif
NumberOfUsedObjects = 0;
+ if (ScriptSpace)
+ Shutdown();
+#ifdef USE_DEBUG_SCRIPT_LOADER
+ // glfwGetKey doesn't work because of CGame::Initialise is blocking
+ CPad::UpdatePads();
+ if (CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0;
+ if (CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1;
+ if (CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2;
+ int mainf = OpenScript();
+#else
+ CFileMgr::SetDir("DATA");
+ int mainf = CFileMgr::OpenFile("main.scm", "rb");
+#endif
+ CFileMgr::Read(mainf, (char*)&MainScriptSize, sizeof(MainScriptSize));
+ int nLargestMissionSize = 0;
+ CFileMgr::Read(mainf, (char*)&nLargestMissionSize, sizeof(nLargestMissionSize));
+ if (!cSmallHeap::msInstance.IsLocked())
+ cSmallHeap::msInstance.Lock();
+ ScriptSpace = (uint8*)base::cMainMemoryManager::Instance()->Allocate(MainScriptSize + nLargestMissionSize);
+ memset(ScriptSpace, 0, MainScriptSize + nLargestMissionSize);
+ CFileMgr::Read(mainf, (char*)ScriptSpace, MainScriptSize);
+ gScriptsFile = mainf;
+ CFileMgr::SetDir("");
ReadObjectNamesFromScript();
UpdateObjectIndices();
bAlreadyRunningAMissionScript = false;
@@ -785,11 +915,10 @@ void CTheScripts::Init()
NumberOfExclusiveMissionScripts = 0;
NumberOfMissionScripts = 0;
LargestMissionScriptSize = 0;
- MainScriptSize = 0;
ReadMultiScriptFileOffsetsFromScript();
FailCurrentMission = 0;
DbgFlag = false;
- NumScriptDebugLines = 0;
+ //NumScriptDebugLines = 0;
RiotIntensity = 0;
bPlayerHasMetDebbieHarry = false;
bPlayerIsInTheStatium = false;
@@ -813,7 +942,7 @@ void CTheScripts::Init()
IntroRectangles[i].m_sColor = CRGBA(255, 255, 255, 255);
}
NumberOfIntroRectanglesThisFrame = 0;
- RemoveScriptTextureDictionary();
+ //RemoveScriptTextureDictionary(); // TODO(LCS) - probably not needed
for (int i = 0; i < MAX_NUM_BUILDING_SWAPS; i++){
BuildingSwapArray[i].m_pBuilding = nil;
BuildingSwapArray[i].m_nNewModel = -1;
@@ -821,16 +950,23 @@ void CTheScripts::Init()
}
for (int i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++)
InvisibilitySettingArray[i] = nil;
+ if (loaddata) {
+ printf("loaddata = true\n");
+ retval = GenericLoad();
+ }
+ for (int i = 0; i < MAX_ALLOWED_COLLISIONS; i++)
+ AllowedCollision[i] = 0;
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
LogAfterScriptInitializing();
#endif
#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
- UsingMobileScript = false;
AlreadySavedGame = false;
#endif
+ return retval;
}
+/*
void CTheScripts::RemoveScriptTextureDictionary()
{
for (int i = 0; i < ARRAY_SIZE(CTheScripts::ScriptSprites); i++)
@@ -839,6 +975,7 @@ void CTheScripts::RemoveScriptTextureDictionary()
if (slot != -1)
CTxdStore::RemoveTxd(slot);
}
+*/
void CRunningScript::RemoveScriptFromList(CRunningScript** ppScript)
{
@@ -864,6 +1001,7 @@ CRunningScript* CTheScripts::StartNewScript(uint32 ip)
CRunningScript* pNew = pIdleScripts;
script_assert(pNew);
pNew->RemoveScriptFromList(&pIdleScripts);
+ pNew->m_nId = NextProcessId++;
pNew->Init();
pNew->SetIP(ip);
pNew->AddScriptToList(&pActiveScripts);
@@ -875,6 +1013,8 @@ void CTheScripts::Process()
{
if (CReplay::IsPlayingBack())
return;
+ if (!ScriptSpace)
+ return;
CommandsExecuted = 0;
ScriptsUpdated = 0;
float timeStep = CTimer::GetTimeStepInMilliseconds();
@@ -949,6 +1089,7 @@ void CTheScripts::Process()
#endif
CRunningScript* script = pActiveScripts;
+ InTheScripts = true;
while (script != nil){
CRunningScript* next = script->GetNext();
++ScriptsUpdated;
@@ -958,6 +1099,11 @@ void CTheScripts::Process()
if (script && !script->m_bIsActive)
script = nil;
}
+ InTheScripts = false;
+ for (base::cSList<script_corona>::tSItem* i = CTheScripts::mCoronas.first; i; i = i->next) {
+ CCoronas::RegisterCorona((uint32)(uintptr)i, i->item.r, i->item.g, i->item.b, 255, CVector(i->item.x, i->item.y, i->item.z),
+ -i->item.size, 450.0f, i->item.type, i->item.flareType, 1, 0, 0, 0.0f);
+ }
DbgFlag = false;
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
@@ -980,6 +1126,7 @@ void CRunningScript::Process()
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
LogOnStartProcessing();
#endif
+ pCurrent = this;
if (m_bIsMissionScript)
DoDeatharrestCheck();
if (m_bMissionFlag && CTheScripts::FailCurrentMission == 1 && m_nStackPointer == 1)
@@ -1016,34 +1163,40 @@ int8 CRunningScript::ProcessOneCommand()
retval = ProcessCommands0To99(command);
else if (command < 200)
retval = ProcessCommands100To199(command);
- else if (command < 300)
+ else if (command < 305)
retval = ProcessCommands200To299(command);
- else if (command < 400)
+ else if (command < 405)
retval = ProcessCommands300To399(command);
- else if (command < 500)
+ else if (command < 505)
retval = ProcessCommands400To499(command);
- else if (command < 600)
+ else if (command < 605)
retval = ProcessCommands500To599(command);
- else if (command < 700)
+ else if (command < 705)
retval = ProcessCommands600To699(command);
- else if (command < 800)
+ else if (command < 805)
retval = ProcessCommands700To799(command);
- else if (command < 900)
+ else if (command < 905)
retval = ProcessCommands800To899(command);
- else if (command < 1000)
+ else if (command < 1005)
retval = ProcessCommands900To999(command);
- else if (command < 1100)
+ else if (command < 1105)
retval = ProcessCommands1000To1099(command);
- else if (command < 1200)
+ else if (command < 1205)
retval = ProcessCommands1100To1199(command);
- else if (command < 1300)
+ else if (command < 1305)
retval = ProcessCommands1200To1299(command);
- else if (command < 1400)
+ else if (command < 1405)
retval = ProcessCommands1300To1399(command);
- else if (command < 1500)
+ else if (command < 1497)
retval = ProcessCommands1400To1499(command);
+ else if (command < 1600)
+ retval = ProcessCommands1500To1599(command);
+ else if (command < 1700)
+ retval = ProcessCommands1600To1699(command);
+ else
+ script_assert(false);
#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
- if (!AlreadySavedGame) // we need to ignore first "fake" command which actually just saves the game
+ if (!AlreadySavedGame)
#endif
{
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
@@ -1064,16 +1217,18 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
float *fScriptVar1;
int *nScriptVar1;
switch (command) {
+ /*
case COMMAND_NOP:
return 0;
+ */
case COMMAND_WAIT:
CollectParameters(&m_nIp, 1);
- m_nWakeTime = CTimer::GetTimeInMilliseconds() + ScriptParams[0];
+ m_nWakeTime = CTimer::GetTimeInMilliseconds() + GET_INTEGER_PARAM(0);
m_bSkipWakeTime = false;
return 1;
case COMMAND_GOTO:
CollectParameters(&m_nIp, 1);
- SetIP(ScriptParams[0] >= 0 ? ScriptParams[0] : SIZE_MAIN_SCRIPT - ScriptParams[0]);
+ SetIP(GET_INTEGER_PARAM(0) >= 0 ? GET_INTEGER_PARAM(0) : CTheScripts::MainScriptSize - GET_INTEGER_PARAM(0));
/* Known issue: GOTO to 0. It might have been "better" to use > instead of >= */
/* simply because it never makes sense to jump to start of the script */
/* but jumping to start of a custom mission is an issue for simple mission-like scripts */
@@ -1082,174 +1237,174 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
return 0;
case COMMAND_SHAKE_CAM:
CollectParameters(&m_nIp, 1);
- CamShakeNoPos(&TheCamera, ScriptParams[0] / 1000.0f);
+ CamShakeNoPos(&TheCamera, GET_INTEGER_PARAM(0) / 1000.0f);
return 0;
case COMMAND_SET_VAR_INT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *ptr = ScriptParams[0];
+ *ptr = GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_SET_VAR_FLOAT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr = *(float*)&ScriptParams[0];
+ *(float*)ptr = GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_SET_LVAR_INT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *ptr = ScriptParams[0];
+ *ptr = GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_SET_LVAR_FLOAT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr = *(float*)&ScriptParams[0];
+ *(float*)ptr = GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_ADD_VAL_TO_INT_VAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *ptr += ScriptParams[0];
+ *ptr += GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_ADD_VAL_TO_FLOAT_VAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr += *(float*)&ScriptParams[0];
+ *(float*)ptr += GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_ADD_VAL_TO_INT_LVAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *ptr += ScriptParams[0];
+ *ptr += GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_ADD_VAL_TO_FLOAT_LVAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr += *(float*)&ScriptParams[0];
+ *(float*)ptr += GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_SUB_VAL_FROM_INT_VAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *ptr -= ScriptParams[0];
+ *ptr -= GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_SUB_VAL_FROM_FLOAT_VAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr -= *(float*)&ScriptParams[0];
+ *(float*)ptr -= GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_SUB_VAL_FROM_INT_LVAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *ptr -= ScriptParams[0];
+ *ptr -= GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_SUB_VAL_FROM_FLOAT_LVAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr -= *(float*)&ScriptParams[0];
+ *(float*)ptr -= GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_MULT_INT_VAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *ptr *= ScriptParams[0];
+ *ptr *= GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_MULT_FLOAT_VAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr *= *(float*)&ScriptParams[0];
+ *(float*)ptr *= GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_MULT_INT_LVAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *ptr *= ScriptParams[0];
+ *ptr *= GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_MULT_FLOAT_LVAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr *= *(float*)&ScriptParams[0];
+ *(float*)ptr *= GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_DIV_INT_VAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *ptr /= ScriptParams[0];
+ *ptr /= GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_DIV_FLOAT_VAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr /= *(float*)&ScriptParams[0];
+ *(float*)ptr /= GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_DIV_INT_LVAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *ptr /= ScriptParams[0];
+ *ptr /= GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_DIV_FLOAT_LVAR_BY_VAL:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr /= *(float*)&ScriptParams[0];
+ *(float*)ptr /= GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_IS_INT_VAR_GREATER_THAN_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr > ScriptParams[0]);
+ UpdateCompareFlag(*ptr > GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_LVAR_GREATER_THAN_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr > ScriptParams[0]);
+ UpdateCompareFlag(*ptr > GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_NUMBER_GREATER_THAN_INT_VAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
- UpdateCompareFlag(ScriptParams[0] > *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) > *ptr);
return 0;
}
case COMMAND_IS_NUMBER_GREATER_THAN_INT_LVAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
- UpdateCompareFlag(ScriptParams[0] > *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) > *ptr);
return 0;
}
case COMMAND_IS_INT_VAR_GREATER_THAN_INT_VAR:
@@ -1284,28 +1439,28 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*(float*)ptr > *(float*)&ScriptParams[0]);
+ UpdateCompareFlag(*(float*)ptr > GET_FLOAT_PARAM(0));
return 0;
}
case COMMAND_IS_FLOAT_LVAR_GREATER_THAN_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*(float*)ptr > *(float*)&ScriptParams[0]);
+ UpdateCompareFlag(*(float*)ptr > GET_FLOAT_PARAM(0));
return 0;
}
case COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_VAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
- UpdateCompareFlag(*(float*)&ScriptParams[0] > *(float*)ptr);
+ UpdateCompareFlag(GET_FLOAT_PARAM(0) > *(float*)ptr);
return 0;
}
case COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_LVAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
- UpdateCompareFlag(*(float*)&ScriptParams[0] > *(float*)ptr);
+ UpdateCompareFlag(GET_FLOAT_PARAM(0) > *(float*)ptr);
return 0;
}
case COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_VAR:
@@ -1340,28 +1495,28 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr >= ScriptParams[0]);
+ UpdateCompareFlag(*ptr >= GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr >= ScriptParams[0]);
+ UpdateCompareFlag(*ptr >= GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_VAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
- UpdateCompareFlag(ScriptParams[0] >= *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) >= *ptr);
return 0;
}
case COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_LVAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
- UpdateCompareFlag(ScriptParams[0] >= *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) >= *ptr);
return 0;
}
case COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_VAR:
@@ -1396,28 +1551,28 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*(float*)ptr >= *(float*)&ScriptParams[0]);
+ UpdateCompareFlag(*(float*)ptr >= GET_FLOAT_PARAM(0));
return 0;
}
case COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*(float*)ptr >= *(float*)&ScriptParams[0]);
+ UpdateCompareFlag(*(float*)ptr >= GET_FLOAT_PARAM(0));
return 0;
}
case COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_VAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
- UpdateCompareFlag(*(float*)&ScriptParams[0] >= *(float*)ptr);
+ UpdateCompareFlag(GET_FLOAT_PARAM(0) >= *(float*)ptr);
return 0;
}
case COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_LVAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
- UpdateCompareFlag(*(float*)&ScriptParams[0] >= *(float*)ptr);
+ UpdateCompareFlag(GET_FLOAT_PARAM(0) >= *(float*)ptr);
return 0;
}
case COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_VAR:
@@ -1452,14 +1607,14 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr == ScriptParams[0]);
+ UpdateCompareFlag(*ptr == GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_LVAR_EQUAL_TO_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr == ScriptParams[0]);
+ UpdateCompareFlag(*ptr == GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_VAR_EQUAL_TO_INT_VAR:
@@ -1492,14 +1647,14 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*(float*)ptr == *(float*)&ScriptParams[0]);
+ UpdateCompareFlag(*(float*)ptr == GET_FLOAT_PARAM(0));
return 0;
}
case COMMAND_IS_FLOAT_LVAR_EQUAL_TO_NUMBER:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*(float*)ptr == *(float*)&ScriptParams[0]);
+ UpdateCompareFlag(*(float*)ptr == GET_FLOAT_PARAM(0));
return 0;
}
case COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_VAR:
@@ -1528,17 +1683,15 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
//case COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_VAR:
//case COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_LVAR:
//case COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_LVAR:
- /*
case COMMAND_GOTO_IF_TRUE:
CollectParameters(&m_nIp, 1);
if (m_bCondResult)
- SetIP(ScriptParams[0] >= 0 ? ScriptParams[0] : SIZE_MAIN_SCRIPT - ScriptParams[0]);
+ SetIP(GET_INTEGER_PARAM(0) >= 0 ? GET_INTEGER_PARAM(0) : CTheScripts::MainScriptSize - GET_INTEGER_PARAM(0));
return 0;
- */
case COMMAND_GOTO_IF_FALSE:
CollectParameters(&m_nIp, 1);
if (!m_bCondResult)
- SetIP(ScriptParams[0] >= 0 ? ScriptParams[0] : SIZE_MAIN_SCRIPT - ScriptParams[0]);
+ SetIP(GET_INTEGER_PARAM(0) >= 0 ? GET_INTEGER_PARAM(0) : CTheScripts::MainScriptSize - GET_INTEGER_PARAM(0));
/* Check COMMAND_GOTO note. */
return 0;
case COMMAND_TERMINATE_THIS_SCRIPT:
@@ -1564,47 +1717,19 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
case COMMAND_START_NEW_SCRIPT:
{
CollectParameters(&m_nIp, 1);
- script_assert(ScriptParams[0] >= 0);
- CRunningScript* pNew = CTheScripts::StartNewScript(ScriptParams[0]);
- pNew->m_bIsActive = true;
- int8 type = CTheScripts::Read1ByteFromScript(&m_nIp);
- float tmp;
- for (int i = 0; type != ARGUMENT_END; type = CTheScripts::Read1ByteFromScript(&m_nIp), i++) {
- switch (type) {
- case ARGUMENT_INT32:
- pNew->m_anLocalVariables[i] = CTheScripts::Read4BytesFromScript(&m_nIp);
- break;
- case ARGUMENT_GLOBALVAR:
- pNew->m_anLocalVariables[i] = *(int32*)&CTheScripts::ScriptSpace[(uint16)CTheScripts::Read2BytesFromScript(&m_nIp)];
- break;
- case ARGUMENT_LOCALVAR:
- pNew->m_anLocalVariables[i] = m_anLocalVariables[CTheScripts::Read2BytesFromScript(&m_nIp)];
- break;
- case ARGUMENT_INT8:
- pNew->m_anLocalVariables[i] = CTheScripts::Read1ByteFromScript(&m_nIp);
- break;
- case ARGUMENT_INT16:
- pNew->m_anLocalVariables[i] = CTheScripts::Read2BytesFromScript(&m_nIp);
- break;
- case ARGUMENT_FLOAT:
- tmp = CTheScripts::ReadFloatFromScript(&m_nIp);
- pNew->m_anLocalVariables[i] = *(int32*)&tmp;
- break;
- default:
- break;
- }
- }
+ script_assert(GET_INTEGER_PARAM(0) >= 0);
+ CRunningScript* pNew = CTheScripts::StartNewScript(GET_INTEGER_PARAM(0));
+ CollectParameters(&m_nIp, NUM_LOCAL_VARS, pNew->m_anLocalVariables);
return 0;
}
case COMMAND_GOSUB:
CollectParameters(&m_nIp, 1);
script_assert(m_nStackPointer < MAX_STACK_DEPTH);
m_anStack[m_nStackPointer++] = m_nIp;
- SetIP(ScriptParams[0] >= 0 ? ScriptParams[0] : SIZE_MAIN_SCRIPT - ScriptParams[0]);
+ SetIP(GET_INTEGER_PARAM(0) >= 0 ? GET_INTEGER_PARAM(0) : CTheScripts::MainScriptSize - GET_INTEGER_PARAM(0));
return 0;
case COMMAND_RETURN:
- script_assert(m_nStackPointer > 0); /* No more SSU */
- SetIP(m_anStack[--m_nStackPointer]);
+ ReturnFromGosubOrFunction();
return 0;
case COMMAND_LINE:
CollectParameters(&m_nIp, 6);
@@ -1613,7 +1738,7 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
case COMMAND_CREATE_PLAYER:
{
CollectParameters(&m_nIp, 4);
- int32 index = ScriptParams[0];
+ int32 index = GET_INTEGER_PARAM(0);
script_assert(index < NUMPLAYERS);
printf("&&&&&&&&&&&&&Creating player: %d\n", index);
if (!CStreaming::HasModelLoaded(MI_PLAYER)) {
@@ -1623,14 +1748,14 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
CPlayerPed::SetupPlayerPed(index);
CWorld::Players[index].m_pPed->CharCreatedBy = MISSION_CHAR;
CPlayerPed::DeactivatePlayerPed(index);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += CWorld::Players[index].m_pPed->GetDistanceFromCentreOfMassToBaseOfModel();
CWorld::Players[index].m_pPed->SetPosition(pos);
CTheScripts::ClearSpaceForMissionEntity(pos, CWorld::Players[index].m_pPed);
CPlayerPed::ReactivatePlayerPed(index);
- ScriptParams[0] = index;
+ SET_INTEGER_PARAM(0, index);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1638,23 +1763,23 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
{
CVector pos;
CollectParameters(&m_nIp, 1);
- if (CWorld::Players[ScriptParams[0]].m_pPed->bInVehicle)
- pos = CWorld::Players[ScriptParams[0]].m_pPed->m_pMyVehicle->GetPosition();
+ if (CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->bInVehicle && CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->m_pMyVehicle)
+ pos = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->m_pMyVehicle->GetPosition();
else
- pos = CWorld::Players[ScriptParams[0]].m_pPed->GetPosition();
- *(CVector*)&ScriptParams[0] = pos;
+ pos = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->GetPosition();
+ SET_VECTOR_PARAM(0, pos);
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_SET_PLAYER_COORDINATES:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[1];
- int index = ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(1);
+ int index = GET_INTEGER_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CPlayerPed* ped = CWorld::Players[index].m_pPed;
- if (ped->bInVehicle) {
+ if (ped->bInVehicle && ped->m_pMyVehicle) {
pos.z += ped->m_pMyVehicle->GetDistanceFromCentreOfMassToBaseOfModel();
ped->m_pMyVehicle->Teleport(pos); // removed dumb stuff that was present here
CTheScripts::ClearSpaceForMissionEntity(pos, ped->m_pMyVehicle);
@@ -1667,7 +1792,7 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
if (ped) { // great time to check
for (int i = 0; i < ped->m_numNearPeds; i++) {
CPed* pTestedPed = ped->m_nearPeds[i];
- if (!pTestedPed || !IsPedPointerValid(pTestedPed))
+ if (!pTestedPed || !IsPedPointerValid(pTestedPed) || pTestedPed->bIsFrozen)
continue;
if (pTestedPed->m_pedInObjective == ped && pTestedPed->m_objective == OBJECTIVE_FOLLOW_CHAR_IN_FORMATION) {
CVector vFollowerPos = pTestedPed->GetFormationPosition();
@@ -1680,7 +1805,7 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
}
}
}
- else if (pTestedPed->m_leader == ped) {
+ else if (pTestedPed->m_leader == ped && !pTestedPed->bIsFrozen) {
CVector vFollowerPos;
if (pTestedPed->m_pedFormation)
vFollowerPos = pTestedPed->GetFormationPosition();
@@ -1702,39 +1827,43 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
case COMMAND_IS_PLAYER_IN_AREA_2D:
{
CollectParameters(&m_nIp, 6);
- CPlayerPed* ped = CWorld::Players[ScriptParams[0]].m_pPed;
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
+ CPlayerPed* ped = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
if (!ped->bInVehicle)
UpdateCompareFlag(ped->IsWithinArea(x1, y1, x2, y2));
else
UpdateCompareFlag(ped->m_pMyVehicle->IsWithinArea(x1, y1, x2, y2));
- if (ScriptParams[5])
+ if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
+ */
return 0;
}
case COMMAND_IS_PLAYER_IN_AREA_3D:
{
CollectParameters(&m_nIp, 8);
- CPlayerPed* ped = CWorld::Players[ScriptParams[0]].m_pPed;
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float z1 = *(float*)&ScriptParams[3];
- float x2 = *(float*)&ScriptParams[4];
- float y2 = *(float*)&ScriptParams[5];
- float z2 = *(float*)&ScriptParams[6];
+ CPlayerPed* ped = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float z1 = GET_FLOAT_PARAM(3);
+ float x2 = GET_FLOAT_PARAM(4);
+ float y2 = GET_FLOAT_PARAM(5);
+ float z2 = GET_FLOAT_PARAM(6);
if (ped->bInVehicle)
UpdateCompareFlag(ped->m_pMyVehicle->IsWithinArea(x1, y1, z1, x2, y2, z2));
else
UpdateCompareFlag(ped->IsWithinArea(x1, y1, z1, x2, y2, z2));
- if (ScriptParams[7])
+ if (GET_INTEGER_PARAM(7))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, (z1 + z2) / 2);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugCube(x1, y1, z1, x2, y2, z2);
+ */
return 0;
}
case COMMAND_ADD_INT_VAR_TO_INT_VAR:
@@ -1881,33 +2010,25 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr += CTimer::GetTimeStep() * *(float*)&ScriptParams[0];
+ *(float*)ptr += CTimer::GetTimeStep() * GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_ADD_TIMED_VAL_TO_FLOAT_LVAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr += CTimer::GetTimeStep() * *(float*)&ScriptParams[0];
+ *(float*)ptr += CTimer::GetTimeStep() * GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR:
fScriptVar1 = (float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
*fScriptVar1 += CTimer::GetTimeStep() * *(float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
return 0;
-#ifdef FIX_BUGS
case COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR:
-#else
- case COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR:
-#endif
fScriptVar1 = (float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
*fScriptVar1 += CTimer::GetTimeStep() * *(float*)GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
return 0;
-#ifdef FIX_BUGS
case COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR:
-#else
- case COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR:
-#endif
fScriptVar1 = (float*)GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
*fScriptVar1 += CTimer::GetTimeStep() * *(float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
return 0;
@@ -1919,33 +2040,25 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr -= CTimer::GetTimeStep() * *(float*)&ScriptParams[0];
+ *(float*)ptr -= CTimer::GetTimeStep() * GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_SUB_TIMED_VAL_FROM_FLOAT_LVAR:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *(float*)ptr -= CTimer::GetTimeStep() * *(float*)&ScriptParams[0];
+ *(float*)ptr -= CTimer::GetTimeStep() * GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR:
fScriptVar1 = (float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
*fScriptVar1 -= CTimer::GetTimeStep() * *(float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
return 0;
-#ifdef FIX_BUGS // in SA it was fixed by reversing their order in enum
case COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR:
-#else
- case COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR:
-#endif
fScriptVar1 = (float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
*fScriptVar1 -= CTimer::GetTimeStep() * *(float*)GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
return 0;
-#ifdef FIX_BUGS
case COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR:
-#else
- case COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR:
-#endif
fScriptVar1 = (float*)GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
*fScriptVar1 -= CTimer::GetTimeStep() * *(float*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
return 0;
@@ -2094,46 +2207,46 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_CREATE_CHAR:
{
CollectParameters(&m_nIp, 5);
- switch (ScriptParams[1]) {
+ switch (GET_INTEGER_PARAM(1)) {
case MI_COP:
- if (ScriptParams[0] == PEDTYPE_COP)
- ScriptParams[1] = COP_STREET;
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(1, COP_STREET);
break;
case MI_SWAT:
- if (ScriptParams[0] == PEDTYPE_COP)
- ScriptParams[1] = COP_SWAT;
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(1, COP_SWAT);
break;
case MI_FBI:
- if (ScriptParams[0] == PEDTYPE_COP)
- ScriptParams[1] = COP_FBI;
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(1, COP_FBI);
break;
case MI_ARMY:
- if (ScriptParams[0] == PEDTYPE_COP)
- ScriptParams[1] = COP_ARMY;
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(1, COP_ARMY);
break;
case MI_MEDIC:
- if (ScriptParams[0] == PEDTYPE_EMERGENCY)
- ScriptParams[1] = PEDTYPE_EMERGENCY;
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_EMERGENCY)
+ SET_INTEGER_PARAM(1, PEDTYPE_EMERGENCY);
break;
case MI_FIREMAN:
- if (ScriptParams[0] == PEDTYPE_FIREMAN)
- ScriptParams[1] = PEDTYPE_FIREMAN;
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_FIREMAN)
+ SET_INTEGER_PARAM(1, PEDTYPE_FIREMAN);
break;
default:
break;
}
CPed* ped;
- if (ScriptParams[0] == PEDTYPE_COP)
- ped = new CCopPed((eCopType)ScriptParams[1]);
- else if (ScriptParams[0] == PEDTYPE_EMERGENCY || ScriptParams[0] == PEDTYPE_FIREMAN)
- ped = new CEmergencyPed(ScriptParams[1]);
+ if (GET_INTEGER_PARAM(0) == PEDTYPE_COP)
+ ped = new CCopPed((eCopType)GET_INTEGER_PARAM(1));
+ else if (GET_INTEGER_PARAM(0) == PEDTYPE_EMERGENCY || GET_INTEGER_PARAM(0) == PEDTYPE_FIREMAN)
+ ped = new CEmergencyPed(GET_INTEGER_PARAM(1));
else
- ped = new CCivilianPed((ePedType)ScriptParams[0], ScriptParams[1]);
+ ped = new CCivilianPed((ePedType)GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
ped->CharCreatedBy = MISSION_CHAR;
ped->bRespondsToThreats = false;
ped->bAllowMedicsToReviveMe = false;
ped->bIsPlayerFriend = false;
- CVector pos = *(CVector*)&ScriptParams[2];
+ CVector pos = GET_VECTOR_PARAM(2);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += 1.0f;
@@ -2145,29 +2258,29 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
CWorld::Add(ped);
ped->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pos);
CPopulation::ms_nTotalMissionPeds++;
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(ped);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(ped));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_DELETE_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
CTheScripts::RemoveThisPed(ped);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_CHAR_WANDER_DIR:
{
CollectParameters(&m_nIp, 2);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
ped->ClearAll();
- int8 path = ScriptParams[1];
- if (ScriptParams[1] < 0 || ScriptParams[1] > 7)
+ int8 path = GET_INTEGER_PARAM(1);
+ if (GET_INTEGER_PARAM(1) < 0 || GET_INTEGER_PARAM(1) > 7)
// Max number GetRandomNumberInRange returns is max-1
#ifdef FIX_BUGS
path = CGeneral::GetRandomNumberInRange(0, 8);
@@ -2182,19 +2295,19 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_CHAR_FOLLOW_PATH:
{
CollectParameters(&m_nIp, 6);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
if (ped->GetPedState() == PED_ATTACK || ped->GetPedState() == PED_FIGHT || !ped->IsPedInControl())
return 0;
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float radius = *(float*)&ScriptParams[4];
+ float radius = GET_FLOAT_PARAM(4);
eMoveState state;
- switch (ScriptParams[5]) {
+ switch (GET_INTEGER_PARAM(5)) {
case 0: state = PEDMOVE_WALK; break;
case 1: state = PEDMOVE_RUN; break;
- default: assert(0);
+ default: state = PEDMOVE_WALK; break;
}
ped->ClearAll();
ped->m_pathNodeTimer = 0;
@@ -2204,7 +2317,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_CHAR_SET_IDLE:
{
CollectParameters(&m_nIp, 1);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
ped->bScriptObjectiveCompleted = false;
ped->SetObjective(OBJECTIVE_WAIT_ON_FOOT);
@@ -2213,7 +2326,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_GET_CHAR_COORDINATES:
{
CollectParameters(&m_nIp, 1);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
CVehicle* vehicle;
CVector pos;
@@ -2226,21 +2339,21 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
pos = vehicle->GetPosition();
else
pos = ped->GetPosition();
- *(CVector*)&ScriptParams[0] = pos;
+ SET_VECTOR_PARAM(0, pos);
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_SET_CHAR_COORDINATES:
{
CollectParameters(&m_nIp, 4);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
CVehicle* vehicle;
if (ped->bInVehicle)
vehicle = ped->m_pMyVehicle;
else
vehicle = nil;
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
// removed dumb stuff again
@@ -2263,72 +2376,74 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
}
return 0;
}
- /*
case COMMAND_IS_CHAR_STILL_ALIVE:
{
CollectParameters(&m_nIp, 1);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- UpdateCompareFlag(ped && ped->GetPedState() != PED_DEAD && ped->GetPedState() != PED_DIE);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ UpdateCompareFlag(ped && !ped->DyingOrDead());
return 0;
}
- */
case COMMAND_IS_CHAR_IN_AREA_2D:
{
CollectParameters(&m_nIp, 6);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
CVehicle* vehicle;
if (ped->bInVehicle)
vehicle = ped->m_pMyVehicle;
else
vehicle = nil;
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
if (vehicle)
UpdateCompareFlag(ped->m_pMyVehicle->IsWithinArea(x1, y1, x2, y2));
else
UpdateCompareFlag(ped->IsWithinArea(x1, y1, x2, y2));
- if (ScriptParams[5])
+ if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
+ */
return 0;
}
case COMMAND_IS_CHAR_IN_AREA_3D:
{
CollectParameters(&m_nIp, 8);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
CVehicle* vehicle;
if (ped->bInVehicle)
vehicle = ped->m_pMyVehicle;
else
vehicle = nil;
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float z1 = *(float*)&ScriptParams[3];
- float x2 = *(float*)&ScriptParams[4];
- float y2 = *(float*)&ScriptParams[5];
- float z2 = *(float*)&ScriptParams[6];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float z1 = GET_FLOAT_PARAM(3);
+ float x2 = GET_FLOAT_PARAM(4);
+ float y2 = GET_FLOAT_PARAM(5);
+ float z2 = GET_FLOAT_PARAM(6);
if (vehicle)
UpdateCompareFlag(ped->m_pMyVehicle->IsWithinArea(x1, y1, z1, x2, y2, z2));
else
UpdateCompareFlag(ped->IsWithinArea(x1, y1, z1, x2, y2, z2));
- if (ScriptParams[7])
+ if (GET_INTEGER_PARAM(7))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, (z1 + z2) / 2);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugCube(x1, y1, z1, x2, y2, z2);
+ */
return 0;
}
case COMMAND_CREATE_CAR:
{
CollectParameters(&m_nIp, 4);
int32 handle;
- if (CModelInfo::IsBoatModel(ScriptParams[0])) {
- CBoat* boat = new CBoat(ScriptParams[0], MISSION_VEHICLE);
- CVector pos = *(CVector*)&ScriptParams[1];
+ if (CModelInfo::IsBoatModel(GET_INTEGER_PARAM(0))) {
+ CBoat* boat = new CBoat(GET_INTEGER_PARAM(0), MISSION_VEHICLE);
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += boat->GetDistanceFromCentreOfMassToBaseOfModel();
@@ -2347,13 +2462,13 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
else {
CVehicle* car;
- if (!CModelInfo::IsBikeModel(ScriptParams[0]))
- car = new CAutomobile(ScriptParams[0], MISSION_VEHICLE);
+ if (!CModelInfo::IsBikeModel(GET_INTEGER_PARAM(0)))
+ car = new CAutomobile(GET_INTEGER_PARAM(0), MISSION_VEHICLE);
else {
- car = new CBike(ScriptParams[0], MISSION_VEHICLE);
+ car = new CBike(GET_INTEGER_PARAM(0), MISSION_VEHICLE);
((CBike*)(car))->bIsStanding = true;
}
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += car->GetDistanceFromCentreOfMassToBaseOfModel();
@@ -2368,15 +2483,18 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
car->AutoPilot.m_nCruiseSpeed = car->AutoPilot.m_fMaxTrafficSpeed = 9.0f;
car->AutoPilot.m_nCurrentLane = car->AutoPilot.m_nNextLane = 0;
car->bEngineOn = false;
- car->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pos);
+ car->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pos); // TODO: gpTheZones
car->bHasBeenOwnedByPlayer = true;
if (m_bIsMissionScript)
car->bIsStaticWaitingForCollision = true;
CWorld::Add(car);
handle = CPools::GetVehiclePool()->GetIndex(car);
}
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
+#ifdef GTA_NETWORK
+ // TODO(LCS): register car
+#endif
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
return 0;
@@ -2384,25 +2502,26 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_DELETE_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
if (car) {
CWorld::Remove(car);
CWorld::RemoveReferencesToDeletedObject(car);
delete car;
}
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
return 0;
}
case COMMAND_CAR_GOTO_COORDINATES:
{
CollectParameters(&m_nIp, 4);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += car->GetDistanceFromCentreOfMassToBaseOfModel();
+ uint8 nOldMission = car->AutoPilot.m_nCarMission;
if (CCarCtrl::JoinCarWithRoadSystemGotoCoors(car, pos, false))
car->AutoPilot.m_nCarMission = MISSION_GOTOCOORDS_STRAIGHT;
else
@@ -2410,13 +2529,14 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
car->SetStatus(STATUS_PHYSICS);
car->bEngineOn = true;
car->AutoPilot.m_nCruiseSpeed = Max(1, car->AutoPilot.m_nCruiseSpeed);
- car->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds();
+ if (nOldMission != car->AutoPilot.m_nCarMission)
+ car->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds();
return 0;
}
case COMMAND_CAR_WANDER_RANDOMLY:
{
CollectParameters(&m_nIp, 1);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
CCarCtrl::JoinCarWithRoadSystem(car);
car->AutoPilot.m_nCarMission = MISSION_CRUISE;
@@ -2428,7 +2548,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_CAR_SET_IDLE:
{
CollectParameters(&m_nIp, 1);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
car->AutoPilot.m_nCarMission = MISSION_NONE;
return 0;
@@ -2436,18 +2556,18 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_GET_CAR_COORDINATES:
{
CollectParameters(&m_nIp, 1);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
- *(CVector*)&ScriptParams[0] = car->GetPosition();
+ SET_VECTOR_PARAM(0, car->GetPosition());
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_SET_CAR_COORDINATES:
{
CollectParameters(&m_nIp, 4);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += car->GetDistanceFromCentreOfMassToBaseOfModel();
@@ -2493,73 +2613,77 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
}
return 0;
}
- /*
case COMMAND_IS_CAR_STILL_ALIVE:
{
CollectParameters(&m_nIp, 1);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(car && car->GetStatus() != STATUS_WRECKED && (car->IsBoat() || !car->bIsInWater));
return 0;
}
- */
case COMMAND_SET_CAR_CRUISE_SPEED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
- car->AutoPilot.m_nCruiseSpeed = Min(*(float*)&ScriptParams[1], 60.0f * car->pHandling->Transmission.fMaxCruiseVelocity);
+ car->AutoPilot.m_nCruiseSpeed = Min(GET_FLOAT_PARAM(1), 60.0f * car->pHandling->Transmission.fMaxCruiseVelocity);
return 0;
}
case COMMAND_SET_CAR_DRIVING_STYLE:
{
CollectParameters(&m_nIp, 2);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
- car->AutoPilot.m_nDrivingStyle = (uint8)ScriptParams[1];
+ car->AutoPilot.m_nDrivingStyle = (uint8)GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_CAR_MISSION:
{
CollectParameters(&m_nIp, 2);
- CVehicle* car = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* car = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(car);
- car->AutoPilot.m_nCarMission = (uint8)ScriptParams[1];
- car->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds();
+ if ((uint8)GET_INTEGER_PARAM(1) != car->AutoPilot.m_nCarMission) {
+ car->AutoPilot.m_nCarMission = (uint8)GET_INTEGER_PARAM(1);
+ car->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds();
+ }
car->bEngineOn = true;
return 0;
}
case COMMAND_IS_CAR_IN_AREA_2D:
{
CollectParameters(&m_nIp, 6);
- CVehicle* vehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* vehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(vehicle);
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
UpdateCompareFlag(vehicle->IsWithinArea(x1, y1, x2, y2));
- if (ScriptParams[5])
+ if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
+ */
return 0;
}
case COMMAND_IS_CAR_IN_AREA_3D:
{
CollectParameters(&m_nIp, 8);
- CVehicle* vehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* vehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(vehicle);
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float z1 = *(float*)&ScriptParams[3];
- float x2 = *(float*)&ScriptParams[4];
- float y2 = *(float*)&ScriptParams[5];
- float z2 = *(float*)&ScriptParams[6];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float z1 = GET_FLOAT_PARAM(3);
+ float x2 = GET_FLOAT_PARAM(4);
+ float y2 = GET_FLOAT_PARAM(5);
+ float z2 = GET_FLOAT_PARAM(6);
UpdateCompareFlag(vehicle->IsWithinArea(x1, y1, z1, x2, y2, z2));
- if (ScriptParams[7])
+ if (GET_INTEGER_PARAM(7))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, (z1 + z2) / 2);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugCube(x1, y1, z1, x2, y2, z2);
+ */
return 0;
}
case COMMAND_SPECIAL_0:
@@ -2584,56 +2708,54 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
}
#endif
CollectParameters(&m_nIp, 2);
- CMessages::AddBigMessage(key, ScriptParams[0], ScriptParams[1] - 1);
+ CMessages::AddBigMessage(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1) - 1);
return 0;
}
case COMMAND_PRINT:
{
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
- CMessages::AddMessage(key, ScriptParams[0], ScriptParams[1]);
+ CMessages::AddMessage(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_PRINT_NOW:
{
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
- CMessages::AddMessageJumpQ(key, ScriptParams[0], ScriptParams[1]);
+ CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
}
- /*
case COMMAND_PRINT_SOON:
{
wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
- CMessages::AddMessageSoon(key, ScriptParams[0], ScriptParams[1]);
+ CMessages::AddMessageSoon(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
}
- */
case COMMAND_CLEAR_PRINTS:
CMessages::ClearMessages();
return 0;
case COMMAND_GET_TIME_OF_DAY:
- ScriptParams[0] = CClock::GetHours();
- ScriptParams[1] = CClock::GetMinutes();
+ SET_INTEGER_PARAM(0, CClock::GetHours());
+ SET_INTEGER_PARAM(1, CClock::GetMinutes());
StoreParameters(&m_nIp, 2);
return 0;
case COMMAND_SET_TIME_OF_DAY:
CollectParameters(&m_nIp, 2);
- CClock::SetGameClock(ScriptParams[0], ScriptParams[1]);
+ CClock::SetGameClock(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_GET_MINUTES_TO_TIME_OF_DAY:
CollectParameters(&m_nIp, 2);
- ScriptParams[0] = CClock::GetGameClockMinutesUntil(ScriptParams[0], ScriptParams[1]);
+ SET_INTEGER_PARAM(0, CClock::GetGameClockMinutesUntil(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_IS_POINT_ON_SCREEN:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= -100)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- UpdateCompareFlag(TheCamera.IsSphereVisible(pos, *(float*)&ScriptParams[3]));
+ UpdateCompareFlag(TheCamera.IsSphereVisible(pos, GET_FLOAT_PARAM(3)));
return 0;
}
case COMMAND_DEBUG_ON:
@@ -2642,14 +2764,14 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
case COMMAND_DEBUG_OFF:
CTheScripts::DbgFlag = false;
return 0;
- /*
case COMMAND_RETURN_TRUE:
UpdateCompareFlag(true);
+ ReturnFromGosubOrFunction();
return 0;
case COMMAND_RETURN_FALSE:
UpdateCompareFlag(false);
+ ReturnFromGosubOrFunction();
return 0;
- */
//case COMMAND_VAR_INT:
default:
script_assert(0);
@@ -2676,18 +2798,21 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_WHILE:
case COMMAND_WHILENOT:
case COMMAND_ENDWHILE:
+ case COMMAND_214:
+ case COMMAND_215:
+ case COMMAND_216:
+ case COMMAND_217:
+ case COMMAND_218:
*/
case COMMAND_ANDOR:
CollectParameters(&m_nIp, 1);
- m_nAndOrState = ScriptParams[0];
+ m_nAndOrState = GET_INTEGER_PARAM(0);
if (m_nAndOrState == ANDOR_NONE){
m_bCondResult = false; // pointless
}else if (m_nAndOrState >= ANDS_1 && m_nAndOrState <= ANDS_8){
m_bCondResult = true;
- m_nAndOrState++;
}else if (m_nAndOrState >= ORS_1 && m_nAndOrState <= ORS_8){
m_bCondResult = false;
- m_nAndOrState++;
}else{
script_assert(0 && "COMMAND_ANDOR: invalid ANDOR state");
}
@@ -2695,7 +2820,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_LAUNCH_MISSION:
{
CollectParameters(&m_nIp, 1);
- CRunningScript* pNew = CTheScripts::StartNewScript(ScriptParams[0]);
+ CRunningScript* pNew = CTheScripts::StartNewScript(GET_INTEGER_PARAM(0));
pNew->m_bIsMissionScript = true;
return 0;
}
@@ -2709,7 +2834,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_STORE_CAR_CHAR_IS_IN:
{
CollectParameters(&m_nIp, 1);
- CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* ped = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(ped);
CVehicle* pCurrent = nil;
if (ped->bInVehicle) {
@@ -2754,14 +2879,14 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
break;
}
}
- ScriptParams[0] = CTheScripts::StoreVehicleIndex;
+ SET_INTEGER_PARAM(0, CTheScripts::StoreVehicleIndex);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_STORE_CAR_PLAYER_IS_IN:
{
CollectParameters(&m_nIp, 1);
- CPed* ped = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* ped = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(ped);
if (!ped->bInVehicle)
return 0; // No value written to output variable
@@ -2805,15 +2930,15 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
break;
}
}
- ScriptParams[0] = CTheScripts::StoreVehicleIndex;
+ SET_INTEGER_PARAM(0, CTheScripts::StoreVehicleIndex);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_CHAR_IN_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CVehicle* pCheckedVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CVehicle* pCheckedVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
CVehicle* pActualVehicle = pPed->bInVehicle ? pPed->m_pMyVehicle : nil;
UpdateCompareFlag(pActualVehicle && pActualVehicle == pCheckedVehicle);
return 0;
@@ -2821,51 +2946,51 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_IS_PLAYER_IN_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pCheckedVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CVehicle* pCheckedVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle == pCheckedVehicle);
return 0;
}
case COMMAND_IS_CHAR_IN_MODEL:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
CVehicle* pActualVehicle = pPed->bInVehicle ? pPed->m_pMyVehicle : nil;
- UpdateCompareFlag(pActualVehicle && pActualVehicle->GetModelIndex() == ScriptParams[1]);
+ UpdateCompareFlag(pActualVehicle && pActualVehicle->GetModelIndex() == GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_IS_PLAYER_IN_MODEL:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
- UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetModelIndex() == ScriptParams[1]);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetModelIndex() == GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_IS_CHAR_IN_ANY_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle);
return 0;
}
case COMMAND_IS_PLAYER_IN_ANY_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle);
return 0;
}
case COMMAND_IS_BUTTON_PRESSED:
{
CollectParameters(&m_nIp, 2);
- UpdateCompareFlag(GetPadState(ScriptParams[0], ScriptParams[1]) != 0);
+ UpdateCompareFlag(GetPadState(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)) != 0);
return 0;
}
/*
case COMMAND_GET_PAD_STATE:
{
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = GetPadState(ScriptParams[0], ScriptParams[1]);
+ SET_INTEGER_PARAM(0, GetPadState(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -2925,10 +3050,10 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_CREATE_OBJECT:
{
CollectParameters(&m_nIp, 4);
- int mi = ScriptParams[0] >= 0 ? ScriptParams[0] : CTheScripts::UsedObjectArray[-ScriptParams[0]].index;
+ int mi = GET_INTEGER_PARAM(0) >= 0 ? GET_INTEGER_PARAM(0) : CTheScripts::UsedObjectArray[-GET_INTEGER_PARAM(0)].index;
CObject* pObj = new CObject(mi, false);
pObj->ObjectCreatedBy = MISSION_OBJECT;
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += pObj->GetDistanceFromCentreOfMassToBaseOfModel();
@@ -2936,73 +3061,74 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
pObj->SetOrientation(0.0f, 0.0f, 0.0f);
pObj->GetMatrix().UpdateRW();
pObj->UpdateRwFrame();
- CBaseModelInfo* pModelInfo = CModelInfo::GetModelInfo(mi);
- if (pModelInfo->IsBuilding() && ((CSimpleModelInfo*)pModelInfo)->m_isBigBuilding)
- pObj->SetupBigBuilding();
CTheScripts::ClearSpaceForMissionEntity(pos, pObj);
CWorld::Add(pObj);
- ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pObj);
+ SET_INTEGER_PARAM(0, CPools::GetObjectPool()->GetIndex(pObj));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_OBJECT);
return 0;
}
case COMMAND_DELETE_OBJECT:
{
CollectParameters(&m_nIp, 1);
- CObject* pObj = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ if (GET_INTEGER_PARAM(0) > (NUMOBJECTS + 2) << 8)
+ return 0;
+ CObject* pObj = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
if (pObj){
CWorld::Remove(pObj);
CWorld::RemoveReferencesToDeletedObject(pObj);
delete pObj;
}
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_OBJECT);
return 0;
}
case COMMAND_ADD_SCORE:
CollectParameters(&m_nIp, 2);
- CWorld::Players[ScriptParams[0]].m_nMoney += ScriptParams[1];
- if (CWorld::Players[ScriptParams[0]].m_nMoney < 0)
- CWorld::Players[ScriptParams[0]].m_nMoney = 0;
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_nMoney += GET_INTEGER_PARAM(1);
+ if (CWorld::Players[GET_INTEGER_PARAM(0)].m_nMoney < 0)
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_nMoney = 0;
return 0;
case COMMAND_IS_SCORE_GREATER:
CollectParameters(&m_nIp, 2);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].m_nMoney > ScriptParams[1]);
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_nMoney > GET_INTEGER_PARAM(1));
return 0;
case COMMAND_STORE_SCORE:
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = CWorld::Players[ScriptParams[0]].m_nMoney;
+ SET_INTEGER_PARAM(0, CWorld::Players[GET_INTEGER_PARAM(0)].m_nMoney);
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CRemote::GivePlayerRemoteControlledCar(pos.x, pos.y, pos.z, DEGTORAD(*(float*)&ScriptParams[4]), MI_RCBANDIT);
+ CVehicle* pVehicle = CRemote::GivePlayerRemoteControlledCar(pos.x, pos.y, pos.z, DEGTORAD(GET_FLOAT_PARAM(4)), MI_RCBANDIT);
+ SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex(pVehicle));
+ StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ALTER_WANTED_LEVEL:
CollectParameters(&m_nIp, 2);
- CWorld::Players[ScriptParams[0]].m_pPed->SetWantedLevel(ScriptParams[1]);
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->SetWantedLevel(GET_INTEGER_PARAM(1));
return 0;
case COMMAND_ALTER_WANTED_LEVEL_NO_DROP:
CollectParameters(&m_nIp, 2);
- CWorld::Players[ScriptParams[0]].m_pPed->SetWantedLevelNoDrop(ScriptParams[1]);
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->SetWantedLevelNoDrop(GET_INTEGER_PARAM(1));
return 0;
case COMMAND_IS_WANTED_LEVEL_GREATER:
CollectParameters(&m_nIp, 2);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].m_pPed->m_pWanted->GetWantedLevel() > ScriptParams[1]);
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->m_pWanted->GetWantedLevel() > GET_INTEGER_PARAM(1));
return 0;
case COMMAND_CLEAR_WANTED_LEVEL:
CollectParameters(&m_nIp, 1);
- CWorld::Players[ScriptParams[0]].m_pPed->SetWantedLevel(0);
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->SetWantedLevel(0);
return 0;
case COMMAND_SET_DEATHARREST_STATE:
CollectParameters(&m_nIp, 1);
- m_bDeatharrestEnabled = (ScriptParams[0] == 1);
+ m_bDeatharrestEnabled = (GET_INTEGER_PARAM(0) == 1);
return 0;
case COMMAND_HAS_DEATHARREST_BEEN_EXECUTED:
UpdateCompareFlag(m_bDeatharrestExecuted);
@@ -3011,51 +3137,54 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_ADD_AMMO_TO_PLAYER:
{
CollectParameters(&m_nIp, 3);
- CWorld::Players[ScriptParams[0]].m_pPed->GrantAmmo((eWeaponType)ScriptParams[1], ScriptParams[2]);
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->GrantAmmo((eWeaponType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
*/
case COMMAND_ADD_AMMO_TO_CHAR:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->GrantAmmo((eWeaponType)ScriptParams[1], ScriptParams[2]);
+ pPed->GrantAmmo((eWeaponType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
//case COMMAND_ADD_AMMO_TO_CAR:
- //case COMMAND_IS_PLAYER_STILL_ALIVE:
+ case COMMAND_IS_PLAYER_STILL_ALIVE:
+ CollectParameters(&m_nIp, 1);
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_WBState != WBSTATE_WASTED);
+ return 0;
case COMMAND_IS_PLAYER_DEAD:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].m_WBState == WBSTATE_WASTED);
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_WBState == WBSTATE_WASTED);
return 0;
case COMMAND_IS_CHAR_DEAD:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- UpdateCompareFlag(!pPed || pPed->DyingOrDead());
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ UpdateCompareFlag(!pPed || pPed->DyingOrDead() || pPed->m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE);
return 0;
}
case COMMAND_IS_CAR_DEAD:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(!pVehicle || pVehicle->GetStatus() == STATUS_WRECKED || pVehicle->bIsDrowning);
return 0;
}
case COMMAND_SET_CHAR_THREAT_SEARCH:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->m_fearFlags |= ScriptParams[1];
+ pPed->m_fearFlags |= GET_INTEGER_PARAM(1);
return 0;
}
//case COMMAND_SET_CHAR_THREAT_REACTION:
case COMMAND_SET_CHAR_OBJ_NO_OBJ:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->ClearObjective();
@@ -3068,7 +3197,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_IS_PLAYER_IN_ZONE:
{
CollectParameters(&m_nIp, 1);
- CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
+ CPlayerInfo* pPlayer = &CWorld::Players[GET_INTEGER_PARAM(0)];
char label[12];
CTheScripts::ReadTextLabelFromScript(&m_nIp, label);
int zoneToCheck = CTheZones::FindZoneByLabelAndReturnIndex(label, ZONE_DEFAULT);
@@ -3081,15 +3210,15 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
}
case COMMAND_IS_PLAYER_PRESSING_HORN:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].m_pPed->GetPedState() == PED_DRIVING &&
- CPad::GetPad(ScriptParams[0])->GetHorn());
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed->GetPedState() == PED_DRIVING &&
+ CPad::GetPad(GET_INTEGER_PARAM(0))->GetHorn());
return 0;
case COMMAND_HAS_CHAR_SPOTTED_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- UpdateCompareFlag(pPed->OurPedCanSeeThisOne(CWorld::Players[ScriptParams[1]].m_pPed));
+ UpdateCompareFlag(pPed->OurPedCanSeeThisOne(CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed));
return 0;
}
#ifdef SUPPORT_GINPUT_SCRIPT
@@ -3103,7 +3232,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_IS_CHAR_OBJECTIVE_PASSED:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bScriptObjectiveCompleted);
return 0;
@@ -3115,43 +3244,43 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
case COMMAND_CREATE_CHAR_INSIDE_CAR:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- switch (ScriptParams[2]) {
+ switch (GET_INTEGER_PARAM(2)) {
case MI_COP:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_STREET;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_STREET);
break;
case MI_SWAT:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_SWAT;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_SWAT);
break;
case MI_FBI:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_FBI;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_FBI);
break;
case MI_ARMY:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_ARMY;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_ARMY);
break;
case MI_MEDIC:
- if (ScriptParams[1] == PEDTYPE_EMERGENCY)
- ScriptParams[2] = PEDTYPE_EMERGENCY;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_EMERGENCY)
+ SET_INTEGER_PARAM(2, PEDTYPE_EMERGENCY);
break;
case MI_FIREMAN:
- if (ScriptParams[1] == PEDTYPE_FIREMAN)
- ScriptParams[2] = PEDTYPE_FIREMAN;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_FIREMAN)
+ SET_INTEGER_PARAM(2, PEDTYPE_FIREMAN);
break;
default:
break;
}
CPed* pPed;
- if (ScriptParams[1] == PEDTYPE_COP)
- pPed = new CCopPed((eCopType)ScriptParams[2]);
- else if (ScriptParams[1] == PEDTYPE_EMERGENCY || ScriptParams[1] == PEDTYPE_FIREMAN)
- pPed = new CEmergencyPed(ScriptParams[2]);
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ pPed = new CCopPed((eCopType)GET_INTEGER_PARAM(2));
+ else if (GET_INTEGER_PARAM(1) == PEDTYPE_EMERGENCY || GET_INTEGER_PARAM(1) == PEDTYPE_FIREMAN)
+ pPed = new CEmergencyPed(GET_INTEGER_PARAM(2));
else
- pPed = new CCivilianPed((ePedType)ScriptParams[1], ScriptParams[2]);
+ pPed = new CCivilianPed((ePedType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
pPed->CharCreatedBy = MISSION_CHAR;
pPed->bRespondsToThreats = false;
pPed->bAllowMedicsToReviveMe = false;
@@ -3161,7 +3290,6 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
pPed->SetPosition(pVehicle->GetPosition());
pPed->SetOrientation(0.0f, 0.0f, 0.0f);
pPed->SetPedState(PED_DRIVING);
- CPopulation::ms_nTotalMissionPeds++;
script_assert(!pVehicle->pDriver);
pVehicle->pDriver = pPed;
pVehicle->pDriver->RegisterReference((CEntity**)&pVehicle->pDriver);
@@ -3176,17 +3304,18 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
pPed->AddInCarAnims(pVehicle, true);
pPed->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pPed->GetPosition());
CWorld::Add(pPed);
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
+ CPopulation::ms_nTotalMissionPeds++;
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pPed));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_WARP_PLAYER_FROM_CAR_TO_COORD:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[1];
- CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
+ CVector pos = GET_VECTOR_PARAM(1);
+ CPlayerInfo* pPlayer = &CWorld::Players[GET_INTEGER_PARAM(0)];
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
if (pPlayer->m_pPed->bInVehicle){
@@ -3229,6 +3358,24 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
return -1;
}
+void CRunningScript::ReturnFromGosubOrFunction()
+{
+ uint32 val = m_nIp = m_anStack[--m_nStackPointer];
+ if (!(m_nIp & BIT(STACKVALUE_IS_FUNCTION_CALL_BIT)))
+ return;
+ if (m_nIp & BIT(STACKVALUE_INVERT_RETURN_BIT))
+ m_bCondResult = !m_bCondResult;
+ m_nIp = m_nIp & STACKVALUE_IP_MASK;
+ uint8 nInputParameters = CTheScripts::Read1ByteFromScript(&m_nIp);
+ uint8 nOutputParameters = CTheScripts::Read1ByteFromScript(&m_nIp);
+ uint8 nLocalsOffset = CTheScripts::Read1ByteFromScript(&m_nIp);
+ for (int i = 0; i < nOutputParameters; i++)
+ ScriptParams[i] = m_anLocalVariables[m_nLocalsPointer + nInputParameters + i];
+ m_nIp += val >> STACKVALUE_IP_PARAMS_OFFSET;
+ m_nLocalsPointer -= nLocalsOffset;
+ StoreParameters(&m_nIp, nOutputParameters);
+}
+
#ifdef MISSION_REPLAY
bool CRunningScript::CanAllowMissionReplay()
diff --git a/src/control/Script.h b/src/control/Script.h
index 7f9a7717..d9a109fd 100644
--- a/src/control/Script.h
+++ b/src/control/Script.h
@@ -1,7 +1,9 @@
#pragma once
-#include "Font.h"
+#include "Font.h"
+#include "Ped.h"
#include "PedType.h"
#include "Text.h"
+#include "sList.h"
#include "Sprite2d.h"
class CEntity;
@@ -17,7 +19,7 @@ class CRunningScript;
extern int32 ScriptParams[32];
void FlushLog();
-#define script_assert(_Expression) FlushLog(); assert(_Expression);
+#define script_assert(_Expression) { FlushLog(); assert(_Expression); }
#define PICKUP_PLACEMENT_OFFSET (0.5f)
#define PED_FIND_Z_OFFSET (5.0f)
@@ -28,9 +30,9 @@ void FlushLog();
#define UPSIDEDOWN_TURN_SPEED_THRESHOLD (0.02f)
#define UPSIDEDOWN_TIMER_THRESHOLD (1000)
-#define SPHERE_MARKER_R (252)
-#define SPHERE_MARKER_G (138)
-#define SPHERE_MARKER_B (242)
+#define SPHERE_MARKER_R (255)
+#define SPHERE_MARKER_G (255)
+#define SPHERE_MARKER_B (128)
#define SPHERE_MARKER_A (228)
#define SPHERE_MARKER_PULSE_PERIOD 2048
#define SPHERE_MARKER_PULSE_FRACTION 0.1f
@@ -48,6 +50,15 @@ void FlushLog();
#define KEY_LENGTH_IN_SCRIPT (8)
//#define GTA_SCRIPT_COLLECTIVE
+#define GET_INTEGER_PARAM(i) (ScriptParams[i])
+#define GET_FLOAT_PARAM(i) (*(float*)&ScriptParams[i])
+#define GET_VECTOR_PARAM(i) (CVector(GET_FLOAT_PARAM(i), GET_FLOAT_PARAM(i+1), GET_FLOAT_PARAM(i+2)))
+
+#define SET_INTEGER_PARAM(i, x) ScriptParams[i] = x
+#define SET_FLOAT_PARAM(i, x) *(float*)&ScriptParams[i] = x
+#define SET_VECTOR_PARAM(i, v) { *(float*)&ScriptParams[i] = (v).x; *(float*)&ScriptParams[i+1] = (v).y; *(float*)&ScriptParams[i+2] = (v).z; }
+
+#define GTA_SCRIPT_COLLECTIVE
struct intro_script_rectangle
{
@@ -215,15 +226,33 @@ public:
};
enum {
+ MAX_STACK_DEPTH = 16,
+ NUM_LOCAL_VARS = 96,
+ NUM_TIMERS = 2,
+ NUM_GLOBAL_SLOTS = 26
+};
+
+enum {
ARGUMENT_END = 0,
+ ARGUMENT_INT_ZERO,
+ ARGUMENT_FLOAT_ZERO,
+ ARGUMENT_FLOAT_1BYTE,
+ ARGUMENT_FLOAT_2BYTES,
+ ARGUMENT_FLOAT_3BYTES,
ARGUMENT_INT32,
- ARGUMENT_GLOBALVAR,
- ARGUMENT_LOCALVAR,
ARGUMENT_INT8,
ARGUMENT_INT16,
- ARGUMENT_FLOAT
+ ARGUMENT_FLOAT,
+ ARGUMENT_TIMER,
+ ARGUMENT_LOCAL = ARGUMENT_TIMER + NUM_TIMERS,
+ ARGUMENT_LOCAL_ARRAY = ARGUMENT_LOCAL + NUM_LOCAL_VARS,
+ ARGUMENT_GLOBAL = ARGUMENT_LOCAL_ARRAY + NUM_LOCAL_VARS,
+ ARGUMENT_GLOBAL_ARRAY = ARGUMENT_GLOBAL + NUM_GLOBAL_SLOTS,
+ MAX_ARGUMENT = ARGUMENT_GLOBAL_ARRAY + NUM_GLOBAL_SLOTS
};
+static_assert(MAX_ARGUMENT <= 256, "MAX_ARGUMENT must be less or equal to 256");
+
struct tCollectiveData
{
int32 colIndex;
@@ -247,11 +276,18 @@ struct tBuildingSwap
int32 m_nOldModel;
};
-
-enum {
- MAX_STACK_DEPTH = 6,
- NUM_LOCAL_VARS = 16,
- NUM_TIMERS = 2
+struct script_corona
+{
+ int id;
+ float x;
+ float y;
+ float z;
+ float size;
+ uint8 r;
+ uint8 g;
+ uint8 b;
+ int type;
+ int flareType;
};
class CRunningScript
@@ -276,14 +312,25 @@ class CRunningScript
ORS_8
};
+ enum {
+ STACKVALUE_IP_BITS = 22,
+ STACKVALUE_INVERT_RETURN_BIT = STACKVALUE_IP_BITS,
+ STACKVALUE_IS_FUNCTION_CALL_BIT,
+ STACKVALUE_IP_PARAMS_OFFSET,
+
+ STACKVALUE_IP_MASK = ((1 << STACKVALUE_IP_BITS) - 1)
+ };
+
public:
CRunningScript* next;
CRunningScript* prev;
+ int32 m_nId;
char m_abScriptName[8];
uint32 m_nIp;
uint32 m_anStack[MAX_STACK_DEPTH];
uint16 m_nStackPointer;
- int32 m_anLocalVariables[NUM_LOCAL_VARS + NUM_TIMERS];
+ int32 m_anLocalVariables[NUM_LOCAL_VARS + 8 + NUM_TIMERS]; // TODO(LCS): figure out why 106
+ int32 m_nLocalsPointer;
bool m_bIsActive;
bool m_bCondResult;
bool m_bIsMissionScript;
@@ -303,8 +350,8 @@ public:
void Load(uint8*& buf);
void UpdateTimers(float timeStep) {
- m_anLocalVariables[NUM_LOCAL_VARS] += timeStep;
- m_anLocalVariables[NUM_LOCAL_VARS + 1] += timeStep;
+ for (int i = 0; i < NUM_TIMERS; i++)
+ m_anLocalVariables[NUM_LOCAL_VARS + 8 + i] += timeStep;
}
void Init();
@@ -315,14 +362,37 @@ public:
static const uint32 nSaveStructSize;
- void CollectParameters(uint32*, int16);
+ void CollectParameters(uint32*, int16, int* pParams = (int*)&ScriptParams);
int32 CollectNextParameterWithoutIncreasingPC(uint32);
int32* GetPointerToScriptVariable(uint32*, int16);
void StoreParameters(uint32*, int16);
int8 ProcessOneCommand();
void DoDeatharrestCheck();
- void UpdateCompareFlag(bool);
+ void UpdateCompareFlag(bool flag)
+ {
+ if (m_bNotFlag)
+ flag = !flag;
+ if (m_nAndOrState == ANDOR_NONE) {
+ m_bCondResult = flag;
+ return;
+ }
+ if (m_nAndOrState >= ANDS_1 && m_nAndOrState <= ANDS_8) {
+ m_bCondResult &= flag;
+ if (m_nAndOrState == ANDS_1) {
+ m_nAndOrState = ANDOR_NONE;
+ return;
+ }
+ }
+ else {
+ m_bCondResult |= flag;
+ if (m_nAndOrState <= ORS_1) {
+ m_nAndOrState = ANDOR_NONE;
+ return;
+ }
+ }
+ m_nAndOrState--;
+ }
int16 GetPadState(uint16, uint16);
int8 ProcessCommands0To99(int32);
@@ -340,7 +410,10 @@ public:
int8 ProcessCommands1200To1299(int32);
int8 ProcessCommands1300To1399(int32);
int8 ProcessCommands1400To1499(int32);
+ int8 ProcessCommands1500To1599(int32);
+ int8 ProcessCommands1600To1699(int32);
+ uint32 CollectLocateParameters(uint32*, bool);
void LocatePlayerCommand(int32, uint32*);
void LocatePlayerCharCommand(int32, uint32*);
void LocatePlayerCarCommand(int32, uint32*);
@@ -385,9 +458,10 @@ public:
bool ThisIsAValidRandomCop(uint32 mi, int cop, int swat, int fbi, int army, int miami);
bool ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, int criminal);
+ bool CheckDamagedWeaponType(int32 actual, int32 type);
+
+ void ReturnFromGosubOrFunction();
- bool CheckDamagedWeaponType(int32 actual, int32 type);
-
};
@@ -397,37 +471,30 @@ enum {
};
enum {
-#ifdef PS2
- SIZE_MAIN_SCRIPT = 205512,
-#else
- SIZE_MAIN_SCRIPT = 225512,
-#endif
- SIZE_MISSION_SCRIPT = 35000,
- SIZE_SCRIPT_SPACE = SIZE_MAIN_SCRIPT + SIZE_MISSION_SCRIPT
-};
-
-enum {
MAX_NUM_SCRIPTS = 128,
MAX_NUM_INTRO_TEXT_LINES = 48,
MAX_NUM_INTRO_RECTANGLES = 16,
MAX_NUM_SCRIPT_SRPITES = 16,
MAX_NUM_SCRIPT_SPHERES = 16,
- MAX_NUM_USED_OBJECTS = 220,
- MAX_NUM_MISSION_SCRIPTS = 120,
- MAX_NUM_BUILDING_SWAPS = 25,
- MAX_NUM_INVISIBILITY_SETTINGS = 20,
- MAX_NUM_STORED_LINES = 1024
+ MAX_NUM_COLLECTIVES = 32,
+ MAX_NUM_USED_OBJECTS = 305,
+ MAX_NUM_MISSION_SCRIPTS = 150,
+ MAX_NUM_BUILDING_SWAPS = 80,
+ MAX_NUM_INVISIBILITY_SETTINGS = 52,
+ MAX_NUM_STORED_LINES = 1024,
+ MAX_ALLOWED_COLLISIONS = 2
};
class CTheScripts
{
public:
- static uint8 ScriptSpace[SIZE_SCRIPT_SPACE];
+ static uint8* ScriptSpace;
static CRunningScript ScriptsArray[MAX_NUM_SCRIPTS];
static intro_text_line IntroTextLines[MAX_NUM_INTRO_TEXT_LINES];
static intro_script_rectangle IntroRectangles[MAX_NUM_INTRO_RECTANGLES];
static CSprite2d ScriptSprites[MAX_NUM_SCRIPT_SRPITES];
static script_sphere_struct ScriptSphereArray[MAX_NUM_SCRIPT_SPHERES];
+ static tCollectiveData CollectiveArray[MAX_NUM_COLLECTIVES];
static tUsedObject UsedObjectArray[MAX_NUM_USED_OBJECTS];
static int32 MultiScriptArray[MAX_NUM_MISSION_SCRIPTS];
static tBuildingSwap BuildingSwapArray[MAX_NUM_BUILDING_SWAPS];
@@ -459,20 +526,24 @@ public:
static uint16 ScriptsUpdated;
static uint32 LastMissionPassedTime;
static uint16 NumberOfExclusiveMissionScripts;
-#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
-#define CARDS_IN_SUIT (13)
-#define NUM_SUITS (4)
-#define MAX_DECKS (6)
-#define CARDS_IN_DECK (CARDS_IN_SUIT * NUM_SUITS)
-#define CARDS_IN_STACK (CARDS_IN_DECK * MAX_DECKS)
- static int16 CardStack[CARDS_IN_STACK];
- static int16 CardStackPosition;
-#endif
+
static bool bPlayerIsInTheStatium;
static uint8 RiotIntensity;
static bool bPlayerHasMetDebbieHarry;
- static void Init();
+ static int AllowedCollision[MAX_ALLOWED_COLLISIONS];
+ static uint16* SavedVarIndices;
+ static int NumSaveVars;
+ static int FSDestroyedFlag;
+ static int NextProcessId;
+ static bool InTheScripts;
+ static CRunningScript* pCurrent;
+ static uint16 NumTrueGlobals;
+ static uint16 MostGlobals;
+ static base::cSList<script_corona> mCoronas;
+ static int NextScriptCoronaID;
+
+ static bool Init(bool loaddata = false);
static void Process();
static CRunningScript* StartTestScript();
@@ -482,11 +553,13 @@ public:
static void UndoBuildingSwaps();
static void UndoEntityInvisibilitySettings();
+ /*
static void ScriptDebugLine3D(float x1, float y1, float z1, float x2, float y2, float z2, uint32 col, uint32 col2);
static void RenderTheScriptDebugLines();
+ */
static void SaveAllScripts(uint8*, uint32*);
- static void LoadAllScripts(uint8*, uint32);
+ static bool LoadAllScripts(uint8*, uint32);
static bool IsDebugOn() { return DbgFlag; };
static void InvertDebugFlag() { DbgFlag = !DbgFlag; }
@@ -542,10 +615,12 @@ public:
static void DrawScriptSpheres();
static void HighlightImportantArea(uint32, float, float, float, float, float);
static void HighlightImportantAngledArea(uint32, float, float, float, float, float, float, float, float, float);
+ /*
static void DrawDebugSquare(float, float, float, float);
static void DrawDebugAngledSquare(float, float, float, float, float, float, float, float);
static void DrawDebugCube(float, float, float, float, float, float);
static void DrawDebugAngledCube(float, float, float, float, float, float, float, float, float, float);
+ */
static void AddToInvisibilitySwapArray(CEntity*, bool);
static void AddToBuildingSwapArray(CBuilding*, int32, int32);
@@ -554,7 +629,7 @@ public:
static int32 AddScriptSphere(int32 id, CVector pos, float radius);
static int32 GetNewUniqueScriptSphereIndex(int32 index);
static void RemoveScriptSphere(int32 index);
- static void RemoveScriptTextureDictionary();
+ //static void RemoveScriptTextureDictionary();
public:
static void RemoveThisPed(CPed* pPed);
@@ -563,6 +638,10 @@ public:
static void SwitchToMission(int32 mission);
#endif
+ static int GetSaveVarIndex(int);
+ static void Shutdown(void);
+ static void SwapNearestBuildingModel(float, float, float, float, int, int);
+
#ifdef GTA_SCRIPT_COLLECTIVE
static void AdvanceCollectiveIndex()
{
@@ -585,9 +664,11 @@ public:
#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
static bool MissionSupportsMissionReplay(int index)
{
- return index >= 3 && index <= 35 || index >= 51 && index <= 65 || index >= 67 && index <= 74 || index >= 83 && index <= 87;
+ return (index >= 48 && index <= 61) || (index >= 63 && index <= 117);
}
#endif
+ static bool IsFortStauntonDestroyed() { return FSDestroyedFlag && *(int32*)&ScriptSpace[FSDestroyedFlag] == 1; }
+
#ifdef USE_DEBUG_SCRIPT_LOADER
static int ScriptToLoad;
@@ -601,6 +682,10 @@ public:
#endif
};
+extern int ScriptParams[32];
+
+VALIDATE_SIZE(uStackReturnValue, 4);
+
#ifdef MISSION_REPLAY
extern int AllowMissionReplay;
extern uint32 WaitForMissionActivate;
@@ -613,7 +698,6 @@ extern int IsInAmmunation;
extern int MissionSkipLevel;
#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
-extern bool UsingMobileScript;
extern bool AlreadySavedGame;
#endif
@@ -637,3 +721,7 @@ enum {
MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART,
};
#endif
+
+extern int gScriptsFile;
+extern CVector gVectorSetInLua;
+
diff --git a/src/control/Script10.cpp b/src/control/Script10.cpp
new file mode 100644
index 00000000..ed1a9264
--- /dev/null
+++ b/src/control/Script10.cpp
@@ -0,0 +1,426 @@
+#include "common.h"
+
+#include "Script.h"
+#include "ScriptCommands.h"
+
+#include "CarCtrl.h"
+#include "DMAudio.h"
+#include "Frontend.h"
+#include "GameLogic.h"
+#include "Garages.h"
+#include "General.h"
+#include "Hud.h"
+#include "Messages.h"
+#include "Object.h"
+#include "Pad.h"
+#include "Pickups.h"
+#include "PlayerPed.h"
+#include "Pools.h"
+#include "Vehicle.h"
+#include "SpecialFX.h"
+#include "Stats.h"
+#include "User.h"
+#include "Weather.h"
+#include "World.h"
+
+bool gDeveloperFlag;
+
+int8 CRunningScript::ProcessCommands1600To1699(int32 command)
+{
+ switch (command) {
+ case COMMAND_ADD_NOODLES_DELIVERED:
+ CollectParameters(&m_nIp, 1);
+ // CStats::NoodlesDelievered += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE:
+ CollectParameters(&m_nIp, 1);
+ //CStats::TopScrapyardChallengeScore = Max(CStats::TopScrapyardChallengeScore, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_9MM_MAYHEM_SCORE:
+ CollectParameters(&m_nIp, 1);
+ //CStats::Top9mmMayhemScore = Max(CStats::Top9mmMayhemScore, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE:
+ CollectParameters(&m_nIp, 1);
+ //CStats::TopScooterShooterScore = Max(CStats::TopScooterShooterScore, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_ADD_MONEY_MADE_FROM_TOURIST:
+ CollectParameters(&m_nIp, 1);
+ // CStats::MoneyMadeFromTourist += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS:
+ CollectParameters(&m_nIp, 1);
+ // CStats::TouristsTakenToSpots += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_ADD_EXPORTED_CARS:
+ CollectParameters(&m_nIp, 1);
+ // CStats::NumberOfExportedCars += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_SET_TOTAL_EXPORT_CARS:
+ CollectParameters(&m_nIp, 1);
+ // CStats::TotalNumberOfCarExport = GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP:
+ CollectParameters(&m_nIp, 2);
+ // CStats::RegisterDirtBikeFastestLap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME:
+ CollectParameters(&m_nIp, 2);
+ // CStats::RegisterDirtBikeFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_REGISTER_DIRT_BIKE_AIR_TIME:
+ CollectParameters(&m_nIp, 1);
+ //CStats::DirtBikeMostAir = Max(CStats::DirtBikeMostAir, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_ADD_ARROW_3D_MARKER:
+ {
+ uint32 ip = m_nIp;
+ uint32 id = (uint32)(uintptr)GetPointerToScriptVariable(&ip, 0);
+ CollectParameters(&m_nIp, 10);
+ CVector pos = GET_VECTOR_PARAM(0);
+ CVector dir = GET_VECTOR_PARAM(3);
+ pos.z += GET_FLOAT_PARAM(9) + 7.0f;
+ //C3dMarkers::PlaceMarker(id, MARKERTYPE_ARROW, pos, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8), 200, 1, 3.2f, 1, dir, 1.0f, 0, 0); - TODO
+ return 0;
+ }
+ case COMMAND_PRINT_NOW_OVERRIDE_FADE:
+ {
+ wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 2);
+ CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // true, true
+ return 0;
+ }
+ case COMMAND_GET_PICKUP_VALUE:
+ {
+ CollectParameters(&m_nIp, 1);
+ SET_INTEGER_PARAM(0, CPickups::GetValue(GET_INTEGER_PARAM(0)));
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_SET_PICKUP_VALUE:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPickups::SetValue(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ }
+ case COMMAND_IS_DEVELOPER:
+#ifdef GTA_NETWORK
+ UpdateCompareFlag(gDeveloperFlag || gIsMultiplayerGame);
+#else
+ UpdateCompareFlag(gDeveloperFlag);
+#endif
+ return 0;
+ case COMMAND_SET_DEVELOPER_FLAG:
+ CollectParameters(&m_nIp, 1);
+ gDeveloperFlag = GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE:
+ CollectParameters(&m_nIp, 1);
+ //CStats::TopWichitaWipeoutScore = Max(CStats::TopWichitaWipeoutScore, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_ATTACH_OBJECT_TO_CAR:
+ {
+ CollectParameters(&m_nIp, 5);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ script_assert(pVehicle);
+ CVector offset = GET_VECTOR_PARAM(2);
+ // pObject->AttachObjectToEntity(pVehicle, offset);
+ return 0;
+ }
+ case COMMAND_DETACH_OBJECT_FROM_CAR:
+ {
+ CollectParameters(&m_nIp, 1);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ // if (pObject && pObject->m_pAttachedTo)
+ // pObject->DettachObjectFromEntity();
+ return 0;
+ }
+ case COMMAND_SET_PAD_STICKS_MULTIPLIER:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPad::GetPad(0)->unk_B4 = GET_FLOAT_PARAM(0);
+ CPad::GetPad(0)->unk_B8 = GET_FLOAT_PARAM(1);
+ return 0;
+ }
+ case COMMAND_PRINT_SUBTITLE_NOW:
+ {
+ wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 2);
+ if (FrontEndMenuManager.m_PrefsShowSubtitles)
+ CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // false, true
+ else
+ CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil);
+ return 0;
+ }
+ case COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE:
+ {
+ wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 2);
+ if (FrontEndMenuManager.m_PrefsShowSubtitles)
+ CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // true, true
+ else
+ CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil);
+ return 0;
+ }
+ case COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF:
+ {
+ wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 2);
+ if (FrontEndMenuManager.m_PrefsShowSubtitles)
+ CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // false, false
+ else
+ CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil);
+ return 0;
+ }
+ case COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF:
+ {
+ wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 3);
+ CMessages::AddMessageJumpQWithNumber(key, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1); // 0
+ return 0;
+ }
+ case COMMAND_GET_ANGLE_BETWEEN_POINTS:
+ {
+ CollectParameters(&m_nIp, 4);
+ SET_FLOAT_PARAM(0, CGeneral::GetAngleBetweenPoints(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(3)));
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_OVERRIDE_CHAR_MOVE_ANIM:
+ {
+ CollectParameters(&m_nIp, 1);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->bOverrideMoveAnim = true;
+ return 0;
+ }
+ case COMMAND_1627:
+ {
+ CollectParameters(&m_nIp, 1);
+ // something related to debug menu, not implemented
+ return 0;
+ }
+ case COMMAND_ENABLE_EMERGENCY_VEHICLES:
+ {
+ CollectParameters(&m_nIp, 1);
+ gbEmergencyVehiclesEnabled = GET_INTEGER_PARAM(0) != 0;
+ return 0;
+ }
+ case COMMAND_ADD_UNLOCKED_COSTUME:
+ CollectParameters(&m_nIp, 1);
+ // CStats::AddUnlockedCostume(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN:
+ // ClearMultiplayerSplashScreen();
+ return 0;
+ case COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF:
+ {
+ wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 4);
+ CMessages::AddMessageJumpQWithNumber(key, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1); // 0
+ return 0;
+ }
+ case COMMAND_GET_OBJECT_ORIENTATION:
+ {
+ CollectParameters(&m_nIp, 1);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ SET_FLOAT_PARAM(1, LimitAngleOnCircle(RADTODEG(Asin(pObject->GetForward().z))));
+ SET_FLOAT_PARAM(2, LimitAngleOnCircle(RADTODEG(Atan2(-pObject->GetForward().x, pObject->GetForward().y))));
+ SET_FLOAT_PARAM(0, LimitAngleOnCircle(RADTODEG(Atan2(-pObject->GetRight().z, pObject->GetUp().z))));
+ StoreParameters(&m_nIp, 3);
+ return 0;
+ }
+ case COMMAND_SET_OBJECT_ORIENTATION:
+ {
+ CollectParameters(&m_nIp, 4);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ pObject->SetOrientation(DEGTORAD(GET_FLOAT_PARAM(2)), DEGTORAD(GET_FLOAT_PARAM(1)), DEGTORAD(GET_FLOAT_PARAM(3)));
+ return 0;
+ }
+ case COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX:
+ {
+ uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
+ CollectParameters(&m_nIp, 1);
+ CUserDisplay::OnscnTimer.ChangeCounterPrefix(offset, GET_INTEGER_PARAM(0) != 0);
+ return 0;
+ }
+ case COMMAND_STORE_PLAYER_OUTFIT:
+ {
+ char tmp[12]; // TODO
+ CTheScripts::ReadTextLabelFromScript(&m_nIp, tmp);
+ for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++)
+ CGameLogic::mStoredPlayerOutfit[i] = tmp[i];
+ printf("STORED PLAYOUR OUTFIT : %s\n", CGameLogic::mStoredPlayerOutfit);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ return 0;
+ }
+ case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING:
+ {
+ char onscreen_str1[12];
+ uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace;
+ CollectParameters(&m_nIp, 2);
+ wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
+ strncpy(onscreen_str1, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(1), onscreen_str1, 0, GET_INTEGER_PARAM(0), nil, 0);
+ return 0;
+ }
+ case COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP:
+ {
+ CollectParameters(&m_nIp, 1);
+ CWeapon* pWeapon = FindPlayerPed()->GetWeapon();
+ if (pWeapon && GET_INTEGER_PARAM(0))
+ pWeapon->m_nAmmoInClip = GET_INTEGER_PARAM(0);
+ return 0;
+ }
+ case COMMAND_SET_CHAR_WAIT_STATE_REPEAT:
+ {
+ CollectParameters(&m_nIp, 3);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ if (pPed)
+ pPed->SetWaitState((eWaitState)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2) >= 0 ? &GET_INTEGER_PARAM(2) : nil, true);
+ return 0;
+ }
+ case COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO:
+ CollectParameters(&m_nIp, 1);
+ // CStats::RegisterBestTimeGoGoFaggio(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_LOCK_GARAGE:
+ CollectParameters(&m_nIp, 2);
+ CGarages::LockGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_IS_FINAL_GAME:
+#ifdef FINAL
+ UpdateCompareFlag(true);
+#else
+ UpdateCompareFlag(false);
+#endif
+ return 0;
+ case COMMAND_SET_ALLOWED_COLLISION:
+ {
+ CollectParameters(&m_nIp, 2);
+ CTheScripts::AllowedCollision[0] = GET_INTEGER_PARAM(0);
+ CTheScripts::AllowedCollision[1] = GET_INTEGER_PARAM(1);
+ return 0;
+ }
+ case COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL:
+ CollectParameters(&m_nIp, 3);
+ //CStats::GuardianAngelHighestLevel_Ind = Max(CStats::GuardianAngelHighestLevel_Ind, GET_INTEGER_PARAM(0));
+ //CStats::GuardianAngelHighestLevel_Com = Max(CStats::GuardianAngelHighestLevel_Com, GET_INTEGER_PARAM(1));
+ //CStats::GuardianAngelHighestLevel_Sub = Max(CStats::GuardianAngelHighestLevel_Sub, GET_INTEGER_PARAM(2));
+ return 0;
+ case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS:
+ {
+ char onscreen_str1[12];
+ char onscreen_str2[12];
+ uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace;
+ CollectParameters(&m_nIp, 3);
+ wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
+ strncpy(onscreen_str1, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ wchar* text2 = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
+ strncpy(onscreen_str2, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(1), onscreen_str2, 0, GET_INTEGER_PARAM(0), onscreen_str1, GET_INTEGER_PARAM(2));
+ return 0;
+ }
+ case COMMAND_GET_PLAYER_STORED_WEAPON:
+ {
+ CollectParameters(&m_nIp, 1);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ script_assert(pPed);
+ SET_INTEGER_PARAM(0, pPed->m_storedWeapon);
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_DISABLE_PAUSE_MENU:
+ CollectParameters(&m_nIp, 1);
+ // FrontEndMenuManager.mDisablePauseMenu = GET_INTEGER_PARAM(0) != 0; // TODO: static + member
+ return 0;
+ case COMMAND_IS_CHANNEL_PLAYING:
+ CollectParameters(&m_nIp, 1);
+ //UpdateCompareFlag(DMAudio.IsChannelPlaying(GET_INTEGER_PARAM(0));
+ UpdateCompareFlag(false);
+ return 0;
+ case COMMAND_SET_CLOCK_EVENT_WARNING:
+ CollectParameters(&m_nIp, 3);
+ /*
+ if (CHud::m_ClockEventWarningMinutes || GET_INTEGER_PARAMS(2)){
+ CHud::m_ClockEventWarningMinutes = GET_INTEGER_PARAMS(2);
+ CHud::m_ClockEventMinutes = GET_INTEGER_PARAMS(1);
+ CHud::m_ClockEventHours = GET_INTEGER_PARAMS(0);
+ CHud::m_ClockEventFlashTimer = 0;
+ }
+ */
+ return 0;
+ case COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION:
+ CollectParameters(&m_nIp, 3);
+ // CWeather::ExtraColourLightDir = GET_VECTOR_PARAM(0);
+ // CWeather::ExtraColourLightDir.Normalise();
+ return 0;
+ case COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->bCanBeTargettedByLeader = GET_INTEGER_PARAM(1) != 0;
+ return 0;
+ }
+ case COMMAND_PRINT_HELP_NO_BRIEF:
+ {
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CHud::SetHelpMessage(text, false); // + false, false
+ return 0;
+ }
+ case COMMAND_PRINT_HELP_FOREVER_NO_BRIEF:
+ {
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CHud::SetHelpMessage(text, false, true); // + false
+ return 0;
+ }
+ case COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF:
+ {
+ // CHud::mAlwaysAllowHelpText = true;
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CHud::SetHelpMessage(text, false); // + false, false
+ return 0;
+ }
+ case COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF:
+ {
+ // CHud::mAlwaysAllowHelpText = true;
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CHud::SetHelpMessage(text, false, true); // + false
+ return 0;
+ }
+ case COMMAND_SET_CAR_IS_REWARD:
+ {
+ CollectParameters(&m_nIp, 2);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ pVehicle->bRewardVehicle = (GET_INTEGER_PARAM(1) != 0);
+ return 0;
+ }
+ case COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPlayerPed* pPlayerPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ script_assert(pPlayerPed);
+ for (int i = 0; i < CPools::GetVehiclePool()->GetSize(); i++) {
+ CPed* pPed = CPools::GetPedPool()->GetSlot(i);
+ if (pPed && IsPedPointerValid(pPed)) {
+ if (pPed->m_leader == pPlayerPed || (pPed->m_objective == OBJECTIVE_FOLLOW_CHAR_IN_FORMATION && pPed->m_pedInObjective == pPlayerPed))
+ pPed->bIsFrozen = (GET_INTEGER_PARAM(1) != 0);
+ }
+ }
+ return 0;
+ }
+ default:
+ script_assert(0);
+ }
+ return -1;
+} \ No newline at end of file
diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp
index 4e7a1c3e..26c1cdde 100644
--- a/src/control/Script2.cpp
+++ b/src/control/Script2.cpp
@@ -28,6 +28,8 @@
#include "World.h"
#include "Zones.h"
+// LCS: file done except TODOs
+
int8 CRunningScript::ProcessCommands300To399(int32 command)
{
switch (command) {
@@ -35,12 +37,10 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
//case COMMAND_SET_PLAYER_INVINCIBLE:
//case COMMAND_SET_CHAR_GRAPHIC_TYPE:
//case COMMAND_SET_PLAYER_GRAPHIC_TYPE:
- /*
case COMMAND_HAS_PLAYER_BEEN_ARRESTED:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].m_WBState == WBSTATE_BUSTED);
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_WBState == WBSTATE_BUSTED);
return 0;
- */
//case COMMAND_STOP_CHAR_DRIVING:
//case COMMAND_KILL_CHAR:
//case COMMAND_SET_FAVOURITE_CAR_MODEL_FOR_CHAR:
@@ -49,25 +49,25 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_CHANGE_CAR_LOCK:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->m_nDoorLock = (eCarLock)ScriptParams[1];
+ pVehicle->m_nDoorLock = (eCarLock)GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SHAKE_CAM_WITH_POINT:
CollectParameters(&m_nIp, 4);
- TheCamera.CamShake(ScriptParams[0] / 1000.0f,
- *(float*)&ScriptParams[1],
- *(float*)&ScriptParams[2],
- *(float*)&ScriptParams[3]);
+ TheCamera.CamShake(GET_INTEGER_PARAM(0) / 1000.0f,
+ GET_FLOAT_PARAM(1),
+ GET_FLOAT_PARAM(2),
+ GET_FLOAT_PARAM(3));
return 0;
*/
case COMMAND_IS_CAR_MODEL:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(pVehicle->GetModelIndex() == ScriptParams[1]);
+ UpdateCompareFlag(pVehicle->GetModelIndex() == GET_INTEGER_PARAM(1));
return 0;
}
//case COMMAND_IS_CAR_REMAP:
@@ -77,15 +77,15 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_IS_CAR_DEAD_IN_AREA_2D:
{
CollectParameters(&m_nIp, 6);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
UpdateCompareFlag(pVehicle->GetStatus() == STATUS_WRECKED &&
pVehicle->IsWithinArea(x1, y1, x2, y2));
- if (ScriptParams[5])
+ if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
@@ -94,17 +94,17 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_IS_CAR_DEAD_IN_AREA_3D:
{
CollectParameters(&m_nIp, 8);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float z1 = *(float*)&ScriptParams[3];
- float x2 = *(float*)&ScriptParams[4];
- float y2 = *(float*)&ScriptParams[5];
- float z2 = *(float*)&ScriptParams[6];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float z1 = GET_FLOAT_PARAM(3);
+ float x2 = GET_FLOAT_PARAM(4);
+ float y2 = GET_FLOAT_PARAM(5);
+ float z2 = GET_FLOAT_PARAM(6);
UpdateCompareFlag(pVehicle->GetStatus() == STATUS_WRECKED &&
pVehicle->IsWithinArea(x1, y1, z1, x2, y2, z2));
- if (ScriptParams[7])
+ if (GET_INTEGER_PARAM(7))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, (z1 + z2) / 2);
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugCube(x1, y1, z1, x2, y2, z2);
@@ -121,38 +121,45 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
//case COMMAND_SET_CAR_FLAMEPROOF:
//case COMMAND_SET_CAR_ROCKETPROOF:
//case COMMAND_IS_CARBOMB_ACTIVE:
- //case COMMAND_GIVE_CAR_ALARM:
+ case COMMAND_GIVE_CAR_ALARM:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ pVehicle->m_nAlarmState = -1;
+ return 0;
+ }
//case COMMAND_PUT_CAR_ON_TRAILER:
- /*
case COMMAND_IS_CAR_CRUSHED:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CGarages::HasCarBeenCrushed(ScriptParams[0]));
+ UpdateCompareFlag(CGarages::HasCarBeenCrushed(GET_INTEGER_PARAM(0)));
return 0;
- */
- //case COMMAND_CREATE_GANG_CAR:
+ //case COMMAND_CREATE_GANG_CAR:
case COMMAND_CREATE_CAR_GENERATOR:
{
CollectParameters(&m_nIp, 12);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z > MAP_Z_LOW_LIMIT)
pos.z += 0.015f;
- ScriptParams[0] = CTheCarGenerators::CreateCarGenerator(
- pos.x, pos.y, pos.z, *(float*)&ScriptParams[3],
- ScriptParams[4], ScriptParams[5], ScriptParams[6], ScriptParams[7],
- ScriptParams[8], ScriptParams[9], ScriptParams[10], ScriptParams[11]);
+ SET_INTEGER_PARAM(0, CTheCarGenerators::CreateCarGenerator(
+ pos.x, pos.y, pos.z, GET_FLOAT_PARAM(3),
+ GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7),
+ GET_INTEGER_PARAM(8), GET_INTEGER_PARAM(9), GET_INTEGER_PARAM(10), GET_INTEGER_PARAM(11)));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SWITCH_CAR_GENERATOR:
{
CollectParameters(&m_nIp, 2);
- CCarGenerator* pCarGen = &CTheCarGenerators::CarGeneratorArray[ScriptParams[0]];
- if (ScriptParams[1] == 0){
+ CCarGenerator* pCarGen = &CTheCarGenerators::CarGeneratorArray[GET_INTEGER_PARAM(0)];
+ if (GET_INTEGER_PARAM(1) == 0) {
pCarGen->SwitchOff();
- }else if (ScriptParams[1] <= 100){
+ }
+ else if (GET_INTEGER_PARAM(1) <= 100) {
pCarGen->SwitchOn();
- pCarGen->SetUsesRemaining(ScriptParams[1]);
- }else{
+ pCarGen->SetUsesRemaining(GET_INTEGER_PARAM(1));
+ }
+ else {
pCarGen->SwitchOn();
}
return 0;
@@ -162,40 +169,34 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 3);
- CUserDisplay::Pager.AddMessage(text, ScriptParams[0], ScriptParams[1], ScriptParams[2]);
+ CUserDisplay::Pager.AddMessage(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
*/
case COMMAND_DISPLAY_ONSCREEN_TIMER:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR);
- m_nIp++;
- uint16 offset = CTheScripts::Read2BytesFromScript(&m_nIp);
+ uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
CollectParameters(&m_nIp, 1);
- CUserDisplay::OnscnTimer.AddClock(offset, nil, ScriptParams[0] != 0);
+ CUserDisplay::OnscnTimer.AddClock(offset, nil, GET_INTEGER_PARAM(0) != 0);
return 0;
}
case COMMAND_CLEAR_ONSCREEN_TIMER:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR);
- m_nIp++;
- CUserDisplay::OnscnTimer.ClearClock((uint16)CTheScripts::Read2BytesFromScript(&m_nIp));
+ uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
+ CUserDisplay::OnscnTimer.ClearClock(offset);
return 0;
}
case COMMAND_DISPLAY_ONSCREEN_COUNTER:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR);
- m_nIp++;
- int16 counter = CTheScripts::Read2BytesFromScript(&m_nIp);
+ uint16 counter = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
CollectParameters(&m_nIp, 1);
- CUserDisplay::OnscnTimer.AddCounter(counter, ScriptParams[0], nil, 0);
+ CUserDisplay::OnscnTimer.AddCounter(counter, GET_INTEGER_PARAM(0), nil, 0, -1, nil, 0);
return 0;
}
case COMMAND_CLEAR_ONSCREEN_COUNTER:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp] == ARGUMENT_GLOBALVAR);
- m_nIp++;
- CUserDisplay::OnscnTimer.ClearCounter((uint16)CTheScripts::Read2BytesFromScript(&m_nIp));
+ uint16 counter = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
+ CUserDisplay::OnscnTimer.ClearCounter(counter);
return 0;
}
case COMMAND_SET_ZONE_CAR_INFO:
@@ -219,7 +220,7 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
return 0;
}
while (zone >= 0) {
- CTheZones::SetZoneCarInfo(zone, ScriptParams[0], ScriptParams[1], ScriptParams[11], gangDensities);
+ CTheZones::SetZoneCarInfo(zone, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(11), gangDensities);
zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
}
return 0;
@@ -228,7 +229,7 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_IS_CHAR_IN_ZONE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
char label[12];
CTheScripts::ReadTextLabelFromScript(&m_nIp, label);
@@ -239,39 +240,70 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
UpdateCompareFlag(CTheZones::PointLiesWithinZone(&pos, CTheZones::GetNavigationZone(zone)));
return 0;
}
- //case COMMAND_SET_CAR_DENSITY:
- //case COMMAND_SET_PED_DENSITY:
+ case COMMAND_SET_CAR_DENSITY:
+ {
+ char label[12];
+ CTheScripts::ReadTextLabelFromScript(&m_nIp, label);
+ int16 zone = CTheZones::FindZoneByLabelAndReturnIndex(label, ZONE_INFO);
+ m_nIp += 8;
+ CollectParameters(&m_nIp, 2);
+ if (zone < 0) {
+ debug("Couldn't find zone - %s\n", label);
+ return 0;
+ }
+ while (zone >= 0) {
+ CTheZones::SetCarDensity(zone, ScriptParams[0], ScriptParams[1]);
+ zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
+ }
+ return 0;
+ }
+ case COMMAND_SET_PED_DENSITY:
+ {
+ char label[12];
+ CTheScripts::ReadTextLabelFromScript(&m_nIp, label);
+ int16 zone = CTheZones::FindZoneByLabelAndReturnIndex(label, ZONE_INFO);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ CollectParameters(&m_nIp, 2);
+ if (zone < 0) {
+ debug("Couldn't find zone - %s\n", label);
+ return 0;
+ }
+ while (zone >= 0) {
+ CTheZones::SetPedDensity(zone, ScriptParams[0], ScriptParams[1]);
+ zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
+ }
+ return 0;
+ }
case COMMAND_POINT_CAMERA_AT_PLAYER:
{
CollectParameters(&m_nIp, 3);
- // ScriptParams[0] is unused.
- TheCamera.TakeControl(nil, ScriptParams[1], ScriptParams[2], CAMCONTROL_SCRIPT);
+ TheCamera.TakeControl(nil, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), CAMCONTROL_SCRIPT);
return 0;
}
case COMMAND_POINT_CAMERA_AT_CAR:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
if (pVehicle)
- TheCamera.TakeControl(pVehicle, ScriptParams[1], ScriptParams[2], CAMCONTROL_SCRIPT);
+ TheCamera.TakeControl(pVehicle, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), CAMCONTROL_SCRIPT);
return 0;
}
case COMMAND_POINT_CAMERA_AT_CHAR:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
if (pPed)
- TheCamera.TakeControl(pPed, ScriptParams[1], ScriptParams[2], CAMCONTROL_SCRIPT);
+ TheCamera.TakeControl(pPed, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), CAMCONTROL_SCRIPT);
return 0;
}
case COMMAND_RESTORE_CAMERA:
TheCamera.Restore();
return 0;
- /*
- case COMMAND_SHAKE_PAD:
- CPad::GetPad(ScriptParams[0])->StartShake(ScriptParams[1], ScriptParams[2]);
- return 0;
- */
+ /*
+ case COMMAND_SHAKE_PAD:
+ CPad::GetPad(GET_INTEGER_PARAM(0))->StartShake(GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
+ return 0;
+ */
case COMMAND_SET_ZONE_PED_INFO:
{
char label[12];
@@ -284,61 +316,61 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
return 0;
}
while (zone >= 0) {
- CTheZones::SetZonePedInfo(zone, ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3],
- ScriptParams[4], ScriptParams[5], ScriptParams[6], ScriptParams[7], ScriptParams[8], ScriptParams[9], ScriptParams[10], ScriptParams[11]);
+ CTheZones::SetZonePedInfo(zone, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3),
+ GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8), GET_INTEGER_PARAM(9), GET_INTEGER_PARAM(10), GET_INTEGER_PARAM(11));
zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
}
return 0;
}
case COMMAND_SET_TIME_SCALE:
CollectParameters(&m_nIp, 1);
- CTimer::SetTimeScale(*(float*)&ScriptParams[0]);
- return 0;
- /*
- case COMMAND_IS_CAR_IN_AIR:
- {
- CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- script_assert(pVehicle && pVehicle->IsCar());
- CAutomobile* pCar = (CAutomobile*)pVehicle;
- UpdateCompareFlag(pCar->GetAllWheelsOffGround());
- return 0;
- }
- */
+ CTimer::SetTimeScale(GET_FLOAT_PARAM(0));
+ return 0;
+ /*
+ case COMMAND_IS_CAR_IN_AIR:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle && pVehicle->IsCar());
+ CAutomobile* pCar = (CAutomobile*)pVehicle;
+ UpdateCompareFlag(pCar->GetAllWheelsOffGround());
+ return 0;
+ }
+ */
case COMMAND_SET_FIXED_CAMERA_POSITION:
{
CollectParameters(&m_nIp, 6);
TheCamera.SetCamPositionForFixedMode(
- CVector(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2]),
- CVector(*(float*)&ScriptParams[3], *(float*)&ScriptParams[4], *(float*)&ScriptParams[5]));
+ CVector(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2)),
+ CVector(GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(4), GET_FLOAT_PARAM(5)));
return 0;
}
case COMMAND_POINT_CAMERA_AT_POINT:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- TheCamera.TakeControlNoEntity(pos, ScriptParams[3], CAMCONTROL_SCRIPT);
+ TheCamera.TakeControlNoEntity(pos, GET_INTEGER_PARAM(3), CAMCONTROL_SCRIPT);
return 0;
}
case COMMAND_ADD_BLIP_FOR_CAR_OLD:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CRadar::SetEntityBlip(BLIP_CAR, ScriptParams[0], ScriptParams[1], (eBlipDisplay)ScriptParams[2]);
+ SET_INTEGER_PARAM(0, CRadar::SetEntityBlip(BLIP_CAR, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), (eBlipDisplay)GET_INTEGER_PARAM(2)));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_BLIP_FOR_CHAR_OLD:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CRadar::SetEntityBlip(BLIP_CHAR, ScriptParams[0], ScriptParams[1], (eBlipDisplay)ScriptParams[2]);
+ SET_INTEGER_PARAM(0, CRadar::SetEntityBlip(BLIP_CHAR, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), (eBlipDisplay)GET_INTEGER_PARAM(2)));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -346,57 +378,61 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_ADD_BLIP_FOR_OBJECT_OLD:
{
CollectParameters(&m_nIp, 3);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CRadar::SetEntityBlip(BLIP_OBJECT, ScriptParams[0], ScriptParams[1], (eBlipDisplay)ScriptParams[2]);
+ SET_INTEGER_PARAM(0, CRadar::SetEntityBlip(BLIP_OBJECT, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), (eBlipDisplay)GET_INTEGER_PARAM(2)));
StoreParameters(&m_nIp, 1);
return 0;
}
*/
case COMMAND_REMOVE_BLIP:
CollectParameters(&m_nIp, 1);
- CRadar::ClearBlip(ScriptParams[0]);
+ CRadar::ClearBlip(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_CHANGE_BLIP_COLOUR:
CollectParameters(&m_nIp, 2);
- CRadar::ChangeBlipColour(ScriptParams[0], ScriptParams[1]);
+ CRadar::ChangeBlipColour(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_DIM_BLIP:
CollectParameters(&m_nIp, 2);
- CRadar::ChangeBlipBrightness(ScriptParams[0], ScriptParams[1]);
+ CRadar::ChangeBlipBrightness(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_ADD_BLIP_FOR_COORD_OLD:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CRadar::SetCoordBlip(BLIP_COORD, pos, ScriptParams[3], (eBlipDisplay)ScriptParams[4]);
+ SET_INTEGER_PARAM(0, CRadar::SetCoordBlip(BLIP_COORD, pos, GET_INTEGER_PARAM(3), (eBlipDisplay)GET_INTEGER_PARAM(4)));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_CHANGE_BLIP_SCALE:
CollectParameters(&m_nIp, 2);
- CRadar::ChangeBlipScale(ScriptParams[0], ScriptParams[1]);
+ CRadar::ChangeBlipScale(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_SET_FADING_COLOUR:
CollectParameters(&m_nIp, 3);
- TheCamera.SetFadeColour(ScriptParams[0], ScriptParams[1], ScriptParams[2]);
+ TheCamera.SetFadeColour(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
case COMMAND_DO_FADE:
+ {
+ // unknown empty call on PS2, not mobile
CollectParameters(&m_nIp, 2);
- TheCamera.Fade(ScriptParams[0] / 1000.0f, ScriptParams[1]);
+ float fFadeTime = GET_INTEGER_PARAM(0);
+ TheCamera.Fade(fFadeTime > 2 ? fFadeTime / 1000.0f : 0.0f, GET_INTEGER_PARAM(1));
return 0;
+ }
case COMMAND_GET_FADING_STATUS:
UpdateCompareFlag(TheCamera.GetFading());
return 0;
case COMMAND_ADD_HOSPITAL_RESTART:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
- float angle = *(float*)&ScriptParams[3];
+ CVector pos = GET_VECTOR_PARAM(0);
+ float angle = GET_FLOAT_PARAM(3);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRestart::AddHospitalRestartPoint(pos, angle);
@@ -405,8 +441,8 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_ADD_POLICE_RESTART:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
- float angle = *(float*)&ScriptParams[3];
+ CVector pos = GET_VECTOR_PARAM(0);
+ float angle = GET_FLOAT_PARAM(3);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRestart::AddPoliceRestartPoint(pos, angle);
@@ -415,8 +451,8 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_OVERRIDE_NEXT_RESTART:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
- float angle = *(float*)&ScriptParams[3];
+ CVector pos = GET_VECTOR_PARAM(0);
+ float angle = GET_FLOAT_PARAM(3);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRestart::OverrideNextRestart(pos, angle);
@@ -426,9 +462,9 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_DRAW_SHADOW:
{
CollectParameters(&m_nIp, 10);
- CVector pos = *(CVector*)&ScriptParams[1];
- float angle = *(float*)&ScriptParams[4];
- float length = *(float*)&ScriptParams[5];
+ CVector pos = GET_VECTOR_PARAM(1);
+ float angle = GET_FLOAT_PARAM(4);
+ float length = GET_FLOAT_PARAM(5);
float x, y;
if (angle != 0.0f){
y = Cos(angle) * length;
@@ -441,40 +477,40 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
float frontY = y;
float sideX = y;
float sideY = x;
- CShadows::StoreShadowToBeRendered(ScriptParams[0], &pos, frontX, frontY, sideX, sideY,
- ScriptParams[6], ScriptParams[7], ScriptParams[8], ScriptParams[9]);
+ CShadows::StoreShadowToBeRendered(GET_INTEGER_PARAM(0), &pos, frontX, frontY, sideX, sideY,
+ GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8), GET_INTEGER_PARAM(9));
return 0;
}
*/
case COMMAND_GET_PLAYER_HEADING:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
float angle = pPed->bInVehicle ? pPed->m_pMyVehicle->GetForward().Heading() : pPed->GetForward().Heading();
angle = RADTODEG(angle);
if (angle < 0.0f)
angle += 360.0f;
if (angle > 360.0f)
angle -= 360.0f;
- *(float*)&ScriptParams[0] = angle;
+ SET_FLOAT_PARAM(0, angle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_PLAYER_HEADING:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
if (pPed->bInVehicle)
return 0;
- pPed->m_fRotationDest = pPed->m_fRotationCur = DEGTORAD(*(float*)&ScriptParams[1]);
- pPed->SetHeading(DEGTORAD(*(float*)&ScriptParams[1]));
+ pPed->m_fRotationDest = pPed->m_fRotationCur = DEGTORAD(GET_FLOAT_PARAM(1));
+ pPed->SetHeading(DEGTORAD(GET_FLOAT_PARAM(1)));
return 0;
}
case COMMAND_GET_CHAR_HEADING:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
float angle = pPed->bInVehicle ? pPed->m_pMyVehicle->GetForward().Heading() : pPed->GetForward().Heading();
angle = RADTODEG(angle);
@@ -482,25 +518,25 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
angle += 360.0f;
if (angle > 360.0f)
angle -= 360.0f;
- *(float*)&ScriptParams[0] = angle;
+ SET_FLOAT_PARAM(0, angle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CHAR_HEADING:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
if (pPed->bInVehicle)
return 0;
- pPed->m_fRotationDest = pPed->m_fRotationCur = DEGTORAD(*(float*)&ScriptParams[1]);
- pPed->SetHeading(DEGTORAD(*(float*)&ScriptParams[1]));
+ pPed->m_fRotationDest = pPed->m_fRotationCur = DEGTORAD(GET_FLOAT_PARAM(1));
+ pPed->SetHeading(DEGTORAD(GET_FLOAT_PARAM(1)));
return 0;
}
case COMMAND_GET_CAR_HEADING:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
float angle = pVehicle->GetForward().Heading();
angle = RADTODEG(angle);
@@ -508,22 +544,22 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
angle += 360.0f;
if (angle > 360.0f)
angle -= 360.0f;
- *(float*)&ScriptParams[0] = angle;
+ SET_FLOAT_PARAM(0, angle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CAR_HEADING:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->SetHeading(DEGTORAD(*(float*)&ScriptParams[1]));
+ pVehicle->SetHeading(DEGTORAD(GET_FLOAT_PARAM(1)));
return 0;
}
case COMMAND_GET_OBJECT_HEADING:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
float angle = pObject->GetForward().Heading();
angle = RADTODEG(angle);
@@ -531,39 +567,39 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
angle += 360.0f;
if (angle > 360.0f)
angle -= 360.0f;
- *(float*)&ScriptParams[0] = angle;
+ SET_FLOAT_PARAM(0, angle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_OBJECT_HEADING:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CWorld::Remove(pObject);
- pObject->SetHeading(DEGTORAD(*(float*)&ScriptParams[1]));
+ pObject->SetHeading(DEGTORAD(GET_FLOAT_PARAM(1)));
pObject->GetMatrix().UpdateRW();
pObject->UpdateRwFrame();
CWorld::Add(pObject);
return 0;
}
- /*
case COMMAND_IS_PLAYER_TOUCHING_OBJECT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pObject);
CPhysical* pEntityToTest = pPed->bInVehicle ? (CPhysical*)pPed->m_pMyVehicle : pPed;
UpdateCompareFlag(pEntityToTest->GetHasCollidedWith(pObject));
return 0;
}
+ /*
case COMMAND_IS_CHAR_TOUCHING_OBJECT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pObject);
CPhysical* pEntityToTest = pPed->bInVehicle ? (CPhysical*)pPed->m_pMyVehicle : pPed;
UpdateCompareFlag(pEntityToTest->GetHasCollidedWith(pObject));
@@ -573,121 +609,119 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_SET_PLAYER_AMMO:
{
CollectParameters(&m_nIp, 3);
- CWorld::Players[0].m_pPed->SetAmmo((eWeaponType)ScriptParams[1], ScriptParams[2]);
+ CWorld::Players[0].m_pPed->SetAmmo((eWeaponType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
- /*
case COMMAND_SET_CHAR_AMMO:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- pPed->SetAmmo((eWeaponType)ScriptParams[1], ScriptParams[2]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ pPed->SetAmmo((eWeaponType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
- */
//case COMMAND_SET_CAR_AMMO:
//case COMMAND_LOAD_CAMERA_SPLINE:
//case COMMAND_MOVE_CAMERA_ALONG_SPLINE:
//case COMMAND_GET_CAMERA_POSITION_ALONG_SPLINE:
case COMMAND_DECLARE_MISSION_FLAG:
- CTheScripts::OnAMissionFlag = (uint16)CTheScripts::Read2BytesFromScript(&++m_nIp);
+ CTheScripts::OnAMissionFlag = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
return 0;
case COMMAND_DECLARE_MISSION_FLAG_FOR_CONTACT:
return 0;
- //case COMMAND_DECLARE_BASE_BRIEF_ID_FOR_CONTACT:
+ //case COMMAND_DECLARE_BASE_BRIEF_ID_FOR_CONTACT:
case COMMAND_IS_PLAYER_HEALTH_GREATER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
- UpdateCompareFlag(pPed->m_fHealth > ScriptParams[1]);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ UpdateCompareFlag(pPed->m_fHealth > GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_IS_CHAR_HEALTH_GREATER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- UpdateCompareFlag(pPed->m_fHealth > ScriptParams[1]);
+ UpdateCompareFlag(pPed->m_fHealth > GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_IS_CAR_HEALTH_GREATER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(pVehicle->m_fHealth > ScriptParams[1]);
+ UpdateCompareFlag(pVehicle->m_fHealth > GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_ADD_BLIP_FOR_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int handle = CRadar::SetEntityBlip(BLIP_CAR, ScriptParams[0], 0, BLIP_DISPLAY_BOTH);
+ int handle = CRadar::SetEntityBlip(BLIP_CAR, GET_INTEGER_PARAM(0), 0, BLIP_DISPLAY_BOTH);
CRadar::ChangeBlipScale(handle, 3);
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_BLIP_FOR_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int handle = CRadar::SetEntityBlip(BLIP_CHAR, ScriptParams[0], 1, BLIP_DISPLAY_BOTH);
+ int handle = CRadar::SetEntityBlip(BLIP_CHAR, GET_INTEGER_PARAM(0), 1, BLIP_DISPLAY_BOTH);
CRadar::ChangeBlipScale(handle, 3);
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_BLIP_FOR_OBJECT:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int handle = CRadar::SetEntityBlip(BLIP_OBJECT, ScriptParams[0], 6, BLIP_DISPLAY_BOTH);
+ int handle = CRadar::SetEntityBlip(BLIP_OBJECT, GET_INTEGER_PARAM(0), 6, BLIP_DISPLAY_BOTH);
CRadar::ChangeBlipScale(handle, 3);
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_BLIP_FOR_CONTACT_POINT:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int handle = CRadar::SetCoordBlip(BLIP_CONTACT_POINT, pos, 2, BLIP_DISPLAY_BOTH);
CRadar::ChangeBlipScale(handle, 3);
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_BLIP_FOR_COORD:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int handle = CRadar::SetCoordBlip(BLIP_COORD, pos, 5, BLIP_DISPLAY_BOTH);
CRadar::ChangeBlipScale(handle, 3);
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_CHANGE_BLIP_DISPLAY:
CollectParameters(&m_nIp, 2);
- CRadar::ChangeBlipDisplay(ScriptParams[0], (eBlipDisplay)ScriptParams[1]);
+ CRadar::ChangeBlipDisplay(GET_INTEGER_PARAM(0), (eBlipDisplay)GET_INTEGER_PARAM(1));
return 0;
case COMMAND_ADD_ONE_OFF_SOUND:
{
CollectParameters(&m_nIp, 4);
- switch (ScriptParams[3]) {
+ switch (GET_INTEGER_PARAM(3)) {
case SCRIPT_SOUND_PART_MISSION_COMPLETE:
DMAudio.PlayFrontEndSound(SOUND_PART_MISSION_COMPLETE, 0);
return 0;
@@ -712,14 +746,20 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case SCRIPT_SOUND_IMRAN_ARM_BOMB:
DMAudio.PlayFrontEndSound(SOUND_AMMUNATION_IMRAN_ARM_BOMB, 0);
return 0;
+ case 0x46: // TODO
+ DMAudio.PlayFrontEndSound(0xC4, 0);
+ return 0;
+ case 0x47: // TODO
+ DMAudio.PlayFrontEndSound(0xCD, 0);
+ return 0;
default:
break;
}
- if (!DMAudio.IsAudioInitialised())
+ if (!DMAudio.IsAudioInitialised()) // LCS doesn't have it. Why?
return 0;
cAudioScriptObject* obj = new cAudioScriptObject();
- obj->Posn = *(CVector*)&ScriptParams[0];
- obj->AudioId = ScriptParams[3];
+ obj->Posn = GET_VECTOR_PARAM(0);
+ obj->AudioId = GET_INTEGER_PARAM(3);
obj->AudioEntity = AEHANDLE_NONE;
DMAudio.CreateOneShotScriptObject(obj);
return 0;
@@ -727,23 +767,23 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_ADD_CONTINUOUS_SOUND:
{
CollectParameters(&m_nIp, 4);
- if (DMAudio.IsAudioInitialised()) {
+ if (DMAudio.IsAudioInitialised()) { // LCS doesn't have it. Why?
cAudioScriptObject* obj = new cAudioScriptObject();
- obj->Posn = *(CVector*)&ScriptParams[0];
- obj->AudioId = ScriptParams[3];
+ obj->Posn = GET_VECTOR_PARAM(0);
+ obj->AudioId = GET_INTEGER_PARAM(3);
obj->AudioEntity = DMAudio.CreateLoopingScriptObject(obj);
- ScriptParams[0] = CPools::GetAudioScriptObjectPool()->GetIndex(obj);
+ SET_INTEGER_PARAM(0, CPools::GetAudioScriptObjectPool()->GetIndex(obj));
}
else
- ScriptParams[0] = -1;
+ SET_INTEGER_PARAM(0, -1);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_REMOVE_SOUND:
{
CollectParameters(&m_nIp, 1);
- cAudioScriptObject* obj = CPools::GetAudioScriptObjectPool()->GetAt(ScriptParams[0]);
- if (!obj){
+ cAudioScriptObject* obj = CPools::GetAudioScriptObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ if (!obj) {
debug("REMOVE_SOUND - Sound doesn't exist\n");
return 0;
}
@@ -754,9 +794,9 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
case COMMAND_IS_CAR_STUCK_ON_ROOF:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(CTheScripts::UpsideDownCars.HasCarBeenUpsideDownForAWhile(ScriptParams[0]));
+ UpdateCompareFlag(CTheScripts::UpsideDownCars.HasCarBeenUpsideDownForAWhile(GET_INTEGER_PARAM(0)));
return 0;
}
default:
@@ -771,22 +811,22 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_ADD_UPSIDEDOWN_CAR_CHECK:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CTheScripts::UpsideDownCars.AddCarToCheck(ScriptParams[0]);
+ CTheScripts::UpsideDownCars.AddCarToCheck(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_REMOVE_UPSIDEDOWN_CAR_CHECK:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- CTheScripts::UpsideDownCars.RemoveCarFromCheck(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ CTheScripts::UpsideDownCars.RemoveCarFromCheck(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_SET_CHAR_OBJ_WAIT_ON_FOOT:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_WAIT_ON_FOOT);
@@ -795,7 +835,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_FLEE_ON_FOOT_TILL_SAFE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE);
@@ -804,32 +844,31 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_GUARD_SPOT:
{
CollectParameters(&m_nIp, 4);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_GUARD_SPOT, pos);
return 0;
}
- /*
case COMMAND_SET_CHAR_OBJ_GUARD_AREA:
{
CollectParameters(&m_nIp, 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- float infX = *(float*)&ScriptParams[1];
- float infY = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- if (infX > supX){
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ float infX = GET_FLOAT_PARAM(1);
+ float infY = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ if (infX > supX) {
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
@@ -843,13 +882,12 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_WAIT_IN_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_WAIT_IN_CAR);
return 0;
}
- */
case COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_2D:
case COMMAND_IS_PLAYER_IN_AREA_IN_CAR_2D:
case COMMAND_IS_PLAYER_STOPPED_IN_AREA_2D:
@@ -887,17 +925,17 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_GIVE_WEAPON_TO_PLAYER:
{
CollectParameters(&m_nIp, 3);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- pPed->m_nSelectedWepSlot = pPed->GiveWeapon((eWeaponType)ScriptParams[1], ScriptParams[2]);
+ pPed->m_nSelectedWepSlot = pPed->GiveWeapon((eWeaponType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_GIVE_WEAPON_TO_CHAR:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->SetCurrentWeapon(pPed->GiveWeapon((eWeaponType)ScriptParams[1], ScriptParams[2]));
+ pPed->SetCurrentWeapon(pPed->GiveWeapon((eWeaponType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2)));
if (pPed->bInVehicle && pPed->m_pMyVehicle)
pPed->RemoveWeaponModel(CWeaponInfo::GetWeaponInfo(pPed->m_weapons[pPed->m_currentWeapon].m_eWeaponType)->m_nModelId);
return 0;
@@ -906,23 +944,35 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_PLAYER_CONTROL:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
- if (ScriptParams[1]){
+ CPlayerInfo* pPlayer = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ if (FindPlayerPed()) {
+ if (FindPlayerPed()->GetPedState() != PED_JUMP) {
+ FindPlayerPed()->bIsLanding = false;
+ FindPlayerPed()->bIsInTheAir = false;
+ }
+ FindPlayerPed()->RestoreHeadingRate();
+ }
+ if (GET_INTEGER_PARAM(1)) {
pPlayer->MakePlayerSafe(false);
- if (strcmp(m_abScriptName, "serg1") == 0) // Four Iron
- pPlayer->m_pPed->ClearFollowPath();
- }else{
+ if (FindPlayerPed()->GetStatus() != PED_DRIVING && !FindPlayerPed()->m_attachedTo) {
+ // FindPlayerPed()->SetIdleAndResetAnim(); // TODO!
+ }
+ }
+ else {
pPlayer->MakePlayerSafe(true);
+ if (FindPlayerPed()->GetPedState() > PED_STATES_NO_AI && FindPlayerPed()->GetPedState() != PED_DRIVING && TheCamera.GetScreenFadeStatus() == FADE_2) {
+ // FindPlayerPed()->SetIdleAndResetAnim(); // TODO!
+ }
}
return 0;
}
case COMMAND_FORCE_WEATHER:
CollectParameters(&m_nIp, 1);
- CWeather::ForceWeather(ScriptParams[0]);
+ CWeather::ForceWeather(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_FORCE_WEATHER_NOW:
CollectParameters(&m_nIp, 1);
- CWeather::ForceWeatherNow(ScriptParams[0]);
+ CWeather::ForceWeatherNow(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_RELEASE_WEATHER:
CWeather::ReleaseWeather();
@@ -930,9 +980,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CURRENT_PLAYER_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
- for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++){
- if (pPed->m_weapons[i].m_eWeaponType == ScriptParams[1])
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++) {
+ if (pPed->m_weapons[i].m_eWeaponType == GET_INTEGER_PARAM(1))
pPed->m_nSelectedWepSlot = i;
}
return 0;
@@ -940,9 +990,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CURRENT_CHAR_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++) {
- if (pPed->m_weapons[i].m_eWeaponType == ScriptParams[1])
+ if (pPed->m_weapons[i].m_eWeaponType == GET_INTEGER_PARAM(1))
pPed->SetCurrentWeapon(i);
}
return 0;
@@ -951,18 +1001,18 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_GET_OBJECT_COORDINATES:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- *(CVector*)&ScriptParams[0] = pObject->GetPosition();
+ SET_VECTOR_PARAM(0, pObject->GetPosition());
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_SET_OBJECT_COORDINATES:
{
CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pObject->Teleport(pos);
@@ -970,13 +1020,13 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
return 0;
}
case COMMAND_GET_GAME_TIMER:
- ScriptParams[0] = CTimer::GetTimeInMilliseconds();
+ SET_INTEGER_PARAM(0, CTimer::GetTimeInMilliseconds());
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_TURN_CHAR_TO_FACE_COORD:
{
CollectParameters(&m_nIp, 4);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVehicle* pVehicle;
CVector pos;
@@ -988,11 +1038,11 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
pos = pVehicle->GetPosition();
else
pos = pPed->GetPosition();
- float heading = CGeneral::GetATanOfXY(pos.x - *(float*)&ScriptParams[1], pos.y - *(float*)&ScriptParams[2]);
+ float heading = CGeneral::GetATanOfXY(pos.x - GET_FLOAT_PARAM(1), pos.y - GET_FLOAT_PARAM(2));
heading += HALFPI;
if (heading > TWOPI)
heading -= TWOPI;
- if (!pVehicle){
+ if (!pVehicle) {
pPed->m_fRotationCur = heading;
pPed->m_fRotationDest = heading;
pPed->SetHeading(heading);
@@ -1002,7 +1052,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_TURN_PLAYER_TO_FACE_COORD:
{
CollectParameters(&m_nIp, 4);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
CVehicle* pVehicle;
CVector pos;
@@ -1014,7 +1064,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
pos = pVehicle->GetPosition();
else
pos = pPed->GetPosition();
- float heading = CGeneral::GetATanOfXY(pos.x - *(float*)&ScriptParams[1], pos.y - *(float*)&ScriptParams[2]);
+ float heading = CGeneral::GetATanOfXY(pos.x - GET_FLOAT_PARAM(1), pos.y - GET_FLOAT_PARAM(2));
heading += HALFPI;
if (heading > TWOPI)
heading -= TWOPI;
@@ -1028,16 +1078,16 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_STORE_WANTED_LEVEL:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- ScriptParams[0] = pPed->m_pWanted->GetWantedLevel();
+ SET_INTEGER_PARAM(0, pPed->m_pWanted->GetWantedLevel());
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_CAR_STOPPED:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(CTheScripts::IsVehicleStopped(pVehicle));
return 0;
@@ -1045,94 +1095,94 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_MARK_CHAR_AS_NO_LONGER_NEEDED:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
CTheScripts::CleanUpThisPed(pPed);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_MARK_CAR_AS_NO_LONGER_NEEDED:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
CTheScripts::CleanUpThisVehicle(pVehicle);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
return 0;
}
case COMMAND_MARK_OBJECT_AS_NO_LONGER_NEEDED:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
CTheScripts::CleanUpThisObject(pObject);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_OBJECT);
return 0;
}
case COMMAND_DONT_REMOVE_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_DONT_REMOVE_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
return 0;
}
case COMMAND_DONT_REMOVE_OBJECT:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_OBJECT);
return 0;
}
case COMMAND_CREATE_CHAR_AS_PASSENGER:
{
CollectParameters(&m_nIp, 4);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- switch (ScriptParams[2]) {
+ switch (GET_INTEGER_PARAM(2)) {
case MI_COP:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_STREET;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_STREET);
break;
case MI_SWAT:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_SWAT;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_SWAT);
break;
case MI_FBI:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_FBI;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_FBI);
break;
case MI_ARMY:
- if (ScriptParams[1] == PEDTYPE_COP)
- ScriptParams[2] = COP_ARMY;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ SET_INTEGER_PARAM(2, COP_ARMY);
break;
case MI_MEDIC:
- if (ScriptParams[1] == PEDTYPE_EMERGENCY)
- ScriptParams[2] = PEDTYPE_EMERGENCY;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_EMERGENCY)
+ SET_INTEGER_PARAM(2, PEDTYPE_EMERGENCY);
break;
case MI_FIREMAN:
- if (ScriptParams[1] == PEDTYPE_FIREMAN)
- ScriptParams[2] = PEDTYPE_FIREMAN;
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_FIREMAN)
+ SET_INTEGER_PARAM(2, PEDTYPE_FIREMAN);
break;
default:
break;
}
CPed* pPed;
- if (ScriptParams[1] == PEDTYPE_COP)
- pPed = new CCopPed((eCopType)ScriptParams[2]);
- else if (ScriptParams[1] == PEDTYPE_EMERGENCY || ScriptParams[1] == PEDTYPE_FIREMAN)
- pPed = new CEmergencyPed(ScriptParams[2]);
+ if (GET_INTEGER_PARAM(1) == PEDTYPE_COP)
+ pPed = new CCopPed((eCopType)GET_INTEGER_PARAM(2));
+ else if (GET_INTEGER_PARAM(1) == PEDTYPE_EMERGENCY || GET_INTEGER_PARAM(1) == PEDTYPE_FIREMAN)
+ pPed = new CEmergencyPed(GET_INTEGER_PARAM(2));
else
- pPed = new CCivilianPed((ePedType)ScriptParams[1], ScriptParams[2]);
+ pPed = new CCivilianPed((ePedType)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
pPed->CharCreatedBy = MISSION_CHAR;
pPed->bRespondsToThreats = false;
pPed->bAllowMedicsToReviveMe = false;
@@ -1143,8 +1193,8 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
pPed->SetOrientation(0.0f, 0.0f, 0.0f);
CPopulation::ms_nTotalMissionPeds++;
CWorld::Add(pPed);
- if (ScriptParams[3] >= 0)
- pVehicle->AddPassenger(pPed, ScriptParams[3]);
+ if (GET_INTEGER_PARAM(3) >= 0)
+ pVehicle->AddPassenger(pPed, GET_INTEGER_PARAM(3));
else
pVehicle->AddPassenger(pPed);
pPed->m_pMyVehicle = pVehicle;
@@ -1154,18 +1204,18 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
pPed->bUsesCollision = false;
pPed->AddInCarAnims(pVehicle, false);
pPed->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pPed->GetPosition());
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pPed));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_SET_CHAR_OBJ_KILL_CHAR_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, pTarget);
return 0;
@@ -1173,9 +1223,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTarget = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, pTarget);
return 0;
@@ -1183,9 +1233,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_KILL_CHAR_ANY_MEANS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_KILL_CHAR_ANY_MEANS, pTarget);
return 0;
@@ -1193,9 +1243,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTarget = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_KILL_CHAR_ANY_MEANS, pTarget);
return 0;
@@ -1204,9 +1254,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE, pTarget);
return 0;
@@ -1215,9 +1265,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTarget = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE, pTarget);
return 0;
@@ -1225,9 +1275,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS, pTarget);
return 0;
@@ -1235,9 +1285,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTarget = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS, pTarget);
return 0;
@@ -1245,9 +1295,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_GOTO_CHAR_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_GOTO_CHAR_ON_FOOT, pTarget);
return 0;
@@ -1255,9 +1305,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_GOTO_PLAYER_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTarget = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_GOTO_CHAR_ON_FOOT, pTarget);
return 0;
@@ -1265,9 +1315,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_LEAVE_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_LEAVE_CAR, pVehicle);
return 0;
@@ -1275,9 +1325,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_PASSENGER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_PASSENGER, pVehicle);
return 0;
@@ -1285,9 +1335,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, pVehicle);
return 0;
@@ -1297,9 +1347,9 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_DESTROY_OBJECT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_DESTROY_OBJECT, pObject);
return 0;
@@ -1307,30 +1357,29 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_DESTROY_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_DESTROY_CAR, pVehicle);
return 0;
}
- /*
case COMMAND_SET_CHAR_OBJ_GOTO_AREA_ON_FOOT:
{
CollectParameters(&m_nIp, 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- float infX = *(float*)&ScriptParams[1];
- float infY = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
+ float infX = GET_FLOAT_PARAM(1);
+ float infY = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
@@ -1341,32 +1390,31 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
pPed->SetObjective(OBJECTIVE_GOTO_AREA_ON_FOOT, pos, radius);
return 0;
}
- */
//case COMMAND_SET_CHAR_OBJ_GOTO_AREA_IN_CAR:
//case COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET:
//case COMMAND_SET_CHAR_OBJ_GUARD_ATTACK:
case COMMAND_SET_CHAR_AS_LEADER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->SetObjective(OBJECTIVE_SET_LEADER, pTarget);
return 0;
}
case COMMAND_SET_PLAYER_AS_LEADER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTarget = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
pPed->SetObjective(OBJECTIVE_SET_LEADER, pTarget);
return 0;
}
case COMMAND_LEAVE_GROUP:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->ClearLeader();
return 0;
@@ -1374,60 +1422,66 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SET_CHAR_OBJ_FOLLOW_ROUTE:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
- pPed->SetObjective(OBJECTIVE_FOLLOW_ROUTE, ScriptParams[1], ScriptParams[2]);
+ pPed->SetObjective(OBJECTIVE_FOLLOW_ROUTE, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_ADD_ROUTE_POINT:
{
CollectParameters(&m_nIp, 4);
- CRouteNode::AddRoutePoint(ScriptParams[0], *(CVector*)&ScriptParams[1]);
+ CRouteNode::AddRoutePoint(GET_INTEGER_PARAM(0), GET_VECTOR_PARAM(1));
return 0;
}
case COMMAND_PRINT_WITH_NUMBER_BIG:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 3);
- CMessages::AddBigMessageWithNumber(text, ScriptParams[1], ScriptParams[2] - 1, ScriptParams[0], -1, -1, -1, -1, -1);
+ CMessages::AddBigMessageWithNumber(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2) - 1, GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1);
return 0;
}
case COMMAND_PRINT_WITH_NUMBER:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 3);
- CMessages::AddMessageWithNumber(text, ScriptParams[1], ScriptParams[2], ScriptParams[0], -1, -1, -1, -1, -1);
+ CMessages::AddMessageWithNumber(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1);
return 0;
}
case COMMAND_PRINT_WITH_NUMBER_NOW:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 3);
- CMessages::AddMessageJumpQWithNumber(text, ScriptParams[1], ScriptParams[2], ScriptParams[0], -1, -1, -1, -1, -1);
+ CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1); // 1
+ return 0;
+ }
+ case COMMAND_PRINT_WITH_NUMBER_SOON:
+ {
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 3);
+ CMessages::AddMessageSoonWithNumber(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1);
return 0;
}
- //case COMMAND_PRINT_WITH_NUMBER_SOON:
case COMMAND_SWITCH_ROADS_ON:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
- if (infX > supX){
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
+ if (infX > supX) {
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
- if (infY > supY){
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ if (infY > supY) {
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
- if (infZ > supZ){
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ if (infZ > supZ) {
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
ThePaths.SwitchRoadsOffInArea(infX, supX, infY, supY, infZ, supZ, false);
return 0;
@@ -1435,23 +1489,23 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_SWITCH_ROADS_OFF:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
ThePaths.SwitchRoadsOffInArea(infX, supX, infY, supY, infZ, supZ, true);
return 0;
@@ -1459,85 +1513,83 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_GET_NUMBER_OF_PASSENGERS:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- ScriptParams[0] = pVehicle->m_nNumPassengers;
+ SET_INTEGER_PARAM(0, pVehicle->m_nNumPassengers);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_MAXIMUM_NUMBER_OF_PASSENGERS:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- ScriptParams[0] = pVehicle->m_nNumMaxPassengers;
+ SET_INTEGER_PARAM(0, pVehicle->m_nNumMaxPassengers);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CAR_DENSITY_MULTIPLIER:
{
CollectParameters(&m_nIp, 1);
- CCarCtrl::CarDensityMultiplier = *(float*)&ScriptParams[0];
+ CCarCtrl::CarDensityMultiplier = GET_FLOAT_PARAM(0);
return 0;
}
case COMMAND_SET_CAR_HEAVY:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- if (ScriptParams[1] != 0) {
+ if (GET_INTEGER_PARAM(1) != 0) {
pVehicle->bIsHeavy = true;
- pVehicle->m_fMass = 3.0f * pVehicle->pHandling->fMass;
- pVehicle->m_fTurnMass = 5.0f * pVehicle->pHandling->fTurnMass;
+ pVehicle->m_fMass = 3.0f * pVehicle->pHandling->fMass; // TODO: tHandlingData::GetMass()
+ pVehicle->m_fTurnMass = 5.0f * pVehicle->pHandling->fTurnMass; // TODO: tHandlingData::GetTurnMass()
}
else {
pVehicle->bIsHeavy = false;
- pVehicle->m_fMass = pVehicle->pHandling->fMass;
- pVehicle->m_fTurnMass = pVehicle->pHandling->fTurnMass;
+ pVehicle->m_fMass = pVehicle->pHandling->fMass; // TODO: tHandlingData::GetMass()
+ pVehicle->m_fTurnMass = pVehicle->pHandling->fTurnMass; // TODO: tHandlingData::GetTurnMass()
}
return 0;
}
case COMMAND_CLEAR_CHAR_THREAT_SEARCH:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->m_fearFlags = 0;
return 0;
}
- /*
case COMMAND_ACTIVATE_CRANE:
{
CollectParameters(&m_nIp, 10);
- float infX = *(float*)&ScriptParams[2];
- float infY = *(float*)&ScriptParams[3];
- float supX = *(float*)&ScriptParams[4];
- float supY = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(2);
+ float infY = GET_FLOAT_PARAM(3);
+ float supX = GET_FLOAT_PARAM(4);
+ float supY = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[4];
- supX = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(4);
+ supX = GET_FLOAT_PARAM(2);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[5];
- supY = *(float*)&ScriptParams[3];
+ infY = GET_FLOAT_PARAM(5);
+ supY = GET_FLOAT_PARAM(3);
}
CCranes::ActivateCrane(infX, supX, infY, supY,
- *(float*)&ScriptParams[6], *(float*)&ScriptParams[7], *(float*)&ScriptParams[8],
- DEGTORAD(*(float*)&ScriptParams[9]), false, false,
- *(float*)&ScriptParams[0], *(float*)&ScriptParams[1]);
+ GET_FLOAT_PARAM(6), GET_FLOAT_PARAM(7), GET_FLOAT_PARAM(8),
+ DEGTORAD(GET_FLOAT_PARAM(9)), false, false,
+ GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
return 0;
}
case COMMAND_DEACTIVATE_CRANE:
{
CollectParameters(&m_nIp, 2);
- CCranes::DeActivateCrane(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1]);
+ CCranes::DeActivateCrane(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
return 0;
}
- */
case COMMAND_SET_MAX_WANTED_LEVEL:
{
CollectParameters(&m_nIp, 1);
- CWanted::SetMaximumWantedLevel(ScriptParams[0]);
+ CWanted::SetMaximumWantedLevel(GET_INTEGER_PARAM(0));
return 0;
}
//case COMMAND_SAVE_VAR_INT:
@@ -1545,7 +1597,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
case COMMAND_IS_CAR_IN_AIR_PROPER:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(pVehicle->m_nCollisionRecords == 0);
return 0;
diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp
index f831645e..9d66b4fe 100644
--- a/src/control/Script3.cpp
+++ b/src/control/Script3.cpp
@@ -6,6 +6,7 @@
#include "Boat.h"
#include "CarCtrl.h"
#include "Clock.h"
+#include "ColStore.h"
#include "Coronas.h"
#include "Cranes.h"
#include "CutsceneMgr.h"
@@ -36,23 +37,25 @@
#include "Bike.h"
#include "Wanted.h"
+// LCS: file done except TODOs
+
int8 CRunningScript::ProcessCommands500To599(int32 command)
{
switch (command) {
case COMMAND_IS_CAR_UPSIDEDOWN:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(pVehicle->GetUp().z <= -0.97f);
+ UpdateCompareFlag(pVehicle->GetUp().z <= UPSIDEDOWN_UP_THRESHOLD);
return 0;
}
case COMMAND_GET_PLAYER_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pPed));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -62,9 +65,9 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_SET_POLICE_IGNORE_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pPed->m_pWanted->m_bIgnoredByCops = true;
CWorld::StopAllLawEnforcersInTheirTracks();
}
@@ -78,8 +81,8 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 4);
- CUserDisplay::Pager.AddMessageWithNumber(text, ScriptParams[0], -1, -1, -1, -1, -1,
- ScriptParams[1], ScriptParams[2], ScriptParams[3]);
+ CUserDisplay::Pager.AddMessageWithNumber(text, GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1,
+ GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
return 0;
}
*/
@@ -87,21 +90,21 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 8);
- CDarkel::StartFrenzy((eWeaponType)ScriptParams[0], ScriptParams[1], ScriptParams[2],
- ScriptParams[3], text, ScriptParams[4], ScriptParams[5],
- ScriptParams[6], ScriptParams[7] != 0, false);
+ CDarkel::StartFrenzy((eWeaponType)GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2),
+ GET_INTEGER_PARAM(3), text, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5),
+ GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7) != 0, false);
return 0;
}
case COMMAND_READ_KILL_FRENZY_STATUS:
{
- ScriptParams[0] = CDarkel::ReadStatus();
+ SET_INTEGER_PARAM(0, CDarkel::ReadStatus());
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SQRT:
{
CollectParameters(&m_nIp, 1);
- *(float*)&ScriptParams[0] = Sqrt(*(float*)&ScriptParams[0]);
+ SET_FLOAT_PARAM(0, Sqrt(GET_FLOAT_PARAM(0)));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -123,44 +126,40 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
return 0;
case COMMAND_GENERATE_RANDOM_FLOAT_IN_RANGE:
CollectParameters(&m_nIp, 2);
- *(float*)&ScriptParams[0] = CGeneral::GetRandomNumberInRange(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1]);
+ SET_FLOAT_PARAM(0, CGeneral::GetRandomNumberInRange(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1)));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_GENERATE_RANDOM_INT_IN_RANGE:
CollectParameters(&m_nIp, 2);
- ScriptParams[0] = CGeneral::GetRandomNumberInRange(ScriptParams[0], ScriptParams[1]);
+ SET_INTEGER_PARAM(0, CGeneral::GetRandomNumberInRange(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_LOCK_CAR_DOORS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->m_nDoorLock = (eCarLock)ScriptParams[1];
+ pVehicle->m_nDoorLock = (eCarLock)GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_EXPLODE_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
+ pVehicle->bCanBeDamaged = true;
pVehicle->BlowUpCar(nil);
return 0;
}
case COMMAND_ADD_EXPLOSION:
CollectParameters(&m_nIp, 4);
-#ifdef SIMPLER_MISSIONS
- if (!CGeneral::faststricmp(m_abScriptName, "hait2"))
- CExplosion::AddExplosion(nil, nil, (eExplosionType)ScriptParams[3], *(CVector*)&ScriptParams[0], 0, true, 11.25f);
- else
-#endif
- CExplosion::AddExplosion(nil, nil, (eExplosionType)ScriptParams[3], *(CVector*)&ScriptParams[0], 0, true);
+ CExplosion::AddExplosion(nil, nil, (eExplosionType)GET_INTEGER_PARAM(3), GET_VECTOR_PARAM(0), 0, true); // last argument is 0 (default? - TODO)
return 0;
case COMMAND_IS_CAR_UPRIGHT:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(pVehicle->GetUp().z >= 0.0f);
return 0;
@@ -168,8 +167,8 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_TURN_CHAR_TO_FACE_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pSourcePed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pSourcePed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
CVehicle* pVehicle = pSourcePed->bInVehicle ? pSourcePed->m_pMyVehicle : nil;
CVector2D sourcePos = pSourcePed->bInVehicle ? pVehicle->GetPosition() : pSourcePed->GetPosition();
CVector2D targetPos = pTargetPed->bInVehicle ? pTargetPed->m_pMyVehicle->GetPosition() : pTargetPed->GetPosition();
@@ -186,8 +185,8 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_TURN_CHAR_TO_FACE_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPed* pSourcePed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CPed* pTargetPed = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pSourcePed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pTargetPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
CVehicle* pVehicle = pSourcePed->bInVehicle ? pSourcePed->m_pMyVehicle : nil;
CVector2D sourcePos = pSourcePed->bInVehicle ? pVehicle->GetPosition() : pSourcePed->GetPosition();
CVector2D targetPos = pTargetPed->bInVehicle ? pTargetPed->m_pMyVehicle->GetPosition() : pTargetPed->GetPosition();
@@ -204,8 +203,8 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_TURN_PLAYER_TO_FACE_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pSourcePed = CWorld::Players[ScriptParams[0]].m_pPed;
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pSourcePed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
CVehicle* pVehicle = pSourcePed->bInVehicle ? pSourcePed->m_pMyVehicle : nil;
CVector2D sourcePos = pSourcePed->bInVehicle ? pVehicle->GetPosition() : pSourcePed->GetPosition();
CVector2D targetPos = pTargetPed->bInVehicle ? pTargetPed->m_pMyVehicle->GetPosition() : pTargetPed->GetPosition();
@@ -222,11 +221,11 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_SET_CHAR_OBJ_GOTO_COORD_ON_FOOT:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVector target;
- target.x = *(float*)&ScriptParams[1];
- target.y = *(float*)&ScriptParams[2];
+ target.x = GET_FLOAT_PARAM(1);
+ target.y = GET_FLOAT_PARAM(2);
target.z = CWorld::FindGroundZForCoord(target.x, target.y);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_GOTO_AREA_ON_FOOT, target);
@@ -236,63 +235,61 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_CREATE_PICKUP:
{
CollectParameters(&m_nIp, 5);
- int16 model = ScriptParams[0];
+ int16 model = GET_INTEGER_PARAM(0);
if (model < 0)
model = CTheScripts::UsedObjectArray[-model].index;
- CVector pos = *(CVector*)&ScriptParams[2];
+ CVector pos = GET_VECTOR_PARAM(2);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, model, ScriptParams[1], 0);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, model, GET_INTEGER_PARAM(1), 0));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_HAS_PICKUP_BEEN_COLLECTED:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CPickups::IsPickUpPickedUp(ScriptParams[0]) != 0);
+ UpdateCompareFlag(CPickups::IsPickUpPickedUp(GET_INTEGER_PARAM(0)) != 0);
return 0;
case COMMAND_REMOVE_PICKUP:
CollectParameters(&m_nIp, 1);
- CPickups::RemovePickUp(ScriptParams[0]);
+ CPickups::RemovePickUp(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_SET_TAXI_LIGHTS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
- ((CAutomobile*)pVehicle)->SetTaxiLight(ScriptParams[1] != 0);
+ ((CAutomobile*)pVehicle)->SetTaxiLight(GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_PRINT_BIG_Q:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
- CMessages::AddBigMessageQ(text, ScriptParams[0], ScriptParams[1] - 1);
+ CMessages::AddBigMessageQ(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1) - 1);
return 0;
}
- /*
case COMMAND_PRINT_WITH_NUMBER_BIG_Q:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 3);
- CMessages::AddBigMessageWithNumberQ(text, ScriptParams[1], ScriptParams[2] - 1,
- ScriptParams[0], -1, -1, -1, -1, -1);
+ CMessages::AddBigMessageWithNumberQ(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2) - 1,
+ GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1);
return 0;
}
- */
case COMMAND_SET_GARAGE:
{
CollectParameters(&m_nIp, 9);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float X2 = *(float*)&ScriptParams[3];
- float Y2 = *(float*)&ScriptParams[4];
- float supX = *(float*)&ScriptParams[5];
- float supY = *(float*)&ScriptParams[6];
- float supZ = *(float*)&ScriptParams[7];
- ScriptParams[0] = CGarages::AddOne(infX, infY, infZ, X2, Y2, supX, supY, supZ, ScriptParams[8], 0);
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float X2 = GET_FLOAT_PARAM(3);
+ float Y2 = GET_FLOAT_PARAM(4);
+ float supX = GET_FLOAT_PARAM(5);
+ float supY = GET_FLOAT_PARAM(6);
+ float supZ = GET_FLOAT_PARAM(7);
+ SET_INTEGER_PARAM(0, CGarages::AddOne(infX, infY, infZ, X2, Y2, supX, supY, supZ, GET_INTEGER_PARAM(8), 0));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -300,15 +297,15 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_SET_GARAGE_WITH_CAR_MODEL:
{
CollectParameters(&m_nIp, 10);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float X2 = *(float*)&ScriptParams[3];
- float Y2 = *(float*)&ScriptParams[4];
- float supX = *(float*)&ScriptParams[5];
- float supY = *(float*)&ScriptParams[6];
- float supZ = *(float*)&ScriptParams[7];
- ScriptParams[0] = CGarages::AddOne(infX, infY, infZ, X2, Y2, supX, supY, supZ, ScriptParams[8], ScriptParams[9]);
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float X2 = GET_FLOAT_PARAM(3);
+ float Y2 = GET_FLOAT_PARAM(4);
+ float supX = GET_FLOAT_PARAM(5);
+ float supY = GET_FLOAT_PARAM(6);
+ float supZ = GET_FLOAT_PARAM(7);
+ SET_INTEGER_PARAM(0, CGarages::AddOne(infX, infY, infZ, X2, Y2, supX, supY, supZ, GET_INTEGER_PARAM(8), GET_INTEGER_PARAM(9)));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -317,34 +314,33 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
{
CollectParameters(&m_nIp, 2);
CVehicle* pTarget;
- if (ScriptParams[1] >= 0) {
- pTarget = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
- script_assert(pTarget);
+ if (GET_INTEGER_PARAM(1) >= 0) {
+ pTarget = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
}
else {
pTarget = nil;
}
- CGarages::SetTargetCarForMissonGarage(ScriptParams[0], pTarget);
+ CGarages::SetTargetCarForMissonGarage(GET_INTEGER_PARAM(0), pTarget);
return 0;
}
case COMMAND_IS_CAR_IN_MISSION_GARAGE:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CGarages::HasCarBeenDroppedOffYet(ScriptParams[0]));
+ UpdateCompareFlag(CGarages::HasCarBeenDroppedOffYet(GET_INTEGER_PARAM(0)));
return 0;
-/*
case COMMAND_SET_FREE_BOMBS:
CollectParameters(&m_nIp, 1);
- CGarages::SetFreeBombs(ScriptParams[0] != 0);
+ CGarages::SetFreeBombs(GET_INTEGER_PARAM(0) != 0);
return 0;
+ /*
case COMMAND_SET_POWERPOINT:
{
CollectParameters(&m_nIp, 7);
- float f1 = *(float*)&ScriptParams[0];
- float f2 = *(float*)&ScriptParams[1];
- float f3 = *(float*)&ScriptParams[2];
- float f4 = *(float*)&ScriptParams[3];
- float f5 = *(float*)&ScriptParams[4];
- float f6 = *(float*)&ScriptParams[5];
+ float f1 = GET_FLOAT_PARAM(0);
+ float f2 = GET_FLOAT_PARAM(1);
+ float f3 = GET_FLOAT_PARAM(2);
+ float f4 = GET_FLOAT_PARAM(3);
+ float f5 = GET_FLOAT_PARAM(4);
+ float f6 = GET_FLOAT_PARAM(5);
float temp;
if (f1 > f4) {
@@ -365,43 +361,52 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
f6 = temp;
}
- CPowerPoints::GenerateNewOne(f1, f2, f3, f4, f5, f6, *(uint8*)&ScriptParams[6]);
+ CPowerPoints::GenerateNewOne(f1, f2, f3, f4, f5, f6, *(uint8*)&GET_INTEGER_PARAM(6));
return 0;
}
case COMMAND_SET_ALL_TAXI_LIGHTS:
CollectParameters(&m_nIp, 1);
- CAutomobile::SetAllTaxiLights(ScriptParams[0] != 0);
+ CAutomobile::SetAllTaxiLights(GET_INTEGER_PARAM(0) != 0);
return 0;
+ */
case COMMAND_IS_CAR_ARMED_WITH_ANY_BOMB:
{
CollectParameters(&m_nIp, 1);
- CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- script_assert(pCar);
- script_assert(pCar->m_vehType == VEHICLE_TYPE_CAR);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+#ifdef FIX_BUGS
+ if (pVehicle->IsCar())
+ UpdateCompareFlag(((CAutomobile*)pVehicle)->m_bombType != 0);
+ else if (pVehicle->IsBike())
+ UpdateCompareFlag(((CBike*)pVehicle)->m_bombType != 0);
+ else
+ UpdateCompareFlag(false);
+#else
+ CAutomobile* pCar = (CVehicle*)pVehicle;
UpdateCompareFlag(pCar->m_bombType != 0); //TODO: enum
+#endif
return 0;
}
- */
case COMMAND_APPLY_BRAKES_TO_PLAYERS_CAR:
CollectParameters(&m_nIp, 2);
- CPad::GetPad(ScriptParams[0])->bApplyBrakes = (ScriptParams[1] != 0);
+ CPad::GetPad(GET_INTEGER_PARAM(0))->bApplyBrakes = (GET_INTEGER_PARAM(1) != 0);
return 0;
case COMMAND_SET_PLAYER_HEALTH:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- pPed->m_fHealth = Min(ScriptParams[1], CWorld::Players[ScriptParams[0]].m_nMaxHealth);
+ pPed->m_fHealth = Min(GET_INTEGER_PARAM(1), CWorld::Players[GET_INTEGER_PARAM(0)].m_nMaxHealth);
return 0;
}
case COMMAND_SET_CHAR_HEALTH:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1]) {
- pPed->m_fHealth = ScriptParams[1];
+ if (GET_INTEGER_PARAM(1)) {
+ pPed->m_fHealth = GET_INTEGER_PARAM(1);
}
else if (pPed->bInVehicle) {
pPed->SetDead();
@@ -409,86 +414,93 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
pPed->FlagToDestroyWhenNextProcessed();
}
else {
- pPed->SetDie();
+ pPed->SetDie(); // last argument = 13 (default? TODO)
}
return 0;
}
case COMMAND_SET_CAR_HEALTH:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->m_fHealth = ScriptParams[1];
+ pVehicle->m_fHealth = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_GET_PLAYER_HEALTH:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- ScriptParams[0] = pPed->m_fHealth;
+ SET_INTEGER_PARAM(0, pPed->m_fHealth);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_CHAR_HEALTH:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- ScriptParams[0] = pPed->m_fHealth;
+ SET_INTEGER_PARAM(0, pPed->m_fHealth);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_CAR_HEALTH:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- ScriptParams[0] = pVehicle->m_fHealth;
+ SET_INTEGER_PARAM(0, pVehicle->m_fHealth);
StoreParameters(&m_nIp, 1);
return 0;
}
- /*
case COMMAND_IS_CAR_ARMED_WITH_BOMB:
{
CollectParameters(&m_nIp, 2);
- CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- script_assert(pCar);
- script_assert(pCar->m_vehType == VEHICLE_TYPE_CAR);
- UpdateCompareFlag(pCar->m_bombType == ScriptParams[1]);
+ CAutomobile* pVehicle = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+#ifdef FIX_BUGS
+ if (pVehicle->IsCar())
+ UpdateCompareFlag(((CAutomobile*)pVehicle)->m_bombType == GET_INTEGER_PARAM(1));
+ else if (pVehicle->IsBike())
+ UpdateCompareFlag(((CBike*)pVehicle)->m_bombType == GET_INTEGER_PARAM(1));
+ else
+ UpdateCompareFlag(false);
+#else
+ CAutomobile* pCar = (CVehicle*)pVehicle;
+ UpdateCompareFlag(pCar->m_bombType != 0); //TODO: enum
+#endif
return 0;
}
- */
case COMMAND_CHANGE_CAR_COLOUR:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- if (ScriptParams[1] >= 256 || ScriptParams[2] >= 256)
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ if (GET_INTEGER_PARAM(1) >= 256 || GET_INTEGER_PARAM(2) >= 256)
debug("CHANGE_CAR_COLOUR - Colours must be less than %d", 256);
- pVehicle->m_currentColour1 = ScriptParams[1];
- pVehicle->m_currentColour2 = ScriptParams[2];
+ pVehicle->m_currentColour1 = GET_INTEGER_PARAM(1);
+ pVehicle->m_currentColour2 = GET_INTEGER_PARAM(2);
return 0;
}
case COMMAND_SWITCH_PED_ROADS_ON:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
ThePaths.SwitchPedRoadsOffInArea(infX, supX, infY, supY, infZ, supZ, false);
return 0;
@@ -496,23 +508,23 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_SWITCH_PED_ROADS_OFF:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
ThePaths.SwitchPedRoadsOffInArea(infX, supX, infY, supY, infZ, supZ, true);
return 0;
@@ -520,20 +532,20 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_CHAR_LOOK_AT_CHAR_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pSourcePed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pSourcePed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pSourcePed);
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTargetPed);
- pSourcePed->SetLookFlag(pTargetPed, true);
+ pSourcePed->SetLookFlag(pTargetPed, true, true);
pSourcePed->SetLookTimer(60000);
return 0;
}
case COMMAND_CHAR_LOOK_AT_PLAYER_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pSourcePed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pSourcePed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pSourcePed);
- CPed* pTargetPed = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pTargetPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
script_assert(pTargetPed);
pSourcePed->SetLookFlag(pTargetPed, true);
pSourcePed->SetLookTimer(60000);
@@ -542,9 +554,9 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_PLAYER_LOOK_AT_CHAR_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pSourcePed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pSourcePed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pSourcePed);
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTargetPed);
pSourcePed->SetLookFlag(pTargetPed, true);
pSourcePed->SetLookTimer(60000);
@@ -553,7 +565,7 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_STOP_CHAR_LOOKING:
{
CollectParameters(&m_nIp, 1);
- CPed* pSourcePed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pSourcePed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pSourcePed);
pSourcePed->ClearLookFlag();
pSourcePed->bKeepTryingToLook = false;
@@ -564,7 +576,7 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_STOP_PLAYER_LOOKING:
{
CollectParameters(&m_nIp, 1);
- CPed* pSourcePed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pSourcePed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pSourcePed);
pSourcePed->ClearLookFlag();
pSourcePed->bKeepTryingToLook = false;
@@ -575,7 +587,7 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
/*
case COMMAND_SWITCH_HELICOPTER:
CollectParameters(&m_nIp, 1);
- CHeli::ActivateHeli(ScriptParams[0] != 0);
+ CHeli::ActivateHeli(GET_INTEGER_PARAM(0) != 0);
return 0;
*/
//case COMMAND_SET_GANG_ATTITUDE:
@@ -583,33 +595,33 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
//case COMMAND_SET_GANG_PLAYER_ATTITUDE:
case COMMAND_SET_GANG_PED_MODELS:
CollectParameters(&m_nIp, 3);
- CGangs::SetGangPedModels(ScriptParams[0], ScriptParams[1], ScriptParams[2]);
+ CGangs::SetGangPedModels(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
case COMMAND_SET_GANG_CAR_MODEL:
CollectParameters(&m_nIp, 2);
- CGangs::SetGangVehicleModel(ScriptParams[0], ScriptParams[1]);
+ CGangs::SetGangVehicleModel(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_SET_GANG_WEAPONS:
CollectParameters(&m_nIp, 3);
- CGangs::SetGangWeapons(ScriptParams[0], (eWeaponType)ScriptParams[1], (eWeaponType)ScriptParams[2]);
+ CGangs::SetGangWeapons(GET_INTEGER_PARAM(0), (eWeaponType)GET_INTEGER_PARAM(1), (eWeaponType)GET_INTEGER_PARAM(2));
return 0;
/*
case COMMAND_SET_CHAR_OBJ_RUN_TO_AREA:
{
CollectParameters(&m_nIp, 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- float infX = *(float*)&ScriptParams[1];
- float infY = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
+ float infX = GET_FLOAT_PARAM(1);
+ float infY = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
@@ -624,11 +636,11 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_SET_CHAR_OBJ_RUN_TO_COORD:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVector pos;
- pos.x = *(float*)&ScriptParams[1];
- pos.y = *(float*)&ScriptParams[2];
+ pos.x = GET_FLOAT_PARAM(1);
+ pos.y = GET_FLOAT_PARAM(2);
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_RUN_TO_AREA, pos);
@@ -638,9 +650,9 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_IS_PLAYER_TOUCHING_OBJECT_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
bool isTouching = false;
if (pPed->bInVehicle)
isTouching = false;
@@ -652,9 +664,9 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
case COMMAND_IS_CHAR_TOUCHING_OBJECT_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
bool isTouching = false;
if (pPed->InVehicle())
isTouching = false;
@@ -671,119 +683,137 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
strncpy(name, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++)
name[i] = tolower(name[i]);
- CStreaming::RequestSpecialChar(ScriptParams[0] - 1, name, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ CStreaming::RequestSpecialChar(GET_INTEGER_PARAM(0) - 1, name, STREAMFLAGS_DEPENDENCY | (m_bIsMissionScript ? STREAMFLAGS_SCRIPTOWNED : STREAMFLAGS_AMBIENT_SCRIPT_OWNED));
m_nIp += KEY_LENGTH_IN_SCRIPT;
return 0;
}
case COMMAND_HAS_SPECIAL_CHARACTER_LOADED:
{
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CStreaming::HasSpecialCharLoaded(ScriptParams[0] - 1));
+ UpdateCompareFlag(CStreaming::HasSpecialCharLoaded(GET_INTEGER_PARAM(0) - 1));
return 0;
}
/*
case COMMAND_FLASH_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bHasBlip = (ScriptParams[1] != 0);
+ pVehicle->bHasBlip = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_FLASH_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bHasBlip = (ScriptParams[1] != 0);
+ pPed->bHasBlip = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_FLASH_OBJECT:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->bHasBlip = (ScriptParams[1] != 0);
+ pObject->bHasBlip = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
*/
case COMMAND_IS_PLAYER_IN_REMOTE_MODE:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].IsPlayerInRemoteMode());
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].IsPlayerInRemoteMode());
return 0;
- /*
case COMMAND_ARM_CAR_WITH_BOMB:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
- ((CAutomobile*)pVehicle)->m_bombType = ScriptParams[1];
+#ifdef FIX_BUGS
+ if (pVehicle->IsCar()) {
+ ((CAutomobile*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
+ ((CAutomobile*)pVehicle)->m_pBombRigger = FindPlayerPed();
+ }
+ else if (pVehicle->IsBike()) {
+ ((CBike*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
+ ((CBike*)pVehicle)->m_pBombRigger = FindPlayerPed();
+ }
+#else
+ ((CAutomobile*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
((CAutomobile*)pVehicle)->m_pBombRigger = FindPlayerPed();
+#endif
return 0;
}
- */
case COMMAND_SET_CHAR_PERSONALITY:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->SetPedStats((ePedStats)ScriptParams[1]);
+ pPed->SetPedStats((ePedStats)GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_SET_CUTSCENE_OFFSET:
CollectParameters(&m_nIp, 3);
- CCutsceneMgr::SetCutsceneOffset(*(CVector*)&ScriptParams[0]);
+ CCutsceneMgr::SetCutsceneOffset(GET_VECTOR_PARAM(0));
return 0;
case COMMAND_SET_ANIM_GROUP_FOR_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->m_animGroup = (AssocGroupId)ScriptParams[1];
+ pPed->m_animGroup = (AssocGroupId)GET_INTEGER_PARAM(1);
+ pPed->bOverrideMoveAnim = false;
return 0;
}
/*
case COMMAND_SET_ANIM_GROUP_FOR_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- pPed->m_animGroup = (AssocGroupId)ScriptParams[1];
+ pPed->m_animGroup = (AssocGroupId)GET_INTEGER_PARAM(1);
return 0;
}
*/
case COMMAND_REQUEST_MODEL:
{
CollectParameters(&m_nIp, 1);
- int model = ScriptParams[0];
+ int model = GET_INTEGER_PARAM(0);
if (model < 0)
model = CTheScripts::UsedObjectArray[-model].index;
- CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_NOFADE | STREAMFLAGS_SCRIPTOWNED);
+ CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_NOFADE | (m_bIsMissionScript ? STREAMFLAGS_SCRIPTOWNED : STREAMFLAGS_AMBIENT_SCRIPT_OWNED));
+ if (model == MI_MINIGUN)
+#ifdef FIX_BUGS
+ CStreaming::RequestModel(MI_MINIGUN2, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_NOFADE | (m_bIsMissionScript ? STREAMFLAGS_SCRIPTOWNED : STREAMFLAGS_AMBIENT_SCRIPT_OWNED));
+#else
+ CStreaming::RequestModel(MI_MINIGUN2, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_NOFADE | STREAMFLAGS_SCRIPTOWNED);
+#endif
return 0;
}
case COMMAND_HAS_MODEL_LOADED:
{
CollectParameters(&m_nIp, 1);
- int model = ScriptParams[0];
+ int model = GET_INTEGER_PARAM(0);
if (model < 0)
model = CTheScripts::UsedObjectArray[-model].index;
- UpdateCompareFlag(CStreaming::HasModelLoaded(model));
+ UpdateCompareFlag(CStreaming::HasModelLoaded(model)/* || cWorldStream::Instance()->pDynamic(model, 0) */); // TODO
return 0;
}
case COMMAND_MARK_MODEL_AS_NO_LONGER_NEEDED:
{
CollectParameters(&m_nIp, 1);
- int model = ScriptParams[0];
+ int model = GET_INTEGER_PARAM(0);
if (model < 0)
model = CTheScripts::UsedObjectArray[-model].index;
- CStreaming::SetMissionDoesntRequireModel(model);
+ if (m_bIsMissionScript)
+ CStreaming::SetMissionDoesntRequireModel(model);
+ else
+ CStreaming::SetAmbientMissionDoesntRequireModel(model);
return 0;
}
case COMMAND_GRAB_PHONE:
{
CollectParameters(&m_nIp, 2);
- ScriptParams[0] = gPhoneInfo.GrabPhone(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1]);
+ SET_INTEGER_PARAM(0, gPhoneInfo.GrabPhone(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1)));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -792,80 +822,85 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
{
CollectParameters(&m_nIp, 1);
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_Repeatedly(ScriptParams[0], text, nil, nil, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_Repeatedly(GET_INTEGER_PARAM(0), text, nil, nil, nil, nil, nil);
return 0;
}
case COMMAND_SET_PHONE_MESSAGE:
{
CollectParameters(&m_nIp, 1);
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], text, nil, nil, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), text, nil, nil, nil, nil, nil);
return 0;
}
case COMMAND_HAS_PHONE_DISPLAYED_MESSAGE:
{
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(gPhoneInfo.HasMessageBeenDisplayed(ScriptParams[0]));
+ UpdateCompareFlag(gPhoneInfo.HasMessageBeenDisplayed(GET_INTEGER_PARAM(0)));
return 0;
}
*/
case COMMAND_TURN_PHONE_OFF:
{
CollectParameters(&m_nIp, 1);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], nil, nil, nil, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), nil, nil, nil, nil, nil, nil);
return 0;
}
case COMMAND_DRAW_CORONA:
{
+ uint32 ip = m_nIp;
+ int32* ptr = GetPointerToScriptVariable(&ip, 0);
CollectParameters(&m_nIp, 9);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CCoronas::RegisterCorona((uintptr)this + m_nIp, ScriptParams[6], ScriptParams[7], ScriptParams[8],
- 255, pos, *(float*)&ScriptParams[3], 450.0f, ScriptParams[4], ScriptParams[5], 1, 0, 0, 0.0f);
+ CCoronas::RegisterCorona((uintptr)ptr, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8),
+ 255, pos, -GET_FLOAT_PARAM(3), 450.0f, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), 1, 0, 0, 0.0f);
return 0;
}
+ /*
case COMMAND_DRAW_LIGHT:
{
CollectParameters(&m_nIp, 6);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
CVector unused(0.0f, 0.0f, 0.0f);
- CPointLights::AddLight(0, *(CVector*)&ScriptParams[0], CVector(0.0f, 0.0f, 0.0f), 12.0f,
- ScriptParams[3] / 255.0f, ScriptParams[4] / 255.0f, ScriptParams[5] / 255.0f, 0, true);
+ CPointLights::AddLight(0, GET_VECTOR_PARAM(0), CVector(0.0f, 0.0f, 0.0f), 12.0f,
+ GET_INTEGER_PARAM(3) / 255.0f, GET_INTEGER_PARAM(4) / 255.0f, GET_INTEGER_PARAM(5) / 255.0f, 0, true);
return 0;
}
- //case COMMAND_STORE_WEATHER:
- //case COMMAND_RESTORE_WEATHER:
+ */
+ case COMMAND_STORE_WEATHER:
+ CWeather::StoreWeatherState();
+ return 0;
+ case COMMAND_RESTORE_WEATHER:
+ CWeather::RestoreWeatherState();
case COMMAND_STORE_CLOCK:
CClock::StoreClock();
return 0;
case COMMAND_RESTORE_CLOCK:
CClock::RestoreClock();
return 0;
- /*
case COMMAND_RESTART_CRITICAL_MISSION:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CRestart::OverrideNextRestart(pos, *(float*)&ScriptParams[3]);
+ CRestart::OverrideNextRestart(pos, GET_FLOAT_PARAM(3));
if (CWorld::Players[CWorld::PlayerInFocus].m_WBState != WBSTATE_PLAYING)
printf("RESTART_CRITICAL_MISSION - Player state is not PLAYING\n");
CWorld::Players[CWorld::PlayerInFocus].PlayerFailedCriticalMission();
return 0;
}
- */
case COMMAND_IS_PLAYER_PLAYING:
{
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CWorld::Players[ScriptParams[0]].m_WBState == WBSTATE_PLAYING);
+ UpdateCompareFlag(CWorld::Players[GET_INTEGER_PARAM(0)].m_WBState == WBSTATE_PLAYING);
return 0;
}
#ifdef GTA_SCRIPT_COLLECTIVE
case COMMAND_SET_COLL_OBJ_NO_OBJ:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_NONE);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_NONE);
return 0;
#endif
default:
@@ -880,134 +915,134 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
#ifdef GTA_SCRIPT_COLLECTIVE
case COMMAND_SET_COLL_OBJ_WAIT_ON_FOOT:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_WAIT_ON_FOOT);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_WAIT_ON_FOOT);
return 0;
case COMMAND_SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_FLEE_ON_FOOT_TILL_SAFE);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_FLEE_ON_FOOT_TILL_SAFE);
return 0;
case COMMAND_SET_COLL_OBJ_GUARD_SPOT:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GUARD_AREA, pos);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GUARD_AREA, pos);
return 0;
}
case COMMAND_SET_COLL_OBJ_GUARD_AREA:
{
CollectParameters(&m_nIp, 5);
- float infX = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(3);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
- float infY = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[4];
+ float infY = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(4);
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
pos.y = (infY + supY) / 2;
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
float radius = Max(pos.x - infX, pos.y - infY);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GUARD_AREA, pos, radius);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GUARD_AREA, pos, radius);
return 0;
}
case COMMAND_SET_COLL_OBJ_WAIT_IN_CAR:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_WAIT_IN_CAR);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_WAIT_IN_CAR);
return 0;
case COMMAND_SET_COLL_OBJ_KILL_CHAR_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_KILL_CHAR_ON_FOOT, pPed);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_KILL_CHAR_ON_FOOT, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_KILL_PLAYER_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[1]].m_pPed;
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_KILL_CHAR_ON_FOOT, pPed);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_KILL_CHAR_ON_FOOT, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_KILL_CHAR_ANY_MEANS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_KILL_CHAR_ANY_MEANS, pPed);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_KILL_CHAR_ANY_MEANS, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[1]].m_pPed;
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_KILL_CHAR_ANY_MEANS, pPed);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_KILL_CHAR_ANY_MEANS, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE, pPed);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[1]].m_pPed;
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE, pPed);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS, pPed);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[1]].m_pPed;
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS, pPed);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_FLEE_CHAR_ON_FOOT_ALWAYS, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_GOTO_CHAR_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GOTO_CHAR_ON_FOOT, pPed);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GOTO_CHAR_ON_FOOT, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[1]].m_pPed;
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GOTO_CHAR_ON_FOOT, pPed);
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GOTO_CHAR_ON_FOOT, pPed);
return 0;
}
case COMMAND_SET_COLL_OBJ_LEAVE_CAR:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_LEAVE_CAR);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_LEAVE_CAR);
return 0;
case COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_ENTER_CAR_AS_PASSENGER, pVehicle);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_ENTER_CAR_AS_PASSENGER, pVehicle);
return 0;
}
case COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_DRIVER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_ENTER_CAR_AS_DRIVER, pVehicle);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_ENTER_CAR_AS_DRIVER, pVehicle);
return 0;
}
/*
@@ -1018,31 +1053,31 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
case COMMAND_SET_COLL_OBJ_DESTROY_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_DESTROY_CAR, pVehicle);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_DESTROY_CAR, pVehicle);
return 0;
}
case COMMAND_SET_COLL_OBJ_GOTO_AREA_ON_FOOT:
{
CollectParameters(&m_nIp, 5);
- float infX = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(3);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
- float infY = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[4];
+ float infY = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(4);
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
pos.y = (infY + supY) / 2;
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
float radius = Max(pos.x - infX, pos.y - infY);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GOTO_AREA_ON_FOOT, pos, radius);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GOTO_AREA_ON_FOOT, pos, radius);
return 0;
}
/*
@@ -1052,66 +1087,66 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
*/
case COMMAND_SET_COLL_OBJ_FOLLOW_ROUTE:
CollectParameters(&m_nIp, 3);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_FOLLOW_ROUTE, ScriptParams[1], ScriptParams[2]);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_FOLLOW_ROUTE, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
case COMMAND_SET_COLL_OBJ_GOTO_COORD_ON_FOOT:
{
CollectParameters(&m_nIp, 3);
- CVector pos(*(float*)&ScriptParams[1], *(float*)&ScriptParams[2], CWorld::FindGroundZForCoord(*(float*)&ScriptParams[1], *(float*)&ScriptParams[2]));
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GOTO_AREA_ON_FOOT, pos);
+ CVector pos(GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), CWorld::FindGroundZForCoord(GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2)));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GOTO_AREA_ON_FOOT, pos);
return 0;
}
//case COMMAND_SET_COLL_OBJ_GOTO_COORD_IN_CAR:
case COMMAND_SET_COLL_OBJ_RUN_TO_AREA:
{
CollectParameters(&m_nIp, 5);
- float infX = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(3);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
- float infY = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[4];
+ float infY = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(4);
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
pos.y = (infY + supY) / 2;
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
float radius = Max(pos.x - infX, pos.y - infY);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_RUN_TO_AREA, pos, radius);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_RUN_TO_AREA, pos, radius);
return 0;
}
case COMMAND_SET_COLL_OBJ_RUN_TO_COORD:
{
CollectParameters(&m_nIp, 3);
- CVector pos(*(float*)&ScriptParams[1], *(float*)&ScriptParams[2], CWorld::FindGroundZForCoord(*(float*)&ScriptParams[1], *(float*)&ScriptParams[2]));
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_RUN_TO_AREA, pos);
+ CVector pos(GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), CWorld::FindGroundZForCoord(GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2)));
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_RUN_TO_AREA, pos);
return 0;
}
case COMMAND_ADD_PEDS_IN_AREA_TO_COLL:
{
CollectParameters(&m_nIp, 3);
- float X = *(float*)&ScriptParams[0];
- float Y = *(float*)&ScriptParams[1];
+ float X = GET_FLOAT_PARAM(0);
+ float Y = GET_FLOAT_PARAM(1);
float Z = CWorld::FindGroundZForCoord(X, Y);
- float radius = *(float*)&ScriptParams[2];
- ScriptParams[0] = CTheScripts::AddPedsInAreaToCollective(X, Y, Z, radius);
+ float radius = GET_FLOAT_PARAM(2);
+ SET_INTEGER_PARAM(0, CTheScripts::AddPedsInAreaToCollective(X, Y, Z, radius));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_PEDS_IN_VEHICLE_TO_COLL:
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = CTheScripts::AddPedsInVehicleToCollective(ScriptParams[0]);
+ SET_INTEGER_PARAM(0, CTheScripts::AddPedsInVehicleToCollective(GET_INTEGER_PARAM(0)));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_CLEAR_COLL:
CollectParameters(&m_nIp, 1);
for (int i = 0; i < MAX_NUM_COLLECTIVES; i++) {
- if (CTheScripts::CollectiveArray[i].colIndex == ScriptParams[0]) {
+ if (CTheScripts::CollectiveArray[i].colIndex == GET_INTEGER_PARAM(0)) {
CTheScripts::CollectiveArray[i].colIndex = -1;
CTheScripts::CollectiveArray[i].pedIndex = 0;
}
@@ -1180,7 +1215,7 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
total++;
}
}
- ScriptParams[0] = total;
+ SET_INTEGER_PARAM(0, total);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1188,72 +1223,77 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
case COMMAND_SET_CHAR_HEED_THREATS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bRespondsToThreats = (ScriptParams[1] != 0);
+ pPed->bRespondsToThreats = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_PLAYER_HEED_THREATS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- pPed->bRespondsToThreats = (ScriptParams[1] != 0);
+ pPed->bRespondsToThreats = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_GET_CONTROLLER_MODE:
#if defined(GTA_PC) && !defined(DETECT_PAD_INPUT_SWITCH)
- ScriptParams[0] = 0;
+ SET_INTEGER_PARAM(0, 0);
#else
- ScriptParams[0] = CPad::IsAffectedByController ? CPad::GetPad(0)->Mode : 0;
+ SET_INTEGER_PARAM(0, CPad::IsAffectedByController ? CPad::GetPad(0)->Mode : 0);
#endif
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_SET_CAN_RESPRAY_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
//assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
// they DO call this for bikes, we don't really want to destroy the structure...
#ifdef FIX_BUGS
if (pVehicle->m_vehType == VEHICLE_TYPE_CAR)
#endif
- ((CAutomobile*)pVehicle)->bFixedColour = (ScriptParams[1] == 0);
+ ((CAutomobile*)pVehicle)->bFixedColour = (GET_INTEGER_PARAM(1) == 0);
+#ifdef FIX_BUGS
+ else if (pVehicle->m_vehType == VEHICLE_TYPE_BIKE)
+ ((CBike*)pVehicle)->bFixedColour = (GET_INTEGER_PARAM(1) == 0);
+#endif
return 0;
}
- /*
case COMMAND_IS_TAXI:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(pVehicle->IsTaxi());
return 0;
}
- */
case COMMAND_UNLOAD_SPECIAL_CHARACTER:
CollectParameters(&m_nIp, 1);
- CStreaming::SetMissionDoesntRequireSpecialChar(ScriptParams[0] - 1);
+ if (m_bIsMissionScript)
+ CStreaming::SetMissionDoesntRequireSpecialChar(GET_INTEGER_PARAM(0) - 1);
+ else
+ CStreaming::SetAmbientMissionDoesntRequireSpecialChar(GET_INTEGER_PARAM(0) - 1);
return 0;
case COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER:
CDarkel::ResetModelsKilledByPlayer();
return 0;
case COMMAND_GET_NUM_OF_MODELS_KILLED_BY_PLAYER:
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = CDarkel::QueryModelsKilledByPlayer(ScriptParams[0]);
+ SET_INTEGER_PARAM(0, CDarkel::QueryModelsKilledByPlayer(GET_INTEGER_PARAM(0)));
StoreParameters(&m_nIp, 1);
return 0;
/*
case COMMAND_ACTIVATE_GARAGE:
CollectParameters(&m_nIp, 1);
- CGarages::ActivateGarage(ScriptParams[0]);
+ CGarages::ActivateGarage(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_SWITCH_TAXI_TIMER:
{
CollectParameters(&m_nIp, 1);
- if (ScriptParams[0] != 0){
+ if (GET_INTEGER_PARAM(0) != 0){
CWorld::Players[CWorld::PlayerInFocus].m_nUnusedTaxiTimer = CTimer::GetTimeInMilliseconds();
CWorld::Players[CWorld::PlayerInFocus].m_bUnusedTaxiThing = true;
}else{
@@ -1265,10 +1305,10 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
case COMMAND_CREATE_OBJECT_NO_OFFSET:
{
CollectParameters(&m_nIp, 4);
- int mi = ScriptParams[0] >= 0 ? ScriptParams[0] : CTheScripts::UsedObjectArray[-ScriptParams[0]].index;
+ int mi = GET_INTEGER_PARAM(0) >= 0 ? GET_INTEGER_PARAM(0) : CTheScripts::UsedObjectArray[-GET_INTEGER_PARAM(0)].index;
CObject* pObj = new CObject(mi, false);
; pObj->ObjectCreatedBy = MISSION_OBJECT;
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pObj->SetPosition(pos);
@@ -1280,37 +1320,37 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
pObj->SetupBigBuilding();
CTheScripts::ClearSpaceForMissionEntity(pos, pObj);
CWorld::Add(pObj);
- ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pObj);
+ SET_INTEGER_PARAM(0, CPools::GetObjectPool()->GetIndex(pObj));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_OBJECT);
return 0;
}
- /*
case COMMAND_IS_BOAT:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(pVehicle->m_vehType == VEHICLE_TYPE_BOAT);
+ UpdateCompareFlag(pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
return 0;
}
+ /*
case COMMAND_SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS:
{
CollectParameters(&m_nIp, 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- float infX = *(float*)&ScriptParams[1];
- float infY = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
+ float infX = GET_FLOAT_PARAM(1);
+ float infY = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
@@ -1321,105 +1361,107 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
pPed->SetObjective(OBJECTIVE_GOTO_AREA_ANY_MEANS, pos, radius);
return 0;
}
- */
#ifdef GTA_SCRIPT_COLLECTIVE
case COMMAND_SET_COLL_OBJ_GOTO_AREA_ANY_MEANS:
{
CollectParameters(&m_nIp, 5);
- float infX = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(3);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(1);
}
- float infY = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[4];
+ float infY = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(4);
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(2);
}
CVector pos;
pos.x = (infX + supX) / 2;
pos.y = (infY + supY) / 2;
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
float radius = Max(pos.x - infX, pos.y - infY);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_GOTO_AREA_ANY_MEANS, pos, radius);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_GOTO_AREA_ANY_MEANS, pos, radius);
return 0;
}
#endif
+*/
case COMMAND_IS_PLAYER_STOPPED:
{
CollectParameters(&m_nIp, 1);
- CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
+ CPlayerInfo* pPlayer = &CWorld::Players[GET_INTEGER_PARAM(0)];
UpdateCompareFlag(CTheScripts::IsPlayerStopped(pPlayer));
return 0;
}
- /*
case COMMAND_IS_CHAR_STOPPED:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(CTheScripts::IsPedStopped(pPed));
return 0;
}
case COMMAND_MESSAGE_WAIT:
CollectParameters(&m_nIp, 2);
- m_nWakeTime = CTimer::GetTimeInMilliseconds() + ScriptParams[0];
- if (ScriptParams[1] != 0)
+ m_nWakeTime = CTimer::GetTimeInMilliseconds() + GET_INTEGER_PARAM(0);
+ if (GET_INTEGER_PARAM(1) != 0)
m_bSkipWakeTime = true;
return 1;
+ /*
case COMMAND_ADD_PARTICLE_EFFECT:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CParticleObject::AddObject(ScriptParams[0], pos, ScriptParams[4] != 0);
+ CParticleObject::AddObject(GET_INTEGER_PARAM(0), pos, GET_INTEGER_PARAM(4) != 0);
return 0;
}
*/
case COMMAND_SWITCH_WIDESCREEN:
CollectParameters(&m_nIp, 1);
- if (ScriptParams[0] != 0)
+ if (GET_INTEGER_PARAM(0) != 0)
TheCamera.SetWideScreenOn();
- else
+ else {
+ // TODO(LCS): unknown field
TheCamera.SetWideScreenOff();
+ }
return 0;
/*
case COMMAND_ADD_SPRITE_BLIP_FOR_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int id = CRadar::SetEntityBlip(BLIP_CAR, ScriptParams[0], 0, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[1]);
- ScriptParams[0] = id;
+ int id = CRadar::SetEntityBlip(BLIP_CAR, GET_INTEGER_PARAM(0), 0, BLIP_DISPLAY_BOTH);
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(1));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_SPRITE_BLIP_FOR_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int id = CRadar::SetEntityBlip(BLIP_CHAR, ScriptParams[0], 1, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[1]);
- ScriptParams[0] = id;
+ int id = CRadar::SetEntityBlip(BLIP_CHAR, GET_INTEGER_PARAM(0), 1, BLIP_DISPLAY_BOTH);
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(1));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_SPRITE_BLIP_FOR_OBJECT:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int id = CRadar::SetEntityBlip(BLIP_OBJECT, ScriptParams[0], 6, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[1]);
- ScriptParams[0] = id;
+ int id = CRadar::SetEntityBlip(BLIP_OBJECT, GET_INTEGER_PARAM(0), 6, BLIP_DISPLAY_BOTH);
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(1));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1427,67 +1469,67 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
case COMMAND_ADD_SPRITE_BLIP_FOR_CONTACT_POINT:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int id = CRadar::SetCoordBlip(BLIP_CONTACT_POINT, pos, 2, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[3]);
- ScriptParams[0] = id;
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(3));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_SPRITE_BLIP_FOR_COORD:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- int id = CRadar::SetCoordBlip(BLIP_COORD, pos, 5, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[3]);
- ScriptParams[0] = id;
+ int id = CRadar::SetCoordBlip(BLIP_COORD, pos, 4, BLIP_DISPLAY_BOTH);
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(3));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CHAR_ONLY_DAMAGED_BY_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bOnlyDamagedByPlayer = (ScriptParams[1] != 0);
+ pPed->bOnlyDamagedByPlayer = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_CAR_ONLY_DAMAGED_BY_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bOnlyDamagedByPlayer = (ScriptParams[1] != 0);
+ pVehicle->bOnlyDamagedByPlayer = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_CHAR_PROOFS:
{
CollectParameters(&m_nIp, 6);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bBulletProof = (ScriptParams[1] != 0);
- pPed->bFireProof = (ScriptParams[2] != 0);
- pPed->bExplosionProof = (ScriptParams[3] != 0);
- pPed->bCollisionProof = (ScriptParams[4] != 0);
- pPed->bMeleeProof = (ScriptParams[5] != 0);
+ pPed->bBulletProof = (GET_INTEGER_PARAM(1) != 0);
+ pPed->bFireProof = (GET_INTEGER_PARAM(2) != 0);
+ pPed->bExplosionProof = (GET_INTEGER_PARAM(3) != 0);
+ pPed->bCollisionProof = (GET_INTEGER_PARAM(4) != 0);
+ pPed->bMeleeProof = (GET_INTEGER_PARAM(5) != 0);
return 0;
}
case COMMAND_SET_CAR_PROOFS:
{
CollectParameters(&m_nIp, 6);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bBulletProof = (ScriptParams[1] != 0);
- pVehicle->bFireProof = (ScriptParams[2] != 0);
- pVehicle->bExplosionProof = (ScriptParams[3] != 0);
- pVehicle->bCollisionProof = (ScriptParams[4] != 0);
- pVehicle->bMeleeProof = (ScriptParams[5] != 0);
+ pVehicle->bBulletProof = (GET_INTEGER_PARAM(1) != 0);
+ pVehicle->bFireProof = (GET_INTEGER_PARAM(2) != 0);
+ pVehicle->bExplosionProof = (GET_INTEGER_PARAM(3) != 0);
+ pVehicle->bCollisionProof = (GET_INTEGER_PARAM(4) != 0);
+ pVehicle->bMeleeProof = (GET_INTEGER_PARAM(5) != 0);
return 0;
}
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_2D:
@@ -1507,16 +1549,16 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
/*
case COMMAND_DEACTIVATE_GARAGE:
CollectParameters(&m_nIp, 1);
- CGarages::DeActivateGarage(ScriptParams[0]);
+ CGarages::DeActivateGarage(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE:
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = CGarages::QueryCarsCollected(ScriptParams[0]);
+ SET_INTEGER_PARAM(0, CGarages::QueryCarsCollected(GET_INTEGER_PARAM(0)));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_HAS_CAR_BEEN_TAKEN_TO_GARAGE:
CollectParameters(&m_nIp, 2);
- UpdateCompareFlag(CGarages::HasThisCarBeenCollected(ScriptParams[0], ScriptParams[1] - 1));
+ UpdateCompareFlag(CGarages::HasThisCarBeenCollected(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1) - 1));
return 0;
*/
default:
@@ -1531,54 +1573,55 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
/*
case COMMAND_SET_SWAT_REQUIRED:
CollectParameters(&m_nIp, 1);
- FindPlayerPed()->m_pWanted->m_bSwatRequired = (ScriptParams[0] != 0);
+ FindPlayerPed()->m_pWanted->m_bSwatRequired = (GET_INTEGER_PARAM(0) != 0);
return 0;
case COMMAND_SET_FBI_REQUIRED:
CollectParameters(&m_nIp, 1);
- FindPlayerPed()->m_pWanted->m_bFbiRequired = (ScriptParams[0] != 0);
+ FindPlayerPed()->m_pWanted->m_bFbiRequired = (GET_INTEGER_PARAM(0) != 0);
return 0;
case COMMAND_SET_ARMY_REQUIRED:
CollectParameters(&m_nIp, 1);
- FindPlayerPed()->m_pWanted->m_bArmyRequired = (ScriptParams[0] != 0);
+ FindPlayerPed()->m_pWanted->m_bArmyRequired = (GET_INTEGER_PARAM(0) != 0);
return 0;
*/
case COMMAND_IS_CAR_IN_WATER:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(pVehicle && pVehicle->bIsInWater);
return 0;
}
case COMMAND_GET_CLOSEST_CHAR_NODE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CPathNode* pNode = &ThePaths.m_pathNodes[ThePaths.FindNodeClosestToCoors(pos, 1, 999999.9f, true)];
- *(CVector*)&ScriptParams[0] = pNode->GetPosition();
+ CPathNode* pNode = &ThePaths.m_pathNodes[ThePaths.FindNodeClosestToCoors(pos, 1, 800.0f, true)];
+ SET_VECTOR_PARAM(0, pNode->GetPosition());
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_GET_CLOSEST_CAR_NODE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- *(CVector*)&ScriptParams[0] = ThePaths.FindNodeCoorsForScript(ThePaths.FindNodeClosestToCoors(pos, 0, 999999.9f, true, true));
+ SET_VECTOR_PARAM(0, ThePaths.FindNodeCoorsForScript(ThePaths.FindNodeClosestToCoors(pos, 0, 800.0f, true, true)));
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_CAR_GOTO_COORDINATES_ACCURATE:
{
CollectParameters(&m_nIp, 4);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += pVehicle->GetDistanceFromCentreOfMassToBaseOfModel();
+ uint8 nOldMission = pVehicle->AutoPilot.m_nCarMission;
if (CCarCtrl::JoinCarWithRoadSystemGotoCoors(pVehicle, pos, false))
pVehicle->AutoPilot.m_nCarMission = MISSION_GOTO_COORDS_STRAIGHT_ACCURATE;
else
@@ -1586,19 +1629,20 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
pVehicle->SetStatus(STATUS_PHYSICS);
pVehicle->bEngineOn = true;
pVehicle->AutoPilot.m_nCruiseSpeed = Max(1, pVehicle->AutoPilot.m_nCruiseSpeed);
- pVehicle->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds();
+ if (nOldMission != pVehicle->AutoPilot.m_nCarMission)
+ pVehicle->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds();
return 0;
}
/*
case COMMAND_START_PACMAN_RACE:
CollectParameters(&m_nIp, 1);
- CPacManPickups::StartPacManRace(ScriptParams[0]);
+ CPacManPickups::StartPacManRace(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_START_PACMAN_RECORD:
CPacManPickups::StartPacManRecord();
return 0;
case COMMAND_GET_NUMBER_OF_POWER_PILLS_EATEN:
- ScriptParams[0] = CPacManPickups::QueryPowerPillsEatenInRace();
+ SET_INTEGER_PARAM(0, CPacManPickups::QueryPowerPillsEatenInRace());
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_CLEAR_PACMAN:
@@ -1607,14 +1651,14 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_START_PACMAN_SCRAMBLE:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CPacManPickups::StartPacManScramble(pos, *(float*)&ScriptParams[3], ScriptParams[4]);
+ CPacManPickups::StartPacManScramble(pos, GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4));
return 0;
}
case COMMAND_GET_NUMBER_OF_POWER_PILLS_CARRIED:
- ScriptParams[0] = CPacManPickups::QueryPowerPillsCarriedByPlayer();
+ SET_INTEGER_PARAM(0, CPacManPickups::QueryPowerPillsCarriedByPlayer());
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_CARRIED:
@@ -1624,7 +1668,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_CAR_ON_SCREEN:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(TheCamera.IsSphereVisible(pVehicle->GetBoundCentre(), pVehicle->GetBoundRadius()));
return 0;
@@ -1632,7 +1676,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_CHAR_ON_SCREEN:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(TheCamera.IsSphereVisible(pPed->GetBoundCentre(), pPed->GetBoundRadius()));
return 0;
@@ -1640,67 +1684,65 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_OBJECT_ON_SCREEN:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
UpdateCompareFlag(TheCamera.IsSphereVisible(pObject->GetBoundCentre(), pObject->GetBoundRadius()));
return 0;
}
- /*
case COMMAND_GOSUB_FILE:
{
CollectParameters(&m_nIp, 2);
script_assert(m_nStackPointer < MAX_STACK_DEPTH);
m_anStack[m_nStackPointer++] = m_nIp;
- SetIP(ScriptParams[0]);
- // ScriptParams[1] == filename
+ SetIP(GET_INTEGER_PARAM(0));
+ // GET_INTEGER_PARAM(1) == filename
return 0;
}
- */
case COMMAND_GET_GROUND_Z_FOR_3D_COORD:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
bool success;
- *(float*)&ScriptParams[0] = CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z, &success);
+ SET_FLOAT_PARAM(0, CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z, &success));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_START_SCRIPT_FIRE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- ScriptParams[0] = gFireManager.StartScriptFire(pos, nil, 0.8f, 1);
+ SET_INTEGER_PARAM(0, gFireManager.StartScriptFire(pos, nil, 0.8f, 1));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_SCRIPT_FIRE_EXTINGUISHED:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(gFireManager.IsScriptFireExtinguish(ScriptParams[0]));
+ UpdateCompareFlag(gFireManager.IsScriptFireExtinguish(GET_INTEGER_PARAM(0)));
return 0;
case COMMAND_REMOVE_SCRIPT_FIRE:
CollectParameters(&m_nIp, 1);
- gFireManager.RemoveScriptFire(ScriptParams[0]);
+ gFireManager.RemoveScriptFire(GET_INTEGER_PARAM(0));
return 0;
/*
case COMMAND_SET_COMEDY_CONTROLS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bComedyControls = (ScriptParams[1] != 0);
+ pVehicle->bComedyControls = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
*/
case COMMAND_BOAT_GOTO_COORDS:
{
CollectParameters(&m_nIp, 4);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_BOAT);
CBoat* pBoat = (CBoat*)pVehicle;
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
CWaterLevel::GetWaterLevel(pos.x, pos.y, pos.z, &pos.z, false);
pBoat->AutoPilot.m_nCarMission = MISSION_GOTOCOORDS_ASTHECROWSWIMS;
@@ -1714,7 +1756,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_BOAT_STOP:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_BOAT);
CBoat* pBoat = (CBoat*)pVehicle;
@@ -1727,49 +1769,53 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_PLAYER_SHOOTING_IN_AREA:
{
CollectParameters(&m_nIp, 6);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
UpdateCompareFlag(pPed->bIsShooting && pPed->IsWithinArea(x1, y1, x2, y2));
- if (ScriptParams[5])
+ if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
+ */
return 0;
}
case COMMAND_IS_CHAR_SHOOTING_IN_AREA:
{
CollectParameters(&m_nIp, 6);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- float x1 = *(float*)&ScriptParams[1];
- float y1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
+ float x1 = GET_FLOAT_PARAM(1);
+ float y1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
UpdateCompareFlag(pPed->bIsShooting && pPed->IsWithinArea(x1, y1, x2, y2));
- if (ScriptParams[5])
+ if (GET_INTEGER_PARAM(5))
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, x1, y1, x2, y2, MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag)
CTheScripts::DrawDebugSquare(x1, y1, x2, y2);
+ */
return 0;
}
case COMMAND_IS_CURRENT_PLAYER_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- UpdateCompareFlag(ScriptParams[1] == pPed->GetWeapon()->m_eWeaponType);
+ UpdateCompareFlag(GET_INTEGER_PARAM(1) == pPed->GetWeapon()->m_eWeaponType);
return 0;
}
case COMMAND_IS_CURRENT_CHAR_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- UpdateCompareFlag(ScriptParams[1] == pPed->GetWeapon()->m_eWeaponType);
+ UpdateCompareFlag(GET_INTEGER_PARAM(1) == pPed->GetWeapon()->m_eWeaponType);
return 0;
}
/*
@@ -1779,7 +1825,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_ADD_POWER_PILL:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CPacManPickups::GenerateOnePMPickUp(pos);
@@ -1789,23 +1835,22 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_SET_BOAT_CRUISE_SPEED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_BOAT);
CBoat* pBoat = (CBoat*)pVehicle;
- pBoat->AutoPilot.m_nCruiseSpeed = *(float*)&ScriptParams[1];
+ pBoat->AutoPilot.m_nCruiseSpeed = GET_FLOAT_PARAM(1);
return 0;
}
- /*
case COMMAND_GET_RANDOM_CHAR_IN_AREA:
{
- CollectParameters(&m_nIp, 4);
+ CollectParameters(&m_nIp, 7);
int ped_handle = -1;
CVector pos = FindPlayerCoors();
- float x1 = *(float*)&ScriptParams[0];
- float y1 = *(float*)&ScriptParams[1];
- float x2 = *(float*)&ScriptParams[2];
- float y2 = *(float*)&ScriptParams[3];
+ float x1 = GET_FLOAT_PARAM(0);
+ float y1 = GET_FLOAT_PARAM(1);
+ float x2 = GET_FLOAT_PARAM(2);
+ float y2 = GET_FLOAT_PARAM(3);
int i = CPools::GetPedPool()->GetSize();
while (--i && ped_handle == -1){
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
@@ -1821,9 +1866,9 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
continue;
if (pPed->bFadeOut)
continue;
-// if (pPed->GetModelIndex() == MI_SCUM_WOM || pPed->GetModelIndex() == MI_SCUM_MAN)
-// continue;
- if (!ThisIsAValidRandomPed(pPed->m_nPedType))
+ if (pPed->m_nWaitState != WAITSTATE_FALSE)
+ continue;
+ if (!ThisIsAValidRandomPed(pPed->m_nPedType, GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7)))
continue;
if (pPed->bIsLeader || pPed->m_leader)
continue;
@@ -1841,11 +1886,10 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
}
- ScriptParams[0] = ped_handle;
+ SET_INTEGER_PARAM(0, ped_handle);
StoreParameters(&m_nIp, 1);
return 0;
}
- */
case COMMAND_GET_RANDOM_CHAR_IN_ZONE:
{
char zone[KEY_LENGTH_IN_SCRIPT];
@@ -1874,7 +1918,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
continue;
if (pPed->m_nWaitState != WAITSTATE_FALSE)
continue;
- if (!ThisIsAValidRandomPed(pPed->m_nPedType, ScriptParams[0], ScriptParams[1], ScriptParams[2]))
+ if (!ThisIsAValidRandomPed(pPed->m_nPedType, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2)))
continue;
if (pPed->bIsLeader || pPed->m_leader)
continue;
@@ -1896,14 +1940,14 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
}
- ScriptParams[0] = ped_handle;
+ SET_INTEGER_PARAM(0, ped_handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_PLAYER_IN_TAXI:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->IsTaxi());
return 0;
@@ -1911,7 +1955,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_PLAYER_SHOOTING:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bIsShooting);
return 0;
@@ -1919,7 +1963,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_CHAR_SHOOTING:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bIsShooting);
return 0;
@@ -1927,28 +1971,28 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_CREATE_MONEY_PICKUP:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_MONEY, PICKUP_MONEY, ScriptParams[3]);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_MONEY, PICKUP_MONEY, GET_INTEGER_PARAM(3)));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CHAR_ACCURACY:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->m_wepAccuracy = ScriptParams[1];
+ pPed->m_wepAccuracy = Min(100, GET_INTEGER_PARAM(1) * 1.25f);
return 0;
}
case COMMAND_GET_CAR_SPEED:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- *(float*)&ScriptParams[0] = pVehicle->GetSpeed().Magnitude() * GAME_SPEED_TO_METERS_PER_SECOND;
+ SET_FLOAT_PARAM(0, pVehicle->GetSpeed().Magnitude() * GAME_SPEED_TO_METERS_PER_SECOND);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1956,15 +2000,17 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
{
char name[KEY_LENGTH_IN_SCRIPT];
strncpy(name, (const char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
+ // unknown call FUN_29df68(name) on PS2 - not on PSP
m_nIp += KEY_LENGTH_IN_SCRIPT;
+ CColStore::RemoveAllCollision();
CCutsceneMgr::LoadCutsceneData(name);
return 0;
}
case COMMAND_CREATE_CUTSCENE_OBJECT:
{
CollectParameters(&m_nIp, 1);
- CCutsceneObject* pCutObj = CCutsceneMgr::CreateCutsceneObject(ScriptParams[0]);
- ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pCutObj);
+ CCutsceneObject* pCutObj = CCutsceneMgr::CreateCutsceneObject(GET_INTEGER_PARAM(0));
+ SET_INTEGER_PARAM(0, CPools::GetObjectPool()->GetIndex(pCutObj));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1972,7 +2018,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
{
CollectParameters(&m_nIp, 1);
char name[KEY_LENGTH_IN_SCRIPT];
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
strncpy(name, (const char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
m_nIp += KEY_LENGTH_IN_SCRIPT;
@@ -1980,16 +2026,23 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
return 0;
}
case COMMAND_START_CUTSCENE:
- CCutsceneMgr::ms_cutsceneLoadStatus = 1;
+ CCutsceneMgr::StartCutscene();
return 0;
case COMMAND_GET_CUTSCENE_TIME:
- ScriptParams[0] = CCutsceneMgr::GetCutsceneTimeInMilleseconds();
+ SET_INTEGER_PARAM(0, CCutsceneMgr::GetCutsceneTimeInMilleseconds());
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_HAS_CUTSCENE_FINISHED:
- UpdateCompareFlag(CCutsceneMgr::HasCutsceneFinished());
+ {
+ bool bFinished = CCutsceneMgr::HasCutsceneFinished();
+ if (bFinished)
+ printf("cutscene has now finished\n");
+ UpdateCompareFlag(bFinished);
return 0;
+ }
case COMMAND_CLEAR_CUTSCENE:
+ // unknown call on PS2 FUN_29DFA0() - not on PSP
+ printf("clear cutscene\n");
CCutsceneMgr::DeleteCutsceneData();
return 0;
case COMMAND_RESTORE_CAMERA_JUMPCUT:
@@ -1998,37 +2051,37 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_CREATE_COLLECTABLE1:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
- CPickups::GenerateNewOne(pos, MI_COLLECTABLE1, PICKUP_COLLECTABLE1, 0);
+ CPickups::GenerateNewOne(pos, MI_COLLECTABLE1, PICKUP_COLLECTABLE1, 0); // TODO: gpModelIndices
return 0;
}
case COMMAND_SET_COLLECTABLE1_TOTAL:
CollectParameters(&m_nIp, 1);
- CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages = ScriptParams[0];
+ CWorld::Players[CWorld::PlayerInFocus].m_nTotalPackages = GET_INTEGER_PARAM(0);
return 0;
/*
case COMMAND_IS_PROJECTILE_IN_AREA:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
UpdateCompareFlag(CProjectileInfo::IsProjectileInRange(infX, supX, infY, supY, infZ, supZ, false));
if (CTheScripts::DbgFlag)
@@ -2038,23 +2091,23 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_DESTROY_PROJECTILES_IN_AREA:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
UpdateCompareFlag(CProjectileInfo::IsProjectileInRange(infX, supX, infY, supY, infZ, supZ, true));
if (CTheScripts::DbgFlag)
@@ -2064,7 +2117,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_DROP_MINE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GenerateNewOne(pos, MI_CARMINE, PICKUP_MINE_INACTIVE, 0);
@@ -2073,7 +2126,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_DROP_NAUTICAL_MINE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GenerateNewOne(pos, MI_NAUTICALMINE, PICKUP_MINE_INACTIVE, 0);
@@ -2083,9 +2136,9 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_CHAR_MODEL:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- UpdateCompareFlag(ScriptParams[1] == pPed->GetModelIndex());
+ UpdateCompareFlag(GET_INTEGER_PARAM(1) == pPed->GetModelIndex());
return 0;
}
case COMMAND_LOAD_SPECIAL_MODEL:
@@ -2095,7 +2148,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
strncpy(name, (const char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++)
name[i] = tolower(name[i]);
- CStreaming::RequestSpecialModel(ScriptParams[0], name, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ CStreaming::RequestSpecialModel(GET_INTEGER_PARAM(0), name, STREAMFLAGS_DEPENDENCY | (m_bIsMissionScript ? STREAMFLAGS_SCRIPTOWNED : STREAMFLAGS_AMBIENT_SCRIPT_OWNED));
m_nIp += KEY_LENGTH_IN_SCRIPT;
return 0;
}
@@ -2103,102 +2156,98 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
//case COMMAND_SET_CUTSCENE_HEAD_ANIM:
case COMMAND_SIN:
CollectParameters(&m_nIp, 1);
- *(float*)&ScriptParams[0] = Sin(DEGTORAD(*(float*)&ScriptParams[0]));
+ SET_FLOAT_PARAM(0, Sin(DEGTORAD(GET_FLOAT_PARAM(0))));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_COS:
CollectParameters(&m_nIp, 1);
- *(float*)&ScriptParams[0] = Cos(DEGTORAD(*(float*)&ScriptParams[0]));
+ SET_FLOAT_PARAM(0, Cos(DEGTORAD(GET_FLOAT_PARAM(0))));
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_GET_CAR_FORWARD_X:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
float forwardX = pVehicle->GetForward().x / pVehicle->GetForward().Magnitude2D();
- *(float*)&ScriptParams[0] = forwardX;
+ SET_FLOAT_PARAM(0, forwardX);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_CAR_FORWARD_Y:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
float forwardY = pVehicle->GetForward().y / pVehicle->GetForward().Magnitude2D();
- *(float*)&ScriptParams[0] = forwardY;
+ SET_FLOAT_PARAM(0, forwardY);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_CHANGE_GARAGE_TYPE:
CollectParameters(&m_nIp, 2);
- CGarages::ChangeGarageType(ScriptParams[0], ScriptParams[1], 0);
+ CGarages::ChangeGarageType(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), 0);
return 0;
- /*
case COMMAND_ACTIVATE_CRUSHER_CRANE:
{
CollectParameters(&m_nIp, 10);
- float infX = *(float*)&ScriptParams[2];
- float infY = *(float*)&ScriptParams[3];
- float supX = *(float*)&ScriptParams[4];
- float supY = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(2);
+ float infY = GET_FLOAT_PARAM(3);
+ float supX = GET_FLOAT_PARAM(4);
+ float supY = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[4];
- supX = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(4);
+ supX = GET_FLOAT_PARAM(2);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[5];
- supY = *(float*)&ScriptParams[3];
+ infY = GET_FLOAT_PARAM(5);
+ supY = GET_FLOAT_PARAM(3);
}
CCranes::ActivateCrane(infX, supX, infY, supY,
- *(float*)&ScriptParams[6], *(float*)&ScriptParams[7], *(float*)&ScriptParams[8],
- DEGTORAD(*(float*)&ScriptParams[9]), true, false,
- *(float*)&ScriptParams[0], *(float*)&ScriptParams[1]);
+ GET_FLOAT_PARAM(6), GET_FLOAT_PARAM(7), GET_FLOAT_PARAM(8),
+ DEGTORAD(GET_FLOAT_PARAM(9)), true, false,
+ GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
return 0;
}
case COMMAND_PRINT_WITH_2_NUMBERS:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 4);
- CMessages::AddMessageWithNumber(text, ScriptParams[2], ScriptParams[3], ScriptParams[0], ScriptParams[1], -1, -1, -1, -1);
+ CMessages::AddMessageWithNumber(text, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1);
return 0;
}
- */
case COMMAND_PRINT_WITH_2_NUMBERS_NOW:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 4);
- CMessages::AddMessageJumpQWithNumber(text, ScriptParams[2], ScriptParams[3], ScriptParams[0], ScriptParams[1], -1, -1, -1, -1);
+ CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1);
return 0;
}
- /*
case COMMAND_PRINT_WITH_2_NUMBERS_SOON:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 4);
- CMessages::AddMessageSoonWithNumber(text, ScriptParams[2], ScriptParams[3], ScriptParams[0], ScriptParams[1], -1, -1, -1, -1);
+ CMessages::AddMessageSoonWithNumber(text, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1);
return 0;
}
- */
case COMMAND_PRINT_WITH_3_NUMBERS:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 5);
- CMessages::AddMessageWithNumber(text, ScriptParams[3], ScriptParams[4], ScriptParams[0], ScriptParams[1], ScriptParams[2], -1, -1, -1);
+ CMessages::AddMessageWithNumber(text, GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), -1, -1, -1);
return 0;
}
- /*
case COMMAND_PRINT_WITH_3_NUMBERS_NOW:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 5);
- CMessages::AddMessageJumpQWithNumber(text, ScriptParams[3], ScriptParams[4], ScriptParams[0], ScriptParams[1], ScriptParams[2], -1, -1, -1);
+ CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), -1, -1, -1);
return 0;
}
+ /*
case COMMAND_PRINT_WITH_3_NUMBERS_SOON:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 5);
- CMessages::AddMessageSoonWithNumber(text, ScriptParams[3], ScriptParams[4], ScriptParams[0], ScriptParams[1], ScriptParams[2], -1, -1, -1);
+ CMessages::AddMessageSoonWithNumber(text, GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), -1, -1, -1);
return 0;
}
*/
@@ -2206,7 +2255,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 6);
- CMessages::AddMessageWithNumber(text, ScriptParams[4], ScriptParams[5], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], -1, -1);
+ CMessages::AddMessageWithNumber(text, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), -1, -1);
return 0;
}
/*
@@ -2214,35 +2263,35 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 6);
- CMessages::AddMessageJumpQWithNumber(text, ScriptParams[4], ScriptParams[5], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], -1, -1);
+ CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), -1, -1);
return 0;
}
case COMMAND_PRINT_WITH_4_NUMBERS_SOON:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 6);
- CMessages::AddMessageSoonWithNumber(text, ScriptParams[4], ScriptParams[5], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], -1, -1);
+ CMessages::AddMessageSoonWithNumber(text, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), -1, -1);
return 0;
}
case COMMAND_PRINT_WITH_5_NUMBERS:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 7);
- CMessages::AddMessageWithNumber(text, ScriptParams[5], ScriptParams[6], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], -1);
+ CMessages::AddMessageWithNumber(text, GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), -1);
return 0;
}
case COMMAND_PRINT_WITH_5_NUMBERS_NOW:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 7);
- CMessages::AddMessageJumpQWithNumber(text, ScriptParams[5], ScriptParams[6], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], -1);
+ CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), -1);
return 0;
}
case COMMAND_PRINT_WITH_5_NUMBERS_SOON:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 7);
- CMessages::AddMessageSoonWithNumber(text, ScriptParams[5], ScriptParams[6], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], -1);
+ CMessages::AddMessageSoonWithNumber(text, GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), -1);
return 0;
}
*/
@@ -2250,7 +2299,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 8);
- CMessages::AddMessageWithNumber(text, ScriptParams[6], ScriptParams[7], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], ScriptParams[5]);
+ CMessages::AddMessageWithNumber(text, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5));
return 0;
}
/*
@@ -2258,71 +2307,69 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 8);
- CMessages::AddMessageJumpQWithNumber(text, ScriptParams[6], ScriptParams[7], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], ScriptParams[5]);
+ CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5));
return 0;
}
case COMMAND_PRINT_WITH_6_NUMBERS_SOON:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 8);
- CMessages::AddMessageSoonWithNumber(text, ScriptParams[6], ScriptParams[7], ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], ScriptParams[5]);
+ CMessages::AddMessageSoonWithNumber(text, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5));
return 0;
}
+ */
case COMMAND_SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FOLLOW_CHAR_IN_FORMATION, pTargetPed);
- pPed->SetFormation((eFormation)ScriptParams[2]);
+ pPed->SetFormation((eFormation)GET_INTEGER_PARAM(2));
return 0;
}
- */
case COMMAND_PLAYER_MADE_PROGRESS:
CollectParameters(&m_nIp, 1);
- CStats::ProgressMade += ScriptParams[0];
+ CStats::ProgressMade += GET_INTEGER_PARAM(0);
return 0;
case COMMAND_SET_PROGRESS_TOTAL:
CollectParameters(&m_nIp, 1);
- CStats::TotalProgressInGame = ScriptParams[0];
- if (CGame::germanGame)
- CStats::TotalProgressInGame -= 2;
+ CStats::TotalProgressInGame = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_REGISTER_JUMP_DISTANCE:
CollectParameters(&m_nIp, 1);
- CStats::MaximumJumpDistance = Max(CStats::MaximumJumpDistance, *(float*)&ScriptParams[0]);
+ CStats::MaximumJumpDistance = Max(CStats::MaximumJumpDistance, GET_FLOAT_PARAM(0));
return 0;
case COMMAND_REGISTER_JUMP_HEIGHT:
CollectParameters(&m_nIp, 1);
- CStats::MaximumJumpHeight = Max(CStats::MaximumJumpHeight, *(float*)&ScriptParams[0]);
+ CStats::MaximumJumpHeight = Max(CStats::MaximumJumpHeight, GET_FLOAT_PARAM(0));
return 0;
case COMMAND_REGISTER_JUMP_FLIPS:
CollectParameters(&m_nIp, 1);
- CStats::MaximumJumpFlips = Max(CStats::MaximumJumpFlips, ScriptParams[0]);
+ CStats::MaximumJumpFlips = Max(CStats::MaximumJumpFlips, GET_INTEGER_PARAM(0));
return 0;
case COMMAND_REGISTER_JUMP_SPINS:
CollectParameters(&m_nIp, 1);
- CStats::MaximumJumpSpins = Max(CStats::MaximumJumpSpins, ScriptParams[0]);
+ CStats::MaximumJumpSpins = Max(CStats::MaximumJumpSpins, GET_INTEGER_PARAM(0));
return 0;
case COMMAND_REGISTER_JUMP_STUNT:
CollectParameters(&m_nIp, 1);
- CStats::BestStuntJump = Max(CStats::BestStuntJump, ScriptParams[0]);
+ CStats::BestStuntJump = Max(CStats::BestStuntJump, GET_INTEGER_PARAM(0));
return 0;
case COMMAND_REGISTER_UNIQUE_JUMP_FOUND:
++CStats::NumberOfUniqueJumpsFound;
return 0;
case COMMAND_SET_UNIQUE_JUMPS_TOTAL:
CollectParameters(&m_nIp, 1);
- CStats::TotalNumberOfUniqueJumps = ScriptParams[0];
+ CStats::TotalNumberOfUniqueJumps = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_REGISTER_PASSENGER_DROPPED_OFF_TAXI:
++CStats::PassengersDroppedOffWithTaxi;
return 0;
case COMMAND_REGISTER_MONEY_MADE_TAXI:
CollectParameters(&m_nIp, 1);
- CStats::MoneyMadeWithTaxi += ScriptParams[0];
+ CStats::MoneyMadeWithTaxi += GET_INTEGER_PARAM(0);
return 0;
case COMMAND_REGISTER_MISSION_GIVEN:
++CStats::MissionsGiven;
@@ -2342,9 +2389,9 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_SET_CHAR_RUNNING:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bIsRunning = (ScriptParams[1] != 0);
+ pPed->bIsRunning = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_REMOVE_ALL_SCRIPT_FIRES:
@@ -2354,32 +2401,32 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_FIRST_CAR_COLOUR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(pVehicle->m_currentColour1 == ScriptParams[1]);
+ UpdateCompareFlag(pVehicle->m_currentColour1 == GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_IS_SECOND_CAR_COLOUR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(pVehicle->m_currentColour2 == ScriptParams[1]);
+ UpdateCompareFlag(pVehicle->m_currentColour2 == GET_INTEGER_PARAM(1));
return 0;
}
*/
case COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
bool result = false;
if (!pPed)
printf("HAS_CHAR_BEEN_DAMAGED_BY_WEAPON - Character doesn't exist\n");
else {
- if (ScriptParams[1] == WEAPONTYPE_ANYMELEE || ScriptParams[1] == WEAPONTYPE_ANYWEAPON)
- result = CheckDamagedWeaponType(pPed->m_lastWepDam, ScriptParams[1]);
+ if (GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYMELEE || GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYWEAPON)
+ result = CheckDamagedWeaponType(pPed->m_lastWepDam, GET_INTEGER_PARAM(1));
else
- result = ScriptParams[1] == pPed->m_lastWepDam;
+ result = GET_INTEGER_PARAM(1) == pPed->m_lastWepDam;
}
UpdateCompareFlag(result);
return 0;
@@ -2387,15 +2434,15 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_HAS_CAR_BEEN_DAMAGED_BY_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
bool result = false;
if (!pVehicle)
printf("HAS_CAR_BEEN_DAMAGED_BY_WEAPON - Vehicle doesn't exist\n");
else {
- if (ScriptParams[1] == WEAPONTYPE_ANYMELEE || ScriptParams[1] == WEAPONTYPE_ANYWEAPON)
- result = CheckDamagedWeaponType(pVehicle->m_nLastWeaponDamage, ScriptParams[1]);
+ if (GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYMELEE || GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYWEAPON)
+ result = CheckDamagedWeaponType(pVehicle->m_nLastWeaponDamage, GET_INTEGER_PARAM(1));
else
- result = ScriptParams[1] == pVehicle->m_nLastWeaponDamage;
+ result = GET_INTEGER_PARAM(1) == pVehicle->m_nLastWeaponDamage;
}
UpdateCompareFlag(result);
return 0;
@@ -2403,8 +2450,8 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
case COMMAND_IS_CHAR_IN_CHARS_GROUP:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CPed* pLeader = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pLeader = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pPed);
script_assert(pLeader);
UpdateCompareFlag(pPed->m_leader == pLeader && !pPed->bWaitForLeaderToComeCloser);
diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp
index 16a4ddae..91c45bf2 100644
--- a/src/control/Script4.cpp
+++ b/src/control/Script4.cpp
@@ -41,19 +41,12 @@
#include "Bike.h"
#include "Wanted.h"
+// LCS: file done except TODOs
+
#ifdef FIX_BUGS
static bool IsSlideObjectUsedWrongByScript(const CVector& posTarget, const CVector& slideBy)
{
- if (posTarget == CVector(-559.476f, 784.807f, 23.279f) && slideBy == CVector(0.0f, 10.0f, 0.0f))
- return true; // G-Spotlight bottom elevator, east side
- if (posTarget == CVector(-559.476f, 779.64f, 23.279f) && slideBy == CVector(0.0f, 10.0f, 0.0f))
- return true; // G-Spotlight bottom elevator, west side
- if (posTarget == CVector(-553.563f, 790.595f, 97.917f) && slideBy == CVector(0.0f, 10.0f, 0.0f))
- return true; // G-Spotlight top elevator, east side
- if (posTarget == CVector(-553.563f, 785.427f, 97.917f) && slideBy == CVector(0.0f, 10.0f, 0.0f))
- return true; // G-Spotlight top elevator, west side
- if (posTarget == CVector(-866.689f, -572.095f, 15.573f) && slideBy == CVector(0.0f, 0.0f, 4.5f))
- return true; // Cherry Popper garage door
+ // TODO?
return false;
}
#endif
@@ -65,8 +58,8 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_IS_CHAR_IN_PLAYERS_GROUP:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CPed* pLeader = CWorld::Players[ScriptParams[1]].m_pPed;
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pLeader = CWorld::Players[GET_INTEGER_PARAM(1)].m_pPed;
script_assert(pPed);
script_assert(pLeader);
UpdateCompareFlag(pPed->m_leader == pLeader && !pPed->bWaitForLeaderToComeCloser);
@@ -75,7 +68,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_EXPLODE_CHAR_HEAD:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->InflictDamage(nil, WEAPONTYPE_SNIPERRIFLE, 1000.0f, PEDPIECE_HEAD, 0);
return 0;
@@ -83,7 +76,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_EXPLODE_PLAYER_HEAD:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
pPed->InflictDamage(nil, WEAPONTYPE_SNIPERRIFLE, 1000.0f, PEDPIECE_HEAD, 0);
return 0;
@@ -91,9 +84,9 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_ANCHOR_BOAT:
{
CollectParameters(&m_nIp, 2);
- CBoat* pBoat = (CBoat*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CBoat* pBoat = (CBoat*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pBoat && pBoat->m_vehType == VEHICLE_TYPE_BOAT);
- pBoat->m_bIsAnchored = (ScriptParams[1] != 0);
+ pBoat->m_bIsAnchored = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_ZONE_GROUP:
@@ -108,7 +101,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
return 0;
}
while (zone_id >= 0) {
- CTheZones::SetPedGroup(zone_id, ScriptParams[0], ScriptParams[1]);
+ CTheZones::SetPedGroup(zone_id, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
zone_id = CTheZones::FindNextZoneByLabelAndReturnIndex(zone, ZONE_INFO);
}
return 0;
@@ -116,18 +109,18 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_START_CAR_FIRE:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- ScriptParams[0] = gFireManager.StartScriptFire(pVehicle->GetPosition(), pVehicle, 0.8f, 1);
+ SET_INTEGER_PARAM(0, gFireManager.StartScriptFire(pVehicle->GetPosition(), pVehicle, 0.8f, 1));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_START_CHAR_FIRE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- ScriptParams[0] = gFireManager.StartScriptFire(pPed->GetPosition(), pPed, 0.8f, 1);
+ SET_INTEGER_PARAM(0, gFireManager.StartScriptFire(pPed->GetPosition(), pPed, 0.8f, 1));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -136,10 +129,10 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
CollectParameters(&m_nIp, 5);
int handle = -1;
uint32 i = CPools::GetVehiclePool()->GetSize();
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(3);
while (i--) {
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
if (!pVehicle)
@@ -148,7 +141,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
continue;
if (!pVehicle->bUsesCollision)
continue;
- if (ScriptParams[4] != pVehicle->GetModelIndex() && ScriptParams[4] >= 0)
+ if (GET_INTEGER_PARAM(4) != pVehicle->GetModelIndex() && GET_INTEGER_PARAM(4) >= 0)
continue;
if (pVehicle->VehicleCreatedBy != RANDOM_VEHICLE)
continue;
@@ -161,7 +154,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
}
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -181,7 +174,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
if (!pVehicle)
continue;
- if (ScriptParams[0] != pVehicle->GetModelIndex() && ScriptParams[0] >= 0)
+ if (GET_INTEGER_PARAM(0) != pVehicle->GetModelIndex() && GET_INTEGER_PARAM(0) >= 0)
continue;
if (pVehicle->VehicleCreatedBy != RANDOM_VEHICLE)
continue;
@@ -194,7 +187,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
}
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -202,38 +195,38 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_HAS_RESPRAY_HAPPENED:
{
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CGarages::HasResprayHappened(ScriptParams[0]));
+ UpdateCompareFlag(CGarages::HasResprayHappened(GET_INTEGER_PARAM(0)));
return 0;
}
case COMMAND_SET_CAMERA_ZOOM:
{
CollectParameters(&m_nIp, 1);
if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED)
- TheCamera.SetZoomValueFollowPedScript(ScriptParams[0]);
+ TheCamera.SetZoomValueFollowPedScript(GET_INTEGER_PARAM(0));
else if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_CAM_ON_A_STRING)
- TheCamera.SetZoomValueCamStringScript(ScriptParams[0]);
+ TheCamera.SetZoomValueCamStringScript(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_CREATE_PICKUP_WITH_AMMO:
{
CollectParameters(&m_nIp, 6);
- int16 model = ScriptParams[0];
+ int16 model = GET_INTEGER_PARAM(0);
if (model < 0)
model = CTheScripts::UsedObjectArray[-model].index;
- CVector pos = *(CVector*)&ScriptParams[3];
+ CVector pos = GET_VECTOR_PARAM(3);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, model, ScriptParams[1], ScriptParams[2]);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, model, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2)));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CAR_RAM_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CCarAI::TellCarToRamOtherCar(pVehicle, pTarget);
return 0;
@@ -242,9 +235,9 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_SET_CAR_BLOCK_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CCarAI::TellCarToBlockOtherCar(pVehicle, pTarget);
return 0;
@@ -252,115 +245,112 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_SET_CHAR_OBJ_CATCH_TRAIN:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_CATCH_TRAIN);
return 0;
}
- */
#ifdef GTA_SCRIPT_COLLECTIVE
case COMMAND_SET_COLL_OBJ_CATCH_TRAIN:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_CATCH_TRAIN);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_CATCH_TRAIN);
return 0;
#endif
+ */
case COMMAND_SET_PLAYER_NEVER_GETS_TIRED:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
- pPlayer->m_bInfiniteSprint = (ScriptParams[1] != 0);
+ CPlayerInfo* pPlayer = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayer->m_bInfiniteSprint = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_PLAYER_FAST_RELOAD:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
- pPlayer->m_bFastReload = (ScriptParams[1] != 0);
+ CPlayerInfo* pPlayer = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayer->m_bFastReload = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_CHAR_BLEEDING:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bPedIsBleeding = (ScriptParams[1] != 0);
+ pPed->bPedIsBleeding = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
/*
case COMMAND_SET_CAR_FUNNY_SUSPENSION:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
// no action
return 0;
- }
+ */
case COMMAND_SET_CAR_BIG_WHEELS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
CAutomobile* pCar = (CAutomobile*)pVehicle;
- pCar->bBigWheels = (ScriptParams[1] != 0);
+ pCar->bBigWheels = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
- */
case COMMAND_SET_FREE_RESPRAYS:
CollectParameters(&m_nIp, 1);
- CGarages::SetFreeResprays(ScriptParams[0] != 0);
+ CGarages::SetFreeResprays(GET_INTEGER_PARAM(0) != 0);
return 0;
case COMMAND_SET_PLAYER_VISIBLE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- pPed->bIsVisible = (ScriptParams[1] != 0);
+ pPed->bIsVisible = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_SET_CHAR_VISIBLE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bIsVisible = (ScriptParams[1] != 0);
+ pPed->bIsVisible = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
- /*
case COMMAND_SET_CAR_VISIBLE:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bIsVisible = (ScriptParams[1] != 0);
+ pVehicle->bIsVisible = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
- */
case COMMAND_IS_AREA_OCCUPIED:
{
CollectParameters(&m_nIp, 11);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
int16 total;
CWorld::FindObjectsIntersectingCube(CVector(infX, infY, infZ), CVector(supX, supY, supZ), &total, 2, nil,
- !!ScriptParams[6], !!ScriptParams[7], !!ScriptParams[8], !!ScriptParams[9], !!ScriptParams[10]);
+ !!GET_INTEGER_PARAM(6), !!GET_INTEGER_PARAM(7), !!GET_INTEGER_PARAM(8), !!GET_INTEGER_PARAM(9), !!GET_INTEGER_PARAM(10));
UpdateCompareFlag(total > 0);
return 0;
}
@@ -376,15 +366,15 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
return 0;
case COMMAND_SAVE_PLAYER_FROM_FIRES:
CollectParameters(&m_nIp, 1);
- gFireManager.ExtinguishPoint(CWorld::Players[ScriptParams[0]].GetPos(), 3.0f);
+ gFireManager.ExtinguishPoint(CWorld::Players[GET_INTEGER_PARAM(0)].GetPos(), 3.0f);
return 0;
*/
case COMMAND_DISPLAY_TEXT:
{
CollectParameters(&m_nIp, 2);
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtX = *(float*)&ScriptParams[0];
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtY = *(float*)&ScriptParams[1];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtX = GET_FLOAT_PARAM(0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtY = GET_FLOAT_PARAM(1);
uint16 len = CMessages::GetWideStringLength(text);
for (uint16 i = 0; i < len; i++)
CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_Text[i] = text[i];
@@ -396,47 +386,47 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_SET_TEXT_SCALE:
{
CollectParameters(&m_nIp, 2);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fScaleX = *(float*)&ScriptParams[0];
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fScaleY = *(float*)&ScriptParams[1];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fScaleX = GET_FLOAT_PARAM(0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fScaleY = GET_FLOAT_PARAM(1);
return 0;
}
case COMMAND_SET_TEXT_COLOUR:
{
CollectParameters(&m_nIp, 4);
CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_sColor =
- CRGBA(ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3]);
+ CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
return 0;
}
case COMMAND_SET_TEXT_JUSTIFY:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bJustify = (ScriptParams[0] != 0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bJustify = (GET_INTEGER_PARAM(0) != 0);
return 0;
}
case COMMAND_SET_TEXT_CENTRE:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bCentered = (ScriptParams[0] != 0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bCentered = (GET_INTEGER_PARAM(0) != 0);
return 0;
}
case COMMAND_SET_TEXT_WRAPX:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fWrapX = *(float*)&ScriptParams[0];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fWrapX = GET_FLOAT_PARAM(0);
return 0;
}
/*
case COMMAND_SET_TEXT_CENTRE_SIZE:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fCenterSize = *(float*)&ScriptParams[0];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fCenterSize = GET_FLOAT_PARAM(0);
return 0;
}
*/
case COMMAND_SET_TEXT_BACKGROUND:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bBackground = (ScriptParams[0] != 0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bBackground = (GET_INTEGER_PARAM(0) != 0);
return 0;
}
/*
@@ -444,53 +434,56 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
{
CollectParameters(&m_nIp, 4);
CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_sBackgroundColor =
- CRGBA(ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3]);
+ CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
return 0;
}
case COMMAND_SET_TEXT_BACKGROUND_ONLY_TEXT:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bBackgroundOnly = (ScriptParams[0] != 0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bBackgroundOnly = (GET_INTEGER_PARAM(0) != 0);
return 0;
}
*/
case COMMAND_SET_TEXT_PROPORTIONAL:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bTextProportional = (ScriptParams[0] != 0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bTextProportional = (GET_INTEGER_PARAM(0) != 0);
return 0;
}
/*
case COMMAND_SET_TEXT_FONT:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_nFont = ScriptParams[0];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_nFont = GET_INTEGER_PARAM(0);
return 0;
}
+ */
case COMMAND_INDUSTRIAL_PASSED:
- CStats::IndustrialPassed = true;
- DMAudio.PlayRadioAnnouncement(STREAMED_SOUND_ANNOUNCE_COMMERCIAL_OPEN);
+ CollectParameters(&m_nIp, 1);
+ CStats::IndustrialPassed = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_COMMERCIAL_PASSED:
- CStats::CommercialPassed = true;
- DMAudio.PlayRadioAnnouncement(STREAMED_SOUND_ANNOUNCE_SUBURBAN_OPEN);
+ CollectParameters(&m_nIp, 1);
+ CStats::CommercialPassed = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_SUBURBAN_PASSED:
- CStats::SuburbanPassed = true;
+ CollectParameters(&m_nIp, 1);
+ CStats::SuburbanPassed = GET_INTEGER_PARAM(0);
return 0;
- */
case COMMAND_ROTATE_OBJECT:
{
CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
+ float fx = pObject->GetForward().x;
+ float fy = pObject->GetForward().y;
float heading = LimitAngleOnCircle(
RADTODEG(Atan2(-pObject->GetForward().x, pObject->GetForward().y)));
- float headingTarget = *(float*)&ScriptParams[1];
+ float headingTarget = GET_FLOAT_PARAM(1);
#ifdef FIX_BUGS
- float rotateBy = *(float*)&ScriptParams[2] * CTimer::GetTimeStepFix();
+ float rotateBy = GET_FLOAT_PARAM(2) * CTimer::GetTimeStepFix();
#else
- float rotateBy = *(float*)&ScriptParams[2];
+ float rotateBy = GET_FLOAT_PARAM(2);
#endif
if (headingTarget == heading) { // using direct comparasion here is fine
UpdateCompareFlag(true);
@@ -504,7 +497,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
else
newHeading = rotateBy < angleCounterclockwise ? heading - rotateBy : headingTarget;
bool obstacleInPath = false;
- if (ScriptParams[3]) {
+ if (GET_INTEGER_PARAM(3)) {
CVector pos = pObject->GetPosition();
tmp_matrix.SetRotateZ(DEGTORAD(newHeading));
tmp_matrix.GetPosition() += pos;
@@ -536,11 +529,11 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_SLIDE_OBJECT:
{
CollectParameters(&m_nIp, 8);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CVector pos = pObject->GetPosition();
- CVector posTarget = *(CVector*)&ScriptParams[1];
- CVector slideBy = *(CVector*)&ScriptParams[4];
+ CVector posTarget = GET_VECTOR_PARAM(1);
+ CVector slideBy = GET_VECTOR_PARAM(4);
#ifdef FIX_BUGS
// the check is a hack for original script, where some objects are moved
// via SLIDE_OBJECT instead of SET_OBJECT_POSITION
@@ -568,7 +561,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
else
newPosition.z = posDiff.z < slideBy.z ? posTarget.z : pos.z - slideBy.z;
bool obstacleInPath = false;
- if (ScriptParams[7]) {
+ if (GET_INTEGER_PARAM(7)) {
tmp_matrix = pObject->GetMatrix();
tmp_matrix.GetPosition() = newPosition;
CColModel* pColModel = pObject->GetColModel();
@@ -597,7 +590,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_REMOVE_CHAR_ELEGANTLY:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
if (pPed && pPed->CharCreatedBy == MISSION_CHAR){
CWorld::RemoveReferencesToDeletedObject(pPed);
if (pPed->bInVehicle && pPed->m_pMyVehicle)
@@ -613,15 +606,15 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
}
}
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_SET_CHAR_STAY_IN_SAME_PLACE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bKindaStayInSamePlace = (ScriptParams[1] != 0);
+ pPed->bKindaStayInSamePlace = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
/*
@@ -632,7 +625,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_UNDRESS_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
char name[KEY_LENGTH_IN_SCRIPT];
CTheScripts::ReadTextLabelFromScript(&m_nIp, name);
@@ -645,7 +638,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_DRESS_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->Dress();
return 0;
@@ -655,37 +648,39 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
CollectParameters(&m_nIp, 1);
CTimer::Suspend();
CStreaming::DeleteAllRwObjects();
- CRecordDataForChase::StartChaseScene(*(float*)&ScriptParams[0]);
+ CRecordDataForChase::StartChaseScene(GET_FLOAT_PARAM(0));
CTimer::Resume();
return 0;
case COMMAND_STOP_CHASE_SCENE:
CRecordDataForChase::CleanUpChaseScene();
return 0;
+ */
case COMMAND_IS_EXPLOSION_IN_AREA:
{
CollectParameters(&m_nIp, 7);
- float infX = *(float*)&ScriptParams[1];
- float infY = *(float*)&ScriptParams[2];
- float infZ = *(float*)&ScriptParams[3];
- float supX = *(float*)&ScriptParams[4];
- float supY = *(float*)&ScriptParams[5];
- float supZ = *(float*)&ScriptParams[6];
+ float infX = GET_FLOAT_PARAM(1);
+ float infY = GET_FLOAT_PARAM(2);
+ float infZ = GET_FLOAT_PARAM(3);
+ float supX = GET_FLOAT_PARAM(4);
+ float supY = GET_FLOAT_PARAM(5);
+ float supZ = GET_FLOAT_PARAM(6);
if (infX > supX) {
- infX = *(float*)&ScriptParams[4];
- supX = *(float*)&ScriptParams[1];
+ infX = GET_FLOAT_PARAM(4);
+ supX = GET_FLOAT_PARAM(1);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[5];
- supY = *(float*)&ScriptParams[2];
+ infY = GET_FLOAT_PARAM(5);
+ supY = GET_FLOAT_PARAM(2);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- UpdateCompareFlag(CExplosion::TestForExplosionInArea((eExplosionType)ScriptParams[0],
+ UpdateCompareFlag(CExplosion::TestForExplosionInArea((eExplosionType)GET_INTEGER_PARAM(0),
infX, supX, infY, supY, infZ, supZ));
return 0;
}
+ /*
case COMMAND_IS_EXPLOSION_IN_ZONE:
{
CollectParameters(&m_nIp, 1);
@@ -695,7 +690,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
if (zone_id != -1)
m_nIp += KEY_LENGTH_IN_SCRIPT;
CZone* pZone = CTheZones::GetNavigationZone(zone_id);
- UpdateCompareFlag(CExplosion::TestForExplosionInArea((eExplosionType)ScriptParams[0],
+ UpdateCompareFlag(CExplosion::TestForExplosionInArea((eExplosionType)GET_INTEGER_PARAM(0),
pZone->minx, pZone->maxx, pZone->miny, pZone->maxy, pZone->minz, pZone->maxz));
return 0;
}
@@ -708,17 +703,17 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_FIND_DROP_OFF_PLANE_COORDINATES:
{
CVector pos = CPlane::FindDropOffCesnaCoordinates();
- *(CVector*)&ScriptParams[0] = pos;
+ SET_VECTOR_PARAM(0, pos);
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_CREATE_FLOATING_PACKAGE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_FLOATPACKAGE1, PICKUP_FLOATINGPACKAGE, 0);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_FLOATPACKAGE1, PICKUP_FLOATINGPACKAGE, 0));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -726,58 +721,58 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_PLACE_OBJECT_RELATIVE_TO_CAR:
{
CollectParameters(&m_nIp, 5);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
- CVector offset = *(CVector*)&ScriptParams[2];
+ CVector offset = GET_VECTOR_PARAM(2);
CPhysical::PlacePhysicalRelativeToOtherPhysical(pVehicle, pObject, offset);
return 0;
}
case COMMAND_MAKE_OBJECT_TARGETTABLE:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CPlayerPed* pPlayerPed = CWorld::Players[CWorld::PlayerInFocus].m_pPed;
script_assert(pPlayerPed);
- pPlayerPed->MakeObjectTargettable(ScriptParams[0]);
+ pPlayerPed->MakeObjectTargettable(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_ADD_ARMOUR_TO_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPlayerPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPlayerPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPlayerPed);
- pPlayerPed->m_fArmour = Clamp(pPlayerPed->m_fArmour + ScriptParams[1], 0.0f, CWorld::Players[ScriptParams[0]].m_nMaxArmour);
+ pPlayerPed->m_fArmour = Clamp(pPlayerPed->m_fArmour + GET_INTEGER_PARAM(1), 0.0f, CWorld::Players[GET_INTEGER_PARAM(0)].m_nMaxArmour);
return 0;
}
case COMMAND_ADD_ARMOUR_TO_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->m_fArmour = Clamp(pPed->m_fArmour + ScriptParams[1], 0.0f, 100.0f);
+ pPed->m_fArmour = Clamp(pPed->m_fArmour + GET_INTEGER_PARAM(1), 0.0f, 100.0f);
return 0;
}
case COMMAND_OPEN_GARAGE:
{
CollectParameters(&m_nIp, 1);
- CGarages::OpenGarage(ScriptParams[0]);
+ CGarages::OpenGarage(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_CLOSE_GARAGE:
{
CollectParameters(&m_nIp, 1);
- CGarages::CloseGarage(ScriptParams[0]);
+ CGarages::CloseGarage(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_WARP_CHAR_FROM_CAR_TO_COORD:
{
CollectParameters(&m_nIp, 4);
- CPed *pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed *pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
if (pPed->bInVehicle){
@@ -794,7 +789,22 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
pPed->m_pMyVehicle->RemovePassenger(pPed);
}
if (pPed->m_vehDoor) {
- if (pPed->GetPedState() == PED_EXIT_CAR || pPed->GetPedState() == PED_DRAG_FROM_CAR) {
+ eDoors door;
+ switch (pPed->m_vehDoor) {
+ case CAR_DOOR_LF:
+ door = DOOR_FRONT_LEFT;
+ break;
+ case CAR_DOOR_RF:
+ door = DOOR_FRONT_RIGHT;
+ break;
+ case CAR_DOOR_LR:
+ door = DOOR_REAR_LEFT;
+ break;
+ case CAR_DOOR_RR:
+ door = DOOR_REAR_RIGHT;
+ break;
+ }
+ if (pPed->GetPedState() == PED_EXIT_CAR || pPed->GetPedState() == PED_DRAG_FROM_CAR || !pPed->m_pMyVehicle->IsDoorClosed(door)) {
uint8 flags = 0;
if (pPed->m_pMyVehicle->IsBike()) {
if (pPed->m_vehDoor == CAR_DOOR_LF ||
@@ -848,11 +858,11 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE:
{
CollectParameters(&m_nIp, 6);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float range = *(float*)&ScriptParams[3];
- int mi = ScriptParams[4] < 0 ? CTheScripts::UsedObjectArray[-ScriptParams[4]].index : ScriptParams[4];
+ float range = GET_FLOAT_PARAM(3);
+ int mi = GET_INTEGER_PARAM(4) < 0 ? CTheScripts::UsedObjectArray[-GET_INTEGER_PARAM(4)].index : GET_INTEGER_PARAM(4);
int16 total;
CEntity* apEntities[16];
CWorld::FindObjectsOfTypeInRange(mi, pos, range, true, &total, 16, apEntities, true, false, false, true, true);
@@ -870,27 +880,25 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
}
}
if (pClosestEntity) {
- pClosestEntity->bIsVisible = (ScriptParams[5] != 0);
- CTheScripts::AddToInvisibilitySwapArray(pClosestEntity, ScriptParams[5] != 0);
+ pClosestEntity->bIsVisible = (GET_INTEGER_PARAM(5) != 0);
+ CTheScripts::AddToInvisibilitySwapArray(pClosestEntity, GET_INTEGER_PARAM(5) != 0);
}
return 0;
}
- /*
case COMMAND_HAS_CHAR_SPOTTED_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
UpdateCompareFlag(pPed->OurPedCanSeeThisOne(pTarget));
return 0;
}
- */
case COMMAND_SET_CHAR_OBJ_HAIL_TAXI:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_HAIL_TAXI);
@@ -899,110 +907,113 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_HAS_OBJECT_BEEN_DAMAGED:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
UpdateCompareFlag(pObject->bRenderDamaged || !pObject->bIsVisible);
return 0;
}
- /*
case COMMAND_START_KILL_FRENZY_HEADSHOT:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 8);
- CDarkel::StartFrenzy((eWeaponType)ScriptParams[0], ScriptParams[1], ScriptParams[2],
- ScriptParams[3], text, ScriptParams[4], ScriptParams[5],
- ScriptParams[6], ScriptParams[7] != 0, true);
+ CDarkel::StartFrenzy((eWeaponType)GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2),
+ GET_INTEGER_PARAM(3), text, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5),
+ GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7) != 0, true);
return 0;
}
case COMMAND_ACTIVATE_MILITARY_CRANE:
{
CollectParameters(&m_nIp, 10);
- float infX = *(float*)&ScriptParams[2];
- float infY = *(float*)&ScriptParams[3];
- float supX = *(float*)&ScriptParams[4];
- float supY = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(2);
+ float infY = GET_FLOAT_PARAM(3);
+ float supX = GET_FLOAT_PARAM(4);
+ float supY = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[4];
- supX = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(4);
+ supX = GET_FLOAT_PARAM(2);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[5];
- supY = *(float*)&ScriptParams[3];
+ infY = GET_FLOAT_PARAM(5);
+ supY = GET_FLOAT_PARAM(3);
}
CCranes::ActivateCrane(infX, supX, infY, supY,
- *(float*)&ScriptParams[6], *(float*)&ScriptParams[7], *(float*)&ScriptParams[8],
- DEGTORAD(*(float*)&ScriptParams[9]), false, true,
- *(float*)&ScriptParams[0], *(float*)&ScriptParams[1]);
+ GET_FLOAT_PARAM(6), GET_FLOAT_PARAM(7), GET_FLOAT_PARAM(8),
+ DEGTORAD(GET_FLOAT_PARAM(9)), false, true,
+ GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
return 0;
}
- */
case COMMAND_WARP_PLAYER_INTO_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, pVehicle);
pPed->WarpPedIntoCar(pVehicle);
+ pPed->RestorePreviousObjective();
return 0;
}
case COMMAND_WARP_CHAR_INTO_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
pPed->SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, pVehicle);
pPed->WarpPedIntoCar(pVehicle);
+ pPed->RestorePreviousObjective();
return 0;
}
- //case COMMAND_SWITCH_CAR_RADIO:
+ case COMMAND_SWITCH_CAR_RADIO:
+ CollectParameters(&m_nIp, 1);
+ DMAudio.ChangeMusicMode(GET_INTEGER_PARAM(0));
+ return 0;
//case COMMAND_SET_AUDIO_STREAM:
case COMMAND_PRINT_WITH_2_NUMBERS_BIG:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 4);
- CMessages::AddBigMessageWithNumber(text, ScriptParams[2], ScriptParams[3] - 1, ScriptParams[0], ScriptParams[1], -1, -1, -1, -1);
+ CMessages::AddBigMessageWithNumber(text, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3) - 1, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1);
return 0;
}
- /*
case COMMAND_PRINT_WITH_3_NUMBERS_BIG:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 5);
- CMessages::AddBigMessageWithNumber(text, ScriptParams[3], ScriptParams[4] - 1, ScriptParams[0], ScriptParams[1], ScriptParams[2], -1, -1, -1);
+ CMessages::AddBigMessageWithNumber(text, GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4) - 1, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), -1, -1, -1);
return 0;
}
+ /*
case COMMAND_PRINT_WITH_4_NUMBERS_BIG:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 6);
- CMessages::AddBigMessageWithNumber(text, ScriptParams[4], ScriptParams[5] - 1, ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], -1, -1);
+ CMessages::AddBigMessageWithNumber(text, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5) - 1, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), -1, -1);
return 0;
}
case COMMAND_PRINT_WITH_5_NUMBERS_BIG:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 7);
- CMessages::AddBigMessageWithNumber(text, ScriptParams[5], ScriptParams[6] - 1, ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], -1);
+ CMessages::AddBigMessageWithNumber(text, GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6) - 1, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), -1);
return 0;
}
case COMMAND_PRINT_WITH_6_NUMBERS_BIG:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 8);
- CMessages::AddBigMessageWithNumber(text, ScriptParams[6], ScriptParams[7] - 1, ScriptParams[0], ScriptParams[1], ScriptParams[2], ScriptParams[3], ScriptParams[4], ScriptParams[5]);
+ CMessages::AddBigMessageWithNumber(text, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7) - 1, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5));
return 0;
}
*/
case COMMAND_SET_CHAR_WAIT_STATE:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->SetWaitState((eWaitState)ScriptParams[1], ScriptParams[2] >= 0 ? &ScriptParams[2] : nil);
+ pPed->SetWaitState((eWaitState)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2) >= 0 ? &GET_INTEGER_PARAM(2) : nil);
return 0;
}
case COMMAND_SET_CAMERA_BEHIND_PLAYER:
@@ -1011,14 +1022,14 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
/*
case COMMAND_SET_MOTION_BLUR:
CollectParameters(&m_nIp, 1);
- TheCamera.SetMotionBlur(0, 0, 0, 0, ScriptParams[0]);
+ TheCamera.SetMotionBlur(0, 0, 0, 0, GET_INTEGER_PARAM(0));
return 0;
case COMMAND_PRINT_STRING_IN_STRING:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* string = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
- CMessages::AddMessageWithString(text, ScriptParams[0], ScriptParams[1], string);
+ CMessages::AddMessageWithString(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), string);
return 0;
}
*/
@@ -1045,7 +1056,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
ped->bRespondsToThreats = false;
ped->bAllowMedicsToReviveMe = false;
ped->bIsPlayerFriend = false;
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pos.z += 1.0f;
@@ -1057,16 +1068,16 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
CWorld::Add(ped);
ped->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pos);
CPopulation::ms_nTotalMissionPeds++;
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(ped);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(ped));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_STEAL_ANY_CAR);
@@ -1078,7 +1089,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
CollectParameters(&m_nIp, 1);
wchar* text1 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text2 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_Repeatedly(ScriptParams[0], text1, text2, nil, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_Repeatedly(GET_INTEGER_PARAM(0), text1, text2, nil, nil, nil, nil);
return 0;
}
case COMMAND_SET_2_PHONE_MESSAGES:
@@ -1086,7 +1097,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
CollectParameters(&m_nIp, 1);
wchar* text1 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text2 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], text1, text2, nil, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), text1, text2, nil, nil, nil, nil);
return 0;
}
case COMMAND_SET_3_REPEATED_PHONE_MESSAGES:
@@ -1095,7 +1106,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
wchar* text1 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text2 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text3 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_Repeatedly(ScriptParams[0], text1, text2, text3, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_Repeatedly(GET_INTEGER_PARAM(0), text1, text2, text3, nil, nil, nil);
return 0;
}
case COMMAND_SET_3_PHONE_MESSAGES:
@@ -1104,7 +1115,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
wchar* text1 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text2 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text3 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], text1, text2, text3, nil, nil, nil);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), text1, text2, text3, nil, nil, nil);
return 0;
}
case COMMAND_SET_4_REPEATED_PHONE_MESSAGES:
@@ -1114,7 +1125,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
wchar* text2 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text3 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text4 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_Repeatedly(ScriptParams[0], text1, text2, text3, text4, nil, nil);
+ gPhoneInfo.SetPhoneMessage_Repeatedly(GET_INTEGER_PARAM(0), text1, text2, text3, text4, nil, nil);
return 0;
}
case COMMAND_SET_4_PHONE_MESSAGES:
@@ -1124,30 +1135,30 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
wchar* text2 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text3 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text4 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], text1, text2, text3, text4, nil, nil);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), text1, text2, text3, text4, nil, nil);
return 0;
}
*/
case COMMAND_IS_SNIPER_BULLET_IN_AREA:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
UpdateCompareFlag(CBulletInfo::TestForSniperBullet(infX, supX, infY, supY, infZ, supZ));
return 0;
@@ -1156,33 +1167,33 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
case COMMAND_GIVE_PLAYER_DETONATOR:
CGarages::GivePlayerDetonator();
return 0;
- */
#ifdef GTA_SCRIPT_COLLECTIVE
case COMMAND_SET_COLL_OBJ_STEAL_ANY_CAR:
CollectParameters(&m_nIp, 1);
- CTheScripts::SetObjectiveForAllPedsInCollective(ScriptParams[0], OBJECTIVE_STEAL_ANY_CAR);
+ CTheScripts::SetObjectiveForAllPedsInCollective(GET_INTEGER_PARAM(0), OBJECTIVE_STEAL_ANY_CAR);
return 0;
#endif
+ */
case COMMAND_SET_OBJECT_VELOCITY:
{
CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->SetMoveSpeed(*(CVector*)&ScriptParams[1] * METERS_PER_SECOND_TO_GAME_SPEED);
+ pObject->SetMoveSpeed(GET_VECTOR_PARAM(1) * METERS_PER_SECOND_TO_GAME_SPEED);
return 0;
}
case COMMAND_SET_OBJECT_COLLISION:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->bUsesCollision = (ScriptParams[1] != 0);
+ pObject->bUsesCollision = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_IS_ICECREAM_JINGLE_ON:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
// Adding this check to correspond to command name.
// All original game scripts always assume that the vehicle is actually Mr. Whoopee,
@@ -1207,7 +1218,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
wchar* source = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* pstr = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CollectParameters(&m_nIp, 2);
- CMessages::AddMessageJumpQWithString(source, ScriptParams[0], ScriptParams[1], pstr);
+ CMessages::AddMessageJumpQWithString(source, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), pstr);
return 0;
}
//case COMMAND_PRINT_STRING_IN_STRING_SOON:
@@ -1220,7 +1231,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
wchar* text3 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text4 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text5 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_Repeatedly(ScriptParams[0], text1, text2, text3, text4, text5, nil);
+ gPhoneInfo.SetPhoneMessage_Repeatedly(GET_INTEGER_PARAM(0), text1, text2, text3, text4, text5, nil);
return 0;
}
case COMMAND_SET_5_PHONE_MESSAGES:
@@ -1231,7 +1242,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
wchar* text3 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text4 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text5 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], text1, text2, text3, text4, text5, nil);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), text1, text2, text3, text4, text5, nil);
return 0;
}
case COMMAND_SET_6_REPEATED_PHONE_MESSAGES:
@@ -1243,7 +1254,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
wchar* text4 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text5 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text6 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_Repeatedly(ScriptParams[0], text1, text2, text3, text4, text5, text6);
+ gPhoneInfo.SetPhoneMessage_Repeatedly(GET_INTEGER_PARAM(0), text1, text2, text3, text4, text5, text6);
return 0;
}
case COMMAND_SET_6_PHONE_MESSAGES:
@@ -1255,19 +1266,19 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
wchar* text4 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text5 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
wchar* text6 = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- gPhoneInfo.SetPhoneMessage_JustOnce(ScriptParams[0], text1, text2, text3, text4, text5, text6);
+ gPhoneInfo.SetPhoneMessage_JustOnce(GET_INTEGER_PARAM(0), text1, text2, text3, text4, text5, text6);
return 0;
}
*/
case COMMAND_IS_POINT_OBSCURED_BY_A_MISSION_ENTITY:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0] - *(float*)&ScriptParams[3];
- float supX = *(float*)&ScriptParams[0] + *(float*)&ScriptParams[3];
- float infY = *(float*)&ScriptParams[1] - *(float*)&ScriptParams[4];
- float supY = *(float*)&ScriptParams[1] + *(float*)&ScriptParams[4];
- float infZ = *(float*)&ScriptParams[2] - *(float*)&ScriptParams[5];
- float supZ = *(float*)&ScriptParams[2] + *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0) - GET_FLOAT_PARAM(3);
+ float supX = GET_FLOAT_PARAM(0) + GET_FLOAT_PARAM(3);
+ float infY = GET_FLOAT_PARAM(1) - GET_FLOAT_PARAM(4);
+ float supY = GET_FLOAT_PARAM(1) + GET_FLOAT_PARAM(4);
+ float infZ = GET_FLOAT_PARAM(2) - GET_FLOAT_PARAM(5);
+ float supZ = GET_FLOAT_PARAM(2) + GET_FLOAT_PARAM(5);
if (infX > supX) {
float tmp = infX;
infX = supX;
@@ -1304,19 +1315,20 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_ADD_TO_OBJECT_VELOCITY:
{
CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->AddToMoveSpeed(*(CVector*)&ScriptParams[1] * METERS_PER_SECOND_TO_GAME_SPEED);
+ pObject->AddToMoveSpeed(GET_VECTOR_PARAM(1) * METERS_PER_SECOND_TO_GAME_SPEED);
return 0;
}
+ /*
case COMMAND_DRAW_SPRITE:
{
CollectParameters(&m_nIp, 9);
CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_bIsUsed = true;
- CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_nTextureId = ScriptParams[0] - 1;
+ CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_nTextureId = GET_INTEGER_PARAM(0) - 1;
CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_sRect = CRect(
- *(float*)&ScriptParams[1], *(float*)&ScriptParams[2], *(float*)&ScriptParams[1] + *(float*)&ScriptParams[3], *(float*)&ScriptParams[2] + *(float*)&ScriptParams[4]);
- CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_sColor = CRGBA(ScriptParams[5], ScriptParams[6], ScriptParams[7], ScriptParams[8]);
+ GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(1) + GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(2) + GET_FLOAT_PARAM(4));
+ CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_sColor = CRGBA(GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8));
CTheScripts::NumberOfIntroRectanglesThisFrame++;
return 0;
}
@@ -1326,8 +1338,8 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_bIsUsed = true;
CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_nTextureId = -1;
CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_sRect = CRect(
- *(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[0] + *(float*)&ScriptParams[2], *(float*)&ScriptParams[1] + *(float*)&ScriptParams[3]);
- CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_sColor = CRGBA(ScriptParams[4], ScriptParams[5], ScriptParams[6], ScriptParams[7]);
+ GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(0) + GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(1) + GET_FLOAT_PARAM(3));
+ CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_sColor = CRGBA(GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7));
CTheScripts::NumberOfIntroRectanglesThisFrame++;
return 0;
}
@@ -1341,7 +1353,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
int slot = CTxdStore::FindTxdSlot("script");
CTxdStore::PushCurrentTxd();
CTxdStore::SetCurrentTxd(slot);
- CTheScripts::ScriptSprites[ScriptParams[0] - 1].SetTexture(str);
+ CTheScripts::ScriptSprites[GET_INTEGER_PARAM(0) - 1].SetTexture(str);
CTxdStore::PopCurrentTxd();
return 0;
}
@@ -1363,12 +1375,13 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
CTheScripts::RemoveScriptTextureDictionary();
return 0;
}
+ */
case COMMAND_SET_OBJECT_DYNAMIC:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
if (pObject->bIsStatic) {
pObject->SetIsStatic(false);
pObject->AddToMovingList();
@@ -1386,11 +1399,11 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_SET_CHAR_ANIM_SPEED:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CAnimBlendAssociation* pAssoc = RpAnimBlendClumpGetFirstAssociation(pPed->GetClump());
if (pAssoc)
- pAssoc->speed = *(float*)&ScriptParams[1];
+ pAssoc->speed = GET_FLOAT_PARAM(1);
return 0;
}
*/
@@ -1398,126 +1411,132 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
{
CollectParameters(&m_nIp, 1);
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
- DMAudio.PlayFrontEndTrack(ScriptParams[0] + STREAMED_SOUND_MISSION_COMPLETED - 1, FALSE);
+ DMAudio.PlayFrontEndTrack(GET_INTEGER_PARAM(0) + STREAMED_SOUND_MISSION_COMPLETED - 1, FALSE);
+#ifndef GTA_PSP
+ //DMAudio.SaveAnnouncementsWhenMissionPassedPlayed(); // TODO!
+#endif
return 0;
}
case COMMAND_CLEAR_AREA:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CWorld::ClearExcitingStuffFromArea(pos, *(float*)&ScriptParams[3], ScriptParams[4]);
+ CWorld::ClearExcitingStuffFromArea(pos, GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4));
+#ifdef GTA_MOBILE
+ // CPopulation::ms_blockPedCreationForAFrame = true;
+#endif
return 0;
}
case COMMAND_FREEZE_ONSCREEN_TIMER:
CollectParameters(&m_nIp, 1);
- CUserDisplay::OnscnTimer.m_bDisabled = ScriptParams[0] != 0;
+ CUserDisplay::OnscnTimer.m_bDisabled = GET_INTEGER_PARAM(0) != 0;
return 0;
case COMMAND_SWITCH_CAR_SIREN:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->m_bSirenOrAlarm = ScriptParams[1] != 0;
+ pVehicle->m_bSirenOrAlarm = GET_INTEGER_PARAM(1) != 0;
return 0;
}
/*
case COMMAND_SWITCH_PED_ROADS_ON_ANGLED:
{
CollectParameters(&m_nIp, 7);
- ThePaths.SwitchRoadsInAngledArea(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2],
- *(float*)&ScriptParams[3], *(float*)&ScriptParams[4], *(float*)&ScriptParams[5], *(float*)&ScriptParams[6], 0, 1);
+ ThePaths.SwitchRoadsInAngledArea(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2),
+ GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(4), GET_FLOAT_PARAM(5), GET_FLOAT_PARAM(6), 0, 1);
return 0;
}
+ */
case COMMAND_SWITCH_PED_ROADS_OFF_ANGLED:
CollectParameters(&m_nIp, 7);
- ThePaths.SwitchRoadsInAngledArea(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2],
- *(float*)&ScriptParams[3], *(float*)&ScriptParams[4], *(float*)&ScriptParams[5], *(float*)&ScriptParams[6], 0, 0);
+ ThePaths.SwitchRoadsInAngledArea(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2),
+ GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(4), GET_FLOAT_PARAM(5), GET_FLOAT_PARAM(6), 0, 0);
return 0;
+ /*
case COMMAND_SWITCH_ROADS_ON_ANGLED:
CollectParameters(&m_nIp, 7);
- ThePaths.SwitchRoadsInAngledArea(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2],
- *(float*)&ScriptParams[3], *(float*)&ScriptParams[4], *(float*)&ScriptParams[5], *(float*)&ScriptParams[6], 1, 1);
+ ThePaths.SwitchRoadsInAngledArea(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2),
+ GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(4), GET_FLOAT_PARAM(5), GET_FLOAT_PARAM(6), 1, 1);
return 0;
case COMMAND_SWITCH_ROADS_OFF_ANGLED:
CollectParameters(&m_nIp, 7);
- ThePaths.SwitchRoadsInAngledArea(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2],
- *(float*)&ScriptParams[3], *(float*)&ScriptParams[4], *(float*)&ScriptParams[5], *(float*)&ScriptParams[6], 1, 0);
+ ThePaths.SwitchRoadsInAngledArea(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2),
+ GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(4), GET_FLOAT_PARAM(5), GET_FLOAT_PARAM(6), 1, 0);
return 0;
- */
+ */
case COMMAND_SET_CAR_WATERTIGHT:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
if (pVehicle->IsBike()) {
CBike* pBike = (CBike*)pVehicle;
- pBike->bWaterTight = ScriptParams[1] != 0;
+ pBike->bWaterTight = GET_INTEGER_PARAM(1) != 0;
}
else if (pVehicle->IsCar()) {
CAutomobile* pCar = (CAutomobile*)pVehicle;
- pCar->bWaterTight = ScriptParams[1] != 0;
+ pCar->bWaterTight = GET_INTEGER_PARAM(1) != 0;
}
return 0;
}
case COMMAND_ADD_MOVING_PARTICLE_EFFECT:
{
CollectParameters(&m_nIp, 12);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float size = Max(0.0f, *(float*)&ScriptParams[7]);
- eParticleObjectType type = (eParticleObjectType)ScriptParams[0];
+ float size = Max(0.0f, GET_FLOAT_PARAM(7));
+ eParticleObjectType type = (eParticleObjectType)GET_INTEGER_PARAM(0);
RwRGBA color;
if (type == POBJECT_SMOKE_TRAIL){
color.alpha = -1;
- color.red = ScriptParams[8];
- color.green = ScriptParams[9];
- color.blue = ScriptParams[10];
+ color.red = GET_INTEGER_PARAM(8);
+ color.green = GET_INTEGER_PARAM(9);
+ color.blue = GET_INTEGER_PARAM(10);
}else{
color.alpha = color.red = color.blue = color.green = 0;
}
- CVector target = *(CVector*)&ScriptParams[4];
- CParticleObject::AddObject(type, pos, target, size, ScriptParams[11], color, 1);
+ CVector target = GET_VECTOR_PARAM(4);
+ CParticleObject::AddObject(type, pos, target, size, GET_INTEGER_PARAM(11), color, 1);
return 0;
}
case COMMAND_SET_CHAR_CANT_BE_DRAGGED_OUT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bDontDragMeOutCar = ScriptParams[1] != 0;
+ pPed->bDontDragMeOutCar = GET_INTEGER_PARAM(1) != 0;
return 0;
}
case COMMAND_TURN_CAR_TO_FACE_COORD:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
const CVector& pos = pVehicle->GetPosition();
- float heading = CGeneral::GetATanOfXY(pos.x - *(float*)&ScriptParams[1], pos.y - *(float*)&ScriptParams[2]) + HALFPI;
+ float heading = CGeneral::GetATanOfXY(pos.x - GET_FLOAT_PARAM(1), pos.y - GET_FLOAT_PARAM(2)) + HALFPI;
if (heading > TWOPI)
heading -= TWOPI;
pVehicle->SetHeading(heading);
return 0;
}
- /*
case COMMAND_IS_CRANE_LIFTING_CAR:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[2]);
- UpdateCompareFlag(CCranes::IsThisCarPickedUp(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], pVehicle));
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(2));
+ UpdateCompareFlag(CCranes::IsThisCarPickedUp(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), pVehicle));
return 0;
}
- */
case COMMAND_DRAW_SPHERE:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- C3dMarkers::PlaceMarkerSet((uintptr)this + m_nIp, MARKERTYPE_CYLINDER, pos, *(float*)&ScriptParams[3],
+ C3dMarkers::PlaceMarkerSet((uintptr)this + m_nIp, MARKERTYPE_CYLINDER, pos, GET_FLOAT_PARAM(3),
SPHERE_MARKER_R, SPHERE_MARKER_G, SPHERE_MARKER_B, SPHERE_MARKER_A,
SPHERE_MARKER_PULSE_PERIOD, SPHERE_MARKER_PULSE_FRACTION, 0);
return 0;
@@ -1525,15 +1544,15 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_SET_CAR_STATUS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->SetStatus(ScriptParams[1]);
+ pVehicle->SetStatus(GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_IS_CHAR_MALE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->m_nPedType != PEDTYPE_CIVFEMALE && pPed->m_nPedType != PEDTYPE_PROSTITUTE);
return 0;
@@ -1551,11 +1570,11 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_CHANGE_GARAGE_TYPE_WITH_CAR_MODEL:
{
CollectParameters(&m_nIp, 3);
- CGarages::ChangeGarageType(ScriptParams[0], ScriptParams[1], ScriptParams[2]);
+ CGarages::ChangeGarageType(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_FIND_DRUG_PLANE_COORDINATES:
- *(CVector*)&ScriptParams[0] = CPlane::FindDrugPlaneCoordinates();
+ SET_VECTOR_PARAM(0, CPlane::FindDrugPlaneCoordinates());
StoreParameters(&m_nIp, 3);
return 0;
*/
@@ -1570,33 +1589,33 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
return 0;
case COMMAND_POLICE_RADIO_MESSAGE:
CollectParameters(&m_nIp, 3);
- DMAudio.PlaySuspectLastSeen(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2]);
+ DMAudio.PlaySuspectLastSeen(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2));
return 0;
case COMMAND_SET_CAR_STRONG:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bTakeLessDamage = ScriptParams[1] != 0;
+ pVehicle->bTakeLessDamage = GET_INTEGER_PARAM(1) != 0;
return 0;
}
case COMMAND_REMOVE_ROUTE:
CollectParameters(&m_nIp, 1);
- CRouteNode::RemoveRoute(ScriptParams[0]);
+ CRouteNode::RemoveRoute(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_SWITCH_RUBBISH:
CollectParameters(&m_nIp, 1);
- CRubbish::SetVisibility(ScriptParams[0] != 0);
+ CRubbish::SetVisibility(GET_INTEGER_PARAM(0) != 0);
return 0;
case COMMAND_REMOVE_PARTICLE_EFFECTS_IN_AREA:
{
CollectParameters(&m_nIp, 6);
- float x1 = *(float*)&ScriptParams[0];
- float y1 = *(float*)&ScriptParams[1];
- float z1 = *(float*)&ScriptParams[2];
- float x2 = *(float*)&ScriptParams[3];
- float y2 = *(float*)&ScriptParams[4];
- float z2 = *(float*)&ScriptParams[5];
+ float x1 = GET_FLOAT_PARAM(0);
+ float y1 = GET_FLOAT_PARAM(1);
+ float z1 = GET_FLOAT_PARAM(2);
+ float x2 = GET_FLOAT_PARAM(3);
+ float y2 = GET_FLOAT_PARAM(4);
+ float z2 = GET_FLOAT_PARAM(5);
CParticleObject* tmp = CParticleObject::pCloseListHead;
while (tmp) {
CParticleObject* next = tmp->m_pNext;
@@ -1615,15 +1634,15 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
}
case COMMAND_SWITCH_STREAMING:
CollectParameters(&m_nIp, 1);
- CStreaming::ms_disableStreaming = ScriptParams[0] == 0;
+ CStreaming::ms_disableStreaming = GET_INTEGER_PARAM(0) == 0;
return 0;
case COMMAND_IS_GARAGE_OPEN:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CGarages::IsGarageOpen(ScriptParams[0]));
+ UpdateCompareFlag(CGarages::IsGarageOpen(GET_INTEGER_PARAM(0)));
return 0;
case COMMAND_IS_GARAGE_CLOSED:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CGarages::IsGarageClosed(ScriptParams[0]));
+ UpdateCompareFlag(CGarages::IsGarageClosed(GET_INTEGER_PARAM(0)));
return 0;
/*
case COMMAND_START_CATALINA_HELI:
@@ -1642,45 +1661,17 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_SWAP_NEAREST_BUILDING_MODEL:
{
CollectParameters(&m_nIp, 6);
- CVector pos = *(CVector*)&ScriptParams[0];
- if (pos.z <= MAP_Z_LOW_LIMIT)
- pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float radius = *(float*)&ScriptParams[3];
- int mi1 = ScriptParams[4] >= 0 ? ScriptParams[4] : CTheScripts::UsedObjectArray[-ScriptParams[4]].index;
- int mi2 = ScriptParams[5] >= 0 ? ScriptParams[5] : CTheScripts::UsedObjectArray[-ScriptParams[5]].index;
- int16 total;
- CEntity* apEntities[16];
- CWorld::FindObjectsOfTypeInRange(mi1, pos, radius, true, &total, 16, apEntities, true, false, false, false, false);
- if (total == 0)
- CWorld::FindObjectsOfTypeInRangeSectorList(mi1, CWorld::GetBigBuildingList(LEVEL_GENERIC), pos, radius, true, &total, 16, apEntities);
- if (total == 0)
- CWorld::FindObjectsOfTypeInRangeSectorList(mi1, CWorld::GetBigBuildingList(CTheZones::GetLevelFromPosition(&pos)), pos, radius, true, &total, 16, apEntities);
- CEntity* pClosestEntity = nil;
- float min_dist = 2.0f * radius;
- for (int i = 0; i < total; i++) {
- float dist = (apEntities[i]->GetPosition() - pos).Magnitude();
- if (dist < min_dist) {
- min_dist = dist;
- pClosestEntity = apEntities[i];
- }
- }
- if (!pClosestEntity) {
- printf("Failed to find building\n");
- return 0;
- }
- CBuilding* pReplacedBuilding = ((CBuilding*)pClosestEntity);
- pReplacedBuilding->ReplaceWithNewModel(mi2);
- CTheScripts::AddToBuildingSwapArray(pReplacedBuilding, mi1, mi2);
+ CTheScripts::SwapNearestBuildingModel(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5));
return 0;
}
case COMMAND_SWITCH_WORLD_PROCESSING:
CollectParameters(&m_nIp, 1);
- CWorld::bProcessCutsceneOnly = ScriptParams[0] == 0;
+ CWorld::bProcessCutsceneOnly = GET_INTEGER_PARAM(0) == 0;
return 0;
case COMMAND_REMOVE_ALL_PLAYER_WEAPONS:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
pPed->ClearWeapons();
return 0;
@@ -1689,7 +1680,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_GRAB_CATALINA_HELI:
{
CHeli* pHeli = CHeli::FindPointerToCatalinasHeli();
- ScriptParams[0] = pHeli ? CPools::GetVehiclePool()->GetIndex(pHeli) : -1;
+ SET_INTEGER_PARAM(0, pHeli ? CPools::GetVehiclePool()->GetIndex(pHeli) : -1);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1697,46 +1688,46 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_CLEAR_AREA_OF_CARS:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
CWorld::ClearCarsFromArea(infX, infY, infZ, supX, supY, supZ);
return 0;
}
case COMMAND_SET_ROTATING_GARAGE_DOOR:
CollectParameters(&m_nIp, 1);
- CGarages::SetGarageDoorToRotate(ScriptParams[0]);
+ CGarages::SetGarageDoorToRotate(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_ADD_SPHERE:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float radius = *(float*)&ScriptParams[3];
+ float radius = GET_FLOAT_PARAM(3);
CTheScripts::GetActualScriptSphereIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CTheScripts::AddScriptSphere((uintptr)this + m_nIp, pos, radius);
+ SET_INTEGER_PARAM(0, CTheScripts::AddScriptSphere((uintptr)this + m_nIp, pos, radius));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_REMOVE_SPHERE:
CollectParameters(&m_nIp, 1);
- CTheScripts::RemoveScriptSphere(ScriptParams[0]);
+ CTheScripts::RemoveScriptSphere(GET_INTEGER_PARAM(0));
return 0;
/*
case COMMAND_CATALINA_HELI_FLY_AWAY:
@@ -1746,9 +1737,9 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_SET_EVERYONE_IGNORE_PLAYER:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pPed->m_pWanted->m_bIgnoredByEveryone = true;
CWorld::StopAllLawEnforcersInTheirTracks();
}
@@ -1760,49 +1751,47 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_STORE_CAR_CHAR_IS_IN_NO_SAVE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVehicle* pVehicle = pPed->bInVehicle ? pPed->m_pMyVehicle : nil;
- ScriptParams[0] = CPools::GetVehiclePool()->GetIndex(pVehicle);
+ SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex(pVehicle));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_STORE_CAR_PLAYER_IS_IN_NO_SAVE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
CVehicle* pVehicle = pPed->bInVehicle ? pPed->m_pMyVehicle : nil;
- ScriptParams[0] = CPools::GetVehiclePool()->GetIndex(pVehicle);
+ SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex(pVehicle));
StoreParameters(&m_nIp, 1);
return 0;
}
/*
case COMMAND_IS_PHONE_DISPLAYING_MESSAGE:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(gPhoneInfo.IsMessageBeingDisplayed(ScriptParams[0]));
+ UpdateCompareFlag(gPhoneInfo.IsMessageBeingDisplayed(GET_INTEGER_PARAM(0)));
return 0;
*/
case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR);
- uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp);
+ uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
CollectParameters(&m_nIp, 1);
wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ???
strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- CUserDisplay::OnscnTimer.AddClock(var, onscreen_str, ScriptParams[0] != 0);
+ CUserDisplay::OnscnTimer.AddClock(var, onscreen_str, GET_INTEGER_PARAM(0) != 0);
return 0;
}
case COMMAND_DISPLAY_ONSCREEN_COUNTER_WITH_STRING:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR);
- uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp);
+ uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
CollectParameters(&m_nIp, 1);
wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ???
strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- CUserDisplay::OnscnTimer.AddCounter(var, ScriptParams[0], onscreen_str, 0);
+ CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(0), onscreen_str, 0, -1, nil, 0);
return 0;
}
case COMMAND_CREATE_RANDOM_CAR_FOR_CAR_PARK:
@@ -1833,6 +1822,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_FBICAR:
case MI_MRWHOOP:
case MI_BFINJECT:
+ case MI_HEARSE:
case MI_HUNTER:
case MI_POLICE:
case MI_ENFORCER:
@@ -1846,12 +1836,14 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_ANGEL:
case MI_COACH:
case MI_RCBANDIT:
- case MI_ROMERO:
case MI_PACKER:
case MI_SENTXS:
case MI_SQUALO:
case MI_SEASPAR:
case MI_PIZZABOY:
+ case MI_NOODLEBOY:
+ case MI_ANGEL2:
+ case MI_SANCHEZ2:
case MI_GANGBUR:
case MI_AIRTRAIN:
case MI_DEADDODO:
@@ -1861,8 +1853,10 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_FLATBED:
case MI_YANKEE:
case MI_CADDY:
- case MI_ZEBRA:
+ case MI_BORGNINE:
case MI_TOPFUN:
+ case MI_CAMPVAN:
+ case MI_BALLOT:
case MI_SKIMMER:
case MI_RCBARON:
case MI_RCRAIDER:
@@ -1900,6 +1894,8 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_BLOODRA:
case MI_BLOODRB:
case MI_VICECHEE:
+ case MI_CABBIE:
+ case MI_MAFIA:
model = -1;
break;
case MI_IDAHO:
@@ -1916,7 +1912,6 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_WASHING:
case MI_BOBCAT:
case MI_BANSHEE:
- case MI_CABBIE:
case MI_STALLION:
case MI_RUMPO:
case MI_ADMIRAL:
@@ -1951,10 +1946,10 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
}
else
car = new CAutomobile(model, RANDOM_VEHICLE);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
pos.z += car->GetDistanceFromCentreOfMassToBaseOfModel();
car->SetPosition(pos);
- car->SetHeading(DEGTORAD(*(float*)&ScriptParams[3]));
+ car->SetHeading(DEGTORAD(GET_FLOAT_PARAM(3)));
CTheScripts::ClearSpaceForMissionEntity(pos, car);
car->SetStatus(STATUS_ABANDONED);
car->bIsLocked = false;
@@ -1970,43 +1965,39 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
CWorld::Add(car);
return 0;
}
- /*
case COMMAND_IS_COLLISION_IN_MEMORY:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CCollision::ms_collisionInMemory == ScriptParams[0]);
+ UpdateCompareFlag(CGame::currLevel == GET_INTEGER_PARAM(0));
return 0;
- */
case COMMAND_SET_WANTED_MULTIPLIER:
CollectParameters(&m_nIp, 1);
- FindPlayerPed()->m_pWanted->m_fCrimeSensitivity = *(float*)&ScriptParams[0];
+ FindPlayerPed()->m_pWanted->m_fCrimeSensitivity = GET_FLOAT_PARAM(0);
return 0;
case COMMAND_SET_CAMERA_IN_FRONT_OF_PLAYER:
TheCamera.SetCameraDirectlyInFrontForFollowPed_CamOnAString();
return 0;
- /*
case COMMAND_IS_CAR_VISIBLY_DAMAGED:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(pVehicle->bIsDamaged);
return 0;
}
- */
case COMMAND_DOES_OBJECT_EXIST:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CPools::GetObjectPool()->GetAt(ScriptParams[0]));
+ UpdateCompareFlag(CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)));
return 0;
case COMMAND_LOAD_SCENE:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
#ifdef FIX_BUGS
CTimer::Suspend();
#else
CTimer::Stop();
#endif
- CStreaming::LoadScene(pos);
+ CStreaming::LoadSceneCollision(pos);
#ifdef FIX_BUGS
CTimer::Suspend();
#else
@@ -2017,20 +2008,20 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_ADD_STUCK_CAR_CHECK:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CTheScripts::StuckCars.AddCarToCheck(ScriptParams[0], *(float*)&ScriptParams[1], ScriptParams[2]);
+ CTheScripts::StuckCars.AddCarToCheck(GET_INTEGER_PARAM(0), GET_FLOAT_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_REMOVE_STUCK_CAR_CHECK:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::StuckCars.RemoveCarFromCheck(ScriptParams[0]);
+ CTheScripts::StuckCars.RemoveCarFromCheck(GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_CAR_STUCK:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CTheScripts::StuckCars.HasCarBeenStuckForAWhile(ScriptParams[0]));
+ UpdateCompareFlag(CTheScripts::StuckCars.HasCarBeenStuckForAWhile(GET_INTEGER_PARAM(0)));
return 0;
case COMMAND_LOAD_MISSION_AUDIO:
{
@@ -2039,41 +2030,41 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++)
str[i] = tolower(str[i]);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- DMAudio.PreloadMissionAudio(ScriptParams[0] - 1, str);
+ DMAudio.PreloadMissionAudio(GET_INTEGER_PARAM(0) - 1, str);
return 0;
}
case COMMAND_HAS_MISSION_AUDIO_LOADED:
{
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(DMAudio.GetMissionAudioLoadingStatus(ScriptParams[0] - 1) == 1);
+ UpdateCompareFlag(DMAudio.GetMissionAudioLoadingStatus(GET_INTEGER_PARAM(0) - 1) == 1);
return 0;
}
case COMMAND_PLAY_MISSION_AUDIO:
CollectParameters(&m_nIp, 1);
- DMAudio.PlayLoadedMissionAudio(ScriptParams[0] - 1);
+ DMAudio.PlayLoadedMissionAudio(GET_INTEGER_PARAM(0) - 1);
return 0;
case COMMAND_HAS_MISSION_AUDIO_FINISHED:
{
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(DMAudio.IsMissionAudioSampleFinished(ScriptParams[0] - 1));
+ UpdateCompareFlag(DMAudio.IsMissionAudioSampleFinished(GET_INTEGER_PARAM(0) - 1));
return 0;
}
case COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
int node = ThePaths.FindNodeClosestToCoors(pos, 0, 999999.9f, true, true);
- *(CVector*)&ScriptParams[0] = ThePaths.FindNodeCoorsForScript(node);
- *(float*)&ScriptParams[3] = ThePaths.FindNodeOrientationForCarPlacement(node);
+ SET_VECTOR_PARAM(0, ThePaths.FindNodeCoorsForScript(node));
+ SET_FLOAT_PARAM(3, ThePaths.FindNodeOrientationForCarPlacement(node));
StoreParameters(&m_nIp, 4);
return 0;
}
case COMMAND_HAS_IMPORT_GARAGE_SLOT_BEEN_FILLED:
{
CollectParameters(&m_nIp, 2);
- UpdateCompareFlag(CGarages::HasImportExportGarageCollectedThisCar(ScriptParams[0], ScriptParams[1] - 1));
+ UpdateCompareFlag(CGarages::HasImportExportGarageCollectedThisCar(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1) - 1));
return 0;
}
case COMMAND_CLEAR_THIS_PRINT:
@@ -2091,8 +2082,8 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_SET_MISSION_AUDIO_POSITION:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[1];
- DMAudio.SetMissionAudioLocation(ScriptParams[0] - 1, pos.x, pos.y, pos.z);
+ CVector pos = GET_VECTOR_PARAM(1);
+ DMAudio.SetMissionAudioLocation(GET_INTEGER_PARAM(0) - 1, pos.x, pos.y, pos.z);
return 0;
}
case COMMAND_ACTIVATE_SAVE_MENU:
@@ -2108,15 +2099,15 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
return 0;
case COMMAND_NO_SPECIAL_CAMERA_FOR_THIS_GARAGE:
CollectParameters(&m_nIp, 1);
- CGarages::SetLeaveCameraForThisGarage(ScriptParams[0]);
+ CGarages::SetLeaveCameraForThisGarage(GET_INTEGER_PARAM(0));
return 0;
/*
case COMMAND_ADD_BLIP_FOR_PICKUP_OLD:
{
CollectParameters(&m_nIp, 3);
- CObject* pObject = CPickups::aPickUps[CPickups::GetActualPickupIndex(ScriptParams[0])].m_pObject;
+ CObject* pObject = CPickups::aPickUps[CPickups::GetActualPickupIndex(GET_INTEGER_PARAM(0))].m_pObject;
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CRadar::SetEntityBlip(BLIP_OBJECT, CPools::GetObjectPool()->GetIndex(pObject), ScriptParams[1], (eBlipDisplay)ScriptParams[2]);
+ SET_INTEGER_PARAM(0, CRadar::SetEntityBlip(BLIP_OBJECT, CPools::GetObjectPool()->GetIndex(pObject), GET_INTEGER_PARAM(1), (eBlipDisplay)GET_INTEGER_PARAM(2)));
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -2124,11 +2115,11 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_ADD_BLIP_FOR_PICKUP:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPickups::aPickUps[CPickups::GetActualPickupIndex(ScriptParams[0])].m_pObject;
+ CObject* pObject = CPickups::aPickUps[CPickups::GetActualPickupIndex(GET_INTEGER_PARAM(0))].m_pObject;
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int handle = CRadar::SetEntityBlip(BLIP_OBJECT, CPools::GetObjectPool()->GetIndex(pObject), 6, BLIP_DISPLAY_BOTH);
CRadar::ChangeBlipScale(handle, 3);
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -2136,52 +2127,55 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_ADD_SPRITE_BLIP_FOR_PICKUP:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPickups::aPickUps[CPickups::GetActualPickupIndex(ScriptParams[0])].m_pObject;
+ CObject* pObject = CPickups::aPickUps[CPickups::GetActualPickupIndex(GET_INTEGER_PARAM(0))].m_pObject;
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int handle = CRadar::SetEntityBlip(BLIP_OBJECT, CPools::GetObjectPool()->GetIndex(pObject), 6, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(handle, ScriptParams[1]);
- ScriptParams[0] = handle;
+ CRadar::SetBlipSprite(handle, GET_INTEGER_PARAM(1));
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
*/
case COMMAND_SET_PED_DENSITY_MULTIPLIER:
CollectParameters(&m_nIp, 1);
- CPopulation::PedDensityMultiplier = *(float*)&ScriptParams[0];
+ CPopulation::PedDensityMultiplier = GET_FLOAT_PARAM(0);
return 0;
case COMMAND_FORCE_RANDOM_PED_TYPE:
CollectParameters(&m_nIp, 1);
- CPopulation::m_AllRandomPedsThisType = ScriptParams[0];
+ CPopulation::m_AllRandomPedsThisType = GET_INTEGER_PARAM(0);
return 0;
/*
case COMMAND_SET_TEXT_DRAW_BEFORE_FADE:
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bTextBeforeFade = ScriptParams[0] != 0;
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bTextBeforeFade = GET_INTEGER_PARAM(0) != 0;
return 0;
*/
case COMMAND_GET_COLLECTABLE1S_COLLECTED:
- ScriptParams[0] = CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages;
+ SET_INTEGER_PARAM(0, CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages);
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_SET_CHAR_OBJ_LEAVE_ANY_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_LEAVE_CAR, pPed->m_pMyVehicle);
return 0;
}
+ /*
case COMMAND_SET_SPRITES_DRAW_BEFORE_FADE:
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_bBeforeFade = ScriptParams[0] != 0;
+ CTheScripts::IntroRectangles[CTheScripts::NumberOfIntroRectanglesThisFrame].m_bBeforeFade = GET_INTEGER_PARAM(0) != 0;
return 0;
+ */
case COMMAND_SET_TEXT_RIGHT_JUSTIFY:
CollectParameters(&m_nIp, 1);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bRightJustify = ScriptParams[0] != 0;
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_bRightJustify = GET_INTEGER_PARAM(0) != 0;
return 0;
case COMMAND_PRINT_HELP:
{
+ /* maybe will be useful? TODO
if (CCamera::m_bUseMouse3rdPerson && (
strcmp((char*)&CTheScripts::ScriptSpace[m_nIp], "HELP15") == 0 ||
strcmp((char*)&CTheScripts::ScriptSpace[m_nIp], "GUN_2A") == 0 ||
@@ -2190,16 +2184,18 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
m_nIp += KEY_LENGTH_IN_SCRIPT;
return 0;
}
+ */
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
CHud::SetHelpMessage(text, false);
return 0;
}
case COMMAND_CLEAR_HELP:
+ //CHud::gLastPrintForeverString = false; TODO
CHud::SetHelpMessage(nil, false);
return 0;
case COMMAND_FLASH_HUD_OBJECT:
CollectParameters(&m_nIp, 1);
- CHud::m_ItemToFlash = ScriptParams[0];
+ CHud::m_ItemToFlash = GET_INTEGER_PARAM(0);
return 0;
default:
script_assert(0);
@@ -2264,6 +2260,38 @@ void CTheScripts::RemoveScriptSphere(int32 index)
ScriptSphereArray[index].m_Id = 0;
}
+void CTheScripts::SwapNearestBuildingModel(float x, float y, float z, float radius, int mi1, int mi2)
+{
+ CVector pos(x, y, z);
+ if (pos.z <= MAP_Z_LOW_LIMIT)
+ pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
+ if (mi1 < 0)
+ mi1 = CTheScripts::UsedObjectArray[-mi1].index;
+ if (mi2 < 0)
+ mi2 = CTheScripts::UsedObjectArray[-mi2].index;
+ int16 total;
+ CEntity* apEntities[16];
+ CWorld::FindObjectsOfTypeInRange(mi1, pos, radius, true, &total, 16, apEntities, true, false, false, false, false);
+ if (total == 0)
+ CWorld::FindObjectsOfTypeInRangeSectorList(mi1, CWorld::GetBigBuildingList(LEVEL_GENERIC), pos, radius, true, &total, 16, apEntities);
+ if (total == 0)
+ CWorld::FindObjectsOfTypeInRangeSectorList(mi1, CWorld::GetBigBuildingList(CTheZones::GetLevelFromPosition(&pos)), pos, radius, true, &total, 16, apEntities);
+ CEntity* pClosestEntity = nil;
+ float min_dist = 2.0f * radius;
+ for (int i = 0; i < total; i++) {
+ float dist = (apEntities[i]->GetPosition() - pos).Magnitude();
+ if (dist < min_dist) {
+ min_dist = dist;
+ pClosestEntity = apEntities[i];
+ }
+ }
+ CBuilding* pReplacedBuilding = ((CBuilding*)pClosestEntity);
+ if (pReplacedBuilding) {
+ pReplacedBuilding->ReplaceWithNewModel(mi2);
+ AddToBuildingSwapArray(pReplacedBuilding, mi1, mi2);
+ }
+}
+
void CTheScripts::AddToBuildingSwapArray(CBuilding* pBuilding, int32 old_model, int32 new_model)
{
int i = 0;
diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp
index e9f0967e..45952497 100644
--- a/src/control/Script5.cpp
+++ b/src/control/Script5.cpp
@@ -19,32 +19,20 @@
#include "main.h"
#include "SaveBuf.h"
-void CRunningScript::UpdateCompareFlag(bool flag)
+// LCS: file done except TODOs
+
+uint32 CRunningScript::CollectLocateParameters(uint32* pIp, bool b3D)
{
- if (m_bNotFlag)
- flag = !flag;
- if (m_nAndOrState == ANDOR_NONE) {
- m_bCondResult = flag;
- return;
- }
- if (m_nAndOrState >= ANDS_1 && m_nAndOrState <= ANDS_8) {
- m_bCondResult &= flag;
- if (m_nAndOrState == ANDS_1) {
- m_nAndOrState = ANDOR_NONE;
- return;
- }
- }
- else if (m_nAndOrState >= ORS_1 && m_nAndOrState <= ORS_8) {
- m_bCondResult |= flag;
- if (m_nAndOrState == ORS_1) {
- m_nAndOrState = ANDOR_NONE;
- return;
- }
- }
- else {
- return;
- }
- m_nAndOrState--;
+ CollectParameters(pIp, 1);
+ uint32 id = (uintptr)this + (*pIp - 16);
+ uint32 ip = *pIp;
+ uint8 type = CTheScripts::Read1ByteFromScript(&ip);
+ if (type >= ARGUMENT_LOCAL) {
+ ip--;
+ id = (uint32)(uintptr)GetPointerToScriptVariable(&ip, 0);
+ }
+ CollectParameters(pIp, b3D ? 7 : 5, &(ScriptParams[1]));
+ return id;
}
void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
@@ -64,8 +52,8 @@ void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
switch (command) {
case COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_2D:
case COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_3D:
@@ -81,37 +69,23 @@ void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
default:
break;
}
- X = *(float*)&ScriptParams[1];
- Y = *(float*)&ScriptParams[2];
+ X = GET_FLOAT_PARAM(1);
+ Y = GET_FLOAT_PARAM(2);
if (b3D) {
- Z = *(float*)&ScriptParams[3];
- dX = *(float*)&ScriptParams[4];
- dY = *(float*)&ScriptParams[5];
- dZ = *(float*)&ScriptParams[6];
- debug = ScriptParams[7];
+ Z = GET_FLOAT_PARAM(3);
+ dX = GET_FLOAT_PARAM(4);
+ dY = GET_FLOAT_PARAM(5);
+ dZ = GET_FLOAT_PARAM(6);
+ debug = GET_INTEGER_PARAM(7);
} else {
- dX = *(float*)&ScriptParams[3];
- dY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dX = GET_FLOAT_PARAM(3);
+ dY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
+ CVector pos = pPlayerInfo->GetPos();
if (!decided) {
- CVector pos = pPlayerInfo->GetPos();
result = false;
- bool in_area;
- if (b3D) {
- in_area = X - dX <= pos.x &&
- X + dX >= pos.x &&
- Y - dY <= pos.y &&
- Y + dY >= pos.y &&
- Z - dZ <= pos.z &&
- Z + dZ >= pos.z;
- } else {
- in_area = X - dX <= pos.x &&
- X + dX >= pos.x &&
- Y - dY <= pos.y &&
- Y + dY >= pos.y;
- }
- if (in_area) {
+ if (Abs(pos.x - X) < dX && Abs(pos.y - Y) < dY && (!b3D || Abs(pos.z - Z) < dZ)) {
switch (command) {
case COMMAND_LOCATE_PLAYER_ANY_MEANS_2D:
case COMMAND_LOCATE_PLAYER_ANY_MEANS_3D:
@@ -138,14 +112,16 @@ void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
}
}
UpdateCompareFlag(result);
- if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ if (debug && Abs(pos.x - X) < 80.0f && Abs(pos.y - Y) < 80.0f)
+ CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
@@ -163,8 +139,8 @@ void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CVector pos = pPlayerInfo->GetPos();
if (pTarget->bInVehicle) {
@@ -176,14 +152,14 @@ void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
}
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = false;
bool in_area;
@@ -227,12 +203,14 @@ void CRunningScript::LocatePlayerCharCommand(int32 command, uint32* pIp)
#else
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dX, b3D ? Z : MAP_Z_LOW_LIMIT);
#endif
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocatePlayerCarCommand(int32 command, uint32* pIp)
@@ -250,21 +228,21 @@ void CRunningScript::LocatePlayerCarCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CVector pos = pPlayerInfo->GetPos();
X = pTarget->GetPosition().x;
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = false;
bool in_area;
@@ -304,12 +282,14 @@ void CRunningScript::LocatePlayerCarCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
@@ -329,8 +309,8 @@ void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVector pos = pPed->InVehicle() ? pPed->m_pMyVehicle->GetPosition() : pPed->GetPosition();
switch (command) {
@@ -348,19 +328,19 @@ void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
default:
break;
}
- X = *(float*)&ScriptParams[1];
- Y = *(float*)&ScriptParams[2];
+ X = GET_FLOAT_PARAM(1);
+ Y = GET_FLOAT_PARAM(2);
if (b3D) {
- Z = *(float*)&ScriptParams[3];
- dX = *(float*)&ScriptParams[4];
- dY = *(float*)&ScriptParams[5];
- dZ = *(float*)&ScriptParams[6];
- debug = ScriptParams[7];
+ Z = GET_FLOAT_PARAM(3);
+ dX = GET_FLOAT_PARAM(4);
+ dY = GET_FLOAT_PARAM(5);
+ dZ = GET_FLOAT_PARAM(6);
+ debug = GET_INTEGER_PARAM(7);
}
else {
- dX = *(float*)&ScriptParams[3];
- dY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dX = GET_FLOAT_PARAM(3);
+ dY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (!decided) {
result = false;
@@ -407,13 +387,15 @@ void CRunningScript::LocateCharCommand(int32 command, uint32* pIp)
}
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
@@ -431,9 +413,9 @@ void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CVector pos = pPed->bInVehicle ? pPed->m_pMyVehicle->GetPosition() : pPed->GetPosition();
if (pTarget->bInVehicle) {
@@ -446,14 +428,14 @@ void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
}
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = false;
bool in_area;
@@ -497,12 +479,14 @@ void CRunningScript::LocateCharCharCommand(int32 command, uint32* pIp)
#else
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dX, b3D ? Z : MAP_Z_LOW_LIMIT);
#endif
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCharCarCommand(int32 command, uint32* pIp)
@@ -520,22 +504,22 @@ void CRunningScript::LocateCharCarCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CVector pos = pPed->bInVehicle ? pPed->m_pMyVehicle->GetPosition() : pPed->GetPosition();
X = pTarget->GetPosition().x;
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = false;
bool in_area;
@@ -575,12 +559,14 @@ void CRunningScript::LocateCharCarCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCharObjectCommand(int32 command, uint32* pIp)
@@ -598,22 +584,22 @@ void CRunningScript::LocateCharObjectCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CObject* pTarget = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pTarget = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
CVector pos = pPed->bInVehicle ? pPed->m_pMyVehicle->GetPosition() : pPed->GetPosition();
X = pTarget->GetPosition().x;
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = false;
bool in_area;
@@ -653,12 +639,14 @@ void CRunningScript::LocateCharObjectCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
@@ -674,8 +662,8 @@ void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CVector pos = pVehicle->GetPosition();
switch (command) {
@@ -689,19 +677,19 @@ void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
default:
break;
}
- X = *(float*)&ScriptParams[1];
- Y = *(float*)&ScriptParams[2];
+ X = GET_FLOAT_PARAM(1);
+ Y = GET_FLOAT_PARAM(2);
if (b3D) {
- Z = *(float*)&ScriptParams[3];
- dX = *(float*)&ScriptParams[4];
- dY = *(float*)&ScriptParams[5];
- dZ = *(float*)&ScriptParams[6];
- debug = ScriptParams[7];
+ Z = GET_FLOAT_PARAM(3);
+ dX = GET_FLOAT_PARAM(4);
+ dY = GET_FLOAT_PARAM(5);
+ dZ = GET_FLOAT_PARAM(6);
+ debug = GET_INTEGER_PARAM(7);
}
else {
- dX = *(float*)&ScriptParams[3];
- dY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dX = GET_FLOAT_PARAM(3);
+ dY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (!decided) {
result = false;
@@ -724,13 +712,15 @@ void CRunningScript::LocateCarCommand(int32 command, uint32* pIp)
}
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateObjectCommand(int32 command, uint32* pIp)
@@ -745,23 +735,23 @@ void CRunningScript::LocateObjectCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CVector pos = pObject->GetPosition();
- X = *(float*)&ScriptParams[1];
- Y = *(float*)&ScriptParams[2];
+ X = GET_FLOAT_PARAM(1);
+ Y = GET_FLOAT_PARAM(2);
if (b3D) {
- Z = *(float*)&ScriptParams[3];
- dX = *(float*)&ScriptParams[4];
- dY = *(float*)&ScriptParams[5];
- dZ = *(float*)&ScriptParams[6];
- debug = ScriptParams[7];
+ Z = GET_FLOAT_PARAM(3);
+ dX = GET_FLOAT_PARAM(4);
+ dY = GET_FLOAT_PARAM(5);
+ dZ = GET_FLOAT_PARAM(6);
+ debug = GET_INTEGER_PARAM(7);
}
else {
- dX = *(float*)&ScriptParams[3];
- dY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dX = GET_FLOAT_PARAM(3);
+ dY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
result = false;
bool in_area;
@@ -782,13 +772,15 @@ void CRunningScript::LocateObjectCommand(int32 command, uint32* pIp)
result = in_area;
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateSniperBulletCommand(int32 command, uint32* pIp)
@@ -804,30 +796,32 @@ void CRunningScript::LocateSniperBulletCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 7 : 5);
- X = *(float*)&ScriptParams[0];
- Y = *(float*)&ScriptParams[1];
+ X = GET_FLOAT_PARAM(0);
+ Y = GET_FLOAT_PARAM(1);
if (b3D) {
- Z = *(float*)&ScriptParams[2];
- dX = *(float*)&ScriptParams[3];
- dY = *(float*)&ScriptParams[4];
- dZ = *(float*)&ScriptParams[5];
- debug = ScriptParams[6];
+ Z = GET_FLOAT_PARAM(2);
+ dX = GET_FLOAT_PARAM(3);
+ dY = GET_FLOAT_PARAM(4);
+ dZ = GET_FLOAT_PARAM(5);
+ debug = GET_INTEGER_PARAM(6);
}
else {
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
- debug = ScriptParams[4];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
+ debug = GET_INTEGER_PARAM(4);
}
result = CBulletInfo::TestForSniperBullet(X - dX, X + dX, Y - dY, Y + dY, b3D ? Z - dZ : -1000.0f, b3D ? Z + dZ : 1000.0f);
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
@@ -847,8 +841,8 @@ void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
switch (command) {
case COMMAND_IS_PLAYER_STOPPED_IN_AREA_3D:
case COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_3D:
@@ -864,23 +858,23 @@ void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
default:
break;
}
- infX = *(float*)&ScriptParams[1];
- infY = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(1);
+ infY = GET_FLOAT_PARAM(2);
if (b3D) {
- infZ = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[6];
+ infZ = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(6);
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- debug = ScriptParams[7];
+ debug = GET_INTEGER_PARAM(7);
}
else {
- supX = *(float*)&ScriptParams[3];
- supY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ supX = GET_FLOAT_PARAM(3);
+ supY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (infX > supX) {
float tmp = infX;
@@ -939,12 +933,14 @@ void CRunningScript::PlayerInAreaCheckCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
else
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
}
+ */
}
void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
@@ -965,7 +961,7 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 9 : 7);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
switch (command) {
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D:
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D:
@@ -981,25 +977,25 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
default:
break;
}
- infX = *(float*)&ScriptParams[1];
- infY = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(1);
+ infY = GET_FLOAT_PARAM(2);
if (b3D) {
- infZ = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[6];
+ infZ = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(6);
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- side2length = *(float*)&ScriptParams[7];
- debug = ScriptParams[8];
+ side2length = GET_FLOAT_PARAM(7);
+ debug = GET_INTEGER_PARAM(8);
}
else {
- supX = *(float*)&ScriptParams[3];
- supY = *(float*)&ScriptParams[4];
- side2length = *(float*)&ScriptParams[5];
- debug = ScriptParams[6];
+ supX = GET_FLOAT_PARAM(3);
+ supY = GET_FLOAT_PARAM(4);
+ side2length = GET_FLOAT_PARAM(5);
+ debug = GET_INTEGER_PARAM(6);
}
float initAngle = CGeneral::GetRadianAngleBetweenPoints(infX, infY, supX, supY) + HALFPI;
while (initAngle < 0.0f)
@@ -1062,6 +1058,7 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
if (debug)
CTheScripts::HighlightImportantAngledArea((uintptr)this + m_nIp, infX, infY, supX, supY,
rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugAngledCube(infX, infY, infZ, supX, supY, supZ,
@@ -1070,6 +1067,7 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
CTheScripts::DrawDebugAngledSquare(infX, infY, supX, supY,
rotatedSupX, rotatedSupY, rotatedInfX, rotatedInfY);
}
+ */
}
void CRunningScript::CharInAreaCheckCommand(int32 command, uint32* pIp)
@@ -1089,8 +1087,8 @@ void CRunningScript::CharInAreaCheckCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVector pos = pPed->InVehicle() ? pPed->m_pMyVehicle->GetPosition() : pPed->GetPosition();
switch (command) {
@@ -1108,23 +1106,23 @@ void CRunningScript::CharInAreaCheckCommand(int32 command, uint32* pIp)
default:
break;
}
- infX = *(float*)&ScriptParams[1];
- infY = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(1);
+ infY = GET_FLOAT_PARAM(2);
if (b3D) {
- infZ = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[6];
+ infZ = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(6);
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- debug = ScriptParams[7];
+ debug = GET_INTEGER_PARAM(7);
}
else {
- supX = *(float*)&ScriptParams[3];
- supY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ supX = GET_FLOAT_PARAM(3);
+ supY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (infX > supX) {
float tmp = infX;
@@ -1181,13 +1179,15 @@ void CRunningScript::CharInAreaCheckCommand(int32 command, uint32* pIp)
}
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
else
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
}
+ */
}
void CRunningScript::CarInAreaCheckCommand(int32 command, uint32* pIp)
@@ -1203,8 +1203,8 @@ void CRunningScript::CarInAreaCheckCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CVector pos = pVehicle->GetPosition();
switch (command) {
@@ -1218,23 +1218,23 @@ void CRunningScript::CarInAreaCheckCommand(int32 command, uint32* pIp)
default:
break;
}
- infX = *(float*)&ScriptParams[1];
- infY = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(1);
+ infY = GET_FLOAT_PARAM(2);
if (b3D) {
- infZ = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[6];
+ infZ = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(6);
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- debug = ScriptParams[7];
+ debug = GET_INTEGER_PARAM(7);
}
else {
- supX = *(float*)&ScriptParams[3];
- supY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ supX = GET_FLOAT_PARAM(3);
+ supY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (infX > supX) {
float tmp = infX;
@@ -1279,13 +1279,15 @@ void CRunningScript::CarInAreaCheckCommand(int32 command, uint32* pIp)
}
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
else
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
}
+ */
}
void CRunningScript::ObjectInAreaCheckCommand(int32 command, uint32* pIp)
@@ -1300,27 +1302,27 @@ void CRunningScript::ObjectInAreaCheckCommand(int32 command, uint32* pIp)
b3D = false;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CVector pos = pObject->GetPosition();
- infX = *(float*)&ScriptParams[1];
- infY = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(1);
+ infY = GET_FLOAT_PARAM(2);
if (b3D) {
- infZ = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[6];
+ infZ = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(6);
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- debug = ScriptParams[7];
+ debug = GET_INTEGER_PARAM(7);
}
else {
- supX = *(float*)&ScriptParams[3];
- supY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ supX = GET_FLOAT_PARAM(3);
+ supY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (infX > supX) {
float tmp = infX;
@@ -1361,13 +1363,15 @@ void CRunningScript::ObjectInAreaCheckCommand(int32 command, uint32* pIp)
}
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
else
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
}
+ */
}
void CRunningScript::DoDeatharrestCheck()
@@ -1390,7 +1394,8 @@ void CRunningScript::DoDeatharrestCheck()
script_assert(m_nStackPointer > 0);
while (m_nStackPointer > 1)
--m_nStackPointer;
- m_nIp = m_anStack[--m_nStackPointer];
+ ReturnFromGosubOrFunction();
+ m_nLocalsPointer = 0;
CMessages::ClearSmallMessagesOnly();
*(int32*)&CTheScripts::ScriptSpace[CTheScripts::OnAMissionFlag] = 0;
m_bDeatharrestExecuted = true;
@@ -1444,24 +1449,24 @@ void CRunningScript::LocateCollectiveCommand(int32 command, uint32* pIp)
b3D = true;
break;
}
- CollectParameters(pIp, b3D ? 8 : 6);
- X = *(float*)&ScriptParams[1];
- Y = *(float*)&ScriptParams[2];
+ uint32 id = CollectLocateParameters(pIp, b3D);
+ X = GET_FLOAT_PARAM(1);
+ Y = GET_FLOAT_PARAM(2);
if (b3D) {
- Z = *(float*)&ScriptParams[3];
- dX = *(float*)&ScriptParams[4];
- dY = *(float*)&ScriptParams[5];
- dZ = *(float*)&ScriptParams[6];
- debug = ScriptParams[7];
+ Z = GET_FLOAT_PARAM(3);
+ dX = GET_FLOAT_PARAM(4);
+ dY = GET_FLOAT_PARAM(5);
+ dZ = GET_FLOAT_PARAM(6);
+ debug = GET_INTEGER_PARAM(7);
}
else {
- dX = *(float*)&ScriptParams[3];
- dY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dX = GET_FLOAT_PARAM(3);
+ dY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
result = true;
for (int i = 0; i < MAX_NUM_COLLECTIVES && result; i++) {
- if (ScriptParams[0] != CTheScripts::CollectiveArray[i].colIndex)
+ if (GET_INTEGER_PARAM(0) != CTheScripts::CollectiveArray[i].colIndex)
continue;
CPed* pPed = CPools::GetPedPool()->GetAt(CTheScripts::CollectiveArray[i].pedIndex);
if (!pPed) {
@@ -1522,13 +1527,15 @@ void CRunningScript::LocateCollectiveCommand(int32 command, uint32* pIp)
}
UpdateCompareFlag(result);
if (debug)
- CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
@@ -1546,7 +1553,7 @@ void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
if (pTarget->bInVehicle) {
X = pTarget->m_pMyVehicle->GetPosition().x;
@@ -1558,18 +1565,18 @@ void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
}
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = true;
for (int i = 0; i < MAX_NUM_COLLECTIVES && result; i++) {
- if (ScriptParams[0] != CTheScripts::CollectiveArray[i].colIndex)
+ if (GET_INTEGER_PARAM(0) != CTheScripts::CollectiveArray[i].colIndex)
continue;
CPed* pPed = CPools::GetPedPool()->GetAt(CTheScripts::CollectiveArray[i].pedIndex);
if (!pPed) {
@@ -1614,12 +1621,14 @@ void CRunningScript::LocateCollectiveCharCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCollectiveCarCommand(int32 command, uint32* pIp)
@@ -1637,23 +1646,23 @@ void CRunningScript::LocateCollectiveCarCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pTarget = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
X = pTarget->GetPosition().x;
Y = pTarget->GetPosition().y;
Z = pTarget->GetPosition().z;
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = true;
for (int i = 0; i < MAX_NUM_COLLECTIVES && result; i++) {
- if (ScriptParams[0] != CTheScripts::CollectiveArray[i].colIndex)
+ if (GET_INTEGER_PARAM(0) != CTheScripts::CollectiveArray[i].colIndex)
continue;
CPed* pPed = CPools::GetPedPool()->GetAt(CTheScripts::CollectiveArray[i].pedIndex);
if (!pPed) {
@@ -1698,12 +1707,14 @@ void CRunningScript::LocateCollectiveCarCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::LocateCollectivePlayerCommand(int32 command, uint32* pIp)
@@ -1721,22 +1732,22 @@ void CRunningScript::LocateCollectivePlayerCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 6 : 5);
- CVector pos = CWorld::Players[ScriptParams[1]].GetPos();
+ CVector pos = CWorld::Players[GET_INTEGER_PARAM(1)].GetPos();
X = pos.x;
Y = pos.y;
Z = pos.z;
- dX = *(float*)&ScriptParams[2];
- dY = *(float*)&ScriptParams[3];
+ dX = GET_FLOAT_PARAM(2);
+ dY = GET_FLOAT_PARAM(3);
if (b3D) {
- dZ = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ dZ = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
else {
- debug = ScriptParams[4];
+ debug = GET_INTEGER_PARAM(4);
}
result = true;
for (int i = 0; i < MAX_NUM_COLLECTIVES && result; i++) {
- if (ScriptParams[0] != CTheScripts::CollectiveArray[i].colIndex)
+ if (GET_INTEGER_PARAM(0) != CTheScripts::CollectiveArray[i].colIndex)
continue;
CPed* pPed = CPools::GetPedPool()->GetAt(CTheScripts::CollectiveArray[i].pedIndex);
if (!pPed) {
@@ -1781,12 +1792,14 @@ void CRunningScript::LocateCollectivePlayerCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(X - dX, Y - dY, Z - dZ, X + dX, Y + dY, Z + dZ);
else
CTheScripts::DrawDebugSquare(X - dX, Y - dY, X + dX, Y + dY);
}
+ */
}
void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
@@ -1807,23 +1820,23 @@ void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
break;
}
CollectParameters(pIp, b3D ? 8 : 6);
- infX = *(float*)&ScriptParams[1];
- infY = *(float*)&ScriptParams[2];
+ infX = GET_FLOAT_PARAM(1);
+ infY = GET_FLOAT_PARAM(2);
if (b3D) {
- infZ = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[6];
+ infZ = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(6);
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[6];
- supZ = *(float*)&ScriptParams[3];
+ infZ = GET_FLOAT_PARAM(6);
+ supZ = GET_FLOAT_PARAM(3);
}
- debug = ScriptParams[7];
+ debug = GET_INTEGER_PARAM(7);
}
else {
- supX = *(float*)&ScriptParams[3];
- supY = *(float*)&ScriptParams[4];
- debug = ScriptParams[5];
+ supX = GET_FLOAT_PARAM(3);
+ supY = GET_FLOAT_PARAM(4);
+ debug = GET_INTEGER_PARAM(5);
}
if (infX > supX) {
float tmp = infX;
@@ -1837,7 +1850,7 @@ void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
}
result = true;
for (int i = 0; i < MAX_NUM_COLLECTIVES && result; i++) {
- if (ScriptParams[0] != CTheScripts::CollectiveArray[i].colIndex)
+ if (GET_INTEGER_PARAM(0) != CTheScripts::CollectiveArray[i].colIndex)
continue;
CPed* pPed = CPools::GetPedPool()->GetAt(CTheScripts::CollectiveArray[i].pedIndex);
if (!pPed) {
@@ -1899,12 +1912,14 @@ void CRunningScript::CollectiveInAreaCheckCommand(int32 command, uint32* pIp)
UpdateCompareFlag(result);
if (debug)
CTheScripts::HighlightImportantArea((uintptr)this + m_nIp, infX, infY, supX, supY, b3D ? (infZ + supZ) / 2 : MAP_Z_LOW_LIMIT);
+ /*
if (CTheScripts::DbgFlag) {
if (b3D)
CTheScripts::DrawDebugCube(infX, infY, infZ, supX, supY, supZ);
else
CTheScripts::DrawDebugSquare(infX, infY, supX, supY);
}
+ */
}
#endif
@@ -1991,8 +2006,9 @@ void CTheScripts::PrintListSizes()
debug("active: %d, idle: %d", active, idle);
}
-uint32 DbgLineColour = 0x0000FFFF; // r = 0, g = 0, b = 255, a = 255
+//uint32 DbgLineColour = 0x0000FFFF; // r = 0, g = 0, b = 255, a = 255
+/*
void CTheScripts::DrawDebugSquare(float infX, float infY, float supX, float supY)
{
CColPoint tmpCP;
@@ -2099,9 +2115,10 @@ void CTheScripts::RenderTheScriptDebugLines()
NumScriptDebugLines = 0;
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)0);
}
+*/
-#define SCRIPT_DATA_SIZE sizeof(CTheScripts::OnAMissionFlag) +\
- 4 * sizeof(uint32) * MAX_NUM_BUILDING_SWAPS + 2 * sizeof(uint32) * MAX_NUM_INVISIBILITY_SETTINGS + 5 * sizeof(uint32)
+#define SCRIPT_DATA_SIZE sizeof(CTheScripts::OnAMissionFlag) + sizeof(tCollectiveData) * MAX_NUM_COLLECTIVES +\
+ 4 * sizeof(uint32) * MAX_NUM_BUILDING_SWAPS + 2 * sizeof(uint32) * MAX_NUM_INVISIBILITY_SETTINGS + 4 * sizeof(uint32)
void CTheScripts::SaveAllScripts(uint8* buf, uint32* size)
{
@@ -2110,7 +2127,7 @@ INITSAVEBUF
uint32 runningScripts = 0;
for (CRunningScript* pScript = pActiveScripts; pScript; pScript = pScript->GetNext())
runningScripts++;
- *size = CRunningScript::nSaveStructSize * runningScripts + varSpace + SCRIPT_DATA_SIZE + SAVE_HEADER_SIZE + 3 * sizeof(uint32);
+ *size = CRunningScript::nSaveStructSize * runningScripts + varSpace + SCRIPT_DATA_SIZE + SAVE_HEADER_SIZE + 5 * sizeof(uint32);
WriteSaveHeader(buf, 'S', 'C', 'R', '\0', *size - SAVE_HEADER_SIZE);
WriteSaveBuf(buf, varSpace);
for (uint32 i = 0; i < varSpace; i++)
@@ -2122,6 +2139,9 @@ INITSAVEBUF
WriteSaveBuf(buf, script_data_size);
WriteSaveBuf(buf, OnAMissionFlag);
WriteSaveBuf(buf, LastMissionPassedTime);
+ for (uint32 i = 0; i < MAX_NUM_COLLECTIVES; i++)
+ WriteSaveBuf(buf, CollectiveArray[i]);
+ WriteSaveBuf(buf, NextFreeCollectiveIndex);
for (uint32 i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) {
CBuilding* pBuilding = BuildingSwapArray[i].m_pBuilding;
uint32 type, handle;
@@ -2183,24 +2203,37 @@ INITSAVEBUF
VALIDATESAVEBUF(*size)
}
-void CTheScripts::LoadAllScripts(uint8* buf, uint32 size)
+bool CTheScripts::LoadAllScripts(uint8* buf, uint32 size)
{
- Init();
INITSAVEBUF
CheckSaveHeader(buf, 'S', 'C', 'R', '\0', size - SAVE_HEADER_SIZE);
uint32 varSpace, type, handle;
uint32 tmp;
ReadSaveBuf(&varSpace, buf);
- for (uint32 i = 0; i < varSpace; i++)
- ReadSaveBuf(&ScriptSpace[i], buf);
+ if (*(int32*)&ScriptSpace[0] != *(int32*)&buf[0] || *(int32*)&ScriptSpace[4] != *(int32*)&buf[4]) {
+ printf("\n===================================================\nSave Game Mismatch!!!\n");
+ return false;
+ }
+ for (uint32 i = 0; i < varSpace; i++) { // this is not exactly what function does
+ if (i < 8)
+ ReadSaveBuf(&ScriptSpace[i], buf);
+ else if (GetSaveVarIndex(i / 4 * 4) != -1)
+ ReadSaveBuf(&ScriptSpace[i], buf);
+ else
+ SkipSaveBuf(buf, 1);
+ }
ReadSaveBuf(&tmp, buf);
script_assert(tmp == SCRIPT_DATA_SIZE);
ReadSaveBuf(&OnAMissionFlag, buf);
ReadSaveBuf(&LastMissionPassedTime, buf);
+ for (uint32 i = 0; i < MAX_NUM_COLLECTIVES; i++)
+ ReadSaveBuf(&CollectiveArray[i], buf);
+ ReadSaveBuf(&NextFreeCollectiveIndex, buf);
for (uint32 i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) {
ReadSaveBuf(&type, buf);
ReadSaveBuf(&handle, buf);
+ /*
switch (type) {
case 0:
BuildingSwapArray[i].m_pBuilding = nil;
@@ -2214,14 +2247,19 @@ INITSAVEBUF
default:
script_assert(false);
}
- ReadSaveBuf(&BuildingSwapArray[i].m_nNewModel, buf);
- ReadSaveBuf(&BuildingSwapArray[i].m_nOldModel, buf);
+ */
+ /*BuildingSwapArray[i].m_nNewModel = ReadSaveBuf<uint32>(buf);*/
+ /*BuildingSwapArray[i].m_nOldModel = ReadSaveBuf<uint32>(buf);*/
+ SkipSaveBuf(buf, 8);
+ /*
if (BuildingSwapArray[i].m_pBuilding)
BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nNewModel);
+ */
}
for (uint32 i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) {
ReadSaveBuf(&type, buf);
ReadSaveBuf(&handle, buf);
+ /*
switch (type) {
case 0:
InvisibilitySettingArray[i] = nil;
@@ -2243,12 +2281,16 @@ INITSAVEBUF
}
if (InvisibilitySettingArray[i])
InvisibilitySettingArray[i]->bIsVisible = false;
+ */
}
bool tmpBool;
ReadSaveBuf(&tmpBool, buf);
script_assert(tmpBool == bUsingAMultiScriptFile);
- ReadSaveBuf(&bPlayerHasMetDebbieHarry, buf);
- SkipSaveBuf(buf, 2);
+ ///*bPlayerHasMetDebbieHarry = */ReadSaveBuf<uint8>(buf);
+ //ReadSaveBuf<uint16>(buf);
+
+ SkipSaveBuf(buf, 3);
+
ReadSaveBuf(&tmp, buf);
script_assert(tmp == MainScriptSize);
ReadSaveBuf(&tmp, buf);
@@ -2261,7 +2303,8 @@ INITSAVEBUF
uint32 runningScripts;
ReadSaveBuf(&runningScripts, buf);
for (uint32 i = 0; i < runningScripts; i++)
- StartNewScript(0)->Load(buf);
+ CRunningScript().Load(buf);
+ return true;
VALIDATESAVEBUF(size)
}
@@ -2271,6 +2314,7 @@ void CRunningScript::Save(uint8*& buf)
{
#ifdef COMPATIBLE_SAVES
ZeroSaveBuf(buf, 8);
+ WriteSaveBuf<int32>(buf, m_nId);
for (int i = 0; i < 8; i++)
WriteSaveBuf(buf, m_abScriptName[i]);
WriteSaveBuf(buf, m_nIp);
@@ -2282,10 +2326,11 @@ void CRunningScript::Save(uint8*& buf)
WriteSaveBuf(buf, m_nStackPointer);
ZeroSaveBuf(buf, 2);
#ifdef CHECK_STRUCT_SIZES
- static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18");
+ static_assert(NUM_LOCAL_VARS + 8 + NUM_TIMERS == 106, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 106");
#endif
- for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
+ for (int i = 0; i < NUM_LOCAL_VARS + 8 + NUM_TIMERS; i++)
WriteSaveBuf(buf, m_anLocalVariables[i]);
+ WriteSaveBuf(buf, m_nLocalsPointer);
WriteSaveBuf(buf, m_bIsActive);
WriteSaveBuf(buf, m_bCondResult);
WriteSaveBuf(buf, m_bIsMissionScript);
@@ -2306,6 +2351,7 @@ void CRunningScript::Load(uint8*& buf)
{
#ifdef COMPATIBLE_SAVES
SkipSaveBuf(buf, 8);
+ ReadSaveBuf(&m_nId, buf);
for (int i = 0; i < 8; i++)
ReadSaveBuf(&m_abScriptName[i], buf);
ReadSaveBuf(&m_nIp, buf);
@@ -2317,10 +2363,11 @@ void CRunningScript::Load(uint8*& buf)
ReadSaveBuf(&m_nStackPointer, buf);
SkipSaveBuf(buf, 2);
#ifdef CHECK_STRUCT_SIZES
- static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18");
+ static_assert(NUM_LOCAL_VARS + 8 + NUM_TIMERS == 106, "Compatibility loss: NUM_LOCAL_VARS + 8 + NUM_TIMERS != 106");
#endif
- for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
+ for (int i = 0; i < NUM_LOCAL_VARS + 8 + NUM_TIMERS; i++)
ReadSaveBuf(&m_anLocalVariables[i], buf);
+ ReadSaveBuf(&m_nLocalsPointer, buf);
ReadSaveBuf(&m_bIsActive, buf);
ReadSaveBuf(&m_bCondResult, buf);
ReadSaveBuf(&m_bIsMissionScript, buf);
@@ -2429,7 +2476,7 @@ void CTheScripts::HighlightImportantArea(uint32 id, float x1, float y1, float x2
center.x = (infX + supX) / 2;
center.y = (infY + supY) / 2;
center.z = (z <= MAP_Z_LOW_LIMIT) ? CWorld::FindGroundZForCoord(center.x, center.y) : z;
- CShadows::RenderIndicatorShadow(id, 2, gpGoalTex, &center, supX - center.x, 0.0f, 0.0f, center.y - supY, 0);
+ CShadows::RenderIndicatorShadow(id, 2, nil, &center, supX - center.x, 0.0f, 0.0f, center.y - supY, 0);
}
void CTheScripts::HighlightImportantAngledArea(uint32 id, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, float z)
@@ -2623,7 +2670,10 @@ void CTheScripts::SetObjectiveForAllPedsInCollective(int colIndex, eObjective ob
}
else {
pPed->bScriptObjectiveCompleted = false;
- pPed->SetObjective(objective);
+ if (objective == OBJECTIVE_LEAVE_CAR)
+ pPed->SetObjective(objective);
+ else
+ pPed->SetObjective(objective, pPed->m_pMyVehicle);
}
}
}
@@ -2699,8 +2749,14 @@ void CTheScripts::CleanUpThisPed(CPed* pPed)
}
else {
if (pPed->m_pMyVehicle->m_vehType == VEHICLE_TYPE_CAR) {
- pPed->SetObjective(OBJECTIVE_LEAVE_CAR, pPed->m_pMyVehicle);
- pPed->bWanderPathAfterExitingCar = true;
+ if ((pPed->m_fHealth < 1.0f && !pPed->IsPedHeadAbovePos(-0.3f)) || pPed->bBodyPartJustCameOff) {
+ pPed->SetObjective(OBJECTIVE_LEAVE_CAR_AND_DIE, pPed->m_pMyVehicle);
+ pPed->bWanderPathAfterExitingCar = false;
+ }
+ else {
+ pPed->SetObjective(OBJECTIVE_LEAVE_CAR, pPed->m_pMyVehicle);
+ pPed->bWanderPathAfterExitingCar = true;
+ }
}
}
}
@@ -2713,6 +2769,7 @@ void CTheScripts::CleanUpThisPed(CPed* pPed)
flees = true;
}
pPed->ClearObjective();
+ pPed->SetWaitState(WAITSTATE_FALSE, nil);
pPed->bRespondsToThreats = true;
pPed->bScriptObjectiveCompleted = false;
pPed->bKindaStayInSamePlace = false;
@@ -2756,6 +2813,9 @@ void CTheScripts::ReadObjectNamesFromScript()
{
int32 varSpace = GetSizeOfVariableSpace();
uint32 ip = varSpace + 8;
+ NumSaveVars = Read4BytesFromScript(&ip);
+ SavedVarIndices = (uint16*)&ScriptSpace[ip];
+ ip += 2 * NumSaveVars;
NumberOfUsedObjects = Read2BytesFromScript(&ip);
ip += 2;
for (uint16 i = 0; i < NumberOfUsedObjects; i++) {
@@ -2767,30 +2827,16 @@ void CTheScripts::ReadObjectNamesFromScript()
void CTheScripts::UpdateObjectIndices()
{
- char name[USED_OBJECT_NAME_LENGTH];
char error[112];
for (int i = 1; i < NumberOfUsedObjects; i++) {
- bool found = false;
- for (int j = 0; j < MODELINFOSIZE && !found; j++) {
- CBaseModelInfo* pModel = CModelInfo::GetModelInfo(j);
- if (!pModel)
- continue;
- strcpy(name, pModel->GetModelName());
-#ifdef FIX_BUGS
- for (int k = 0; k < USED_OBJECT_NAME_LENGTH && name[k]; k++)
-#else
- for (int k = 0; k < USED_OBJECT_NAME_LENGTH; k++)
-#endif
- name[k] = toupper(name[k]);
- if (strcmp(name, UsedObjectArray[i].name) == 0) {
- found = true;
- UsedObjectArray[i].index = j;
- }
- }
- if (!found) {
+ UsedObjectArray[i].index = -1;
+ CModelInfo::GetModelInfo(UsedObjectArray[i].name, &UsedObjectArray[i].index);
+#ifndef FINAL
+ if (UsedObjectArray[i].index == -1) {
sprintf(error, "CTheScripts::UpdateObjectIndices - Couldn't find %s", UsedObjectArray[i].name);
debug("%s\n", error);
}
+#endif
}
}
@@ -2800,7 +2846,8 @@ void CTheScripts::ReadMultiScriptFileOffsetsFromScript()
uint32 ip = varSpace + 3;
int32 objectSize = Read4BytesFromScript(&ip);
ip = objectSize + 8;
- MainScriptSize = Read4BytesFromScript(&ip);
+ NumTrueGlobals = Read2BytesFromScript(&ip);
+ MostGlobals = Read2BytesFromScript(&ip);
LargestMissionScriptSize = Read4BytesFromScript(&ip);
NumberOfMissionScripts = Read2BytesFromScript(&ip);
NumberOfExclusiveMissionScripts = Read2BytesFromScript(&ip);
diff --git a/src/control/Script6.cpp b/src/control/Script6.cpp
index 8af32f57..2dca5be9 100644
--- a/src/control/Script6.cpp
+++ b/src/control/Script6.cpp
@@ -17,6 +17,7 @@
#ifdef MISSION_REPLAY
#include "GenericGameStorage.h"
#endif
+#include "Hud.h"
#include "Messages.h"
#include "Pad.h"
#include "Particle.h"
@@ -37,6 +38,9 @@
#include "CarAI.h"
#include "Pickups.h"
#include "Fluff.h"
+#include "CustomSoundTrack.h"
+
+// LCS: file done except TODOs
#ifdef USE_DEBUG_SCRIPT_LOADER
extern const char* scriptfile;
@@ -83,88 +87,88 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
{
switch (command) {
//case COMMAND_FLASH_RADAR_BLIP:
- /*
case COMMAND_IS_CHAR_IN_CONTROL:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(pPed->IsPedInControl());
return 0;
}
- */
case COMMAND_SET_GENERATE_CARS_AROUND_CAMERA:
CollectParameters(&m_nIp, 1);
- CCarCtrl::bCarsGeneratedAroundCamera = (ScriptParams[0] != 0);
+ CCarCtrl::bCarsGeneratedAroundCamera = (GET_INTEGER_PARAM(0) != 0);
return 0;
case COMMAND_CLEAR_SMALL_PRINTS:
CMessages::ClearSmallMessagesOnly();
+ //CHud::ClearSmallMessages(); // TODO
return 0;
- /*
case COMMAND_HAS_MILITARY_CRANE_COLLECTED_ALL_CARS:
UpdateCompareFlag(CCranes::HaveAllCarsBeenCollectedByMilitaryCrane());
return 0;
- */
case COMMAND_SET_UPSIDEDOWN_CAR_NOT_DAMAGED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
- CAutomobile* pCar = (CAutomobile*)pVehicle;
- pCar->bNotDamagedUpsideDown = (ScriptParams[1] != 0);
+ //assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
+ // they call this for bikes again, we don't really want to destroy the structure...
+#ifdef FIX_BUGS
+ if (pVehicle->m_vehType == VEHICLE_TYPE_CAR)
+#endif
+ ((CAutomobile*)pVehicle)->bNotDamagedUpsideDown = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_CAN_PLAYER_START_MISSION:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPlayerPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPlayerPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPlayerPed);
- UpdateCompareFlag(pPlayerPed->IsPedInControl() || pPlayerPed->m_nPedState == PED_DRIVING);
+ UpdateCompareFlag(pPlayerPed->CanStartMission() || pPlayerPed->m_nPedState == PED_DRIVING);
return 0;
}
case COMMAND_MAKE_PLAYER_SAFE_FOR_CUTSCENE:
{
CollectParameters(&m_nIp, 1);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- CPad::GetPad(ScriptParams[0])->SetDisablePlayerControls(PLAYERCONTROL_CUTSCENE);
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ CPad::GetPad(GET_INTEGER_PARAM(0))->SetDisablePlayerControls(PLAYERCONTROL_CUTSCENE);
pPlayerInfo->MakePlayerSafe(true);
CCutsceneMgr::StartCutsceneProcessing();
return 0;
}
case COMMAND_USE_TEXT_COMMANDS:
CollectParameters(&m_nIp, 1);
- CTheScripts::UseTextCommands = (ScriptParams[0] != 0) ? 2 : 1;
+ CTheScripts::UseTextCommands = (GET_INTEGER_PARAM(0) != 0) ? 2 : 1;
return 0;
case COMMAND_SET_THREAT_FOR_PED_TYPE:
CollectParameters(&m_nIp, 2);
- CPedType::AddThreat(ScriptParams[0], ScriptParams[1]);
+ CPedType::AddThreat(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_CLEAR_THREAT_FOR_PED_TYPE:
CollectParameters(&m_nIp, 2);
- CPedType::RemoveThreat(ScriptParams[0], ScriptParams[1]);
+ CPedType::RemoveThreat(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_GET_CAR_COLOURS:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- ScriptParams[0] = pVehicle->m_currentColour1;
- ScriptParams[1] = pVehicle->m_currentColour2;
+ SET_INTEGER_PARAM(0, pVehicle->m_currentColour1);
+ SET_INTEGER_PARAM(1, pVehicle->m_currentColour2);
StoreParameters(&m_nIp, 2);
return 0;
}
case COMMAND_SET_ALL_CARS_CAN_BE_DAMAGED:
CollectParameters(&m_nIp, 1);
- CWorld::SetAllCarsCanBeDamaged(ScriptParams[0] != 0);
- if (!ScriptParams[0])
+ CWorld::SetAllCarsCanBeDamaged(GET_INTEGER_PARAM(0) != 0);
+ if (!GET_INTEGER_PARAM(0))
CWorld::ExtinguishAllCarFiresInArea(FindPlayerCoors(), 4000.0f);
return 0;
case COMMAND_SET_CAR_CAN_BE_DAMAGED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- pVehicle->bCanBeDamaged = ScriptParams[1] != 0;
- if (!ScriptParams[1])
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ pVehicle->bCanBeDamaged = GET_INTEGER_PARAM(1) != 0;
+ if (!GET_INTEGER_PARAM(1))
pVehicle->ExtinguishCarFire();
return 0;
}
@@ -174,7 +178,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
{
CollectParameters(&m_nIp, 1);
CTimer::Stop();
- CGame::currLevel = (eLevelName)ScriptParams[0];
+ CGame::currLevel = (eLevelName)GET_INTEGER_PARAM(0);
ISLAND_LOADING_IS(LOW)
{
CStreaming::RemoveUnusedBigBuildings(CGame::currLevel);
@@ -190,18 +194,18 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
return 0;
}
case COMMAND_GET_BODY_CAST_HEALTH:
- // ScriptParams[0] = CObject::nBodyCastHealth;
+ // SET_INTEGER_PARAM(0, CObject::nBodyCastHealth);
// StoreParameters(&m_nIp, 1);
return 0;
*/
case COMMAND_SET_CHARS_CHATTING:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed1 = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CPed* pPed2 = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pPed1 = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pPed2 = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pPed1 && pPed2);
- pPed1->SetChat(pPed2, ScriptParams[2]);
- pPed2->SetChat(pPed1, ScriptParams[2]);
+ pPed1->SetChat(pPed2, GET_INTEGER_PARAM(2));
+ pPed2->SetChat(pPed1, GET_INTEGER_PARAM(2));
return 0;
}
//case COMMAND_MAKE_PLAYER_SAFE:
@@ -209,9 +213,9 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_SET_CAR_STAYS_IN_CURRENT_LEVEL:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- if (ScriptParams[1])
+ if (GET_INTEGER_PARAM(1))
pVehicle->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pVehicle->GetPosition());
else
pVehicle->m_nZoneLevel = LEVEL_GENERIC;
@@ -220,9 +224,9 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_SET_CHAR_STAYS_IN_CURRENT_LEVEL:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1])
+ if (GET_INTEGER_PARAM(1))
pPed->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pPed->GetPosition());
else
pPed->m_nZoneLevel = LEVEL_GENERIC;
@@ -232,16 +236,16 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_SET_DRUNK_INPUT_DELAY:
{
CollectParameters(&m_nIp, 2);
- assert(ScriptParams[1] < CPad::DRUNK_STEERING_BUFFER_SIZE);
- CPad::GetPad(ScriptParams[0])->SetDrunkInputDelay(ScriptParams[1]);
+ assert(GET_INTEGER_PARAM(1) < CPad::DRUNK_STEERING_BUFFER_SIZE);
+ CPad::GetPad(GET_INTEGER_PARAM(0))->SetDrunkInputDelay(GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_SET_CHAR_MONEY:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->m_nPedMoney = ScriptParams[1];
+ pPed->m_nPedMoney = GET_INTEGER_PARAM(1);
pPed->bMoneyHasBeenGivenByScript = true;
return 0;
}
@@ -249,10 +253,10 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS:
{
CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- CVector result = Multiply3x3(pObject->GetMatrix(), *(CVector*)&ScriptParams[1]) + pObject->GetPosition();
- *(CVector*)&ScriptParams[0] = result;
+ CVector result = Multiply3x3(pObject->GetMatrix(), GET_VECTOR_PARAM(1)) + pObject->GetPosition();
+ SET_VECTOR_PARAM(0, result);
StoreParameters(&m_nIp, 3);
return 0;
}
@@ -264,34 +268,34 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
return 0;
case COMMAND_REGISTER_AMBULANCE_LEVEL:
CollectParameters(&m_nIp, 1);
- CStats::RegisterLevelAmbulanceMission(ScriptParams[0]);
+ CStats::RegisterLevelAmbulanceMission(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_REGISTER_FIRE_EXTINGUISHED:
CStats::AnotherFireExtinguished();
return 0;
case COMMAND_TURN_PHONE_ON:
CollectParameters(&m_nIp, 1);
- gPhoneInfo.m_aPhones[ScriptParams[0]].m_nState = PHONE_STATE_9;
+ gPhoneInfo.m_aPhones[GET_INTEGER_PARAM(0)].m_nState = PHONE_STATE_9;
return 0;
/*
case COMMAND_REGISTER_LONGEST_DODO_FLIGHT:
CollectParameters(&m_nIp, 1);
- CStats::RegisterLongestFlightInDodo(ScriptParams[0]);
+ CStats::RegisterLongestFlightInDodo(GET_INTEGER_PARAM(0));
return 0;
*/
case COMMAND_GET_OFFSET_FROM_CAR_IN_WORLD_COORDS:
{
CollectParameters(&m_nIp, 4);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CVector result = Multiply3x3(pVehicle->GetMatrix(), *(CVector*)&ScriptParams[1]) + pVehicle->GetPosition();
- *(CVector*)&ScriptParams[0] = result;
+ CVector result = Multiply3x3(pVehicle->GetMatrix(), GET_VECTOR_PARAM(1)) + pVehicle->GetPosition();
+ SET_VECTOR_PARAM(0, result);
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_SET_TOTAL_NUMBER_OF_KILL_FRENZIES:
CollectParameters(&m_nIp, 1);
- CStats::SetTotalNumberKillFrenzies(ScriptParams[0]);
+ CStats::SetTotalNumberKillFrenzies(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_BLOW_UP_RC_BUGGY:
CWorld::Players[CWorld::PlayerInFocus].BlowUpRCBuggy(true);
@@ -299,7 +303,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
/*
case COMMAND_REMOVE_CAR_FROM_CHASE:
CollectParameters(&m_nIp, 1);
- CRecordDataForChase::RemoveCarFromChase(ScriptParams[0]);
+ CRecordDataForChase::RemoveCarFromChase(GET_INTEGER_PARAM(0));
return 0;
*/
case COMMAND_IS_FRENCH_GAME:
@@ -310,57 +314,57 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
return 0;
case COMMAND_CLEAR_MISSION_AUDIO:
CollectParameters(&m_nIp, 1);
- DMAudio.ClearMissionAudio(ScriptParams[0] - 1);
+ DMAudio.ClearMissionAudio(GET_INTEGER_PARAM(0) - 1);
return 0;
/*
case COMMAND_SET_FADE_IN_AFTER_NEXT_ARREST:
CollectParameters(&m_nIp, 1);
- CRestart::bFadeInAfterNextArrest = !!ScriptParams[0];
+ CRestart::bFadeInAfterNextArrest = !!GET_INTEGER_PARAM(0);
return 0;
case COMMAND_SET_FADE_IN_AFTER_NEXT_DEATH:
CollectParameters(&m_nIp, 1);
- CRestart::bFadeInAfterNextDeath = !!ScriptParams[0];
+ CRestart::bFadeInAfterNextDeath = !!GET_INTEGER_PARAM(0);
return 0;
case COMMAND_SET_GANG_PED_MODEL_PREFERENCE:
CollectParameters(&m_nIp, 2);
- CGangs::SetGangPedModelOverride(ScriptParams[0], ScriptParams[1]);
+ CGangs::SetGangPedModelOverride(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
*/
case COMMAND_SET_CHAR_USE_PEDNODE_SEEK:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1])
+ if (GET_INTEGER_PARAM(1))
pPed->m_pNextPathNode = nil;
- pPed->bUsePedNodeSeek = !!ScriptParams[1];
+ pPed->bUsePedNodeSeek = !!GET_INTEGER_PARAM(1);
return 0;
}
/*
case COMMAND_SWITCH_VEHICLE_WEAPONS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bGunSwitchedOff = !ScriptParams[1];
+ pVehicle->bGunSwitchedOff = !GET_INTEGER_PARAM(1);
return 0;
}
+ */
case COMMAND_SET_GET_OUT_OF_JAIL_FREE:
CollectParameters(&m_nIp, 2);
- CWorld::Players[ScriptParams[0]].m_bGetOutOfJailFree = !!ScriptParams[1];
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_bGetOutOfJailFree = !!GET_INTEGER_PARAM(1);
return 0;
- */
case COMMAND_SET_FREE_HEALTH_CARE:
CollectParameters(&m_nIp, 2);
- CWorld::Players[ScriptParams[0]].m_bGetOutOfHospitalFree = !!ScriptParams[1];
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_bGetOutOfHospitalFree = !!GET_INTEGER_PARAM(1);
return 0;
/*
case COMMAND_IS_CAR_DOOR_CLOSED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(!pVehicle->IsDoorMissing((eDoors)ScriptParams[1]) && pVehicle->IsDoorClosed((eDoors)ScriptParams[1]));
+ UpdateCompareFlag(!pVehicle->IsDoorMissing((eDoors)GET_INTEGER_PARAM(1)) && pVehicle->IsDoorClosed((eDoors)GET_INTEGER_PARAM(1)));
return 0;
}
*/
@@ -373,12 +377,15 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
#endif
CollectParameters(&m_nIp, 1);
- if (CTheScripts::NumberOfExclusiveMissionScripts > 0 && ScriptParams[0] <= UINT16_MAX - 2)
- return 0;
+ if (CTheScripts::NumberOfExclusiveMissionScripts > 0) {
+ if (GET_INTEGER_PARAM(0) < UINT16_MAX - 1)
+ return 0;
+ SET_INTEGER_PARAM(0, UINT16_MAX - GET_INTEGER_PARAM(0));
+ }
#ifdef MISSION_REPLAY
- missionRetryScriptIndex = ScriptParams[0];
+ missionRetryScriptIndex = GET_INTEGER_PARAM(0);
#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
- if (!UsingMobileScript && CTheScripts::MissionSupportsMissionReplay(missionRetryScriptIndex)){
+ if (CTheScripts::MissionSupportsMissionReplay(missionRetryScriptIndex)){
if (!AlreadySavedGame) {
m_nIp = oldIp - 2;
SaveGameForPause(SAVE_TYPE_QUICKSAVE_FOR_SCRIPT);
@@ -392,41 +399,38 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
#endif
#endif
CTimer::Suspend();
- int offset = CTheScripts::MultiScriptArray[ScriptParams[0]];
-#ifdef USE_DEBUG_SCRIPT_LOADER
- int handle = CTheScripts::OpenScript();
-#else
- CFileMgr::ChangeDir("\\");
- int handle = CFileMgr::OpenFile("data\\main.scm", "rb");
-#endif
- CFileMgr::Seek(handle, offset, 0);
- CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT);
- CFileMgr::CloseFile(handle);
- CRunningScript* pMissionScript = CTheScripts::StartNewScript(SIZE_MAIN_SCRIPT);
+ int offset = CTheScripts::MultiScriptArray[GET_INTEGER_PARAM(0)] + 8;
+ int size = CTheScripts::MultiScriptArray[GET_INTEGER_PARAM(0) + 1] - CTheScripts::MultiScriptArray[GET_INTEGER_PARAM(0)];
+ if (size <= 0)
+ size = CTheScripts::LargestMissionScriptSize;
+ CFileMgr::Seek(gScriptsFile, offset, 0);
+ CFileMgr::Read(gScriptsFile, (const char*)&CTheScripts::ScriptSpace[CTheScripts::MainScriptSize], size);
+ CRunningScript* pMissionScript = CTheScripts::StartNewScript(CTheScripts::MainScriptSize);
CTimer::Resume();
pMissionScript->m_bIsMissionScript = true;
pMissionScript->m_bMissionFlag = true;
CTheScripts::bAlreadyRunningAMissionScript = true;
- CGameLogic::ClearShortCut();
+ memset(&CTheScripts::ScriptSpace[CTheScripts::NumTrueGlobals * 4 + 8], 0, CTheScripts::MostGlobals * 4);
+ pMissionScript->Process();
return 0;
}
case COMMAND_SET_OBJECT_DRAW_LAST:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->bDrawLast = !!ScriptParams[1];
+ pObject->bDrawLast = !!GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_GET_AMMO_IN_PLAYER_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- ScriptParams[0] = 0;
+ SET_INTEGER_PARAM(0, 0);
for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++) {
- if (pPed->GetWeapon(i).m_eWeaponType == (eWeaponType)ScriptParams[1])
- ScriptParams[0] = pPed->GetWeapon(i).m_nAmmoTotal;
+ if (pPed->GetWeapon(i).m_eWeaponType == (eWeaponType)GET_INTEGER_PARAM(1))
+ SET_INTEGER_PARAM(0, pPed->GetWeapon(i).m_nAmmoTotal);
}
StoreParameters(&m_nIp, 1);
return 0;
@@ -435,83 +439,69 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_GET_AMMO_IN_CHAR_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CWeapon* pWeaponSlot = &pPed->m_weapons[ScriptParams[1]];
- if (pWeaponSlot->m_eWeaponType == (eWeaponType)ScriptParams[1])
- ScriptParams[0] = pWeaponSlot->m_nAmmoTotal;
+ CWeapon* pWeaponSlot = &pPed->m_weapons[GET_INTEGER_PARAM(1)];
+ if (pWeaponSlot->m_eWeaponType == (eWeaponType)GET_INTEGER_PARAM(1))
+ SET_INTEGER_PARAM(0, pWeaponSlot->m_nAmmoTotal);
else
- ScriptParams[0] = 0;
+ SET_INTEGER_PARAM(0, 0);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_REGISTER_KILL_FRENZY_PASSED:
CStats::AnotherKillFrenzyPassed();
return 0;
+ */
case COMMAND_SET_CHAR_SAY:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- switch (ScriptParams[1]) {
- case SCRIPT_SOUND_CHUNKY_RUN_SHOUT:
- pPed->Say(SOUND_PED_FLEE_RUN);
- break;
- case SCRIPT_SOUND_SECURITY_GUARD_AWAY_SHOUT:
- pPed->Say(SOUND_PED_FLEE_RUN);
- break;
- case SCRIPT_SOUND_SWAT_PED_SHOUT:
- pPed->Say(SOUND_PED_PURSUIT_SWAT);
- break;
- case SCRIPT_SOUND_AMMUNATION_CHAT_1:
- pPed->Say(SOUND_AMMUNATION_WELCOME_1);
- break;
- case SCRIPT_SOUND_AMMUNATION_CHAT_2:
- pPed->Say(SOUND_AMMUNATION_WELCOME_2);
- break;
- case SCRIPT_SOUND_AMMUNATION_CHAT_3:
- pPed->Say(SOUND_AMMUNATION_WELCOME_3);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ switch (GET_INTEGER_PARAM(1)) {
+ case 15:
+ pPed->Say(0x93); // TODO
break;
default:
break;
}
return 0;
}
- */
case COMMAND_SET_NEAR_CLIP:
CollectParameters(&m_nIp, 1);
- TheCamera.SetNearClipScript(*(float*)&ScriptParams[0]);
+ TheCamera.SetNearClipScript(GET_FLOAT_PARAM(0));
return 0;
case COMMAND_SET_RADIO_CHANNEL:
CollectParameters(&m_nIp, 2);
- DMAudio.SetRadioChannel(ScriptParams[0], ScriptParams[1]);
+ if (!cCustomSoundTrack::Instance()->IsPlaying())
+ DMAudio.SetRadioChannel(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
/*
case COMMAND_OVERRIDE_HOSPITAL_LEVEL:
CollectParameters(&m_nIp, 1);
- CRestart::OverrideHospitalLevel = ScriptParams[0];
+ CRestart::OverrideHospitalLevel = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_OVERRIDE_POLICE_STATION_LEVEL:
CollectParameters(&m_nIp, 1);
- CRestart::OverridePoliceStationLevel = ScriptParams[0];
+ CRestart::OverridePoliceStationLevel = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_FORCE_RAIN:
CollectParameters(&m_nIp, 1);
- CWeather::bScriptsForceRain = !!ScriptParams[0];
+ CWeather::bScriptsForceRain = !!GET_INTEGER_PARAM(0);
return 0;
+ */
case COMMAND_DOES_GARAGE_CONTAIN_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
- UpdateCompareFlag(CGarages::IsThisCarWithinGarageArea(ScriptParams[0], pVehicle));
+ UpdateCompareFlag(CGarages::IsThisCarWithinGarageArea(GET_INTEGER_PARAM(0), pVehicle));
return 0;
}
- */
case COMMAND_SET_CAR_TRACTION:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- float fTraction = *(float*)&ScriptParams[1];
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ float fTraction = GET_FLOAT_PARAM(1);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR || pVehicle->m_vehType == VEHICLE_TYPE_BIKE);
if (pVehicle->m_vehType == VEHICLE_TYPE_CAR)
((CAutomobile*)pVehicle)->m_fTraction = fTraction;
@@ -529,33 +519,32 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_CONVERT_METRES_TO_FEET:
{
CollectParameters(&m_nIp, 1);
- float fMeterValue = *(float*)&ScriptParams[0];
+ float fMeterValue = GET_FLOAT_PARAM(0);
float fFeetValue = fMeterValue / METERS_IN_FOOT;
- *(float*)&ScriptParams[0] = fFeetValue;
+ SET_FLOAT_PARAM(0, fFeetValue);
StoreParameters(&m_nIp, 1);
return 0;
}
- /*
case COMMAND_MARK_ROADS_BETWEEN_LEVELS:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
ThePaths.MarkRoadsBetweenLevelsInArea(infX, supX, infY, supY, infZ, supZ);
return 0;
@@ -563,123 +552,136 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_MARK_PED_ROADS_BETWEEN_LEVELS:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
ThePaths.PedMarkRoadsBetweenLevelsInArea(infX, supX, infY, supY, infZ, supZ);
return 0;
}
- */
case COMMAND_SET_CAR_AVOID_LEVEL_TRANSITIONS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->AutoPilot.m_bStayInCurrentLevel = !!ScriptParams[1];
+ pVehicle->AutoPilot.m_bStayInCurrentLevel = !!GET_INTEGER_PARAM(1);
return 0;
}
/*
case COMMAND_SET_CHAR_AVOID_LEVEL_TRANSITIONS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pPed);
// not implemented
return 0;
}
case COMMAND_IS_THREAT_FOR_PED_TYPE:
CollectParameters(&m_nIp, 2);
- UpdateCompareFlag(CPedType::IsThreat(ScriptParams[0], ScriptParams[1]));
+ UpdateCompareFlag(CPedType::IsThreat(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)));
return 0;
*/
case COMMAND_CLEAR_AREA_OF_CHARS:
{
CollectParameters(&m_nIp, 6);
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float infZ = *(float*)&ScriptParams[2];
- float supX = *(float*)&ScriptParams[3];
- float supY = *(float*)&ScriptParams[4];
- float supZ = *(float*)&ScriptParams[5];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
if (infX > supX) {
- infX = *(float*)&ScriptParams[3];
- supX = *(float*)&ScriptParams[0];
+ infX = GET_FLOAT_PARAM(3);
+ supX = GET_FLOAT_PARAM(0);
}
if (infY > supY) {
- infY = *(float*)&ScriptParams[4];
- supY = *(float*)&ScriptParams[1];
+ infY = GET_FLOAT_PARAM(4);
+ supY = GET_FLOAT_PARAM(1);
}
if (infZ > supZ) {
- infZ = *(float*)&ScriptParams[5];
- supZ = *(float*)&ScriptParams[2];
+ infZ = GET_FLOAT_PARAM(5);
+ supZ = GET_FLOAT_PARAM(2);
}
CWorld::ClearPedsFromArea(infX, infY, infZ, supX, supY, supZ);
return 0;
}
case COMMAND_SET_TOTAL_NUMBER_OF_MISSIONS:
CollectParameters(&m_nIp, 1);
- CStats::SetTotalNumberMissions(CGame::germanGame ? ScriptParams[0] - 2 : ScriptParams[0]);
+ CStats::SetTotalNumberMissions(CGame::germanGame ? GET_INTEGER_PARAM(0) - 2 : GET_INTEGER_PARAM(0));
return 0;
case COMMAND_CONVERT_METRES_TO_FEET_INT:
CollectParameters(&m_nIp, 1);
- ScriptParams[0] *= FEET_IN_METER;
+ GET_INTEGER_PARAM(0) *= FEET_IN_METER;
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_REGISTER_FASTEST_TIME:
CollectParameters(&m_nIp, 2);
- CStats::RegisterFastestTime(ScriptParams[0], ScriptParams[1]);
+ CStats::RegisterFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_REGISTER_HIGHEST_SCORE:
CollectParameters(&m_nIp, 2);
- CStats::RegisterHighestScore(ScriptParams[0], ScriptParams[1]);
+ CStats::RegisterHighestScore(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_WARP_CHAR_INTO_CAR_AS_PASSENGER:
+ {
+ CollectParameters(&m_nIp, 3);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ script_assert(pPed);
+ script_assert(pVehicle);
+ if (GET_INTEGER_PARAM(2) < 0)
+ pPed->WarpPedIntoCarAsPassenger(pVehicle, GET_INTEGER_PARAM(2));
+ else {
+ script_assert(GET_INTEGER_PARAM(2) >= 0 && GET_INTEGER_PARAM(2) < ARRAY_SIZE(pVehicle->pPassengers));
+ pPed->WarpPedIntoCarAsPassenger(pVehicle, GET_INTEGER_PARAM(2));
+ }
return 0;
- //case COMMAND_WARP_CHAR_INTO_CAR_AS_PASSENGER:
+
+ }
case COMMAND_IS_CAR_PASSENGER_SEAT_FREE:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- UpdateCompareFlag(ScriptParams[1] < pVehicle->m_nNumMaxPassengers && pVehicle->pPassengers[ScriptParams[1]] == nil);
+ UpdateCompareFlag(GET_INTEGER_PARAM(1) < pVehicle->m_nNumMaxPassengers && pVehicle->pPassengers[GET_INTEGER_PARAM(1)] == nil);
return 0;
}
- /*
case COMMAND_GET_CHAR_IN_CAR_PASSENGER_SEAT:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- script_assert(ScriptParams[1] >= 0 && ScriptParams[1] < ARRAY_SIZE(pVehicle->pPassengers));
- CPed* pPassenger = pVehicle->pPassengers[ScriptParams[1]];
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPassenger);
+ script_assert(GET_INTEGER_PARAM(1) >= 0 && GET_INTEGER_PARAM(1) < ARRAY_SIZE(pVehicle->pPassengers));
+ CPed* pPassenger = pVehicle->pPassengers[GET_INTEGER_PARAM(1)];
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pPassenger));
StoreParameters(&m_nIp, 1);
return 0;
}
- */
case COMMAND_SET_CHAR_IS_CHRIS_CRIMINAL:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bChrisCriminal = !!ScriptParams[1];
+ pPed->bChrisCriminal = !!GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_START_CREDITS:
- CCredits::Start();
+ CollectParameters(&m_nIp, 1);
+ CCredits::Start(); // TODO: CCredits::Start(GET_INTEGER_PARAM(0))
return 0;
case COMMAND_STOP_CREDITS:
CCredits::Stop();
@@ -689,16 +691,16 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
return 0;
case COMMAND_CREATE_SINGLE_PARTICLE:
CollectParameters(&m_nIp, 8);
- CParticle::AddParticle((tParticleType)ScriptParams[0], *(CVector*)&ScriptParams[1],
- *(CVector*)&ScriptParams[4], nil, *(float*)&ScriptParams[7], 0, 0, 0, 0);
+ CParticle::AddParticle((tParticleType)GET_INTEGER_PARAM(0), GET_VECTOR_PARAM(1),
+ GET_VECTOR_PARAM(4), nil, GET_FLOAT_PARAM(7), 0, 0, 0, 0);
return 0;
/*
case COMMAND_SET_CHAR_IGNORE_LEVEL_TRANSITIONS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1])
+ if (GET_INTEGER_PARAM(1))
pPed->m_nZoneLevel = LEVEL_IGNORE;
else
pPed->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pPed->GetPosition());
@@ -707,11 +709,11 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_GET_CHASE_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CRecordDataForChase::TurnChaseCarIntoScriptCar(ScriptParams[0]);
- ScriptParams[0] = CPools::GetVehiclePool()->GetIndex(pVehicle);
+ CVehicle* pVehicle = CRecordDataForChase::TurnChaseCarIntoScriptCar(GET_INTEGER_PARAM(0));
+ SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex(pVehicle));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
return 0;
}
case COMMAND_START_BOAT_FOAM_ANIMATION:
@@ -720,7 +722,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_UPDATE_BOAT_FOAM_ANIMATION:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CSpecialParticleStuff::UpdateBoatFoamAnimation(&pObject->GetMatrix());
return 0;
@@ -728,12 +730,12 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
*/
case COMMAND_SET_MUSIC_DOES_FADE:
CollectParameters(&m_nIp, 1);
- TheCamera.m_bIgnoreFadingStuffForMusic = (ScriptParams[0] == 0);
+ TheCamera.m_bIgnoreFadingStuffForMusic = (GET_INTEGER_PARAM(0) == 0);
return 0;
/*
case COMMAND_SET_INTRO_IS_PLAYING:
CollectParameters(&m_nIp, 1);
- if (ScriptParams[0]) {
+ if (GET_INTEGER_PARAM(0)) {
CGame::playingIntro = true;
CStreaming::RemoveCurrentZonesModels();
} else {
@@ -745,17 +747,16 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
CStreaming::LoadAllRequestedModels(false);
}
return 0;
- */
case COMMAND_SET_PLAYER_HOOKER:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- if (ScriptParams[1] < 0) {
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ if (GET_INTEGER_PARAM(1) < 0) {
pPlayerInfo->m_pHooker = nil;
pPlayerInfo->m_nNextSexFrequencyUpdateTime = 0;
pPlayerInfo->m_nNextSexMoneyUpdateTime = 0;
} else {
- CPed* pHooker = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pHooker = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pHooker);
pPlayerInfo->m_pHooker = (CCivilianPed*)pHooker;
pPlayerInfo->m_nSexFrequency = 1000;
@@ -764,8 +765,10 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
}
return 0;
}
+ */
case COMMAND_PLAY_END_OF_GAME_TUNE:
- DMAudio.PlayPreloadedCutSceneMusic();
+ DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
+ DMAudio.PlayFrontEndTrack(STREAMED_SOUND_CUTSCENE_FINALE, 1); // third parameter is 1
return 0;
case COMMAND_STOP_END_OF_GAME_TUNE:
DMAudio.StopCutSceneMusic();
@@ -774,25 +777,25 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_GET_CAR_MODEL:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- ScriptParams[0] = pVehicle->GetModelIndex();
+ SET_INTEGER_PARAM(0, pVehicle->GetModelIndex());
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_PLAYER_SITTING_IN_CAR:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
UpdateCompareFlag(pPed->GetPedState() == PED_DRIVING && pPed->m_objective != OBJECTIVE_LEAVE_CAR && pPed->m_pMyVehicle == pVehicle);
return 0;
}
case COMMAND_IS_PLAYER_SITTING_IN_ANY_CAR:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->GetPedState() == PED_DRIVING && pPed->m_objective != OBJECTIVE_LEAVE_CAR);
return 0;
@@ -800,7 +803,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
/*
case COMMAND_SET_SCRIPT_FIRE_AUDIO:
CollectParameters(&m_nIp, 2);
- gFireManager.SetScriptFireAudio(ScriptParams[0], !!ScriptParams[1]);
+ gFireManager.SetScriptFireAudio(GET_INTEGER_PARAM(0), !!GET_INTEGER_PARAM(1));
return 0;
*/
case COMMAND_ARE_ANY_CAR_CHEATS_ACTIVATED:
@@ -809,16 +812,16 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_SET_CHAR_SUFFERS_CRITICAL_HITS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bNoCriticalHits = (ScriptParams[1] == 0);
+ pPed->bNoCriticalHits = (GET_INTEGER_PARAM(1) == 0);
return 0;
}
/*
case COMMAND_IS_PLAYER_LIFTING_A_PHONE:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->GetPedState() == PED_MAKE_CALL);
return 0;
@@ -827,9 +830,9 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_IS_CHAR_SITTING_IN_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
UpdateCompareFlag(pPed->GetPedState() == PED_DRIVING && pPed->m_objective != OBJECTIVE_LEAVE_CAR && pPed->m_pMyVehicle == pVehicle);
return 0;
@@ -837,7 +840,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_IS_CHAR_SITTING_IN_ANY_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->GetPedState() == PED_DRIVING && pPed->m_objective != OBJECTIVE_LEAVE_CAR);
return 0;
@@ -845,7 +848,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_IS_PLAYER_ON_FOOT:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(!pPed->bInVehicle && pPed->m_objective != OBJECTIVE_ENTER_CAR_AS_PASSENGER &&
pPed->m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER);
@@ -854,7 +857,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
case COMMAND_IS_CHAR_ON_FOOT:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(!pPed->bInVehicle && pPed->m_objective != OBJECTIVE_ENTER_CAR_AS_PASSENGER &&
pPed->m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER);
@@ -874,7 +877,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_LOAD_COLLISION_WITH_SCREEN:
CollectParameters(&m_nIp, 1);
CTimer::Stop();
- CGame::currLevel = (eLevelName)ScriptParams[0];
+ CGame::currLevel = (eLevelName)GET_INTEGER_PARAM(0);
if (CGame::currLevel != CCollision::ms_collisionInMemory) {
ISLAND_LOADING_IS(LOW)
{
@@ -918,9 +921,9 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_SET_CAR_IGNORE_LEVEL_TRANSITIONS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- if (ScriptParams[1])
+ if (GET_INTEGER_PARAM(1))
pVehicle->m_nZoneLevel = LEVEL_IGNORE;
else
pVehicle->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pVehicle->GetPosition());
@@ -929,61 +932,55 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_MAKE_CRAIGS_CAR_A_BIT_STRONGER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
CAutomobile* pCar = (CAutomobile*)pVehicle;
- pCar->bMoreResistantToDamage = ScriptParams[1];
+ pCar->bMoreResistantToDamage = GET_INTEGER_PARAM(1);
return 0;
}
*/
case COMMAND_SET_JAMES_CAR_ON_PATH_TO_PLAYER:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CCarCtrl::JoinCarWithRoadSystemGotoCoors(pVehicle, FindPlayerCoors(), false);
return 0;
}
case COMMAND_LOAD_END_OF_GAME_TUNE:
- DMAudio.ChangeMusicMode(MUSICMODE_CUTSCENE);
- printf("Start preload end of game audio\n");
- DMAudio.PreloadCutSceneMusic(STREAMED_SOUND_CUTSCENE_FINALE);
- printf("End preload end of game audio\n");
return 0;
- /*
case COMMAND_ENABLE_PLAYER_CONTROL_CAMERA:
CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_CAMERA);
return 0;
- */
case COMMAND_SET_OBJECT_ROTATION:
{
CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
CWorld::Remove(pObject);
pObject->SetOrientation(
- DEGTORAD(*(float*)&ScriptParams[1]),
- DEGTORAD(*(float*)&ScriptParams[2]),
- DEGTORAD(*(float*)&ScriptParams[3]));
+ DEGTORAD(GET_FLOAT_PARAM(1)),
+ DEGTORAD(GET_FLOAT_PARAM(2)),
+ DEGTORAD(GET_FLOAT_PARAM(3)));
pObject->GetMatrix().UpdateRW();
pObject->UpdateRwFrame();
CWorld::Add(pObject);
return 0;
}
case COMMAND_GET_DEBUG_CAMERA_COORDINATES:
- *(CVector*)&ScriptParams[0] = TheCamera.Cams[2].Source;
+ SET_VECTOR_PARAM(0, TheCamera.Cams[2].Source);
StoreParameters(&m_nIp, 3);
return 0;
/*
case COMMAND_GET_DEBUG_CAMERA_FRONT_VECTOR:
- *(CVector*)&ScriptParams[0] = TheCamera.Cams[2].Front;
+ SET_VECTOR_PARAM(0, TheCamera.Cams[2].Front);
StoreParameters(&m_nIp, 3);
return 0;
case COMMAND_IS_PLAYER_TARGETTING_ANY_CHAR:
{
CollectParameters(&m_nIp, 1);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
CEntity* pTarget = pPed->m_pPointGunAt;
UpdateCompareFlag(pTarget && pTarget->IsPed());
@@ -993,13 +990,13 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_IS_PLAYER_TARGETTING_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- CPed* pTestedPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTestedPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTestedPed);
CEntity* pTarget = pPed->m_pPointGunAt;
bool bTargetting = pTarget && pTarget->IsPed() && pTarget == pTestedPed;
- // PC shit
+#ifdef GTA_PC
static int nCounter = 0;
nCounter = Max(0, nCounter - 1);
if (!pPed->GetWeapon()->IsTypeMelee() && !bTargetting) {
@@ -1026,22 +1023,50 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
}
}
}
+#endif
UpdateCompareFlag(bTargetting);
return 0;
}
- /*
case COMMAND_IS_PLAYER_TARGETTING_OBJECT:
{
CollectParameters(&m_nIp, 2);
- CPlayerPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPlayerPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- CObject* pTestedObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pTestedObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTestedObject);
CEntity* pTarget = pPed->m_pPointGunAt;
- UpdateCompareFlag(pTarget && pTarget->IsObject() && pTarget == pTestedObject);
+ bool bTargetting = pTarget && pTarget->IsObject() && pTarget == pTestedObject;
+#ifdef GTA_PC // we will never know if section is real
+ static int nCounter = 0;
+ nCounter = Max(0, nCounter - 1);
+ if (!pPed->GetWeapon()->IsTypeMelee() && !bTargetting) {
+ if ((pTestedObject->GetPosition() - TheCamera.GetPosition()).Magnitude() < 10.0f) {
+ CVector vTestedPos(pTestedObject->GetPosition().x, pTestedObject->GetPosition().y, pTestedObject->GetPosition().z);
+ CVector vScreenPos;
+ float w, h;
+ if (CSprite::CalcScreenCoors(vTestedPos, &vScreenPos, &w, &h, false)) {
+ CVector2D vCrosshairPosition(CCamera::m_f3rdPersonCHairMultX * RsGlobal.maximumWidth, CCamera::m_f3rdPersonCHairMultY * RsGlobal.maximumHeight);
+ float fScreenDistance = ((CVector2D)vScreenPos - vCrosshairPosition).Magnitude();
+ if (SCREEN_STRETCH_X(0.45f) > fScreenDistance / w) {
+ CColPoint point;
+ CEntity* entity;
+ if (!CWorld::ProcessLineOfSight(TheCamera.GetPosition() + 2.0f * TheCamera.GetForward(),
+ vTestedPos, point, entity, true, true, true, true, true, false) ||
+ entity == pTestedObject) {
+ nCounter += 2;
+ if (nCounter > 20) {
+ bTargetting = true;
+ nCounter = 20;
+ }
+ }
+ }
+ }
+ }
+ }
+ UpdateCompareFlag(bTargetting);
+#endif
return 0;
}
- */
case COMMAND_TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME:
{
CTheScripts::ReadTextLabelFromScript(&m_nIp, tmp);
@@ -1063,10 +1088,10 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
{
CollectParameters(&m_nIp, 2);
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtX = *(float*)&ScriptParams[0];
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtY = *(float*)&ScriptParams[1];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtX = GET_FLOAT_PARAM(0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtY = GET_FLOAT_PARAM(1);
CollectParameters(&m_nIp, 1);
- CMessages::InsertNumberInString(text, ScriptParams[0], -1, -1, -1, -1, -1,
+ CMessages::InsertNumberInString(text, GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1,
CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame++].m_Text);
return 0;
}
@@ -1074,10 +1099,10 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
{
CollectParameters(&m_nIp, 2);
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtX = *(float*)&ScriptParams[0];
- CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtY = *(float*)&ScriptParams[1];
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtX = GET_FLOAT_PARAM(0);
+ CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame].m_fAtY = GET_FLOAT_PARAM(1);
CollectParameters(&m_nIp, 2);
- CMessages::InsertNumberInString(text, ScriptParams[0], ScriptParams[1], -1, -1, -1, -1,
+ CMessages::InsertNumberInString(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1,
CTheScripts::IntroTextLines[CTheScripts::NumberOfIntroTextLinesThisFrame++].m_Text);
return 0;
}
@@ -1092,11 +1117,11 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
return 0;
/*
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float range = *(float*)&ScriptParams[3];
- int mi = ScriptParams[4] < 0 ? CTheScripts::UsedObjectArray[-ScriptParams[4]].index : ScriptParams[4];
+ float range = GET_FLOAT_PARAM(3);
+ int mi = GET_INTEGER_PARAM(4) < 0 ? CTheScripts::UsedObjectArray[-GET_INTEGER_PARAM(4)].index : GET_INTEGER_PARAM(4);
int16 total;
CEntity* apEntities[16];
CWorld::FindObjectsOfTypeInRange(mi, pos, range, true, &total, 16, apEntities, false, false, false, true, true);
@@ -1128,9 +1153,9 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
script_assert(pClosestEntity->IsObject());
CObject* pObject = (CObject*)pClosestEntity;
pObject->ObjectCreatedBy = MISSION_OBJECT;
- ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pObject);
+ SET_INTEGER_PARAM(0, CPools::GetObjectPool()->GetIndex(pObject));
} else {
- ScriptParams[0] = -1;
+ SET_INTEGER_PARAM(0, -1);
}
StoreParameters(&m_nIp, 1);
return 0;
@@ -1140,11 +1165,11 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_PLACE_OBJECT_RELATIVE_TO_OBJECT:
{
CollectParameters(&m_nIp, 5);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- CObject* pTarget = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject* pTarget = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTarget);
- CVector offset = *(CVector*)&ScriptParams[2];
+ CVector offset = GET_VECTOR_PARAM(2);
CPhysical::PlacePhysicalRelativeToOtherPhysical(pTarget, pObject, offset);
return 0;
}
@@ -1152,79 +1177,81 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_SET_ALL_OCCUPANTS_OF_CAR_LEAVE_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CCarAI::TellOccupantsToLeaveCar(pVehicle);
return 0;
}
case COMMAND_SET_INTERPOLATION_PARAMETERS:
CollectParameters(&m_nIp, 2);
- TheCamera.SetParametersForScriptInterpolation(*(float*)&ScriptParams[0], 100.0f - *(float*)&ScriptParams[0], ScriptParams[1]);
+ TheCamera.SetParametersForScriptInterpolation(GET_FLOAT_PARAM(0), 100.0f - GET_FLOAT_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
/*
case COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_TOWARDS_POINT:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float destX = *(float*)&ScriptParams[3];
- float destY = *(float*)&ScriptParams[4];
+ float destX = GET_FLOAT_PARAM(3);
+ float destY = GET_FLOAT_PARAM(4);
int32 nid = ThePaths.FindNodeClosestToCoors(pos, 0, 999999.9f, true, true);
CPathNode* pNode = &ThePaths.m_pathNodes[nid];
- *(CVector*)&ScriptParams[0] = pNode->GetPosition();
- *(float*)&ScriptParams[3] = ThePaths.FindNodeOrientationForCarPlacementFacingDestination(nid, destX, destY, true);
+ SET_VECTOR_PARAM(0, pNode->GetPosition());
+ SET_FLOAT_PARAM(3, ThePaths.FindNodeOrientationForCarPlacementFacingDestination(nid, destX, destY, true));
StoreParameters(&m_nIp, 4);
return 0;
}
case COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_AWAY_POINT:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- float destX = *(float*)&ScriptParams[3];
- float destY = *(float*)&ScriptParams[4];
+ float destX = GET_FLOAT_PARAM(3);
+ float destY = GET_FLOAT_PARAM(4);
int32 nid = ThePaths.FindNodeClosestToCoors(pos, 0, 999999.9f, true, true);
CPathNode* pNode = &ThePaths.m_pathNodes[nid];
- *(CVector*)&ScriptParams[0] = pNode->GetPosition();
- *(float*)&ScriptParams[3] = ThePaths.FindNodeOrientationForCarPlacementFacingDestination(nid, destX, destY, false);
+ SET_VECTOR_PARAM(0, pNode->GetPosition());
+ SET_FLOAT_PARAM(3, ThePaths.FindNodeOrientationForCarPlacementFacingDestination(nid, destX, destY, false));
StoreParameters(&m_nIp, 4);
return 0;
}
*/
case COMMAND_GET_DEBUG_CAMERA_POINT_AT:
- *(CVector*)&ScriptParams[0] = TheCamera.Cams[2].Source + TheCamera.Cams[2].Front;
+ SET_VECTOR_PARAM(0, TheCamera.Cams[2].Source + TheCamera.Cams[2].Front);
StoreParameters(&m_nIp, 3);
return 0;
case COMMAND_ATTACH_CHAR_TO_CAR:
{
CollectParameters(&m_nIp, 8);
- CPed *pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CVehicle *pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
- pPed->AttachPedToEntity(pVehicle, *(CVector*)&ScriptParams[2], ScriptParams[5], DEGTORAD(*(float*)&ScriptParams[6]), (eWeaponType)ScriptParams[7]);
+ CPed *pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CVehicle *pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ pPed->AttachPedToEntity(pVehicle, GET_VECTOR_PARAM(2), GET_INTEGER_PARAM(5), DEGTORAD(GET_FLOAT_PARAM(6)), (eWeaponType)GET_INTEGER_PARAM(7));
return 0;
}
case COMMAND_DETACH_CHAR_FROM_CAR:
{
CollectParameters(&m_nIp, 1);
- CPed *pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- if (pPed && pPed->m_attachedTo)
+ CPed *pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ if (pPed && pPed->m_attachedTo) {
pPed->DettachPedFromEntity();
+ pPed->bIsAimingGun = false;
+ }
return 0;
}
case COMMAND_SET_CAR_CHANGE_LANE: // for some reason changed in SA
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->AutoPilot.m_bStayInFastLane = !ScriptParams[1];
+ pVehicle->AutoPilot.m_bStayInFastLane = !GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_CLEAR_CHAR_LAST_WEAPON_DAMAGE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
if (pPed)
pPed->m_lastWepDam = -1;
else
@@ -1234,7 +1261,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_CLEAR_CAR_LAST_WEAPON_DAMAGE:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
if (pVehicle)
pVehicle->m_nLastWeaponDamage = -1;
else
@@ -1246,10 +1273,10 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
CollectParameters(&m_nIp, 9);
int ped_handle = -1;
CVector pos = FindPlayerCoors();
- float x1 = *(float*)&ScriptParams[0];
- float y1 = *(float*)&ScriptParams[1];
- float x2 = *(float*)&ScriptParams[2];
- float y2 = *(float*)&ScriptParams[3];
+ float x1 = GET_FLOAT_PARAM(0);
+ float y1 = GET_FLOAT_PARAM(1);
+ float x2 = GET_FLOAT_PARAM(2);
+ float y2 = GET_FLOAT_PARAM(3);
int i = CPools::GetPedPool()->GetSize();
while (--i && ped_handle == -1) {
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
@@ -1259,7 +1286,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
continue;
if (pPed->m_nPedType != PEDTYPE_COP)
continue;
- if (!ThisIsAValidRandomCop(pPed->GetModelIndex(), ScriptParams[4], ScriptParams[5], ScriptParams[6], ScriptParams[7], ScriptParams[8]))
+ if (!ThisIsAValidRandomCop(pPed->GetModelIndex(), GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8)))
continue;
if (pPed->CharCreatedBy != RANDOM_CHAR)
continue;
@@ -1285,7 +1312,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
}
- ScriptParams[0] = ped_handle;
+ SET_INTEGER_PARAM(0, ped_handle);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1333,7 +1360,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
}
- ScriptParams[0] = ped_handle;
+ SET_INTEGER_PARAM(0, ped_handle);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1341,9 +1368,9 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_SET_CHAR_OBJ_FLEE_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_FLEE_CAR, pVehicle);
@@ -1352,20 +1379,20 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_GET_DRIVER_OF_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
CPed* pDriver = pVehicle->pDriver;
if (pDriver)
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pDriver);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pDriver));
else
- ScriptParams[0] = -1;
+ SET_INTEGER_PARAM(0, -1);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_NUMBER_OF_FOLLOWERS:
{
CollectParameters(&m_nIp, 1);
- CPed* pLeader = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pLeader = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pLeader);
int total = 0;
int i = CPools::GetPedPool()->GetSize();
@@ -1376,34 +1403,34 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
if (pPed->m_leader == pLeader)
total++;
}
- ScriptParams[0] = total;
+ SET_INTEGER_PARAM(0, total);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER:
{
CollectParameters(&m_nIp, 6);
- CVector pos = *(CVector*)&ScriptParams[1];
+ CVector pos = GET_VECTOR_PARAM(1);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CRemote::GivePlayerRemoteControlledCar(pos.x, pos.y, pos.z, DEGTORAD(*(float*)&ScriptParams[4]), ScriptParams[5]);
+ CRemote::GivePlayerRemoteControlledCar(pos.x, pos.y, pos.z, DEGTORAD(GET_FLOAT_PARAM(4)), GET_INTEGER_PARAM(5));
return 0;
}
case COMMAND_GET_CURRENT_PLAYER_WEAPON:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- ScriptParams[0] = pPed->GetWeapon()->m_eWeaponType;
+ SET_INTEGER_PARAM(0, pPed->GetWeapon()->m_eWeaponType);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_CURRENT_CHAR_WEAPON:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- ScriptParams[0] = pPed->GetWeapon()->m_eWeaponType;
+ SET_INTEGER_PARAM(0, pPed->GetWeapon()->m_eWeaponType);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1418,36 +1445,36 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_SET_CAR_TEMP_ACTION:
{
CollectParameters(&m_nIp, 3);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->AutoPilot.m_nTempAction = (uint8)ScriptParams[1];
- pVehicle->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + ScriptParams[2];
+ pVehicle->AutoPilot.m_nTempAction = (uint8)GET_INTEGER_PARAM(1);
+ pVehicle->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + GET_INTEGER_PARAM(2);
return 0;
}
/*
case COMMAND_SET_CAR_HANDBRAKE_TURN_RIGHT:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
pVehicle->AutoPilot.m_nTempAction = TEMPACT_HANDBRAKETURNRIGHT;
- pVehicle->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + ScriptParams[1];
+ pVehicle->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_CAR_HANDBRAKE_STOP:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
pVehicle->AutoPilot.m_nTempAction = TEMPACT_HANDBRAKESTRAIGHT;
- pVehicle->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + ScriptParams[1];
+ pVehicle->AutoPilot.m_nTimeTempAction = CTimer::GetTimeInMilliseconds() + GET_INTEGER_PARAM(1);
return 0;
}
*/
case COMMAND_IS_CHAR_ON_ANY_BIKE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle&& pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BIKE);
return 0;
@@ -1457,16 +1484,16 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_LOCATE_SNIPER_BULLET_3D:
LocateSniperBulletCommand(command, &m_nIp);
return 0;
- */
case COMMAND_GET_NUMBER_OF_SEATS_IN_MODEL:
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = CVehicleModelInfo::GetMaximumNumberOfPassengersFromNumberOfDoors(ScriptParams[0]) + 1;
+ SET_INTEGER_PARAM(0, CVehicleModelInfo::GetMaximumNumberOfPassengersFromNumberOfDoors(GET_INTEGER_PARAM(0)) + 1);
StoreParameters(&m_nIp, 1);
return 0;
+ */
case COMMAND_IS_PLAYER_ON_ANY_BIKE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BIKE);
return 0;
@@ -1475,7 +1502,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_IS_CHAR_LYING_DOWN:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bFallenDown);
return 0;
@@ -1484,9 +1511,9 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_CAN_CHAR_SEE_DEAD_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- int pedtype = ScriptParams[1];
+ int pedtype = GET_INTEGER_PARAM(1);
bool can = false;
for (int i = 0; i < pPed->m_numNearPeds; i++) {
CPed* pTestPed = pPed->m_nearPeds[i];
@@ -1498,69 +1525,75 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
}
case COMMAND_SET_ENTER_CAR_RANGE_MULTIPLIER:
CollectParameters(&m_nIp, 1);
- CPed::nEnterCarRangeMultiplier = *(float*)&ScriptParams[0];
+ CPed::nEnterCarRangeMultiplier = GET_FLOAT_PARAM(0);
return 0;
case COMMAND_SET_THREAT_REACTION_RANGE_MULTIPLIER:
CollectParameters(&m_nIp, 1);
- CPed::nThreatReactionRangeMultiplier = *(float*)&ScriptParams[0];
+ CPed::nThreatReactionRangeMultiplier = GET_FLOAT_PARAM(0);
+ if (CPed::nThreatReactionRangeMultiplier < 1)
+ CPed::nThreatReactionRangeMultiplier = 1;
return 0;
case COMMAND_SET_CHAR_CEASE_ATTACK_TIMER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->m_ceaseAttackTimer = ScriptParams[1];
+ pPed->m_ceaseAttackTimer = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_GET_REMOTE_CONTROLLED_CAR:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CWorld::Players[ScriptParams[0]].m_pRemoteVehicle;
+ CVehicle* pVehicle = CWorld::Players[GET_INTEGER_PARAM(0)].m_pRemoteVehicle;
if (pVehicle)
- ScriptParams[0] = CPools::GetVehiclePool()->GetIndex(pVehicle);
+ SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex(pVehicle));
else
- ScriptParams[0] = -1;
+ SET_INTEGER_PARAM(0, -1);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_PC_VERSION:
+#ifdef GTA_PC
UpdateCompareFlag(true);
+#else
+ UpdateCompareFlag(false);
+#endif
return 0;
//case COMMAND_REPLAY:
//case COMMAND_IS_REPLAY_PLAYING:
case COMMAND_IS_MODEL_AVAILABLE:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CModelInfo::GetModelInfo(ScriptParams[0]) != nil);
+ UpdateCompareFlag(CModelInfo::GetModelInfo(GET_INTEGER_PARAM(0)) != nil);
return 0;
case COMMAND_SHUT_CHAR_UP:
CollectParameters(&m_nIp, 2);
- DMAudio.SetPedTalkingStatus(CPools::GetPedPool()->GetAt(ScriptParams[0]), ScriptParams[1] == 0);
+ DMAudio.SetPedTalkingStatus(CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)), GET_INTEGER_PARAM(1) == 0);
return 0;
case COMMAND_SET_ENABLE_RC_DETONATE:
CollectParameters(&m_nIp, 1);
- CVehicle::bDisableRemoteDetonation = !ScriptParams[0];
+ CVehicle::bDisableRemoteDetonation = !GET_INTEGER_PARAM(0);
return 0;
case COMMAND_SET_CAR_RANDOM_ROUTE_SEED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->m_nRouteSeed = ScriptParams[1];
+ pVehicle->m_nRouteSeed = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_IS_ANY_PICKUP_AT_COORDS:
{
- CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
- CRunningScript::UpdateCompareFlag(CPickups::TestForPickupsInBubble(pos, 0.5f));
+ CollectParameters(&m_nIp, 4);
+ CVector pos = GET_VECTOR_PARAM(0);
+ CRunningScript::UpdateCompareFlag(CPickups::TestForPickupsInBubble(pos, GET_FLOAT_PARAM(3)));
return 0;
}
- case COMMAND_GET_FIRST_PICKUP_COORDS:
- case COMMAND_GET_NEXT_PICKUP_COORDS:
+ //case COMMAND_GET_FIRST_PICKUP_COORDS:
+ //case COMMAND_GET_NEXT_PICKUP_COORDS:
case COMMAND_REMOVE_ALL_CHAR_WEAPONS:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->ClearWeapons();
return 0;
@@ -1568,11 +1601,26 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_HAS_PLAYER_GOT_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
+ script_assert(pPed);
+ bool bFound = false;
+ for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++) {
+ if (pPed->GetWeapon(i).m_eWeaponType == GET_INTEGER_PARAM(1)) {
+ bFound = true;
+ break;
+ }
+ }
+ UpdateCompareFlag(bFound);
+ return 0;
+ }
+ case COMMAND_HAS_CHAR_GOT_WEAPON:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
bool bFound = false;
for (int i = 0; i < TOTAL_WEAPON_SLOTS; i++) {
- if (pPed->GetWeapon(i).m_eWeaponType == ScriptParams[1]) {
+ if (pPed->GetWeapon(i).m_eWeaponType == GET_INTEGER_PARAM(1)) {
bFound = true;
break;
}
@@ -1580,31 +1628,30 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
UpdateCompareFlag(bFound);
return 0;
}
- //case COMMAND_HAS_CHAR_GOT_WEAPON:
//case COMMAND_IS_PLAYER_FACING_CHAR:
case COMMAND_SET_TANK_DETONATE_CARS:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle && pVehicle->m_vehType == VEHICLE_TYPE_CAR);
- ((CAutomobile*)pVehicle)->bTankDetonateCars = ScriptParams[1];
+ ((CAutomobile*)pVehicle)->bTankDetonateCars = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_GET_POSITION_OF_ANALOGUE_STICKS:
{
CollectParameters(&m_nIp, 1);
- CPad* pPad = CPad::GetPad(ScriptParams[0]);
- ScriptParams[0] = pPad->NewState.LeftStickX;
- ScriptParams[1] = pPad->NewState.LeftStickY;
- ScriptParams[2] = pPad->NewState.RightStickX;
- ScriptParams[3] = pPad->NewState.RightStickY;
+ CPad* pPad = CPad::GetPad(GET_INTEGER_PARAM(0));
+ SET_INTEGER_PARAM(0, pPad->NewState.LeftStickX);
+ SET_INTEGER_PARAM(1, pPad->NewState.LeftStickY);
+ SET_INTEGER_PARAM(2, pPad->NewState.RightStickX);
+ SET_INTEGER_PARAM(3, pPad->NewState.RightStickY);
StoreParameters(&m_nIp, 4);
return 0;
}
case COMMAND_IS_CAR_ON_FIRE:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
bool bOnFire = false;
if (pVehicle->m_pCarFire)
@@ -1619,35 +1666,35 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_IS_CAR_TYRE_BURST:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
bool bIsBurst = false;
CBike* pBike = (CBike*)pVehicle;
if (pVehicle->IsBike()) {
- if (ScriptParams[1] == 4) {
+ if (GET_INTEGER_PARAM(1) == 4) {
for (int i = 0; i < 2; i++) {
if (pBike->m_wheelStatus[i] == WHEEL_STATUS_BURST)
bIsBurst = true;
}
}
else {
- if (ScriptParams[1] == 2)
- ScriptParams[1] = 0;
- if (ScriptParams[1] == 3)
- ScriptParams[1] = 1;
- bIsBurst = pBike->m_wheelStatus[ScriptParams[1]] == WHEEL_STATUS_BURST;
+ if (GET_INTEGER_PARAM(1) == 2)
+ SET_INTEGER_PARAM(1, 0);
+ if (GET_INTEGER_PARAM(1) == 3)
+ SET_INTEGER_PARAM(1, 1);
+ bIsBurst = pBike->m_wheelStatus[GET_INTEGER_PARAM(1)] == WHEEL_STATUS_BURST;
}
}
else {
CAutomobile* pCar = (CAutomobile*)pVehicle;
- if (ScriptParams[1] == 4) {
+ if (GET_INTEGER_PARAM(1) == 4) {
for (int i = 0; i < 4; i++) {
if (pCar->Damage.GetWheelStatus(i) == WHEEL_STATUS_BURST)
bIsBurst = true;
}
}
else
- bIsBurst = pCar->Damage.GetWheelStatus(ScriptParams[1] == WHEEL_STATUS_BURST);
+ bIsBurst = pCar->Damage.GetWheelStatus(GET_INTEGER_PARAM(1) == WHEEL_STATUS_BURST);
}
UpdateCompareFlag(bIsBurst);
return 0;
@@ -1663,125 +1710,131 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
while (counter < 3 && CScriptPaths::aArray[counter].m_state != SCRIPT_PATH_DISABLED) {
counter++;
}
- CScriptPaths::aArray[counter].InitialiseOne(ScriptParams[0], *(float*)&ScriptParams[1]);
- ScriptParams[0] = counter;
+ CScriptPaths::aArray[counter].InitialiseOne(GET_INTEGER_PARAM(0), GET_FLOAT_PARAM(1));
+ SET_INTEGER_PARAM(0, counter);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_START_OBJECT_ON_PATH:
{
CollectParameters(&m_nIp, 2);
- CObject *pObj = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject *pObj = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
assert(pObj);
- CScriptPaths::aArray[ScriptParams[1]].SetObjectToControl(pObj);
+ CScriptPaths::aArray[GET_INTEGER_PARAM(1)].SetObjectToControl(pObj);
return 0;
}
case COMMAND_SET_OBJECT_PATH_SPEED:
{
CollectParameters(&m_nIp, 2);
- CScriptPaths::aArray[ScriptParams[0]].m_fSpeed = *(float*)&ScriptParams[1];
+ CScriptPaths::aArray[GET_INTEGER_PARAM(0)].m_fSpeed = GET_FLOAT_PARAM(1);
return 0;
}
case COMMAND_SET_OBJECT_PATH_POSITION:
{
CollectParameters(&m_nIp, 2);
- CScriptPaths::aArray[ScriptParams[0]].m_fPosition = *(float*)&ScriptParams[1];
+ CScriptPaths::aArray[GET_INTEGER_PARAM(0)].m_fPosition = GET_FLOAT_PARAM(1);
return 0;
}
//case COMMAND_GET_OBJECT_DISTANCE_ALONG_PATH:
case COMMAND_CLEAR_OBJECT_PATH:
{
CollectParameters(&m_nIp, 1);
- CScriptPaths::aArray[ScriptParams[0]].Clear();
+ CScriptPaths::aArray[GET_INTEGER_PARAM(0)].Clear();
return 0;
}
case COMMAND_HELI_GOTO_COORDS:
{
CollectParameters(&m_nIp, 5);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle && pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
- ((CAutomobile*)pVehicle)->TellHeliToGoToCoors(*(float*)&ScriptParams[1], *(float*)&ScriptParams[2], *(float*)&ScriptParams[3], ScriptParams[4]);
+ ((CAutomobile*)pVehicle)->TellHeliToGoToCoors(GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4));
return 0;
}
case COMMAND_IS_INT_VAR_EQUAL_TO_CONSTANT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr == ScriptParams[0]);
+ UpdateCompareFlag(*ptr == GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_LVAR_EQUAL_TO_CONSTANT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr == ScriptParams[0]);
+ UpdateCompareFlag(*ptr == GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_GET_DEAD_CHAR_PICKUP_COORDS:
{
CollectParameters(&m_nIp, 1);
- CPed *pTarget = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed *pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
CVector pos;
pTarget->CreateDeadPedPickupCoors(&pos.x, &pos.y, &pos.z);
- *(CVector*)&ScriptParams[0] = pos;
+ SET_VECTOR_PARAM(0, pos);
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_CREATE_PROTECTION_PICKUP:
{
CollectParameters(&m_nIp, 5);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_REVENUE, PICKUP_ASSET_REVENUE, ScriptParams[3], ScriptParams[4]);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_REVENUE, PICKUP_ASSET_REVENUE, GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(4))); // TODO: gpModelIndices
StoreParameters(&m_nIp, 1);
return 0;
}
+ /*
case COMMAND_IS_CHAR_IN_ANY_BOAT:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
return 0;
}
+ */
case COMMAND_IS_PLAYER_IN_ANY_BOAT:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
return 0;
}
+ /*
case COMMAND_IS_CHAR_IN_ANY_HELI:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
return 0;
}
+ */
case COMMAND_IS_PLAYER_IN_ANY_HELI:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
return 0;
}
+ /*
case COMMAND_IS_CHAR_IN_ANY_PLANE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE);
return 0;
}
+ */
case COMMAND_IS_PLAYER_IN_ANY_PLANE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
return 0;
@@ -1789,7 +1842,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
case COMMAND_IS_CHAR_IN_WATER:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(pPed && pPed->bIsInWater);
return 0;
}
@@ -1797,14 +1850,14 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- *ptr = ScriptParams[0];
+ *ptr = GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_SET_LVAR_INT_TO_CONSTANT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- *ptr = ScriptParams[0];
+ *ptr = GET_INTEGER_PARAM(0);
return 0;
}
default:
diff --git a/src/control/Script7.cpp b/src/control/Script7.cpp
index 71099cc4..fb8e69fe 100644
--- a/src/control/Script7.cpp
+++ b/src/control/Script7.cpp
@@ -13,6 +13,7 @@
#include "General.h"
#include "Glass.h"
#include "Fluff.h"
+#include "KeyGen.h"
#include "Hud.h"
#include "MBlur.h"
#include "Pad.h"
@@ -31,6 +32,8 @@
#include "World.h"
#include "Zones.h"
+// LCS: file done except TODOs
+
int8 CRunningScript::ProcessCommands1200To1299(int32 command)
{
switch (command) {
@@ -38,66 +41,66 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr > ScriptParams[0]);
+ UpdateCompareFlag(*ptr > GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_LVAR_GREATER_THAN_CONSTANT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr > ScriptParams[0]);
+ UpdateCompareFlag(*ptr > GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_CONSTANT_GREATER_THAN_INT_VAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
- UpdateCompareFlag(ScriptParams[0] > *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) > *ptr);
return 0;
}
case COMMAND_IS_CONSTANT_GREATER_THAN_INT_LVAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
- UpdateCompareFlag(ScriptParams[0] > *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) > *ptr);
return 0;
}
case COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_CONSTANT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr >= ScriptParams[0]);
+ UpdateCompareFlag(*ptr >= GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_CONSTANT:
{
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(*ptr >= ScriptParams[0]);
+ UpdateCompareFlag(*ptr >= GET_INTEGER_PARAM(0));
return 0;
}
case COMMAND_IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_VAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
- UpdateCompareFlag(ScriptParams[0] >= *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) >= *ptr);
return 0;
}
case COMMAND_IS_CONSTANT_GREATER_OR_EQUAL_TO_INT_LVAR:
{
CollectParameters(&m_nIp, 1);
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
- UpdateCompareFlag(ScriptParams[0] >= *ptr);
+ UpdateCompareFlag(GET_INTEGER_PARAM(0) >= *ptr);
return 0;
}
case COMMAND_GET_CHAR_WEAPON_IN_SLOT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- ScriptParams[0] = pPed->GetWeapon(ScriptParams[1] - 1).m_eWeaponType;
- ScriptParams[1] = pPed->GetWeapon(ScriptParams[1] - 1).m_nAmmoTotal;
- ScriptParams[2] = CPickups::ModelForWeapon((eWeaponType)ScriptParams[0]);
+ SET_INTEGER_PARAM(0, pPed->GetWeapon(GET_INTEGER_PARAM(1) - 1).m_eWeaponType);
+ SET_INTEGER_PARAM(1, pPed->GetWeapon(GET_INTEGER_PARAM(1) - 1).m_nAmmoTotal);
+ SET_INTEGER_PARAM(2, CPickups::ModelForWeapon((eWeaponType)GET_INTEGER_PARAM(0)));
StoreParameters(&m_nIp, 3);
return 0;
}
@@ -106,16 +109,16 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
CollectParameters(&m_nIp, 5);
int node1, node2;
float angle;
- ThePaths.FindNodePairClosestToCoors(*(CVector*)&ScriptParams[0], PATH_CAR, &node1, &node2, &angle,
- *(float*)&ScriptParams[3], *(float*)&ScriptParams[4], true, true);
+ ThePaths.FindNodePairClosestToCoors(GET_VECTOR_PARAM(0), PATH_CAR, &node1, &node2, &angle,
+ GET_FLOAT_PARAM(3), GET_FLOAT_PARAM(4), true, true);
if (node1 == -1) {
for (int i = 0; i < 7; i++)
ScriptParams[i] = 0;
}
else {
- *(CVector*)&ScriptParams[0] = ThePaths.FindNodeCoorsForScript(node1);
- *(CVector*)&ScriptParams[3] = ThePaths.FindNodeCoorsForScript(node2);
- *(float*)&ScriptParams[6] = angle;
+ SET_VECTOR_PARAM(0, ThePaths.FindNodeCoorsForScript(node1));
+ SET_VECTOR_PARAM(3, ThePaths.FindNodeCoorsForScript(node2));
+ SET_FLOAT_PARAM(6, angle);
}
StoreParameters(&m_nIp, 7);
return 0;
@@ -123,9 +126,9 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SET_CAR_FORWARD_SPEED:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- float speed = *(float*)&ScriptParams[1] / GAME_SPEED_TO_CARAI_SPEED;
+ float speed = GET_FLOAT_PARAM(1) / GAME_SPEED_TO_CARAI_SPEED;
pVehicle->SetMoveSpeed(pVehicle->GetForward() * speed);
if (pVehicle->IsRealHeli() && pVehicle->IsCar())
((CAutomobile*)pVehicle)->m_aWheelSpeed[1] = 0.22f;
@@ -133,8 +136,8 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
}
case COMMAND_SET_AREA_VISIBLE:
CollectParameters(&m_nIp, 1);
- CGame::currArea = ScriptParams[0];
- CStreaming::RemoveBuildingsNotInArea(ScriptParams[0]);
+ CGame::currArea = GET_INTEGER_PARAM(0);
+ CStreaming::RemoveBuildingsNotInArea(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_SET_CUTSCENE_ANIM_TO_LOOP:
{
@@ -147,28 +150,28 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_MARK_CAR_AS_CONVOY_CAR:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bPartOfConvoy = ScriptParams[1];
+ pVehicle->bPartOfConvoy = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_RESET_HAVOC_CAUSED_BY_PLAYER:
{
CollectParameters(&m_nIp, 1);
- CWorld::Players[ScriptParams[0]].m_nHavocLevel = 0;
+ CWorld::Players[GET_INTEGER_PARAM(0)].m_nHavocLevel = 0;
return 0;
}
case COMMAND_GET_HAVOC_CAUSED_BY_PLAYER:
{
CollectParameters(&m_nIp, 1);
- ScriptParams[0] = CWorld::Players[ScriptParams[0]].m_nHavocLevel;
+ SET_INTEGER_PARAM(0, CWorld::Players[GET_INTEGER_PARAM(0)].m_nHavocLevel);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_CREATE_SCRIPT_ROADBLOCK:
{
CollectParameters(&m_nIp, 6);
- CRoadBlocks::RegisterScriptRoadBlock(*(CVector*)&ScriptParams[0], *(CVector*)&ScriptParams[3]);
+ CRoadBlocks::RegisterScriptRoadBlock(GET_VECTOR_PARAM(0), GET_VECTOR_PARAM(3));
return 0;
}
case COMMAND_CLEAR_ALL_SCRIPT_ROADBLOCKS:
@@ -179,9 +182,9 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SET_CHAR_OBJ_WALK_TO_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTargetPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_GOTO_CHAR_ON_FOOT_WALKING, pTargetPed);
@@ -191,17 +194,17 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS:
{
CollectParameters(&m_nIp, 4);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVector result = Multiply3x3(pPed->GetMatrix(), *(CVector*)&ScriptParams[1]) + pPed->GetPosition();
- *(CVector*)&ScriptParams[0] = result;
+ CVector result = Multiply3x3(pPed->GetMatrix(), GET_VECTOR_PARAM(1)) + pPed->GetPosition();
+ SET_VECTOR_PARAM(0, result);
StoreParameters(&m_nIp, 3);
return 0;
}
case COMMAND_HAS_CHAR_BEEN_PHOTOGRAPHED:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
bool result = false;
if (pPed->bHasBeenPhotographed) {
@@ -214,9 +217,9 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SET_CHAR_OBJ_AIM_GUN_AT_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CPed* pTargetPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pTargetPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pTargetPed);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_AIM_GUN_AT, pTargetPed);
@@ -225,14 +228,21 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SWITCH_SECURITY_CAMERA:
{
CollectParameters(&m_nIp, 1);
- CSpecialFX::bVideoCam = ScriptParams[0] != 0;
+ if (GET_INTEGER_PARAM(0) != 0) {
+ // TheCamera.MBlur.? = 3; TODO(LCS)
+ CSpecialFX::bVideoCam = true;
+ }
+ else {
+ // TheCamera.MBlur.Reset();
+ CSpecialFX::bVideoCam = false;
+ }
return 0;
}
//case COMMAND_IS_CHAR_IN_FLYING_VEHICLE:
case COMMAND_IS_PLAYER_IN_FLYING_VEHICLE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && (pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI || pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE));
return 0;
@@ -244,27 +254,27 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int id = CRadar::SetShortRangeCoordBlip(BLIP_COORD, pos, 5, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[3]);
- ScriptParams[0] = id;
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(3));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_ADD_MONEY_SPENT_ON_CLOTHES:
CollectParameters(&m_nIp, 1);
- CStats::MoneySpentOnFashion(ScriptParams[0]);
+ //CStats::MoneySpentOnFashion(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_SET_HELI_ORIENTATION:
{
CollectParameters(&m_nIp, 2);
- CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pHeli && pHeli->IsCar() && pHeli->IsRealHeli());
- float fAngle = DEGTORAD(*(float*)&ScriptParams[1] - 90.0f);
+ float fAngle = DEGTORAD(GET_FLOAT_PARAM(1) - 90.0f);
while (fAngle < 0.0f)
fAngle += TWOPI;
while (fAngle > TWOPI)
@@ -275,7 +285,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_CLEAR_HELI_ORIENTATION:
{
CollectParameters(&m_nIp, 1);
- CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pHeli && pHeli->IsCar() && pHeli->IsRealHeli());
pHeli->ClearHeliOrientation();
return 0;
@@ -283,66 +293,75 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_PLANE_GOTO_COORDS:
{
CollectParameters(&m_nIp, 5);
- CAutomobile* pPlane = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pPlane = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPlane && pPlane->IsCar() && pPlane->IsRealPlane());
- pPlane->TellPlaneToGoToCoors(*(float*)&ScriptParams[1], *(float*)&ScriptParams[2], *(float*)&ScriptParams[3], ScriptParams[4]);
+ pPlane->TellPlaneToGoToCoors(GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4));
return 0;
}
case COMMAND_GET_NTH_CLOSEST_CAR_NODE:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- *(CVector*)&ScriptParams[0] = ThePaths.FindNodeCoorsForScript(ThePaths.FindNthNodeClosestToCoors(pos, 0, 999999.9f, true, true, ScriptParams[3] - 1));
+ SET_VECTOR_PARAM(0, ThePaths.FindNodeCoorsForScript(ThePaths.FindNthNodeClosestToCoors(pos, 0, 999999.9f, true, true, GET_INTEGER_PARAM(3) - 1)));
+ StoreParameters(&m_nIp, 3);
+ return 0;
+ }
+ case COMMAND_GET_NTH_CLOSEST_CHAR_NODE:
+ {
+ CollectParameters(&m_nIp, 4);
+ CVector pos = GET_VECTOR_PARAM(0);
+ if (pos.z <= MAP_Z_LOW_LIMIT)
+ pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
+ SET_VECTOR_PARAM(0, ThePaths.FindNodeCoorsForScript(ThePaths.FindNthNodeClosestToCoors(pos, 1, 999999.9f, true, true, GET_INTEGER_PARAM(3) - 1)));
StoreParameters(&m_nIp, 3);
return 0;
}
- //case COMMAND_GET_NTH_CLOSEST_CHAR_NODE:
case COMMAND_DRAW_WEAPONSHOP_CORONA:
{
CollectParameters(&m_nIp, 9);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
- CCoronas::RegisterCorona((uintptr)this + m_nIp, ScriptParams[6], ScriptParams[7], ScriptParams[8], 255, pos, *(float*)&ScriptParams[3],
- 150.0f, ScriptParams[4], ScriptParams[5], 1, 0, 0, 0.0f, false, 0.2f);
+ CCoronas::RegisterCorona((uintptr)this + m_nIp, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8), 255, pos, -GET_FLOAT_PARAM(3),
+ 150.0f, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), 1, 0, 0, 0.0f, false, 0.2f);
return 0;
}
case COMMAND_SET_ENABLE_RC_DETONATE_ON_CONTACT:
{
CollectParameters(&m_nIp, 1);
- CVehicle::bDisableRemoteDetonationOnContact = (ScriptParams[0] == 0);
+ CVehicle::bDisableRemoteDetonationOnContact = (GET_INTEGER_PARAM(0) == 0);
return 0;
}
case COMMAND_FREEZE_CHAR_POSITION:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bIsFrozen = ScriptParams[1];
+ pPed->bIsFrozen = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_CHAR_DROWNS_IN_WATER:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bDrownsInWater = ScriptParams[1];
+ pPed->bDrownsInWater = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_OBJECT_RECORDS_COLLISIONS:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->bUseCollisionRecords = ScriptParams[1];
+ pObject->bUseCollisionRecords = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_HAS_OBJECT_COLLIDED_WITH_ANYTHING:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
UpdateCompareFlag(pObject->m_nCollisionRecords != 0);
return 0;
@@ -352,13 +371,16 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
CWorld::Players[CWorld::PlayerInFocus].BlowUpRCBuggy(false);
return 0;
}
- //case COMMAND_HAS_PHOTOGRAPH_BEEN_TAKEN:
+ case COMMAND_HAS_PHOTOGRAPH_BEEN_TAKEN:
+ UpdateCompareFlag(CWeapon::bPhotographHasBeenTaken);
+ CWeapon::bPhotographHasBeenTaken = false;
+ return 0;
case COMMAND_GET_CHAR_ARMOUR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- ScriptParams[0] = pPed->m_fArmour;
+ SET_INTEGER_PARAM(0, pPed->m_fArmour);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -366,23 +388,23 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SET_HELI_STABILISER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bHeliMinimumTilt = ScriptParams[1];
+ pVehicle->bHeliMinimumTilt = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_CAR_STRAIGHT_LINE_DISTANCE:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->AutoPilot.m_nSwitchDistance = ScriptParams[1];
+ pVehicle->AutoPilot.m_nSwitchDistance = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_POP_CAR_BOOT:
{
CollectParameters(&m_nIp, 1);
- CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pCar&& pCar->IsCar());
pCar->PopBoot();
return 0;
@@ -390,21 +412,22 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SHUT_PLAYER_UP:
{
CollectParameters(&m_nIp, 2);
- DMAudio.ShutUpPlayerTalking(!!ScriptParams[1]);
+ DMAudio.ShutUpPlayerTalking(!!GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_SET_PLAYER_MOOD:
{
CollectParameters(&m_nIp, 3);
- DMAudio.SetPlayersMood(ScriptParams[1], ScriptParams[2]);
+ DMAudio.SetPlayersMood(GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_REQUEST_COLLISION:
{
CollectParameters(&m_nIp, 2);
- CVector2D pos;
- pos.x = *(float*)&ScriptParams[0];
- pos.y = *(float*)&ScriptParams[1];
+ CVector pos;
+ pos.x = GET_FLOAT_PARAM(0);
+ pos.y = GET_FLOAT_PARAM(1);
+ pos.z = 0.0f;
CColStore::RequestCollision(pos);
return 0;
}
@@ -415,9 +438,8 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_IS_OBJECT_IN_WATER:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- script_assert(pObject);
- UpdateCompareFlag(pObject->bIsInWater);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ UpdateCompareFlag(pObject && pObject->bIsInWater);
return 0;
}
//case COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR_EVEN_MISSION_CAR:
@@ -428,11 +450,11 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SET_CHAR_CROUCH:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pPed->bCrouchWhenShooting = true;
- pPed->SetDuck(ScriptParams[2], true);
+ pPed->SetDuck(GET_INTEGER_PARAM(2), true);
}
else {
pPed->ClearDuck(true);
@@ -460,7 +482,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
return 0;
}
while (zone >= 0) {
- CTheZones::SetZoneCivilianCarInfo(zone, ScriptParams[0], carDensities, boatDensities);
+ CTheZones::SetZoneCivilianCarInfo(zone, GET_INTEGER_PARAM(0), carDensities, boatDensities);
zone = CTheZones::FindNextZoneByLabelAndReturnIndex(label, ZONE_INFO);
}
return 0;
@@ -470,7 +492,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
char key[KEY_LENGTH_IN_SCRIPT];
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex(key), STREAMFLAGS_SCRIPTOWNED);
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex(key), (m_bIsMissionScript ? STREAMFLAGS_SCRIPTOWNED : STREAMFLAGS_AMBIENT_SCRIPT_OWNED));
return 0;
}
case COMMAND_HAS_ANIMATION_LOADED:
@@ -487,12 +509,13 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
m_nIp += KEY_LENGTH_IN_SCRIPT;
CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex(key));
+ // + empty function on PS2 (not PSP)
return 0;
}
case COMMAND_IS_CHAR_WAITING_FOR_WORLD_COLLISION:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bIsStaticWaitingForCollision);
return 0;
@@ -500,87 +523,101 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_IS_CAR_WAITING_FOR_WORLD_COLLISION:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
UpdateCompareFlag(pVehicle->bIsStaticWaitingForCollision);
return 0;
}
+ /*
case COMMAND_IS_OBJECT_WAITING_FOR_WORLD_COLLISION:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
UpdateCompareFlag(pObject->bIsStaticWaitingForCollision);
return 0;
}
+ */
case COMMAND_SET_CHAR_SHUFFLE_INTO_DRIVERS_SEAT:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
pPed->PedShuffle();
return 0;
}
case COMMAND_ATTACH_CHAR_TO_OBJECT:
{
CollectParameters(&m_nIp, 8);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
- pPed->AttachPedToEntity(pObject, *(CVector*)&ScriptParams[2], ScriptParams[5], DEGTORAD(ScriptParams[6]), (eWeaponType)ScriptParams[7]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
+ pPed->AttachPedToEntity(pObject, GET_VECTOR_PARAM(2), GET_INTEGER_PARAM(5), DEGTORAD(GET_INTEGER_PARAM(6)), (eWeaponType)GET_INTEGER_PARAM(7));
return 0;
}
case COMMAND_SET_CHAR_AS_PLAYER_FRIEND:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bIsPlayerFriend = ScriptParams[2];
+ pPed->bIsPlayerFriend = GET_INTEGER_PARAM(2);
return 0;
}
//case COMMAND_DISPLAY_NTH_ONSCREEN_COUNTER:
case COMMAND_DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING:
{
char onscreen_str[12];
- script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR);
- uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp);
+ //script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR);
+ uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace;
CollectParameters(&m_nIp, 2);
wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ???
strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- CUserDisplay::OnscnTimer.AddCounter(var, ScriptParams[0], onscreen_str, ScriptParams[1] - 1);
+ CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(0), onscreen_str, GET_INTEGER_PARAM(1) - 1, -1, nil, 0);
return 0;
}
case COMMAND_ADD_SET_PIECE:
{
CollectParameters(&m_nIp, 13);
- CSetPieces::AddOne(ScriptParams[0],
- *(CVector2D*)&ScriptParams[1], *(CVector2D*)&ScriptParams[3],
- *(CVector2D*)&ScriptParams[5], *(CVector2D*)&ScriptParams[7],
- *(CVector2D*)&ScriptParams[9], *(CVector2D*)&ScriptParams[11]);
+ float fTriggerInfX = GET_FLOAT_PARAM(1);
+ float fTriggerInfY = GET_FLOAT_PARAM(2);
+ float fTriggerSupX = GET_FLOAT_PARAM(3);
+ float fTriggerSupY = GET_FLOAT_PARAM(4);
+ float fSpawn1X = GET_FLOAT_PARAM(5);
+ float fSpawn1Y = GET_FLOAT_PARAM(6);
+ float fTarget1X = GET_FLOAT_PARAM(7);
+ float fTarget1Y = GET_FLOAT_PARAM(8);
+ float fSpawn2X = GET_FLOAT_PARAM(9);
+ float fSpawn2Y = GET_FLOAT_PARAM(10);
+ float fTarget2X = GET_FLOAT_PARAM(11);
+ float fTarget2Y = GET_FLOAT_PARAM(12);
+ CSetPieces::AddOne(GET_INTEGER_PARAM(0),
+ CVector2D(fTriggerInfX, fTriggerInfY), CVector2D(fTriggerSupX, fTriggerSupY),
+ CVector2D(fSpawn1X, fSpawn1Y), CVector2D(fTarget1X, fTarget1Y),
+ CVector2D(fSpawn2X, fSpawn2Y), CVector2D(fTarget2X, fTarget2Y));
return 0;
}
case COMMAND_SET_EXTRA_COLOURS:
{
CollectParameters(&m_nIp, 2);
- CTimeCycle::StartExtraColour(ScriptParams[0]-1, ScriptParams[1] != 0);
+ CTimeCycle::StartExtraColour(GET_INTEGER_PARAM(0)-1, GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_CLEAR_EXTRA_COLOURS:
{
CollectParameters(&m_nIp, 1);
- CTimeCycle::StopExtraColour(ScriptParams[0]);
+ CTimeCycle::StopExtraColour(GET_INTEGER_PARAM(0));
return 0;
}
//case COMMAND_CLOSE_CAR_BOOT:
case COMMAND_GET_WHEELIE_STATS:
{
CollectParameters(&m_nIp, 1);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- ScriptParams[0] = pPlayerInfo->m_nLastTimeCarSpentOnTwoWheels;
- *(float*)&ScriptParams[1] = pPlayerInfo->m_nLastDistanceCarTravelledOnTwoWheels;
- ScriptParams[2] = pPlayerInfo->m_nLastTimeSpentOnWheelie;
- *(float*)&ScriptParams[3] = pPlayerInfo->m_nLastDistanceTravelledOnWheelie;
- ScriptParams[4] = pPlayerInfo->m_nLastTimeSpentOnStoppie;
- *(float*)&ScriptParams[5] = pPlayerInfo->m_nLastDistanceTravelledOnStoppie;
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ SET_INTEGER_PARAM(0, pPlayerInfo->m_nLastTimeCarSpentOnTwoWheels);
+ SET_FLOAT_PARAM(1, pPlayerInfo->m_nLastDistanceCarTravelledOnTwoWheels);
+ SET_INTEGER_PARAM(2, pPlayerInfo->m_nLastTimeSpentOnWheelie);
+ SET_FLOAT_PARAM(3, pPlayerInfo->m_nLastDistanceTravelledOnWheelie);
+ SET_INTEGER_PARAM(4, pPlayerInfo->m_nLastTimeSpentOnStoppie);
+ SET_FLOAT_PARAM(5, pPlayerInfo->m_nLastDistanceTravelledOnStoppie);
StoreParameters(&m_nIp, 6);
pPlayerInfo->m_nLastTimeCarSpentOnTwoWheels = 0;
pPlayerInfo->m_nLastDistanceCarTravelledOnTwoWheels = 0.0f;
@@ -594,23 +631,20 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_BURST_CAR_TYRE:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
if (pVehicle->IsBike()) {
- if (ScriptParams[1] == 2)
- ScriptParams[1] = 0;
- else if (ScriptParams[1] == 3)
- ScriptParams[1] = 1;
- pVehicle->BurstTyre(ScriptParams[1], true);
- }
- else {
- pVehicle->BurstTyre(ScriptParams[1], true);
+ if (GET_INTEGER_PARAM(1) == 2)
+ SET_INTEGER_PARAM(1, 0);
+ else if (GET_INTEGER_PARAM(1) == 3)
+ SET_INTEGER_PARAM(1, 1);
}
+ pVehicle->BurstTyre(GET_INTEGER_PARAM(1), true);
return 0;
}
case COMMAND_IS_CHAR_OBJ_NO_OBJ:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->m_prevObjective == OBJECTIVE_NONE && pPed->m_objective == OBJECTIVE_NONE);
return 0;
@@ -623,26 +657,26 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
m_nIp += KEY_LENGTH_IN_SCRIPT;
for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++)
key[i] = tolower(key[i]);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- UpdateCompareFlag(strcmp(key, CModelInfo::GetModelInfo(pPed->GetModelIndex())->GetModelName()) == 0);
+ UpdateCompareFlag(CModelInfo::GetModelInfo(pPed->GetModelIndex())->GetNameHashKey() == CKeyGen::GetUppercaseKey(key));
return 0;
}
case COMMAND_SET_PLAYER_CAN_DO_DRIVE_BY:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- pPlayerInfo->m_bDriveByAllowed = ScriptParams[1];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayerInfo->m_bDriveByAllowed = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_CHAR_OBJ_SPRINT_TO_COORD:
{
CollectParameters(&m_nIp, 3);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
CVector pos;
- pos.x = *(float*)&ScriptParams[1];
- pos.y = *(float*)&ScriptParams[2];
+ pos.x = GET_FLOAT_PARAM(1);
+ pos.y = GET_FLOAT_PARAM(2);
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
pPed->bScriptObjectiveCompleted = false;
pPed->SetObjective(OBJECTIVE_SPRINT_TO_AREA, pos);
@@ -651,7 +685,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_CREATE_SWAT_ROPE:
{
CollectParameters(&m_nIp, 3);
- CRopes::CreateRopeWithSwatComingDown(*(CVector*)&ScriptParams[0]);
+ CRopes::CreateRopeWithSwatComingDown(GET_VECTOR_PARAM(0));
return 0;
}
//case COMMAND_SET_FIRST_PERSON_CONTROL_CAMERA:
@@ -659,19 +693,19 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SET_CAR_MODEL_COMPONENTS:
{
CollectParameters(&m_nIp, 3);
- CVehicleModelInfo::SetComponentsToUse(ScriptParams[1], ScriptParams[2]);
+ CVehicleModelInfo::SetComponentsToUse(GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_SWITCH_LIFT_CAMERA:
{
CollectParameters(&m_nIp, 1);
- CSpecialFX::bLiftCam = ScriptParams[0] != 0;
+ CSpecialFX::bLiftCam = GET_INTEGER_PARAM(0) != 0;
return 0;
}
case COMMAND_CLOSE_ALL_CAR_DOORS:
{
CollectParameters(&m_nIp, 1);
- CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pCar&& pCar->IsCar());
pCar->CloseAllDoors();
return 0;
@@ -679,21 +713,25 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_GET_DISTANCE_BETWEEN_COORDS_2D:
{
CollectParameters(&m_nIp, 4);
- *(float*)&ScriptParams[0] = (*(CVector2D*)&ScriptParams[0] - *(CVector2D*)&ScriptParams[2]).Magnitude();
+ float X1 = GET_FLOAT_PARAM(0);
+ float Y1 = GET_FLOAT_PARAM(1);
+ float X2 = GET_FLOAT_PARAM(2);
+ float Y2 = GET_FLOAT_PARAM(3);
+ SET_FLOAT_PARAM(0, (CVector2D(X1, Y1) - CVector2D(X2, Y2)).Magnitude());
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_GET_DISTANCE_BETWEEN_COORDS_3D:
{
CollectParameters(&m_nIp, 6);
- *(float*)&ScriptParams[0] = (*(CVector*)&ScriptParams[0] - *(CVector*)&ScriptParams[3]).Magnitude();
+ SET_FLOAT_PARAM(0, (GET_VECTOR_PARAM(0) - GET_VECTOR_PARAM(3)).Magnitude());
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_POP_CAR_BOOT_USING_PHYSICS:
{
CollectParameters(&m_nIp, 1);
- CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pCar && pCar->IsCar());
pCar->PopBootUsingPhysics();
return 0;
@@ -702,7 +740,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_IS_CHAR_LEAVING_VEHICLE_TO_DIE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE);
return 0;
@@ -710,25 +748,29 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_SORT_OUT_OBJECT_COLLISION_WITH_CAR:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->m_pCollidingEntity = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ pObject->m_pCollidingEntity = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
return 0;
}
//case COMMAND_GET_MAX_WANTED_LEVEL:
case COMMAND_IS_CHAR_WANDER_PATH_CLEAR:
{
CollectParameters(&m_nIp, 5);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- UpdateCompareFlag(CWorld::IsWanderPathClear(pPed->GetPosition(), *(CVector*)&ScriptParams[0], *(float*)&ScriptParams[3], 4));
+ UpdateCompareFlag(CWorld::IsWanderPathClear(pPed->GetPosition(), GET_VECTOR_PARAM(0), GET_FLOAT_PARAM(3), 4));
return 0;
}
//case COMMAND_PRINT_HELP_WITH_NUMBER:
case COMMAND_PRINT_HELP_FOREVER:
{
wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- CHud::SetHelpMessage(text, false, true);
+ CHud::SetHelpMessage(text, false, true); // + true
+ if (text != CHud::gLastPrintForeverString) {
+ CHud::gLastPrintForeverString = text;
+ DMAudio.PlayFrontEndSound(SOUND_HUD, 0);
+ }
return 0;
}
//case COMMAND_PRINT_HELP_FOREVER_WITH_NUMBER:
@@ -744,10 +786,10 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_CHAR_CAN_BE_DAMAGED_BY_MEMBERS_OF_GANG:
{
CollectParameters(&m_nIp, 3);
- CPed* pTarget = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pTarget = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pTarget);
- uint8 flag = 1 << (uint8)ScriptParams[1];
- if (ScriptParams[2])
+ uint8 flag = 1 << (uint8)GET_INTEGER_PARAM(1);
+ if (GET_INTEGER_PARAM(2))
pTarget->m_gangFlags |= flag;
else
pTarget->m_gangFlags &= ~flag;
@@ -760,7 +802,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_CREATE_LOCKED_PROPERTY_PICKUP:
{
CollectParameters(&m_nIp, 3);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
char key[KEY_LENGTH_IN_SCRIPT];
@@ -768,39 +810,39 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
m_nIp += KEY_LENGTH_IN_SCRIPT;
// TheText.Get(key);
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY, PICKUP_PROPERTY_LOCKED, 0, 0, false, key);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY, PICKUP_PROPERTY_LOCKED, 0, 0, false, key));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_CREATE_FORSALE_PROPERTY_PICKUP:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
char key[KEY_LENGTH_IN_SCRIPT];
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- // TheText.Get(key);
+ TheText.Get(key);
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY_FORSALE, PICKUP_PROPERTY_FORSALE, ScriptParams[3], 0, false, key);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY_FORSALE, PICKUP_PROPERTY_FORSALE, GET_INTEGER_PARAM(3), 0, false, key));
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_FREEZE_CAR_POSITION:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bIsFrozen = ScriptParams[1];
- pVehicle->bInfiniteMass = ScriptParams[1];
+ pVehicle->bIsFrozen = GET_INTEGER_PARAM(1);
+ pVehicle->bInfiniteMass = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_CHAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- CPed* pTestedPed = CPools::GetPedPool()->GetAt(ScriptParams[1]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pTestedPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
bool result = false;
if (pPed) {
if (pPed->m_lastDamEntity) {
@@ -814,16 +856,75 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
UpdateCompareFlag(result);
return 0;
}
- //case COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_CAR:
- //case COMMAND_HAS_CAR_BEEN_DAMAGED_BY_CHAR:
- //case COMMAND_HAS_CAR_BEEN_DAMAGED_BY_CAR:
- //case COMMAND_GET_RADIO_CHANNEL:
+ case COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_CAR:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CVehicle* pTestedVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ bool result = false;
+ if (pPed) {
+ if (pPed->m_lastDamEntity) {
+ if (pPed->m_lastDamEntity == pTestedVehicle)
+ result = true;
+ }
+ }
+ else
+ debug("HAS_CHAR_BEEN_DAMAGED_BY_CAR - Character doesn't exist\n");
+ UpdateCompareFlag(result);
+ return 0;
+ }
+ case COMMAND_HAS_CAR_BEEN_DAMAGED_BY_CHAR:
+ {
+ CollectParameters(&m_nIp, 2);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pTestedPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ bool result = false;
+ if (pVehicle) {
+ if (pVehicle->m_pLastDamageEntity) {
+ if (pVehicle->m_pLastDamageEntity == pTestedPed)
+ result = true;
+ if (pTestedPed->bInVehicle && pVehicle->m_pLastDamageEntity == pTestedPed->m_pMyVehicle)
+ result = true;
+ }
+ }
+ else
+ debug("HAS_CAR_BEEN_DAMAGED_BY_CHAR - Car doesn't exist\n");
+ UpdateCompareFlag(result);
+ return 0;
+ }
+ case COMMAND_HAS_CAR_BEEN_DAMAGED_BY_CAR:
+ {
+ CollectParameters(&m_nIp, 2);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ CVehicle* pTestedVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ bool result = false;
+ if (pVehicle) {
+ if (pVehicle->m_pLastDamageEntity) {
+ if (pVehicle->m_pLastDamageEntity == pTestedVehicle)
+ result = true;
+ }
+ }
+ else
+ debug("HAS_CAR_BEEN_DAMAGED_BY_CAR - First car doesn't exist\n");
+ UpdateCompareFlag(result);
+ return 0;
+ }
+ case COMMAND_GET_RADIO_CHANNEL:
+ {
+ uint8 radio = DMAudio.GetRadioInCar();
+ if (radio < NUM_RADIOS || radio == STREAMED_SOUND_MISSION_COMPLETED)
+ SET_INTEGER_PARAM(0, radio);
+ else
+ SET_INTEGER_PARAM(0, -1);
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
//case COMMAND_DISPLAY_TEXT_WITH_3_NUMBERS:
//case COMMAND_IS_CAR_DROWNING_IN_WATER:
case COMMAND_IS_CHAR_DROWNING_IN_WATER:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
UpdateCompareFlag(pPed && pPed->bIsDrowning);
return 0;
}
@@ -837,7 +938,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
CollectParameters(&m_nIp, 3);
bool shattered = false;
- if ( CGlass::HasGlassBeenShatteredAtCoors(*(float*)&ScriptParams[0], *(float*)&ScriptParams[1], *(float*)&ScriptParams[2]) )
+ if ( CGlass::HasGlassBeenShatteredAtCoors(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2)) )
shattered = true;
UpdateCompareFlag(shattered);
@@ -846,14 +947,14 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_ATTACH_CUTSCENE_OBJECT_TO_BONE:
{
CollectParameters(&m_nIp, 3);
- CCutsceneMgr::AttachObjectToBone(CPools::GetObjectPool()->GetAt(ScriptParams[0]), CPools::GetObjectPool()->GetAt(ScriptParams[1]), ScriptParams[2]);
+ CCutsceneMgr::AttachObjectToBone(CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)), CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1)), GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_ATTACH_CUTSCENE_OBJECT_TO_COMPONENT:
{
CollectParameters(&m_nIp, 2);
- CObject *obj1 = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- CObject *obj2 = CPools::GetObjectPool()->GetAt(ScriptParams[1]);
+ CObject *obj1 = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ CObject *obj2 = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(1));
char key[KEY_LENGTH_IN_SCRIPT];
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
@@ -865,26 +966,26 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_CHAR_STAY_IN_CAR_WHEN_JACKED:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bStayInCarOnJack = ScriptParams[1];
+ pPed->bStayInCarOnJack = GET_INTEGER_PARAM(1);
return 0;
}
//case COMMAND_IS_MISSION_AUDIO_LOADING:
case COMMAND_ADD_MONEY_SPENT_ON_WEAPONS:
CollectParameters(&m_nIp, 1);
- CStats::MoneySpentOnWeapons(ScriptParams[0]);
+ CStats::MoneySpentOnWeapons(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_ADD_MONEY_SPENT_ON_PROPERTY:
CollectParameters(&m_nIp, 1);
- CStats::MoneySpentOnProperty(ScriptParams[0]);
+ //CStats::MoneySpentOnProperty(GET_INTEGER_PARAM(0));
return 0;
//case COMMAND_ADD_MONEY_SPENT_ON_AUTO_PAINTING:
case COMMAND_SET_CHAR_ANSWERING_MOBILE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- if (ScriptParams[1])
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ if (GET_INTEGER_PARAM(1))
pPed->SetAnswerMobile();
else
pPed->ClearAnswerMobile();
@@ -893,8 +994,8 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_PLAYER_DRUNKENNESS:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- pPlayerInfo->m_pPed->m_nDrunkenness = ScriptParams[1];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayerInfo->m_pPed->m_nDrunkenness = GET_INTEGER_PARAM(1);
pPlayerInfo->m_pPed->m_nFadeDrunkenness = 0;
if (pPlayerInfo->m_pPed->m_nDrunkenness == 0)
CMBlur::ClearDrunkBlur();
@@ -906,21 +1007,21 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
//case COMMAND_ADD_LOAN_SHARK_VISITS:
case COMMAND_ADD_STORES_KNOCKED_OFF:
CollectParameters(&m_nIp, 1);
- CStats::NumOfStoresKnockedOff(ScriptParams[0]);
+ //CStats::NumOfStoresKnockedOff(GET_INTEGER_PARAM(0));
return 0;
//case COMMAND_ADD_MOVIE_STUNTS:
case COMMAND_ADD_NUMBER_OF_ASSASSINATIONS:
CollectParameters(&m_nIp, 1);
- CStats::NumOfAssassinations(ScriptParams[0]);
+ //CStats::NumOfAssassinations(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_ADD_PIZZAS_DELIVERED:
CollectParameters(&m_nIp, 1);
- CStats::NumOfPizzasDelivered(ScriptParams[0]);
+ CStats::NumOfPizzasDelivered(GET_INTEGER_PARAM(0));
return 0;
//case COMMAND_ADD_GARBAGE_PICKUPS:
case COMMAND_ADD_ICE_CREAMS_SOLD:
CollectParameters(&m_nIp, 1);
- CStats::NumOfIceCreamSold(ScriptParams[0]);
+ CStats::NumOfIceCreamSold(GET_INTEGER_PARAM(0));
return 0;
//case COMMAND_SET_TOP_SHOOTING_RANGE_SCORE:
//case COMMAND_ADD_SHOOTING_RANGE_RANK:
@@ -930,15 +1031,15 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_CHAR_IN_PLAYERS_GROUP_CAN_FIGHT:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bDontFight = !ScriptParams[1];
+ pPed->bDontFight = !GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_CLEAR_CHAR_WAIT_STATE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->ClearWaitState();
return 0;
@@ -948,17 +1049,17 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
CollectParameters(&m_nIp, 5);
int handle = -1;
uint32 i = CPools::GetVehiclePool()->GetSize();
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(3);
while (i--) {
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
if (!pVehicle)
continue;
if (pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_CAR && pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_BIKE)
continue;
- if (ScriptParams[4] != pVehicle->GetModelIndex() && ScriptParams[4] >= 0)
+ if (GET_INTEGER_PARAM(4) != pVehicle->GetModelIndex() && GET_INTEGER_PARAM(4) >= 0)
continue;
if (pVehicle->VehicleCreatedBy != RANDOM_VEHICLE)
continue;
@@ -966,30 +1067,30 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
continue;
handle = CPools::GetVehiclePool()->GetIndex(pVehicle);
}
- ScriptParams[0] = handle;
+ SET_INTEGER_PARAM(0, handle);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_SET_CAN_BURST_CAR_TYRES:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bTyresDontBurst = !ScriptParams[1];
+ pVehicle->bTyresDontBurst = !GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_PLAYER_AUTO_AIM:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- pPed->bDoomAim = ScriptParams[1];
+ pPed->bDoomAim = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_FIRE_HUNTER_GUN:
{
CollectParameters(&m_nIp, 1);
- CVehicle *pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle *pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
if (CTimer::GetTimeInMilliseconds() > pVehicle->m_nGunFiringTime + 150) {
CWeapon gun(WEAPONTYPE_HELICANNON, 5000);
CVector worldGunPos = (pVehicle->GetMatrix() * vecHunterGunPos) + (CTimer::GetTimeStep() * pVehicle->m_vecMoveSpeed);
@@ -1002,27 +1103,27 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
}
case COMMAND_SET_PROPERTY_AS_OWNED:
CollectParameters(&m_nIp, 1);
- CStats::AddPropertyAsOwned(ScriptParams[0]);
+ CStats::AddPropertyAsOwned(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_ADD_BLOOD_RING_KILLS:
CollectParameters(&m_nIp, 1);
- CStats::AddNumBloodRingKills(ScriptParams[0]);
+ CStats::AddNumBloodRingKills(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_SET_LONGEST_TIME_IN_BLOOD_RING:
CollectParameters(&m_nIp, 1);
- CStats::LongestTimeInBloodRing(ScriptParams[0]);
+ CStats::LongestTimeInBloodRing(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE:
{
- CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver();
+ //CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver();
return 0;
}
case COMMAND_IS_PLAYER_TOUCHING_VEHICLE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
CPhysical* pTestedEntity = pPed;
if (pPed->bInVehicle && pPed->m_pMyVehicle)
pTestedEntity = pPed->m_pMyVehicle;
@@ -1033,15 +1134,15 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_CHECK_FOR_PED_MODEL_AROUND_PLAYER:
{
CollectParameters(&m_nIp, 6);
- CVector d1 = CWorld::Players[ScriptParams[0]].GetPos() - *(CVector*)&ScriptParams[1];
- CVector d2 = CWorld::Players[ScriptParams[0]].GetPos() + *(CVector*)&ScriptParams[1];
+ CVector d1 = CWorld::Players[GET_INTEGER_PARAM(0)].GetPos() - GET_VECTOR_PARAM(1);
+ CVector d2 = CWorld::Players[GET_INTEGER_PARAM(0)].GetPos() + GET_VECTOR_PARAM(1);
int i = CPools::GetPedPool()->GetSize();
bool result = false;
while (i--) {
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
if (!pPed)
continue;
- if (ScriptParams[4] != pPed->GetModelIndex() && ScriptParams[5] != pPed->GetModelIndex())
+ if (GET_INTEGER_PARAM(4) != pPed->GetModelIndex() && GET_INTEGER_PARAM(5) != pPed->GetModelIndex())
continue;
if (pPed->IsWithinArea(d1.x, d1.y, d1.z, d2.x, d2.y, d2.z))
result = true;
@@ -1052,7 +1153,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_CLEAR_CHAR_FOLLOW_PATH:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
if (pPed->GetPedState() == PED_FOLLOW_PATH) {
pPed->RestorePreviousState();
@@ -1063,15 +1164,15 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_CHAR_CAN_BE_SHOT_IN_VEHICLE:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bCanBeShotInVehicle = ScriptParams[1];
+ pPed->bCanBeShotInVehicle = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_ATTACH_CUTSCENE_OBJECT_TO_VEHICLE:
{
CollectParameters(&m_nIp, 2);
- CCutsceneMgr::AttachObjectToParent(CPools::GetObjectPool()->GetAt(ScriptParams[0]), CPools::GetVehiclePool()->GetAt(ScriptParams[1]));
+ CCutsceneMgr::AttachObjectToParent(CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)), CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1)));
return 0;
}
case COMMAND_LOAD_MISSION_TEXT:
@@ -1085,39 +1186,48 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_TONIGHTS_EVENT:
{
CollectParameters(&m_nIp, 1);
- CScrollBar::TonightsEvent = ScriptParams[0];
+ CScrollBar::TonightsEvent = GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_CLEAR_CHAR_LAST_DAMAGE_ENTITY:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
if (pPed)
pPed->m_lastDamEntity = nil;
else
debug("CLEAR_CHAR_LAST_DAMAGE_ENTITY - Character doesn't exist\n");
return 0;
}
- //case COMMAND_CLEAR_CAR_LAST_DAMAGE_ENTITY:
+ case COMMAND_CLEAR_CAR_LAST_DAMAGE_ENTITY:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ if (pVehicle)
+ pVehicle->m_pLastDamageEntity = nil;
+ else
+ debug("CLEAR_CAR_LAST_DAMAGE_ENTITY - Car doesn't exist\n");
+ return 0;
+ }
case COMMAND_FREEZE_OBJECT_POSITION:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->bIsFrozen = ScriptParams[1];
- pObject->bInfiniteMass = ScriptParams[1];
+ pObject->bIsFrozen = GET_INTEGER_PARAM(1);
+ pObject->bInfiniteMass = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_PLAYER_HAS_MET_DEBBIE_HARRY:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::bPlayerHasMetDebbieHarry = ScriptParams[0];
+ CTheScripts::bPlayerHasMetDebbieHarry = GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_SET_RIOT_INTENSITY:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::RiotIntensity = ScriptParams[0];
+ CTheScripts::RiotIntensity = GET_INTEGER_PARAM(0);
return 0;
}
//case COMMAND_IS_CAR_IN_ANGLED_AREA_2D:
@@ -1127,27 +1237,28 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
{
CollectParameters(&m_nIp, 8);
CGameLogic::SetUpShortCut(
- *(CVector*)&ScriptParams[0], *(float*)&ScriptParams[3],
- *(CVector*)&ScriptParams[4], *(float*)&ScriptParams[7]);
+ GET_VECTOR_PARAM(0), GET_FLOAT_PARAM(3),
+ GET_VECTOR_PARAM(4), GET_FLOAT_PARAM(7));
return 0;
}
case COMMAND_CLEAR_TAXI_SHORTCUT:
CGameLogic::ClearShortCut();
+ CGameLogic::RemoveShortCutDropOffPointForMission();
return 0;
//case COMMAND_SET_CHAR_OBJ_GOTO_CAR_ON_FOOT:
//case COMMAND_GET_CLOSEST_WATER_NODE:
case COMMAND_ADD_PORN_LEAFLET_TO_RUBBISH:
CollectParameters(&m_nIp, 1);
- CStats::PamphletMissionPassed = ScriptParams[0];
+ CStats::PamphletMissionPassed = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_CREATE_CLOTHES_PICKUP:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_CLOTHES, PICKUP_ON_STREET, ScriptParams[3]);
+ SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_CLOTHES, PICKUP_ON_STREET, GET_INTEGER_PARAM(3))); // TODO: gpModelIndices
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -1155,30 +1266,32 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_MAKE_PLAYER_FIRE_PROOF:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- pPlayerInfo->m_bFireproof = ScriptParams[1];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayerInfo->m_bFireproof = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_INCREASE_PLAYER_MAX_HEALTH:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- pPlayerInfo->m_nMaxHealth += ScriptParams[1];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayerInfo->m_nMaxHealth += GET_INTEGER_PARAM(1);
pPlayerInfo->m_pPed->m_fHealth = pPlayerInfo->m_nMaxHealth;
+ CHud::m_ItemToFlash = ITEM_HEALTH;
return 0;
}
case COMMAND_INCREASE_PLAYER_MAX_ARMOUR:
{
CollectParameters(&m_nIp, 2);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- pPlayerInfo->m_nMaxArmour += ScriptParams[1];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ pPlayerInfo->m_nMaxArmour += GET_INTEGER_PARAM(1);
pPlayerInfo->m_pPed->m_fArmour = pPlayerInfo->m_nMaxArmour;
+ CHud::m_ItemToFlash = ITEM_ARMOUR;
return 0;
}
case COMMAND_CREATE_RANDOM_CHAR_AS_DRIVER:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
CPed* pPed = CPopulation::AddPedInCar(pVehicle, true);
pPed->CharCreatedBy = MISSION_CHAR;
pPed->bRespondsToThreats = false;
@@ -1200,16 +1313,16 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
pVehicle->bEngineOn = true;
pVehicle->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pVehicle->GetPosition());
CPopulation::ms_nTotalMissionPeds++;
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pPed));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_CREATE_RANDOM_CHAR_AS_PASSENGER:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
CPed* pPed = CPopulation::AddPedInCar(pVehicle, false);
pPed->CharCreatedBy = MISSION_CHAR;
pPed->bRespondsToThreats = false;
@@ -1221,8 +1334,8 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
pPed->SetOrientation(0.0f, 0.0f, 0.0f);
CPopulation::ms_nTotalMissionPeds++;
pVehicle->m_nZoneLevel = CTheZones::GetLevelFromPosition(&pVehicle->GetPosition());
- if (ScriptParams[1] >= 0)
- pVehicle->AddPassenger(pPed, ScriptParams[1]);
+ if (GET_INTEGER_PARAM(1) >= 0)
+ pVehicle->AddPassenger(pPed, GET_INTEGER_PARAM(1));
else
pVehicle->AddPassenger(pPed);
@@ -1230,32 +1343,32 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
pPed->m_pMyVehicle->RegisterReference((CEntity**)&pPed->m_pMyVehicle);
pPed->bInVehicle = true;
pPed->SetPedState(PED_DRIVING);
- ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex(pPed));
StoreParameters(&m_nIp, 1);
if (m_bIsMissionScript)
- CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+ CTheScripts::MissionCleanUp.AddEntityToList(GET_INTEGER_PARAM(0), CLEANUP_CHAR);
return 0;
}
case COMMAND_SET_CHAR_IGNORE_THREATS_BEHIND_OBJECTS:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bIgnoreThreatsBehindObjects = ScriptParams[1];
+ pPed->bIgnoreThreatsBehindObjects = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_ENSURE_PLAYER_HAS_DRIVE_BY_WEAPON:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
if (pPed->bInVehicle) {
if (pPed->GetWeapon(WEAPONSLOT_SUBMACHINEGUN).m_eWeaponType) {
- if (pPed->GetWeapon(WEAPONSLOT_SUBMACHINEGUN).m_nAmmoTotal < ScriptParams[1])
- pPed->SetAmmo(pPed->GetWeapon(WEAPONSLOT_SUBMACHINEGUN).m_eWeaponType, ScriptParams[1]);
+ if (pPed->GetWeapon(WEAPONSLOT_SUBMACHINEGUN).m_nAmmoTotal < GET_INTEGER_PARAM(1))
+ pPed->SetAmmo(pPed->GetWeapon(WEAPONSLOT_SUBMACHINEGUN).m_eWeaponType, GET_INTEGER_PARAM(1));
}
else {
- pPed->GiveWeapon(WEAPONTYPE_UZI, ScriptParams[1], true);
+ pPed->GiveWeapon(WEAPONTYPE_UZI, GET_INTEGER_PARAM(1), true);
if (pPed->m_storedWeapon == WEAPONTYPE_UNIDENTIFIED)
pPed->m_storedWeapon = pPed->GetWeapon()->m_eWeaponType;
pPed->SetCurrentWeapon(WEAPONTYPE_UZI);
@@ -1266,7 +1379,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_MAKE_HELI_COME_CRASHING_DOWN:
{
CollectParameters(&m_nIp, 1);
- CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pHeli && pHeli->IsCar() && pHeli->IsRealHeli());
pHeli->bHeliDestroyed = true;
return 0;
@@ -1274,24 +1387,24 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_ADD_EXPLOSION_NO_SOUND:
{
CollectParameters(&m_nIp, 4);
- CExplosion::AddExplosion(nil, nil, (eExplosionType)ScriptParams[3], *(CVector*)&ScriptParams[0], 0, false);
+ CExplosion::AddExplosion(nil, nil, (eExplosionType)GET_INTEGER_PARAM(3), GET_VECTOR_PARAM(0), 0, false);
return 0;
}
case COMMAND_SET_OBJECT_AREA_VISIBLE:
{
CollectParameters(&m_nIp, 2);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pObject);
- pObject->m_area = ScriptParams[1];
+ pObject->m_area = GET_INTEGER_PARAM(1);
return 0;
}
//case COMMAND_WAS_VEHICLE_EVER_POLICE:
case COMMAND_SET_CHAR_NEVER_TARGETTED:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bNeverEverTargetThisPed = ScriptParams[1];
+ pPed->bNeverEverTargetThisPed = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_LOAD_UNCOMPRESSED_ANIM:
@@ -1310,7 +1423,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_CHAR_CROUCH_WHEN_THREATENED:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
pPed->bCrouchWhenScared = true;
return 0;
@@ -1318,7 +1431,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_IS_CHAR_IN_ANY_POLICE_VEHICLE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle &&
pPed->m_pMyVehicle->IsLawEnforcementVehicle() &&
@@ -1327,27 +1440,42 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
}
case COMMAND_DOES_CHAR_EXIST:
CollectParameters(&m_nIp, 1);
- UpdateCompareFlag(CPools::GetPedPool()->GetAt(ScriptParams[0]) != 0);
+ UpdateCompareFlag(CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)) != 0);
+ return 0;
+ case COMMAND_DOES_VEHICLE_EXIST:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ bool bExist = false;
+ if (pVehicle) {
+ int index = GET_INTEGER_PARAM(0) >> 8;
+#ifdef FIX_BUGS
+ bExist = (index >= 0 && index < NUMVEHICLES); // epic fail
+#else
+ bExist = (index > 0 && index < NUMVEHICLES);
+#endif
+ }
+ UpdateCompareFlag(bExist);
return 0;
- //case COMMAND_DOES_VEHICLE_EXIST:
+ }
//case COMMAND_ADD_SHORT_RANGE_BLIP_FOR_CONTACT_POINT:
case COMMAND_ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT:
{
CollectParameters(&m_nIp, 4);
- CVector pos = *(CVector*)&ScriptParams[0];
+ CVector pos = GET_VECTOR_PARAM(0);
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
int id = CRadar::SetShortRangeCoordBlip(BLIP_COORD, pos, 2, BLIP_DISPLAY_BOTH);
- CRadar::SetBlipSprite(id, ScriptParams[3]);
- ScriptParams[0] = id;
+ CRadar::SetBlipSprite(id, GET_INTEGER_PARAM(3));
+ SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1);
return 0;
}
case COMMAND_IS_CHAR_STUCK:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->m_nWaitState == WAITSTATE_STUCK);
return 0;
@@ -1355,15 +1483,15 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_ALL_TAXIS_HAVE_NITRO:
{
CollectParameters(&m_nIp, 1);
- CVehicle::bAllTaxisHaveNitro = ScriptParams[0] != 0;
+ CVehicle::bAllTaxisHaveNitro = GET_INTEGER_PARAM(0) != 0;
return 0;
}
case COMMAND_SET_CHAR_STOP_SHOOT_DONT_SEEK_ENTITY:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pPed->bKindaStayInSamePlace = true;
pPed->bStopAndShoot = true;
}
@@ -1377,9 +1505,9 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_FREEZE_CAR_POSITION_AND_DONT_LOAD_COLLISION:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pVehicle->bIsFrozen = true;
pVehicle->bInfiniteMass = true;
if (m_bIsMissionScript) {
diff --git a/src/control/Script8.cpp b/src/control/Script8.cpp
index 98f69737..3955cacb 100644
--- a/src/control/Script8.cpp
+++ b/src/control/Script8.cpp
@@ -3,8 +3,9 @@
#include "Script.h"
#include "ScriptCommands.h"
+#include "Bike.h"
#include "DMAudio.h"
-#if ((defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT) && defined MORE_LANGUAGES)
+#ifdef MORE_LANGUAGES
#include "Frontend.h"
#endif
#include "GameLogic.h"
@@ -12,13 +13,10 @@
#ifdef MISSION_REPLAY
#include "GenericGameStorage.h"
#endif
-#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
-#include "General.h"
-#include "maths.h"
-#endif
#include "Hud.h"
#include "Pad.h"
#include "PedAttractor.h"
+#include "Pickups.h"
#include "Population.h"
#include "Pools.h"
#include "RpAnimBlend.h"
@@ -29,19 +27,20 @@
#include "World.h"
#include "Zones.h"
+// LCS: file done except TODOs (also check commented out strings)
+
int8 CRunningScript::ProcessCommands1400To1499(int32 command)
{
switch (command) {
case COMMAND_REGISTER_VIGILANTE_LEVEL:
CollectParameters(&m_nIp, 1);
- CStats::RegisterLevelVigilanteMission(ScriptParams[0]);
+ CStats::RegisterLevelVigilanteMission(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_CLEAR_ALL_CHAR_ANIMS:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
- script_assert(pPed);
- if (!pPed->bInVehicle) {
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ if (pPed && pPed->GetPedState() != PED_DRIVING && pPed->GetPedState() != PED_AIM_GUN) {
pPed->m_pVehicleAnim = nil;
pPed->RestartNonPartialAnims();
RpAnimBlendClumpRemoveAllAssociations(pPed->GetClump());
@@ -62,7 +61,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
}
case COMMAND_SET_MAXIMUM_NUMBER_OF_CARS_IN_GARAGE:
CollectParameters(&m_nIp, 2);
- CGarages::SetMaxNumStoredCarsForGarage(ScriptParams[0], ScriptParams[1]);
+ CGarages::SetMaxNumStoredCarsForGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_WANTED_STARS_ARE_FLASHING:
{
@@ -72,25 +71,25 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
}
case COMMAND_SET_ALLOW_HURRICANES:
CollectParameters(&m_nIp, 1);
- CStats::NoMoreHurricanes = ScriptParams[0];
+ CStats::NoMoreHurricanes = GET_INTEGER_PARAM(0);
return 0;
case COMMAND_PLAY_ANNOUNCEMENT:
{
CollectParameters(&m_nIp, 1);
- DMAudio.PlayRadioAnnouncement(ScriptParams[0] + STREAMED_SOUND_ANNOUNCE_BRIDGE_CLOSED);
+ DMAudio.PlayRadioAnnouncement(GET_INTEGER_PARAM(0) + STREAMED_SOUND_NEWS_A);
return 0;
}
case COMMAND_SET_PLAYER_IS_IN_STADIUM:
{
CollectParameters(&m_nIp, 1);
- CTheScripts::bPlayerIsInTheStatium = ScriptParams[0];
+ CTheScripts::bPlayerIsInTheStatium = GET_INTEGER_PARAM(0);
return 0;
}
case COMMAND_GET_BUS_FARES_COLLECTED_BY_PLAYER:
{
CollectParameters(&m_nIp, 1);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
- ScriptParams[0] = pPlayerInfo->m_pPed->m_nLastBusFareCollected;
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
+ SET_INTEGER_PARAM(0, pPlayerInfo->m_pPed->m_nLastBusFareCollected);
pPlayerInfo->m_pPed->m_nLastBusFareCollected = 0;
StoreParameters(&m_nIp, 1);
return 0;
@@ -98,11 +97,11 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_SET_CHAR_OBJ_BUY_ICE_CREAM:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[1]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
script_assert(pVehicle);
- ScriptParams[0] = 0;
+ SET_INTEGER_PARAM(0, 0);
if (pPed->m_objective == OBJECTIVE_NONE && !pPed->bHasAlreadyUsedAttractor) {
C2dEffect* pEffect = (C2dEffect*)GetPedAttractorManager()->GetEffectForIceCreamVan(pVehicle, pPed->GetPosition()); // has to be casted, because inner methods are const
if (pEffect) {
@@ -111,7 +110,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
if ((pPed->GetPosition() - pos).MagnitudeSqr() < SQR(20.0f)) {
if (GetPedAttractorManager()->HasEmptySlot(pEffect) && GetPedAttractorManager()->IsApproachable(pEffect, pVehicle->GetMatrix(), 0, pPed)) {
if (GetPedAttractorManager()->RegisterPedWithAttractor(pPed, pEffect, pVehicle->GetMatrix()))
- ScriptParams[0] = 1;
+ SET_INTEGER_PARAM(0, 1);
}
}
}
@@ -121,16 +120,17 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
}
case COMMAND_DISPLAY_RADAR:
CollectParameters(&m_nIp, 1);
- CHud::m_HideRadar = ScriptParams[0] == 0;
+ CHud::m_HideRadar = GET_INTEGER_PARAM(0) == 0;
+ // on PS2 two flags are set, on mobile none
return 0;
case COMMAND_REGISTER_BEST_POSITION:
CollectParameters(&m_nIp, 2);
- CStats::RegisterBestPosition(ScriptParams[0], ScriptParams[1]);
+ CStats::RegisterBestPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_IS_PLAYER_IN_INFO_ZONE:
{
CollectParameters(&m_nIp, 1);
- CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[GET_INTEGER_PARAM(0)];
char key[KEY_LENGTH_IN_SCRIPT];
memset(key, 0, KEY_LENGTH_IN_SCRIPT);
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
@@ -143,7 +143,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_CLEAR_CHAR_ICE_CREAM_PURCHASE:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
if (pPed->m_attractor)
GetPedAttractorManager()->DeRegisterPed(pPed, pPed->m_attractor);
@@ -155,7 +155,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_HAS_CHAR_ATTEMPTED_ATTRACTOR:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bHasAlreadyUsedAttractor);
return 0;
@@ -163,9 +163,9 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_SET_LOAD_COLLISION_FOR_CAR_FLAG:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pVehicle->bDontLoadCollision = false;
if (m_bMissionFlag) {
CWorld::Remove(pVehicle);
@@ -186,9 +186,9 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_SET_LOAD_COLLISION_FOR_CHAR_FLAG:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- if (ScriptParams[1]) {
+ if (GET_INTEGER_PARAM(1)) {
pPed->bDontLoadCollision = false;
if (m_bMissionFlag) {
CWorld::Remove(pPed);
@@ -210,31 +210,31 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_ADD_BIG_GUN_FLASH:
{
CollectParameters(&m_nIp, 6);
- CWeapon::AddGunFlashBigGuns(*(CVector*)&ScriptParams[0], *(CVector*)&ScriptParams[3]);
+ CWeapon::AddGunFlashBigGuns(GET_VECTOR_PARAM(0), GET_VECTOR_PARAM(3));
return 0;
}
case COMMAND_HAS_CHAR_BOUGHT_ICE_CREAM:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(pPed->bBoughtIceCream);
return 0;
}
case COMMAND_GET_PROGRESS_PERCENTAGE:
- *(float*)&ScriptParams[0] = CStats::GetPercentageProgress();
+ SET_FLOAT_PARAM(0, CStats::GetPercentageProgress());
StoreParameters(&m_nIp, 1);
return 0;
case COMMAND_SET_SHORTCUT_PICKUP_POINT:
{
CollectParameters(&m_nIp, 4);
- CGameLogic::AddShortCutPointAfterDeath(*(CVector*)&ScriptParams[0], *(float*)&ScriptParams[3]);
+ CGameLogic::AddShortCutPointAfterDeath(GET_VECTOR_PARAM(0), GET_FLOAT_PARAM(3));
return 0;
}
case COMMAND_SET_SHORTCUT_DROPOFF_POINT_FOR_MISSION:
{
CollectParameters(&m_nIp, 4);
- CGameLogic::AddShortCutDropOffPointForMission(*(CVector*)&ScriptParams[0], *(float*)&ScriptParams[3]);
+ CGameLogic::AddShortCutDropOffPointForMission(GET_VECTOR_PARAM(0), GET_FLOAT_PARAM(3));
return 0;
}
case COMMAND_GET_RANDOM_ICE_CREAM_CUSTOMER_IN_AREA:
@@ -242,10 +242,10 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
CollectParameters(&m_nIp, 7);
int ped_handle = -1;
CVector pos = FindPlayerCoors();
- float x1 = *(float*)&ScriptParams[0];
- float y1 = *(float*)&ScriptParams[1];
- float x2 = *(float*)&ScriptParams[2];
- float y2 = *(float*)&ScriptParams[3];
+ float x1 = GET_FLOAT_PARAM(0);
+ float y1 = GET_FLOAT_PARAM(1);
+ float x2 = GET_FLOAT_PARAM(2);
+ float y2 = GET_FLOAT_PARAM(3);
int i = CPools::GetPedPool()->GetSize();
while (--i && ped_handle == -1) {
CPed* pPed = CPools::GetPedPool()->GetSlot(i);
@@ -267,7 +267,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
continue;
if (pPed->m_attractor)
continue;
- if (!ThisIsAValidRandomPed(pPed->m_nPedType, ScriptParams[4], ScriptParams[5], ScriptParams[6]))
+ if (!ThisIsAValidRandomPed(pPed->m_nPedType, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6)))
continue;
if (pPed->bIsLeader || pPed->m_leader)
continue;
@@ -285,7 +285,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
}
- ScriptParams[0] = ped_handle;
+ SET_INTEGER_PARAM(0, ped_handle);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -294,10 +294,10 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
{
CollectParameters(&m_nIp, 4);
uint32 i = CPools::GetVehiclePool()->GetSize();
- float infX = *(float*)&ScriptParams[0];
- float infY = *(float*)&ScriptParams[1];
- float supX = *(float*)&ScriptParams[2];
- float supY = *(float*)&ScriptParams[3];
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(3);
while (i--) {
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
if (!pVehicle)
@@ -309,22 +309,23 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
}
case COMMAND_SET_GANG_ATTACK_PLAYER_WITH_COPS:
CollectParameters(&m_nIp, 2);
- CGangs::SetWillAttackPlayerWithCops((ePedType)((int)PEDTYPE_GANG1 + ScriptParams[0]), !!ScriptParams[1]);
+ CGangs::SetWillAttackPlayerWithCops((ePedType)((int)PEDTYPE_GANG1 + GET_INTEGER_PARAM(0)), !!GET_INTEGER_PARAM(1));
return 0;
case COMMAND_SET_CHAR_FRIGHTENED_IN_JACKED_CAR:
{
CollectParameters(&m_nIp, 2);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- pPed->bHeldHostageInCar = ScriptParams[1];
+ pPed->bHeldHostageInCar = GET_INTEGER_PARAM(1);
+ pPed->b1A4_2 = GET_INTEGER_PARAM(1);
return 0;
}
case COMMAND_SET_VEHICLE_TO_FADE_IN:
{
CollectParameters(&m_nIp, 2);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), ScriptParams[1]);
+ CVisibilityPlugins::SetClumpAlpha(pVehicle->GetClump(), GET_INTEGER_PARAM(1));
return 0;
}
case COMMAND_REGISTER_ODDJOB_MISSION_PASSED:
@@ -336,7 +337,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_IS_PLAYER_IN_SHORTCUT_TAXI:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
+ CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed;
script_assert(pPed);
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle && pPed->m_pMyVehicle == CGameLogic::pShortCutTaxi);
return 0;
@@ -344,7 +345,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_IS_CHAR_DUCKING:
{
CollectParameters(&m_nIp, 1);
- CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
UpdateCompareFlag(RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_DUCK_DOWN) != nil);
return 0;
@@ -352,24 +353,24 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI:
{
CollectParameters(&m_nIp, 3);
- CObject* pHeli = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ CObject* pHeli = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
bool found = false;
float waterLevel = -1000.0f;
CVector pos = pHeli->GetPosition();
- float radius = *(float*)&ScriptParams[1];
+ float radius = GET_FLOAT_PARAM(1);
float ground = CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z, &found);
if (!CWaterLevel::GetWaterLevel(pos.x, pos.y, pos.z, &waterLevel, false))
waterLevel = 0.0f;
if (waterLevel > ground)
ground = waterLevel;
- if (ScriptParams[2] > 8)
- ScriptParams[2] = 8;
- CVehicle::HeliDustGenerate(pHeli, (pos.z - ground - 1.0f - radius) * 0.3 + radius, ground, ScriptParams[2]);
+ if (GET_INTEGER_PARAM(2) > 8)
+ SET_INTEGER_PARAM(2, 8);
+ CVehicle::HeliDustGenerate(pHeli, (pos.z - ground - 1.0f - radius) * 0.3 + radius, ground, GET_INTEGER_PARAM(2));
return 0;
}
case COMMAND_REGISTER_FIRE_LEVEL:
CollectParameters(&m_nIp, 1);
- CStats::RegisterLevelFireMission(ScriptParams[0]);
+ CStats::RegisterLevelFireMission(GET_INTEGER_PARAM(0));
return 0;
case COMMAND_IS_AUSTRALIAN_GAME:
UpdateCompareFlag(false); // should we make some check?
@@ -377,14 +378,23 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_DISARM_CAR_BOMB:
{
CollectParameters(&m_nIp, 1);
- CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
- if (pVehicle->m_bombType != CARBOMB_NONE) {
- pVehicle->m_bombType = CARBOMB_NONE;
- pVehicle->m_pBombRigger = nil;
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ if (pVehicle->IsCar()) {
+ if (((CAutomobile*)pVehicle)->m_bombType != CARBOMB_NONE) {
+ ((CAutomobile*)pVehicle)->m_bombType = CARBOMB_NONE;
+ ((CAutomobile*)pVehicle)->m_pBombRigger = nil;
+ }
}
+#ifdef FIX_BUGS
+ else if (pVehicle->IsBike()) {
+ if (((CBike*)pVehicle)->m_bombType != CARBOMB_NONE) {
+ ((CBike*)pVehicle)->m_bombType = CARBOMB_NONE;
+ ((CBike*)pVehicle)->m_pBombRigger = nil;
+ }
+ }
+#endif
return 0;
}
-#if (defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT)
case COMMAND_IS_JAPANESE_GAME:
#ifdef MORE_LANGUAGES
UpdateCompareFlag(FrontEndMenuManager.m_PrefsLanguage == CMenuManager::LANGUAGE_JAPANESE);
@@ -394,223 +404,404 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
UpdateCompareFlag(false);
#endif
return 0;
-#elif (!defined GTA_PS2)
- case COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED:
+ case COMMAND_1442:
+ CollectParameters(&m_nIp, 4);
+ return 0;
+ //case COMMAND_1443:
+ case COMMAND_GET_DISTANCE_BETWEEN_2D_POINTS:
{
- script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR);
- uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp);
- CollectParameters(&m_nIp, 1);
- //CUserDisplay::OnscnTimer.SetCounterFlashWhenFirstDisplayed(var, ScriptParams[0]);
+ CollectParameters(&m_nIp, 4);
+ float X1 = GET_FLOAT_PARAM(0);
+ float Y1 = GET_FLOAT_PARAM(1);
+ float X2 = GET_FLOAT_PARAM(2);
+ float Y2 = GET_FLOAT_PARAM(3);
+ float fDistance = Sqrt((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2));
+ SET_FLOAT_PARAM(0, fDistance);
+ StoreParameters(&m_nIp, 1);
return 0;
}
-#endif
-#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- case COMMAND_SHUFFLE_CARD_DECKS:
+ case COMMAND_GET_DISTANCE_BETWEEN_3D_POINTS:
{
- CollectParameters(&m_nIp, 1);
- script_assert(ScriptParams[0] >= 0 && ScriptParams[0] <= 6);
- for (int i = 0; i < CARDS_IN_STACK; i++)
- CTheScripts::CardStack[i] = 0;
- int16 seq[CARDS_IN_STACK];
- for (int i = 0; i < MAX_DECKS * CARDS_IN_DECK; i++)
- seq[i] = i;
- int cards_left = CARDS_IN_DECK * ScriptParams[0];
- for (int k = 1; k < CARDS_IN_DECK + 1; k++) {
- for (int deck = 0; deck < ScriptParams[0]; deck++) {
- int index = CGeneral::GetRandomNumberInRange(0, cards_left);
- CTheScripts::CardStack[seq[index]] = k;
- for (int l = index; l < cards_left; l++) {
- if (l + 1 < CARDS_IN_STACK)
- seq[l] = seq[l + 1];
- else
- seq[l] = 0;
- }
- --cards_left;
- }
- }
- CTheScripts::CardStackPosition = 0;
+ CollectParameters(&m_nIp, 6);
+ float X1 = GET_FLOAT_PARAM(0);
+ float Y1 = GET_FLOAT_PARAM(1);
+ float Z1 = GET_FLOAT_PARAM(2);
+ float X2 = GET_FLOAT_PARAM(3);
+ float Y2 = GET_FLOAT_PARAM(4);
+ float Z2 = GET_FLOAT_PARAM(5);
+ float fDistance = Sqrt((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2) + (Z1 - Z2) * (Z1 - Z2));
+ SET_FLOAT_PARAM(0, fDistance);
+ StoreParameters(&m_nIp, 1);
return 0;
}
- case COMMAND_FETCH_NEXT_CARD:
+ case COMMAND_DOT_PRODUCT_2D:
{
- if (CTheScripts::CardStack[CTheScripts::CardStackPosition] == 0)
- CTheScripts::CardStackPosition = 0;
- ScriptParams[0] = CTheScripts::CardStack[CTheScripts::CardStackPosition++];
- if (CTheScripts::CardStackPosition == CARDS_IN_DECK * MAX_DECKS)
- CTheScripts::CardStackPosition = 0;
+ CollectParameters(&m_nIp, 4);
+ float X1 = GET_FLOAT_PARAM(0);
+ float Y1 = GET_FLOAT_PARAM(1);
+ float X2 = GET_FLOAT_PARAM(2);
+ float Y2 = GET_FLOAT_PARAM(3);
+ float fDistance = X1 * X2 + Y1 * Y2;
+ SET_FLOAT_PARAM(0, fDistance);
StoreParameters(&m_nIp, 1);
return 0;
}
- case COMMAND_GET_OBJECT_VELOCITY:
+ case COMMAND_DOT_PRODUCT_3D:
{
- CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- *(CVector*)&ScriptParams[0] = GAME_SPEED_TO_METERS_PER_SECOND * pObject->GetMoveSpeed();
- StoreParameters(&m_nIp, 3);
+ CollectParameters(&m_nIp, 6);
+ float X1 = GET_FLOAT_PARAM(0);
+ float Y1 = GET_FLOAT_PARAM(1);
+ float Z1 = GET_FLOAT_PARAM(2);
+ float X2 = GET_FLOAT_PARAM(3);
+ float Y2 = GET_FLOAT_PARAM(4);
+ float Z2 = GET_FLOAT_PARAM(5);
+ float fDistance = X1 * X2 + Y1 * Y2 + Z1 * Z2;
+ SET_FLOAT_PARAM(0, fDistance);
+ StoreParameters(&m_nIp, 1);
return 0;
}
- case COMMAND_IS_DEBUG_CAMERA_ON:
- UpdateCompareFlag(TheCamera.WorldViewerBeingUsed);
+ case COMMAND_DEBUG_PRINT_WITH_1_FLOAT:
+ return 0;
+ case COMMAND_DEBUG_PRINT_WITH_2_FLOATS:
return 0;
- case COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY:
+ case COMMAND_DEBUG_PRINT_WITH_3_FLOATS:
+ return 0;
+ case COMMAND_GET_PAD_BUTTON_STATE:
{
- CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- CVector newSpeed = pObject->GetTurnSpeed() + *(CVector*)&ScriptParams[1] / GAME_SPEED_TO_METERS_PER_SECOND;
- if (pObject->bIsStatic) {
- pObject->SetIsStatic(false);
- pObject->AddToMovingList();
+ CollectParameters(&m_nIp, 1);
+ switch (GET_INTEGER_PARAM(0)) {
+ case 0: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetOddJobTrigger()); break;
+ case 1: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetBrake()); break;
+ case 2: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSteeringLeftRight()); break;
+ case 3: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSteeringUpDown()); break;
+ case 4: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetCarGunLeftRight()); break;
+ case 5: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetCarGunUpDown()); break;
+ case 6: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetPedWalkLeftRight()); break;
+ case 7: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetPedWalkUpDown()); break;
+ case 8: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookLeft()); break;
+ case 9: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookRight()); break;
+ case 10: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookBehindForCar()); break;
+ case 11: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetLookBehindForPed()); break;
+ case 12: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetHorn()); break;
+ case 13: SET_INTEGER_PARAM(0, CPad::GetPad(0)->HornJustDown()); break;
+ case 14: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetCarGunFired()); break;
+ case 15: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CarGunJustDown()); break;
+ case 16: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetHandBrake()); break;
+ case 17: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetBrake()); break;
+ case 18: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetExitVehicle()); break;
+ case 19: SET_INTEGER_PARAM(0, CPad::GetPad(0)->ExitVehicleJustDown()); break;
+ case 20: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetWeapon()); break;
+ case 21: SET_INTEGER_PARAM(0, CPad::GetPad(0)->WeaponJustDown()); break;
+ case 22: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetAccelerate()); break;
+ case 23: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CycleCameraModeUpJustDown()); break;
+ case 24: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CycleWeaponLeftJustDown()); break;
+ case 25: SET_INTEGER_PARAM(0, CPad::GetPad(0)->CycleWeaponRightJustDown()); break;
+ case 26: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetTarget()); break;
+ case 27: SET_INTEGER_PARAM(0, CPad::GetPad(0)->TargetJustDown()); break;
+ case 28: SET_INTEGER_PARAM(0, CPad::GetPad(0)->JumpJustDown()); break;
+ case 29: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSprint()); break;
+ case 30: SET_INTEGER_PARAM(0, CPad::GetPad(0)->ShiftTargetLeftJustDown()); break;
+ case 31: SET_INTEGER_PARAM(0, CPad::GetPad(0)->ForceCameraBehindPlayer()); break;
+ case 32: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperZoomIn()); break;
+ case 33: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperZoomOut()); break;
+ case 34: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperModeLookLeftRight()); break;
+ case 35: SET_INTEGER_PARAM(0, CPad::GetPad(0)->SniperModeLookUpDown()); break;
+ case 36: SET_INTEGER_PARAM(0, CPad::GetPad(0)->LookAroundLeftRight()); break;
+ case 37: SET_INTEGER_PARAM(0, CPad::GetPad(0)->LookAroundUpDown()); break;
+ case 38: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiLeft()); break;
+ case 39: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiRight()); break;
+ case 40: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiUp()); break;
+ case 41: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiDown()); break;
+ case 42: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiSelect()); break;
+ case 43: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GuiBack()); break;
+ case 44: SET_INTEGER_PARAM(0, CPad::GetPad(0)->GetSkipCutscene()); if (GET_INTEGER_PARAM(0)) TheCamera.m_bIgnoreFadingStuffForMusic = false; break; // spectacular hack
}
- pObject->SetTurnSpeed(newSpeed.x, newSpeed.y, newSpeed.z);
+ StoreParameters(&m_nIp, 1);
return 0;
}
- case COMMAND_SET_OBJECT_ROTATION_VELOCITY:
+ case COMMAND_SET_NAVIGATION_ARROW:
{
- CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- CVector newSpeed = *(CVector*)&ScriptParams[1] / GAME_SPEED_TO_METERS_PER_SECOND;
- if (pObject->bIsStatic) {
- pObject->SetIsStatic(false);
- pObject->AddToMovingList();
- }
- pObject->SetTurnSpeed(newSpeed.x, newSpeed.y, newSpeed.z);
+ CollectParameters(&m_nIp, 3);
+ // cNavArrow::SetTarget(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(0)); // TODO, although it's unused
return 0;
}
- case COMMAND_IS_OBJECT_STATIC:
+ case COMMAND_CLEAR_NAVIGATION_ARROW:
{
- CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- UpdateCompareFlag(pObject->GetIsStatic());
+ // cNavArrow::ClearTarget(); // TODO, although it's unused
return 0;
}
- case COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS:
+ case COMMAND_CALL:
+ case COMMAND_CALLNOT:
{
- CollectParameters(&m_nIp, 4);
- CVector2D v1 = *(CVector2D*)&ScriptParams[0];
- CVector2D v2 = *(CVector2D*)&ScriptParams[2];
- float c = DotProduct2D(v1, v2) / (v1.Magnitude() * v2.Magnitude());
-#ifdef FIX_BUGS // command is a SA leftover where it was fixed to this
- *(float*)&ScriptParams[0] = RADTODEG(Acos(c));
-#else
- *(float*)&ScriptParams[0] = Acos(c);
-#endif
+ m_anStack[m_nStackPointer++] = m_nIp | BIT(STACKVALUE_IS_FUNCTION_CALL_BIT) | ((command == COMMAND_CALLNOT) ? BIT(STACKVALUE_INVERT_RETURN_BIT) : 0);
+ uint8 nInputParams = CTheScripts::Read1ByteFromScript(&m_nIp);
+ uint8 nOutputParameters = CTheScripts::Read1ByteFromScript(&m_nIp);
+ uint8 nLocalsOffset = CTheScripts::Read1ByteFromScript(&m_nIp);
+ uint32 nIPBeforeParameters = m_nIp;
+ CollectParameters(&m_nIp, 1);
+ if (nInputParams)
+ CollectParameters(&m_nIp, nInputParams, &m_anLocalVariables[m_nLocalsPointer + nLocalsOffset]);
+ m_nLocalsPointer += nLocalsOffset;
+ m_anStack[m_nStackPointer - 1] |= (m_nIp - nIPBeforeParameters) << STACKVALUE_IP_PARAMS_OFFSET;
+ if (GET_INTEGER_PARAM(0) < 0)
+ m_nIp = CTheScripts::MainScriptSize - GET_INTEGER_PARAM(0);
+ else
+ m_nIp = GET_INTEGER_PARAM(0);
return 0;
}
- case COMMAND_DO_2D_RECTANGLES_COLLIDE:
+ case COMMAND_IS_CAR_AUTOMOBILE:
{
- CollectParameters(&m_nIp, 8);
- float infX1 = *(float*)&ScriptParams[0] - *(float*)&ScriptParams[2] * 0.5; // NB: not float
- float supX1 = *(float*)&ScriptParams[0] + *(float*)&ScriptParams[2] * 0.5;
- float infX2 = *(float*)&ScriptParams[4] - *(float*)&ScriptParams[6] * 0.5;
- float supX2 = *(float*)&ScriptParams[4] + *(float*)&ScriptParams[6] * 0.5;
- float infY1 = *(float*)&ScriptParams[1] - *(float*)&ScriptParams[3] * 0.5;
- float supY1 = *(float*)&ScriptParams[1] + *(float*)&ScriptParams[3] * 0.5;
- float infY2 = *(float*)&ScriptParams[5] - *(float*)&ScriptParams[7] * 0.5;
- float supY2 = *(float*)&ScriptParams[5] + *(float*)&ScriptParams[7] * 0.5;
- bool collide = true;
- if (infY2 > supY1)
- collide = false;
- if (infY1 > supY2)
- collide = false;
- if (infX2 > supX1)
- collide = false;
- if (infX1 > supX2)
- collide = false;
- UpdateCompareFlag(collide);
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_FIRST_VEHICLE && pVehicle->GetModelIndex() < MI_FERRY);
return 0;
}
- case COMMAND_GET_OBJECT_ROTATION_VELOCITY:
+ case COMMAND_IS_CAR_BIKE:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- *(CVector*)&ScriptParams[0] = pObject->GetTurnSpeed() * GAME_SPEED_TO_METERS_PER_SECOND;
- StoreParameters(&m_nIp, 3);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_ANGEL && pVehicle->GetModelIndex() <= MI_SANCHEZ);
return 0;
}
- case COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY:
+ return 0;
+ case COMMAND_IS_CAR_PLANE:
{
- CollectParameters(&m_nIp, 4);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- CVector vecAddition = *(CVector*)&ScriptParams[1] * CTimer::GetTimeStep() / GAME_SPEED_TO_METERS_PER_SECOND;
- if (!pObject->bIsStatic) {
- CVector vecCurrSpeed = pObject->GetSpeed();
- vecCurrSpeed.Normalise();
- if (vecCurrSpeed.z != 1.0) { // NB: not float!
- CVector vx = CrossProduct(vecCurrSpeed, CVector(0.0f, 0.0f, 1.0f));
- vx.Normalise();
- CVector vz = CrossProduct(vx, vecCurrSpeed);
- vz.Normalise();
- CVector vecNewSpeed = pObject->GetSpeed() + vecAddition.x * vx + vecAddition.y * vecCurrSpeed + vecAddition.z * vecCurrSpeed;
- if (pObject->bIsStatic) {
- pObject->SetIsStatic(false);
- pObject->AddToMovingList();
- }
- pObject->SetMoveSpeed(vecNewSpeed);
- }
- }
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_AIRTRAIN && pVehicle->GetModelIndex() <= MI_DEADDODO);
return 0;
}
- case COMMAND_GET_OBJECT_SPEED:
+ case COMMAND_IS_CAR_HELI:
{
CollectParameters(&m_nIp, 1);
- CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
- *(float*)&ScriptParams[0] = pObject->GetMoveSpeed().Magnitude() * GAME_SPEED_TO_METERS_PER_SECOND;
- StoreParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ UpdateCompareFlag(pVehicle->GetModelIndex() >= MI_ESCAPE && pVehicle->GetModelIndex() <= MI_CHOPPER);
return 0;
}
+#ifdef FIX_BUGS
+ case COMMAND_1476: // they DO have it in script
+ return 0;
#endif
-#if (defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- case COMMAND_IS_MISSION_SKIP:
-#ifdef MISSION_REPLAY
- ScriptParams[0] = MissionSkipLevel;
-#else
- ScriptParams[0] = 0;
-#endif
+ case COMMAND_RETURN_IF_TRUE:
+ if (m_bCondResult) {
+ ReturnFromGosubOrFunction();
+ }
+ return 0;
+ case COMMAND_RETURN_TRUE_IF_TRUE:
+ if (m_bCondResult) {
+ UpdateCompareFlag(false);
+ ReturnFromGosubOrFunction();
+ }
+ return 0;
+ case COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_BEHIND:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->bOnlyAllowedToSitBehind = GET_INTEGER_PARAM(1);
+ return 0;
+ }
+ case COMMAND_SET_RC_HELI_HEIGHT_LIMIT:
+ CollectParameters(&m_nIp, 1);
+ CVehicle::rcHeliHeightLimit = GET_FLOAT_PARAM(0);
+ return 0;
+ case COMMAND_CREATE_SCRIPT_CORONA:
+ {
+ CollectParameters(&m_nIp, 9);
+ base::cSList<script_corona>::tSItem* pCorona = new base::cSList<script_corona>::tSItem();
+ pCorona->item.x = GET_FLOAT_PARAM(0);
+ pCorona->item.y = GET_FLOAT_PARAM(1);
+ pCorona->item.z = GET_FLOAT_PARAM(2);
+ pCorona->item.id = CTheScripts::NextScriptCoronaID++;
+ if (pCorona->item.z <= MAP_Z_LOW_LIMIT)
+ pCorona->item.z = CWorld::FindGroundZForCoord(pCorona->item.x, pCorona->item.y);
+ pCorona->item.size = GET_FLOAT_PARAM(3);
+ pCorona->item.r = GET_INTEGER_PARAM(6);
+ pCorona->item.g = GET_INTEGER_PARAM(7);
+ pCorona->item.b = GET_INTEGER_PARAM(8);
+ pCorona->item.type = GET_INTEGER_PARAM(4);
+ pCorona->item.flareType = GET_INTEGER_PARAM(5);
+ SET_INTEGER_PARAM(0, pCorona->item.id);
+ CTheScripts::mCoronas.Insert(pCorona);
StoreParameters(&m_nIp, 1);
return 0;
- case COMMAND_SET_IN_AMMUNATION:
+ }
+ case COMMAND_REMOVE_SCRIPT_CORONA:
+ {
CollectParameters(&m_nIp, 1);
-#ifdef MISSION_REPLAY
- IsInAmmunation = ScriptParams[0];
-#endif
+ for (base::cSList<script_corona>::tSItem* i = CTheScripts::mCoronas.first; i; i = i->next) {
+ if (i->item.id == GET_INTEGER_PARAM(0)) {
+ CTheScripts::mCoronas.Remove(i);
+ delete i;
+ break;
+ }
+ }
return 0;
- case COMMAND_DO_SAVE_GAME:
+ }
+ case COMMAND_IS_BOAT_IN_WATER:
+ {
CollectParameters(&m_nIp, 1);
-#ifdef USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
- UsingMobileScript = true;
-#endif
-#ifdef MISSION_REPLAY
- SaveGameForPause(ScriptParams[0]);
-#endif
+ CBoat* pVehicle = (CBoat*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle && pVehicle->IsBoat());
+ UpdateCompareFlag(pVehicle->bBoatInWater);
return 0;
- case COMMAND_IS_RETRY:
-#ifdef MISSION_REPLAY
- if (strcmp(m_abScriptName, "porno4") != 0)
- ScriptParams[0] = AllowMissionReplay;
-#ifdef FIX_BUGS
- else
- ScriptParams[0] = gbTryingPorn4Again;
-#else
- else if (gbTryingPorn4Again)
- ScriptParams[0] = 1;
-#endif
-#else
- ScriptParams[0] = 0;
+ }
+ case COMMAND_IS_CAR_DRIVER_BEING_JACKED:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ UpdateCompareFlag(pVehicle->bIsBeingCarJacked);
+ return 0;
+ }
+ case COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_IN_FRONT:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->bOnlyAllowedToSitInFront = GET_INTEGER_PARAM(1);
+ return 0;
+ }
+ case COMMAND_SET_CAR_TILTED_BY_CHAR:
+ {
+ CollectParameters(&m_nIp, 2);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(1));
+ script_assert(pVehicle);
+ pVehicle->ApplyTurnForce(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(-0.8f, -1.2f)* pPed->m_fMass,
+ pPed->GetPosition().x - pVehicle->GetPosition().x, pPed->GetPosition().y - pVehicle->GetPosition().y, 0.0f);
+ DMAudio.PlayOneShot(pVehicle->m_audioEntityId, SOUND_CAR_JERK, 0.0f);
+ return 0;
+ }
+ case COMMAND_GET_WEAPON_TYPE_FOR_PICKUP_IN_AREA:
+ {
+ CollectParameters(&m_nIp, 4);
+ float X = GET_FLOAT_PARAM(0);
+ float Y = GET_FLOAT_PARAM(1);
+ float Z = GET_FLOAT_PARAM(2);
+ float radius = GET_FLOAT_PARAM(3);
+ int model = -1;
+ bool found = false;
+ for (uint32 i = 0; i < NUMPICKUPS; i++) {
+ CPickup* pPickup = &CPickups::aPickUps[i];
+ if (pPickup->m_eType != PICKUP_NONE) {
+ CVector fDist = pPickup->m_vecPos - CVector(X, Y, Z);
+#ifndef FIX_BUGS // this breaks ALL pickups!
+ pPickup->m_eModelIndex = 4;
#endif
+ if (fDist.Magnitude() < radius && pPickup->m_pObject) {
+ found = true;
+ model = CPickups::WeaponForModel(pPickup->m_pObject->GetModelIndex());
+ }
+ }
+ }
+ SET_INTEGER_PARAM(0, model);
StoreParameters(&m_nIp, 1);
+ }
+ case COMMAND_IS_PLAYER_USING_FIRST_PERSON_WEAPON_CAMERA:
+ CollectParameters(&m_nIp, 1);
+ UpdateCompareFlag(TheCamera.Using1stPersonWeaponMode());
return 0;
- case COMMAND_DUMMY:
+ //case COMMAND_1489:
+ //case COMMAND_1490:
+ //case COMMAND_1491:
+ case COMMAND_SET_DEBUG_MENU_ACTIVE:
+ CollectParameters(&m_nIp, 1);
+ // this sets two values on PS2 and PSP, but not on mobile - TODO?
return 0;
-#endif
-#if (defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- // it is unknown what these commands do but they don't take parameters
- case COMMAND_MARK_CUTSCENE_START:
+ case COMMAND_SET_DRAW_HUD:
+ CollectParameters(&m_nIp, 1);
+ CHud::m_Wants_To_Draw_Hud = (GET_INTEGER_PARAM(0) != 0);
return 0;
- case COMMAND_MARK_CUTSCENE_END:
+ case COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS:
+ {
+ CollectParameters(&m_nIp, 4);
+ int ped_handle = -1;
+ CVector pos = FindPlayerCoors();
+ float x1 = GET_FLOAT_PARAM(0);
+ float y1 = GET_FLOAT_PARAM(1);
+ float x2 = GET_FLOAT_PARAM(2);
+ float y2 = GET_FLOAT_PARAM(3);
+ int i = CPools::GetPedPool()->GetSize();
+ while (--i && ped_handle == -1) {
+ CPed* pPed = CPools::GetPedPool()->GetSlot(i);
+ if (!pPed)
+ continue;
+ if (pPed->bRemoveFromWorld)
+ continue;
+ if (pPed->bFadeOut)
+ continue;
+ if (pPed->m_nWaitState != WAITSTATE_FALSE)
+ continue;
+ if (!pPed->IsWithinArea(x1, y1, x2, y2))
+ continue;
+ if (pos.z - PED_FIND_Z_OFFSET > pPed->GetPosition().z)
+ continue;
+ if (pos.z + PED_FIND_Z_OFFSET < pPed->GetPosition().z)
+ continue;
+ ped_handle = CPools::GetPedPool()->GetIndex(pPed);
+ CTheScripts::LastRandomPedId = ped_handle;
+ pPed->CharCreatedBy = MISSION_CHAR;
+ pPed->bRespondsToThreats = false;
+ ++CPopulation::ms_nTotalMissionPeds;
+ if (m_bIsMissionScript)
+ CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
+ }
+ SET_INTEGER_PARAM(0, ped_handle);
+ StoreParameters(&m_nIp, 1);
return 0;
- case COMMAND_CUTSCENE_SCROLL:
+ }
+ case COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE:
+ {
+ CollectParameters(&m_nIp, 4);
+ int handle = -1;
+ uint32 i = CPools::GetVehiclePool()->GetSize();
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(3);
+ while (i-- && handle == -1) {
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
+ if (!pVehicle)
+ continue;
+ if (!pVehicle->IsWithinArea(infX, infY, supX, supY))
+ continue;
+ handle = CPools::GetVehiclePool()->GetIndex(pVehicle);
+ }
+ SET_INTEGER_PARAM(0, handle);
+ StoreParameters(&m_nIp, 1);
return 0;
+ }
+ case COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ if (!pVehicle)
+ printf("STORE_CAR_COLLIDED_WITH_NO_SAVE - Car doesn\'t exist\n");
+ else {
+ if (pVehicle->m_pLastDamageEntity == nil)
+ SET_INTEGER_PARAM(0, -1);
+ else {
+ // what they are doing is not very safe as m_pLastDamageEntity doesn't have to be CVehicle
+#ifdef FIX_BUGS
+ if (!pVehicle->m_pLastDamageEntity->IsVehicle()) {
+ SET_INTEGER_PARAM(0, -1);
+ }
+ else
#endif
+ {
+ SET_INTEGER_PARAM(0, CPools::GetVehiclePool()->GetIndex((CVehicle*)pVehicle->m_pLastDamageEntity));
+ pVehicle->m_pLastDamageEntity = nil;
+ }
+ }
+ }
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
default:
script_assert(0);
}
diff --git a/src/control/Script9.cpp b/src/control/Script9.cpp
new file mode 100644
index 00000000..875aa96b
--- /dev/null
+++ b/src/control/Script9.cpp
@@ -0,0 +1,781 @@
+#include "common.h"
+
+#include "Script.h"
+#include "ScriptCommands.h"
+
+#include "Bridge.h"
+#include "CarCtrl.h"
+#include "Camera.h"
+#include "CutsceneMgr.h"
+#include "Ferry.h"
+#include "Garages.h"
+#include "GameLogic.h"
+#include "Hud.h"
+#include "Messages.h"
+#include "Object.h"
+#include "OnscreenTimer.h"
+#include "Pad.h"
+#include "Ped.h"
+#include "Pools.h"
+#include "Remote.h"
+#include "SpecialFX.h"
+#include "Stats.h"
+#include "Vehicle.h"
+#include "World.h"
+
+// LCS: file done except TODOs (also check commented out strings)
+
+int8 CRunningScript::ProcessCommands1500To1599(int32 command)
+{
+ switch (command) {
+ case COMMAND_DISABLE_FERRY_PATH:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry::DissableFerryPath(GET_INTEGER_PARAM(0));
+ return 0;
+ }
+ case COMMAND_ENABLE_FERRY_PATH:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry::EnableFerryPath(GET_INTEGER_PARAM(0));
+ return 0;
+ }
+ case COMMAND_GET_CLOSEST_DOCKED_FERRY:
+ {
+ CollectParameters(&m_nIp, 2);
+ CFerry* pFerry = CFerry::GetClosestFerry(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
+ int id = -1;
+ if (pFerry && pFerry->IsDocked())
+ id = pFerry->m_nFerryId;
+ SET_INTEGER_PARAM(0, id);
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_OPEN_FERRY_DOOR:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ pFerry->OpenDoor();
+ return 0;
+ }
+ case COMMAND_CLOSE_FERRY_DOOR:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ pFerry->CloseDoor();
+ return 0;
+ }
+ case COMMAND_IS_FERRY_DOOR_OPEN:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ UpdateCompareFlag(pFerry->IsDoorOpen());
+ return 0;
+ }
+ case COMMAND_IS_FERRY_DOOR_CLOSED:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ UpdateCompareFlag(pFerry->IsDoorClosed());
+ return 0;
+ }
+ case COMMAND_SKIP_FERRY_TO_NEXT_DOCK:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ pFerry->SkipFerryToNextDock();
+ return 0;
+ }
+ case COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->bDropsWeaponsOnDeath = (GET_INTEGER_PARAM(1) != 0);
+ return 0;
+ }
+ case COMMAND_IS_CHAR_CROUCHING:
+ {
+ CollectParameters(&m_nIp, 1);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ UpdateCompareFlag(pPed->bIsDucking);
+ return 0;
+ }
+ case COMMAND_GET_FERRY_BOARDING_SPACE:
+ {
+ CollectParameters(&m_nIp, 4);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ CVector space = pFerry->GetBoardingSpace((CFerry::eSpaceUse)GET_INTEGER_PARAM(1), (CFerry::eSpaceStyle)GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
+ SET_FLOAT_PARAM(0, space.x);
+ SET_FLOAT_PARAM(1, space.y);
+ StoreParameters(&m_nIp, 2);
+ return 0;
+ }
+ case COMMAND_GET_FERRY_HEADING:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ float fHeading = Atan2(-pFerry->GetForward().x, pFerry->GetForward().y);
+ SET_FLOAT_PARAM(0, fHeading);
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_SET_FERRIES_DISABLED:
+ {
+ CollectParameters(&m_nIp, 2);
+ CFerry::SetFerriesDisabled(GET_INTEGER_PARAM(1));
+ return 0;
+ }
+ case COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT:
+ {
+ CollectParameters(&m_nIp, 1);
+ CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
+ script_assert(pFerry);
+ pFerry->CompleteDorrMovement();
+ return 0;
+ }
+ case COMMAND_OVERRIDE_CAR_REMOTE_CONTROL:
+ {
+ CollectParameters(&m_nIp, 2);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ pVehicle->SetStatus(STATUS_PLAYER_REMOTE);
+ CVehicle::bDisableRemoteDetonation = true;
+ CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = pVehicle;
+ pVehicle->RegisterReference((CEntity**)&CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle);
+ if (pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI || pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE) {
+ TheCamera.TakeControl(pVehicle, CCam::MODE_CAM_ON_A_STRING, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT);
+ TheCamera.SetZoomValueCamStringScript(0);
+ }
+ else {
+ TheCamera.TakeControl(pVehicle, CCam::MODE_1STPERSON, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT);
+ script_assert(pVehicle->IsCar());
+ ((CAutomobile*)pVehicle)->Damage.m_bSmashedDoorDoesntClose = true;
+ }
+ if (m_bIsMissionScript)
+ CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
+ if (FindPlayerVehicle())
+ FindPlayerVehicle()->bCanBeDamaged = false;
+ return 0;
+ }
+ case COMMAND_CANCEL_REMOTE_MODE:
+ {
+ if (FindPlayerVehicle())
+ FindPlayerVehicle()->bCanBeDamaged = true;
+ CRemote::TakeRemoteControlledCarFromPlayer(false);
+ CWorld::Players[CWorld::PlayerInFocus].field_D6 = false;
+ CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil;
+ TheCamera.Restore();
+ return 0;
+ }
+ case COMMAND_REGISTER_CAR_SOLD:
+ // CStats::CarsSold++;
+ return 0;
+ case COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES:
+ CollectParameters(&m_nIp, 1);
+ // CStats::MoneyMadeWithCarSales += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_SET_BRIDGE_STATE:
+ {
+ CollectParameters(&m_nIp, 1);
+#ifdef GTA_BRIDGE
+ /*
+ * 0 = locked
+ * 1 = unlocked
+ * 2 = operational
+ */
+ switch (GET_INTEGER_PARAM(0)) {
+ case 0: CBridge::ForceBridgeState(STATE_BRIDGE_LOCKED); break;
+ case 1: CBridge::ForceBridgeState(STATE_BRIDGE_ALWAYS_UNLOCKED); break;
+ case 2:
+ if (CBridge::State == STATE_LIFT_PART_IS_DOWN || CBridge::State == STATE_BRIDGE_ALWAYS_UNLOCKED)
+ CBridge::ForceBridgeState(STATE_LIFT_PART_ABOUT_TO_MOVE_UP);
+ else
+ CBridge::ForceBridgeState(STATE_LIFT_PART_MOVING_DOWN);
+ break;
+ default: script_assert(false);
+ }
+#endif
+ return 0;
+ }
+ case COMMAND_SET_OBJECT_TURN_SPEED:
+ {
+ CollectParameters(&m_nIp, 4);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND;
+ pObject->SetTurnSpeed(vSpeed.x, vSpeed.y, vSpeed.z);
+ return 0;
+ }
+ case COMMAND_SET_OBJECT_MASS:
+ {
+ CollectParameters(&m_nIp, 4);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ pObject->m_fMass = GET_FLOAT_PARAM(1);
+ pObject->m_fTurnMass = GET_FLOAT_PARAM(2);
+ pObject->m_fAirResistance = GET_FLOAT_PARAM(3);
+ if (pObject->m_fMass < 99998.0f) {
+ pObject->bInfiniteMass = false;
+ pObject->m_phy_flagA08 = false;
+ pObject->bAffectedByGravity = true;
+ }
+ else {
+ pObject->bInfiniteMass = true;
+ pObject->m_phy_flagA08 = true;
+ pObject->bAffectedByGravity = false;
+ }
+ return 0;
+ }
+ case COMMAND_HAS_CUTSCENE_LOADED:
+ UpdateCompareFlag(CCutsceneMgr::ms_cutsceneLoadStatus == CUTSCENE_LOADED);
+ return 0;
+ case COMMAND_SET_UNIQUE_JUMPS_FOUND:
+ CollectParameters(&m_nIp, 1);
+ CStats::NumberOfUniqueJumpsFound = GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_SET_HIDDEN_PACKAGES_COLLECTED:
+ CollectParameters(&m_nIp, 1);
+ CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages = GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_REGISTER_BIKE_SOLD:
+ // CStats::BikesSold++;
+ return 0;
+ case COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES:
+ CollectParameters(&m_nIp, 1);
+ // CStats::MoneyMadeWithBikeSales += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_REGISTER_PACKAGE_SMUGGLED:
+ // CStats::PackagesSmuggled++;
+ return 0;
+ case COMMAND_REGISTER_SMUGGLER_WASTED:
+ // CStats::SmugglersWasted++;
+ return 0;
+ case COMMAND_REGISTER_FASTEST_SMUGGLING_TIME:
+ CollectParameters(&m_nIp, 1);
+ // CStats::RegisterFastestSmugglingTime(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_SET_CHAR_DIVE_FROM_CAR:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1));
+ script_assert(pPed);
+ pPed->bRespondsToThreats = true;
+ pPed->SetEvasiveDive(pVehicle, 1);
+ return 0;
+ }
+ case COMMAND_WRECK_CAR:
+ {
+ CollectParameters(&m_nIp, 1);
+ CAutomobile* pVehicle = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ script_assert(pVehicle->IsCar());
+ pVehicle->m_fHealth = 0.0f;
+ pVehicle->SetStatus(STATUS_WRECKED);
+ pVehicle->bRenderScorched = true;
+ pVehicle->Damage.FuckCarCompletely();
+ if (pVehicle->GetModelIndex() != MI_RCBANDIT) {
+ pVehicle->SetBumperDamage(CAR_BUMP_FRONT, VEHBUMPER_FRONT);
+ pVehicle->SetBumperDamage(CAR_BUMP_REAR, VEHBUMPER_REAR);
+ pVehicle->SetDoorDamage(CAR_BONNET, DOOR_BONNET);
+ pVehicle->SetDoorDamage(CAR_BOOT, DOOR_BOOT);
+ pVehicle->SetDoorDamage(CAR_DOOR_LF, DOOR_FRONT_LEFT);
+ pVehicle->SetDoorDamage(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
+ pVehicle->SetDoorDamage(CAR_DOOR_LR, DOOR_REAR_LEFT);
+ pVehicle->SetDoorDamage(CAR_DOOR_RR, DOOR_REAR_RIGHT);
+ }
+ pVehicle->m_bombType = CARBOMB_NONE;
+ pVehicle->bEngineOn = false;
+ pVehicle->bLightsOn = false;
+ pVehicle->m_fHealth = 0.0f;
+ pVehicle->m_nBombTimer = 0;
+ pVehicle->m_bSirenOrAlarm = false;
+ return 0;
+ }
+ case COMMAND_ADD_MONEY_MADE_IN_COACH:
+ CollectParameters(&m_nIp, 1);
+ // CStats::MoneyMadeInCoach += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH:
+ CollectParameters(&m_nIp, 1);
+ // CStats::MoneyMadeCollectingTrash += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_REGISTER_HITMAN_KILLED:
+ // CStats::HitmenKilled++;
+ return 0;
+ case COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED:
+ // CStats::GaurdianAngelMissionsPassed++;
+ return 0;
+ case COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED:
+ CollectParameters(&m_nIp, 1);
+ // CStats::RegisterHighestGaurdianAngelJusticeDished(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_BEST_BANDIT_LAP_TIME:
+ CollectParameters(&m_nIp, 2);
+ // CStats::RegisterBestBanditLapTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_REGISTER_BEST_BANDIT_POSITION:
+ CollectParameters(&m_nIp, 2);
+ // CStats::RegisterBestBanditPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE:
+ CollectParameters(&m_nIp, 1);
+ // CStats::RegisterMostTimeLeftTrainRace(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED:
+ CollectParameters(&m_nIp, 1);
+ // CStats::RegisterHighestTrainCashEarned(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_FASTEST_HELI_RACE_TIME:
+ // CStats::RegisterFastestHeliRaceTime(GET_INTEGER_PARAM(0));
+ CollectParameters(&m_nIp, 1);
+ return 0;
+ case COMMAND_REGISTER_BEST_HELI_RACE_POSITION:
+ // CStats::RegisterBestHeliRacePosition(GET_INTEGER_PARAM(0));
+ CollectParameters(&m_nIp, 1);
+ return 0;
+ case COMMAND_REGISTER_OUTFIT_CHANGE:
+ // CStats::NumberOutfitChanges++;
+ return 0;
+ case COMMAND_REGISTER_STREET_RACE_FASTEST_TIME:
+ // CStats::RegisterStreetRaceFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ CollectParameters(&m_nIp, 2);
+ return 0;
+ case COMMAND_REGISTER_STREET_RACE_FASTEST_LAP:
+ CollectParameters(&m_nIp, 2);
+ // CStats::RegisterStreetRaceFastestLap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_REGISTER_STREET_RACE_BEST_POSITION:
+ CollectParameters(&m_nIp, 2);
+ // CStats::RegisterStreetRaceBestPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ case COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON:
+ {
+ CollectParameters(&m_nIp, 2);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ bool result = false;
+ if (!pObject) {
+ printf("HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON - Object doesn\'t exist\n");
+ }
+ else {
+ if (GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYMELEE || GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYWEAPON)
+ result = CheckDamagedWeaponType(pObject->m_nLastWeaponToDamage, GET_INTEGER_PARAM(1));
+ else
+ result = GET_INTEGER_PARAM(1) == pObject->m_nLastWeaponToDamage;
+ }
+ UpdateCompareFlag(result);
+ return 0;
+ }
+ case COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE:
+ {
+ CollectParameters(&m_nIp, 1);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ if (!pObject)
+ printf("CLEAR_OBJECT_LAST_WEAPON_DAMAGE - pObject doesn\'t exist");
+ else
+ pObject->m_nLastWeaponToDamage = -1;
+ return 0;
+ }
+ case COMMAND_SET_CAR_TURN_SPEED:
+ {
+ CollectParameters(&m_nIp, 4);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND;
+ pVehicle->SetTurnSpeed(vSpeed.x, vSpeed.y, vSpeed.z);
+ return 0;
+ }
+ case COMMAND_SET_CAR_MOVE_SPEED:
+ {
+ CollectParameters(&m_nIp, 4);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND;
+ pVehicle->SetMoveSpeed(vSpeed);
+ return 0;
+ }
+ case COMMAND_SET_OBJECT_PROOFS:
+ {
+ CollectParameters(&m_nIp, 6);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ pObject->bBulletProof = (GET_INTEGER_PARAM(1) != 0);
+ pObject->bFireProof = (GET_INTEGER_PARAM(2) != 0);
+ pObject->bExplosionProof = (GET_INTEGER_PARAM(3) != 0);
+ pObject->bCollisionProof = (GET_INTEGER_PARAM(4) != 0);
+ pObject->bMeleeProof = (GET_INTEGER_PARAM(5) != 0);
+ return 0;
+ }
+ case COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR:
+ if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED)
+ SET_INTEGER_PARAM(0, TheCamera.PedZoomIndicator);
+ else
+ SET_INTEGER_PARAM(0, -1);
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ case COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR:
+ CollectParameters(&m_nIp, 1);
+ if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED)
+ TheCamera.PedZoomIndicator = GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_GET_CAR_ORIENTATION:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ SET_FLOAT_PARAM(1, LimitAngleOnCircle(RADTODEG(Asin(pVehicle->GetForward().z))));
+ SET_FLOAT_PARAM(2, LimitAngleOnCircle(RADTODEG(Atan2(-pVehicle->GetForward().x, pVehicle->GetForward().y))));
+ SET_FLOAT_PARAM(0, LimitAngleOnCircle(RADTODEG(Atan2(-pVehicle->GetRight().z, pVehicle->GetUp().z))));
+ StoreParameters(&m_nIp, 3);
+ return 0;
+ }
+ case COMMAND_SET_CAR_ORIENTATION:
+ {
+ CollectParameters(&m_nIp, 4);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ pVehicle->SetOrientation(DEGTORAD(GET_FLOAT_PARAM(2)), DEGTORAD(GET_FLOAT_PARAM(1)), DEGTORAD(GET_FLOAT_PARAM(3)));
+ return 0;
+ }
+ case COMMAND_IS_DEBUG_MENU_ON:
+ // on PS2 it's something actual - TODO
+ UpdateCompareFlag(false);
+ return 0;
+ case COMMAND_OPEN_VAN_BACK_DOORS:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ assert(pVehicle);
+ pVehicle->ProcessOpenDoor(CAR_DOOR_RR, ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, 1.0f);
+ pVehicle->ProcessOpenDoor(CAR_DOOR_LR, ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, 1.0f);
+ return 0;
+ }
+ case COMMAND_GET_CHAR_THREAT_CHAR:
+ {
+ CollectParameters(&m_nIp, 1);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ SET_INTEGER_PARAM(0, 0);
+ CEntity* pThreat = pPed->m_threatEntity;
+ if (pThreat && pThreat->IsPed())
+ SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex((CPed*)pThreat));
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_FREEZE_PED_ZOOM_SWITCH:
+ CollectParameters(&m_nIp, 1);
+ TheCamera.m_bFreezePedZoomSwitch = GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_SET_OBJECT_RENDERED_DAMAGED:
+ {
+ CollectParameters(&m_nIp, 1);
+ CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pObject);
+ pObject->bRenderDamaged = true;
+ return 0;
+ }
+ case COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE:
+ {
+ CollectParameters(&m_nIp, 5);
+ int handle = -1;
+ uint32 i = CPools::GetVehiclePool()->GetSize();
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float supX = GET_FLOAT_PARAM(2);
+ float supY = GET_FLOAT_PARAM(3);
+ while (i-- && handle == -1) {
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
+ if (!pVehicle)
+ continue;
+ if (pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_CAR && pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_BIKE)
+ continue;
+#ifdef FIX_BUGS
+ if (pVehicle->m_fHealth <= 0.0f)
+#else
+ if (pVehicle->m_fHealth == 0.0f)
+#endif
+ continue;
+ if (pVehicle->GetModelIndex() != GET_INTEGER_PARAM(4) && GET_INTEGER_PARAM(4) >= 0)
+ continue;
+ if (pVehicle->VehicleCreatedBy != RANDOM_VEHICLE)
+ continue;
+ if (!pVehicle->IsWithinArea(infX, infY, supX, supY))
+ continue;
+ handle = CPools::GetVehiclePool()->GetIndex(pVehicle);
+ }
+ SET_INTEGER_PARAM(0, handle);
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ }
+ case COMMAND_IS_PLAYER_MADE_SAFE:
+ {
+ UpdateCompareFlag(CPad::GetPad(0)->IsPlayerControlsDisabledBy(PLAYERCONTROL_PLAYERINFO));
+ return 0;
+ }
+ case COMMAND_PRINT_IF_FREE:
+ {
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CollectParameters(&m_nIp, 2);
+ //CMessages::AddMessageIfFree(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); TODO
+ return 0;
+ }
+ case COMMAND_IS_E3_BUILD:
+ UpdateCompareFlag(false);
+ return 0;
+ case COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG:
+ CTheScripts::FSDestroyedFlag = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace;
+ return 0;
+ case COMMAND_CLEAR_BIG_MESSAGES:
+ //CMessages::ClearBigMessagesOnly(); TODO
+ //CHud::ClearBigMessagesExcept(2, 2); TODO
+ CGarages::MessageEndTime = CGarages::MessageStartTime;
+ return 0;
+ case COMMAND_CLEAR_AREA_OF_OBJECTS:
+ {
+ CollectParameters(&m_nIp, 6);
+ uint32 i = CPools::GetObjectPool()->GetSize();
+ float infX = GET_FLOAT_PARAM(0);
+ float infY = GET_FLOAT_PARAM(1);
+ float infZ = GET_FLOAT_PARAM(2);
+ float supX = GET_FLOAT_PARAM(3);
+ float supY = GET_FLOAT_PARAM(4);
+ float supZ = GET_FLOAT_PARAM(5);
+ while (i--) {
+ CObject* pObject = CPools::GetObjectPool()->GetSlot(i);
+ if (pObject && pObject->CanBeDeleted() && pObject->IsWithinArea(infX, infY, infZ, supX, supY, supZ)) {
+ pObject->DeleteRwObject();
+ CWorld::Remove(pObject);
+ delete pObject;
+ }
+ }
+ i = CPools::GetDummyPool()->GetSize();
+ while (i--) {
+ CDummy* pDummy = CPools::GetDummyPool()->GetSlot(i);
+ if (pDummy && pDummy->IsObject() && pDummy->IsWithinArea(infX, infY, infZ, supX, supY, supZ)) {
+ pDummy->DeleteRwObject();
+ CWorld::Remove(pDummy);
+ delete pDummy;
+ }
+ }
+ return 0;
+ }
+ case COMMAND_LOAD_NON_STANDARD_PED_ANIM:
+ CollectParameters(&m_nIp, 1);
+ CPed::LoadNonStandardPedAnim((eWaitState)GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_UNLOAD_NON_STANDARD_PED_ANIM:
+ CollectParameters(&m_nIp, 1);
+ CPed::UnloadNonStandardPedAnim((eWaitState)GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_1566:
+ CollectParameters(&m_nIp, 1);
+ return 0;
+ case COMMAND_BUILD_WORLD_GEOMETRY:
+ CollectParameters(&m_nIp, 1);
+ if (/*gBuildWorldGeom*/ false) {
+ //base::cWorldGeom::GetInstance()->Build(GET_INTEGER_PARAM(0));
+ UpdateCompareFlag(true);
+ }
+ else {
+ UpdateCompareFlag(false);
+ }
+ return 0;
+ case COMMAND_STORE_BUILDING_SWAP:
+ CollectParameters(&m_nIp, 4);
+ // base::cWorldGeom::GetInstance()->StoreBuildingSwap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3) != 0);
+ return 0;
+ case COMMAND_IS_MULTIPLAYER_ACTIVE:
+#ifdef GTA_NETWORK
+ UpdateCompareFlag(gIsMultiplayerGame);
+#else
+ UpdateCompareFlag(false);
+#endif
+ return 0;
+ case COMMAND_GET_MULTIPLAYER_MODE:
+ SET_INTEGER_PARAM(0, 0); // TODO
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ case COMMAND_MULTIPLAYER_SCRIPT_DONE:
+ printf("COMMAND_MULTIPLAYER_SCRIPT_DONE\n");
+ //gbStartingScriptsFromLua = false; TODO?
+ return 0;
+ case COMMAND_IS_MULTIPLAYER_SERVER:
+ UpdateCompareFlag(false); // TODO?
+ return 0;
+ case COMMAND_IS_MULTIPLAYER_TEAM_GAME:
+ UpdateCompareFlag(false); // TODO?
+ return 0;
+ case COMMAND_GET_MULTIPLAYER_TEAM_ID:
+ SET_INTEGER_PARAM(0, 0); // TODO
+ StoreParameters(&m_nIp, 1);
+ return 0;
+ case COMMAND_DOES_SHORTCUT_TAXI_EXIST:
+ UpdateCompareFlag(CGameLogic::pShortCutTaxi != nil);
+ return 0;
+ case COMMAND_SET_ONSCREEN_TIMER_COLOUR:
+ CollectParameters(&m_nIp, 4);
+ gbColour = CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
+ return 0;
+ case COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR:
+ CollectParameters(&m_nIp, 4);
+ gbColour2 = CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
+ return 0;
+ case COMMAND_REMOVE_CAR_BOOT:
+ {
+ CollectParameters(&m_nIp, 1);
+ CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pVehicle);
+ script_assert(pVehicle->IsCar());
+ CAutomobile* pAutomobile = (CAutomobile*)pVehicle;
+ pAutomobile->Damage.SetDoorStatus(DOOR_BOOT, DOOR_STATUS_MISSING);
+ pAutomobile->SetDoorDamage(CAR_BOOT, DOOR_BOOT, true);
+ return 0;
+ }
+ case COMMAND_ADD_POINT_3D_MARKER:
+ {
+ uint32 ip = m_nIp;
+ uint32 id = (uint32)(uintptr)GetPointerToScriptVariable(&ip, 0);
+ static CVector vPreviousLocation;
+ CollectParameters(&m_nIp, 7);
+ CVector pos = GET_VECTOR_PARAM(0);
+ if (pos.z <= MAP_Z_LOW_LIMIT)
+ pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
+ if (vPreviousLocation != pos) {
+ //C3dMarkers::CopyMarker(id, id - 1, 1, 1);
+ }
+ // TODO: 5 is not a valid type
+ //C3dMarkers::PlaceMarker(id, 5, pos, GET_FLOAT_PARAM(3) * 0.7f, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), 255, 128, 0.0f, 1); // TODO: 0, 100.0f, 1, 0
+ vPreviousLocation = pos;
+ return 0;
+ }
+ case COMMAND_GET_VECTOR_FROM_MULTIPLAYER:
+ SET_VECTOR_PARAM(0, gVectorSetInLua);
+ StoreParameters(&m_nIp, 3);
+ return 0;
+ case COMMAND_PRINT_HELP_ALWAYS:
+ {
+ // CHud::mAlwaysAllowHelpText = true; // TODO
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CHud::SetHelpMessage(text, false); // + false, true
+ return 0;
+ }
+ case COMMAND_PRINT_HELP_FOREVER_ALWAYS:
+ {
+ // CHud::mAlwaysAllowHelpText = true; // TODO
+ wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
+ CHud::SetHelpMessage(text, false, true); // + true
+ return 0;
+ }
+ case COMMAND_SWITCH_FERRY_COLLISION:
+ CollectParameters(&m_nIp, 1);
+ CFerry::SwitchFerryCollision(GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_SET_CHAR_MAX_HEALTH:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->m_fHealth = GET_INTEGER_PARAM(1);
+ pPed->m_fMaxHealth = GET_INTEGER_PARAM(1);
+ return 0;
+ }
+ case COMMAND_SET_CHAR_SHOOT_TIMER:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->m_nScriptShootTimer = GET_INTEGER_PARAM(1);
+ return 0;
+ }
+ case COMMAND_SET_CHAR_ATTACK_TIMER:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->m_nScriptAttackTimer = GET_INTEGER_PARAM(1);
+ return 0;
+ }
+ case COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED:
+ {
+ CollectParameters(&m_nIp, 1);
+ CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pHeli);
+ if (pHeli->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI)
+ pHeli->m_aWheelSpeed[1] = 0.22f;
+ return 0;
+ }
+ case COMMAND_SET_CRUSHER_REWARD_MULTIPLIER:
+ {
+ CollectParameters(&m_nIp, 1);
+ CGarages::CrusherRewardMultiplier = GET_INTEGER_PARAM(0);
+ return 0;
+ }
+ case COMMAND_SWAP_BUILDINGS:
+ {
+ CollectParameters(&m_nIp, 2);
+ // base::cWorldStream::Instance()->SwapBuilding(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ return 0;
+ }
+ case COMMAND_STREAM_BUILDING_SWAPS:
+ {
+ // UpdateCompareFlag(base::cWorldStream::Instance()->StreamBuildingSwaps());
+ UpdateCompareFlag(true);
+ return 0;
+ }
+ case COMMAND_IS_WORLD_STREAMING_COMPLETE:
+ {
+ // UpdateCompareFlag(base::cWorldStream::Instance()->IsStreamingComplet());
+ UpdateCompareFlag(true);
+ return 0;
+ }
+ case COMMAND_SWAP_TO_STREAMED_SECTOR:
+ {
+ // base::cWorldStream::Instance()->SwapToStreamedSector();
+ return 0;
+ }
+ case COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS:
+ {
+ CollectParameters(&m_nIp, 2);
+ CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
+ script_assert(pPed);
+ pPed->bAttacksPlayerWithCops = (GET_INTEGER_PARAM(1) != 0);
+ return 0;
+ }
+ case COMMAND_REGISTER_FACE_PLANT_DISTANCE:
+ CollectParameters(&m_nIp, 1);
+ //CStats::LongestFacePlantDist = Max(CStats::LongestFacePlantDist, GET_FLOAT_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT:
+ CollectParameters(&m_nIp, 1);
+ //CStats::MaxSecondsOnCarnageLeft = Max(CStats::MaxSecondsOnCarnageLeft, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD:
+ CollectParameters(&m_nIp, 1);
+ //CStats::MaxKillsOnRcTriad = Max(CStats::MaxKillsOnRcTriad, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV:
+ CollectParameters(&m_nIp, 1);
+ //CStats::HighestLevelSlashTv = Max(CStats::HighestLevelSlashTv, GET_INTEGER_PARAM(0));
+ return 0;
+ case COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV:
+ CollectParameters(&m_nIp, 1);
+ //CStats::MoneyMadeWithSlashTv += GET_INTEGER_PARAM(0);
+ return 0;
+ case COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV:
+ CollectParameters(&m_nIp, 1);
+ //CStats::TotalKillsOnSlashTV += GET_INTEGER_PARAM(0);
+ return 0;
+ default:
+ script_assert(0);
+ }
+ return -1;
+} \ No newline at end of file
diff --git a/src/control/ScriptCommands.h b/src/control/ScriptCommands.h
index 9cb39e23..ea968697 100644
--- a/src/control/ScriptCommands.h
+++ b/src/control/ScriptCommands.h
@@ -215,6 +215,11 @@ enum {
COMMAND_WHILE,
COMMAND_WHILENOT,
COMMAND_ENDWHILE,
+ COMMAND_214,
+ COMMAND_215,
+ COMMAND_216,
+ COMMAND_217,
+ COMMAND_218,
COMMAND_ANDOR,
COMMAND_LAUNCH_MISSION,
COMMAND_MISSION_HAS_FINISHED,
@@ -1441,39 +1446,222 @@ enum {
COMMAND_REGISTER_FIRE_LEVEL,
COMMAND_IS_AUSTRALIAN_GAME,
COMMAND_DISARM_CAR_BOMB,
-#if (defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT)
COMMAND_IS_JAPANESE_GAME,
-#elif (!defined GTA_PS2)
- COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED,
-#endif
-#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- COMMAND_SHUFFLE_CARD_DECKS,
- COMMAND_FETCH_NEXT_CARD,
- COMMAND_GET_OBJECT_VELOCITY,
- COMMAND_IS_DEBUG_CAMERA_ON,
- COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY,
- COMMAND_SET_OBJECT_ROTATION_VELOCITY,
- COMMAND_IS_OBJECT_STATIC,
- COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS,
- COMMAND_DO_2D_RECTANGLES_COLLIDE,
- COMMAND_GET_OBJECT_ROTATION_VELOCITY,
- COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY,
- COMMAND_GET_OBJECT_SPEED,
-#endif
-#if (defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT)
- COMMAND_MARK_CUTSCENE_START,
- COMMAND_MARK_CUTSCENE_END,
- COMMAND_CUTSCENE_SCROLL,
-#elif (defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- COMMAND_IS_MISSION_SKIP,
- COMMAND_SET_IN_AMMUNATION,
- COMMAND_DO_SAVE_GAME,
- COMMAND_IS_RETRY,
- COMMAND_DUMMY,
- COMMAND_MARK_CUTSCENE_START,
- COMMAND_MARK_CUTSCENE_END,
- COMMAND_CUTSCENE_SCROLL,
-#endif
+ COMMAND_1442,
+ COMMAND_1443,
+ COMMAND_GET_DISTANCE_BETWEEN_2D_POINTS,
+ COMMAND_GET_DISTANCE_BETWEEN_3D_POINTS,
+ COMMAND_DOT_PRODUCT_2D,
+ COMMAND_DOT_PRODUCT_3D,
+ COMMAND_DEBUG_PRINT_WITH_1_FLOAT,
+ COMMAND_DEBUG_PRINT_WITH_2_FLOATS,
+ COMMAND_DEBUG_PRINT_WITH_3_FLOATS,
+ COMMAND_GET_PAD_BUTTON_STATE,
+ COMMAND_SET_NAVIGATION_ARROW,
+ COMMAND_CLEAR_NAVIGATION_ARROW,
+ COMMAND_CALL,
+ COMMAND_CALLNOT,
+ COMMAND_IS_CAR_AUTOMOBILE,
+ COMMAND_IS_CAR_BIKE,
+ COMMAND_IS_CAR_PLANE,
+ COMMAND_IS_CAR_HELI,
+ COMMAND_1460,
+ COMMAND_1461,
+ COMMAND_1462,
+ COMMAND_1463,
+ COMMAND_1464,
+ COMMAND_1465,
+ COMMAND_1466,
+ COMMAND_1467,
+ COMMAND_1468,
+ COMMAND_1469,
+ COMMAND_1470,
+ COMMAND_1471,
+ COMMAND_1472,
+ COMMAND_1473,
+ COMMAND_1474,
+ COMMAND_1475,
+ COMMAND_1476,
+ COMMAND_RETURN_IF_TRUE,
+ COMMAND_RETURN_TRUE_IF_TRUE,
+ COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_BEHIND,
+ COMMAND_SET_RC_HELI_HEIGHT_LIMIT,
+ COMMAND_CREATE_SCRIPT_CORONA,
+ COMMAND_REMOVE_SCRIPT_CORONA,
+ COMMAND_IS_BOAT_IN_WATER,
+ COMMAND_IS_CAR_DRIVER_BEING_JACKED,
+ COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_IN_FRONT,
+ COMMAND_SET_CAR_TILTED_BY_CHAR,
+ COMMAND_GET_WEAPON_TYPE_FOR_PICKUP_IN_AREA,
+ COMMAND_IS_PLAYER_USING_FIRST_PERSON_WEAPON_CAMERA,
+ COMMAND_1489,
+ COMMAND_1490,
+ COMMAND_1491,
+ COMMAND_SET_DEBUG_MENU_ACTIVE,
+ COMMAND_SET_DRAW_HUD,
+ COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS,
+ COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE,
+ COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE,
+ COMMAND_DISABLE_FERRY_PATH,
+ COMMAND_ENABLE_FERRY_PATH,
+ COMMAND_GET_CLOSEST_DOCKED_FERRY,
+ COMMAND_OPEN_FERRY_DOOR,
+ COMMAND_CLOSE_FERRY_DOOR,
+ COMMAND_IS_FERRY_DOOR_OPEN,
+ COMMAND_IS_FERRY_DOOR_CLOSED,
+ COMMAND_SKIP_FERRY_TO_NEXT_DOCK,
+ COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH,
+ COMMAND_IS_CHAR_CROUCHING,
+ COMMAND_GET_FERRY_BOARDING_SPACE,
+ COMMAND_GET_FERRY_HEADING,
+ COMMAND_SET_FERRIES_DISABLED,
+ COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT,
+ COMMAND_OVERRIDE_CAR_REMOTE_CONTROL,
+ COMMAND_CANCEL_REMOTE_MODE,
+ COMMAND_REGISTER_CAR_SOLD,
+ COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES,
+ COMMAND_SET_BRIDGE_STATE,
+ COMMAND_SET_OBJECT_TURN_SPEED,
+ COMMAND_SET_OBJECT_MASS,
+ COMMAND_HAS_CUTSCENE_LOADED,
+ COMMAND_SET_UNIQUE_JUMPS_FOUND,
+ COMMAND_SET_HIDDEN_PACKAGES_COLLECTED,
+ COMMAND_REGISTER_BIKE_SOLD,
+ COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES,
+ COMMAND_REGISTER_PACKAGE_SMUGGLED,
+ COMMAND_REGISTER_SMUGGLER_WASTED,
+ COMMAND_REGISTER_FASTEST_SMUGGLING_TIME,
+ COMMAND_SET_CHAR_DIVE_FROM_CAR,
+ COMMAND_WRECK_CAR,
+ COMMAND_ADD_MONEY_MADE_IN_COACH,
+ COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH,
+ COMMAND_REGISTER_HITMAN_KILLED,
+ COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED,
+ COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED,
+ COMMAND_REGISTER_BEST_BANDIT_LAP_TIME,
+ COMMAND_REGISTER_BEST_BANDIT_POSITION,
+ COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE,
+ COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED,
+ COMMAND_REGISTER_FASTEST_HELI_RACE_TIME,
+ COMMAND_REGISTER_BEST_HELI_RACE_POSITION,
+ COMMAND_REGISTER_OUTFIT_CHANGE,
+ COMMAND_REGISTER_STREET_RACE_FASTEST_TIME,
+ COMMAND_REGISTER_STREET_RACE_FASTEST_LAP,
+ COMMAND_REGISTER_STREET_RACE_BEST_POSITION,
+ COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON,
+ COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE,
+ COMMAND_SET_CAR_TURN_SPEED,
+ COMMAND_SET_CAR_MOVE_SPEED,
+ COMMAND_SET_OBJECT_PROOFS,
+ COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR,
+ COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR,
+ COMMAND_GET_CAR_ORIENTATION,
+ COMMAND_SET_CAR_ORIENTATION,
+ COMMAND_IS_DEBUG_MENU_ON,
+ COMMAND_OPEN_VAN_BACK_DOORS,
+ COMMAND_GET_CHAR_THREAT_CHAR,
+ COMMAND_FREEZE_PED_ZOOM_SWITCH,
+ COMMAND_SET_OBJECT_RENDERED_DAMAGED,
+ COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE,
+ COMMAND_IS_PLAYER_MADE_SAFE,
+ COMMAND_PRINT_IF_FREE,
+ COMMAND_IS_E3_BUILD,
+ COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG,
+ COMMAND_CLEAR_BIG_MESSAGES,
+ COMMAND_CLEAR_AREA_OF_OBJECTS,
+ COMMAND_LOAD_NON_STANDARD_PED_ANIM,
+ COMMAND_UNLOAD_NON_STANDARD_PED_ANIM,
+ COMMAND_1566,
+ COMMAND_BUILD_WORLD_GEOMETRY,
+ COMMAND_STORE_BUILDING_SWAP,
+ COMMAND_IS_MULTIPLAYER_ACTIVE,
+ COMMAND_GET_MULTIPLAYER_MODE,
+ COMMAND_MULTIPLAYER_SCRIPT_DONE,
+ COMMAND_IS_MULTIPLAYER_SERVER,
+ COMMAND_IS_MULTIPLAYER_TEAM_GAME,
+ COMMAND_GET_MULTIPLAYER_TEAM_ID,
+ COMMAND_DOES_SHORTCUT_TAXI_EXIST,
+ COMMAND_SET_ONSCREEN_TIMER_COLOUR,
+ COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR,
+ COMMAND_REMOVE_CAR_BOOT,
+ COMMAND_ADD_POINT_3D_MARKER,
+ COMMAND_GET_VECTOR_FROM_MULTIPLAYER,
+ COMMAND_PRINT_HELP_ALWAYS,
+ COMMAND_PRINT_HELP_FOREVER_ALWAYS,
+ COMMAND_SWITCH_FERRY_COLLISION,
+ COMMAND_SET_CHAR_MAX_HEALTH,
+ COMMAND_SET_CHAR_SHOOT_TIMER,
+ COMMAND_SET_CHAR_ATTACK_TIMER,
+ COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED,
+ COMMAND_SET_CRUSHER_REWARD_MULTIPLIER,
+ COMMAND_SWAP_BUILDINGS,
+ COMMAND_STREAM_BUILDING_SWAPS,
+ COMMAND_IS_WORLD_STREAMING_COMPLETE,
+ COMMAND_SWAP_TO_STREAMED_SECTOR,
+ COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS,
+ COMMAND_REGISTER_FACE_PLANT_DISTANCE,
+ COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT,
+ COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD,
+ COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV,
+ COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV,
+ COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV,
+ COMMAND_ADD_NOODLES_DELIVERED,
+ COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE,
+ COMMAND_REGISTER_9MM_MAYHEM_SCORE,
+ COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE,
+ COMMAND_ADD_MONEY_MADE_FROM_TOURIST,
+ COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS,
+ COMMAND_ADD_EXPORTED_CARS,
+ COMMAND_SET_TOTAL_EXPORT_CARS,
+ COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP,
+ COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME,
+ COMMAND_REGISTER_DIRT_BIKE_AIR_TIME,
+ COMMAND_ADD_ARROW_3D_MARKER,
+ COMMAND_PRINT_NOW_OVERRIDE_FADE,
+ COMMAND_GET_PICKUP_VALUE,
+ COMMAND_SET_PICKUP_VALUE,
+ COMMAND_IS_DEVELOPER,
+ COMMAND_SET_DEVELOPER_FLAG,
+ COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE,
+ COMMAND_ATTACH_OBJECT_TO_CAR,
+ COMMAND_DETACH_OBJECT_FROM_CAR,
+ COMMAND_SET_PAD_STICKS_MULTIPLIER,
+ COMMAND_PRINT_SUBTITLE_NOW,
+ COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE,
+ COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF,
+ COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF,
+ COMMAND_GET_ANGLE_BETWEEN_POINTS,
+ COMMAND_OVERRIDE_CHAR_MOVE_ANIM,
+ COMMAND_1627,
+ COMMAND_ENABLE_EMERGENCY_VEHICLES,
+ COMMAND_ADD_UNLOCKED_COSTUME,
+ COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN,
+ COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF,
+ COMMAND_GET_OBJECT_ORIENTATION,
+ COMMAND_SET_OBJECT_ORIENTATION,
+ COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX,
+ COMMAND_STORE_PLAYER_OUTFIT,
+ COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING,
+ COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP,
+ COMMAND_SET_CHAR_WAIT_STATE_REPEAT,
+ COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO,
+ COMMAND_LOCK_GARAGE,
+ COMMAND_IS_FINAL_GAME,
+ COMMAND_SET_ALLOWED_COLLISION,
+ COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL,
+ COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS,
+ COMMAND_GET_PLAYER_STORED_WEAPON,
+ COMMAND_DISABLE_PAUSE_MENU,
+ COMMAND_IS_CHANNEL_PLAYING,
+ COMMAND_SET_CLOCK_EVENT_WARNING,
+ COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION,
+ COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER,
+ COMMAND_PRINT_HELP_NO_BRIEF,
+ COMMAND_PRINT_HELP_FOREVER_NO_BRIEF,
+ COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF,
+ COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF,
+ COMMAND_SET_CAR_IS_REWARD,
+ COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS,
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
LAST_SCRIPT_COMMAND
#endif
@@ -1492,7 +1680,9 @@ enum eScriptArgument
ARGTYPE_PED_HANDLE,
ARGTYPE_VEHICLE_HANDLE,
ARGTYPE_OBJECT_HANDLE,
- ARGTYPE_ANDOR
+ ARGTYPE_ANDOR,
+ ARGTYPE_LIST,
+ ARGTYPE_FUNCTION
};
struct tScriptCommandData
diff --git a/src/control/ScriptDebug.cpp b/src/control/ScriptDebug.cpp
index 1ca5f588..fd64b44e 100644
--- a/src/control/ScriptDebug.cpp
+++ b/src/control/ScriptDebug.cpp
@@ -239,6 +239,11 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_WHILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_WHILENOT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_ENDWHILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_214, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_215, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_216, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_217, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_218, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_ANDOR, INPUT_ARGUMENTS(ARGTYPE_ANDOR,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_LAUNCH_MISSION, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_MISSION_HAS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
@@ -293,7 +298,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_ADD_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_SCORE_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_STORE_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
REGISTER_COMMAND(COMMAND_ALTER_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_ALTER_WANTED_LEVEL_NO_DROP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_WANTED_LEVEL_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
@@ -1105,7 +1110,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_IS_CAR_PASSENGER_SEAT_FREE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_GET_CHAR_IN_CAR_PASSENGER_SEAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CHAR_IS_CHRIS_CRIMINAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_START_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_START_CREDITS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_STOP_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_ARE_CREDITS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_CREATE_SINGLE_PARTICLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
@@ -1193,7 +1198,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_SHUT_CHAR_UP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_ENABLE_RC_DETONATE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_CAR_RANDOM_ROUTE_SEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_IS_ANY_PICKUP_AT_COORDS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_ANY_PICKUP_AT_COORDS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_GET_FIRST_PICKUP_COORDS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_NEXT_PICKUP_COORDS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
REGISTER_COMMAND(COMMAND_REMOVE_ALL_CHAR_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
@@ -1465,39 +1470,222 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_REGISTER_FIRE_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_IS_AUSTRALIAN_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_DISARM_CAR_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
-#if (defined GTAVC_JP_PATCH || defined SUPPORT_JAPANESE_SCRIPT)
REGISTER_COMMAND(COMMAND_IS_JAPANESE_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
-#elif (!defined GTA_PS2)
- REGISTER_COMMAND(COMMAND_SET_ONSCREEN_COUNTER_FLASH_WHEN_FIRST_DISPLAYED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
-#endif
-#if (defined GTA_PC && !defined GTAVC_JP_PATCH || defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT || defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- REGISTER_COMMAND(COMMAND_SHUFFLE_CARD_DECKS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_FETCH_NEXT_CARD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_GET_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_IS_DEBUG_CAMERA_ON, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
- REGISTER_COMMAND(COMMAND_ADD_TO_OBJECT_ROTATION_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_SET_OBJECT_ROTATION_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_IS_OBJECT_STATIC, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
- REGISTER_COMMAND(COMMAND_GET_ANGLE_BETWEEN_2D_VECTORS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_DO_2D_RECTANGLES_COLLIDE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""),
- REGISTER_COMMAND(COMMAND_GET_OBJECT_ROTATION_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_ADD_VELOCITY_RELATIVE_TO_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_GET_OBJECT_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
-#endif
-#if (defined GTA_XBOX || defined SUPPORT_XBOX_SCRIPT)
- REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_START, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_END, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_CUTSCENE_SCROLL, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
-#elif (defined GTA_MOBILE || defined SUPPORT_MOBILE_SCRIPT)
- REGISTER_COMMAND(COMMAND_IS_MISSION_SKIP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_SET_IN_AMMUNATION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_DO_SAVE_GAME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_IS_RETRY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
- REGISTER_COMMAND(COMMAND_DUMMY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_START, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_MARK_CUTSCENE_END, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_CUTSCENE_SCROLL, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
-#endif
+ REGISTER_COMMAND(COMMAND_1442, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1443, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_DISTANCE_BETWEEN_2D_POINTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_DISTANCE_BETWEEN_3D_POINTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DOT_PRODUCT_2D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DOT_PRODUCT_3D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DEBUG_PRINT_WITH_1_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DEBUG_PRINT_WITH_2_FLOATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DEBUG_PRINT_WITH_3_FLOATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_PAD_BUTTON_STATE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_NAVIGATION_ARROW, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CLEAR_NAVIGATION_ARROW, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CALL, INPUT_ARGUMENTS(ARGTYPE_FUNCTION,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CALLNOT, INPUT_ARGUMENTS(ARGTYPE_FUNCTION,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CAR_AUTOMOBILE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CAR_BIKE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CAR_PLANE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CAR_HELI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_1460, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1461, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1462, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1463, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1464, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1465, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1466, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1467, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1468, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1469, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1470, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1471, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1472, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1473, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1474, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1475, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1476, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_RETURN_IF_TRUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_RETURN_TRUE_IF_TRUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_BEHIND, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_RC_HELI_HEIGHT_LIMIT, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CREATE_SCRIPT_CORONA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REMOVE_SCRIPT_CORONA, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_BOAT_IN_WATER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CAR_DRIVER_BEING_JACKED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_ONLY_ALLOWED_TO_SIT_IN_FRONT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAR_TILTED_BY_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_WEAPON_TYPE_FOR_PICKUP_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_PLAYER_USING_FIRST_PERSON_WEAPON_CAMERA, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_1489, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1490, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1491, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_DEBUG_MENU_ACTIVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_DRAW_HUD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DISABLE_FERRY_PATH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ENABLE_FERRY_PATH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_CLOSEST_DOCKED_FERRY, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_OPEN_FERRY_DOOR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CLOSE_FERRY_DOOR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_FERRY_DOOR_OPEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_FERRY_DOOR_CLOSED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SKIP_FERRY_TO_NEXT_DOCK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CHAR_CROUCHING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_FERRY_BOARDING_SPACE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_FERRY_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_FERRIES_DISABLED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_OVERRIDE_CAR_REMOTE_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CANCEL_REMOTE_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_CAR_SOLD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_BRIDGE_STATE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_OBJECT_TURN_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_OBJECT_MASS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_HAS_CUTSCENE_LOADED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_UNIQUE_JUMPS_FOUND, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_HIDDEN_PACKAGES_COLLECTED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_BIKE_SOLD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_PACKAGE_SMUGGLED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_SMUGGLER_WASTED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_FASTEST_SMUGGLING_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_DIVE_FROM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_WRECK_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_IN_COACH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_HITMAN_KILLED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_BEST_BANDIT_LAP_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_BEST_BANDIT_POSITION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_FASTEST_HELI_RACE_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_BEST_HELI_RACE_POSITION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_OUTFIT_CHANGE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_STREET_RACE_FASTEST_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_STREET_RACE_FASTEST_LAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_STREET_RACE_BEST_POSITION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAR_TURN_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAR_MOVE_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_OBJECT_PROOFS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_CAR_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAR_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_DEBUG_MENU_ON, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_OPEN_VAN_BACK_DOORS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_CHAR_THREAT_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_FREEZE_PED_ZOOM_SWITCH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_OBJECT_RENDERED_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_PLAYER_MADE_SAFE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_IF_FREE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_E3_BUILD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CLEAR_BIG_MESSAGES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CLEAR_AREA_OF_OBJECTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_LOAD_NON_STANDARD_PED_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_UNLOAD_NON_STANDARD_PED_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1566, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_BUILD_WORLD_GEOMETRY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_STORE_BUILDING_SWAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_MULTIPLAYER_ACTIVE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_MULTIPLAYER_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_MULTIPLAYER_SCRIPT_DONE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_MULTIPLAYER_SERVER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_MULTIPLAYER_TEAM_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_MULTIPLAYER_TEAM_ID, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DOES_SHORTCUT_TAXI_EXIST, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_ONSCREEN_TIMER_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REMOVE_CAR_BOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_POINT_3D_MARKER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_VECTOR_FROM_MULTIPLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_HELP_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SWITCH_FERRY_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_MAX_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_SHOOT_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_ATTACK_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CRUSHER_REWARD_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SWAP_BUILDINGS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_STREAM_BUILDING_SWAPS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_WORLD_STREAMING_COMPLETE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SWAP_TO_STREAMED_SECTOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_FACE_PLANT_DISTANCE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_NOODLES_DELIVERED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_9MM_MAYHEM_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_FROM_TOURIST, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_EXPORTED_CARS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_TOTAL_EXPORT_CARS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_DIRT_BIKE_AIR_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_ARROW_3D_MARKER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_NOW_OVERRIDE_FADE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_PICKUP_VALUE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_PICKUP_VALUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_DEVELOPER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_DEVELOPER_FLAG, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ATTACH_OBJECT_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DETACH_OBJECT_FROM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_PAD_STICKS_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_SUBTITLE_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_ANGLE_BETWEEN_POINTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_OVERRIDE_CHAR_MOVE_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_1627, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ENABLE_EMERGENCY_VEHICLES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_ADD_UNLOCKED_COSTUME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_OBJECT_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_OBJECT_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_STORE_PLAYER_OUTFIT, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_WAIT_STATE_REPEAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_LOCK_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_FINAL_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_ALLOWED_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_GET_PLAYER_STORED_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_DISABLE_PAUSE_MENU, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_IS_CHANNEL_PLAYING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CLOCK_EVENT_WARNING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_HELP_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAR_IS_REWARD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""),
};
#undef REGISTER_COMMAND
#undef INPUT_ARGUMENTS
@@ -1539,62 +1727,89 @@ void FlushLog()
#endif
}
-#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
-int CRunningScript::CollectParameterForDebug(char* buf, bool& var)
+int32* GetPointerToScriptVariableForDebug(CRunningScript* pScript, uint32* pIp, char* buf)
{
- uint16 varIndex;
char tmpstr[24];
+ uint8 type = CTheScripts::Read1ByteFromScript(pIp);
+ if (type >= ARGUMENT_GLOBAL_ARRAY) {
+ uint8 index_in_block = CTheScripts::Read1ByteFromScript(pIp);
+ uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
+ uint8 size = CTheScripts::Read1ByteFromScript(pIp);
+ script_assert(size > 0);
+ script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
+ uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
+ sprintf(tmpstr, " $%d[%d@ (%d)]", ((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index_in_block, index_id, pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id]);
+ strcat(buf, tmpstr);
+ return (int32*)&CTheScripts::ScriptSpace[4 * (((int)(type - ARGUMENT_GLOBAL_ARRAY) << 8) + index + index_in_block)];
+ }
+ else if (type >= ARGUMENT_GLOBAL) {
+ uint8 index_in_block = CTheScripts::Read1ByteFromScript(pIp);
+ sprintf(tmpstr, " $%d", ((int)(type - ARGUMENT_GLOBAL) << 8) + index_in_block);
+ strcat(buf, tmpstr);
+ return (int32*)&CTheScripts::ScriptSpace[4 * (((int)(type - ARGUMENT_GLOBAL) << 8) + index_in_block)];
+ }
+ else if (type >= ARGUMENT_LOCAL_ARRAY) {
+ uint8 index_id = CTheScripts::Read1ByteFromScript(pIp);
+ uint8 size = CTheScripts::Read1ByteFromScript(pIp);
+ script_assert(size > 0);
+ script_assert(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id] < size);
+ uint8 index = Min(pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id], size - 1);
+ sprintf(tmpstr, " %d@[%d@ (%d)]", (type - ARGUMENT_LOCAL_ARRAY), index_id, pScript->m_anLocalVariables[pScript->m_nLocalsPointer + index_id]);
+ strcat(buf, tmpstr);
+ return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL_ARRAY) + index];
+ }
+ else if (type >= ARGUMENT_LOCAL) {
+ sprintf(tmpstr, " %d@", (type - ARGUMENT_LOCAL));
+ strcat(buf, tmpstr);
+ return &pScript->m_anLocalVariables[pScript->m_nLocalsPointer + (type - ARGUMENT_LOCAL)];
+ }
+ else if (type >= ARGUMENT_TIMER) {
+ sprintf(tmpstr, " TIMER%d@", (type - ARGUMENT_TIMER));
+ strcat(buf, tmpstr);
+ return &pScript->m_anLocalVariables[NUM_LOCAL_VARS + 8 + (type - ARGUMENT_TIMER)]; // why 8?
+ }
+ script_assert(false && "wrong type for variable");
+ return nil;
+}
+
+int CRunningScript::CollectParameterForDebug(char* buf, bool& var)
+{
var = false;
+ int tmp;
switch (CTheScripts::Read1ByteFromScript(&m_nIp))
{
+ case ARGUMENT_END:
+ return 0; // TODO(LCS)
+ case ARGUMENT_INT_ZERO:
+ return 0;
+ case ARGUMENT_FLOAT_ZERO:
+ return 0;
+ case ARGUMENT_FLOAT_1BYTE:
+ return (uint32)(uint8)CTheScripts::Read1ByteFromScript(&m_nIp) << 24;
+ case ARGUMENT_FLOAT_2BYTES:
+ return (uint32)(uint16)CTheScripts::Read2BytesFromScript(&m_nIp) << 16;
+ case ARGUMENT_FLOAT_3BYTES:
+ tmp = (uint32)(uint8)CTheScripts::Read1ByteFromScript(&m_nIp) << 8;
+ tmp |= (uint32)(uint16)CTheScripts::Read2BytesFromScript(&m_nIp) << 16;
+ return tmp;
case ARGUMENT_INT32:
case ARGUMENT_FLOAT:
return CTheScripts::Read4BytesFromScript(&m_nIp);
- case ARGUMENT_GLOBALVAR:
- varIndex = CTheScripts::Read2BytesFromScript(&m_nIp);
- script_assert(varIndex >= 8 && varIndex < CTheScripts::GetSizeOfVariableSpace());
- var = true;
- sprintf(tmpstr, " $%d", varIndex / 4);
- strcat(buf, tmpstr);
- return *((int32*)&CTheScripts::ScriptSpace[varIndex]);
- case ARGUMENT_LOCALVAR:
- varIndex = CTheScripts::Read2BytesFromScript(&m_nIp);
- script_assert(varIndex >= 0 && varIndex < ARRAY_SIZE(m_anLocalVariables));
- var = true;
- sprintf(tmpstr, " %d@", varIndex);
- strcat(buf, tmpstr);
- return m_anLocalVariables[varIndex];
case ARGUMENT_INT8:
return CTheScripts::Read1ByteFromScript(&m_nIp);
case ARGUMENT_INT16:
return CTheScripts::Read2BytesFromScript(&m_nIp);
default:
- PrintToLog("%s - script assertion failed in CollectParameterForDebug", buf);
- script_assert(0);
- break;
+ var = true;
+ --m_nIp;
+ return *GetPointerToScriptVariableForDebug(this, &m_nIp, buf);
}
return 0;
}
void CRunningScript::GetStoredParameterForDebug(char* buf)
{
- uint16 varIndex;
- char tmpstr[24];
- switch (CTheScripts::Read1ByteFromScript(&m_nIp)) {
- case ARGUMENT_GLOBALVAR:
- varIndex = CTheScripts::Read2BytesFromScript(&m_nIp);
- sprintf(tmpstr, " $%d", varIndex / 4);
- strcat(buf, tmpstr);
- break;
- case ARGUMENT_LOCALVAR:
- varIndex = CTheScripts::Read2BytesFromScript(&m_nIp);
- sprintf(tmpstr, " %d@", varIndex);
- strcat(buf, tmpstr);
- break;
- default:
- PrintToLog("%s - script_assertion failed in GetStoredParameterForDebug", buf);
- script_assert(0);
- }
+ GetPointerToScriptVariableForDebug(this, &m_nIp, buf);
}
void CTheScripts::LogAfterScriptInitializing()
@@ -1641,17 +1856,41 @@ void CRunningScript::LogOnStartProcessing()
void CRunningScript::LogBeforeProcessingCommand(int32 command)
{
storedIp = m_nIp;
+ uint8 nInputParams;
+ uint8 nOutputParameters;
+ uint8 nLocalsOffset;
if (command < ARRAY_SIZE(commands)) {
script_assert(commands[command].id == command);
m_nIp -= 2;
- sprintf(commandInfo, m_nIp >= SIZE_MAIN_SCRIPT ? "M<%5d> " : "<%6d> ", m_nIp >= SIZE_MAIN_SCRIPT ? m_nIp - SIZE_MAIN_SCRIPT : m_nIp);
+ sprintf(commandInfo, m_nIp >= CTheScripts::MainScriptSize ? "M<%5d> " : "<%6d> ", m_nIp >= CTheScripts::MainScriptSize ? m_nIp - CTheScripts::MainScriptSize : m_nIp);
m_nIp += 2;
if (m_bNotFlag)
strcat(commandInfo, "NOT ");
if (commands[command].position == -1)
strcat(commandInfo, commands[command].name + sizeof("COMMAND_") - 1);
+ if (commands[command].input[0] == ARGTYPE_FUNCTION) {
+ char tmp[32];
+ bool var = false;
+ nInputParams = CTheScripts::Read1ByteFromScript(&m_nIp);
+ nOutputParameters = CTheScripts::Read1ByteFromScript(&m_nIp);
+ nLocalsOffset = CTheScripts::Read1ByteFromScript(&m_nIp);
+ int value = CollectParameterForDebug(commandInfo, var);
+ sprintf(tmp, var ? " (%s(%d))" : " %s(%d)", value >= 0 ? "G" : "L", abs(value));
+ strcat(commandInfo, tmp);
+ strcat(commandInfo, "{");
+ for (int i = 0; i < nInputParams; i++) {
+ if (i != 0)
+ strcat(commandInfo, ", ");
+ value = CollectParameterForDebug(commandInfo, var);
+ sprintf(tmp, var ? "(%d)" : "%d", value);
+ strcat(commandInfo, tmp);
+
+ }
+ strcat(commandInfo, "}");
+ }
+ else {
for (int i = 0; commands[command].input[i] != ARGTYPE_NONE; i++) {
- char tmp[16];
+ char tmp[32];
bool var = false;
int value;
switch (commands[command].input[i]) {
@@ -1663,13 +1902,14 @@ void CRunningScript::LogBeforeProcessingCommand(int32 command)
case ARGTYPE_STRING: sprintf(tmp, " '%s'", (const char*)&CTheScripts::ScriptSpace[m_nIp]); m_nIp += KEY_LENGTH_IN_SCRIPT; break;
case ARGTYPE_LABEL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s(%d))" : " %s(%d)", value >= 0 ? "G" : "L", abs(value)); break;
case ARGTYPE_BOOL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s)" : " %s", value ? "TRUE" : "FALSE"); break;
- case ARGTYPE_ANDOR: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, " %d %ss", (value + 1) % 10, value / 10 == 0 ? "AND" : "OR"); break;
+ case ARGTYPE_ANDOR: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, " %d %ss", (value) % 10, value / 10 == 0 ? "AND" : "OR"); break;
default: script_assert(0);
}
strcat(commandInfo, tmp);
if (commands[command].position == i)
strcat(commandInfo, commands[command].name_override);
}
+ }
uint32 t = m_nIp;
m_nIp = storedIp;
storedIp = t;
@@ -1686,8 +1926,9 @@ void CRunningScript::LogAfterProcessingCommand(int32 command)
uint32 t = m_nIp;
m_nIp = storedIp;
storedIp = t;
+ if (commands[command].input[0] != ARGTYPE_FUNCTION) {
for (int i = 0; commands[command].output[i] != ARGTYPE_NONE; i++) {
- char tmp[16];
+ char tmp[32];
switch (commands[command].output[i]) {
case ARGTYPE_INT:
case ARGTYPE_PED_HANDLE:
@@ -1697,6 +1938,7 @@ void CRunningScript::LogAfterProcessingCommand(int32 command)
default: script_assert(0 && "Script only returns INTs and FLOATs");
}
}
+ }
m_nIp = storedIp;
}
PrintToLog("%s\n", commandInfo);
@@ -1710,8 +1952,6 @@ void CRunningScript::LogAfterProcessingCommand(int32 command)
}
}
-#endif
-
#ifdef MISSION_SWITCHER
void
CTheScripts::SwitchToMission(int32 mission)
@@ -1745,21 +1985,19 @@ CTheScripts::SwitchToMission(int32 mission)
#endif
#endif
CTimer::Suspend();
- int offset = CTheScripts::MultiScriptArray[mission];
-#ifdef USE_DEBUG_SCRIPT_LOADER
- int handle = OpenScript();
-#else
- CFileMgr::ChangeDir("\\");
- int handle = CFileMgr::OpenFile("data\\main.scm", "rb");
-#endif
- CFileMgr::Seek(handle, offset, 0);
- CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT);
- CFileMgr::CloseFile(handle);
- CRunningScript* pMissionScript = CTheScripts::StartNewScript(SIZE_MAIN_SCRIPT);
+ int offset = CTheScripts::MultiScriptArray[mission] + 8;
+ int size = CTheScripts::MultiScriptArray[mission + 1] - CTheScripts::MultiScriptArray[mission];
+ if (size <= 0)
+ size = CTheScripts::LargestMissionScriptSize;
+ CFileMgr::Seek(gScriptsFile, offset, 0);
+ CFileMgr::Read(gScriptsFile, (const char*)&CTheScripts::ScriptSpace[CTheScripts::MainScriptSize], size);
+ CRunningScript* pMissionScript = CTheScripts::StartNewScript(CTheScripts::MainScriptSize);
CTimer::Resume();
pMissionScript->m_bIsMissionScript = true;
pMissionScript->m_bMissionFlag = true;
CTheScripts::bAlreadyRunningAMissionScript = true;
+ memset(&CTheScripts::ScriptSpace[CTheScripts::NumTrueGlobals * 4 + 8], 0, CTheScripts::MostGlobals * 4);
CGameLogic::ClearShortCut();
+ pMissionScript->Process();
}
#endif
diff --git a/src/control/TrafficLights.cpp b/src/control/TrafficLights.cpp
index e484d3be..a3cba9b9 100644
--- a/src/control/TrafficLights.cpp
+++ b/src/control/TrafficLights.cpp
@@ -114,6 +114,32 @@ CTrafficLights::DisplayActualLight(CEntity *ent)
CBrightLights::RegisterOne(pos1, ent->GetUp(), ent->GetRight(), CVector(0.0f, 0.0f, 0.0f), id + BRIGHTLIGHT_TRAFFIC_GREEN);
CBrightLights::RegisterOne(pos2, ent->GetUp(), -ent->GetRight(), CVector(0.0f, 0.0f, 0.0f), id + BRIGHTLIGHT_TRAFFIC_GREEN);
+
+ // TODO(LCS): check coordinates
+ static const float top = -0.127f;
+ static const float bot = -0.539f;
+ static const float mid = bot + (top - bot) / 3.0f;
+ static const float left = 1.256f;
+ static const float right = 0.706f;
+ phase = CTrafficLights::LightForPeds();
+ if (phase == PED_LIGHTS_DONT_WALK) {
+ CVector p0(2.7f, right, top);
+ CVector p1(2.7f, left, top);
+ CVector p2(2.7f, right, mid);
+ CVector p3(2.7f, left, mid);
+ CShinyTexts::RegisterOne(ent->GetMatrix() * p0, ent->GetMatrix() * p1, ent->GetMatrix() * p2, ent->GetMatrix() * p3,
+ 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f,
+ SHINYTEXT_WALK, 255, 0, 0, 60.0f);
+ }
+ else if (phase == PED_LIGHTS_WALK || CTimer::GetTimeInMilliseconds() & 0x100) {
+ CVector p0(2.7f, right, mid);
+ CVector p1(2.7f, left, mid);
+ CVector p2(2.7f, right, bot);
+ CVector p3(2.7f, left, bot);
+ CShinyTexts::RegisterOne(ent->GetMatrix() * p0, ent->GetMatrix() * p1, ent->GetMatrix() * p2, ent->GetMatrix() * p3,
+ 1.0f, 0.5f, 0.0f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f,
+ SHINYTEXT_WALK, 255, 255, 255, 60.0f);
+ }
}
else if (MI_TRAFFICLIGHTS_VERTICAL == m) {
CBaseModelInfo* mi = CModelInfo::GetModelInfo(ent->GetModelIndex());
diff --git a/src/core/AnimViewer.cpp b/src/core/AnimViewer.cpp
index 562b9c15..e3e19cd2 100644
--- a/src/core/AnimViewer.cpp
+++ b/src/core/AnimViewer.cpp
@@ -81,7 +81,7 @@ CAnimViewer::Initialise(void) {
CCollision::Init();
CWorld::Initialise();
mod_HandlingManager.Initialise();
- CTempColModels::Initialise();
+ gpTempColModels->Initialise();
CAnimManager::Initialise();
CModelInfo::Initialise();
CParticle::Initialise();
@@ -92,7 +92,7 @@ CAnimViewer::Initialise(void) {
CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
CFileLoader::LoadLevel("DATA\\ANIMVIEWER.DAT");
CStreaming::Init();
- for(int i = 0; i < MODELINFOSIZE; i++)
+ for(int i = 0; i < CModelInfo::GetNumModelInfos(); i++)
if(CModelInfo::GetModelInfo(i))
CModelInfo::GetModelInfo(i)->ConvertAnimFileIndex();
CStreaming::LoadInitialPeds();
@@ -166,7 +166,7 @@ LastPedModelId(int modelId)
{
CBaseModelInfo *model;
for(;;){
- assert(modelId < MODELINFOSIZE);
+ assert(modelId < CModelInfo::GetNumModelInfos());
model = CModelInfo::GetModelInfo(modelId);
if (model && model->GetModelType() == MITYPE_PED)
break;
@@ -180,7 +180,7 @@ FirstCarModelId(int modelId)
{
CBaseModelInfo *model;
for(;;){
- assert(modelId < MODELINFOSIZE);
+ assert(modelId < CModelInfo::GetNumModelInfos());
model = CModelInfo::GetModelInfo(modelId);
if (model && model->GetModelType() == MITYPE_VEHICLE)
break;
@@ -200,7 +200,7 @@ NextModelId(int modelId, int wantedChange)
while(tryCount != 0) {
modelId += wantedChange;
- if (modelId < 0 || modelId >= MODELINFOSIZE) {
+ if (modelId < 0 || modelId >= CModelInfo::GetNumModelInfos()) {
tryCount--;
wantedChange = -wantedChange;
} else if (modelId != 5 && modelId != 6 && modelId != 405) {
diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp
index cd6e38f4..c02f6dab 100644
--- a/src/core/Cam.cpp
+++ b/src/core/Cam.cpp
@@ -121,6 +121,7 @@ CCam::Process(void)
else
TargetOrientation = CGeneral::GetATanOfXY(CamTargetEntity->GetForward().x, CamTargetEntity->GetForward().y);
+/* LCS: removed
CVector Fwd(0.0f, 0.0f, 0.0f);
Fwd.x = CamTargetEntity->GetForward().x;
Fwd.y = CamTargetEntity->GetForward().y;
@@ -138,6 +139,9 @@ CCam::Process(void)
else
TargetSpeedVar = -Min(Sqrt(SQR(FwdSpeedX) + SQR(FwdSpeedY))/1.8f, 0.5f);
SpeedVar = 0.895f*SpeedVar + 0.105*TargetSpeedVar;
+*/
+ SpeedVar = 0.0f;
+ TargetSpeedVar = 0.0f;
}else{
if(CamTargetEntity == FindPlayerPed()){
// Some fancy smoothing of player position and speed
@@ -5059,6 +5063,11 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
// Using GetCarGun(LR/UD) will give us same unprocessed RightStick value as SA
float stickX = -(pad->GetCarGunLeftRight());
float stickY = -pad->GetCarGunUpDown();
+ // HACK to disable rotation on tank for now
+ if(car->GetModelIndex() == MI_RHINO){
+ stickX = 0.0f;
+ stickY = 0.0f;
+ }
// In SA this checks for m_bUseMouse3rdPerson so num2 / num8 do not move camera
// when Keyboard & Mouse controls are used. To make it work better with III/VC, check for actual pad state instead
@@ -5353,70 +5362,5 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
// SA
// gTargetCoordsForLookingBehind = TargetCoors;
- // SA code from CAutomobile::TankControl/FireTruckControl.
- if (car->GetModelIndex() == MI_RHINO || car->GetModelIndex() == MI_FIRETRUCK) {
-
- float &carGunLR = ((CAutomobile*)car)->m_fCarGunLR;
- CVector hi = Multiply3x3(Front, car->GetMatrix());
-
- // III/VC's firetruck turret angle is reversed
- float angleToFace = (car->GetModelIndex() == MI_FIRETRUCK ? -hi.Heading() : hi.Heading());
-
- if (angleToFace <= carGunLR + PI) {
- if (angleToFace < carGunLR - PI)
- angleToFace = angleToFace + TWOPI;
- } else {
- angleToFace = angleToFace - TWOPI;
- }
-
- float neededTurn = angleToFace - carGunLR;
- float turnPerFrame = CTimer::GetTimeStep() * (car->GetModelIndex() == MI_FIRETRUCK ? 0.05f : 0.015f);
- if (neededTurn <= turnPerFrame) {
- if (neededTurn < -turnPerFrame)
- angleToFace = carGunLR - turnPerFrame;
- } else {
- angleToFace = turnPerFrame + carGunLR;
- }
-
- if (car->GetModelIndex() == MI_RHINO && carGunLR != angleToFace) {
- DMAudio.PlayOneShot(car->m_audioEntityId, SOUND_CAR_TANK_TURRET_ROTATE, Abs(angleToFace - carGunLR));
- }
- carGunLR = angleToFace;
-
- if (carGunLR < -PI) {
- carGunLR += TWOPI;
- } else if (carGunLR > PI) {
- carGunLR -= TWOPI;
- }
-
- // Because firetruk turret also has Y movement
- if (car->GetModelIndex() == MI_FIRETRUCK) {
- float &carGunUD = ((CAutomobile*)car)->m_fCarGunUD;
-
- float alphaToFace = Atan2(hi.z, hi.Magnitude2D()) + DEGTORAD(15.0f);
- float neededAlphaTurn = alphaToFace - carGunUD;
- float alphaTurnPerFrame = CTimer::GetTimeStepInSeconds();
-
- if (neededAlphaTurn > alphaTurnPerFrame) {
- neededTurn = alphaTurnPerFrame;
- carGunUD = neededTurn + carGunUD;
- } else {
- if (neededAlphaTurn >= -alphaTurnPerFrame) {
- carGunUD = alphaToFace;
- } else {
- carGunUD = carGunUD - alphaTurnPerFrame;
- }
- }
-
- float turretMinY = -DEGTORAD(20.0f);
- float turretMaxY = DEGTORAD(20.0f);
- if (turretMinY <= carGunUD) {
- if (carGunUD > turretMaxY)
- carGunUD = turretMaxY;
- } else {
- carGunUD = turretMinY;
- }
- }
- }
}
#endif
diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp
index e7cd65a0..6e632c7c 100644
--- a/src/core/Camera.cpp
+++ b/src/core/Camera.cpp
@@ -114,6 +114,7 @@ CCamera::Init(void)
m_1rstPersonRunCloseToAWall = false;
m_fPositionAlongSpline = 0.0f;
m_bCameraJustRestored = false;
+ m_bFreezePedZoomSwitch = false;
Cams[0].Init();
Cams[1].Init();
Cams[2].Init();
@@ -985,7 +986,7 @@ CCamera::CamControl(void)
// Change user selected mode
if(CPad::GetPad(0)->CycleCameraModeUpJustDown() && !CReplay::IsPlayingBack() &&
(m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) &&
- !m_WideScreenOn && !m_bFailedCullZoneTestPreviously && !m_bFirstPersonBeingUsed){
+ !m_WideScreenOn && !m_bFailedCullZoneTestPreviously && !m_bFirstPersonBeingUsed && !m_bFreezePedZoomSwitch){
if(FrontEndMenuManager.m_ControlMethod == CONTROL_STANDARD){
if(PedZoomIndicator == CAM_ZOOM_3)
PedZoomIndicator = CAM_ZOOM_1;
@@ -3863,7 +3864,7 @@ CCamera::GetScreenFadeStatus(void)
}
-
+//--LCS: TODO
void
CCamera::RenderMotionBlur(void)
{
@@ -3872,7 +3873,8 @@ CCamera::RenderMotionBlur(void)
CMBlur::MotionBlurRender(m_pRwCamera,
m_BlurRed, m_BlurGreen, m_BlurBlue,
- m_motionBlur, m_BlurType, m_imotionBlurAddAlpha);
+// m_motionBlur, m_BlurType, m_imotionBlurAddAlpha);
+ m_motionBlur, m_BlurType, 32); // hack hack
}
void
diff --git a/src/core/Camera.h b/src/core/Camera.h
index 39ecb760..66a89f21 100644
--- a/src/core/Camera.h
+++ b/src/core/Camera.h
@@ -368,6 +368,7 @@ public:
bool m_bVehicleSuspenHigh;
bool m_bEnable1rstPersonCamCntrlsScript;
bool m_bAllow1rstPersonWeaponsCamera;
+ bool m_bFreezePedZoomSwitch;
bool m_bFailedCullZoneTestPreviously;
bool m_FadeTargetIsSplashScreen;
diff --git a/src/core/Clock.cpp b/src/core/Clock.cpp
index a3298343..0aa841ae 100644
--- a/src/core/Clock.cpp
+++ b/src/core/Clock.cpp
@@ -18,6 +18,7 @@ uint16 CClock::ms_Stored_nGameClockSeconds;
uint32 CClock::ms_nMillisecondsPerGameMinute;
uint32 CClock::ms_nLastClockTick;
bool CClock::ms_bClockHasBeenStored;
+float CClock::ms_EnvMapTimeMultiplicator;
#ifndef MASTER
bool gbFreezeTime;
@@ -33,6 +34,7 @@ CClock::Initialise(uint32 scale)
ms_nMillisecondsPerGameMinute = scale;
ms_nLastClockTick = CTimer::GetTimeInMilliseconds();
ms_bClockHasBeenStored = false;
+ ms_EnvMapTimeMultiplicator = 1.0f;
debug("CClock ready\n");
#ifndef MASTER
VarConsole.Add("Time (hour of day)", &ms_nGameClockHours, 1, 0, 23, true);
@@ -134,3 +136,10 @@ CClock::RestoreClock(void)
ms_nGameClockMinutes = ms_Stored_nGameClockMinutes;
ms_nGameClockSeconds = ms_Stored_nGameClockSeconds;
}
+
+void
+CClock::CalcEnvMapTimeMultiplicator(void)
+{
+ float nightness = Abs(ms_nGameClockHours/24.0f - 0.5f);
+ ms_EnvMapTimeMultiplicator = SQR(1.0f - nightness);;
+}
diff --git a/src/core/Clock.h b/src/core/Clock.h
index a611cd50..808e61f4 100644
--- a/src/core/Clock.h
+++ b/src/core/Clock.h
@@ -12,6 +12,7 @@ public:
static uint32 ms_nMillisecondsPerGameMinute;
static uint32 ms_nLastClockTick;
static bool ms_bClockHasBeenStored;
+ static float ms_EnvMapTimeMultiplicator;
static void Initialise(uint32 scale);
static void Update(void);
@@ -21,6 +22,8 @@ public:
static void StoreClock(void);
static void RestoreClock(void);
+ static void CalcEnvMapTimeMultiplicator(void);
+
static uint8 GetHours(void) { return ms_nGameClockHours; }
static uint8 GetMinutes(void) { return ms_nGameClockMinutes; }
static int16 GetSeconds(void) { return ms_nGameClockSeconds; }
diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp
index dbf2cad9..e2b66286 100644
--- a/src/core/FileLoader.cpp
+++ b/src/core/FileLoader.cpp
@@ -291,7 +291,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
{
int i;
- model.boundingSphere.radius = *(float*)(buf);
+ model.boundingSphere.radius = Max(*(float*)(buf), 0.1f);
model.boundingSphere.center.x = *(float*)(buf+4);
model.boundingSphere.center.y = *(float*)(buf+8);
model.boundingSphere.center.z = *(float*)(buf+12);
@@ -304,10 +304,13 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
model.numSpheres = *(int16*)(buf+40);
buf += 44;
if(model.numSpheres > 0){
- model.spheres = (CColSphere*)RwMalloc(model.numSpheres*sizeof(CColSphere));
+ model.spheres = new CColSphere[model.numSpheres];
REGISTER_MEMPTR(&model.spheres);
for(i = 0; i < model.numSpheres; i++){
- model.spheres[i].Set(*(float*)buf, *(CVector*)(buf+4), buf[16], buf[17]);
+ float radius = *(float*)buf;
+ if(radius > model.boundingSphere.radius)
+ model.boundingSphere.radius = radius + 0.01f;
+ model.spheres[i].Set(radius, *(CVector*)(buf+4), buf[16], buf[17]);
buf += 20;
}
}else
@@ -316,7 +319,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
model.numLines = *(int16*)buf;
buf += 4;
if(model.numLines > 0){
- //model.lines = (CColLine*)RwMalloc(model.numLines*sizeof(CColLine));
+ //model.lines = new CColLine[model.numLines];;
REGISTER_MEMPTR(&model.lines);
for(i = 0; i < model.numLines; i++){
//model.lines[i].Set(*(CVector*)buf, *(CVector*)(buf+12));
@@ -330,7 +333,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
model.numBoxes = *(int16*)buf;
buf += 4;
if(model.numBoxes > 0){
- model.boxes = (CColBox*)RwMalloc(model.numBoxes*sizeof(CColBox));
+ model.boxes = new CColBox[model.numBoxes];
REGISTER_MEMPTR(&model.boxes);
for(i = 0; i < model.numBoxes; i++){
model.boxes[i].Set(*(CVector*)buf, *(CVector*)(buf+12), buf[24], buf[25]);
@@ -342,7 +345,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
int32 numVertices = *(int16*)buf;
buf += 4;
if(numVertices > 0){
- model.vertices = (CompressedVector*)RwMalloc(numVertices*sizeof(CompressedVector));
+ model.vertices = new CompressedVector[numVertices];
REGISTER_MEMPTR(&model.vertices);
for(i = 0; i < numVertices; i++){
model.vertices[i].Set(*(float*)buf, *(float*)(buf+4), *(float*)(buf+8));
@@ -360,14 +363,64 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname)
model.numTriangles = *(int16*)buf;
buf += 4;
if(model.numTriangles > 0){
- model.triangles = (CColTriangle*)RwMalloc(model.numTriangles*sizeof(CColTriangle));
+ model.triangles = new CColTriangle[model.numTriangles];
REGISTER_MEMPTR(&model.triangles);
for(i = 0; i < model.numTriangles; i++){
model.triangles[i].Set(*(int32*)buf, *(int32*)(buf+4), *(int32*)(buf+8), buf[12]);
buf += 16;
+
+ // skip small triangles
+ CVector vA = model.vertices[model.triangles[i].a].Get();
+ CVector vB = model.vertices[model.triangles[i].b].Get();
+ CVector vC = model.vertices[model.triangles[i].c].Get();
+ float area = CrossProduct(vA - vB, vA - vC).Magnitude();
+ if(area < 0.001f || vA == vB || vA == vC || vB == vC){
+ i--;
+ model.numTriangles--;
+ }
}
}else
model.triangles = nil;
+
+ SplitColTrianglesIntoSections(model);
+}
+
+void
+CFileLoader::SplitColTrianglesIntoSections(CColModel &model)
+{
+ if(model.triangles == nil || model.numTriangles == 0)
+ return;
+
+ model.numTriBBoxes = 1;
+ model.triBBoxes = new CColTriBBox[1];
+ model.triBBoxes[0].first = 0;
+ model.triBBoxes[0].last = model.numTriangles-1;
+ CVector v = model.vertices[model.triangles[0].a].Get();
+ model.triBBoxes[0].Set(v, v);
+
+ for(int i = 0; i < model.numTriangles; i++){
+ CVector vA = model.vertices[model.triangles[i].a].Get();
+ CVector vB = model.vertices[model.triangles[i].b].Get();
+ CVector vC = model.vertices[model.triangles[i].c].Get();
+ model.triBBoxes[0].min.x = Min(vA.x, model.triBBoxes[0].min.x);
+ model.triBBoxes[0].min.y = Min(vA.y, model.triBBoxes[0].min.y);
+ model.triBBoxes[0].min.z = Min(vA.z, model.triBBoxes[0].min.z);
+ model.triBBoxes[0].min.x = Min(vB.x, model.triBBoxes[0].min.x);
+ model.triBBoxes[0].min.y = Min(vB.y, model.triBBoxes[0].min.y);
+ model.triBBoxes[0].min.z = Min(vB.z, model.triBBoxes[0].min.z);
+ model.triBBoxes[0].min.x = Min(vC.x, model.triBBoxes[0].min.x);
+ model.triBBoxes[0].min.y = Min(vC.y, model.triBBoxes[0].min.y);
+ model.triBBoxes[0].min.z = Min(vC.z, model.triBBoxes[0].min.z);
+ model.triBBoxes[0].max.x = Max(vA.x, model.triBBoxes[0].max.x);
+ model.triBBoxes[0].max.y = Max(vA.y, model.triBBoxes[0].max.y);
+ model.triBBoxes[0].max.z = Max(vA.z, model.triBBoxes[0].max.z);
+ model.triBBoxes[0].max.x = Max(vB.x, model.triBBoxes[0].max.x);
+ model.triBBoxes[0].max.y = Max(vB.y, model.triBBoxes[0].max.y);
+ model.triBBoxes[0].max.z = Max(vB.z, model.triBBoxes[0].max.z);
+ model.triBBoxes[0].max.x = Max(vC.x, model.triBBoxes[0].max.x);
+ model.triBBoxes[0].max.y = Max(vC.y, model.triBBoxes[0].max.y);
+ model.triBBoxes[0].max.z = Max(vC.z, model.triBBoxes[0].max.z);
+ }
}
static void
@@ -608,11 +661,14 @@ CFileLoader::LoadObjectTypes(const char *filename)
int section;
int pathIndex;
int id, pathType;
- int minID, maxID;
+ //int minID, maxID;
+
+ for(int i = 0; i < ARRAY_SIZE(m_sTempIdeData); i++)
+ m_sTempIdeData[i].id = -1;
section = NONE;
- minID = INT32_MAX;
- maxID = -1;
+ //minID = INT32_MAX;
+ //maxID = -1;
pathIndex = -1;
debug("Loading object types from %s...\n", filename);
@@ -636,13 +692,13 @@ CFileLoader::LoadObjectTypes(const char *filename)
}else switch(section){
case OBJS:
id = LoadObject(line);
- if(id > maxID) maxID = id;
- if(id < minID) minID = id;
+ //if(id > maxID) maxID = id;
+ //if(id < minID) minID = id;
break;
case TOBJ:
id = LoadTimeObject(line);
- if(id > maxID) maxID = id;
- if(id < minID) minID = id;
+ //if(id > maxID) maxID = id;
+ //if(id < minID) minID = id;
break;
case WEAP:
LoadWeaponObject(line);
@@ -679,10 +735,10 @@ CFileLoader::LoadObjectTypes(const char *filename)
}
CFileMgr::CloseFile(fd);
- for(id = minID; id <= maxID; id++){
+ for(id = 0; id < MODELINFOSIZE; id++){
CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(id);
if(mi && mi->IsBuilding())
- mi->SetupBigBuilding(minID, maxID);
+ mi->SetupBigBuilding();
}
}
@@ -715,6 +771,13 @@ CFileLoader::LoadObject(const char *line)
if(sscanf(line, "%d %s %s %d", &id, model, txd, &numObjs) != 4)
return 0; // game returns return value
+ for(int i = 0; i < ARRAY_SIZE(m_sTempIdeData); i++)
+ if(m_sTempIdeData[i].id == -1){
+ m_sTempIdeData[i].id = id;
+ strcpy(m_sTempIdeData[i].name, model);
+ break;
+ }
+
switch(numObjs){
case 1:
sscanf(line, "%d %s %s %d %f %d",
@@ -763,6 +826,13 @@ CFileLoader::LoadTimeObject(const char *line)
if(sscanf(line, "%d %s %s %d", &id, model, txd, &numObjs) != 4)
return 0; // game returns return value
+ for(int i = 0; i < ARRAY_SIZE(m_sTempIdeData); i++)
+ if(m_sTempIdeData[i].id < 0){
+ m_sTempIdeData[i].id = id;
+ strcpy(m_sTempIdeData[i].name, model);
+ break;
+ }
+
switch(numObjs){
case 1:
sscanf(line, "%d %s %s %d %f %d %d %d",
@@ -793,7 +863,7 @@ CFileLoader::LoadTimeObject(const char *line)
mi->m_firstDamaged = damaged;
mi->SetTimes(timeOn, timeOff);
mi->SetTexDictionary(txd);
- other = mi->FindOtherTimeModel();
+ other = mi->FindOtherTimeModel(model);
if(other)
other->SetOtherTimeModel(id);
MatchModelString(model, id);
@@ -817,7 +887,7 @@ CFileLoader::LoadWeaponObject(const char *line)
mi->m_lodDistances[0] = dist;
mi->SetTexDictionary(txd);
mi->SetAnimFile(animFile);
- mi->SetColModel(&CTempColModels::ms_colModelWeapon);
+ mi->SetColModel(&gpTempColModels->ms_colModelWeapon);
MatchModelString(model, id);
return id;
}
@@ -833,7 +903,7 @@ CFileLoader::LoadClumpObject(const char *line)
mi = CModelInfo::AddClumpModel(id);
mi->SetModelName(model);
mi->SetTexDictionary(txd);
- mi->SetColModel(&CTempColModels::ms_colModelBBox);
+ mi->SetColModel(&gpTempColModels->ms_colModelBBox);
}
}
@@ -845,14 +915,15 @@ CFileLoader::LoadVehicleObject(const char *line)
char type[8], handlingId[16], gamename[32], animFile[16], vehclass[12];
uint32 frequency, comprules;
int32 level, misc;
- float wheelScale;
+ float wheelScale, normalSplay;
CVehicleModelInfo *mi;
char *p;
- sscanf(line, "%d %s %s %s %s %s %s %s %d %d %x %d %f",
+ sscanf(line, "%d %s %s %s %s %s %s %s %d %d %x %d %f %f",
&id, model, txd,
type, handlingId, gamename, animFile, vehclass,
- &frequency, &level, &comprules, &misc, &wheelScale);
+ &frequency, &level, &comprules, &misc, &wheelScale,
+ &normalSplay);
mi = CModelInfo::AddVehicleModel(id);
mi->SetModelName(model);
@@ -872,6 +943,8 @@ CFileLoader::LoadVehicleObject(const char *line)
mi->m_vehicleType = VEHICLE_TYPE_BOAT;
}else if(strcmp(type, "train") == 0){
mi->m_vehicleType = VEHICLE_TYPE_TRAIN;
+ }else if(strcmp(type, "ferry") == 0){
+ mi->m_vehicleType = VEHICLE_TYPE_FERRY;
}else if(strcmp(type, "heli") == 0){
mi->m_vehicleType = VEHICLE_TYPE_HELI;
}else if(strcmp(type, "plane") == 0){
@@ -937,7 +1010,7 @@ CFileLoader::LoadPedObject(const char *line)
mi->SetModelName(model);
mi->SetTexDictionary(txd);
mi->SetAnimFile(animFile);
- mi->SetColModel(&CTempColModels::ms_colModelPed1);
+ mi->SetColModel(&gpTempColModels->ms_colModelPed1);
mi->m_pedType = CPedType::FindPedType(pedType);
mi->m_pedStatType = CPedStats::GetPedStatType(pedStats);
for(animGroupId = 0; animGroupId < NUM_ANIM_ASSOC_GROUPS; animGroupId++)
diff --git a/src/core/FileLoader.h b/src/core/FileLoader.h
index 077e7bdd..3a7d43a7 100644
--- a/src/core/FileLoader.h
+++ b/src/core/FileLoader.h
@@ -11,6 +11,7 @@ public:
static bool LoadCollisionFileFirstTime(uint8 *buffer, uint32 size, uint8 colSlot);
static bool LoadCollisionFile(uint8 *buffer, uint32 size, uint8 colSlot);
static void LoadCollisionModel(uint8 *buf, struct CColModel &model, char *name);
+ static void SplitColTrianglesIntoSections(CColModel &model);
static void LoadModelFile(const char *filename);
static RpAtomic *FindRelatedModelInfoCB(RpAtomic *atomic, void *data);
static void LoadClumpFile(const char *filename);
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index 875bb76b..b9eb193a 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -36,15 +36,16 @@
#include "User.h"
#include "sampman.h"
+// --LCS: changed a bit to have lcs feel, needs more work
// Similar story to Hud.cpp:
// Game has colors inlined in code.
// For easier modification we collect them here:
-const CRGBA LABEL_COLOR(255, 150, 225, 255);
+const CRGBA LABEL_COLOR(115, 173, 216, 255);
const CRGBA SELECTIONBORDER_COLOR(25, 130, 70, 255);
const CRGBA MENUOPTION_COLOR = LABEL_COLOR;
-const CRGBA SELECTEDMENUOPTION_COLOR = LABEL_COLOR;
-const CRGBA HEADER_COLOR = LABEL_COLOR;
-const CRGBA DARKMENUOPTION_COLOR(195, 90, 165, 255);
+const CRGBA SELECTEDMENUOPTION_COLOR(255, 255, 255, 255);
+const CRGBA HEADER_COLOR(197, 0, 0, 255);
+const CRGBA DARKMENUOPTION_COLOR(115/2, 173/2, 216 / 2, 255);
const CRGBA SLIDERON_COLOR(97, 194, 247, 255);
const CRGBA SLIDEROFF_COLOR(27, 89, 130, 255);
const CRGBA LIST_BACKGROUND_COLOR(49, 101, 148, 130);
@@ -53,6 +54,19 @@ const CRGBA RADIO_SELECTOR_COLOR = SLIDEROFF_COLOR;
const CRGBA INACTIVE_RADIO_COLOR(100, 100, 255, 100);
const CRGBA SCROLLBAR_COLOR = LABEL_COLOR;
+#if 0
+// Mobile
+#define DEFAULT_BRIGHTNESS 0x150
+#define MIN_BRIGHTNESS 180
+#define MAX_BRIGHTNESS 700
+#else
+// PS2, also PSP probably
+// 8 bars (32 step)
+#define DEFAULT_BRIGHTNESS 0x120
+#define MIN_BRIGHTNESS 0x80
+#define MAX_BRIGHTNESS 0x180
+#endif
+
#define MAP_MIN_SIZE 162.f
#define MAP_SIZE_TO_ALLOW_X_MOVE 297.f
@@ -187,7 +201,7 @@ wchar* CMenuManager::m_pDialogText = nil;
#endif
#define SET_FONT_FOR_MENU_HEADER \
- CFont::SetRightJustifyOn(); \
+ CFont::SetRightJustifyOff(); \
CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING)); \
CFont::SetScale(MENU_X(MENUHEADER_WIDTH), MENU_Y(MENUHEADER_HEIGHT)); \
CFont::SetDropShadowPosition(0);
@@ -472,7 +486,7 @@ CMenuManager::CMenuManager()
m_PrefsMusicVolume = 49;
m_PrefsRadioStation = 0;
m_PrefsStereoMono = 1;
- m_PrefsBrightness = 256;
+ m_PrefsBrightness = DEFAULT_BRIGHTNESS;
m_PrefsLOD = CRenderer::ms_lodDistScale;
m_KeyPressedCode = -1;
m_bFrontEnd_ReloadObrTxtGxt = false;
@@ -719,12 +733,8 @@ CMenuManager::CheckSliderMovement(int value)
{
switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) {
case MENUACTION_BRIGHTNESS:
-#ifdef FIX_BUGS
- m_PrefsBrightness += value * (384 / MENUSLIDER_LOGICAL_BARS);
-#else
- m_PrefsBrightness += value * 24.19f;
-#endif
- m_PrefsBrightness = Clamp(m_PrefsBrightness, 0, 384);
+ m_PrefsBrightness += value * (float)(MAX_BRIGHTNESS - MIN_BRIGHTNESS) / MENUSLIDER_LOGICAL_BARS;
+ m_PrefsBrightness = Clamp(m_PrefsBrightness, MIN_BRIGHTNESS, MAX_BRIGHTNESS);
break;
case MENUACTION_DRAWDIST:
if(value > 0)
@@ -960,14 +970,14 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
#endif
switch (m_nCurrScreen) {
- case MENUPAGE_CHOOSE_LOAD_SLOT:
+ /*case MENUPAGE_CHOOSE_LOAD_SLOT:
case MENUPAGE_CHOOSE_DELETE_SLOT:
case MENUPAGE_CHOOSE_SAVE_SLOT:
CSprite2d::Draw2DPolygon(MENU_X_LEFT_ALIGNED(38.0f), MENU_Y(85.0f),
MENU_X_LEFT_ALIGNED(615.0f), MENU_Y(75.0f),
MENU_X_LEFT_ALIGNED(30.0f), MENU_Y(320.0f),
MENU_X_LEFT_ALIGNED(605.0f), MENU_Y(330.0f), CRGBA(LIST_BACKGROUND_COLOR.r, LIST_BACKGROUND_COLOR.g, LIST_BACKGROUND_COLOR.b, FadeIn(LIST_BACKGROUND_COLOR.a)));
- break;
+ break;*/
case MENUPAGE_SOUND_SETTINGS:
PrintRadioSelector();
break;
@@ -983,11 +993,11 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
if (aScreens[m_nCurrScreen].m_ScreenName[0] != '\0') {
SET_FONT_FOR_MENU_HEADER
- CFont::SetColor(CRGBA(30, 30, 30, FadeIn(255)));
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
+ //CFont::SetColor(CRGBA(30, 30, 30, FadeIn(255)));
+ //CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
CFont::SetColor(CRGBA(HEADER_COLOR.r, HEADER_COLOR.g, HEADER_COLOR.b, FadeIn(255)));
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
+ CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get(aScreens[m_nCurrScreen].m_ScreenName));
}
// Label
@@ -1063,18 +1073,21 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
#endif
wchar* rightText = nil;
wchar* leftText;
- if (aScreens[m_nCurrScreen].m_aEntries[i].m_SaveSlot >= SAVESLOT_1 && aScreens[m_nCurrScreen].m_aEntries[i].m_SaveSlot <= SAVESLOT_8) {
+ /*if (aScreens[m_nCurrScreen].m_aEntries[i].m_SaveSlot >= SAVESLOT_1 && aScreens[m_nCurrScreen].m_aEntries[i].m_SaveSlot <= SAVESLOT_8) {
CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255)));
CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(MEDIUMTEXT_X_SCALE), MENU_Y(MEDIUMTEXT_Y_SCALE));
CFont::SetDropShadowPosition(0);
- } else {
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ } else {*/
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(BIGTEXT_X_SCALE), MENU_Y(BIGTEXT_Y_SCALE));
CFont::SetDropShadowPosition(2);
CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255)));
- CFont::SetColor(CRGBA(MENUOPTION_COLOR.r, MENUOPTION_COLOR.g, MENUOPTION_COLOR.b, FadeIn(255)));
- }
+ if (i == m_nCurrOption && itemsAreSelectable)
+ CFont::SetColor(CRGBA(SELECTEDMENUOPTION_COLOR.r, SELECTEDMENUOPTION_COLOR.g, SELECTEDMENUOPTION_COLOR.b, FadeIn(255)));
+ else
+ CFont::SetColor(CRGBA(MENUOPTION_COLOR.r, MENUOPTION_COLOR.g, MENUOPTION_COLOR.b, FadeIn(255)));
+ //}
if (aScreens[m_nCurrScreen].m_aEntries[i].m_Align == MENUALIGN_LEFT) {
CFont::SetCentreOff();
CFont::SetRightJustifyOff();
@@ -1434,7 +1447,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
// Actually bottomRight and bottomLeft should be exchanged here(although this is original code).
// So this shows us either R* didn't use same struct for menu BG and highlight, or they just kept fields as x1,y1 etc. Yikes.
- if (m_nOptionHighlightTransitionBlend == 0) {
+ /*if (m_nOptionHighlightTransitionBlend == 0) {
if (m_firstStartCounter == 255 && m_nMenuFadeAlpha == 255 && !bMenuChangeOngoing) {
CSprite2d::Draw2DPolygon(MENU_X_LEFT_ALIGNED(menuOptionHighlight.topLeft_x), MENU_Y(menuOptionHighlight.topLeft_y),
MENU_X_LEFT_ALIGNED(menuOptionHighlight.topRight_x), MENU_Y(menuOptionHighlight.topRight_y),
@@ -1470,7 +1483,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
MENU_X_LEFT_ALIGNED(menuOptionHighlight.bottomRight_x), MENU_Y(menuOptionHighlight.bottomRight_y),
MENU_X_LEFT_ALIGNED(menuOptionHighlight.bottomLeft_x), MENU_Y(menuOptionHighlight.bottomLeft_y), SELECTIONBORDER_COLOR);
}
- }
+ }*/
static uint32 lastBlendChange = 0;
if (m_nOptionHighlightTransitionBlend <= 255) {
@@ -1502,7 +1515,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(MEDIUMTEXT_X_SCALE), MENU_Y(MEDIUMTEXT_Y_SCALE));
} else {
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(BIGTEXT_X_SCALE), MENU_Y(BIGTEXT_Y_SCALE));
}
CFont::PrintString(MENU_X_LEFT_ALIGNED(DEFAULT_SCREEN_WIDTH - RIGHT_ALIGNED_TEXT_RIGHT_MARGIN(xMargin)), MENU_Y(aScreens[m_nCurrScreen].m_aEntries[i].m_Y MINUS_SCROLL_OFFSET), rightText);
@@ -1558,7 +1571,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
int lastActiveBarX;
switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) {
case MENUACTION_BRIGHTNESS:
- ProcessSlider(m_PrefsBrightness / 384.0f, SLIDER_Y(70.0f), HOVEROPTION_INCREASE_BRIGHTNESS, HOVEROPTION_DECREASE_BRIGHTNESS, SCREEN_WIDTH, true);
+ ProcessSlider((float)(m_PrefsBrightness - MIN_BRIGHTNESS) / (MAX_BRIGHTNESS - MIN_BRIGHTNESS), SLIDER_Y(70.0f), HOVEROPTION_INCREASE_BRIGHTNESS, HOVEROPTION_DECREASE_BRIGHTNESS, SCREEN_WIDTH, true);
break;
case MENUACTION_DRAWDIST:
ProcessSlider((m_PrefsLOD - 0.925f) / 0.875f, SLIDER_Y(99.0f), HOVEROPTION_INCREASE_DRAWDIST, HOVEROPTION_DECREASE_DRAWDIST, SCREEN_WIDTH, true);
@@ -2096,18 +2109,18 @@ CMenuManager::DrawControllerSetupScreen()
// Shadow
CFont::SetColor(CRGBA(30, 30, 30, FadeIn(255)));
- if (m_ControlMethod == CONTROL_STANDARD)
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get("FET_STI"));
- else if (m_ControlMethod == CONTROL_CLASSIC)
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get("FET_CTI"));
+ //if (m_ControlMethod == CONTROL_STANDARD)
+ // CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get("FET_STI"));
+ //else if (m_ControlMethod == CONTROL_CLASSIC)
+ // CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get("FET_CTI"));
// Real header
CFont::SetColor(CRGBA(HEADER_COLOR.r, HEADER_COLOR.g, HEADER_COLOR.b, FadeIn(255)));
if (m_ControlMethod == CONTROL_STANDARD)
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get("FET_STI"));
+ CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get("FET_STI"));
else if (m_ControlMethod == CONTROL_CLASSIC)
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get("FET_CTI"));
+ CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get("FET_CTI"));
wchar *actionTexts[33];
actionTexts[0] = TheText.Get("FEC_FIR");
@@ -2260,7 +2273,7 @@ CMenuManager::DrawControllerSetupScreen()
}
// Back button and it's shadow
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(BIGTEXT_X_SCALE), MENU_Y(BIGTEXT_Y_SCALE));
CFont::SetRightJustifyOn();
CFont::SetDropShadowPosition(2);
@@ -2319,7 +2332,7 @@ CMenuManager::DrawBackground(bool transitionCall)
PrintMap();
// Left border
- CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(menuBg.bottomLeft_x), SCREEN_STRETCH_Y(menuBg.bottomLeft_y), 0.0f, SCREEN_HEIGHT,
+ /*CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(menuBg.bottomLeft_x), SCREEN_STRETCH_Y(menuBg.bottomLeft_y), 0.0f, SCREEN_HEIGHT,
SCREEN_STRETCH_X(menuBg.topLeft_x), SCREEN_STRETCH_Y(menuBg.topLeft_y), 0.0f, 0.0f, CRGBA(0, 0, 0, 255));
// Top border
@@ -2332,7 +2345,7 @@ CMenuManager::DrawBackground(bool transitionCall)
// Right border
CSprite2d::Draw2DPolygon(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_STRETCH_X(menuBg.bottomRight_x), SCREEN_STRETCH_Y(menuBg.bottomRight_y),
- SCREEN_WIDTH, 0.0f, SCREEN_STRETCH_X(menuBg.topRight_x), SCREEN_STRETCH_Y(menuBg.topRight_y), CRGBA(0, 0, 0, 255));
+ SCREEN_WIDTH, 0.0f, SCREEN_STRETCH_X(menuBg.topRight_x), SCREEN_STRETCH_Y(menuBg.topRight_y), CRGBA(0, 0, 0, 255));*/
} else {
m_nMenuFadeAlpha = 255;
m_firstStartCounter = 255;
@@ -2341,7 +2354,7 @@ CMenuManager::DrawBackground(bool transitionCall)
PrintMap();
// Left border
- CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(menuBg.bottomLeft_x), SCREEN_STRETCH_Y(menuBg.bottomLeft_y), 0.0f, SCREEN_HEIGHT,
+ /*CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(menuBg.bottomLeft_x), SCREEN_STRETCH_Y(menuBg.bottomLeft_y), 0.0f, SCREEN_HEIGHT,
SCREEN_STRETCH_X(menuBg.topLeft_x), SCREEN_STRETCH_Y(menuBg.topLeft_y), 0.0f, 0.0f, CRGBA(0, 0, 0, 255));
// Top border
@@ -2354,7 +2367,7 @@ CMenuManager::DrawBackground(bool transitionCall)
// Right border
CSprite2d::Draw2DPolygon(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_STRETCH_X(menuBg.bottomRight_x), SCREEN_STRETCH_Y(menuBg.bottomRight_y),
- SCREEN_WIDTH, 0.0f, SCREEN_STRETCH_X(menuBg.topRight_x), SCREEN_STRETCH_Y(menuBg.topRight_y), CRGBA(0, 0, 0, 255));
+ SCREEN_WIDTH, 0.0f, SCREEN_STRETCH_X(menuBg.topRight_x), SCREEN_STRETCH_Y(menuBg.topRight_y), CRGBA(0, 0, 0, 255));*/
}
} else {
menuBg.SaveCurrentCoors();
@@ -2444,9 +2457,9 @@ CMenuManager::DrawBackground(bool transitionCall)
if (CTimer::GetTimeInMillisecondsPauseMode() - LastFade > 30
|| forceFadeInCounter > 30
) {
- m_nMenuFadeAlpha += 20;
+ m_nMenuFadeAlpha += 50;
if (m_firstStartCounter < 255) {
- m_firstStartCounter = Min(m_firstStartCounter + 20, 255);
+ m_firstStartCounter = Min(m_firstStartCounter + 50, 255);
}
LastFade = CTimer::GetTimeInMillisecondsPauseMode();
#ifdef FIX_BUGS
@@ -2505,12 +2518,12 @@ CMenuManager::DrawBackground(bool transitionCall)
CFont::DrawFonts();
SetFrontEndRenderStates();
- if (m_nCurrScreen != MENUPAGE_OUTRO)
- if (m_firstStartCounter == 255) {
- m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(SCREEN_STRETCH_X(27.0f), MENU_Y(8.0f), SCREEN_STRETCH_X(27.0f) + MENU_X(130.f), MENU_Y(138.0f)), CRGBA(255, 255, 255, 255));
- } else {
- m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(SCREEN_STRETCH_X(27.0f), MENU_Y(8.0f), SCREEN_STRETCH_X(27.0f) + MENU_X(130.f), MENU_Y(138.0f)), CRGBA(255, 255, 255, FadeIn(255)));
- }
+ //if (m_nCurrScreen != MENUPAGE_OUTRO)
+ // if (m_firstStartCounter == 255) {
+ // m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(SCREEN_STRETCH_X(27.0f), MENU_Y(8.0f), SCREEN_STRETCH_X(27.0f) + MENU_X(130.f), MENU_Y(138.0f)), CRGBA(255, 255, 255, 255));
+ // } else {
+ // m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(SCREEN_STRETCH_X(27.0f), MENU_Y(8.0f), SCREEN_STRETCH_X(27.0f) + MENU_X(130.f), MENU_Y(138.0f)), CRGBA(255, 255, 255, FadeIn(255)));
+ // }
if (m_ShowEmptyBindingError) {
static uint32 lastBindingError = CTimer::GetTimeInMillisecondsPauseMode();
@@ -2629,11 +2642,11 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
MENU_X_RIGHT_ALIGNED(PLAYERSETUP_LIST_RIGHT), SCREEN_SCALE_FROM_BOTTOM(PLAYERSETUP_LIST_BOTTOM)), CRGBA(LIST_BACKGROUND_COLOR.r, LIST_BACKGROUND_COLOR.g, LIST_BACKGROUND_COLOR.b, FadeIn(LIST_BACKGROUND_COLOR.a)));
SET_FONT_FOR_MENU_HEADER
- CFont::SetColor(CRGBA(30, 30, 30, FadeIn(255)));
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get("FET_PS"));
+ //CFont::SetColor(CRGBA(30, 30, 30, FadeIn(255)));
+ //CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X) - MENU_X(7.f), SCREEN_SCALE_Y(MENUHEADER_POS_Y + 7.f), TheText.Get("FET_PS"));
CFont::SetColor(CRGBA(HEADER_COLOR.r, HEADER_COLOR.g, HEADER_COLOR.b, FadeIn(255)));
- CFont::PrintString(SCREEN_STRETCH_FROM_RIGHT(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get("FET_PS"));
+ CFont::PrintString(SCREEN_STRETCH_X(MENUHEADER_POS_X), SCREEN_SCALE_Y(MENUHEADER_POS_Y), TheText.Get("FET_PS"));
// Header (Skin - Date)
if (m_nCurrExLayer == HOVEROPTION_LIST) {
@@ -2813,7 +2826,7 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
// Big apply button
if (strcmp(m_aSkinName, m_PrefsSkinFile) != 0) {
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
switch (m_PrefsLanguage) {
case LANGUAGE_FRENCH:
CFont::SetScale(MENU_X(1.1f), MENU_Y(1.9f));
@@ -2833,7 +2846,7 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
CFont::SetRightJustifyOff();
CFont::PrintString(MENU_X_LEFT_ALIGNED(24.0f), MENU_Y(220.0f), TheText.Get("FET_APP"));
}
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(BIGTEXT_X_SCALE), MENU_Y(BIGTEXT_Y_SCALE));
@@ -2905,7 +2918,7 @@ CMenuManager::DrawPlayerSetupScreen(bool activeScreen)
m_nHoverOption = HOVEROPTION_NOT_HOVERING;
}
}
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(BIGTEXT_X_SCALE), MENU_Y(BIGTEXT_Y_SCALE));
CFont::SetRightJustifyOn();
CFont::SetColor(CRGBA(MENUOPTION_COLOR.r, MENUOPTION_COLOR.g, MENUOPTION_COLOR.b, FadeIn(255)));
@@ -3341,7 +3354,7 @@ CMenuManager::SmallMessageScreen(const char* text)
void
CMenuManager::PrintBriefs()
{
- CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255)));
+ CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255)));
CFont::SetRightJustifyOff();
CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetScale(MENU_X(MEDIUMTEXT_X_SCALE), MENU_Y(MEDIUMTEXT_Y_SCALE));
@@ -3497,9 +3510,9 @@ CMenuManager::Process(void)
#ifdef XBOX_MESSAGE_SCREEN
ProcessDialogTimer();
#endif
-
- if (TheCamera.GetScreenFadeStatus() != FADE_0)
- return;
+ // tmp hack to get saving to work
+ //if (TheCamera.GetScreenFadeStatus() != FADE_0)
+ // return;
InitialiseChangedLanguageSettings();
@@ -4836,7 +4849,8 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
break;
case MENUACTION_CANCELGAME:
DMAudio.Service();
- SwitchToNewScreen(MENUPAGE_OUTRO);
+ RsEventHandler(rsQUITAPP, nil);
+ //SwitchToNewScreen(MENUPAGE_OUTRO);
break;
case MENUACTION_RESUME:
#ifdef LEGACY_MENU_OPTIONS
@@ -4908,7 +4922,7 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE);
SaveSettings();
} else if (m_nCurrScreen == MENUPAGE_DISPLAY_SETTINGS) {
- m_PrefsBrightness = 256;
+ m_PrefsBrightness = DEFAULT_BRIGHTNESS;
m_PrefsLOD = 1.2f;
#ifdef LEGACY_MENU_OPTIONS
m_PrefsVsync = true;
@@ -5779,7 +5793,7 @@ CMenuManager::DrawQuitGameScreen(void)
static CSprite2d *splash = nil;
if (splash == nil)
- splash = LoadSplash("OUTRO");
+ splash = LoadSplash("sceelee");
m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(SCREEN_STRETCH_X(28.0f), MENU_Y(8.0f), SCREEN_STRETCH_X(27.0f) + MENU_X(130.f), MENU_Y(138.0f)), CRGBA(255, 255, 255, 255 - alpha));
diff --git a/src/core/Game.cpp b/src/core/Game.cpp
index 77c8965f..a1ae4625 100644
--- a/src/core/Game.cpp
+++ b/src/core/Game.cpp
@@ -22,6 +22,7 @@
#include "Darkel.h"
#include "Debug.h"
#include "EventList.h"
+#include "Ferry.h"
#include "FileLoader.h"
#include "FileMgr.h"
#include "Fire.h"
@@ -322,7 +323,7 @@ bool CGame::InitialiseOnceAfterRW(void)
{
TheText.Load();
CTimer::Initialise();
- CTempColModels::Initialise();
+ gpTempColModels->Initialise();
mod_HandlingManager.Initialise();
CSurfaceTable::Initialise("DATA\\SURFACE.DAT");
CPedStats::Initialise();
@@ -374,6 +375,9 @@ bool CGame::Initialise(const char* datFile)
CPools::Initialise();
+ if(gMakeResources)
+ CVehicleModelInfo::Load(nil);
+
#ifndef GTA_PS2
#ifdef PED_CAR_DENSITY_SLIDERS
// Load density values from gta3.ini only if our reVC.ini have them 0.6f
@@ -384,7 +388,7 @@ bool CGame::Initialise(const char* datFile)
#ifdef USE_TEXTURE_POOL
_TexturePoolsUnknown(false);
#endif
- currLevel = LEVEL_BEACH;
+ currLevel = LEVEL_INDUSTRIAL;
currArea = AREA_MAIN_MAP;
PUSH_MEMID(MEMID_TEXTURES);
@@ -455,7 +459,7 @@ bool CGame::Initialise(const char* datFile)
CdStreamAddImage("MODELS\\GTA3.IMG");
- CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
+// CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
CFileLoader::LoadLevel(datFile);
LoadingScreen("Loading the Game", "Add Particles", nil);
@@ -550,6 +554,7 @@ bool CGame::Initialise(const char* datFile)
LoadingScreen("Loading the Game", "Position dynamic objects", nil);
LoadingScreen("Loading the Game", "Initialise vehicle paths", nil);
+ CFerry::InitFerrys();
CTrain::InitTrains();
CPlane::InitPlanes();
CCredits::Init();
@@ -598,7 +603,7 @@ bool CGame::ShutDown(void)
CPlane::Shutdown();
CTrain::Shutdown();
CScriptPaths::Shutdown();
- CWaterCreatures::RemoveAll();
+ //CWaterCreatures::RemoveAll();
CSpecialFX::Shutdown();
CGarages::Shutdown();
CMovingThings::Shutdown();
@@ -649,7 +654,7 @@ bool CGame::ShutDown(void)
return true;
}
-void CGame::ReInitGameObjectVariables(void)
+bool CGame::ReInitGameObjectVariables(bool load)
{
CGameLogic::InitAtStartOfGame();
#ifdef PS2_MENU
@@ -672,8 +677,9 @@ void CGame::ReInitGameObjectVariables(void)
CDraw::SetFOV(120.0f);
CDraw::ms_fLODDistance = 500.0f;
CStreaming::RequestBigBuildings(LEVEL_GENERIC);
- CStreaming::RemoveIslandsNotUsed(LEVEL_BEACH);
- CStreaming::RemoveIslandsNotUsed(LEVEL_MAINLAND);
+ CStreaming::RemoveIslandsNotUsed(LEVEL_INDUSTRIAL);
+ CStreaming::RemoveIslandsNotUsed(LEVEL_COMMERCIAL);
+ CStreaming::RemoveIslandsNotUsed(LEVEL_SUBURBAN);
CStreaming::LoadAllRequestedModels(false);
currArea = AREA_MAIN_MAP;
CPed::Initialise();
@@ -693,7 +699,7 @@ void CGame::ReInitGameObjectVariables(void)
gPhoneInfo.Initialise();
PUSH_MEMID(MEMID_SCRIPT);
- CTheScripts::Init();
+ bool res = CTheScripts::Init(load);
CGangs::Initialise();
POP_MEMID();
@@ -706,12 +712,14 @@ void CGame::ReInitGameObjectVariables(void)
CStats::Init();
CPickups::Init();
CPacManPickups::Init();
- CGarages::Init();
+ if (!load)
+ CGarages::Init();
CSpecialFX::Init();
CRopes::Init();
CWaterCannons::Init();
CScriptPaths::Init();
CParticle::ReloadConfig();
+ CParticle::SetPixelData();
#ifdef PS2_MENU
if ( !TheMemoryCard.m_bWantToLoad )
@@ -723,12 +731,15 @@ void CGame::ReInitGameObjectVariables(void)
CTheScripts::StartTestScript();
CTheScripts::Process();
TheCamera.Process();
+ CFerry::InitFerrys();
CTrain::InitTrains();
CPlane::InitPlanes();
}
for (int32 i = 0; i < MAX_PADS; i++)
CPad::GetPad(i)->Clear(true);
+
+ return res;
}
void CGame::ReloadIPLs(void)
@@ -759,7 +770,7 @@ void CGame::ShutDownForRestart(void)
CRadar::RemoveRadarSections();
FrontEndMenuManager.UnloadTextures();
CParticleObject::RemoveAllExpireableParticleObjects();
- CWaterCreatures::RemoveAll();
+ //CWaterCreatures::RemoveAll();
CSetPieces::Init();
CPedType::Shutdown();
CSpecialFX::Shutdown();
@@ -799,15 +810,15 @@ void CGame::InitialiseWhenRestarting(void)
RestoreForStartLoad();
}
- ReInitGameObjectVariables();
+ bool bLoadSuccessful = ReInitGameObjectVariables(FrontEndMenuManager.m_bWantToLoad);
if ( FrontEndMenuManager.m_bWantToLoad == true )
{
- FrontEndMenuManager.m_bWantToLoad = false;
InitRadioStationPositionList();
- if ( GenericLoad() == true )
+ if ( bLoadSuccessful == true )
{
DMAudio.ResetTimers(CTimer::GetTimeInMilliseconds());
+ CFerry::InitFerrys();
CTrain::InitTrains();
CPlane::InitPlanes();
}
@@ -823,8 +834,8 @@ void CGame::InitialiseWhenRestarting(void)
ShutDownForRestart();
CTimer::Stop();
CTimer::Initialise();
- FrontEndMenuManager.m_bWantToLoad = false;
- ReInitGameObjectVariables();
+ //FrontEndMenuManager.m_bWantToLoad = false;
+ ReInitGameObjectVariables(false);
currLevel = LEVEL_GENERIC;
CCollision::SortOutCollisionAfterLoad();
}
@@ -833,6 +844,7 @@ void CGame::InitialiseWhenRestarting(void)
#endif
}
+ FrontEndMenuManager.m_bWantToLoad = true;
CTimer::Update();
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
@@ -843,6 +855,20 @@ void CGame::InitialiseWhenRestarting(void)
void CGame::Process(void)
{
+ if (FrontEndMenuManager.m_bWantToLoad) {
+ CTheScripts::StartTestScript();
+ CTheScripts::Process();
+ TheCamera.Process();
+ CStreaming::LoadScene(TheCamera.GetPosition());
+ //CGame::GenerateTempPedAtStartOfNetworkGame();
+ if (!CStreaming::HasModelLoaded(MI_PLAYER)){
+ CStreaming::RequestSpecialModel(MI_PLAYER, "player", STREAMFLAGS_DEPENDENCY | STREAMFLAGS_DONT_REMOVE);
+ CStreaming::LoadAllRequestedModels(false);
+ }
+ TheCamera.Process();
+ CStreaming::LoadScene(TheCamera.GetPosition());
+ FrontEndMenuManager.m_bWantToLoad = false;
+ }
CPad::UpdatePads();
#ifdef USE_CUSTOM_ALLOCATOR
ProcessTidyUpMemory();
@@ -864,9 +890,9 @@ void CGame::Process(void)
gameProcessPirateCheck = 2;
}
#endif
- uint32 startTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
+ //uint32 startTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
CStreaming::Update();
- uint32 processTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond() - startTime;
+ //uint32 processTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond() - startTime;
CWindModifiers::Number = 0;
if (!CTimer::GetIsPaused())
{
@@ -891,6 +917,7 @@ void CGame::Process(void)
CCollision::Update();
CScriptPaths::Update();
+ CFerry::UpdateFerrys();
CTrain::UpdateTrains();
CPlane::UpdatePlanes();
CHeli::UpdateHelis();
@@ -905,26 +932,20 @@ void CGame::Process(void)
CEventList::Update();
CParticle::Update();
gFireManager.Update();
-
- // Otherwise even on 30 fps most probably you won't see any peds around Ocean View Hospital
-#if defined FIX_BUGS && !defined SQUEEZE_PERFORMANCE
- if (processTime > 2) {
-#else
- if (processTime >= 2) {
-#endif
- CPopulation::Update(false);
- } else {
- uint32 startTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
+ //if (processTime >= 2) {
+ // CPopulation::Update(false);
+ //} else {
+ // uint32 startTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
CPopulation::Update(true);
- processTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond() - startTime;
- }
+ // processTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond() - startTime;
+ //}
CWeapon::UpdateWeapons();
if (!CCutsceneMgr::IsRunning())
CTheCarGenerators::Process();
if (!CReplay::IsPlayingBack())
CCranes::UpdateCranes();
CClouds::Update();
- CMovingThings::Update();
+ //CMovingThings::Update(); // TODO
CWaterCannons::Update();
CUserDisplay::Process();
CReplay::Update();
@@ -955,7 +976,7 @@ void CGame::Process(void)
if (!CReplay::IsPlayingBack())
{
PUSH_MEMID(MEMID_CARS);
- if (processTime < 2)
+ //if (processTime < 2)
CCarCtrl::GenerateRandomCars();
CRoadBlocks::GenerateRoadBlocks();
CCarCtrl::RemoveDistantCars();
diff --git a/src/core/Game.h b/src/core/Game.h
index 4052eb00..e6016888 100644
--- a/src/core/Game.h
+++ b/src/core/Game.h
@@ -3,8 +3,10 @@
enum eLevelName {
LEVEL_IGNORE = -1, // beware, this is only used in CPhysical's m_nZoneLevel
LEVEL_GENERIC = 0,
- LEVEL_BEACH,
- LEVEL_MAINLAND,
+ LEVEL_INDUSTRIAL,
+ LEVEL_COMMERCIAL,
+ LEVEL_SUBURBAN,
+ LEVEL_UNDERGROUND,
NUM_LEVELS
};
@@ -60,7 +62,7 @@ public:
static void FinalShutdown(void);
static bool Initialise(const char *datFile);
static bool ShutDown(void);
- static void ReInitGameObjectVariables(void);
+ static bool ReInitGameObjectVariables(bool);
static void ReloadIPLs(void);
static void ShutDownForRestart(void);
static void InitialiseWhenRestarting(void);
@@ -78,4 +80,4 @@ public:
static void ProcessTidyUpMemory(void);
};
-inline bool IsAreaVisible(int area) { return area == CGame::currArea || area == AREA_EVERYWHERE; }
+inline bool IsAreaVisible(int area) { return true; }
diff --git a/src/core/General.h b/src/core/General.h
index c17d916d..62613445 100644
--- a/src/core/General.h
+++ b/src/core/General.h
@@ -6,36 +6,10 @@ class CGeneral
{
public:
static float GetATanOfXY(float x, float y){
- if(x == 0.0f && y == 0.0f)
- return 0.0f;
- float xabs = Abs(x);
- float yabs = Abs(y);
-
- if(xabs < yabs){
- if(y > 0.0f){
- if(x > 0.0f)
- return 0.5f*PI - Atan2(x / y, 1.0f);
- else
- return 0.5f*PI + Atan2(-x / y, 1.0f);
- }else{
- if(x > 0.0f)
- return 1.5f*PI + Atan2(x / -y, 1.0f);
- else
- return 1.5f*PI - Atan2(-x / -y, 1.0f);
- }
- }else{
- if(y > 0.0f){
- if(x > 0.0f)
- return Atan2(y / x, 1.0f);
- else
- return PI - Atan2(y / -x, 1.0f);
- }else{
- if(x > 0.0f)
- return 2.0f*PI - Atan2(-y / x, 1.0f);
- else
- return PI + Atan2(-y / -x, 1.0f);
- }
- }
+ float arc = atan2f(y, x);
+ if(arc < 0.0f)
+ arc += TWOPI;
+ return arc;
}
static float LimitAngle(float angle)
diff --git a/src/core/IniFile.cpp b/src/core/IniFile.cpp
index 5d343ec9..cf7a7f0c 100644
--- a/src/core/IniFile.cpp
+++ b/src/core/IniFile.cpp
@@ -8,7 +8,12 @@
#include "Population.h"
float CIniFile::PedNumberMultiplier = 0.6f;
-float CIniFile::CarNumberMultiplier = 0.6f;
+float CIniFile::CarNumberMultiplier =
+#ifdef GTA_PSP
+ 0.7f;
+#else
+ 0.8f;
+#endif
void CIniFile::LoadIniFile()
{
diff --git a/src/core/IniFile.h b/src/core/IniFile.h
index dcaed980..f23f94b6 100644
--- a/src/core/IniFile.h
+++ b/src/core/IniFile.h
@@ -2,7 +2,7 @@
#define DEFAULT_MAX_NUMBER_OF_PEDS 25.0f
#define DEFAULT_MAX_NUMBER_OF_PEDS_INTERIOR 40.0f
-#define DEFAULT_MAX_NUMBER_OF_CARS 12.0f
+#define DEFAULT_MAX_NUMBER_OF_CARS 30.0f
class CIniFile
{
diff --git a/src/core/KeyGen.cpp b/src/core/KeyGen.cpp
new file mode 100644
index 00000000..c95ab4b1
--- /dev/null
+++ b/src/core/KeyGen.cpp
@@ -0,0 +1,106 @@
+#include "common.h"
+#include "KeyGen.h"
+#include <ctype.h>
+
+uint32 CKeyGen::keyTable[256] =
+{
+ 0, 0x77073096, 0xEE0E612C, 0x990951BA,
+ 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
+ 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
+ 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
+ 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+ 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
+ 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
+ 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
+ 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
+ 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+ 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
+ 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
+ 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
+ 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
+ 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+ 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
+ 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
+ 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
+ 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
+ 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+ 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
+ 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
+ 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
+ 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
+ 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+ 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
+ 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
+ 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
+ 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
+ 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+ 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
+ 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
+ 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
+ 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
+ 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+ 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
+ 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
+ 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
+ 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
+ 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+ 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
+ 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
+ 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
+ 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
+ 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+ 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
+ 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
+ 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
+ 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
+ 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+ 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
+ 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
+ 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
+ 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
+ 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+ 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
+ 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
+ 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
+ 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
+ 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+ 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
+ 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
+ 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
+ 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
+};
+
+uint32
+CKeyGen::GetKey(const char *str, int size)
+{
+ uint32 key = 0xffffffff;
+ for (int i = 0; i < size; i++)
+ key = keyTable[(key ^ str[i]) & 0xFF] ^ (key >> 8);
+ return key;
+}
+
+uint32
+CKeyGen::GetKey(const char *str)
+{
+ uint32 key = 0xffffffff;
+ while(*str != '\0')
+ key = keyTable[(key ^ *(str++)) & 0xFF] ^ (key >> 8);
+ return key;
+}
+
+uint32
+CKeyGen::GetUppercaseKey(const char *str)
+{
+ uint32 key = 0xffffffff;
+ while (*str != '\0')
+ key = keyTable[(key ^ toupper(*(str++))) & 0xFF] ^ (key >> 8);
+ return key;
+}
+
+uint32
+CKeyGen::AppendStringToKey(uint32 key, const char *str)
+{
+ while (*str != '\0')
+ key = keyTable[(key ^ *(str++)) & 0xFF] ^ (key >> 8);
+ return key;
+} \ No newline at end of file
diff --git a/src/core/KeyGen.h b/src/core/KeyGen.h
new file mode 100644
index 00000000..129859ce
--- /dev/null
+++ b/src/core/KeyGen.h
@@ -0,0 +1,11 @@
+#pragma once
+
+class CKeyGen
+{
+ static uint32 keyTable[256];
+public:
+ static uint32 GetKey(const char *str, int size);
+ static uint32 GetKey(const char *str);
+ static uint32 GetUppercaseKey(const char *str);
+ static uint32 AppendStringToKey(uint32 key, const char *str);
+}; \ No newline at end of file
diff --git a/src/core/Leeds.cpp b/src/core/Leeds.cpp
new file mode 100644
index 00000000..cda50605
--- /dev/null
+++ b/src/core/Leeds.cpp
@@ -0,0 +1,14 @@
+#include "common.h"
+#include "Leeds.h"
+
+void LoadResource(RpAtomic *atomic) {}
+void LoadResource(RpClump *clump) {}
+
+
+void SaveResource(RwTexture *tex, base::cRelocatableChunkWriter &writer) {}
+void SaveResource(RwTexDictionary *txd, base::cRelocatableChunkWriter &writer) {}
+void SaveResource(RpMaterial *mat, base::cRelocatableChunkWriter &writer) {}
+void SaveResource(RpMaterialList *matlist, base::cRelocatableChunkWriter &writer) {}
+void SaveResource(RpGeometry *geo, base::cRelocatableChunkWriter &writer) {}
+void SaveResource(RpAtomic *atomic, base::cRelocatableChunkWriter &writer) {}
+void SaveResource(RpClump *clump, base::cRelocatableChunkWriter &writer) {}
diff --git a/src/core/Leeds.h b/src/core/Leeds.h
new file mode 100644
index 00000000..bf71d7e0
--- /dev/null
+++ b/src/core/Leeds.h
@@ -0,0 +1,36 @@
+#pragma once
+
+/*
+PatchElementModelInfo(RslElement *,void *)
+ChunkName(char const*)
+DestroyAndFreeResourceImage(void)
+WriteOrder(char const*)
+UnpatchTextures(void)
+IsChunked(int)
+SaveResourceImage(void)
+LoadResourceImage(void)
+SaveResource(RslNode *,base::cRelocatableChunkWriter &)
+SaveResource(RslTAnimTree *,base::cRelocatableChunkWriter &)
+SaveResource(RslSkin *,base::cRelocatableChunkWriter &)
+SaveResource(CAnimBlendTree *,base::cRelocatableChunkWriter &)
+PatchElementTextures(RslElement *)
+PatchElementGroupTextures(RslElementGroup *)
+*/
+
+void LoadResource(RpAtomic *atomic);
+void LoadResource(RpClump *clump);
+
+/*
+cRelocatableChunkWriterGTA::Save(char const*,uint,uint,bool)
+cRelocatableChunkGTA::cRelocatableChunkGTA(char const*,uint,uint,bool)
+SaveAnimBlock(int)
+SaveModel(int,bool)
+*/
+
+void SaveResource(RwTexture *tex, base::cRelocatableChunkWriter &writer);
+void SaveResource(RwTexDictionary *txd, base::cRelocatableChunkWriter &writer);
+void SaveResource(RpMaterial *mat, base::cRelocatableChunkWriter &writer);
+void SaveResource(RpMaterialList *matlist, base::cRelocatableChunkWriter &writer);
+void SaveResource(RpGeometry *geo, base::cRelocatableChunkWriter &writer);
+void SaveResource(RpAtomic *atomic, base::cRelocatableChunkWriter &writer);
+void SaveResource(RpClump *clump, base::cRelocatableChunkWriter &writer);
diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp
index e75510e5..86c218fa 100644
--- a/src/core/Pad.cpp
+++ b/src/core/Pad.cpp
@@ -88,6 +88,7 @@ extern bool gbFastTime;
extern bool gGravityCheat;
#endif
+/* LCS: removed
void SpecialCarCheats()
{
if ( !CVehicle::bCheat9 )
@@ -136,6 +137,7 @@ void SpecialCarCheats()
CPad::bHasPlayerCheated = true;
}
}
+*/
void PickUpChicksCheat()
{
@@ -361,7 +363,7 @@ void ChangePlayerCheat()
do
{
do {
- modelId = CGeneral::GetRandomNumberInRange(0, MI_PGA);
+ modelId = CGeneral::GetRandomNumberInRange(0, MI_GANG18);
anotherModelId = modelId+1;
} while (!CModelInfo::GetModelInfo(anotherModelId));
} while (anotherModelId >= MI_SPECIAL01 && anotherModelId <= MI_SPECIAL04 || modelId == MI_TAXI_D);
@@ -580,16 +582,18 @@ void SuicideCheat(void) {
}
void DoChicksWithGunsCheat(void) {
+/* // broken in LCS
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER));
CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER));
CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER));
CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER));
CStreaming::RemoveCurrentZonesModels();
- CGangs::SetGangPedModels(GANG_PLAYER, MI_HFYBE, MI_WFYBE);
+ CGangs::SetGangPedModels(GANG_PLAYER, MI_CAS_WOM, MI_HOS_WOM);
CGangs::SetGangWeapons(GANG_PLAYER, WEAPONTYPE_M4, WEAPONTYPE_M4);
CStats::CheatedCount += 1000;
CPad::bHasPlayerCheated = true;
+*/
}
//////////////////////////////////////////////////////////////////////////
@@ -1411,6 +1415,8 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
BlackCarsCheat();
}
+/*
+ // LCS: removed for now
// "TRAVELINSTYLE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HQ`U`iLSFaNZ[")) {
KeyBoardCheatString[0] = ' ';
@@ -1506,6 +1512,7 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igdiaz");
}
+*/
// DEEPFRIEDMARSBARS
else if (!Cheat_strncmp(KeyBoardCheatString, "VWHC`mDTEPVZMpRK")) {
KeyBoardCheatString[0] = ' ';
@@ -1521,11 +1528,13 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
BackToTheFuture();
}
+/* LCS: removed
// LOADSOFLITTLETHINGS
else if (!Cheat_strncmp(KeyBoardCheatString, "VLUJUoHSU_VTMo`J]bV")) {
KeyBoardCheatString[0] = ' ';
SpecialCarCheats();
}
+*/
// HOPINGIRL
else if (!Cheat_strncmp(KeyBoardCheatString, "OWPH[dSVI")) {
KeyBoardCheatString[0] = ' ';
diff --git a/src/core/Pad.h b/src/core/Pad.h
index f141ed6c..cc0fa9d1 100644
--- a/src/core/Pad.h
+++ b/src/core/Pad.h
@@ -140,7 +140,7 @@ class CPad
public:
enum
{
- HORNHISTORY_SIZE = 5,
+ HORNHISTORY_SIZE = 8,
DRUNK_STEERING_BUFFER_SIZE = 10,
};
CControllerState NewState;
@@ -164,6 +164,8 @@ public:
int32 LastTimeTouched;
int32 AverageWeapon;
int32 AverageEntries;
+ float unk_B4;
+ float unk_B8;
#ifdef DETECT_PAD_INPUT_SWITCH
static bool IsAffectedByController;
@@ -275,6 +277,16 @@ public:
uint32 InputHowLongAgo(void);
void SetDrunkInputDelay(int32 delay) { DrunkDrivingBufferUsed = delay; }
+ // TODO(LCS): properly, this is just to get some estimation for script
+ int16 GetOddJobTrigger() { return GetRightShockJustDown(); }
+ int16 GuiLeft() { return GetAnaloguePadLeft() || GetDPadLeftJustDown(); }
+ int16 GuiRight() { return GetAnaloguePadRight() || GetDPadRightJustDown(); }
+ int16 GuiUp() { return GetAnaloguePadUp() || GetDPadUpJustDown(); }
+ int16 GuiDown() { return GetAnaloguePadDown() || GetDPadDownJustDown(); }
+ int16 GuiSelect() { return GetCrossJustDown(); }
+ int16 GuiBack() { return GetTriangleJustDown(); }
+ int16 GetSkipCutscene() { return GetCrossJustDown(); }
+
#ifdef XINPUT
static int XInputJoy1;
static int XInputJoy2;
diff --git a/src/core/PlayerInfo.cpp b/src/core/PlayerInfo.cpp
index 36d05b82..2e3372f1 100644
--- a/src/core/PlayerInfo.cpp
+++ b/src/core/PlayerInfo.cpp
@@ -418,8 +418,10 @@ CPlayerInfo::Process(void)
CTimer::Update();
}
m_bInRemoteMode = false;
- CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle->bRemoveFromWorld = true;
- CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil;
+ if (CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle) {
+ CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle->bRemoveFromWorld = true;
+ CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil;
+ }
if (FindPlayerVehicle()) {
FindPlayerVehicle()->SetStatus(STATUS_PLAYER);
}
diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp
index 4e15559d..b93b7d02 100644
--- a/src/core/Radar.cpp
+++ b/src/core/Radar.cpp
@@ -57,7 +57,7 @@ CSprite2d CRadar::SpraySprite;
CSprite2d CRadar::TShirtSprite;
CSprite2d CRadar::TommySprite;
CSprite2d CRadar::PhoneSprite;
-CSprite2d CRadar::RadioWildstyleSprite;
+/*CSprite2d CRadar::RadioWildstyleSprite;
CSprite2d CRadar::RadioFlashSprite;
CSprite2d CRadar::RadioKChatSprite;
CSprite2d CRadar::RadioFeverSprite;
@@ -65,10 +65,39 @@ CSprite2d CRadar::RadioVRockSprite;
CSprite2d CRadar::RadioVCPRSprite;
CSprite2d CRadar::RadioEspantosoSprite;
CSprite2d CRadar::RadioEmotionSprite;
-CSprite2d CRadar::RadioWaveSprite;
-#ifdef MAP_ENHANCEMENTS
-CSprite2d CRadar::WaypointSprite;
-#endif
+CSprite2d CRadar::RadioWaveSprite;*/
+CSprite2d CRadar::EightBallSprite;
+CSprite2d CRadar::BurnerSprite;
+CSprite2d CRadar::CiprianiSprite;
+CSprite2d CRadar::DonaldSprite;
+CSprite2d CRadar::JosephSprite;
+CSprite2d CRadar::LeoneSprite;
+CSprite2d CRadar::MariaSprite;
+CSprite2d CRadar::McraySprite;
+CSprite2d CRadar::ToshikoSprite;
+CSprite2d CRadar::VincenzoSprite;
+CSprite2d CRadar::BombSprite;
+CSprite2d CRadar::ClothesShopSprite;
+CSprite2d CRadar::PropertyRedSprite;
+CSprite2d CRadar::PhilCassidySprite;
+CSprite2d CRadar::PowerupSprite;
+CSprite2d CRadar::MPBase;
+CSprite2d CRadar::MPCheckPoint;
+CSprite2d CRadar::MPPlayer;
+CSprite2d CRadar::MPObjective;
+CSprite2d CRadar::MPCar;
+CSprite2d CRadar::MPTank;
+CSprite2d CRadar::MPCarLockup;
+CSprite2d CRadar::MPTargetPlayer;
+CSprite2d CRadar::MapHereSprite0;
+CSprite2d CRadar::MapHereSprite1;
+CSprite2d CRadar::MapHereSprite2;
+CSprite2d CRadar::MapHereSprite3;
+CSprite2d CRadar::MapHereSprite4;
+CSprite2d CRadar::MapHereSprite5;
+CSprite2d CRadar::MapHereSprite6;
+CSprite2d CRadar::MapHereSprite7;
+CSprite2d CRadar::MapWayPoint;
CSprite2d *CRadar::RadarSprites[RADAR_SPRITE_COUNT] = {
nil,
@@ -102,18 +131,38 @@ CSprite2d *CRadar::RadarSprites[RADAR_SPRITE_COUNT] = {
&TShirtSprite,
&TommySprite,
&PhoneSprite,
- &RadioWildstyleSprite,
- &RadioFlashSprite,
- &RadioKChatSprite,
- &RadioFeverSprite,
- &RadioVRockSprite,
- &RadioVCPRSprite,
- &RadioEspantosoSprite,
- &RadioEmotionSprite,
- &RadioWaveSprite,
-#ifdef MAP_ENHANCEMENTS
- &WaypointSprite,
-#endif
+ &EightBallSprite,
+ &BurnerSprite,
+ &CiprianiSprite,
+ &DonaldSprite,
+ &JosephSprite,
+ &LeoneSprite,
+ &MariaSprite,
+ &McraySprite,
+ &ToshikoSprite,
+ &VincenzoSprite,
+ &BombSprite,
+ &ClothesShopSprite,
+ &PropertyRedSprite,
+ &PhilCassidySprite,
+ &PowerupSprite,
+ &MPBase,
+ &MPCheckPoint,
+ &MPPlayer,
+ &MPObjective,
+ &MPCar,
+ &MPTank,
+ &MPCarLockup,
+ &MPTargetPlayer,
+ &MapHereSprite0,
+ &MapHereSprite1,
+ &MapHereSprite2,
+ &MapHereSprite3,
+ &MapHereSprite4,
+ &MapHereSprite5,
+ &MapHereSprite6,
+ &MapHereSprite7,
+ &MapWayPoint,
};
// Why this doesn't coincide with world coordinates i don't know
@@ -825,9 +874,6 @@ void CRadar::DrawRadarSection(int32 x, int32 y)
void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha)
{
-#ifdef MAP_ENHANCEMENTS
- if(sprite == RADAR_SPRITE_WAYPOINT) alpha = 255;
-#endif
RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha));
if (FrontEndMenuManager.m_bMenuMapActive) {
@@ -945,9 +991,6 @@ const char* gRadarTexNames[] = {
void
CRadar::Initialise()
{
-#ifdef MAP_ENHANCEMENTS
- TargetMarkerId = -1;
-#endif
for (int i = 0; i < NUMRADARBLIPS; i++) {
ms_RadarTrace[i].m_BlipIndex = 1;
SetRadarMarkerState(i, false);
@@ -1087,7 +1130,7 @@ CRadar::LoadTextures()
TShirtSprite.SetTexture("tshirt");
TommySprite.SetTexture("tommy");
PhoneSprite.SetTexture("phone");
- RadioWildstyleSprite.SetTexture("RWildstyle");
+ /*RadioWildstyleSprite.SetTexture("RWildstyle");
RadioFlashSprite.SetTexture("RFlash");
RadioKChatSprite.SetTexture("RKchat");
RadioFeverSprite.SetTexture("RFever");
@@ -1095,44 +1138,39 @@ CRadar::LoadTextures()
RadioVCPRSprite.SetTexture("RVCPR");
RadioEspantosoSprite.SetTexture("REspantoso");
RadioEmotionSprite.SetTexture("REmotion");
- RadioWaveSprite.SetTexture("RWave");
-#ifdef MAP_ENHANCEMENTS
- WaypointSprite.SetTexture("radar_waypoint");
- if(!WaypointSprite.m_pTexture) {
- // create the texture if it's missing in TXD
-#define WAYPOINT_R (255)
-#define WAYPOINT_G (72)
-#define WAYPOINT_B (77)
-
- RwRaster *raster = RwRasterCreate(16, 16, 0, rwRASTERTYPETEXTURE | rwRASTERFORMAT8888);
-
- RwUInt32 *pixels = (RwUInt32 *)RwRasterLock(raster, 0, rwRASTERLOCKWRITE);
- for(int x = 0; x < 16; x++)
- for(int y = 0; y < 16; y++)
- {
- int x2 = x < 8 ? x : 7 - (x & 7);
- int y2 = y < 8 ? y : 7 - (y & 7);
- if ((y2 >= 4 && x2 >= 4) // square in the center is transparent
- || (x2 < 2 && y2 == 0) // two pixels on each side of first/last line are transparent
- || (x2 < 1 && y2 == 1)) // one pixel on each side of second to first/last line is transparent
- pixels[x + y * 16] = 0;
- else if((x2 == 2 && y2 >= 2)|| (y2 == 2 && x2 >= 2) )// colored square inside
-#ifdef RW_GL3
- pixels[x + y * 16] = WAYPOINT_R | (WAYPOINT_G << 8) | (WAYPOINT_B << 16) | (255 << 24);
-#else
- pixels[x + y * 16] = WAYPOINT_B | (WAYPOINT_G << 8) | (WAYPOINT_R << 16) | (255 << 24);
-#endif
- else
- pixels[x + y * 16] = 0xFF000000; // black
- }
- RwRasterUnlock(raster);
- WaypointSprite.m_pTexture = RwTextureCreate(raster);
- RwTextureSetFilterMode(WaypointSprite.m_pTexture, rwFILTERLINEAR);
-#undef WAYPOINT_R
-#undef WAYPOINT_G
-#undef WAYPOINT_B
- }
-#endif
+ RadioWaveSprite.SetTexture("RWave");*/
+ EightBallSprite.SetTexture("radar_8Ball");
+ BurnerSprite.SetTexture("radar_Burner");
+ CiprianiSprite.SetTexture("radar_Cipriani");
+ DonaldSprite.SetTexture("radar_Donald");
+ JosephSprite.SetTexture("radar_Joseph");
+ LeoneSprite.SetTexture("radar_Leone");
+ MariaSprite.SetTexture("radar_Maria");
+ McraySprite.SetTexture("radar_McRay");
+ ToshikoSprite.SetTexture("radar_Toshiko");
+ VincenzoSprite.SetTexture("radar_Vincenzo");
+ BombSprite.SetTexture("radar_Bomb");
+ ClothesShopSprite.SetTexture("radar_cShop");
+ PropertyRedSprite.SetTexture("radar_propertyR");
+ PhilCassidySprite.SetTexture("radar_flag");
+ PowerupSprite.SetTexture("radar_powerup");
+ MPBase.SetTexture("mp_base");
+ MPCheckPoint.SetTexture("radar_mp_checkpoint");
+ MPPlayer.SetTexture("mp_player");
+ MPObjective.SetTexture("mp_objective");
+ MPCar.SetTexture("mp_car");
+ MPTank.SetTexture("mp_tank");
+ MPCarLockup.SetTexture("mp_carlockup");
+ MPTargetPlayer.SetTexture("mp_targetplayer");
+ MapHereSprite0.SetTexture("radar_arrow");
+ MapHereSprite1.SetTexture("radar_arrow_01");
+ MapHereSprite2.SetTexture("radar_arrow_02");
+ MapHereSprite3.SetTexture("radar_arrow_03");
+ MapHereSprite4.SetTexture("radar_arrow_04");
+ MapHereSprite5.SetTexture("radar_arrow_05");
+ MapHereSprite6.SetTexture("radar_arrow_06");
+ MapHereSprite7.SetTexture("radar_arrow_07");
+ MapWayPoint.SetTexture("radar_player_target");
CTxdStore::PopCurrentTxd();
}
@@ -1232,6 +1270,7 @@ void CRadar::SetRadarMarkerState(int32 counter, bool flag)
}
void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) {
+ /*
float f1 = radius * 1.4f;
float f2 = radius * 0.5f;
CVector p1, p2;
@@ -1251,6 +1290,7 @@ void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) {
p1 = pos - TheCamera.GetRight()*f1;
p2 = pos - TheCamera.GetRight()*f2;
CTheScripts::ScriptDebugLine3D(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, color, color);
+ */
}
void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha)
@@ -1318,7 +1358,39 @@ void CRadar::Shutdown()
TShirtSprite.Delete();
TommySprite.Delete();
PhoneSprite.Delete();
- RadioWildstyleSprite.Delete();
+ EightBallSprite.Delete();
+ BurnerSprite.Delete();
+ CiprianiSprite.Delete();
+ DonaldSprite.Delete();
+ JosephSprite.Delete();
+ LeoneSprite.Delete();
+ MariaSprite.Delete();
+ McraySprite.Delete();
+ ToshikoSprite.Delete();
+ VincenzoSprite.Delete();
+ BombSprite.Delete();
+ ClothesShopSprite.Delete();
+ PropertyRedSprite.Delete();
+ PhilCassidySprite.Delete();
+ PowerupSprite.Delete();
+ MPBase.Delete();
+ MPCheckPoint.Delete();
+ MPPlayer.Delete();
+ MPObjective.Delete();
+ MPCar.Delete();
+ MPTank.Delete();
+ MPCarLockup.Delete();
+ MPTargetPlayer.Delete();
+ MapHereSprite0.Delete();
+ MapHereSprite1.Delete();
+ MapHereSprite2.Delete();
+ MapHereSprite3.Delete();
+ MapHereSprite4.Delete();
+ MapHereSprite5.Delete();
+ MapHereSprite6.Delete();
+ MapHereSprite7.Delete();
+ MapWayPoint.Delete();
+ /*RadioWildstyleSprite.Delete();
RadioFlashSprite.Delete();
RadioKChatSprite.Delete();
RadioFeverSprite.Delete();
@@ -1326,10 +1398,7 @@ void CRadar::Shutdown()
RadioVCPRSprite.Delete();
RadioEspantosoSprite.Delete();
RadioEmotionSprite.Delete();
- RadioWaveSprite.Delete();
-#ifdef MAP_ENHANCEMENTS
- WaypointSprite.Delete();
-#endif
+ RadioWaveSprite.Delete();*/
RemoveRadarSections();
}
@@ -1511,7 +1580,7 @@ CRadar::ToggleTargetMarker(float x, float y)
ms_RadarTrace[nextBlip].m_nEntityHandle = 0;
ms_RadarTrace[nextBlip].m_wScale = 5;
ms_RadarTrace[nextBlip].m_eBlipDisplay = BLIP_DISPLAY_BLIP_ONLY;
- ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_WAYPOINT;
+ ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE;
TargetMarkerId = CRadar::GetNewUniqueBlipIndex(nextBlip);
} else {
ClearBlip(TargetMarkerId);
@@ -1772,7 +1841,7 @@ CRadar::DrawLegend(int32 x, int32 y, int32 sprite)
case RADAR_SPRITE_PHONE:
text = TheText.Get("LG_25");
break;
- case RADAR_SPRITE_RADIO_WILDSTYLE:
+ /*case RADAR_SPRITE_RADIO_WILDSTYLE:
text = TheText.Get("LG_26");
break;
case RADAR_SPRITE_RADIO_FLASH:
@@ -1798,13 +1867,9 @@ CRadar::DrawLegend(int32 x, int32 y, int32 sprite)
break;
case RADAR_SPRITE_RADIO_WAVE:
text = TheText.Get("LG_34");
- break;
-#ifdef MAP_ENHANCEMENTS
- case RADAR_SPRITE_WAYPOINT:
- text = TheText.Get("LG_38");
- break;
-#endif
+ break;*/
default:
+ text = TheText.Get("LG_34"); // tmp hack
break;
}
CFont::PrintString(SCREEN_SCALE_X(20.f) + x, SCREEN_SCALE_Y(3.0f) + y, text);
diff --git a/src/core/Radar.h b/src/core/Radar.h
index afb37fe4..dbfcfd0d 100644
--- a/src/core/Radar.h
+++ b/src/core/Radar.h
@@ -17,9 +17,9 @@
#define OBJECTBLIP_MARKER_COLOR_B 242
#define OBJECTBLIP_MARKER_COLOR_A 255
-#define COORDBLIP_MARKER_COLOR_R 252
-#define COORDBLIP_MARKER_COLOR_G 138
-#define COORDBLIP_MARKER_COLOR_B 242
+#define COORDBLIP_MARKER_COLOR_R 255
+#define COORDBLIP_MARKER_COLOR_G 255
+#define COORDBLIP_MARKER_COLOR_B 128
#define COORDBLIP_MARKER_COLOR_A 228
#define NUM_MAP_LEGENDS 75
@@ -84,18 +84,38 @@ enum eRadarSprite
RADAR_SPRITE_TSHIRT,
RADAR_SPRITE_TOMMY,
RADAR_SPRITE_PHONE,
- RADAR_SPRITE_RADIO_WILDSTYLE,
- RADAR_SPRITE_RADIO_FLASH,
- RADAR_SPRITE_RADIO_KCHAT,
- RADAR_SPRITE_RADIO_FEVER,
- RADAR_SPRITE_RADIO_VROCK,
- RADAR_SPRITE_RADIO_VCPR,
- RADAR_SPRITE_RADIO_ESPANTOSO,
- RADAR_SPRITE_RADIO_EMOTION,
- RADAR_SPRITE_RADIO_WAVE,
-#ifdef MAP_ENHANCEMENTS
- RADAR_SPRITE_WAYPOINT,
-#endif
+ RADAR_SPRITE_EIGHTBALL,
+ RADAR_SPRITE_BURNER,
+ RADAR_SPRITE_CIPRIANI,
+ RADAR_SPRITE_DONALD,
+ RADAR_SPRITE_JOSEPH,
+ RADAR_SPRITE_LEONE,
+ RADAR_SPRITE_MARIA,
+ RADAR_SPRITE_MCRAY,
+ RADAR_SPRITE_TOSHIKO,
+ RADAR_SPRITE_VINCENZO, // tmp
+ RADAR_SPRITE_BOMB,
+ RADAR_SPRITE_CLOTHES,
+ RADAR_SPRITE_PROPERTY_RED,
+ RADAR_SPRITE_PHIL_CASSIDY,
+ RADAR_SPRITE_POWERUP,
+ RADAR_SPRITE_MPBASE,
+ RADAR_SPRITE_MPCHECKPOINT,
+ RADAR_SPRITE_MPPLAYER,
+ RADAR_SPRITE_MPOBJECTIVE,
+ RADAR_SPRITE_MPCAR,
+ RADAR_SPRITE_MPTANK,
+ RADAR_SPRITE_MPCARLOCKUP,
+ RADAR_SPRITE_MPTARGETPLAYER,
+ RADAR_SPRITE_MAPHERE0,
+ RADAR_SPRITE_MAPHERE1,
+ RADAR_SPRITE_MAPHERE2,
+ RADAR_SPRITE_MAPHERE3,
+ RADAR_SPRITE_MAPHERE4,
+ RADAR_SPRITE_MAPHERE5,
+ RADAR_SPRITE_MAPHERE6,
+ RADAR_SPRITE_MAPHERE7,
+ RADAR_SPRITE_MAPWAYPOINT,
RADAR_SPRITE_COUNT
};
@@ -218,7 +238,7 @@ public:
static CSprite2d TShirtSprite;
static CSprite2d TommySprite;
static CSprite2d PhoneSprite;
- static CSprite2d RadioWildstyleSprite;
+/* static CSprite2d RadioWildstyleSprite;
static CSprite2d RadioFlashSprite;
static CSprite2d RadioKChatSprite;
static CSprite2d RadioFeverSprite;
@@ -226,7 +246,39 @@ public:
static CSprite2d RadioVCPRSprite;
static CSprite2d RadioEspantosoSprite;
static CSprite2d RadioEmotionSprite;
- static CSprite2d RadioWaveSprite;
+ static CSprite2d RadioWaveSprite;*/
+ static CSprite2d EightBallSprite;
+ static CSprite2d BurnerSprite;
+ static CSprite2d CiprianiSprite;
+ static CSprite2d DonaldSprite;
+ static CSprite2d JosephSprite;
+ static CSprite2d LeoneSprite;
+ static CSprite2d MariaSprite;
+ static CSprite2d McraySprite;
+ static CSprite2d ToshikoSprite;
+ static CSprite2d VincenzoSprite;
+ static CSprite2d BombSprite;
+ static CSprite2d ClothesShopSprite;
+ static CSprite2d PropertyRedSprite;
+ static CSprite2d PhilCassidySprite;
+ static CSprite2d PowerupSprite;
+ static CSprite2d MPBase;
+ static CSprite2d MPCheckPoint;
+ static CSprite2d MPPlayer;
+ static CSprite2d MPObjective;
+ static CSprite2d MPCar;
+ static CSprite2d MPTank;
+ static CSprite2d MPCarLockup;
+ static CSprite2d MPTargetPlayer;
+ static CSprite2d MapHereSprite0;
+ static CSprite2d MapHereSprite1;
+ static CSprite2d MapHereSprite2;
+ static CSprite2d MapHereSprite3;
+ static CSprite2d MapHereSprite4;
+ static CSprite2d MapHereSprite5;
+ static CSprite2d MapHereSprite6;
+ static CSprite2d MapHereSprite7;
+ static CSprite2d MapWayPoint;
static CSprite2d *RadarSprites[RADAR_SPRITE_COUNT];
static float cachedCos;
static float cachedSin;
@@ -236,7 +288,6 @@ public:
static int16 MapLegendCounter;
#ifdef MAP_ENHANCEMENTS
- static CSprite2d WaypointSprite;
static int TargetMarkerId;
static CVector TargetMarkerPos;
#endif
diff --git a/src/core/Streaming.cpp b/src/core/Streaming.cpp
index 6d980e18..9b8f4a66 100644
--- a/src/core/Streaming.cpp
+++ b/src/core/Streaming.cpp
@@ -37,6 +37,7 @@
#include "Font.h"
#include "Frontend.h"
#include "VarConsole.h"
+#include "KeyGen.h"
bool CStreaming::ms_disableStreaming;
bool CStreaming::ms_bLoadingBigModel;
@@ -76,10 +77,16 @@ size_t CStreaming::ms_memoryAvailable;
int32 desiredNumVehiclesLoaded = 12;
-CEntity *pIslandLODmainlandEntity;
-CEntity *pIslandLODbeachEntity;
-int32 islandLODmainland;
-int32 islandLODbeach;
+CEntity *pIslandLODindustEntity;
+CEntity *pIslandLODcomIndEntity;
+CEntity *pIslandLODcomSubEntity;
+CEntity *pIslandLODsubIndEntity;
+CEntity *pIslandLODsubComEntity;
+int32 islandLODindust;
+int32 islandLODcomInd;
+int32 islandLODcomSub;
+int32 islandLODsubInd;
+int32 islandLODsubCom;
#ifndef MASTER
bool gbPrintStats;
@@ -173,7 +180,7 @@ CStreaming::Init2(void)
// init stream info, mark things that are already loaded
- for(i = 0; i < MODELINFOSIZE; i++){
+ for(i = 0; i < CModelInfo::GetNumModelInfos(); i++){
CBaseModelInfo *mi = CModelInfo::GetModelInfo(i);
if(mi && mi->GetRwObject()){
ms_aInfoForModel[i].m_loadState = STREAMSTATE_LOADED;
@@ -242,12 +249,21 @@ CStreaming::Init2(void)
// find island LODs
- pIslandLODmainlandEntity = nil;
- pIslandLODbeachEntity = nil;
- islandLODmainland = -1;
- islandLODbeach = -1;
- CModelInfo::GetModelInfo("IslandLODmainland", &islandLODmainland);
- CModelInfo::GetModelInfo("IslandLODbeach", &islandLODbeach);
+ pIslandLODindustEntity = nil;
+ pIslandLODcomIndEntity = nil;
+ pIslandLODcomSubEntity = nil;
+ pIslandLODsubIndEntity = nil;
+ pIslandLODsubComEntity = nil;
+ islandLODindust = -1;
+ islandLODcomInd = -1;
+ islandLODcomSub = -1;
+ islandLODsubInd = -1;
+ islandLODsubCom = -1;
+ CModelInfo::GetModelInfo("IslandLODInd", &islandLODindust);
+ CModelInfo::GetModelInfo("IslandLODcomIND", &islandLODcomInd);
+ CModelInfo::GetModelInfo("IslandLODcomSUB", &islandLODcomSub);
+ CModelInfo::GetModelInfo("IslandLODsubIND", &islandLODsubInd);
+ CModelInfo::GetModelInfo("IslandLODsubCOM", &islandLODsubCom);
#ifndef MASTER
VarConsole.Add("Streaming Debug", &gbPrintStats, true);
@@ -919,65 +935,61 @@ CStreaming::RequestIslands(eLevelName level)
{
ISLAND_LOADING_ISNT(HIGH)
switch(level){
- case LEVEL_MAINLAND:
- if(islandLODbeach != -1)
- RequestModel(islandLODbeach, BIGBUILDINGFLAGS);
+ case LEVEL_INDUSTRIAL:
+ RequestModel(islandLODcomInd, BIGBUILDINGFLAGS);
+ RequestModel(islandLODsubInd, BIGBUILDINGFLAGS);
break;
- case LEVEL_BEACH:
- if(islandLODmainland != -1)
- RequestModel(islandLODmainland, BIGBUILDINGFLAGS);
+ case LEVEL_COMMERCIAL:
+ RequestModel(islandLODindust, BIGBUILDINGFLAGS);
+ RequestModel(islandLODsubCom, BIGBUILDINGFLAGS);
+ break;
+ case LEVEL_SUBURBAN:
+ RequestModel(islandLODindust, BIGBUILDINGFLAGS);
+ RequestModel(islandLODcomSub, BIGBUILDINGFLAGS);
break;
default: break;
}
}
-static char *IGnames[] = {
- "player",
- "player2",
- "player3",
- "player4",
- "player5",
- "player6",
- "player7",
- "player8",
- "player9",
- "play10",
- "play11",
- "igken",
- "igcandy",
- "igsonny",
- "igbuddy",
- "igjezz",
- "ighlary",
- "igphil",
- "igmerc",
- "igdick",
- "igdiaz",
+const char *csPlayerNames[] =
+{
+ "csplr",
+ "csplr2",
+ "csplr3",
+ "csplr4",
+ "csplr5",
+ "csplr6",
+ "csplr7",
+ "csplr8",
+ "csplr9",
+ "csplr10",
+ "csplr11",
+ "csplr12",
+ "csplr13",
+ "csplr14",
+ "csplr15",
+ "csplr16",
""
};
-static char *CSnames[] = {
- "csplay",
- "csplay2",
- "csplay3",
- "csplay4",
- "csplay5",
- "csplay6",
- "csplay7",
- "csplay8",
- "csplay9",
- "csplay10",
- "csplay11",
- "csken",
- "cscandy",
- "cssonny",
- "csbuddy",
- "csjezz",
- "cshlary",
- "csphil",
- "csmerc",
- "csdick",
- "csdiaz",
+const char* playerNames[] =
+{
+ "plr",
+ "plr2",
+ "plr3",
+ "plr4",
+ "plr5",
+ "plr6",
+ "plr7",
+ "plr8",
+ "plr9",
+ "plr10",
+ "plr11",
+ "plr12",
+ "plr13",
+ "plr14",
+ "plr15",
+ "plr16",
""
};
@@ -991,15 +1003,17 @@ CStreaming::RequestSpecialModel(int32 modelId, const char *modelName, int32 flag
int i, n;
mi = CModelInfo::GetModelInfo(modelId);
- if(strncasecmp("CSPlay", modelName, 6) == 0){
- char *curname = CModelInfo::GetModelInfo(MI_PLAYER)->GetModelName();
- for(int i = 0; CSnames[i][0]; i++){
- if(strcasecmp(curname, IGnames[i]) == 0){
- modelName = CSnames[i];
+ if (CKeyGen::GetUppercaseKey(modelName) == CKeyGen::GetUppercaseKey("cstoni_a")) {
+ i = 0;
+ while (csPlayerNames[i][0] != '\0') {
+ if (CModelInfo::GetModelInfo(0)->GetNameHashKey() == CKeyGen::GetUppercaseKey(playerNames[i])) {
+ modelName = csPlayerNames[i];
break;
}
+ i++;
}
}
+
if(!CGeneral::faststrcmp(mi->GetModelName(), modelName)){
// Already have the correct name, just request it
RequestModel(modelId, flags);
@@ -1070,6 +1084,12 @@ CStreaming::SetMissionDoesntRequireSpecialChar(int32 id)
}
void
+CStreaming::SetAmbientMissionDoesntRequireSpecialChar(int32 id)
+{
+ return SetAmbientMissionDoesntRequireModel(id + MI_SPECIAL01);
+}
+
+void
CStreaming::DecrementRef(int32 id)
{
ms_numModelsRequested--;
@@ -1134,10 +1154,9 @@ CStreaming::RemoveModel(int32 id)
void
CStreaming::RemoveUnusedBuildings(eLevelName level)
{
- if(level != LEVEL_BEACH)
- RemoveBuildings(LEVEL_BEACH);
- if(level != LEVEL_MAINLAND)
- RemoveBuildings(LEVEL_MAINLAND);
+ for(int i = LEVEL_INDUSTRIAL; i < NUM_LEVELS; i++)
+ if(level != i)
+ RemoveBuildings((eLevelName)i);
}
void
@@ -1260,10 +1279,9 @@ CStreaming::RemoveUnusedBigBuildings(eLevelName level)
{
ISLAND_LOADING_IS(LOW)
{
- if(level != LEVEL_BEACH)
- RemoveBigBuildings(LEVEL_BEACH);
- if(level != LEVEL_MAINLAND)
- RemoveBigBuildings(LEVEL_MAINLAND);
+ for(int i = LEVEL_INDUSTRIAL; i < NUM_LEVELS; i++)
+ if(level != i)
+ RemoveBuildings((eLevelName)i);
}
RemoveIslandsNotUsed(level);
}
@@ -1285,29 +1303,53 @@ void
CStreaming::RemoveIslandsNotUsed(eLevelName level)
{
int i;
- if(pIslandLODmainlandEntity == nil)
+ if(pIslandLODindustEntity == nil)
for(i = CPools::GetBuildingPool()->GetSize()-1; i >= 0; i--){
CBuilding *building = CPools::GetBuildingPool()->GetSlot(i);
if(building == nil)
continue;
- if(building->GetModelIndex() == islandLODmainland)
- pIslandLODmainlandEntity = building;
- if(building->GetModelIndex() == islandLODbeach)
- pIslandLODbeachEntity = building;
+ if(building->GetModelIndex() == islandLODindust)
+ pIslandLODindustEntity = building;
+ else if(building->GetModelIndex() == islandLODcomInd)
+ pIslandLODcomIndEntity = building;
+ else if(building->GetModelIndex() == islandLODcomSub)
+ pIslandLODcomSubEntity = building;
+ else if(building->GetModelIndex() == islandLODsubInd)
+ pIslandLODsubIndEntity = building;
+ else if(building->GetModelIndex() == islandLODsubCom)
+ pIslandLODsubComEntity = building;
}
#ifdef NO_ISLAND_LOADING
if(FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) {
- DeleteIsland(pIslandLODmainlandEntity);
- DeleteIsland(pIslandLODbeachEntity);
+ DeleteIsland(pIslandLODindustEntity);
+ DeleteIsland(pIslandLODcomIndEntity);
+ DeleteIsland(pIslandLODcomSubEntity);
+ DeleteIsland(pIslandLODsubIndEntity);
+ DeleteIsland(pIslandLODsubComEntity);
} else
#endif
switch(level){
- case LEVEL_MAINLAND:
- DeleteIsland(pIslandLODmainlandEntity);
+ case LEVEL_INDUSTRIAL:
+ DeleteIsland(pIslandLODindustEntity);
+ DeleteIsland(pIslandLODcomSubEntity);
+ DeleteIsland(pIslandLODsubComEntity);
break;
- case LEVEL_BEACH:
- DeleteIsland(pIslandLODbeachEntity);
-
+ case LEVEL_COMMERCIAL:
+ DeleteIsland(pIslandLODcomIndEntity);
+ DeleteIsland(pIslandLODcomSubEntity);
+ DeleteIsland(pIslandLODsubIndEntity);
+ break;
+ case LEVEL_SUBURBAN:
+ DeleteIsland(pIslandLODsubIndEntity);
+ DeleteIsland(pIslandLODsubComEntity);
+ DeleteIsland(pIslandLODcomIndEntity);
+ break;
+ default:
+ DeleteIsland(pIslandLODindustEntity);
+ DeleteIsland(pIslandLODcomIndEntity);
+ DeleteIsland(pIslandLODcomSubEntity);
+ DeleteIsland(pIslandLODsubIndEntity);
+ DeleteIsland(pIslandLODsubComEntity);
break;
}
}
@@ -1569,6 +1611,7 @@ CStreaming::IsObjectInCdImage(int32 id)
void
CStreaming::SetModelIsDeletable(int32 id)
{
+ assert(id >= 0); // guard against fake IDs
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_DONT_REMOVE;
if ((id >= STREAM_OFFSET_TXD && id < STREAM_OFFSET_COL || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
(ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED) == 0){
@@ -1588,9 +1631,11 @@ CStreaming::SetModelTxdIsDeletable(int32 id)
void
CStreaming::SetMissionDoesntRequireModel(int32 id)
{
+ if (ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED)
+ printf("SETTING MISSION DOESN'T REQUIRE MODEL %i\n", id);
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_SCRIPTOWNED;
if ((id >= STREAM_OFFSET_TXD || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
- (ms_aInfoForModel[id].m_flags & STREAMFLAGS_DONT_REMOVE) == 0){
+ (ms_aInfoForModel[id].m_flags & (STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_AMBIENT_SCRIPT_OWNED)) == 0){
if(ms_aInfoForModel[id].m_loadState != STREAMSTATE_LOADED)
RemoveModel(id);
else if(ms_aInfoForModel[id].m_next == nil)
@@ -1599,6 +1644,21 @@ CStreaming::SetMissionDoesntRequireModel(int32 id)
}
void
+CStreaming::SetAmbientMissionDoesntRequireModel(int32 id)
+{
+ if (ms_aInfoForModel[id].m_flags & STREAMFLAGS_AMBIENT_SCRIPT_OWNED)
+ printf("SETTING AMBIENT MISSION DOESN'T REQUIRE MODEL %i\n", id);
+ ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_AMBIENT_SCRIPT_OWNED;
+ if ((id >= STREAM_OFFSET_TXD || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
+ (ms_aInfoForModel[id].m_flags & (STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_SCRIPTOWNED)) == 0) {
+ if (ms_aInfoForModel[id].m_loadState != STREAMSTATE_LOADED)
+ RemoveModel(id);
+ else if (ms_aInfoForModel[id].m_next == nil)
+ ms_aInfoForModel[id].AddToList(&ms_startLoadedList);
+ }
+}
+
+void
CStreaming::LoadInitialPeds(void)
{
RequestModel(MI_COP, STREAMFLAGS_DONT_REMOVE);
@@ -1647,11 +1707,11 @@ CStreaming::StreamVehiclesAndPeds(void)
}
if(FindPlayerPed()->m_pWanted->AreFbiRequired()){
- RequestModel(MI_FBIRANCH, STREAMFLAGS_DONT_REMOVE);
+ RequestModel(MI_FBICAR, STREAMFLAGS_DONT_REMOVE);
RequestModel(MI_FBI, STREAMFLAGS_DONT_REMOVE);
}else{
- SetModelIsDeletable(MI_FBIRANCH);
- if(!HasModelLoaded(MI_FBIRANCH))
+ SetModelIsDeletable(MI_FBICAR);
+ if(!HasModelLoaded(MI_FBICAR))
SetModelIsDeletable(MI_FBI);
}
@@ -1671,6 +1731,7 @@ CStreaming::StreamVehiclesAndPeds(void)
else
SetModelIsDeletable(MI_CHOPPER);
+/* LCS: removed
if (FindPlayerPed()->m_pWanted->AreMiamiViceRequired()) {
SetModelIsDeletable(MI_VICE1);
SetModelIsDeletable(MI_VICE2);
@@ -1712,6 +1773,7 @@ CStreaming::StreamVehiclesAndPeds(void)
SetModelIsDeletable(MI_VICE7);
SetModelIsDeletable(MI_VICE8);
}
+*/
if(timeBeforeNextLoad >= 0)
timeBeforeNextLoad--;
@@ -3146,6 +3208,46 @@ CStreaming::LoadSceneCollision(const CVector &pos)
CStreaming::LoadAllRequestedModels(false);
}
+//--LCS: TODO PSP and PS2
+// some things commented out that might be Rsl3D dependent
+void CStreaming::RegisterPointer(void *ptr, int, bool) {}
+RpAtomic *CStreaming::RegisterAtomic(RpAtomic *atomic, void *)
+{
+ return atomic;
+}
+void CStreaming::RegisterClump(RpClump *clump)
+{
+ RpClumpForAllAtomics(clump, RegisterAtomic, nil);
+}
+RpAtomic *CStreaming::RegisterInstance(RpAtomic *atomic, void *)
+{
+// RegisterPointer(&atomic->geometry, 2, true);
+ return atomic;
+}
+void CStreaming::RegisterInstance(RpClump *clump)
+{
+ RpClumpForAllAtomics(clump, RegisterInstance, nil);
+}
+
+void CStreaming::UnregisterPointer(void *ptr, int) {}
+RpAtomic *CStreaming::UnregisterAtomic(RpAtomic *atomic, void *)
+{
+ return atomic;
+}
+void CStreaming::UnregisterClump(RpClump *clump)
+{
+ RpClumpForAllAtomics(clump, UnregisterAtomic, nil);
+}
+RpAtomic *CStreaming::UnregisterInstance(RpAtomic *atomic, void *)
+{
+// UnregisterPointer(&atomic->geometry, 2);
+ return atomic;
+}
+void CStreaming::UnregisterInstance(RpClump *clump)
+{
+ RpClumpForAllAtomics(clump, UnregisterInstance, nil);
+}
+
void
CStreaming::MemoryCardSave(uint8 *buf, uint32 *size)
{
diff --git a/src/core/Streaming.h b/src/core/Streaming.h
index 4ddf0b3b..a5a5a4ab 100644
--- a/src/core/Streaming.h
+++ b/src/core/Streaming.h
@@ -17,9 +17,11 @@ enum StreamFlags
STREAMFLAGS_PRIORITY = 0x08,
STREAMFLAGS_NOFADE = 0x10,
STREAMFLAGS_20 = 0x20, // TODO(MIAMI): what's this
+ STREAMFLAGS_40 = 0x40, // TODO(LCS): what's this
+ STREAMFLAGS_AMBIENT_SCRIPT_OWNED = 0x80,
- STREAMFLAGS_CANT_REMOVE = STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_SCRIPTOWNED,
- STREAMFLAGS_KEEP_IN_MEMORY = STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_SCRIPTOWNED|STREAMFLAGS_DEPENDENCY,
+ STREAMFLAGS_CANT_REMOVE = STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_SCRIPTOWNED|STREAMFLAGS_AMBIENT_SCRIPT_OWNED,
+ STREAMFLAGS_KEEP_IN_MEMORY = STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_SCRIPTOWNED|STREAMFLAGS_DEPENDENCY |STREAMFLAGS_AMBIENT_SCRIPT_OWNED,
};
enum StreamLoadState
@@ -127,6 +129,7 @@ public:
static bool HasColLoaded(int32 id) { return HasModelLoaded(id+STREAM_OFFSET_COL); }
static bool HasAnimLoaded(int32 id) { return HasModelLoaded(id+STREAM_OFFSET_ANIM); }
static bool CanRemoveModel(int32 id) { return (ms_aInfoForModel[id].m_flags & STREAMFLAGS_CANT_REMOVE) == 0; }
+ static bool IsScriptOwnedModel(int32 id) { return (ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED); }
static bool CanRemoveTxd(int32 id) { return CanRemoveModel(id+STREAM_OFFSET_TXD); }
static bool CanRemoveCol(int32 id) { return CanRemoveModel(id+STREAM_OFFSET_COL); }
static bool CanRemoveAnim(int32 id) { return CanRemoveModel(id+STREAM_OFFSET_ANIM); }
@@ -148,6 +151,7 @@ public:
static void RequestSpecialChar(int32 charId, const char *modelName, int32 flags);
static bool HasSpecialCharLoaded(int32 id);
static void SetMissionDoesntRequireSpecialChar(int32 id);
+ static void SetAmbientMissionDoesntRequireSpecialChar(int32 id);
static void DecrementRef(int32 id);
static void RemoveModel(int32 id);
static void RemoveTxd(int32 id) { RemoveModel(id + STREAM_OFFSET_TXD); }
@@ -172,6 +176,7 @@ public:
static void SetModelIsDeletable(int32 id);
static void SetModelTxdIsDeletable(int32 id);
static void SetMissionDoesntRequireModel(int32 id);
+ static void SetAmbientMissionDoesntRequireModel(int32 id);
static void LoadInitialPeds(void);
static void LoadInitialWeapons(void);
static void LoadInitialVehicles(void);
@@ -210,6 +215,17 @@ public:
static void LoadScene(const CVector &pos);
static void LoadSceneCollision(const CVector &pos);
+ static void RegisterPointer(void *ptr, int, bool);
+ static RpAtomic *RegisterAtomic(RpAtomic *atomic, void *);
+ static void RegisterClump(RpClump *clump);
+ static RpAtomic *RegisterInstance(RpAtomic *atomic, void *);
+ static void RegisterInstance(RpClump *clump);
+ static void UnregisterPointer(void *ptr, int);
+ static RpAtomic *UnregisterAtomic(RpAtomic *atomic, void *);
+ static void UnregisterClump(RpClump *clump);
+ static RpAtomic *UnregisterInstance(RpAtomic *atomic, void *);
+ static void UnregisterInstance(RpClump *clump);
+
static void MemoryCardSave(uint8 *buffer, uint32 *length);
static void MemoryCardLoad(uint8 *buffer, uint32 length);
@@ -217,3 +233,10 @@ public:
static void PrintStreamingBufferState();
};
+
+// LCS(TODO): put them into CStreaming::mspInst
+extern int32 islandLODindust;
+extern int32 islandLODcomInd;
+extern int32 islandLODcomSub;
+extern int32 islandLODsubInd;
+extern int32 islandLODsubCom;
diff --git a/src/core/World.cpp b/src/core/World.cpp
index 549c2cc0..545c0bde 100644
--- a/src/core/World.cpp
+++ b/src/core/World.cpp
@@ -1,4 +1,5 @@
#include "common.h"
+#include "Bike.h"
#include "Camera.h"
#include "CarCtrl.h"
#include "CopPed.h"
@@ -1788,56 +1789,35 @@ void
CWorld::RepositionOneObject(CEntity *pEntity)
{
int16 modelId = pEntity->GetModelIndex();
- if (modelId == MI_PARKINGMETER || modelId == MI_PHONEBOOTH1 || modelId == MI_WASTEBIN ||
- modelId == MI_BIN || modelId == MI_POSTBOX1 || modelId == MI_NEWSSTAND || modelId == MI_TRAFFICCONE ||
- modelId == MI_DUMP1 || modelId == MI_ROADWORKBARRIER1 || modelId == MI_BUSSIGN1 || modelId == MI_NOPARKINGSIGN1 ||
- modelId == MI_PHONESIGN || modelId == MI_FIRE_HYDRANT || modelId == MI_BOLLARDLIGHT ||
- modelId == MI_PARKTABLE || modelId == MI_PARKINGMETER2 || modelId == MI_TELPOLE02 ||
- modelId == MI_PARKBENCH || modelId == MI_BARRIER1 || IsTreeModel(modelId)
- ) {
+ if (IsLightThatNeedsRepositioning(modelId) || IsTreeModel(modelId) || modelId == MI_PARKINGMETER ||
+ modelId == MI_PHONEBOOTH1 || modelId == MI_WASTEBIN || modelId == MI_BIN || modelId == MI_POSTBOX1 ||
+ modelId == MI_NEWSSTAND || modelId == MI_TRAFFICCONE || modelId == MI_DUMP1 ||
+ modelId == MI_ROADWORKBARRIER1 || modelId == MI_BUSSIGN1 || modelId == MI_NOPARKINGSIGN1 ||
+ modelId == MI_PHONESIGN || modelId == MI_TAXISIGN || modelId == MI_FISHSTALL01 ||
+ modelId == MI_FISHSTALL02 || modelId == MI_FISHSTALL03 || modelId == MI_FISHSTALL04 ||
+ modelId == MI_BAGELSTAND2 || modelId == MI_FIRE_HYDRANT || modelId == MI_BOLLARDLIGHT ||
+ modelId == MI_PARKTABLE) {
CVector& position = pEntity->GetMatrix().GetPosition();
- CColModel* pColModel = pEntity->GetColModel();
- float fBoundingBoxMinZ = pColModel->boundingBox.min.z;
- float fHeight = pColModel->boundingBox.max.z - pColModel->boundingBox.min.z;
- if (fHeight < OBJECT_REPOSITION_OFFSET_Z) fHeight = OBJECT_REPOSITION_OFFSET_Z;
+ float fBoundingBoxMinZ = pEntity->GetColModel()->boundingBox.min.z;
position.z = FindGroundZFor3DCoord(position.x, position.y,
- position.z + fHeight, nil) -
- fBoundingBoxMinZ;
+ position.z + OBJECT_REPOSITION_OFFSET_Z, nil) -
+ fBoundingBoxMinZ;
pEntity->GetMatrix().UpdateRW();
pEntity->UpdateRwFrame();
- } else if(IsLightThatNeedsRepositioning(modelId)) {
- CVector position = pEntity->GetMatrix().GetPosition();
- CColModel* pColModel = pEntity->GetColModel();
- float fBoundingBoxMinZ = pColModel->boundingBox.min.z;
- float fHeight = pColModel->boundingBox.max.z - pColModel->boundingBox.min.z;
- if (fHeight < OBJECT_REPOSITION_OFFSET_Z) fHeight = OBJECT_REPOSITION_OFFSET_Z;
- if (pColModel->numBoxes == 1)
- position = pEntity->GetMatrix() * CVector(
- (pColModel->boxes[0].min.x + pColModel->boxes[0].max.x) / 2,
- (pColModel->boxes[0].min.y + pColModel->boxes[0].max.y) / 2,
- pColModel->boxes[0].min.z);
- else if (pColModel->numSpheres > 0) {
- position.z = 1000.0f;
- for (int i = 0; i < pColModel->numSpheres; i++) {
- if (pColModel->spheres[i].center.z < position.z)
- position = pColModel->spheres[i].center;
- }
- if (position.z < 1000.0f)
- position = pEntity->GetMatrix() * position;
- }
- pEntity->GetMatrix().GetPosition().z = FindGroundZFor3DCoord(position.x, position.y, pEntity->GetMatrix().GetPosition().z + fHeight, nil) - fBoundingBoxMinZ;
- pEntity->GetMatrix().UpdateRW();
- pEntity->UpdateRwFrame();
-
- }
- if(modelId == MI_BUOY) {
+ } else if(modelId == MI_BUOY) {
+ float fWaterLevel = 0.0f;
bool bFound = true;
const CVector &position = pEntity->GetPosition();
float fGroundZ = FindGroundZFor3DCoord(position.x, position.y,
position.z + OBJECT_REPOSITION_OFFSET_Z, &bFound);
- CColModel *pColModel = pEntity->GetColModel();
- float fHeight = pColModel->boundingBox.max.z - pColModel->boundingBox.min.z;
- pEntity->GetMatrix().GetPosition().z = 0.2f * fHeight + 6.0f - 0.5f * fHeight;
+ if(CWaterLevel::GetWaterLevelNoWaves(position.x, position.y, position.z + OBJECT_REPOSITION_OFFSET_Z,
+ &fWaterLevel)) {
+ if(!bFound || fWaterLevel > fGroundZ) {
+ CColModel *pColModel = pEntity->GetColModel();
+ float fHeight = pColModel->boundingBox.max.z - pColModel->boundingBox.min.z;
+ pEntity->GetMatrix().GetPosition().z = 0.2f * fHeight + fWaterLevel - 0.5f * fHeight;
+ }
+ }
}
}
@@ -1927,16 +1907,7 @@ CWorld::Process(void)
for(int i = 0; i < NUMCUTSCENEOBJECTS; i++) {
CCutsceneObject *csObj = CCutsceneMgr::GetCutsceneObject(i);
if(csObj && csObj->m_entryInfoList.first) {
- if(csObj->m_rwObject && RwObjectGetType(csObj->m_rwObject) == rpCLUMP &&
- RpAnimBlendClumpGetFirstAssociation(csObj->GetClump())) {
- if (csObj->IsObject())
- RpAnimBlendClumpUpdateAnimations(csObj->GetClump(), CTimer::GetTimeStepNonClippedInSeconds());
- else {
- if (!csObj->bOffscreen)
- csObj->bOffscreen = !csObj->GetIsOnScreen();
- RpAnimBlendClumpUpdateAnimations(csObj->GetClump(), CTimer::GetTimeStepInSeconds(), !csObj->bOffscreen);
- }
- }
+ csObj->UpdateAnim();
csObj->ProcessControl();
csObj->ProcessCollision();
csObj->GetMatrix().UpdateRW();
@@ -1948,26 +1919,42 @@ CWorld::Process(void)
} else {
for(CPtrNode *node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CEntity *movingEnt = (CEntity *)node->item;
- if(!movingEnt->bRemoveFromWorld && movingEnt->m_rwObject && RwObjectGetType(movingEnt->m_rwObject) == rpCLUMP &&
- RpAnimBlendClumpGetFirstAssociation(movingEnt->GetClump())) {
- if (movingEnt->IsObject())
- RpAnimBlendClumpUpdateAnimations(movingEnt->GetClump(), CTimer::GetTimeStepNonClippedInSeconds());
- else {
- if (!movingEnt->bOffscreen)
- movingEnt->bOffscreen = !movingEnt->GetIsOnScreen();
- RpAnimBlendClumpUpdateAnimations(movingEnt->GetClump(), CTimer::GetTimeStepInSeconds(), !movingEnt->bOffscreen);
- }
- }
+ if(!movingEnt->bRemoveFromWorld)
+ movingEnt->UpdateAnim();
}
for(CPtrNode *node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CPhysical *movingEnt = (CPhysical *)node->item;
if(movingEnt->bRemoveFromWorld) {
RemoveEntityInsteadOfProcessingIt(movingEnt);
} else {
- movingEnt->ProcessControl();
+ if(!CCutsceneMgr::IsCutsceneProcessing() || movingEnt->UpdatesInCutscene())
+ movingEnt->ProcessControl();
if(movingEnt->GetIsStatic()) { movingEnt->RemoveFromMovingList(); }
}
}
+#ifdef VIS_DISTANCE_ALPHA
+ for(int y = 0; y < NUMSECTORS_Y; y++)
+ for(int x = 0; x < NUMSECTORS_X; x++){
+ CPtrNode *node;
+ CSector *sect = CWorld::GetSector(x, y);
+ for(node = sect->m_lists[ENTITYLIST_PEDS].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_PEDS_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_VEHICLES].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_VEHICLES_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_OBJECTS].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_OBJECTS_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_DUMMIES].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_DUMMIES_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ }
+#endif
bForceProcessControl = true;
for(CPtrNode *node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CPhysical *movingEnt = (CPhysical *)node->item;
@@ -2154,8 +2141,8 @@ CWorld::TriggerExplosionSectorList(CPtrList &list, const CVector &position, floa
} else {
CVector pos = pEntity->GetPosition();
pos.z -= 0.5f;
- CParticleObject::AddObject(POBJECT_FIRE_HYDRANT,
- pos, true);
+ CParticleObject::AddObject(POBJECT_FIRE_HYDRANT, pos, true);
+ CParticleObject::AddObject(POBJECT_FIRE_HYDRANT_STEAM, pos, true);
pObject->bHasBeenDamaged = true;
}
}
@@ -2239,19 +2226,36 @@ CWorld::UseDetonator(CEntity *pEntity)
{
int32 i = CPools::GetVehiclePool()->GetSize();
while(--i >= 0) {
-#ifdef FIX_BUGS
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
-#else
- CAutomobile *pVehicle = (CAutomobile *)CPools::GetVehiclePool()->GetSlot(i);
+#if defined FIX_BUGS || defined BOMBS_ON_BIKES
+ if (pVehicle && pVehicle->IsCar())
#endif
- if(pVehicle && pVehicle->m_bombType == CARBOMB_REMOTE &&
- pVehicle->m_pBombRigger == pEntity) {
- pVehicle->m_bombType = CARBOMB_NONE;
- pVehicle->m_nBombTimer = 500;
- pVehicle->m_pBlowUpEntity = pVehicle->m_pBombRigger;
- if(pVehicle->m_pBlowUpEntity)
- pVehicle->m_pBlowUpEntity->RegisterReference(&pVehicle->m_pBlowUpEntity);
+ {
+ CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetSlot(i);
+ if (pCar && pCar->m_bombType == CARBOMB_REMOTE &&
+ pCar->m_pBombRigger == pEntity) {
+ pCar->m_bombType = CARBOMB_NONE;
+ pCar->m_nBombTimer = 500;
+ pCar->m_pBlowUpEntity = pCar->m_pBombRigger;
+ if (pCar->m_pBlowUpEntity)
+ pCar->m_pBlowUpEntity->RegisterReference(&pCar->m_pBlowUpEntity);
+ }
+ }
+#ifdef BOMBS_ON_BIKES
+ if (pVehicle && pVehicle->IsBike()) {
+ {
+ CBike* pBike = (CBike*)CPools::GetVehiclePool()->GetSlot(i);
+ if (pBike && pBike->m_bombType == CARBOMB_REMOTE &&
+ pBike->m_pBombRigger == pEntity) {
+ pBike->m_bombType = CARBOMB_NONE;
+ pBike->m_nBombTimer = 500;
+ pBike->m_pBlowUpEntity = pBike->m_pBombRigger;
+ if (pBike->m_pBlowUpEntity)
+ pBike->m_pBlowUpEntity->RegisterReference(&pBike->m_pBlowUpEntity);
+ }
+ }
}
+#endif
}
CProjectileInfo::RemoveDetonatorProjectiles();
}
@@ -2310,3 +2314,17 @@ CWorld::IsWanderPathClear(CVector const& point1, CVector const& point2, float di
}
return true;
}
+
+void
+CWorld::CheckObjectsEffectedByFire(float x, float y, float z, float radius, CEntity* reason)
+{
+ int32 i = CPools::GetObjectPool()->GetSize();
+ while (i--) {
+ CObject* pObject = CPools::GetObjectPool()->GetSlot(i);
+ if (pObject) {
+ if (Abs(pObject->GetPosition().z - z) < 5.0f && Abs(pObject->GetPosition().x - x) < radius &&
+ Abs(pObject->GetPosition().y - y) < radius)
+ pObject->m_nLastWeaponToDamage = WEAPONTYPE_FLAMETHROWER;
+ }
+ }
+}
diff --git a/src/core/World.h b/src/core/World.h
index 81eb5d4c..cecbf71d 100644
--- a/src/core/World.h
+++ b/src/core/World.h
@@ -5,19 +5,19 @@
#include "PlayerInfo.h"
#include "Collision.h"
-/* Sectors span from -2400 to 1600 in x and -2000 to 2000 y.
- * With 80x80 sectors, each is 50x50 units. */
+/* Sectors span from -2000 to 2000 in x and y.
+ * With 100x100 sectors, each is 40x40 units. */
-#define SECTOR_SIZE_X (50.0f)
-#define SECTOR_SIZE_Y (50.0f)
+#define SECTOR_SIZE_X (40.0f)
+#define SECTOR_SIZE_Y (40.0f)
-#define NUMSECTORS_X (80)
-#define NUMSECTORS_Y (80)
+#define NUMSECTORS_X (100)
+#define NUMSECTORS_Y (100)
#define WORLD_SIZE_X (NUMSECTORS_X * SECTOR_SIZE_X)
#define WORLD_SIZE_Y (NUMSECTORS_Y * SECTOR_SIZE_Y)
-#define WORLD_MIN_X (-2400.0f)
+#define WORLD_MIN_X (-2000.0f)
#define WORLD_MIN_Y (-2000.0f)
#define WORLD_MAX_X (WORLD_MIN_X + WORLD_SIZE_X)
@@ -29,6 +29,7 @@ enum
{
ENTITYLIST_BUILDINGS,
ENTITYLIST_BUILDINGS_OVERLAP,
+ ENTITYLIST_MULTIPLAYER,
ENTITYLIST_OBJECTS,
ENTITYLIST_OBJECTS_OVERLAP,
ENTITYLIST_VEHICLES,
@@ -154,6 +155,7 @@ public:
static void TriggerExplosion(const CVector& position, float fRadius, float fPower, CEntity* pCreator, bool bProcessVehicleBombTimer);
static void TriggerExplosionSectorList(CPtrList& list, const CVector& position, float fRadius, float fPower, CEntity* pCreator, bool bProcessVehicleBombTimer);
static void UseDetonator(CEntity *pEntity);
+ static void CheckObjectsEffectedByFire(float, float, float, float, CEntity*);
// NB: following functions are unused (TODO?)
static void CastShadow(float, float, float, float);
diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp
index 93eca199..5a53ee29 100644
--- a/src/core/Zones.cpp
+++ b/src/core/Zones.cpp
@@ -87,20 +87,20 @@ CTheZones::Init(void)
TotalNumberOfInfoZones = 1;
strcpy(InfoZoneArray[0].name, "CITYINF");
- InfoZoneArray[0].minx = -2400.0f;
+ InfoZoneArray[0].minx = -2000.0f;
InfoZoneArray[0].miny = -2000.0f;
InfoZoneArray[0].minz = -500.0f;
- InfoZoneArray[0].maxx = 1600.0f;
+ InfoZoneArray[0].maxx = 2000.0f;
InfoZoneArray[0].maxy = 2000.0f;
InfoZoneArray[0].maxz = 500.0f;
InfoZoneArray[0].level = LEVEL_GENERIC;
InfoZoneArray[0].type = ZONE_INFO;
strcpy(NavigationZoneArray[0].name, "VICE_C");
- NavigationZoneArray[0].minx = -2400.0f;
+ NavigationZoneArray[0].minx = -2000.0f;
NavigationZoneArray[0].miny = -2000.0f;
NavigationZoneArray[0].minz = -500.0f;
- NavigationZoneArray[0].maxx = 1600.0f;
+ NavigationZoneArray[0].maxx = 2000.0f;
NavigationZoneArray[0].maxy = 2000.0f;
NavigationZoneArray[0].maxz = 500.0f;
NavigationZoneArray[0].level = LEVEL_GENERIC;
@@ -114,10 +114,10 @@ CTheZones::Init(void)
}
TotalNumberOfMapZones = 1;
strcpy(MapZoneArray[0].name, "THEMAP");
- MapZoneArray[0].minx = -2400.0f;
+ MapZoneArray[0].minx = -2000.0f;
MapZoneArray[0].miny = -2000.0f;
MapZoneArray[0].minz = -500.0f;
- MapZoneArray[0].maxx = 1600.0f;
+ MapZoneArray[0].maxx = 2000.0f;
MapZoneArray[0].maxy = 2000.0f;
MapZoneArray[0].maxz = 500.0f;
MapZoneArray[0].level = LEVEL_GENERIC;
diff --git a/src/core/common.h b/src/core/common.h
index 12c80b71..361e8515 100644
--- a/src/core/common.h
+++ b/src/core/common.h
@@ -120,6 +120,8 @@ typedef ptrdiff_t ssize_t;
#endif
#include "config.h"
+#include "memoryManager.h"
+#include "relocatableChunk.h"
#include <rphanim.h>
#include <rpskin.h>
@@ -217,6 +219,18 @@ inline uint32 ldb(uint32 p, uint32 s, uint32 w)
#define SCALE_AND_CENTER_X(x) SCREEN_STRETCH_X(x)
#endif
+// these are temp marcos while we don't implement all PSP UI coordinates
+#define PSP_DEFAULT_SCREEN_WIDTH (480)
+#define PSP_DEFAULT_SCREEN_HEIGHT (272)
+
+#define PSP_SCALE_TO_PS2_X(a) ((float)a * ((float)DEFAULT_SCREEN_WIDTH / (float)PSP_DEFAULT_SCREEN_WIDTH))
+#define PSP_SCALE_TO_PS2_Y(a) ((float)a * ((float)DEFAULT_SCREEN_HEIGHT / (float)PSP_DEFAULT_SCREEN_HEIGHT))
+
+#define PSP_SCREEN_SCALE_X(a) ((a) * (float) SCREEN_WIDTH / PSP_DEFAULT_SCREEN_WIDTH)
+#define PSP_SCREEN_SCALE_Y(a) ((a) * (float) SCREEN_WIDTH / PSP_DEFAULT_SCREEN_WIDTH)
+#define PSP_SCREEN_SCALE_FROM_RIGHT(a) (SCREEN_WIDTH - PSP_SCREEN_SCALE_X(a))
+#define PSP_SCREEN_SCALE_FROM_BOTTOM(a) (SCREEN_HEIGHT - PSP_SCREEN_SCALE_Y(a))
+
#include "maths.h"
#include "Vector.h"
#ifdef GTA_PS2
diff --git a/src/core/config.h b/src/core/config.h
index 8943223b..0d29ff58 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -12,15 +12,15 @@ enum Config {
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
- MODELINFOSIZE = 6500, // 4900 on PS2
- TXDSTORESIZE = 1385,
- COLSTORESIZE = 31,
+ MODELINFOSIZE = 4900,
+ TXDSTORESIZE = 1200,
+ COLSTORESIZE = 15,
EXTRADIRSIZE = 256,
CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 3885,
TIMEMODELSIZE = 385,
- CLUMPMODELSIZE = 5,
+ CLUMPMODELSIZE = 10,
WEAPONMODELSIZE = 37,
PEDMODELSIZE = 130,
VEHICLEMODELSIZE = 110,
@@ -31,19 +31,19 @@ enum Config {
NUMOBJECTINFO = 210,
// Pool sizes
- NUMPTRNODES = 50000,
- NUMENTRYINFOS = 3200,
- NUMPEDS = 140,
- NUMVEHICLES = 110,
- NUMBUILDINGS = 7000,
- NUMTREADABLES = 1,
- NUMOBJECTS = 460,
- NUMDUMMIES = 2340,
+ NUMPTRNODES = 50000, // only 30100
+ NUMENTRYINFOS = 4000,
+ NUMPEDS = 140, // only 70
+ NUMVEHICLES = 110, // only 70
+ NUMBUILDINGS = 7000, // only 6757
+ NUMTREADABLES = 1300,
+ NUMOBJECTS = 475,
+ NUMDUMMIES = 3000,
NUMAUDIOSCRIPTOBJECTS = 192,
NUMCOLMODELS = 4400,
NUMCUTSCENEOBJECTS = 50, // not a pool in VC
- NUMANIMBLOCKS = 35,
+ NUMANIMBLOCKS = 60,
NUMANIMATIONS = 450,
NUMTEMPOBJECTS = 40,
@@ -63,20 +63,20 @@ enum Config {
NUMREFERENCES = 800,
// Zones
- NUMAUDIOZONES = 14,
+ NUMAUDIOZONES = 36,
NUMINFOZONES = 169,
- NUMMAPZONES = 39,
- NUMNAVIGZONES = 20,
+ NUMMAPZONES = 110,
+ NUMNAVIGZONES = 70,
// Cull zones
- NUMATTRIBZONES = 704,
+ NUMATTRIBZONES = 900,
NUMOCCLUSIONVOLUMES = 350,
NUMACTIVEOCCLUDERS = 48,
PATHNODESIZE = 4500,
- NUMWEATHERS = 7,
+ NUMWEATHERS = 8,
NUMHOURS = 24,
NUMEXTRADIRECTIONALS = 4,
@@ -102,7 +102,7 @@ enum Config {
NUMPACMANPICKUPS = 256,
NUMEVENTS = 64,
- NUM_CARGENS = 185,
+ NUM_CARGENS = 195, // 500 on mobile
NUM_PATH_NODES_IN_AUTOPILOT = 8,
@@ -116,7 +116,7 @@ enum Config {
NUM_WATERCANNONS = 3,
NUMPEDROUTES = 200,
- NUMPHONES = 50,
+ NUMPHONES = 60,
NUMPEDGROUPS = 67,
NUMMODELSPERPEDGROUP = 16,
MAXZONEPEDSLOADED = 8,
@@ -138,14 +138,16 @@ enum Config {
NUM_GARAGE_STORED_CARS = 4,
- NUM_CRANES = 8,
+ NUM_CRANES = 11,
NUM_ESCALATORS = 22,
NUM_WATER_CREATURES = 8,
NUM_EXPLOSIONS = 48,
NUM_SETPIECES = 96,
- NUM_SHORTCUT_START_POINTS = 16
+ NUM_SHORTCUT_START_POINTS = 16,
+
+ NUM_FERRY_PATHS = 1
};
// We don't expect to compile for PS2 or Xbox
@@ -154,6 +156,9 @@ enum Config {
//#define GTA_PS2
//#define GTA_XBOX
+#define GTA_TRAIN
+#define GTA_BRIDGE
+
// Version defines
#define GTAVC_PS2 400
#define GTAVC_PC_10 410
@@ -184,7 +189,7 @@ enum Config {
# ifndef GTA_HANDHELD
# define PC_PLAYER_CONTROLS // mouse player/cam mode
# endif
-# define GTA_REPLAY
+//# define GTA_REPLAY
# define GTA_SCENE_EDIT
# define PC_MENU
# define PC_WATER
@@ -254,6 +259,11 @@ enum Config {
# define PS2_MATFX
#endif
+// Mobile only.
+// Looks like they tried to fix fading but it still sucks
+// do not use this
+//#define VIS_DISTANCE_ALPHA
+
#ifdef VU_COLLISION
#define COMPRESSED_COL_VECTORS // currently need compressed vectors in this code
#endif
@@ -278,9 +288,9 @@ enum Config {
#endif
#define FIX_BUGS // fixes bugs that we've came across during reversing. You can undefine this only on release builds.
-#define MORE_LANGUAGES // Add more translations to the game
+//#define MORE_LANGUAGES // Add more translations to the game
#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible, and keeps saves compatible between platforms
-#define FIX_INCOMPATIBLE_SAVES // try to fix incompatible saves, requires COMPATIBLE_SAVES
+//#define FIX_INCOMPATIBLE_SAVES // try to fix incompatible saves, requires COMPATIBLE_SAVES
#define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS
#define NO_MOVIES // add option to disable intro videos
@@ -311,7 +321,7 @@ enum Config {
#define USE_TXD_CDIMAGE // generate and load textures from txd.img
#define PS2_ALPHA_TEST // emulate ps2 alpha test
#define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number
-#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
+//#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
#define DISABLE_VSYNC_ON_TEXTURE_CONVERSION // make texture conversion work faster by disabling vsync
#define ANISOTROPIC_FILTERING // set all textures to max anisotropic filtering
//#define USE_TEXTURE_POOL
@@ -331,6 +341,7 @@ enum Config {
// Water & Particle
#undef PC_WATER
#define WATER_CHEATS
+//#define PSP_WATERCANNON
//#define USE_CUTSCENE_SHADOW_FOR_PED // requires COMPATIBLE_SAVES
//#define DISABLE_CUTSCENE_SHADOWS
@@ -373,7 +384,7 @@ enum Config {
# ifdef CUSTOM_FRONTEND_OPTIONS
# define GRAPHICS_MENU_OPTIONS // otherwise Display settings will be scrollable
-# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
+//# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
# define CUTSCENE_BORDERS_SWITCH
# define MULTISAMPLING // adds MSAA option
# define INVERT_LOOK_FOR_PAD // enable the hidden option
@@ -387,18 +398,18 @@ enum Config {
#define USE_PRECISE_MEASUREMENT_CONVERTION // makes game convert feet to meeters more precisely
#define SUPPORT_JAPANESE_SCRIPT
//#define SUPPORT_XBOX_SCRIPT
-#define SUPPORT_MOBILE_SCRIPT
-#define SUPPORT_GINPUT_SCRIPT
+//#define SUPPORT_MOBILE_SCRIPT
+//#define SUPPORT_GINPUT_SCRIPT
#if (defined SUPPORT_XBOX_SCRIPT && defined SUPPORT_MOBILE_SCRIPT)
static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually exclusive");
#endif
#ifdef PC_MENU
-#define MISSION_REPLAY // mobile feature
+//#define MISSION_REPLAY // mobile feature
//#define SIMPLER_MISSIONS // apply simplifications from mobile
-#define USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
+//#define USE_MISSION_REPLAY_OVERRIDE_FOR_NON_MOBILE_SCRIPT
#endif
#define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
-#define SCRIPT_LOG_FILE_LEVEL 0 // 0 == no log, 1 == overwrite every frame, 2 == full log
+#define SCRIPT_LOG_FILE_LEVEL 1 // 0 == no log, 1 == overwrite every frame, 2 == full log
#if SCRIPT_LOG_FILE_LEVEL == 0
#undef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
@@ -424,6 +435,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
// Vehicles
#define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
#define CPLANE_ROTORS // make the rotors of the NPC police heli rotate
+#define BOMBS_ON_BIKES // allow player to set bombs on bikes
// Pickups
//#define MONEY_MESSAGES
@@ -442,15 +454,16 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#define AUDIO_REFLECTIONS // Enable audio reflections. This is enabled in all vanilla versions
#define AUDIO_REVERB // Enable audio reverb. It was disabled in PS2 and mobile versions
#define RADIO_SCROLL_TO_PREV_STATION // Won't work without FIX_BUGS
-#define AUDIO_CACHE // cache sound lengths to speed up the cold boot
-#define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 43 (PC has 28 originally)
-#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds)
+//#define AUDIO_CACHE // cache sound lengths to speed up the cold boot
+#define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 41 (PSP and mobile have 21 originally)
+//#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds)
//#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder
#define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files
#define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused
#define ATTACH_RELEASING_SOUNDS_TO_ENTITIES // sounds would follow ped and vehicles coordinates if not being queued otherwise
#define USE_TIME_SCALE_FOR_AUDIO // slow down/speed up sounds according to the speed of the game
#define MULTITHREADED_AUDIO // for streams. requires C++11 or later
+#define CUSTOM_SOUND_TRACK // LCS PSP feature - TODO
#ifdef AUDIO_OPUS
#define AUDIO_OAL_USE_OPUS // enable support of opus files
diff --git a/src/core/main.cpp b/src/core/main.cpp
index e84c6eeb..d0f59f54 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -81,12 +81,22 @@
GlobalScene Scene;
-uint8 work_buff[55000];
+uint8 work_buff[102400];
char gString[256];
char gString2[512];
wchar gUString[256];
wchar gUString2[256];
+// leeds
+bool gMakeResources = true;
+bool gUseChunkFiles = false;
+bool gSecondExportPass;
+bool gUseModelResources;
+bool gUseResources;
+bool gNASTY_NASTY_MEM_SHUTDOWN_HACK; // rather unused
+bool gbPreviewCity; // don't do worldstream-style rendering but traditional method
+bool gMultiplayerSuperBrakeOnPause = true;
+
float FramesPerSecond = 30.0f;
bool gbPrintShite = false;
@@ -98,7 +108,7 @@ bool gbShowTimebars;
bool gbDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds
#endif
#ifdef NO_MOVIES
-bool gbNoMovies;
+bool gbNoMovies = true;
#endif
volatile int32 frameCount;
@@ -108,7 +118,7 @@ RwRGBA gColourTop;
bool gameAlreadyInitialised;
float NumberOfChunksLoaded;
-#define TOTALNUMCHUNKS 95.0f
+#define TOTALNUMCHUNKS 52.0f
bool g_SlowMode = false;
char version_name[64];
@@ -135,7 +145,7 @@ bool gbPrintMemoryUsage;
#endif
#ifdef NEW_RENDERER
-bool gbNewRenderer;
+bool gbNewRenderer = true;
#endif
#ifdef FIX_BUGS
// need to clear stencil for mblur fx. no idea why it works in the original game
@@ -606,11 +616,11 @@ GetRandomSplashScreen(void)
static char splashName[128];
static int splashIndex[12] = {
1, 2,
- 3, 4,
- 5, 11,
- 6, 8,
- 9, 10,
- 7, 12
+ 3, 0,
+ 1, 2,
+ 3, 0,
+ 1, 2,
+ 3, 0
};
index = splashIndex[2*index2 + CGeneral::GetRandomNumberInRange(0, 2)];
@@ -624,11 +634,12 @@ GetRandomSplashScreen(void)
Const char*
GetLevelSplashScreen(int level)
{
- static Const char *splashScreens[4] = {
+ static Const char *splashScreens[5] = {
nil,
"splash1",
"splash2",
"splash3",
+ "loadsc0",
};
return splashScreens[level];
@@ -640,6 +651,7 @@ ResetLoadingScreenBar()
NumberOfChunksLoaded = 0.0f;
}
+//--LCS: not the real thing
void
LoadingScreen(const char *str1, const char *str2, const char *splashscreen)
{
@@ -651,7 +663,7 @@ LoadingScreen(const char *str1, const char *str2, const char *splashscreen)
#endif
#ifndef RANDOMSPLASH
- splashscreen = "LOADSC0";
+ splashscreen = "SCEELEE";
#endif
splash = LoadSplash(splashscreen);
@@ -673,24 +685,27 @@ LoadingScreen(const char *str1, const char *str2, const char *splashscreen)
NumberOfChunksLoaded += 1;
#ifndef RANDOMSPLASH
+ // this looks nice
float hpos = SCREEN_SCALE_X(40);
float length = SCREEN_WIDTH - SCREEN_SCALE_X(80);
- float top = SCREEN_HEIGHT - SCREEN_SCALE_Y(14);
- float bottom = top + SCREEN_SCALE_Y(5);
+ float top = SCREEN_HEIGHT - SCREEN_SCALE_Y(30);
+ float bottom = top + SCREEN_SCALE_Y(8);
#else
- float hpos = SCREEN_STRETCH_X(40);
- float length = SCREEN_STRETCH_X(440);
- // this is rather weird
- float top = SCREEN_STRETCH_Y(407.4f - 7.0f/3.0f);
- float bottom = SCREEN_STRETCH_Y(407.4f + 7.0f/3.0f);
+ // should correspond to PS2 position
+ float hpos = SCREEN_STRETCH_X(44);
+ float length = SCREEN_STRETCH_X(176);
+ float top = SCREEN_STRETCH_Y(420);
+ float bottom = top + SCREEN_STRETCH_Y(8);
#endif
- CSprite2d::DrawRect(CRect(hpos-1.0f, top-1.0f, hpos+length+1.0f, bottom+1.0f), CRGBA(40, 53, 68, 255));
+ CSprite2d::DrawRect(CRect(hpos+4.0f, top+6.0f, hpos+length+4.0f, bottom+6.0f), CRGBA(0, 0, 0, 200));
- CSprite2d::DrawRect(CRect(hpos, top, hpos+length, bottom), CRGBA(155, 50, 125, 255));
+ CSprite2d::DrawRect(CRect(hpos, top, hpos+length, bottom), CRGBA(0, 0, 0, 255));
+
+ CSprite2d::DrawRect(CRect(hpos+1.0f, top+1.0f, hpos+length-1.0f, bottom-1.0f), CRGBA(99, 99, 99, 255));
length *= NumberOfChunksLoaded/TOTALNUMCHUNKS;
- CSprite2d::DrawRect(CRect(hpos, top, hpos+length, bottom), CRGBA(255, 150, 225, 255));
+ CSprite2d::DrawRect(CRect(hpos+1.0f, top+1.0f, hpos+length-1.0f, bottom-1.0f), CRGBA(126, 15, 0, 255));
// this is done by the game but is unused
CFont::SetBackgroundOff();
@@ -705,7 +720,7 @@ LoadingScreen(const char *str1, const char *str2, const char *splashscreen)
// my attempt
static wchar tmpstr[80];
float yscale = SCREEN_SCALE_Y(0.9f);
- top -= 45*yscale;
+ top = bottom+5*yscale;
CFont::SetScale(SCREEN_SCALE_X(0.75f), yscale);
CFont::SetPropOn();
CFont::SetRightJustifyOff();
@@ -726,12 +741,13 @@ LoadingScreen(const char *str1, const char *str2, const char *splashscreen)
}
}
+//--LCS: slightly fixed
void
LoadingIslandScreen(const char *levelName)
{
CSprite2d *splash;
- splash = LoadSplash(nil);
+ splash = LoadSplash(GetLevelSplashScreen(CGame::currLevel));
if(!DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255))
return;
@@ -1214,7 +1230,6 @@ DisplayGameDebugText()
#ifdef NEW_RENDERER
bool gbRenderRoads = true;
bool gbRenderEverythingBarRoads = true;
-bool gbRenderFadingInUnderwaterEntities = true;
bool gbRenderFadingInEntities = true;
bool gbRenderWater = true;
bool gbRenderBoats = true;
@@ -1230,10 +1245,11 @@ MattRenderScene(void)
/// CWorld::AdvanceCurrentScanCode();
// CMattRenderer::ResetRenderStates
/// CRenderer::ClearForFrame(); // before ConstructRenderList
- // CClock::CalcEnvMapTimeMultiplicator
+ CClock::CalcEnvMapTimeMultiplicator();
RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE);
- CWaterLevel::RenderWater(); // actually CMattRenderer::RenderWater
- // CClock::ms_EnvMapTimeMultiplicator = 1.0f;
+if(gbRenderWater)
+ CRenderer::RenderWater(); // actually CMattRenderer::RenderWater
+ CClock::ms_EnvMapTimeMultiplicator = 1.0f;
// cWorldStream::ClearDynamics
/// CRenderer::ConstructRenderList(); // before PreRender
if(gbRenderWorld0)
@@ -1246,22 +1262,14 @@ if(gbRenderWorld1)
if(gbRenderRoads)
CRenderer::RenderRoads();
- CRenderer::RenderPeds();
-
- // not sure where to put these since LCS has no underwater entities
-if(gbRenderBoats)
- CRenderer::RenderBoats();
-if(gbRenderFadingInUnderwaterEntities)
- CRenderer::RenderFadingInUnderwaterEntities();
RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE);
-if(gbRenderWater)
- CRenderer::RenderTransparentWater();
if(gbRenderEverythingBarRoads)
CRenderer::RenderEverythingBarRoads();
- // seam fixer
- // moved this:
- // CRenderer::RenderFadingInEntities();
+ // TODO: seam fixer
+ // these aren't very transparent. just objects
+if(gbRenderFadingInEntities)
+ CRenderer::RenderFadingInEntities();
}
void
@@ -1274,7 +1282,8 @@ RenderScene_new(void)
MattRenderScene();
DefinedState();
// CMattRenderer::ResetRenderStates
- // moved CRenderer::RenderBoats to before transparent water
+if(gbRenderBoats)
+ CRenderer::RenderBoats();
POP_RENDERGROUP();
}
@@ -1284,13 +1293,12 @@ void
RenderEffects_new(void)
{
PUSH_RENDERGROUP("RenderEffects_new");
-/* // stupid to do this before the whole world is drawn!
- CShadows::RenderStaticShadows();
- // CRenderer::GenerateEnvironmentMap
- CShadows::RenderStoredShadows();
- CSkidmarks::Render();
- CRubbish::Render();
-*/
+ // stupid to do this before the whole world is drawn!
+// CShadows::RenderStaticShadows();
+ CRenderer::GenerateEnvironmentMap();
+// CShadows::RenderStoredShadows();
+// CSkidmarks::Render();
+// CRubbish::Render();
// these aren't really effects
DefinedState();
@@ -1308,9 +1316,6 @@ if(gbRenderWorld2)
if(gbRenderVehicles)
CRenderer::RenderVehicles();
}
- // better render these after transparent world
-if(gbRenderFadingInEntities)
- CRenderer::RenderFadingInEntities();
// actual effects here
@@ -1373,7 +1378,7 @@ void
RenderDebugShit(void)
{
PUSH_RENDERGROUP("RenderDebugShit");
- CTheScripts::RenderTheScriptDebugLines();
+ //CTheScripts::RenderTheScriptDebugLines();
#ifndef FINAL
if(gbShowCollisionLines)
CRenderer::RenderCollisionLines();
@@ -1577,12 +1582,8 @@ Idle(void *arg)
#ifdef PC_WATER
CWaterLevel::PreCalcWaterGeometry();
#endif
-#ifdef NEW_RENDERER
- if(gbNewRenderer){
- CWorld::AdvanceCurrentScanCode(); // don't think this is even necessary
- CRenderer::ClearForFrame();
- }
-#endif
+ CWorld::AdvanceCurrentScanCode();
+ CRenderer::ClearForFrame();
CRenderer::ConstructRenderList();
tbEndTimer("CnstrRenderList");
diff --git a/src/core/main.h b/src/core/main.h
index 803afb14..0c43d7f4 100644
--- a/src/core/main.h
+++ b/src/core/main.h
@@ -18,7 +18,7 @@ struct GlobalScene
};
extern GlobalScene Scene;
-extern uint8 work_buff[55000];
+extern uint8 work_buff[102400];
extern char gString[256];
extern char gString2[512];
extern wchar gUString[256];
@@ -35,6 +35,16 @@ extern bool gbShowTimebars;
extern bool gbPrintMemoryUsage;
#endif
+// leeds
+extern bool gMakeResources;
+extern bool gUseChunkFiles;
+extern bool gSecondExportPass;
+extern bool gUseModelResources;
+extern bool gUseResources;
+extern bool gNASTY_NASTY_MEM_SHUTDOWN_HACK;
+extern bool gbPreviewCity;
+extern bool gMultiplayerSuperBrakeOnPause;
+
class CSprite2d;
bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index b9cfc34d..4c2b9388 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -134,20 +134,20 @@ CustomFrontendOptionsPopulate(void)
int fd;
// These work only if we have neo folder, so they're dynamically added
#ifdef EXTENDED_PIPELINES
- const char *vehPipelineNames[] = { "FED_MFX", "FED_NEO" };
+ const char *pipelineNames[] = { "FED_PSP", "FED_PS2","FED_MOB" };
const char *off_on[] = { "FEM_OFF", "FEM_ON" };
fd = CFileMgr::OpenFile("neo/neo.txd","r");
if (fd) {
#ifdef GRAPHICS_MENU_OPTIONS
FrontendOptionSetCursor(MENUPAGE_GRAPHICS_SETTINGS, -3, false);
- FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, vehPipelineNames, ARRAY_SIZE(vehPipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "Graphics", "VehiclePipeline");
- FrontendOptionAddSelect("FED_PRM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::RimlightEnable, false, nil, "Graphics", "NeoRimLight");
+ FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "Graphics", "VehiclePipeline");
+ FrontendOptionAddSelect("FED_WPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::WorldPipeSwitch, false, nil, "Graphics", "WorldPipeline");
FrontendOptionAddSelect("FED_WLM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::LightmapEnable, false, nil, "Graphics", "NeoLightMaps");
FrontendOptionAddSelect("FED_RGL", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::GlossEnable, false, nil, "Graphics", "NeoRoadGloss");
#else
FrontendOptionSetCursor(MENUPAGE_DISPLAY_SETTINGS, -3, false);
- FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, vehPipelineNames, ARRAY_SIZE(vehPipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "Graphics", "VehiclePipeline");
- FrontendOptionAddSelect("FED_PRM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::RimlightEnable, false, nil, "Graphics", "NeoRimLight");
+ FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "Graphics", "VehiclePipeline");
+ FrontendOptionAddSelect("FED_WPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::WorldPipeSwitch, false, nil, "Graphics", "WorldPipeline");
FrontendOptionAddSelect("FED_WLM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::LightmapEnable, false, nil, "Graphics", "NeoLightMaps");
FrontendOptionAddSelect("FED_RGL", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::GlossEnable, false, nil, "Graphics", "NeoRoadGloss");
#endif
@@ -194,7 +194,7 @@ CustomFrontendOptionsPopulate(void)
#define MINI_CASE_SENSITIVE
#include "ini.h"
-mINI::INIFile ini("reVC.ini");
+mINI::INIFile ini("reLCS.ini");
mINI::INIStructure cfg;
bool ReadIniIfExists(const char *cat, const char *key, uint32 *out)
@@ -643,9 +643,6 @@ void SaveINISettings()
StoreIni("CustomPipesValues", "GlossMult", CustomPipes::GlossMult);
#endif
StoreIni("Rendering", "BackfaceCulling", gBackfaceCulling);
-#ifdef NEW_RENDERER
- StoreIni("Rendering", "NewRenderer", gbNewRenderer);
-#endif
#ifdef PROPER_SCALING
StoreIni("Draw", "ProperScaling", CDraw::ms_bProperScaling);
@@ -709,7 +706,6 @@ void FastWeatherCheat();
void OnlyRenderWheelsCheat();
void ChittyChittyBangBangCheat();
void StrongGripCheat();
-void SpecialCarCheats();
void PickUpChicksCheat();
DebugMenuEntry *carCol1;
@@ -830,17 +826,15 @@ SwitchToMission(void)
#endif
static const char *carnames[] = {
- "landstal", "idaho", "stinger", "linerun", "peren", "sentinel", "rio", "firetruk", "trash", "stretch", "manana",
- "infernus", "voodoo", "pony", "mule", "cheetah", "ambulan", "fbicar", "moonbeam", "esperant", "taxi", "washing",
- "bobcat", "mrwhoop", "bfinject", "hunter", "police", "enforcer", "securica", "banshee", "predator", "bus",
- "rhino", "barracks", "cuban", "chopper", "angel", "coach", "cabbie", "stallion", "rumpo", "rcbandit", "romero",
- "packer", "sentxs", "admiral", "squalo", "seaspar", "pizzaboy", "gangbur", "airtrain", "deaddodo", "speeder",
- "reefer", "tropic", "flatbed", "yankee", "caddy", "zebra", "topfun", "skimmer", "pcj600", "faggio", "freeway",
- "rcbaron", "rcraider", "glendale", "oceanic", "sanchez", "sparrow", "patriot", "lovefist", "coastg", "dinghy",
- "hermes", "sabre", "sabretur", "pheonix", "walton", "regina", "comet", "deluxo", "burrito", "spand", "marquis",
- "baggage", "kaufman", "maverick", "vcnmav", "rancher", "fbiranch", "virgo", "greenwoo", "jetmax", "hotring",
- "sandking", "blistac", "polmav", "boxville", "benson", "mesa", "rcgoblin", "hotrina", "hotrinb",
- "bloodra", "bloodrb", "vicechee"
+ "spider", "landstal", "idaho", "stinger", "linerun", "peren", "sentinel", "patriot", "firetruk", "trash", "stretch",
+ "manana", "infernus", "blista", "pony", "mule", "cheetah", "ambulan", "fbicar", "moonbeam", "esperant", "taxi",
+ "kuruma", "bobcat", "mrwhoop", "bfinject", "hearse", "police", "enforcer", "securica", "banshee", "bus", "rhino",
+ "barracks", "dodo", "coach", "cabbie", "stallion", "rumpo", "rcbandit", "bellyup", "mrwongs", "mafia", "yardie",
+ "yakuza", "diablos", "columb", "hoods", "panlant", "flatbed", "yankee", "borgnine", "toyz", "campvan", "ballot",
+ "shelby", "pontiac", "esprit", "ammotruk", "hotrod", "Sindacco_Car", "Forelli_Car", "ferry", "ghost", "speeder",
+ "reefer", "predator", "train", "escape", "chopper", "airtrain", "deaddodo", "angel", "pizzaboy", "noodleboy",
+ "pcj600", "faggio", "freeway", "angel2", "sanchez2", "sanchez", "rcgoblin", "rcraider", "hunter", "maverick",
+ "polmav", "vcnmav"
};
static CTweakVar** TweakVarsList;
@@ -970,11 +964,10 @@ DebugMenuPopulate(void)
DebugMenuAddCmd("Cheats", "Only render wheels", OnlyRenderWheelsCheat);
DebugMenuAddCmd("Cheats", "Chitty chitty bang bang", ChittyChittyBangBangCheat);
DebugMenuAddCmd("Cheats", "Strong grip", StrongGripCheat);
- DebugMenuAddCmd("Cheats", "Special car", SpecialCarCheats);
DebugMenuAddCmd("Cheats", "Pickup chicks", PickUpChicksCheat);
static int spawnCarId = MI_LANDSTAL;
- e = DebugMenuAddVar("Spawn", "Spawn Car ID", &spawnCarId, nil, 1, MI_LANDSTAL, MI_VICECHEE, carnames);
+ e = DebugMenuAddVar("Spawn", "Spawn Car ID", &spawnCarId, nil, 1, MI_SPIDER, MI_VCNMAV, carnames);
DebugMenuEntrySetWrap(e, true);
DebugMenuAddCmd("Spawn", "Spawn Car", [](){
if(spawnCarId == MI_CHOPPER ||
@@ -989,22 +982,19 @@ DebugMenuPopulate(void)
DebugMenuAddCmd("Spawn", "Spawn Stinger", [](){ SpawnCar(MI_STINGER); });
DebugMenuAddCmd("Spawn", "Spawn Infernus", [](){ SpawnCar(MI_INFERNUS); });
DebugMenuAddCmd("Spawn", "Spawn Cheetah", [](){ SpawnCar(MI_CHEETAH); });
- DebugMenuAddCmd("Spawn", "Spawn Phoenix", [](){ SpawnCar(MI_PHEONIX); });
+ DebugMenuAddCmd("Spawn", "Spawn Esprit", [](){ SpawnCar(MI_ESPRIT); });
DebugMenuAddCmd("Spawn", "Spawn Banshee", [](){ SpawnCar(MI_BANSHEE); });
DebugMenuAddCmd("Spawn", "Spawn Esperanto", [](){ SpawnCar(MI_ESPERANT); });
DebugMenuAddCmd("Spawn", "Spawn Stallion", [](){ SpawnCar(MI_STALLION); });
- DebugMenuAddCmd("Spawn", "Spawn Admiral", [](){ SpawnCar(MI_ADMIRAL); });
- DebugMenuAddCmd("Spawn", "Spawn Washington", [](){ SpawnCar(MI_WASHING); });
+ DebugMenuAddCmd("Spawn", "Spawn Mafia", [](){ SpawnCar(MI_MAFIA); });
+ DebugMenuAddCmd("Spawn", "Spawn Kuruma", [](){ SpawnCar(MI_KURUMA); });
DebugMenuAddCmd("Spawn", "Spawn Taxi", [](){ SpawnCar(MI_TAXI); });
DebugMenuAddCmd("Spawn", "Spawn Police", [](){ SpawnCar(MI_POLICE); });
DebugMenuAddCmd("Spawn", "Spawn Enforcer", [](){ SpawnCar(MI_ENFORCER); });
- DebugMenuAddCmd("Spawn", "Spawn Cuban", [](){ SpawnCar(MI_CUBAN); });
- DebugMenuAddCmd("Spawn", "Spawn Voodoo", [](){ SpawnCar(MI_VOODOO); });
+ DebugMenuAddCmd("Spawn", "Spawn Diablo", [](){ SpawnCar(MI_DIABLOS); });
+ DebugMenuAddCmd("Spawn", "Spawn Yardie", [](){ SpawnCar(MI_YARDIE); });
DebugMenuAddCmd("Spawn", "Spawn BF injection", [](){ SpawnCar(MI_BFINJECT); });
DebugMenuAddCmd("Spawn", "Spawn Maverick", [](){ SpawnCar(MI_MAVERICK); });
- DebugMenuAddCmd("Spawn", "Spawn VCN Maverick", [](){ SpawnCar(MI_VCNMAV); });
- DebugMenuAddCmd("Spawn", "Spawn Sparrow", [](){ SpawnCar(MI_SPARROW); });
- DebugMenuAddCmd("Spawn", "Spawn Sea Sparrow", [](){ SpawnCar(MI_SEASPAR); });
DebugMenuAddCmd("Spawn", "Spawn Hunter", [](){ SpawnCar(MI_HUNTER); });
DebugMenuAddCmd("Spawn", "Spawn Rhino", [](){ SpawnCar(MI_RHINO); });
DebugMenuAddCmd("Spawn", "Spawn Firetruck", [](){ SpawnCar(MI_FIRETRUCK); });
@@ -1012,10 +1002,9 @@ DebugMenuPopulate(void)
DebugMenuAddCmd("Spawn", "Spawn PCJ 600", [](){ SpawnCar(MI_PCJ600); });
DebugMenuAddCmd("Spawn", "Spawn Faggio", [](){ SpawnCar(MI_FAGGIO); });
DebugMenuAddCmd("Spawn", "Spawn Freeway", [](){ SpawnCar(MI_FREEWAY); });
- DebugMenuAddCmd("Spawn", "Spawn Squalo", [](){ SpawnCar(MI_SQUALO); });
- DebugMenuAddCmd("Spawn", "Spawn Skimmer", [](){ SpawnCar(MI_SKIMMER); });
DebugMenuAddVarBool8("Render", "Draw hud", &CHud::m_Wants_To_Draw_Hud, nil);
+ DebugMenuAddVar("Render", "Brightness", &FrontEndMenuManager.m_PrefsBrightness, nil, 16, 0, 700, nil);
#ifdef PROPER_SCALING
DebugMenuAddVarBool8("Render", "Proper Scaling", &CDraw::ms_bProperScaling, nil);
#endif
@@ -1031,10 +1020,8 @@ DebugMenuPopulate(void)
DebugMenuAddVarBool8("Render", "VSynch", &FrontEndMenuManager.m_PrefsVsync, nil);
DebugMenuAddVar("Render", "Max FPS", &RsGlobal.maxFPS, nil, 1, 1, 1000, nil);
#ifdef NEW_RENDERER
- DebugMenuAddVarBool8("Render", "New Renderer", &gbNewRenderer, nil);
extern bool gbRenderRoads;
extern bool gbRenderEverythingBarRoads;
-extern bool gbRenderFadingInUnderwaterEntities;
extern bool gbRenderFadingInEntities;
extern bool gbRenderWater;
extern bool gbRenderBoats;
@@ -1044,7 +1031,6 @@ extern bool gbRenderWorld1;
extern bool gbRenderWorld2;
DebugMenuAddVarBool8("Debug Render", "gbRenderRoads", &gbRenderRoads, nil);
DebugMenuAddVarBool8("Debug Render", "gbRenderEverythingBarRoads", &gbRenderEverythingBarRoads, nil);
- DebugMenuAddVarBool8("Debug Render", "gbRenderFadingInUnderwaterEntities", &gbRenderFadingInUnderwaterEntities, nil);
DebugMenuAddVarBool8("Debug Render", "gbRenderFadingInEntities", &gbRenderFadingInEntities, nil);
DebugMenuAddVarBool8("Debug Render", "gbRenderWater", &gbRenderWater, nil);
DebugMenuAddVarBool8("Debug Render", "gbRenderBoats", &gbRenderBoats, nil);
@@ -1052,11 +1038,12 @@ extern bool gbRenderWorld2;
DebugMenuAddVarBool8("Debug Render", "gbRenderWorld0", &gbRenderWorld0, nil);
DebugMenuAddVarBool8("Debug Render", "gbRenderWorld1", &gbRenderWorld1, nil);
DebugMenuAddVarBool8("Debug Render", "gbRenderWorld2", &gbRenderWorld2, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbPreviewCity", &gbPreviewCity, nil);
#endif
#ifdef EXTENDED_COLOURFILTER
- static const char *filternames[] = { "None", "Simple", "Normal", "Mobile" };
- e = DebugMenuAddVar("Render", "Colourfilter", &CPostFX::EffectSwitch, nil, 1, CPostFX::POSTFX_OFF, CPostFX::POSTFX_MOBILE, filternames);
+ static const char *filternames[] = { "None", "PSP", "PS2" };
+ e = DebugMenuAddVar("Render", "Colourfilter", &CPostFX::EffectSwitch, nil, 1, CPostFX::POSTFX_OFF, CPostFX::POSTFX_PS2, filternames);
DebugMenuEntrySetWrap(e, true);
DebugMenuAddVar("Render", "Intensity", &CPostFX::Intensity, nil, 0.05f, 0, 10.0f);
DebugMenuAddVarBool8("Render", "Blur", &CPostFX::BlurOn, nil);
@@ -1072,18 +1059,25 @@ extern bool gbRenderWorld2;
DebugMenuAddVarBool32("Render", "MatFX env map use matcolor", &rw::MatFX::envMapUseMatColor, nil);
#endif
#ifdef EXTENDED_PIPELINES
- static const char *vehpipenames[] = { "MatFX", "Neo" };
+ static const char *worldpipenames[] = { "PSP", "PS2", "Mobile" };
+ e = DebugMenuAddVar("Render", "World Rendering", &CustomPipes::WorldPipeSwitch, nil,
+ 1, CustomPipes::WORLDPIPE_PSP, CustomPipes::WORLDPIPE_MOBILE, worldpipenames);
+ DebugMenuEntrySetWrap(e, true);
+ static const char *vehpipenames[] = { "PSP", "PS2", "Mobile" };
e = DebugMenuAddVar("Render", "Vehicle Pipeline", &CustomPipes::VehiclePipeSwitch, nil,
- 1, CustomPipes::VEHICLEPIPE_MATFX, CustomPipes::VEHICLEPIPE_NEO, vehpipenames);
+ 1, CustomPipes::VEHICLEPIPE_PSP, CustomPipes::VEHICLEPIPE_MOBILE, vehpipenames);
DebugMenuEntrySetWrap(e, true);
- DebugMenuAddVar("Render", "Neo Vehicle Shininess", &CustomPipes::VehicleShininess, nil, 0.1f, 0, 1.0f);
- DebugMenuAddVar("Render", "Neo Vehicle Specularity", &CustomPipes::VehicleSpecularity, nil, 0.1f, 0, 1.0f);
+ DebugMenuAddVarBool8("Render", "Glass Cars cheat", &CustomPipes::gGlassCarsCheat, nil);
+extern bool gbRenderDebugEnvMap;
+ DebugMenuAddVarBool8("Render", "Show Env map", &gbRenderDebugEnvMap, nil);
+// DebugMenuAddVar("Render", "Neo Vehicle Shininess", &CustomPipes::VehicleShininess, nil, 0.1f, 0, 1.0f);
+// DebugMenuAddVar("Render", "Neo Vehicle Specularity", &CustomPipes::VehicleSpecularity, nil, 0.1f, 0, 1.0f);
DebugMenuAddVarBool8("Render", "Neo Ped Rim light enable", &CustomPipes::RimlightEnable, nil);
DebugMenuAddVar("Render", "Mult", &CustomPipes::RimlightMult, nil, 0.1f, 0, 1.0f);
- DebugMenuAddVarBool8("Render", "Neo World Lightmaps enable", &CustomPipes::LightmapEnable, nil);
- DebugMenuAddVar("Render", "Mult", &CustomPipes::LightmapMult, nil, 0.1f, 0, 1.0f);
- DebugMenuAddVarBool8("Render", "Neo Road Gloss enable", &CustomPipes::GlossEnable, nil);
- DebugMenuAddVar("Render", "Mult", &CustomPipes::GlossMult, nil, 0.1f, 0, 1.0f);
+// DebugMenuAddVarBool8("Render", "Neo World Lightmaps enable", &CustomPipes::LightmapEnable, nil);
+// DebugMenuAddVar("Render", "Mult", &CustomPipes::LightmapMult, nil, 0.1f, 0, 1.0f);
+// DebugMenuAddVarBool8("Render", "Neo Road Gloss enable", &CustomPipes::GlossEnable, nil);
+// DebugMenuAddVar("Render", "Mult", &CustomPipes::GlossMult, nil, 0.1f, 0, 1.0f);
#endif
DebugMenuAddVarBool8("Debug Render", "Show Ped Paths", &gbShowPedPaths, nil);
DebugMenuAddVarBool8("Debug Render", "Show Car Paths", &gbShowCarPaths, nil);
@@ -1137,24 +1131,30 @@ extern bool gbRenderWorld2;
#ifdef MISSION_SWITCHER
DebugMenuEntry *missionEntry;
static const char* missions[] = {
- "Initial", "Intro", "An Old Friend", "The Party", "Back Alley Brawl", "Jury Fury", "Riot",
- "Treacherous Swine", "Mall Shootout", "Guardian Angels", "Sir, Yes Sir!", "All Hands On Deck!",
- "The Chase", "Phnom Penh '86", "The Fastest Boat", "Supply & Demand", "Rub Out", "Death Row",
- "Four Iron", "Demolition Man", "Two Bit Hit", "No Escape?", "The Shootist", "The Driver",
- "The Job", "Gun Runner", "Boomshine Saigon", "Recruitment Drive", "Dildo Dodo", "Martha's Mug Shot",
- "G-spotlight", "Shakedown", "Bar Brawl", "Cop Land", "Spilling the Beans", "Hit the Courier",
- "Printworks Buy", "Sunshine Autos", "Interglobal Films Buy", "Cherry Popper Icecreams Buy",
- "Kaufman Cabs Buy", "Malibu Club Buy", "The Boatyard Buy", "Pole Position Club Buy", "El Swanko Casa Buy",
- "Links View Apartment Buy", "Hyman Condo Buy", "Ocean Heighs Aprt. Buy", "1102 Washington Street Buy",
- "Vice Point Buy", "Skumole Shack Buy", "Cap the Collector", "Keep your Friends Close...",
- "Alloy Wheels of Steel", "Messing with the Man", "Hog Tied", "Stunt Boat Challenge", "Cannon Fodder",
- "Naval Engagement", "Trojan Voodoo", "Juju Scramble", "Bombs Away!", "Dirty Lickin's", "Love Juice",
- "Psycho Killer", "Publicity Tour", "Weapon Range", "Road Kill", "Waste the Wife", "Autocide",
- "Check Out at the Check In", "Loose Ends", "V.I.P.", "Friendly Rivalry", "Cabmaggedon", "TAXI DRIVER",
- "PARAMEDIC", "FIREFIGHTER", "VIGILANTE", "HOTRING", "BLOODRING", "DIRTRING", "Sunshine Autos Races",
- "Distribution", "Downtown Chopper Checkpoint", "Ocean Beach Chopper Checkpoint", "Vice Point Chopper Checkpoint",
- "Little Haiti Chopper Checkpoint", "Trial by Dirt", "Test Track", "PCJ Playground", "Cone Crazy",
- "PIZZA BOY", "RC Raider Pickup", "RC Bandit Race", "RC Baron Race", "Checkpoint Charlie"
+ "initial: objects", "initial: hidden packages", "initial: car generators", "initial: pickups", "initial: unique stunt jumps",
+ "initial: player", "initial: general info", "initial: lods", "initial: weapons", "Home Sweet Home", "Taxi-Driver Sub-Mission",
+ "Paramedic Sub-Mission", "Vigilante Sub-Mission", "Karmageddon", "Firefighter Sub-Mission", "Trash Dash", "RC Triad Take-Down",
+ "Thrashin' RC", "Ragin' RC", "Chasin' RC", "GO GO Faggio", "Noodleboy", "Pizzaboy", "Wong Side Of The Tracks", "Bumps and Grinds: Course 1",
+ "Bumps and Grinds: Course 2", "Bumps and Grinds: Course 3", "Bumps and Grinds: Course 4", "Bumps and Grinds: Course 5", "Bumps and Grinds: Course 6",
+ "Bumps and Grinds: Course 7", "Bumps and Grinds: Course 8", "Bumps and Grinds: Course 9", "Bumps and Grinds: Course 10", "Car Salesman", "Bike Salesman",
+ "RACE: Low-Rider Rumble", "RACE: Deimos Dash", "RACE: Wi-Cheetah Run", "RACE: Red Light Racing", "RACE: Torrington TT", "RACE: Gangsta GP",
+ "Scooter Shooter", "AWOL Angel", "9mm Mayhem", "Scrapyard Challenge", "See the Sight Before your Flight", "SlashTV", "Slacker (Vincenzo)",
+ "Dealing Revenge (Vincenzo)", "Snuff (Vincenzo)", "Smash and Grab (Vincenzo)", "Hot Wheels (Vincenzo)", "The Portland Chainsaw Masquerade (Vincenzo)",
+ "The Offer (Salvatore)", "Ho Selecta! (Salvatore)", "Frighteners (Salvatore)", "Rollercoaster Ride (Salvatore)", "Contra-Banned (Salvatore)",
+ "Sindacco Sabotage (Salvatore)", "The Trouble with Triads (Salvatore)", "Driving Mr Leone (Salvatore)", "conversation (JD)", "Bone Voyeur! (JD)",
+ "Don in 60 Seconds (JD)", "A Volatile Situation (JD)", "Blow up 'Dolls' (JD)", "Salvatore's Salvation (JD)", "The Guns of Leone (JD)",
+ "Calm before the Storm (JD)", "The Made Man (JD)", "Snappy Dresser (Ma Cipriani)", "Big Rumble in Little China (Ma Cipriani)", "Grease Sucho (Ma Cipriani)",
+ "Dead Meat (Ma Cipriani)", "No Son of Mine (Ma Cipriani)", "Shop 'til you Strop (Maria)", "Taken for a Ride (Maria)", "Booby Prize (Maria)",
+ "Biker Heat (Maria)", "Overdose of Trouble (Maria)", "Making Toni (Salvatore)", "A Walk In The Park (Salvatore)", "Caught In The Act (Salvatore)",
+ "Search And Rescue (Salvatore)", "Taking The Peace (Salvatore)", "Shoot The Messenger (Salvatore)", "Sayonara Sindaccos (Leon McAffrey)",
+ "The Whole 9 Yardies (Leon McAffrey)", "Crazy '69' (Leon McAffrey)", "Night Of The Livid Dreads (Leon McAffrey)", "Munitions Dump (Leon McAffrey)",
+ "The Morgue Party Candidate (Donald Love)", "Steering The Vote (Donald Love)", "Cam-Pain (Donald Love)", "Friggin' The Riggin' (Donald Love)",
+ "Love & Bullets (Donald Love)", "Counterfeit Count (Donald Love)", "Love On The Rocks (Donald Love)", "L.C. Confidential (Church Confessional)",
+ "The Passion Of The Heist (Church Confessional)", "Karmageddon (Church Confessional)", "False Idols (Church Confessional)", "Rough Justice (Salvatore)",
+ "Dead Reckoning (Salvatore)", "Shogun Showdown (Salvatore)", "The Shoreside Redemption (Salvatore)", "The Sicilian Gambit (Salvatore)",
+ "Panlantic Land Grab (Donald Love)", "Stop the Press (Donald Love)", "Morgue Party Resurrection (Donald Love)", "No Money, Mo' Problems (Donald Love)",
+ "Bringing the House Down (Donald Love)", "Love on the Run (Donald Love)", "More Deadly than the Male (Toshiko Kasen)", "Cash Clash (Toshiko Kasen)",
+ "A Date with Death (Toshiko Kasen)", "Cash in Kazuki's Chips (Toshiko Kasen)"
};
missionEntry = DebugMenuAddVar("Game", "Select mission", &nextMissionToSwitch, nil, 1, 0, ARRAY_SIZE(missions) - 1, missions);
@@ -1212,7 +1212,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
strcat_s(re3_buff, re3_buffsize, "(Press Retry to debug the application)");
- nCode = ::MessageBoxA(nil, re3_buff, "REVC Assertion Failed!",
+ nCode = ::MessageBoxA(nil, re3_buff, "RELCS Assertion Failed!",
MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
if (nCode == IDABORT)
@@ -1233,7 +1233,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
abort();
#else
// TODO
- printf("\nREVC ASSERT FAILED\n\tFile: %s\n\tLine: %d\n\tFunction: %s\n\tExpression: %s\n",filename,lineno,func,expr);
+ printf("\nRELCS ASSERT FAILED\n\tFile: %s\n\tLine: %d\n\tFunction: %s\n\tExpression: %s\n",filename,lineno,func,expr);
assert(false);
#endif
}
@@ -1287,14 +1287,14 @@ void re3_usererror(const char *format, ...)
vsprintf_s(re3_buff, re3_buffsize, format, va);
va_end(va);
- ::MessageBoxA(nil, re3_buff, "REVC Error!",
+ ::MessageBoxA(nil, re3_buff, "RELCS Error!",
MB_OK|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
raise(SIGABRT);
_exit(3);
#else
vsprintf(re3_buff, format, va);
- printf("\nREVC Error!\n\t%s\n",re3_buff);
+ printf("\nRELCS Error!\n\t%s\n",re3_buff);
assert(false);
#endif
}
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index b2fcfbc7..ed432e77 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -1,10 +1,10 @@
#include "common.h"
-#include "VuVector.h"
#include "General.h"
#include "RwHelper.h"
#include "ModelIndices.h"
#include "Timer.h"
+#include "Streaming.h"
#include "Entity.h"
#include "Object.h"
#include "World.h"
@@ -27,6 +27,12 @@
#include "Dummy.h"
#include "WindModifiers.h"
#include "SaveBuf.h"
+#include "SpecialFX.h"
+#include "VisibilityPlugins.h"
+#include "RpAnimBlend.h"
+#include "CutsceneMgr.h"
+
+//--LCS: file done except TODO for distance alpha
int gBuildings;
@@ -79,6 +85,11 @@ CEntity::CEntity(void)
bUnderwater = false;
bHasPreRenderEffects = false;
+ bIsTreeModel = false;
+ bIsVehicle = false;
+ bIsPed = false;
+ bMakeVisible = false;
+
m_scanCode = 0;
m_modelIndex = -1;
m_rwObject = nil;
@@ -97,6 +108,8 @@ void
CEntity::SetModelIndex(uint32 id)
{
m_modelIndex = id;
+ bIsTreeModel = IsTreeModel(m_modelIndex);
+ bDrawLast |= bIsTreeModel;
bHasPreRenderEffects = HasPreRenderEffects();
CreateRwObject();
}
@@ -105,6 +118,8 @@ void
CEntity::SetModelIndexNoCreate(uint32 id)
{
m_modelIndex = id;
+ bIsTreeModel = IsTreeModel(m_modelIndex);
+ bDrawLast |= bIsTreeModel;
bHasPreRenderEffects = HasPreRenderEffects();
}
@@ -127,6 +142,7 @@ CEntity::CreateRwObject(void)
else if(RwObjectGetType(m_rwObject) == rpCLUMP)
GetMatrix().AttachRW(RwFrameGetMatrix(RpClumpGetFrame((RpClump *)m_rwObject)), false);
+ // useless IsTextureLoaded();
mi->AddRef();
}
}
@@ -183,9 +199,11 @@ CEntity::DeleteRwObject(void)
if(m_rwObject){
if(RwObjectGetType(m_rwObject) == rpATOMIC){
f = RpAtomicGetFrame((RpAtomic*)m_rwObject);
+ CStreaming::UnregisterInstance((RpAtomic*)m_rwObject, nil);
RpAtomicDestroy((RpAtomic*)m_rwObject);
RwFrameDestroy(f);
}else if(RwObjectGetType(m_rwObject) == rpCLUMP){
+ CStreaming::UnregisterInstance((RpClump*)m_rwObject);
if(IsClumpSkinned((RpClump*)m_rwObject))
RpClumpForAllAtomics((RpClump*)m_rwObject, AtomicRemoveAnimFromSkinCB, nil);
RpClumpDestroy((RpClump*)m_rwObject);
@@ -251,9 +269,18 @@ CEntity::UpdateRwFrame(void)
RwFrameUpdateObjects((RwFrame*)rwObjectGetParent(m_rwObject));
}
+bool
+PauseEntityAnims(void)
+{
+ return CSpecialFX::bSnapShotActive;
+}
+
void
CEntity::UpdateRpHAnim(void)
{
+ if(PauseEntityAnims())
+ return;
+
if(IsClumpSkinned(GetClump())){
RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(GetClump());
RpHAnimHierarchyUpdateMatrices(hier);
@@ -315,9 +342,10 @@ CEntity::PreRender(void)
if(!bHasPreRenderEffects)
return;
+ // separate function in LCS but we don't know the name
switch(m_type){
case ENTITY_TYPE_BUILDING:
- if(IsTreeModel(GetModelIndex())){
+ if(bIsTreeModel){
float dist = (TheCamera.GetPosition() - GetPosition()).Magnitude2D();
CObject::fDistToNearestTree = Min(CObject::fDistToNearestTree, dist);
ModifyMatrixForTreeInWind();
@@ -416,12 +444,53 @@ void
CEntity::Render(void)
{
if(m_rwObject){
- bImBeingRendered = true;
- if(RwObjectGetType(m_rwObject) == rpATOMIC)
- RpAtomicRender((RpAtomic*)m_rwObject);
- else
- RpClumpRender((RpClump*)m_rwObject);
- bImBeingRendered = false;
+#ifdef VIS_DISTANCE_ALPHA
+ if(CVisibilityPlugins::GetObjectDistanceAlpha(m_rwObject) != 0)
+#endif
+ {
+ // TODO(LCS): LCS does not use bImBeingRendered here,
+ // but that may be due to the streamed world. better keep it for safety
+ bImBeingRendered = true;
+ if(RwObjectGetType(m_rwObject) == rpATOMIC)
+ RpAtomicRender((RpAtomic*)m_rwObject);
+ else
+ RpClumpRender((RpClump*)m_rwObject);
+ bImBeingRendered = false;
+ }
+ }
+}
+
+#ifdef VIS_DISTANCE_ALPHA
+void
+CEntity::UpdateDistanceFade(void)
+{
+ // bDistanceFade is only valid when entity is in alpha list
+ // but we're always checking it here, see fix in CRenderer
+ int alpha = CVisibilityPlugins::GetObjectDistanceAlpha(m_rwObject);
+ if(CCutsceneMgr::IsRunning() || TheCamera.WorldViewerBeingUsed)
+ alpha = 255;
+ else if(bDistanceFade)
+ alpha = Max(alpha-16, 0);
+ else if(alpha < 255)
+ alpha = Min(alpha+32, 255);
+ CVisibilityPlugins::SetObjectDistanceAlpha(m_rwObject, alpha);
+}
+#endif
+
+void
+CEntity::UpdateAnim(void)
+{
+ if(PauseEntityAnims())
+ return;
+
+ if(m_rwObject && RwObjectGetType(m_rwObject) == rpCLUMP && RpAnimBlendClumpGetFirstAssociation(GetClump())) {
+ if (IsObject())
+ RpAnimBlendClumpUpdateAnimations(GetClump(), CTimer::GetTimeStepNonClippedInSeconds());
+ else {
+ if (!bOffscreen)
+ bOffscreen = !GetIsOnScreen();
+ RpAnimBlendClumpUpdateAnimations(GetClump(), CTimer::GetTimeStepInSeconds(), !bOffscreen);
+ }
}
}
@@ -434,6 +503,12 @@ CEntity::GetIsTouching(CVUVECTOR const &center, float radius)
}
bool
+CEntity::GetIsTouching(CEntity *other)
+{
+ return sq(GetBoundRadius()+other->GetBoundRadius()) > (GetBoundCentre()-other->GetBoundCentre()).MagnitudeSqr();
+}
+
+bool
CEntity::IsVisible(void)
{
return m_rwObject && bIsVisible && GetIsOnScreen();
@@ -634,10 +709,15 @@ CEntity::SetupBigBuilding(void)
m_level = CTheZones::GetLevelFromPosition(&GetPosition());
if(mi->m_lodDistances[0] <= 2000.0f)
bStreamBIGBuilding = true;
- if(mi->m_lodDistances[0] > 2500.0f || mi->m_ignoreDrawDist)
+ if(m_modelIndex == islandLODindust ||
+ m_modelIndex == islandLODcomInd ||
+ m_modelIndex == islandLODcomSub ||
+ m_modelIndex == islandLODsubInd ||
+ m_modelIndex == islandLODsubCom ||
+ mi->m_lodDistances[0] > 5000.0f || mi->m_ignoreDrawDist)
m_level = LEVEL_GENERIC;
- else if(m_level == LEVEL_GENERIC)
- printf("%s isn't in a level\n", mi->GetModelName());
+// else if(m_level == LEVEL_GENERIC)
+// printf("%s isn't in a level\n", mi->GetModelName());
}
float WindTabel[] = {
diff --git a/src/entities/Entity.h b/src/entities/Entity.h
index 957ee3bf..6f948d49 100644
--- a/src/entities/Entity.h
+++ b/src/entities/Entity.h
@@ -14,6 +14,7 @@ enum eEntityType
ENTITY_TYPE_PED,
ENTITY_TYPE_OBJECT,
ENTITY_TYPE_DUMMY,
+ ENTITY_TYPE_MULTIPLAYER
};
enum eEntityStatus
@@ -26,6 +27,8 @@ enum eEntityStatus
STATUS_WRECKED,
STATUS_TRAIN_MOVING,
STATUS_TRAIN_NOT_MOVING,
+ STATUS_FERRY_MOVING,
+ STATUS_FERRY_NOT_MOVING,
STATUS_HELI,
STATUS_PLANE,
STATUS_PLAYER_REMOTE,
@@ -43,6 +46,7 @@ private:
uint32 m_status : 5;
public:
// flagsA
+ // LCS flagsB 02
uint32 bUsesCollision : 1; // does entity use collision
uint32 bCollisionProcessed : 1; // has object been processed by a ProcessEntityCollision function
uint32 bIsStatic : 1; // is entity static
@@ -50,6 +54,7 @@ public:
uint32 bPedPhysics : 1;
uint32 bIsStuck : 1; // is entity stuck
uint32 bIsInSafePosition : 1; // is entity in a collision free safe position
+ // LCS flagsC
uint32 bUseCollisionRecords : 1;
// flagsB
@@ -60,6 +65,7 @@ public:
uint32 bRenderScorched : 1;
uint32 bHasBlip : 1;
uint32 bIsBIGBuilding : 1; // Set if this entity is a big building
+ // LCS flagsD
uint32 bStreamBIGBuilding : 1; // set when draw dist <= 2000
// flagsC
@@ -70,6 +76,7 @@ public:
uint32 bMeleeProof : 1;
uint32 bOnlyDamagedByPlayer : 1;
uint32 bStreamingDontDelete : 1; // Dont let the streaming remove this
+ // LCS flagsE
uint32 bRemoveFromWorld : 1; // remove this entity next time it should be processed
// flagsD
@@ -80,6 +87,7 @@ public:
uint32 bDrawLast : 1; // draw object last
uint32 bNoBrightHeadLights : 1;
uint32 bDoNotRender : 1; //-- only applies to CObjects apparently
+ // LCS flagsF
uint32 bDistanceFade : 1; // Fade entity because it is far away
// flagsE
@@ -91,6 +99,12 @@ public:
uint32 bUnderwater : 1; // this object is underwater change drawing order
uint32 bHasPreRenderEffects : 1; // Object has a prerender effects attached to it
+ // LCS flagsG
+ uint32 bIsTreeModel : 1;
+ uint32 bIsVehicle : 1; // not sure what exactly these two are for
+ uint32 bIsPed : 1;
+ uint32 bMakeVisible : 1;
+
uint16 m_scanCode;
uint16 m_randomSeed;
int16 m_modelIndex;
@@ -118,6 +132,7 @@ public:
virtual void Add(void);
virtual void Remove(void);
+ virtual bool UpdatesInCutscene(void) { return false; }
virtual void SetModelIndex(uint32 id);
virtual void SetModelIndexNoCreate(uint32 id);
virtual void CreateRwObject(void);
@@ -129,6 +144,7 @@ public:
virtual void Teleport(CVector v) {}
virtual void PreRender(void);
virtual void Render(void);
+ virtual void UpdateAnim(void);
virtual bool SetupLighting(void);
virtual void RemoveLighting(bool);
virtual void FlagToDestroyWhenNextProcessed(void) {}
@@ -138,6 +154,7 @@ public:
bool IsPed(void) { return m_type == ENTITY_TYPE_PED; }
bool IsObject(void) { return m_type == ENTITY_TYPE_OBJECT; }
bool IsDummy(void) { return m_type == ENTITY_TYPE_DUMMY; }
+ bool IsMultiplayer(void) { return m_type == ENTITY_TYPE_MULTIPLAYER; }
RpAtomic *GetAtomic(void) {
assert(RwObjectGetType(m_rwObject) == rpATOMIC);
@@ -148,11 +165,15 @@ public:
return (RpClump*)m_rwObject;
}
+#ifdef VIS_DISTANCE_ALPHA
+ void UpdateDistanceFade(void);
+#endif
void GetBoundCentre(CVUVECTOR &out);
CVector GetBoundCentre(void);
float GetBoundRadius(void);
float GetDistanceFromCentreOfMassToBaseOfModel(void);
bool GetIsTouching(CVUVECTOR const &center, float r);
+ bool GetIsTouching(CEntity *other);
bool GetIsOnScreen(void);
bool GetIsOnScreenComplex(void);
bool IsVisible(void);
diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp
index fb796fcd..ef306d5a 100644
--- a/src/entities/Physical.cpp
+++ b/src/entities/Physical.cpp
@@ -20,10 +20,12 @@
#include "Bike.h"
#include "Pickups.h"
#include "Physical.h"
+#include "ColStore.h"
+#include "Script.h"
+
+//--LCS: mostly done
-#ifdef WALLCLIMB_CHEAT
bool gGravityCheat;
-#endif
CPhysical::CPhysical(void)
@@ -82,6 +84,9 @@ CPhysical::CPhysical(void)
bIsFrozen = false;
bDontLoadCollision = false;
+
+ phys_lcs_unk1 = true;
+ phys_lcs_unk2 = 0;
}
CPhysical::~CPhysical(void)
@@ -122,6 +127,9 @@ CPhysical::Add(void)
case ENTITY_TYPE_OBJECT:
list = &s->m_lists[ENTITYLIST_OBJECTS];
break;
+ case ENTITY_TYPE_MULTIPLAYER:
+ list = &s->m_lists[ENTITYLIST_MULTIPLAYER];
+ break;
default:
assert(0);
}else switch(m_type){
@@ -134,6 +142,9 @@ CPhysical::Add(void)
case ENTITY_TYPE_OBJECT:
list = &s->m_lists[ENTITYLIST_OBJECTS_OVERLAP];
break;
+ case ENTITY_TYPE_MULTIPLAYER:
+ list = &s->m_lists[ENTITYLIST_MULTIPLAYER];
+ break;
default:
assert(0);
}
@@ -154,6 +165,37 @@ CPhysical::Remove(void)
}
}
+static void
+MoveVehicleToSafety(CVehicle* pVehicle)
+{
+ if (pVehicle->VehicleCreatedBy != MISSION_VEHICLE) {
+ CVector2D pos = LevelPos(CGame::currLevel);
+ int node = ThePaths.FindNodeClosestToCoors(CVector(pos.x, pos.y, 10.0f), PATH_CAR, 999999.9f, true, true);
+ CVector nodePos = ThePaths.FindNodeCoorsForScript(node);
+ float orientation = ThePaths.FindNodeOrientationForCarPlacement(node);
+ nodePos.x += 0.1f;
+ nodePos.y += 0.1f;
+ pVehicle->Teleport(nodePos + CVector(0.0f, 0.0f, pVehicle->GetDistanceFromCentreOfMassToBaseOfModel()));
+ CTheScripts::ClearSpaceForMissionEntity(nodePos, pVehicle);
+ pVehicle->AutoPilot.m_nCarMission = MISSION_CRUISE;
+ CCarCtrl::JoinCarWithRoadSystem(pVehicle);
+ }
+}
+
+static void
+MovePedToSafety(CPed* pPed)
+{
+ if (pPed->CharCreatedBy == RANDOM_CHAR) {
+ CVector2D pos = LevelPos(CGame::currLevel);
+ int node = ThePaths.FindNodeClosestToCoors(CVector(pos.x, pos.y, 10.0f), PATH_CAR, 999999.9f, true, true);
+ CVector nodePos = ThePaths.FindNodeCoorsForScript(node);
+ nodePos.x += 0.1f;
+ nodePos.y += 0.1f;
+ pPed->Teleport(nodePos + CVector(0.0f, 0.0f, pPed->GetDistanceFromCentreOfMassToBaseOfModel()));
+ CTheScripts::ClearSpaceForMissionEntity(nodePos, pPed);
+ }
+}
+
void
CPhysical::RemoveAndAdd(void)
{
@@ -169,10 +211,53 @@ CPhysical::RemoveAndAdd(void)
ystart = CWorld::GetSectorIndexY(bounds.top);
yend = CWorld::GetSectorIndexY(bounds.bottom);
ymid = CWorld::GetSectorIndexY((bounds.top + bounds.bottom)/2.0f);
- assert(xstart >= 0);
- assert(xend < NUMSECTORS_X);
- assert(ystart >= 0);
- assert(yend < NUMSECTORS_Y);
+ //assert(xstart >= 0);
+ //assert(xend < NUMSECTORS_X);
+ //assert(ystart >= 0);
+ //assert(yend < NUMSECTORS_Y);
+
+ // this is basically a replacement for the asserts above
+ if (xstart < 0 || xstart >= NUMSECTORS_X || ystart < 0 || ystart >= NUMSECTORS_Y) {
+ printf("*****************************\n");
+ printf("ENTITY GONE OUT OF WORLD! :(\n");
+ printf("model id = %d\n", GetModelIndex());
+ printf("type = %d\n", GetType());
+ printf("bound cent = %f %f %f\n",
+ (GetMatrix() * GetColModel()->boundingSphere.center).x,
+ (GetMatrix() * GetColModel()->boundingSphere.center).y,
+ (GetMatrix() * GetColModel()->boundingSphere.center).z);
+ switch (GetType()) {
+ case ENTITY_TYPE_PED:
+ printf("ped created by = %d\n", ((CPed*)this)->CharCreatedBy);
+ break;
+ case ENTITY_TYPE_VEHICLE:
+ printf("vehcile created by = %d\n", ((CVehicle*)this)->VehicleCreatedBy);
+ break;
+ case ENTITY_TYPE_OBJECT:
+ printf("object created by = %d\n", ((CObject*)this)->ObjectCreatedBy);
+ break;
+ case ENTITY_TYPE_DUMMY:
+ printf("no dummy created by info\n");
+ break;
+ default:
+ printf("unknown entity type to be out of world??\n");
+ }
+ printf("*****************************\n");
+ if (GetType() == ENTITY_TYPE_VEHICLE){
+ MoveVehicleToSafety((CVehicle*)this);
+ }
+ else if (GetType() == ENTITY_TYPE_PED) {
+ CPed* pThisPed = ((CPed*)this);
+ if (pThisPed->bInVehicle && pThisPed->m_pMyVehicle)
+ MoveVehicleToSafety(pThisPed->m_pMyVehicle);
+ else if (GetType() == ENTITY_TYPE_PED) // why?
+ MovePedToSafety(pThisPed);
+ else
+ return;
+ }
+ else
+ return;
+ }
// we'll try to recycle nodes from here
CEntryInfoNode *next = m_entryInfoList.first;
@@ -190,6 +275,9 @@ CPhysical::RemoveAndAdd(void)
case ENTITY_TYPE_OBJECT:
list = &s->m_lists[ENTITYLIST_OBJECTS];
break;
+ case ENTITY_TYPE_MULTIPLAYER:
+ list = &s->m_lists[ENTITYLIST_MULTIPLAYER];
+ break;
}else switch(m_type){
case ENTITY_TYPE_VEHICLE:
list = &s->m_lists[ENTITYLIST_VEHICLES_OVERLAP];
@@ -200,6 +288,9 @@ CPhysical::RemoveAndAdd(void)
case ENTITY_TYPE_OBJECT:
list = &s->m_lists[ENTITYLIST_OBJECTS_OVERLAP];
break;
+ case ENTITY_TYPE_MULTIPLAYER:
+ list = &s->m_lists[ENTITYLIST_MULTIPLAYER];
+ break;
}
if(next){
// If we still have old nodes, use them
@@ -236,7 +327,7 @@ CPhysical::GetBoundRect(void)
void
CPhysical::AddToMovingList(void)
{
- if (!bIsStaticWaitingForCollision)
+ if (m_movingListNode == nil && !bIsStaticWaitingForCollision)
m_movingListNode = CWorld::GetMovingEntityList().InsertItem(this);
}
@@ -334,6 +425,8 @@ CPhysical::PlacePhysicalRelativeToOtherPhysical(CPhysical *other, CPhysical *phy
int32
CPhysical::ProcessEntityCollision(CEntity *ent, CColPoint *colpoints)
{
+ if(!GetIsTouching(ent))
+ return 0;
int32 numSpheres = CCollision::ProcessColModels(
GetMatrix(), *GetColModel(),
ent->GetMatrix(), *ent->GetColModel(),
@@ -430,7 +523,7 @@ CPhysical::ApplyTurnSpeed(void)
{
if(bIsFrozen){
m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f);
- }else{
+ }else if(!m_vecTurnSpeed.IsZero()){
// Move the coordinate axes by their speed
// Note that this denormalizes the matrix
CVector turnvec = m_vecTurnSpeed*CTimer::GetTimeStep();
@@ -444,6 +537,9 @@ void
CPhysical::ApplyMoveForce(float jx, float jy, float jz)
{
m_vecMoveSpeed += CVector(jx, jy, jz)*(1.0f/m_fMass);
+ m_vecTurnSpeed.x = Clamp(m_vecTurnSpeed.x, -4.0f, 4.0f);
+ m_vecTurnSpeed.y = Clamp(m_vecTurnSpeed.y, -4.0f, 4.0f);
+ m_vecTurnSpeed.z = Clamp(m_vecTurnSpeed.z, -4.0f, 4.0f);
}
void
@@ -452,6 +548,23 @@ CPhysical::ApplyTurnForce(float jx, float jy, float jz, float px, float py, floa
CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass);
CVector turnimpulse = CrossProduct(CVector(px, py, pz)-com, CVector(jx, jy, jz));
m_vecTurnSpeed += turnimpulse*(1.0f/m_fTurnMass);
+ m_vecTurnSpeed.x = Clamp(m_vecTurnSpeed.x, -4.0f, 4.0f);
+ m_vecTurnSpeed.y = Clamp(m_vecTurnSpeed.y, -4.0f, 4.0f);
+ m_vecTurnSpeed.z = Clamp(m_vecTurnSpeed.z, -4.0f, 4.0f);
+}
+
+void
+CPhysical::ApplyTurnForceMultiplayer(const CVector &j, const CVector &p)
+{
+ CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass);
+ CVector turnimpulse = CrossProduct(p-com, j);
+ turnimpulse *= (1.0f/m_fTurnMass);
+ m_vecTurnSpeed.x += Clamp(turnimpulse.x, -0.1f, 0.1f);
+ m_vecTurnSpeed.y += Clamp(turnimpulse.y, -0.1f, 0.1f);
+ m_vecTurnSpeed.z += Clamp(turnimpulse.z, -0.1f, 0.1f);
+ m_vecTurnSpeed.x = Clamp(m_vecTurnSpeed.x, -1.0f, 1.0f);
+ m_vecTurnSpeed.y = Clamp(m_vecTurnSpeed.y, -1.0f, 1.0f);
+ m_vecTurnSpeed.z = Clamp(m_vecTurnSpeed.z, -1.0f, 1.0f);
}
void
@@ -482,14 +595,14 @@ CPhysical::ApplySpringCollision(float springConst, CVector &springDir, CVector &
}
bool
-CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir)
+CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir, float &impulse)
{
float compression = 1.0f - springRatio;
if(compression > 0.0f){
if(DotProduct(springDir, forceDir) > 0.0f)
forceDir *= -1.0f;
float step = Min(CTimer::GetTimeStep(), 3.0f);
- float impulse = GRAVITY*m_fMass*step * springConst * compression * bias*2.0f;
+ impulse = GRAVITY*m_fMass*step * springConst * compression * bias*2.0f;
if(bIsHeavy)
impulse *= 0.75f;
ApplyMoveForce(forceDir*impulse);
@@ -498,9 +611,12 @@ CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVecto
return true;
}
+float DAMPING_LIMIT_OF_SPRING_FORCE = 0.999f;
+float DAMPING_LIMIT_IN_FRAME= 0.25f;
+
// What exactly is speed?
bool
-CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &point, CVector &speed)
+CPhysical::ApplySpringDampening(float damping, float dampingLimit, CVector &springDir, CVector &point, CVector &speed)
{
float speedA = DotProduct(speed, springDir);
float speedB = DotProduct(GetSpeed(point), springDir);
@@ -509,16 +625,30 @@ CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &poin
return true;
#endif
float step = Min(CTimer::GetTimeStep(), 3.0f);
- float impulse = -damping * (speedA + speedB)/2.0f * m_fMass * step * 0.53f;
+ damping *= step;
if(bIsHeavy)
- impulse *= 2.0f;
+ damping *= 2.0f;
+ damping = Clamp(damping, -DAMPING_LIMIT_IN_FRAME, DAMPING_LIMIT_IN_FRAME);
// what is this?
- float a = m_fTurnMass / ((point.MagnitudeSqr() + 1.0f) * 2.0f * m_fMass);
- a = Min(a, 1.0f);
- float b = Abs(impulse / (speedB * m_fMass));
- if(a < b)
- impulse *= a/b;
+ float fSpeed = -speedA * damping;
+ if(fSpeed > 0.0f && fSpeed+speedB > 0.0f){
+ if(speedB < 0.0f)
+ fSpeed = -speedB;
+ else
+ fSpeed = 0.0f;
+ }else if(fSpeed < 0.0f && fSpeed+speedB < 0.0f){
+ if(speedB > 0.0f)
+ fSpeed = -speedB;
+ else
+ fSpeed = 0.0f;
+ }
+
+ CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass);
+ float impulse = fSpeed*GetMass(point-com, springDir);
+ float limit = Abs(dampingLimit)*DAMPING_LIMIT_OF_SPRING_FORCE;
+ if(impulse > limit)
+ impulse = limit;
ApplyMoveForce(springDir*impulse);
ApplyTurnForce(springDir*impulse, point);
@@ -530,7 +660,6 @@ CPhysical::ApplyGravity(void)
{
if (!bAffectedByGravity)
return;
-#ifdef WALLCLIMB_CHEAT
if (gGravityCheat && this == FindPlayerVehicle()) {
static CVector gravityUp(0.0f, 0.0f, 1.0f), surfaceUp(0.0f, 0.0f, 1.0f);
CVector belowCar = GetPosition() - 2.0f*GetUp();
@@ -549,7 +678,6 @@ CPhysical::ApplyGravity(void)
m_vecMoveSpeed -= GRAVITY * CTimer::GetTimeStep() * gravityUp;
return;
}
-#endif
m_vecMoveSpeed.z -= GRAVITY * CTimer::GetTimeStep();
}
@@ -569,8 +697,8 @@ CPhysical::ApplyAirResistance(void)
float f = Pow(m_fAirResistance, CTimer::GetTimeStep());
m_vecMoveSpeed *= f;
m_vecTurnSpeed *= f;
- }else if(GetStatus() != STATUS_GHOST){
- float f = Pow(1.0f/Abs(1.0f + m_fAirResistance*0.5f*m_vecMoveSpeed.MagnitudeSqr()), CTimer::GetTimeStep());
+ }else{
+ float f = Pow(1.0f - m_fAirResistance*m_vecMoveSpeed.Magnitude(), CTimer::GetTimeStep());
m_vecMoveSpeed *= f;
m_vecTurnSpeed *= 0.99f;
}
@@ -613,6 +741,14 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
foo = true;
}
+ CVector comA, comB;
+ comA = Multiply3x3(A->GetMatrix(), A->m_vecCentreOfMass);
+ comB = Multiply3x3(B->GetMatrix(), B->m_vecCentreOfMass);
+
+ if(A->IsVehicle() && B->IsObject() && ((CObject*)B)->bIsStreetLight ||
+ B->IsVehicle() && A->IsObject() && ((CObject*)A)->bIsStreetLight)
+ colpoint.normal.z = 0.0f;
+
float speedA, speedB;
if(B->GetIsStatic() && !foo){
if(A->bPedPhysics){
@@ -633,6 +769,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
if(IsGlass(B->GetModelIndex()))
CGlass::WindowRespondsToSoftCollision(B, impulseA);
if(!A->bInfiniteMass)
+//TODO(LCS): inline without clamp
A->ApplyMoveForce(colpoint.GetNormal() * (1.0f + A->m_fElasticity) * impulseA);
return true;
}
@@ -643,6 +780,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
impulseA = -speedA * A->m_fMass;
impulseB = 0.0f;
if(!A->bInfiniteMass)
+//TODO(LCS): inline without clamp
A->ApplyMoveForce(colpoint.normal*(1.0f + A->m_fElasticity)*impulseA);
return true;
}
@@ -656,7 +794,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
eA = -1.0f;
else
eA = -(1.0f + A->m_fElasticity);
- impulseA = eA * speedA * A->GetMass(pointposA, colpoint.normal);
+ impulseA = eA * speedA * A->GetMass(pointposA-comA, colpoint.normal);
impulseB = impulseA;
if(Bobj->m_nCollisionDamageEffect && impulseA > 20.0f){
@@ -679,6 +817,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
int16 model = B->GetModelIndex();
if(model == MI_FIRE_HYDRANT && !Bobj->bHasBeenDamaged){
CParticleObject::AddObject(POBJECT_FIRE_HYDRANT, B->GetPosition() - CVector(0.0f, 0.0f, 0.5f), true);
+ CParticleObject::AddObject(POBJECT_FIRE_HYDRANT_STEAM, B->GetPosition() - CVector(0.0f, 0.0f, 0.5f), true);
Bobj->bHasBeenDamaged = true;
}else if((model == MI_PARKINGMETER || model == MI_PARKINGMETER2) && !Bobj->bHasBeenDamaged){
CPickups::CreateSomeMoney(GetPosition(), CGeneral::GetRandomNumber()%100);
@@ -724,7 +863,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
float mA = A->m_fMass;
float mB = B->m_fMass;
float speedSum;
- if(((CPed*)A)->GetPedState() == PED_FOLLOW_PATH){
+ if(A->IsPed() && ((CPed*)A)->GetPedState() == PED_FOLLOW_PATH){
affectB = true;
speedSum = (2.0f*mA*speedA + mB*speedB)/(2.0f*mA + mB);
}else{
@@ -756,7 +895,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
speedB = DotProduct(B->GetSpeed(pointposB), colpoint.normal);
float mA = A->m_fMass*massFactorA;
- float mB = B->GetMassTweak(pointposB, colpoint.normal, massFactorB);
+ float mB = B->GetMassTweak(pointposB-comB, colpoint.normal, massFactorB);
float speedSum;
if(foo)
speedSum = speedB;
@@ -794,7 +933,7 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
speedA = DotProduct(A->GetSpeed(pointposA), colpoint.normal);
speedB = DotProduct(B->m_vecMoveSpeed, colpoint.normal);
- float mA = A->GetMassTweak(pointposA, colpoint.normal, massFactorA);
+ float mA = A->GetMassTweak(pointposA-comA, colpoint.normal, massFactorA);
float mB = B->m_fMass*massFactorB;
float speedSum = (mB*speedB + mA*speedA)/(mA + mB);
if(speedA < speedSum){
@@ -834,8 +973,8 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
CVector pointposB = colpoint.point - B->GetPosition();
speedA = DotProduct(A->GetSpeed(pointposA), colpoint.normal);
speedB = DotProduct(B->GetSpeed(pointposB), colpoint.normal);
- float mA = A->GetMassTweak(pointposA, colpoint.normal, massFactorA);
- float mB = B->GetMassTweak(pointposB, colpoint.normal, massFactorB);
+ float mA = A->GetMassTweak(pointposA-comA, colpoint.normal, massFactorA);
+ float mB = B->GetMassTweak(pointposB-comB, colpoint.normal, massFactorB);
float speedSum = (mB*speedB + mA*speedA)/(mA + mB);
if(speedA < speedSum){
if(A->bHasHitWall)
@@ -851,8 +990,8 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
CVector fA = colpoint.normal*(impulseA/massFactorA);
CVector fB = colpoint.normal*(-impulseB/massFactorB);
if(A->IsVehicle() && !A->bHasHitWall){
- fA.x *= 1.4f;
- fA.y *= 1.4f;
+// fA.x *= 1.4f;
+// fA.y *= 1.4f;
if(colpoint.normal.z < 0.7f)
fA.z *= 0.3f;
if(A->GetStatus() == STATUS_PLAYER)
@@ -863,8 +1002,8 @@ CPhysical::ApplyCollision(CPhysical *B, CColPoint &colpoint, float &impulseA, fl
}
}
if(B->IsVehicle() && !B->bHasHitWall){
- fB.x *= 1.4f;
- fB.y *= 1.4f;
+// fB.x *= 1.4f;
+// fB.y *= 1.4f;
if(-colpoint.normal.z < 0.7f)
fB.z *= 0.3f;
if(B->GetStatus() == STATUS_PLAYER)
@@ -915,8 +1054,8 @@ CPhysical::ApplyCollision(CColPoint &colpoint, float &impulse)
impulse = -(m_fElasticity + 1.0f) * speed * mass;
CVector f = colpoint.normal*impulse;
if(IsVehicle()){
- f.x *= 1.4f;
- f.y *= 1.4f;
+// f.x *= 1.4f;
+// f.y *= 1.4f;
if(colpoint.normal.z < 0.7f)
f.z *= 0.3f;
}
@@ -1022,6 +1161,7 @@ CPhysical::ApplyCollisionAlt(CEntity *B, CColPoint &colpoint, float &impulse, CV
return false;
}
+//LCS: the div by 0 is fixed differently. probably should use their fix?
bool
CPhysical::ApplyFriction(CPhysical *B, float adhesiveLimit, CColPoint &colpoint)
{
@@ -1261,6 +1401,10 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
A->GetBoundCentre(center);
radius = A->GetBoundRadius();
+
+ if(A->IsMultiplayer())
+ return false;
+
for(i = 0; i <= ENTITYLIST_PEDS_OVERLAP; i++){
list = &lists[i];
for(node = list->first; node; node = node->next){
@@ -1268,7 +1412,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
Bobj = (CObject*)B;
skipShift = false;
- if(B->IsBuilding() ||
+ if(B->IsMultiplayer() || B->IsBuilding() ||
B->IsObject() && B->bInfiniteMass ||
A->IsPed() && B->IsObject() && B->GetIsStatic() && !Bobj->bHasBeenDamaged)
canshift = true;
@@ -1335,9 +1479,9 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
else if(A->IsPed() && ((CPed*)A)->m_pCollidingEntity == B ||
B->IsPed() && ((CPed*)B)->m_pCollidingEntity == A)
skipShift = true;
- else if(A->GetModelIndex() == MI_RCBANDIT && B->IsVehicle() ||
- B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle()))
- skipShift = true;
+// else if(A->GetModelIndex() == MI_RCBANDIT && B->IsVehicle() ||
+// B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle()))
+// skipShift = true;
if(skipShift)
continue;
@@ -1379,6 +1523,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
dir.Normalise();
B->GetMatrix().Translate(dir * colpoints[mostColliding].GetDepth() / (1.0f - f));
// BUG? how can that ever happen? A is a Ped
+ // LCS: gone or just optimized away?
if(B->IsVehicle())
B->ProcessEntityCollision(A, colpoints);
}else{
@@ -1441,6 +1586,10 @@ CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists)
B->bUsesCollision &&
B->GetIsTouching(center, radius)){
B->m_scanCode = CWorld::GetCurrentScanCode();
+#ifndef FIX_BUGS
+ // surely they didn't mean to call this twice?
+ numCollisions = A->ProcessEntityCollision(B, aColPoints);
+#endif
numCollisions = A->ProcessEntityCollision(B, aColPoints);
if(numCollisions > 0)
goto collision;
@@ -1591,7 +1740,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
radius = A->GetBoundRadius();
A->GetBoundCentre(center);
- for(j = 0; j <= ENTITYLIST_PEDS_OVERLAP; j++){
+ for(j = A->IsMultiplayer() ? 1 : 0; j <= ENTITYLIST_PEDS_OVERLAP; j++){
list = &lists[j];
CPtrNode *listnode;
@@ -1600,7 +1749,6 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
Bobj = (CObject*)B;
Bped = (CPed*)B;
- bool isTouching = true;
if(!B->bUsesCollision ||
B->m_scanCode == CWorld::GetCurrentScanCode() ||
B == A)
@@ -1635,6 +1783,18 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
skipCollision = true;
A->bSkipLineCol = true;
Bobj->m_pCollidingEntity = A;
+ }else if(A->IsObject() && Aobj->m_nSpecialCollisionResponseCases == COLLRESPONSE_FENCEPART &&
+ B->IsObject() && Bobj->m_nSpecialCollisionResponseCases == COLLRESPONSE_FENCEPART){
+ skipCollision = true;
+ A->bSkipLineCol = true;
+ }else if(A->IsObject() && Aobj->bIsStreetLight && !B->IsBuilding() && IsLCSTrafficLight(A->GetModelIndex())){
+ skipCollision = true;
+ A->bSkipLineCol = true;
+ Aobj->m_pCollidingEntity = B;
+ }else if(B->IsObject() && Bobj->bIsStreetLight && !A->IsBuilding() && IsLCSTrafficLight(B->GetModelIndex())){
+ skipCollision = true;
+ B->bSkipLineCol = true;
+ Bobj->m_pCollidingEntity = A;
}else if(A->IsObject() && B->IsVehicle()){
if(A->GetModelIndex() == MI_CAR_BUMPER)
skipCollision = true;
@@ -1679,20 +1839,39 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
B->GetPosition().z < A->GetPosition().z){
skipCollision = true;
A->bSkipLineCol = true;
- }else if(A->IsPed() && Aped->m_pCollidingEntity == B){
+ }else if(A->IsPed() && (Aped->m_pCollidingEntity == B || !A->phys_lcs_unk1)){
skipCollision = true;
if(!Aped->bKnockedUpIntoAir || Aped->bKnockedOffBike)
A->bSkipLineCol = true;
- }else if(B->IsPed() && Bped->m_pCollidingEntity == A){
- skipCollision = true;
- A->bSkipLineCol = true;
- }else if(A->GetModelIndex() == MI_RCBANDIT && (B->IsPed() || B->IsVehicle()) ||
- B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle())){
+ }else if(B->IsPed() && (Bped->m_pCollidingEntity == A || !B->phys_lcs_unk1)){
skipCollision = true;
A->bSkipLineCol = true;
+// }else if(A->GetModelIndex() == MI_RCBANDIT && (B->IsPed() || B->IsVehicle()) ||
+// B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle())){
+// skipCollision = true;
+// A->bSkipLineCol = true;
}else if(A->IsPed() && B->IsObject() && Bobj->m_fUprootLimit > 0.0f)
altcollision = true;
+ if(A->IsObject() && !B->IsBuilding()){
+ if(!A->phys_lcs_unk1){
+ A->bSkipLineCol = true;
+ skipCollision = true;
+#ifdef FIX_BUGS
+ // looks correct below
+ Aobj->m_pCollidingEntity = B;
+#else
+ Aobj->m_pCollidingEntity = A;
+#endif
+ }
+ }
+ if(B->IsObject() && !A->IsBuilding()){
+ if(!B->phys_lcs_unk1){
+ B->bSkipLineCol = true;
+ skipCollision = true;
+ Bobj->m_pCollidingEntity = A;
+ }
+ }
if(!A->bUsesCollision || skipCollision){
B->m_scanCode = CWorld::GetCurrentScanCode();
@@ -1722,6 +1901,8 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
if(impulseA > maxImpulseA) maxImpulseA = impulseA;
if(A->IsVehicle()){
+ if(B->IsMultiplayer())
+ A->SendMuliVehicleCollision(B, &aColPoints[i], impulseA);
if(!(((CVehicle*)A)->IsBoat() && aColPoints[i].surfaceB == SURFACE_WOOD_SOLID) &&
impulseA > A->m_fDamageImpulse)
A->SetDamagedPieceRecord(aColPoints[i].pieceA, impulseA, B, aColPoints[i].normal);
@@ -1759,6 +1940,8 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
float adhesion = CSurfaceTable::GetAdhesiveLimit(aColPoints[i]) / numCollisions;
if(A->IsVehicle()){
+ if(B->IsMultiplayer())
+ A->SendMuliVehicleCollision(B, &aColPoints[i], impulseA);
if(((CVehicle*)A)->IsBoat() && aColPoints[i].surfaceB == SURFACE_WOOD_SOLID)
adhesion = 0.0f;
else if(impulseA > A->m_fDamageImpulse)
@@ -2105,7 +2288,7 @@ CPhysical::ProcessCollision(void)
m_bIsVehicleBeingShifted = false;
bSkipLineCol = false;
- if(!bUsesCollision){
+ if(!bUsesCollision || IsMultiplayer()){
bIsStuck = false;
bIsInSafePosition = true;
RemoveAndAdd();
@@ -2135,61 +2318,66 @@ CPhysical::ProcessCollision(void)
float distSq = m_vecMoveSpeed.MagnitudeSqr() * sq(CTimer::GetTimeStep());
if(IsPed() && (distSq >= sq(0.3f) || ped->IsPlayer())){
- if(ped->IsPlayer()){
- if(ped->m_pCurrentPhysSurface)
- n = Max(NUMSTEPS(0.15f), 4.0f);
- else
- n = Max(NUMSTEPS(0.3f), 2.0f);
- }else
- n = NUMSTEPS(0.45f);
+ if(ped->IsPlayer() && ped->m_pCurrentPhysSurface)
+ n = Max(NUMSTEPS(0.15f), 4.0f);
+ else
+ n = Max(NUMSTEPS(0.3f), 2.0f);
+ if(ped->IsPlayer() && ped->bHasHitWall)
+ n *= 2;
step = savedTimeStep / n;
if(!ped->IsPlayer())
ped->m_fElasticity *= HIGHSPEED_ELASTICITY_MULT_PED;
- }else if(IsVehicle() && distSq >= sq(0.4f)){
+ }else if(IsVehicle()){
if(GetStatus() == STATUS_PLAYER)
- n = NUMSTEPS(0.2f);
+ n = NUMSTEPS(0.3f);
else
- n = distSq > 0.32f ? NUMSTEPS(0.3f) : NUMSTEPS(0.4f);
+ n = NUMSTEPS(0.4f);
+ if(n == 0)
+ n = 1;
step = savedTimeStep / n;
-
- CVector bbox = GetColModel()->boundingBox.GetSize();
- float relDistX = Abs(DotProduct(m_vecMoveSpeed, GetRight())) * CTimer::GetTimeStep() / bbox.x;
- float relDistY = Abs(DotProduct(m_vecMoveSpeed, GetForward())) * CTimer::GetTimeStep() / bbox.y;
- float relDistZ = Abs(DotProduct(m_vecMoveSpeed, GetUp())) * CTimer::GetTimeStep() / bbox.z;
- if(Max(relDistX, Max(relDistY, relDistZ)) < 1.0f){
- // check if we can get away with simplified processing
-
- ApplyMoveSpeed();
- ApplyTurnSpeed();
- GetMatrix().Reorthogonalise();
- bSkipLineCol = false;
- m_bIsVehicleBeingShifted = false;
-
- bJustCheckCollision = true;
- bool savedUsesCollision = bUsesCollision;
- bUsesCollision = false;
- if(!CheckCollision()){
+ if(n > 2){
+ CVector bbox = GetColModel()->boundingBox.GetSize();
+ float relDistX = Abs(DotProduct(m_vecMoveSpeed, GetRight())) * CTimer::GetTimeStep() / bbox.x;
+ float relDistY = Abs(DotProduct(m_vecMoveSpeed, GetForward())) * CTimer::GetTimeStep() / bbox.y;
+ float relDistZ = Abs(DotProduct(m_vecMoveSpeed, GetUp())) * CTimer::GetTimeStep() / bbox.z;
+ float relDist = Max(relDistX, Max(relDistY, relDistZ));
+ if(((CVehicle*)this)->GetVehicleAppearance() == VEHICLE_APPEARANCE_BIKE)
+ relDist *= 2.0f;
+ if(relDist < 1.0f){
+ // check if we can get away with simplified processing
+
+ ApplyMoveSpeed();
+ ApplyTurnSpeed();
+ GetMatrix().Reorthogonalise();
+ bSkipLineCol = false;
+ m_bIsVehicleBeingShifted = false;
+
+ bJustCheckCollision = true;
+ bool savedUsesCollision = bUsesCollision;
+ bUsesCollision = false;
+ if(!CheckCollision()){
+ bJustCheckCollision = false;
+ bUsesCollision = savedUsesCollision;
+ if(IsVehicle())
+ ((CVehicle*)this)->bVehicleColProcessed = true;
+
+ bHitByTrain = false;
+ m_fDistanceTravelled = (GetPosition() - savedMatrix.GetPosition()).Magnitude();
+ bSkipLineCol = false;
+
+ bIsStuck = false;
+ bIsInSafePosition = true;
+ m_fElasticity = savedElasticity;
+ RemoveAndAdd();
+ return;
+ }
bJustCheckCollision = false;
bUsesCollision = savedUsesCollision;
- if(IsVehicle())
- ((CVehicle*)this)->bVehicleColProcessed = true;
-
- bHitByTrain = false;
- m_fDistanceTravelled = (GetPosition() - savedMatrix.GetPosition()).Magnitude();
- bSkipLineCol = false;
-
- bIsStuck = false;
- bIsInSafePosition = true;
- m_fElasticity = savedElasticity;
- RemoveAndAdd();
- return;
+ GetMatrix() = savedMatrix;
+ m_vecMoveSpeed = savedMoveSpeed;
+ if(IsVehicle() && ((CVehicle*)this)->bIsLawEnforcer)
+ m_fElasticity *= HIGHSPEED_ELASTICITY_MULT_COPCAR;
}
- bJustCheckCollision = false;
- bUsesCollision = savedUsesCollision;
- GetMatrix() = savedMatrix;
- m_vecMoveSpeed = savedMoveSpeed;
- if(IsVehicle() && ((CVehicle*)this)->bIsLawEnforcer)
- m_fElasticity *= HIGHSPEED_ELASTICITY_MULT_COPCAR;
}
}else if(IsObject() && ((CObject*)this)->ObjectCreatedBy != TEMP_OBJECT){
int responsecase = ((CObject*)this)->m_nSpecialCollisionResponseCases;
@@ -2272,7 +2460,7 @@ CPhysical::ProcessCollision(void)
bSkipLineCol = false;
if(!m_vecMoveSpeed.IsZero() ||
!m_vecTurnSpeed.IsZero() ||
- bHitByTrain ||
+// bHitByTrain ||
GetStatus() == STATUS_PLAYER ||
IsVehicle() && ((CVehicle*)this)->bRestingOnPhysical ||
IsPed() && ped->IsPlayer()){
@@ -2293,3 +2481,44 @@ CPhysical::ProcessCollision(void)
m_fElasticity = savedElasticity;
RemoveAndAdd();
}
+
+
+
+// TEMP old VC code until bikes are done
+bool
+CPhysical::ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir)
+{
+ float compression = 1.0f - springRatio;
+ if(compression > 0.0f){
+ if(DotProduct(springDir, forceDir) > 0.0f)
+ forceDir *= -1.0f;
+ float step = Min(CTimer::GetTimeStep(), 3.0f);
+ float impulse = GRAVITY*m_fMass*step * springConst * compression * bias*2.0f;
+ if(bIsHeavy)
+ impulse *= 0.75f;
+ ApplyMoveForce(forceDir*impulse);
+ ApplyTurnForce(forceDir*impulse, point);
+ }
+ return true;
+}
+bool
+CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &point, CVector &speed)
+{
+ float speedA = DotProduct(speed, springDir);
+ float speedB = DotProduct(GetSpeed(point), springDir);
+ float step = Min(CTimer::GetTimeStep(), 3.0f);
+ float impulse = -damping * (speedA + speedB)/2.0f * m_fMass * step * 0.53f;
+ if(bIsHeavy)
+ impulse *= 2.0f;
+
+ // what is this?
+ float a = m_fTurnMass / ((point.MagnitudeSqr() + 1.0f) * 2.0f * m_fMass);
+ a = Min(a, 1.0f);
+ float b = Abs(impulse / (speedB * m_fMass));
+ if(a < b)
+ impulse *= a/b;
+
+ ApplyMoveForce(springDir*impulse);
+ ApplyTurnForce(springDir*impulse, point);
+ return true;
+}
diff --git a/src/entities/Physical.h b/src/entities/Physical.h
index f552da6c..71e30485 100644
--- a/src/entities/Physical.h
+++ b/src/entities/Physical.h
@@ -61,9 +61,13 @@ public:
uint8 m_bIsVehicleBeingShifted : 1; // wrong name - also used on but never set for peds
uint8 bJustCheckCollision : 1; // just see if there is a collision
+bool phys_lcs_unk1;
+
uint8 m_nSurfaceTouched;
int8 m_nZoneLevel;
+int8 phys_lcs_unk2;
+
CPhysical(void);
~CPhysical(void);
@@ -75,6 +79,9 @@ public:
void ProcessShift(void);
void ProcessCollision(void);
+ // these two are virtual in LCS...why?
+ virtual void ApplyMoveSpeed(void);
+ virtual void ApplyTurnSpeed(void);
virtual int32 ProcessEntityCollision(CEntity *ent, CColPoint *colpoints);
void RemoveAndAdd(void);
@@ -141,8 +148,6 @@ public:
m_vecCentreOfMass.z = z;
}
- void ApplyMoveSpeed(void);
- void ApplyTurnSpeed(void);
// Force actually means Impulse here
void ApplyMoveForce(float jx, float jy, float jz);
void ApplyMoveForce(const CVector &j) { ApplyMoveForce(j.x, j.y, j.z); }
@@ -150,14 +155,15 @@ public:
void ApplyTurnForce(float jx, float jy, float jz, float px, float py, float pz);
// j is direction of force, p is point relative to model center where force is applied
void ApplyTurnForce(const CVector &j, const CVector &p) { ApplyTurnForce(j.x, j.y, j.z, p.x, p.y, p.z); }
+ void ApplyTurnForceMultiplayer(const CVector &j, const CVector &p);
void ApplyFrictionMoveForce(float jx, float jy, float jz);
void ApplyFrictionMoveForce(const CVector &j) { ApplyFrictionMoveForce(j.x, j.y, j.z); }
void ApplyFrictionTurnForce(float jx, float jy, float jz, float rx, float ry, float rz);
void ApplyFrictionTurnForce(const CVector &j, const CVector &p) { ApplyFrictionTurnForce(j.x, j.y, j.z, p.x, p.y, p.z); }
// springRatio: 1.0 fully extended, 0.0 fully compressed
bool ApplySpringCollision(float springConst, CVector &springDir, CVector &point, float springRatio, float bias);
- bool ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir);
- bool ApplySpringDampening(float damping, CVector &springDir, CVector &point, CVector &speed);
+ bool ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir, float &impulse);
+ bool ApplySpringDampening(float damping, float dampingLimit, CVector &springDir, CVector &point, CVector &speed);
void ApplyGravity(void);
void ApplyFriction(void);
void ApplyAirResistance(void);
@@ -172,4 +178,10 @@ public:
bool ProcessCollisionSectorList(CPtrList *lists);
bool CheckCollision(void);
bool CheckCollision_SimpleCar(void);
+
+ void SendMuliVehicleCollision(CEntity *,CColPoint *,float) {}
+
+ // TEMP
+ bool ApplySpringCollisionAlt(float springConst, CVector &springDir, CVector &point, float springRatio, float bias, CVector &forceDir);
+ bool ApplySpringDampening(float damping, CVector &springDir, CVector &point, CVector &speed);
};
diff --git a/src/extras/custompipes.cpp b/src/extras/custompipes.cpp
index a485138e..a874343d 100644
--- a/src/extras/custompipes.cpp
+++ b/src/extras/custompipes.cpp
@@ -46,13 +46,14 @@ CustomMatCopy(void *dst, void *src, int32, int32)
rw::TexDictionary *neoTxd;
+bool gGlassCarsCheat;
bool bRenderingEnvMap;
-int32 EnvMapSize = 128;
+int32 EnvMapSize = 512;
rw::Camera *EnvMapCam;
rw::Texture *EnvMapTex;
rw::Texture *EnvMaskTex;
-static rw::RWDEVICE::Im2DVertex EnvScreenQuad[4];
-static int16 QuadIndices[6] = { 0, 1, 2, 0, 2, 3 };
+rw::RWDEVICE::Im2DVertex EnvScreenQuad[4];
+int16 QuadIndices[6] = { 0, 1, 2, 0, 2, 3 };
static rw::Camera*
CreateEnvMapCam(rw::World *world)
@@ -341,7 +342,7 @@ ReadTweakValueTable(char *fp, InterpolatedValue &interp)
* Neo Vehicle pipe
*/
-int32 VehiclePipeSwitch = VEHICLEPIPE_MATFX;
+int32 VehiclePipeSwitch = VEHICLEPIPE_PS2;
float VehicleShininess = 1.0f;
float VehicleSpecularity = 1.0f;
InterpolatedFloat Fresnel(0.4f);
@@ -369,6 +370,7 @@ AttachVehiclePipe(rw::Clump *clump)
* Neo World pipe
*/
+int32 WorldPipeSwitch = WORLDPIPE_PS2;
bool LightmapEnable;
float LightmapMult = 1.0f;
InterpolatedFloat WorldLightmapBlend(1.0f);
diff --git a/src/extras/custompipes.h b/src/extras/custompipes.h
index 7ad239f0..faf99efc 100644
--- a/src/extras/custompipes.h
+++ b/src/extras/custompipes.h
@@ -75,16 +75,23 @@ void CustomPipeInit(void);
void CustomPipeShutdown(void);
void SetTxdFindCallback(void);
+extern bool gGlassCarsCheat;
extern bool bRenderingEnvMap;
extern int32 EnvMapSize;
extern rw::Camera *EnvMapCam;
extern rw::Texture *EnvMapTex;
extern rw::Texture *EnvMaskTex;
+extern rw::RWDEVICE::Im2DVertex EnvScreenQuad[4];
+extern int16 QuadIndices[6];
void EnvMapRender(void);
enum {
- VEHICLEPIPE_MATFX,
- VEHICLEPIPE_NEO
+ VEHICLEPIPE_PSP,
+ VEHICLEPIPE_PS2,
+ VEHICLEPIPE_MOBILE,
+
+// maybe later again...
+ VEHICLEPIPE_NEO = -1
};
extern int32 VehiclePipeSwitch;
extern float VehicleShininess;
@@ -99,6 +106,12 @@ void DestroyVehiclePipe(void);
void AttachVehiclePipe(rw::Atomic *atomic);
void AttachVehiclePipe(rw::Clump *clump);
+enum {
+ WORLDPIPE_PSP,
+ WORLDPIPE_PS2,
+ WORLDPIPE_MOBILE
+};
+extern int32 WorldPipeSwitch;
extern bool LightmapEnable;
extern float LightmapMult;
extern InterpolatedFloat WorldLightmapBlend;
@@ -133,8 +146,6 @@ void AttachRimPipe(rw::Clump *clump);
}
-#endif
-
namespace WorldRender{
extern int numBlendInsts[3];
void AtomicFirstPass(RpAtomic *atomic, int pass);
@@ -143,3 +154,4 @@ void RenderBlendPass(int pass);
}
#endif
+#endif
diff --git a/src/extras/custompipes_d3d9.cpp b/src/extras/custompipes_d3d9.cpp
index 3ad824e3..dd3a95b7 100644
--- a/src/extras/custompipes_d3d9.cpp
+++ b/src/extras/custompipes_d3d9.cpp
@@ -2,6 +2,10 @@
#include "common.h"
#ifdef RW_D3D9
+#ifdef EXTENDED_PIPELINES
+
+#include "rpmatfx.h"
+
#include "main.h"
#include "RwHelper.h"
#include "Lights.h"
@@ -12,15 +16,15 @@
#include "TxdStore.h"
#include "Renderer.h"
#include "World.h"
+#include "VisibilityPlugins.h"
#include "custompipes.h"
-#ifdef EXTENDED_PIPELINES
-
#ifndef LIBRW
#error "Need librw for EXTENDED_PIPELINES"
#endif
-extern RwTexture *gpWhiteTexture; // from vehicle model info
+//extern RwTexture *gpWhiteTexture; // from vehicle model info
+static RwTexture *gpWhiteTexture; // nil works as white in librw currently
namespace CustomPipes {
@@ -36,13 +40,212 @@ enum {
VSLOC_eye = rw::d3d::VSLOC_afterLights,
VSLOC_reflProps,
- VSLOC_specLights
+ VSLOC_specLights,
+
+ // Leeds building, Leeds vehicle mobile
+ VSLOC_emissive = rw::d3d::VSLOC_afterLights,
+ VSLOC_ambient,
+ VSLOC_viewMat, // only vehicle
+
+ // Leeds vehicle PS2
+ VSLOC_texMat = rw::d3d::VSLOC_afterLights,
+
+ PSLOC_colorscale = 1,
+ PSLOC_shininess,
+ PSLOC_skyTop,
+ PSLOC_skyBot
};
/*
- * Neo Vehicle pipe
+ * Leeds & Neo Vehicle pipe
*/
+static void *leedsVehicle_VS;
+static void *leedsVehicle_mobile_VS;
+static void *leedsVehicle_blend_PS;
+static void *leedsVehicle_add_PS;
+static void *leedsVehicle_mobile_PS;
+
+static rw::RawMatrix normal2texcoord_flipU = {
+ { -0.5f, 0.0f, 0.0f }, 0.0f,
+ { 0.0f, -0.5f, 0.0f }, 0.0f,
+ { 0.0f, 0.0f, 1.0f }, 0.0f,
+ { 0.5f, 0.5f, 0.0f }, 1.0f
+};
+
+void
+uploadEnvMatrix(rw::Frame *frame)
+{
+ using namespace rw;
+ Matrix invMat;
+ if(frame == nil)
+ frame = engine->currentCamera->getFrame();
+
+ RawMatrix envMtx, invMtx;
+ Matrix tmp = *frame->getLTM();
+ // Now the weird part: we remove the camera pitch
+ tmp.at.z = 0.0f;
+ tmp.at = normalize(tmp.at);
+ tmp.right.x = -tmp.at.y;
+ tmp.right.y = tmp.at.x;
+ tmp.right.z = 0.0f;;
+ tmp.up.set(0.0f, 0.0f, 1.0f);
+ tmp.pos.set(0.0f, 0.0f, 0.0f);
+ tmp.flags = Matrix::TYPEORTHONORMAL;
+
+ Matrix::invert(&invMat, &tmp);
+ convMatrix(&invMtx, &invMat);
+ RawMatrix::mult(&envMtx, &invMtx, &normal2texcoord_flipU);
+ d3d::d3ddevice->SetVertexShaderConstantF(VSLOC_texMat, (float*)&envMtx, 4);
+}
+
+void
+leedsVehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
+{
+ using namespace rw;
+ using namespace rw::d3d;
+ using namespace rw::d3d9;
+
+ int vsBits;
+ setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride);
+ setIndices(header->indexBuffer);
+ setVertexDeclaration(header->vertexDeclaration);
+
+ vsBits = lightingCB_Shader(atomic);
+ uploadMatrices(atomic->getFrame()->getLTM());
+
+ setVertexShader(leedsVehicle_VS);
+ if(gGlassCarsCheat)
+ setPixelShader(leedsVehicle_blend_PS);
+ else
+ setPixelShader(leedsVehicle_add_PS);
+
+ d3d::setTexture(1, EnvMapTex);
+ uploadEnvMatrix(nil);
+
+ SetRenderState(SRCBLEND, BLENDONE);
+
+ float colorscale[4];
+ colorscale[3] = 1.0f;
+
+ InstanceData *inst = header->inst;
+ for(rw::uint32 i = 0; i < header->numMeshes; i++){
+ Material *m = inst->material;
+
+ SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255);
+
+ float coef = 0.0f;
+ if(RpMatFXMaterialGetEffects(m) == rpMATFXEFFECTENVMAP){
+ coef = CClock::ms_EnvMapTimeMultiplicator * RpMatFXMaterialGetEnvMapCoefficient(m)*0.5f;
+ if(gGlassCarsCheat)
+ coef = 1.0f;
+ }
+ d3ddevice->SetPixelShaderConstantF(PSLOC_shininess, (float*)&coef, 1);
+
+ setMaterial(m->color, m->surfaceProps);
+
+ float cs = 1.0f;
+ // how does the PS2 handle this actually? probably scaled material color?
+ if(VehiclePipeSwitch == VEHICLEPIPE_PSP && m->texture)
+ cs = 2.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ d3ddevice->SetPixelShaderConstantF(PSLOC_colorscale, colorscale, 1);
+
+ if(m->texture)
+ d3d::setTexture(0, m->texture);
+ else
+ d3d::setTexture(0, gpWhiteTexture);
+
+ drawInst(header, inst);
+ inst++;
+ }
+
+ d3d::setTexture(1, nil);
+
+ SetRenderState(SRCBLEND, BLENDSRCALPHA);
+}
+
+void
+uploadWorldLights(void)
+{
+ using namespace rw;
+ using namespace rw::d3d;
+ using namespace rw::d3d9;
+
+ RGBAf amb, emiss;
+ amb.red = CTimeCycle::GetAmbientRed();
+ amb.green = CTimeCycle::GetAmbientGreen();
+ amb.blue = CTimeCycle::GetAmbientBlue();
+ amb.alpha = 1.0f;
+ emiss = pAmbient->color;
+
+ d3ddevice->SetVertexShaderConstantF(VSLOC_ambient, (float*)&amb, 1);
+ d3ddevice->SetVertexShaderConstantF(VSLOC_emissive, (float*)&emiss, 1);
+}
+
+void
+leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
+{
+ using namespace rw;
+ using namespace rw::d3d;
+ using namespace rw::d3d9;
+
+ int vsBits;
+ setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride);
+ setIndices(header->indexBuffer);
+ setVertexDeclaration(header->vertexDeclaration);
+
+ vsBits = lightingCB_Shader(atomic);
+ uploadMatrices(atomic->getFrame()->getLTM());
+
+ setVertexShader(leedsVehicle_mobile_VS);
+ setPixelShader(leedsVehicle_mobile_PS);
+
+ uploadWorldLights();
+
+ RGBAf skyTop, skyBot;
+ skyTop.red = CTimeCycle::GetSkyTopRed()/255.0f;
+ skyTop.green = CTimeCycle::GetSkyTopGreen()/255.0f;
+ skyTop.blue = CTimeCycle::GetSkyTopBlue()/255.0f;
+ skyBot.red = CTimeCycle::GetSkyBottomRed()/255.0f;
+ skyBot.green = CTimeCycle::GetSkyBottomGreen()/255.0f;
+ skyBot.blue = CTimeCycle::GetSkyBottomBlue()/255.0f;
+
+ d3ddevice->SetPixelShaderConstantF(PSLOC_skyTop, (float*)&skyTop, 1);
+ d3ddevice->SetPixelShaderConstantF(PSLOC_skyBot, (float*)&skyBot, 1);
+
+ d3ddevice->SetVertexShaderConstantF(VSLOC_viewMat, (float*)&rw::engine->currentCamera->devView, 4);
+
+ d3d::setTexture(1, EnvMapTex);
+
+ InstanceData *inst = header->inst;
+ for(rw::uint32 i = 0; i < header->numMeshes; i++){
+ Material *m = inst->material;
+
+ SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255);
+
+ float coef = 0.0f;
+ if(RpMatFXMaterialGetEffects(m) == rpMATFXEFFECTENVMAP){
+ coef = CClock::ms_EnvMapTimeMultiplicator * RpMatFXMaterialGetEnvMapCoefficient(m)*0.5f;
+ if(gGlassCarsCheat)
+ coef = 1.0f;
+ }
+ d3ddevice->SetPixelShaderConstantF(PSLOC_shininess, (float*)&coef, 1);
+
+ setMaterial(m->color, m->surfaceProps);
+
+ if(m->texture)
+ d3d::setTexture(0, m->texture);
+ else
+ d3d::setTexture(0, gpWhiteTexture);
+
+ drawInst(header, inst);
+ inst++;
+ }
+
+ d3d::setTexture(1, nil);
+}
+
static void *neoVehicle_VS;
static void *neoVehicle_PS;
@@ -83,13 +286,17 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
using namespace rw::d3d9;
// TODO: make this less of a kludge
- if(VehiclePipeSwitch == VEHICLEPIPE_MATFX){
- matFXGlobals.pipelines[rw::platform]->render(atomic);
+ if(VehiclePipeSwitch == VEHICLEPIPE_PSP || VehiclePipeSwitch == VEHICLEPIPE_PS2){
+ leedsVehicleRenderCB(atomic, header);
+ // matFXGlobals.pipelines[rw::platform]->render(atomic);
+ return;
+ }
+ if(VehiclePipeSwitch == VEHICLEPIPE_MOBILE){
+ leedsVehicleRenderCB_mobile(atomic, header);
return;
}
int vsBits;
- rw::uint32 flags = atomic->geometry->flags;
setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride);
setIndices(header->indexBuffer);
setVertexDeclaration(header->vertexDeclaration);
@@ -121,7 +328,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
reflProps[3] = m->surfaceProps.specular == 0.0f ? 0.0f : VehicleSpecularity;
d3ddevice->SetVertexShaderConstantF(VSLOC_reflProps, reflProps, 1);
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps);
if(m->texture)
d3d::setTexture(0, m->texture);
@@ -141,15 +348,15 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
void
CreateVehiclePipe(void)
{
- if(CFileMgr::LoadFile("neo/carTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
- printf("Error: couldn't open 'neo/carTweakingTable.dat'\n");
- else{
- char *fp = (char*)work_buff;
- fp = ReadTweakValueTable(fp, Fresnel);
- fp = ReadTweakValueTable(fp, Power);
- fp = ReadTweakValueTable(fp, DiffColor);
- fp = ReadTweakValueTable(fp, SpecColor);
- }
+// if(CFileMgr::LoadFile("neo/carTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
+// printf("Error: couldn't open 'neo/carTweakingTable.dat'\n");
+// else{
+// char *fp = (char*)work_buff;
+// fp = ReadTweakValueTable(fp, Fresnel);
+// fp = ReadTweakValueTable(fp, Power);
+// fp = ReadTweakValueTable(fp, DiffColor);
+// fp = ReadTweakValueTable(fp, SpecColor);
+// }
#include "shaders/obj/neoVehicle_VS.inc"
neoVehicle_VS = rw::d3d::createVertexShader(neoVehicle_VS_cso);
@@ -159,6 +366,26 @@ CreateVehiclePipe(void)
neoVehicle_PS = rw::d3d::createPixelShader(neoVehicle_PS_cso);
assert(neoVehicle_PS);
+#include "shaders/obj/leedsDefault_ENV_VS.inc"
+ leedsVehicle_VS = rw::d3d::createVertexShader(leedsDefault_ENV_VS_cso);
+ assert(leedsVehicle_VS);
+
+#include "shaders/obj/leedsVehicle_mobile_VS.inc"
+ leedsVehicle_mobile_VS = rw::d3d::createVertexShader(leedsVehicle_mobile_VS_cso);
+ assert(leedsVehicle_mobile_VS);
+
+#include "shaders/obj/leedsDefault_BLEND_PS.inc"
+ leedsVehicle_blend_PS = rw::d3d::createPixelShader(leedsDefault_BLEND_PS_cso);
+ assert(leedsVehicle_blend_PS);
+
+#include "shaders/obj/leedsDefault_ADD_PS.inc"
+ leedsVehicle_add_PS = rw::d3d::createPixelShader(leedsDefault_ADD_PS_cso);
+ assert(leedsVehicle_add_PS);
+
+#include "shaders/obj/leedsVehicle_mobile_PS.inc"
+ leedsVehicle_mobile_PS = rw::d3d::createPixelShader(leedsVehicle_mobile_PS_cso);
+ assert(leedsVehicle_mobile_PS);
+
rw::d3d9::ObjPipeline *pipe = rw::d3d9::ObjPipeline::create();
pipe->instanceCB = rw::d3d9::defaultInstanceCB;
@@ -176,6 +403,15 @@ DestroyVehiclePipe(void)
rw::d3d::destroyPixelShader(neoVehicle_PS);
neoVehicle_PS = nil;
+ rw::d3d::destroyVertexShader(leedsVehicle_VS);
+ leedsVehicle_VS = nil;
+
+ rw::d3d::destroyPixelShader(leedsVehicle_blend_PS);
+ leedsVehicle_blend_PS = nil;
+
+ rw::d3d::destroyPixelShader(leedsVehicle_add_PS);
+ leedsVehicle_add_PS = nil;
+
((rw::d3d9::ObjPipeline*)vehiclePipe)->destroy();
vehiclePipe = nil;
}
@@ -183,11 +419,12 @@ DestroyVehiclePipe(void)
/*
- * Neo World pipe
+ * Leeds World pipe
*/
-static void *neoWorld_VS;
-static void *neoWorldVC_PS;
+static void *leedsBuilding_VS;
+static void *leedsBuilding_mobile_VS;
+static void *scale_PS;
static void
worldRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
@@ -196,79 +433,68 @@ worldRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
using namespace rw::d3d;
using namespace rw::d3d9;
- if(!LightmapEnable){
- defaultRenderCB_Shader(atomic, header);
- return;
- }
-
- int vsBits;
setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride);
setIndices(header->indexBuffer);
setVertexDeclaration(header->vertexDeclaration);
- vsBits = lightingCB_Shader(atomic);
+ if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_MOBILE)
+ setVertexShader(CustomPipes::leedsBuilding_mobile_VS);
+ else
+ setVertexShader(CustomPipes::leedsBuilding_VS);
+ setPixelShader(scale_PS);
+
uploadMatrices(atomic->getFrame()->getLTM());
+ uploadWorldLights();
- float lightfactor[4];
+ float colorscale[4];
+ colorscale[3] = 1.0f;
InstanceData *inst = header->inst;
for(rw::uint32 i = 0; i < header->numMeshes; i++){
Material *m = inst->material;
- if(MatFX::getEffects(m) == MatFX::DUAL){
- setVertexShader(neoWorld_VS);
-
- MatFX *matfx = MatFX::get(m);
- Texture *dualtex = matfx->getDualTexture();
- if(dualtex == nil)
- goto notex;
- d3d::setTexture(1, dualtex);
- lightfactor[0] = lightfactor[1] = lightfactor[2] = WorldLightmapBlend.Get()*LightmapMult;
- }else{
- notex:
- setVertexShader(default_amb_VS);
-
- d3d::setTexture(1, nil);
- lightfactor[0] = lightfactor[1] = lightfactor[2] = 0.0f;
- }
- lightfactor[3] = m->color.alpha/255.0f;
- d3d::setTexture(0, m->texture);
- d3ddevice->SetPixelShaderConstantF(1, lightfactor, 1);
-
- SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255);
-
- RGBA color = { 255, 255, 255, m->color.alpha };
- setMaterial(color, m->surfaceProps);
+ float cs = 1.0f;
+ if(WorldPipeSwitch != WORLDPIPE_MOBILE && m->texture)
+ cs = 255/128.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ d3ddevice->SetPixelShaderConstantF(PSLOC_colorscale, colorscale, 1);
if(m->texture)
d3d::setTexture(0, m->texture);
else
- d3d::setTexture(0, gpWhiteTexture);
- setPixelShader(neoWorldVC_PS);
+ d3d::setTexture(0, gpWhiteTexture); // actually we don't even render this
+
+ rw::RGBA color = m->color;
+#ifdef VIS_DISTANCE_ALPHA
+ color.alpha = (color.alpha * CVisibilityPlugins::GetObjectDistanceAlpha((RwObject*)atomic))/255.0f;
+#endif
+ setMaterial(color, m->surfaceProps, WorldPipeSwitch == WORLDPIPE_PS2 ? 0.5f : 1.0f);
+
+ SetRenderState(VERTEXALPHA, inst->vertexAlpha || color.alpha != 255);
drawInst(header, inst);
inst++;
}
- d3d::setTexture(1, nil);
}
void
CreateWorldPipe(void)
{
- if(CFileMgr::LoadFile("neo/worldTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
- printf("Error: couldn't open 'neo/worldTweakingTable.dat'\n");
- else
- ReadTweakValueTable((char*)work_buff, WorldLightmapBlend);
-
-#include "shaders/obj/default_UV2_VS.inc"
- neoWorld_VS = rw::d3d::createVertexShader(default_UV2_VS_cso);
- assert(neoWorld_VS);
-
-#include "shaders/obj/neoWorldVC_PS.inc"
- neoWorldVC_PS = rw::d3d::createPixelShader(neoWorldVC_PS_cso);
- assert(neoWorldVC_PS);
-
+// if(CFileMgr::LoadFile("neo/worldTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
+// printf("Error: couldn't open 'neo/worldTweakingTable.dat'\n");
+// else
+// ReadTweakValueTable((char*)work_buff, WorldLightmapBlend);
+
+#include "shaders/obj/leedsBuilding_VS.inc"
+ leedsBuilding_VS = rw::d3d::createVertexShader(leedsBuilding_VS_cso);
+ assert(leedsBuilding_VS);
+#include "shaders/obj/leedsBuilding_mobile_VS.inc"
+ leedsBuilding_mobile_VS = rw::d3d::createVertexShader(leedsBuilding_mobile_VS_cso);
+ assert(leedsBuilding_mobile_VS);
+#include "shaders/obj/scale_PS.inc"
+ scale_PS = rw::d3d::createPixelShader(scale_PS_cso);
+ assert(scale_PS);
rw::d3d9::ObjPipeline *pipe = rw::d3d9::ObjPipeline::create();
pipe->instanceCB = rw::d3d9::defaultInstanceCB;
@@ -280,10 +506,12 @@ CreateWorldPipe(void)
void
DestroyWorldPipe(void)
{
- rw::d3d::destroyVertexShader(neoWorld_VS);
- neoWorld_VS = nil;
- rw::d3d::destroyPixelShader(neoWorldVC_PS);
- neoWorldVC_PS = nil;
+ rw::d3d::destroyVertexShader(leedsBuilding_VS);
+ leedsBuilding_VS = nil;
+ rw::d3d::destroyVertexShader(leedsBuilding_mobile_VS);
+ leedsBuilding_mobile_VS = nil;
+ rw::d3d::destroyPixelShader(scale_PS);
+ scale_PS = nil;
((rw::d3d9::ObjPipeline*)worldPipe)->destroy();
@@ -422,7 +650,6 @@ rimRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
}
int vsBits;
- rw::uint32 flags = atomic->geometry->flags;
setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride);
setIndices(header->indexBuffer);
setVertexDeclaration(header->vertexDeclaration);
@@ -440,7 +667,7 @@ rimRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255);
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps);
if(m->texture){
d3d::setTexture(0, m->texture);
@@ -466,7 +693,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
}
int vsBits;
- rw::uint32 flags = atomic->geometry->flags;
+
setStreamSource(0, (IDirect3DVertexBuffer9*)header->vertexStream[0].vertexBuffer,
0, header->vertexStream[0].stride);
setIndices((IDirect3DIndexBuffer9*)header->indexBuffer);
@@ -487,7 +714,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header)
SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255);
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps);
if(inst->material->texture){
d3d::setTexture(0, m->texture);
@@ -555,12 +782,7 @@ DestroyRimLightPipes(void)
}
-#endif
-
#ifdef NEW_RENDERER
-#ifndef LIBRW
-#error "Need librw for NEW_PIPELINES"
-#endif
namespace WorldRender
{
@@ -613,16 +835,20 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
assert(building->instHeader->platform == PLATFORM_D3D9);
building->fadeAlpha = 255;
building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT);
- rw::uint32 flags = atomic->geometry->flags;
bool setupDone = false;
bool defer = false;
SetMatrix(building, atomic->getFrame()->getLTM());
+ float colorscale[4];
+
InstanceData *inst = building->instHeader->inst;
for(rw::uint32 i = 0; i < building->instHeader->numMeshes; i++, inst++){
Material *m = inst->material;
+ if(m->texture == nil)
+ continue;
+
if(inst->vertexAlpha || m->color.alpha != 255 ||
IsTextureTransparent(m->texture)){
defer = true;
@@ -634,22 +860,29 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
setStreamSource(0, building->instHeader->vertexStream[0].vertexBuffer, 0, building->instHeader->vertexStream[0].stride);
setIndices(building->instHeader->indexBuffer);
setVertexDeclaration(building->instHeader->vertexDeclaration);
- setVertexShader(default_amb_VS);
- d3ddevice->SetVertexShaderConstantF(VSLOC_combined, (float*)&building->combinedMat, 4);
- if(building->lighting)
- setAmbient(pAmbient->color);
+ if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_MOBILE)
+ setVertexShader(CustomPipes::leedsBuilding_mobile_VS);
else
- setAmbient(black);
+ setVertexShader(CustomPipes::leedsBuilding_VS);
+ setPixelShader(CustomPipes::scale_PS);
+ d3ddevice->SetVertexShaderConstantF(VSLOC_combined, (float*)&building->combinedMat, 4);
+
+ CustomPipes::uploadWorldLights();
+
+ colorscale[3] = 1.0f;
+
setupDone = true;
}
- setMaterial(flags, m->color, m->surfaceProps);
+ float cs = 1.0f;
+ if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture)
+ cs = 255/128.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ d3ddevice->SetPixelShaderConstantF(CustomPipes::PSLOC_colorscale, colorscale, 1);
- if(m->texture){
- d3d::setTexture(0, m->texture);
- setPixelShader(default_tex_PS);
- }else
- setPixelShader(default_PS);
+ d3d::setTexture(0, m->texture);
+
+ setMaterial(m->color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f);
drawInst(building->instHeader, inst);
}
@@ -683,7 +916,16 @@ RenderBlendPass(int pass)
using namespace rw::d3d;
using namespace rw::d3d9;
- setVertexShader(default_amb_VS);
+ if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_MOBILE)
+ setVertexShader(CustomPipes::leedsBuilding_mobile_VS);
+ else
+ setVertexShader(CustomPipes::leedsBuilding_VS);
+ setPixelShader(CustomPipes::scale_PS);
+
+ CustomPipes::uploadWorldLights();
+
+ float colorscale[4];
+ colorscale[3] = 1.0f;
int i;
for(i = 0; i < numBlendInsts[pass]; i++){
@@ -693,26 +935,26 @@ RenderBlendPass(int pass)
setIndices(building->instHeader->indexBuffer);
setVertexDeclaration(building->instHeader->vertexDeclaration);
d3ddevice->SetVertexShaderConstantF(VSLOC_combined, (float*)&building->combinedMat, 4);
- if(building->lighting)
- setAmbient(pAmbient->color);
- else
- setAmbient(black);
InstanceData *inst = building->instHeader->inst;
for(rw::uint32 j = 0; j < building->instHeader->numMeshes; j++, inst++){
Material *m = inst->material;
+ if(m->texture == nil)
+ continue;
if(!inst->vertexAlpha && m->color.alpha == 255 && !IsTextureTransparent(m->texture) && building->fadeAlpha == 255)
continue; // already done this one
+ float cs = 1.0f;
+ if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture)
+ cs = 255/128.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ d3ddevice->SetPixelShaderConstantF(CustomPipes::PSLOC_colorscale, colorscale, 1);
+
+ d3d::setTexture(0, m->texture);
+
rw::RGBA color = m->color;
color.alpha = (color.alpha * building->fadeAlpha)/255;
- setMaterial(color, m->surfaceProps); // always modulate here
-
- if(m->texture){
- d3d::setTexture(0, m->texture);
- setPixelShader(default_tex_PS);
- }else
- setPixelShader(default_PS);
+ setMaterial(color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f);
drawInst(building->instHeader, inst);
}
@@ -722,3 +964,4 @@ RenderBlendPass(int pass)
#endif
#endif
+#endif
diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp
index d74e40db..0860d59e 100644
--- a/src/extras/custompipes_gl.cpp
+++ b/src/extras/custompipes_gl.cpp
@@ -1,6 +1,10 @@
#include "common.h"
#ifdef RW_OPENGL
+#ifdef EXTENDED_PIPELINES
+
+#include "rpmatfx.h"
+
#include "main.h"
#include "RwHelper.h"
#include "Lights.h"
@@ -11,10 +15,9 @@
#include "TxdStore.h"
#include "Renderer.h"
#include "World.h"
+#include "VisibilityPlugins.h"
#include "custompipes.h"
-#ifdef EXTENDED_PIPELINES
-
#ifndef LIBRW
#error "Need librw for EXTENDED_PIPELINES"
#endif
@@ -33,14 +36,211 @@ static int32 u_reflProps;
static int32 u_specDir;
static int32 u_specColor;
+static int32 u_amb;
+static int32 u_emiss;
+static int32 u_colorscale;
+
+static int32 u_texMatrix;
+static int32 u_shininess;
+
+static int32 u_skyTop;
+static int32 u_skyBot;
+
#define U(i) currentShader->uniformLocations[i]
/*
- * Neo Vehicle pipe
+ * Leeds & Neo Vehicle pipe
*/
+rw::gl3::Shader *leedsVehicleShader_add;
+rw::gl3::Shader *leedsVehicleShader_blend;
+rw::gl3::Shader *leedsVehicleShader_mobile;
+
rw::gl3::Shader *neoVehicleShader;
+static rw::RawMatrix normal2texcoord_flipU = {
+ { -0.5f, 0.0f, 0.0f }, 0.0f,
+ { 0.0f, -0.5f, 0.0f }, 0.0f,
+ { 0.0f, 0.0f, 1.0f }, 0.0f,
+ { 0.5f, 0.5f, 0.0f }, 1.0f
+};
+
+static void
+uploadEnvMatrix(rw::Frame *frame)
+{
+ using namespace rw;
+ using namespace rw::gl3;
+
+ Matrix invMat;
+ if(frame == nil)
+ frame = engine->currentCamera->getFrame();
+
+ // cache the matrix across multiple meshes
+ static RawMatrix envMtx;
+// can't do it, frame matrix may change
+// if(frame != lastEnvFrame){
+// lastEnvFrame = frame;
+ {
+
+ Matrix tmp = *frame->getLTM();
+ // Now the weird part: we remove the camera pitch
+ tmp.at.z = 0.0f;
+ tmp.at = normalize(tmp.at);
+ tmp.right.x = -tmp.at.y;
+ tmp.right.y = tmp.at.x;
+ tmp.right.z = 0.0f;;
+ tmp.up.set(0.0f, 0.0f, 1.0f);
+ tmp.pos.set(0.0f, 0.0f, 0.0f);
+ tmp.flags = Matrix::TYPEORTHONORMAL;
+
+ RawMatrix invMtx;
+ Matrix::invert(&invMat, &tmp);
+ convMatrix(&invMtx, &invMat);
+ RawMatrix::mult(&envMtx, &invMtx, &normal2texcoord_flipU);
+ }
+ setUniform(u_texMatrix, &envMtx);
+}
+
+static void
+leedsVehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
+{
+ using namespace rw;
+ using namespace rw::gl3;
+
+ Material *m;
+
+ setWorldMatrix(atomic->getFrame()->getLTM());
+ lightingCB(atomic);
+
+ setupVertexInput(header);
+
+ InstanceData *inst = header->inst;
+ rw::int32 n = header->numMeshes;
+
+ if(gGlassCarsCheat)
+ leedsVehicleShader_blend->use();
+ else
+ leedsVehicleShader_add->use();
+
+ setTexture(1, EnvMapTex);
+ uploadEnvMatrix(nil);
+
+ SetRenderState(SRCBLEND, BLENDONE);
+
+ float colorscale[4];
+ colorscale[3] = 1.0f;
+
+ while(n--){
+ m = inst->material;
+
+ rw::SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 0xFF);
+
+ float coef = 0.0f;
+ if(RpMatFXMaterialGetEffects(m) == rpMATFXEFFECTENVMAP){
+ coef = CClock::ms_EnvMapTimeMultiplicator * RpMatFXMaterialGetEnvMapCoefficient(m)*0.5f;
+ if(gGlassCarsCheat)
+ coef = 1.0f;
+ }
+ glUniform1f(U(u_shininess), coef);
+
+ setMaterial(m->color, m->surfaceProps);
+
+ float cs = 1.0f;
+ // how does the PS2 handle this actually? probably scaled material color?
+ if(VehiclePipeSwitch == VEHICLEPIPE_PSP && m->texture)
+ cs = 2.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ glUniform4fv(U(u_colorscale), 1, colorscale);
+
+ setTexture(0, m->texture);
+
+ drawInst(header, inst);
+ inst++;
+ }
+
+ setTexture(1, nil);
+
+ SetRenderState(SRCBLEND, BLENDSRCALPHA);
+
+ teardownVertexInput(header);
+}
+
+void
+uploadWorldLights(void)
+{
+ using namespace rw;
+ using namespace rw::gl3;
+
+ RGBAf amb, emiss;
+ amb.red = CTimeCycle::GetAmbientRed();
+ amb.green = CTimeCycle::GetAmbientGreen();
+ amb.blue = CTimeCycle::GetAmbientBlue();
+ amb.alpha = 1.0f;
+ emiss = pAmbient->color;
+
+ glUniform4fv(U(CustomPipes::u_amb), 1, (float*)&amb);
+ glUniform4fv(U(CustomPipes::u_emiss), 1, (float*)&emiss);
+}
+
+static void
+leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
+{
+ using namespace rw;
+ using namespace rw::gl3;
+
+ Material *m;
+
+ setWorldMatrix(atomic->getFrame()->getLTM());
+ lightingCB(atomic);
+
+ setupVertexInput(header);
+
+ InstanceData *inst = header->inst;
+ rw::int32 n = header->numMeshes;
+
+ leedsVehicleShader_mobile->use();
+
+ uploadWorldLights();
+
+ RGBAf skyTop, skyBot;
+ skyTop.red = CTimeCycle::GetSkyTopRed()/255.0f;
+ skyTop.green = CTimeCycle::GetSkyTopGreen()/255.0f;
+ skyTop.blue = CTimeCycle::GetSkyTopBlue()/255.0f;
+ skyBot.red = CTimeCycle::GetSkyBottomRed()/255.0f;
+ skyBot.green = CTimeCycle::GetSkyBottomGreen()/255.0f;
+ skyBot.blue = CTimeCycle::GetSkyBottomBlue()/255.0f;
+
+ glUniform3fv(U(u_skyTop), 1, (float*)&skyTop);
+ glUniform3fv(U(u_skyBot), 1, (float*)&skyBot);
+
+ setTexture(1, EnvMapTex);
+
+ while(n--){
+ m = inst->material;
+
+ rw::SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 0xFF);
+
+ float coef = 0.0f;
+ if(RpMatFXMaterialGetEffects(m) == rpMATFXEFFECTENVMAP){
+ coef = CClock::ms_EnvMapTimeMultiplicator * RpMatFXMaterialGetEnvMapCoefficient(m)*0.5f;
+ if(gGlassCarsCheat)
+ coef = 1.0f;
+ }
+ glUniform1f(U(u_shininess), coef);
+
+ setMaterial(m->color, m->surfaceProps);
+
+ setTexture(0, m->texture);
+
+ drawInst(header, inst);
+ inst++;
+ }
+
+ setTexture(1, nil);
+
+ teardownVertexInput(header);
+}
+
static void
uploadSpecLights(void)
{
@@ -80,14 +280,18 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
using namespace rw::gl3;
// TODO: make this less of a kludge
- if(VehiclePipeSwitch == VEHICLEPIPE_MATFX){
- matFXGlobals.pipelines[rw::platform]->render(atomic);
+ if(VehiclePipeSwitch == VEHICLEPIPE_PSP || VehiclePipeSwitch == VEHICLEPIPE_PS2){
+ leedsVehicleRenderCB(atomic, header);
+// matFXGlobals.pipelines[rw::platform]->render(atomic);
+ return;
+ }
+ if(VehiclePipeSwitch == VEHICLEPIPE_MOBILE){
+ leedsVehicleRenderCB_mobile(atomic, header);
return;
}
Material *m;
- rw::uint32 flags = atomic->geometry->flags;
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
@@ -114,7 +318,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
while(n--){
m = inst->material;
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps);
setTexture(0, m->texture);
@@ -141,15 +345,15 @@ CreateVehiclePipe(void)
using namespace rw;
using namespace rw::gl3;
- if(CFileMgr::LoadFile("neo/carTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
- printf("Error: couldn't open 'neo/carTweakingTable.dat'\n");
- else{
- char *fp = (char*)work_buff;
- fp = ReadTweakValueTable(fp, Fresnel);
- fp = ReadTweakValueTable(fp, Power);
- fp = ReadTweakValueTable(fp, DiffColor);
- fp = ReadTweakValueTable(fp, SpecColor);
- }
+// if(CFileMgr::LoadFile("neo/carTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
+// printf("Error: couldn't open 'neo/carTweakingTable.dat'\n");
+// else{
+// char *fp = (char*)work_buff;
+// fp = ReadTweakValueTable(fp, Fresnel);
+// fp = ReadTweakValueTable(fp, Power);
+// fp = ReadTweakValueTable(fp, DiffColor);
+// fp = ReadTweakValueTable(fp, SpecColor);
+// }
{
@@ -161,6 +365,27 @@ CreateVehiclePipe(void)
assert(neoVehicleShader);
}
+ {
+#include "shaders/obj/leedsDefault_vert.inc"
+#include "shaders/obj/leedsDefault_frag.inc"
+ const char *vs[] = { shaderDecl, "#define ENVMAP\n#define DIRECTIONALS\n", header_vert_src, leedsDefault_vert_src, nil };
+ const char *fs_add[] = { shaderDecl, "#define PASS_ADD\n", header_frag_src, leedsDefault_frag_src, nil };
+ const char *fs_blend[] = { shaderDecl, "#define PASS_BLEND\n", header_frag_src, leedsDefault_frag_src, nil };
+ leedsVehicleShader_add = Shader::create(vs, fs_add);
+ assert(leedsVehicleShader_add);
+ leedsVehicleShader_blend = Shader::create(vs, fs_blend);
+ assert(leedsVehicleShader_blend);
+ }
+
+ {
+#include "shaders/obj/leedsVehicle_mobile_frag.inc"
+#include "shaders/obj/leedsVehicle_mobile_vert.inc"
+ const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, leedsVehicle_mobile_vert_src, nil };
+ const char *fs[] = { shaderDecl, header_frag_src, leedsVehicle_mobile_frag_src, nil };
+ leedsVehicleShader_mobile = Shader::create(vs, fs);
+ assert(leedsVehicleShader_mobile);
+ }
+
rw::gl3::ObjPipeline *pipe = rw::gl3::ObjPipeline::create();
pipe->instanceCB = rw::gl3::defaultInstanceCB;
@@ -175,6 +400,15 @@ DestroyVehiclePipe(void)
neoVehicleShader->destroy();
neoVehicleShader = nil;
+ leedsVehicleShader_add->destroy();
+ leedsVehicleShader_add = nil;
+
+ leedsVehicleShader_blend->destroy();
+ leedsVehicleShader_blend = nil;
+
+ leedsVehicleShader_mobile->destroy();
+ leedsVehicleShader_mobile = nil;
+
((rw::gl3::ObjPipeline*)vehiclePipe)->destroy();
vehiclePipe = nil;
}
@@ -182,10 +416,11 @@ DestroyVehiclePipe(void)
/*
- * Neo World pipe
+ * Leeds World pipe
*/
-rw::gl3::Shader *neoWorldShader;
+rw::gl3::Shader *leedsWorldShader;
+rw::gl3::Shader *leedsWorldShader_mobile;
static void
worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
@@ -193,54 +428,47 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
using namespace rw;
using namespace rw::gl3;
- if(!LightmapEnable){
- gl3::defaultRenderCB(atomic, header);
- return;
- }
-
Material *m;
setWorldMatrix(atomic->getFrame()->getLTM());
- lightingCB(atomic);
setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
- neoWorldShader->use();
+ if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_MOBILE)
+ CustomPipes::leedsWorldShader_mobile->use();
+ else
+ CustomPipes::leedsWorldShader->use();
+
+ uploadWorldLights();
- float lightfactor[4];
+ float colorscale[4];
+ colorscale[3] = 1.0f;
while(n--){
m = inst->material;
- if(MatFX::getEffects(m) == MatFX::DUAL){
- MatFX *matfx = MatFX::get(m);
- Texture *dualtex = matfx->getDualTexture();
- if(dualtex == nil)
- goto notex;
- setTexture(1, dualtex);
- lightfactor[0] = lightfactor[1] = lightfactor[2] = WorldLightmapBlend.Get()*LightmapMult;
- }else{
- notex:
- setTexture(1, nil);
- lightfactor[0] = lightfactor[1] = lightfactor[2] = 0.0f;
- }
- lightfactor[3] = m->color.alpha/255.0f;
- glUniform4fv(U(u_lightMap), 1, lightfactor);
-
- RGBA color = { 255, 255, 255, m->color.alpha };
- setMaterial(color, m->surfaceProps);
+ float cs = 1.0f;
+ if(WorldPipeSwitch != WORLDPIPE_MOBILE && m->texture)
+ cs = 255/128.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ glUniform4fv(U(u_colorscale), 1, colorscale);
setTexture(0, m->texture);
- rw::SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 0xFF);
+ rw::RGBA color = m->color;
+#ifdef VIS_DISTANCE_ALPHA
+ color.alpha = (color.alpha * CVisibilityPlugins::GetObjectDistanceAlpha((RwObject*)atomic))/255.0f;
+#endif
+ setMaterial(color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f);
+
+ rw::SetRenderState(VERTEXALPHA, inst->vertexAlpha || color.alpha != 0xFF);
drawInst(header, inst);
inst++;
}
- setTexture(1, nil);
teardownVertexInput(header);
}
@@ -250,18 +478,22 @@ CreateWorldPipe(void)
using namespace rw;
using namespace rw::gl3;
- if(CFileMgr::LoadFile("neo/worldTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
- printf("Error: couldn't open 'neo/worldTweakingTable.dat'\n");
- else
- ReadTweakValueTable((char*)work_buff, WorldLightmapBlend);
+// if(CFileMgr::LoadFile("neo/worldTweakingTable.dat", work_buff, sizeof(work_buff), "r") <= 0)
+// printf("Error: couldn't open 'neo/worldTweakingTable.dat'\n");
+// else
+// ReadTweakValueTable((char*)work_buff, WorldLightmapBlend);
{
-#include "shaders/obj/neoWorldVC_frag.inc"
-#include "shaders/obj/default_UV2_vert.inc"
- const char *vs[] = { shaderDecl, header_vert_src, default_UV2_vert_src, nil };
- const char *fs[] = { shaderDecl, header_frag_src, neoWorldVC_frag_src, nil };
- neoWorldShader = Shader::create(vs, fs);
- assert(neoWorldShader);
+#include "shaders/obj/scale_frag.inc"
+#include "shaders/obj/leedsBuilding_vert.inc"
+#include "shaders/obj/leedsBuilding_mobile_vert.inc"
+ const char *vs[] = { shaderDecl, header_vert_src, leedsBuilding_vert_src, nil };
+ const char *vs_mobile[] = { shaderDecl, header_vert_src, leedsBuilding_mobile_vert_src, nil };
+ const char *fs[] = { shaderDecl, header_frag_src, scale_frag_src, nil };
+ leedsWorldShader = Shader::create(vs, fs);
+ assert(leedsWorldShader);
+ leedsWorldShader_mobile = Shader::create(vs_mobile, fs);
+ assert(leedsWorldShader_mobile);
}
@@ -275,8 +507,10 @@ CreateWorldPipe(void)
void
DestroyWorldPipe(void)
{
- neoWorldShader->destroy();
- neoWorldShader = nil;
+ leedsWorldShader->destroy();
+ leedsWorldShader = nil;
+ leedsWorldShader_mobile->destroy();
+ leedsWorldShader_mobile = nil;
((rw::gl3::ObjPipeline*)worldPipe)->destroy();
worldPipe = nil;
@@ -312,12 +546,7 @@ glossRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
V3d eyePos = rw::engine->currentCamera->getFrame()->getLTM()->pos;
glUniform3fv(U(u_eye), 1, (float*)&eyePos);
- float reflProps[4];
- reflProps[0] = GlossMult;
- reflProps[1] = 0.0f;
- reflProps[2] = 0.0f;
- reflProps[3] = 0.0f;
- glUniform4fv(U(u_reflProps), 1, reflProps);
+ glUniform4fv(U(u_reflProps), 1, (float*)&GlossMult);
SetRenderState(VERTEXALPHA, TRUE);
SetRenderState(SRCBLEND, BLENDONE);
@@ -426,7 +655,6 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
Material *m;
- rw::uint32 flags = atomic->geometry->flags;
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
@@ -444,7 +672,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
while(n--){
m = inst->material;
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps);
setTexture(0, m->texture);
@@ -469,7 +697,6 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
Material *m;
- rw::uint32 flags = atomic->geometry->flags;
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
@@ -485,7 +712,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
while(n--){
m = inst->material;
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps);
setTexture(0, m->texture);
@@ -577,17 +804,22 @@ CustomPipeRegisterGL(void)
u_reflProps = rw::gl3::registerUniform("u_reflProps");
u_specDir = rw::gl3::registerUniform("u_specDir");
u_specColor = rw::gl3::registerUniform("u_specColor");
-}
+ u_amb = rw::gl3::registerUniform("u_amb");
+ u_emiss = rw::gl3::registerUniform("u_emiss");
+ u_colorscale = rw::gl3::registerUniform("u_colorscale");
+
+ u_texMatrix = rw::gl3::registerUniform("u_texMatrix", rw::gl3::UNIFORM_MAT4);
+ u_shininess = rw::gl3::registerUniform("u_shininess");
+ u_skyTop = rw::gl3::registerUniform("u_skyTop");
+ u_skyBot = rw::gl3::registerUniform("u_skyBot");
}
-#endif
+
+}
#ifdef NEW_RENDERER
-#ifndef LIBRW
-#error "Need librw for NEW_PIPELINES"
-#endif
namespace WorldRender
{
@@ -628,25 +860,20 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
assert(building->instHeader->platform == PLATFORM_GL3);
building->fadeAlpha = 255;
building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT);
- rw::uint32 flags = atomic->geometry->flags;
-
- WorldLights lights;
- lights.numAmbients = 1;
- lights.numDirectionals = 0;
- lights.numLocals = 0;
- if(building->lighting)
- lights.ambient = pAmbient->color;
- else
- lights.ambient = black;
bool setupDone = false;
bool defer = false;
building->matrix = *atomic->getFrame()->getLTM();
+ float colorscale[4];
+
InstanceData *inst = building->instHeader->inst;
for(rw::uint32 i = 0; i < building->instHeader->numMeshes; i++, inst++){
Material *m = inst->material;
+ if(m->texture == nil)
+ continue;
+
if(inst->vertexAlpha || m->color.alpha != 255 ||
IsTextureTransparent(m->texture)){
defer = true;
@@ -655,14 +882,27 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
// alright we're rendering this atomic
if(!setupDone){
- defaultShader->use();
+ if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_MOBILE)
+ CustomPipes::leedsWorldShader_mobile->use();
+ else
+ CustomPipes::leedsWorldShader->use();
setWorldMatrix(&building->matrix);
setupVertexInput(building->instHeader);
- setLights(&lights);
+
+ CustomPipes::uploadWorldLights();
+
+ colorscale[3] = 1.0f;
+
setupDone = true;
}
- setMaterial(flags, m->color, m->surfaceProps);
+ setMaterial(m->color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f);
+
+ float cs = 1.0f;
+ if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture)
+ cs = 255/128.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ glUniform4fv(U(CustomPipes::u_colorscale), 1, colorscale);
setTexture(0, m->texture);
@@ -697,11 +937,15 @@ RenderBlendPass(int pass)
using namespace rw;
using namespace rw::gl3;
- defaultShader->use();
- WorldLights lights;
- lights.numAmbients = 1;
- lights.numDirectionals = 0;
- lights.numLocals = 0;
+ if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_MOBILE)
+ CustomPipes::leedsWorldShader_mobile->use();
+ else
+ CustomPipes::leedsWorldShader->use();
+
+ CustomPipes::uploadWorldLights();
+
+ float colorscale[4];
+ colorscale[3] = 1.0f;
int i;
for(i = 0; i < numBlendInsts[pass]; i++){
@@ -709,21 +953,24 @@ RenderBlendPass(int pass)
setupVertexInput(building->instHeader);
setWorldMatrix(&building->matrix);
- if(building->lighting)
- lights.ambient = pAmbient->color;
- else
- lights.ambient = black;
- setLights(&lights);
InstanceData *inst = building->instHeader->inst;
for(rw::uint32 j = 0; j < building->instHeader->numMeshes; j++, inst++){
Material *m = inst->material;
+ if(m->texture == nil)
+ continue;
if(!inst->vertexAlpha && m->color.alpha == 255 && !IsTextureTransparent(m->texture) && building->fadeAlpha == 255)
continue; // already done this one
rw::RGBA color = m->color;
color.alpha = (color.alpha * building->fadeAlpha)/255;
- setMaterial(color, m->surfaceProps); // always modulate here
+ setMaterial(color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f);
+
+ float cs = 1.0f;
+ if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture)
+ cs = 255/128.0f;
+ colorscale[0] = colorscale[1] = colorscale[2] = cs;
+ glUniform4fv(U(CustomPipes::u_colorscale), 1, colorscale);
setTexture(0, m->texture);
@@ -736,3 +983,4 @@ RenderBlendPass(int pass)
#endif
#endif
+#endif
diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp
index ee6c3964..84c1d059 100644
--- a/src/extras/postfx.cpp
+++ b/src/extras/postfx.cpp
@@ -16,23 +16,25 @@
RwRaster *CPostFX::pFrontBuffer;
RwRaster *CPostFX::pBackBuffer;
bool CPostFX::bJustInitialised;
-int CPostFX::EffectSwitch = POSTFX_NORMAL;
+int CPostFX::EffectSwitch = POSTFX_PS2;
bool CPostFX::BlurOn = false;
bool CPostFX::MotionBlurOn = false;
static RwIm2DVertex Vertex[4];
static RwIm2DVertex Vertex2[4];
static RwImVertexIndex Index[6] = { 0, 1, 2, 0, 2, 3 };
+static RwIm2DVertex BlurVertex[12];
+static RwImVertexIndex BlurIndex[18] = { 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11 };
#ifdef RW_D3D9
-void *colourfilterVC_PS;
+void *colourfilterLCS_PS;
void *contrast_PS;
#endif
#ifdef RW_OPENGL
int32 u_blurcolor;
int32 u_contrastAdd;
int32 u_contrastMult;
-rw::gl3::Shader *colourFilterVC;
+rw::gl3::Shader *colourFilterLCS;
rw::gl3::Shader *contrast;
#endif
@@ -146,8 +148,8 @@ CPostFX::Open(RwCamera *cam)
#ifdef RW_D3D9
-#include "shaders/obj/colourfilterVC_PS.inc"
- colourfilterVC_PS = rw::d3d::createPixelShader(colourfilterVC_PS_cso);
+#include "shaders/obj/colourfilterLCS_PS.inc"
+ colourfilterLCS_PS = rw::d3d::createPixelShader(colourfilterLCS_PS_cso);
#include "shaders/obj/contrastPS.inc"
contrast_PS = rw::d3d::createPixelShader(contrastPS_cso);
#endif
@@ -156,11 +158,11 @@ CPostFX::Open(RwCamera *cam)
{
#include "shaders/obj/im2d_vert.inc"
-#include "shaders/obj/colourfilterVC_frag.inc"
+#include "shaders/obj/colourfilterLCS_frag.inc"
const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil };
- const char *fs[] = { shaderDecl, header_frag_src, colourfilterVC_frag_src, nil };
- colourFilterVC = Shader::create(vs, fs);
- assert(colourFilterVC);
+ const char *fs[] = { shaderDecl, header_frag_src, colourfilterLCS_frag_src, nil };
+ colourFilterLCS = Shader::create(vs, fs);
+ assert(colourFilterLCS);
}
{
@@ -187,9 +189,9 @@ CPostFX::Close(void)
pBackBuffer = nil;
}
#ifdef RW_D3D9
- if(colourfilterVC_PS){
- rw::d3d::destroyPixelShader(colourfilterVC_PS);
- colourfilterVC_PS = nil;
+ if(colourfilterLCS_PS){
+ rw::d3d::destroyPixelShader(colourfilterLCS_PS);
+ colourfilterLCS_PS = nil;
}
if(contrast_PS){
rw::d3d::destroyPixelShader(contrast_PS);
@@ -197,9 +199,9 @@ CPostFX::Close(void)
}
#endif
#ifdef RW_OPENGL
- if(colourFilterVC){
- colourFilterVC->destroy();
- colourFilterVC = nil;
+ if(colourFilterLCS){
+ colourFilterLCS->destroy();
+ colourFilterLCS = nil;
}
if(contrast){
contrast->destroy();
@@ -208,9 +210,44 @@ CPostFX::Close(void)
#endif
}
+static float blurOffset = 0.6f;//3.0f/16.0f; // not quite sure sure about this
+static float blurIntensity = 0.25f;
+
void
CPostFX::RenderOverlayBlur(RwCamera *cam, int32 r, int32 g, int32 b, int32 a)
{
+ memcpy(BlurVertex, Vertex, sizeof(Vertex));
+ memcpy(BlurVertex+4, Vertex, sizeof(Vertex));
+ memcpy(BlurVertex+8, Vertex, sizeof(Vertex));
+ int intensity = 255*blurIntensity;
+ int i;
+ for(i = 0; i < 4; i++){
+ RwIm2DVertexSetScreenX(&BlurVertex[i], RwIm2DVertexGetScreenX(&BlurVertex[i]) + blurOffset);
+ RwIm2DVertexSetIntRGBA(&BlurVertex[i], 255, 255, 255, intensity);
+ }
+ for(i = 4; i < 8; i++){
+ RwIm2DVertexSetScreenX(&BlurVertex[i], RwIm2DVertexGetScreenX(&BlurVertex[i]) + blurOffset);
+ RwIm2DVertexSetScreenY(&BlurVertex[i], RwIm2DVertexGetScreenY(&BlurVertex[i]) + blurOffset);
+ RwIm2DVertexSetIntRGBA(&BlurVertex[i], 255, 255, 255, intensity);
+ }
+ for(i = 8; i < 12; i++){
+ RwIm2DVertexSetScreenY(&BlurVertex[i], RwIm2DVertexGetScreenY(&BlurVertex[i]) + blurOffset);
+ RwIm2DVertexSetIntRGBA(&BlurVertex[i], 255, 255, 255, intensity);
+ }
+
+ RwRenderStateSet(rwRENDERSTATETEXTURERASTER, pBackBuffer);
+ RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
+ RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+ RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
+ RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
+
+ RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, BlurVertex, 12, BlurIndex, 18);
+
+ // this sucks: should render colourfilter with blending instead
+ // but can't change equation to subtraction for PSP here
+ GetBackBuffer(cam);
+
+/* the old way
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, pFrontBuffer);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
@@ -243,6 +280,7 @@ CPostFX::RenderOverlayBlur(RwCamera *cam, int32 r, int32 g, int32 b, int32 a)
RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, Vertex, 4, Index, 6);
RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, BlurOn ? Vertex2 : Vertex, 4, Index, 6);
+*/
}
void
@@ -294,15 +332,15 @@ CPostFX::RenderOverlayShader(RwCamera *cam, int32 r, int32 g, int32 b, int32 a)
blurcolors[0] = r*f/255.0f;
blurcolors[1] = g*f/255.0f;
blurcolors[2] = b*f/255.0f;
- blurcolors[3] = 30/255.0f;
+ blurcolors[3] = EffectSwitch == POSTFX_PSP ? -1.0f : 1.0f;
#ifdef RW_D3D9
rw::d3d::d3ddevice->SetPixelShaderConstantF(10, blurcolors, 1);
- rw::d3d::im2dOverridePS = colourfilterVC_PS;
+ rw::d3d::im2dOverridePS = colourfilterLCS_PS;
#endif
#ifdef RW_OPENGL
- rw::gl3::im2dOverrideShader = colourFilterVC;
- colourFilterVC->use();
- glUniform4fv(colourFilterVC->uniformLocations[u_blurcolor], 1, blurcolors);
+ rw::gl3::im2dOverrideShader = colourFilterLCS;
+ colourFilterLCS->use();
+ glUniform4fv(colourFilterLCS->uniformLocations[u_blurcolor], 1, blurcolors);
#endif
}
RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, Vertex, 4, Index, 6);
@@ -342,11 +380,8 @@ CPostFX::NeedBackBuffer(void)
case POSTFX_SIMPLE:
// no actual rendering here
return false;
- case POSTFX_NORMAL:
- if(MotionBlurOn)
- return false;
- else
- return true;
+ case POSTFX_PSP:
+ case POSTFX_PS2:
case POSTFX_MOBILE:
return true;
}
@@ -357,24 +392,11 @@ bool
CPostFX::NeedFrontBuffer(int32 type)
{
// Last frame -- needed for motion blur
- if(CMBlur::Drunkness > 0.0f)
+ if(MotionBlurOn)
return true;
if(type == MOTION_BLUR_SNIPER)
return true;
- switch(EffectSwitch){
- case POSTFX_OFF:
- case POSTFX_SIMPLE:
- // no actual rendering here
- return false;
- case POSTFX_NORMAL:
- if(MotionBlurOn)
- return true;
- else
- return false;
- case POSTFX_MOBILE:
- return false;
- }
return false;
}
@@ -391,11 +413,17 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu
{
PUSH_RENDERGROUP("CPostFX::Render");
+ // LCS PS2 blur is drawn in three passes:
+ // blend frame with current frame 3 times to blur a bit
+ // blend one more time with colour filter
+ // motion blur like normal
+
if(pFrontBuffer == nil)
Open(cam);
assert(pFrontBuffer);
assert(pBackBuffer);
+/* // LCS: don't need that anymore
if(type == MOTION_BLUR_LIGHT_SCENE){
SmoothColor(red, green, blue, blur);
red = AvgRed;
@@ -403,6 +431,7 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu
blue = AvgBlue;
blur = AvgAlpha;
}
+*/
if(NeedBackBuffer())
GetBackBuffer(cam);
@@ -410,10 +439,15 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu
DefinedState();
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
- RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
+ if(BlurOn)
+ RenderOverlayBlur(cam, 0, 0, 0, 0);
+
+ RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
+
+ // TODO(LCS): check this out
if(type == MOTION_BLUR_SNIPER){
if(!bJustInitialised)
RenderOverlaySniper(cam, red, green, blue, blur);
@@ -422,21 +456,16 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu
case POSTFX_SIMPLE:
// no actual rendering here
break;
- case POSTFX_NORMAL:
- if(MotionBlurOn){
- if(!bJustInitialised)
- RenderOverlayBlur(cam, red, green, blue, blur);
- }else{
- RenderOverlayShader(cam, red, green, blue, blur);
- }
- break;
+ case POSTFX_PSP:
+ case POSTFX_PS2:
case POSTFX_MOBILE:
RenderOverlayShader(cam, red, green, blue, blur);
break;
}
- if(!bJustInitialised)
- RenderMotionBlur(cam, 175.0f * CMBlur::Drunkness);
+ if(MotionBlurOn)
+ if(!bJustInitialised)
+ RenderMotionBlur(cam, bluralpha);
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
diff --git a/src/extras/postfx.h b/src/extras/postfx.h
index db702bf3..232c151b 100644
--- a/src/extras/postfx.h
+++ b/src/extras/postfx.h
@@ -7,9 +7,12 @@ class CPostFX
public:
enum {
POSTFX_OFF,
- POSTFX_SIMPLE,
- POSTFX_NORMAL,
- POSTFX_MOBILE
+ POSTFX_PSP,
+ POSTFX_PS2,
+
+ // not so sensible for the moment
+ POSTFX_SIMPLE = -1,
+ POSTFX_MOBILE = -2
};
static RwRaster *pFrontBuffer;
static RwRaster *pBackBuffer;
diff --git a/src/extras/shaders/colourfilterLCS.frag b/src/extras/shaders/colourfilterLCS.frag
new file mode 100644
index 00000000..272ebb03
--- /dev/null
+++ b/src/extras/shaders/colourfilterLCS.frag
@@ -0,0 +1,20 @@
+uniform sampler2D tex0;
+uniform vec4 u_blurcolor;
+
+FSIN vec4 v_color;
+FSIN vec2 v_tex0;
+FSIN float v_fog;
+
+void
+main(void)
+{
+ vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
+ dst += dst*u_blurcolor;
+
+ vec4 color;
+ color.rgb = dst.rgb;
+ color.a = 1.0;
+
+ FRAGCOLOR(color);
+}
+
diff --git a/src/extras/shaders/colourfilterLCS_PS.hlsl b/src/extras/shaders/colourfilterLCS_PS.hlsl
new file mode 100644
index 00000000..df1beefc
--- /dev/null
+++ b/src/extras/shaders/colourfilterLCS_PS.hlsl
@@ -0,0 +1,10 @@
+sampler2D tex : register(s0);
+float4 blurcol : register(c10);
+
+float4 main(in float2 texcoord : TEXCOORD0) : COLOR0
+{
+ float4 dst = tex2D(tex, texcoord.xy);
+ dst += dst*blurcol*blurcol.a;
+ dst.a = 1.0;
+ return dst;
+}
diff --git a/src/extras/shaders/colourfilterVC.frag b/src/extras/shaders/colourfilterVC.frag
deleted file mode 100644
index 283aa817..00000000
--- a/src/extras/shaders/colourfilterVC.frag
+++ /dev/null
@@ -1,27 +0,0 @@
-uniform sampler2D tex0;
-uniform vec4 u_blurcolor;
-
-FSIN vec4 v_color;
-FSIN vec2 v_tex0;
-FSIN float v_fog;
-
-void
-main(void)
-{
- float a = u_blurcolor.a;
- vec4 doublec = clamp(u_blurcolor*2.0, 0.0, 1.0);
- vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
- vec4 prev = dst;
- for(int i = 0; i < 5; i++){
- vec4 tmp = dst*(1.0-a) + prev*doublec*a;
- tmp += prev*u_blurcolor;
- tmp += prev*u_blurcolor;
- prev = clamp(tmp, 0.0, 1.0);
- }
- vec4 color;
- color.rgb = prev.rgb;
- color.a = 1.0;
-
- FRAGCOLOR(color);
-}
-
diff --git a/src/extras/shaders/colourfilterVC_PS.hlsl b/src/extras/shaders/colourfilterVC_PS.hlsl
deleted file mode 100644
index 90d3b50c..00000000
--- a/src/extras/shaders/colourfilterVC_PS.hlsl
+++ /dev/null
@@ -1,23 +0,0 @@
-sampler2D tex : register(s0);
-float4 blurcol : register(c10);
-
-//float4 blurcols[10] : register(c15);
-
-
-float4 main(in float2 texcoord : TEXCOORD0) : COLOR0
-{
- float a = blurcol.a;
-
- float4 doublec = saturate(blurcol*2);
- float4 dst = tex2D(tex, texcoord.xy);
- float4 prev = dst;
- for(int i = 0; i < 5; i++){
-// float4 doublec = saturate(blurcol*2);
- float4 tmp = dst*(1-a) + prev*doublec*a;
- tmp += prev*blurcol;
- tmp += prev*blurcol;
- prev = saturate(tmp);
- }
- prev.a = 1.0;
- return prev;
-}
diff --git a/src/extras/shaders/leedsBuilding.vert b/src/extras/shaders/leedsBuilding.vert
new file mode 100644
index 00000000..766cd081
--- /dev/null
+++ b/src/extras/shaders/leedsBuilding.vert
@@ -0,0 +1,28 @@
+uniform vec4 u_amb;
+uniform vec4 u_emiss;
+
+#define surfEmissive (u_surfProps.w)
+
+VSIN(ATTRIB_POS) vec3 in_pos;
+
+VSOUT vec4 v_color;
+VSOUT vec2 v_tex0;
+VSOUT float v_fog;
+
+void
+main(void)
+{
+ vec4 Vertex = u_world * vec4(in_pos, 1.0);
+ gl_Position = u_proj * u_view * Vertex;
+ vec3 Normal = mat3(u_world) * in_normal;
+
+ v_tex0 = in_tex0;
+
+ v_color = in_color;
+ v_color.rgb *= u_amb.rgb;
+ v_color.rgb += u_emiss.rgb*surfEmissive;
+ v_color = clamp(v_color, 0.0, 1.0);
+ v_color.a *= u_matColor.a;
+
+ v_fog = DoFog(gl_Position.w);
+}
diff --git a/src/extras/shaders/leedsBuilding_VS.hlsl b/src/extras/shaders/leedsBuilding_VS.hlsl
new file mode 100644
index 00000000..1ed939cc
--- /dev/null
+++ b/src/extras/shaders/leedsBuilding_VS.hlsl
@@ -0,0 +1,43 @@
+#include "standardConstants.h"
+
+#define surfEmissive (surfProps.w)
+
+float4 emissive : register(c41);
+float4 ambient : register(c42);
+
+struct VS_in
+{
+ float4 Position : POSITION;
+ float3 Normal : NORMAL;
+ float2 TexCoord : TEXCOORD0;
+ float4 Prelight : COLOR0;
+};
+
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0; // also fog
+ float4 Color : COLOR0;
+};
+
+
+VS_out main(in VS_in input)
+{
+ VS_out output;
+
+ output.Position = mul(combinedMat, input.Position);
+ float3 Vertex = mul(worldMat, input.Position).xyz;
+ float3 Normal = mul(normalMat, input.Normal);
+
+ output.TexCoord0.xy = input.TexCoord;
+
+ output.Color = input.Prelight;
+ output.Color.rgb *= ambient.rgb;
+ output.Color.rgb += emissive.rgb*surfEmissive;
+
+ output.Color = clamp(output.Color, 0.0, 1.0);
+ output.Color.a *= matCol.a;
+
+ output.TexCoord0.z = clamp((output.Position.w - fogEnd)*fogRange, fogDisable, 1.0);
+
+ return output;
+}
diff --git a/src/extras/shaders/leedsBuilding_mobile.vert b/src/extras/shaders/leedsBuilding_mobile.vert
new file mode 100644
index 00000000..f06628ee
--- /dev/null
+++ b/src/extras/shaders/leedsBuilding_mobile.vert
@@ -0,0 +1,52 @@
+uniform vec4 u_amb;
+uniform vec4 u_emiss;
+
+#define surfEmissive (u_surfProps.w)
+
+#define vertContrast (1.5)
+#define vertBrightness (0.25)
+#define ambientContrast (1.2)
+#define ambientBrightness (0.1)
+#define emissiveContrast (1.25)
+#define emissiveBrightness (0.05)
+
+
+VSIN(ATTRIB_POS) vec3 in_pos;
+
+VSOUT vec4 v_color;
+VSOUT vec2 v_tex0;
+VSOUT float v_fog;
+
+void
+main(void)
+{
+ vec4 Vertex = u_world * vec4(in_pos, 1.0);
+ gl_Position = u_proj * u_view * Vertex;
+ vec3 Normal = mat3(u_world) * in_normal;
+
+ v_tex0 = in_tex0;
+
+ vec4 vertCol = in_color;
+ vec4 amb = u_amb;
+ vec4 emiss = u_emiss;
+
+ vertCol.xyz = ((vertCol.xyz - 0.5) * max(vertContrast, 0.0)) + 0.5;
+ vertCol.xyz += vertBrightness;
+ vertCol.xyz = max(vertCol.xyz, vec3(0.0,0.0,0.0));
+
+ amb.xyz = ((amb.xyz - 0.5) * max(ambientContrast, 0.0)) + 0.5;
+ amb.xyz += ambientBrightness;
+ amb.xyz = max(amb.xyz, vec3(0.0,0.0,0.0));
+
+ emiss.xyz = ((emiss.xyz - 0.5) * max(emissiveContrast, 0.0)) + 0.5;
+ emiss.xyz += emissiveBrightness;
+ emiss.xyz = max(emiss.xyz, vec3(0.0,0.0,0.0));
+ v_color.xyz = emiss.xyz + (vertCol.xyz * amb.xyz);
+ v_color.w = vertCol.w;
+
+
+ v_color = clamp(v_color, 0.0, 1.0);
+ v_color.a *= u_matColor.a;
+
+ v_fog = DoFog(gl_Position.w);
+}
diff --git a/src/extras/shaders/leedsBuilding_mobile_VS.hlsl b/src/extras/shaders/leedsBuilding_mobile_VS.hlsl
new file mode 100644
index 00000000..23accf64
--- /dev/null
+++ b/src/extras/shaders/leedsBuilding_mobile_VS.hlsl
@@ -0,0 +1,64 @@
+#include "standardConstants.h"
+
+#define surfEmissive (surfProps.w)
+
+#define vertContrast (1.5)
+#define vertBrightness (0.25)
+#define ambientContrast (1.2)
+#define ambientBrightness (0.1)
+#define emissiveContrast (1.25)
+#define emissiveBrightness (0.05)
+
+float4 emissive : register(c41);
+float4 ambient : register(c42);
+
+struct VS_in
+{
+ float4 Position : POSITION;
+ float3 Normal : NORMAL;
+ float2 TexCoord : TEXCOORD0;
+ float4 Prelight : COLOR0;
+};
+
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0; // also fog
+ float4 Color : COLOR0;
+};
+
+
+VS_out main(in VS_in input)
+{
+ VS_out output;
+
+ output.Position = mul(combinedMat, input.Position);
+ float3 Vertex = mul(worldMat, input.Position).xyz;
+ float3 Normal = mul(normalMat, input.Normal);
+
+ output.TexCoord0.xy = input.TexCoord;
+
+ float4 vertCol = input.Prelight;
+ float4 amb = ambient;
+ float4 emiss = emissive;
+
+ vertCol.xyz = ((vertCol.xyz - 0.5) * max(vertContrast, 0.0)) + 0.5;
+ vertCol.xyz += vertBrightness;
+ vertCol.xyz = max(vertCol.xyz, float3(0.0,0.0,0.0));
+
+ amb.xyz = ((amb.xyz - 0.5) * max(ambientContrast, 0.0)) + 0.5;
+ amb.xyz += ambientBrightness;
+ amb.xyz = max(amb.xyz, float3(0.0,0.0,0.0));
+
+ emiss.xyz = ((emiss.xyz - 0.5) * max(emissiveContrast, 0.0)) + 0.5;
+ emiss.xyz += emissiveBrightness;
+ emiss.xyz = max(emiss.xyz, float3(0.0,0.0,0.0));
+ output.Color.xyz = emiss.xyz + (vertCol.xyz * amb.xyz);
+ output.Color.w = vertCol.w;
+
+ output.Color = clamp(output.Color, 0.0, 1.0);
+ output.Color.a *= matCol.a;
+
+ output.TexCoord0.z = clamp((output.Position.w - fogEnd)*fogRange, fogDisable, 1.0);
+
+ return output;
+}
diff --git a/src/extras/shaders/leedsDefault.frag b/src/extras/shaders/leedsDefault.frag
new file mode 100644
index 00000000..4284fb7a
--- /dev/null
+++ b/src/extras/shaders/leedsDefault.frag
@@ -0,0 +1,46 @@
+uniform sampler2D tex0;
+uniform sampler2D tex1;
+
+uniform float u_shininess;
+uniform vec4 u_colorscale;
+
+FSIN vec4 v_color;
+FSIN vec2 v_tex0;
+#if defined(PASS_BLEND) || defined(PASS_ADD)
+FSIN vec2 v_tex1;
+#endif
+FSIN float v_fog;
+
+void
+main(void)
+{
+ vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale;
+ pass1.rgb = clamp(pass1.rgb, 0.0, 1.0);
+ pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog);
+
+ vec4 color;
+#if defined(PASS_BLEND) || defined(PASS_ADD)
+ vec4 pass2 = texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));
+ pass2.a *= u_shininess;
+ pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog);
+
+ // We simulate drawing this in two passes.
+#if defined(PASS_ADD)
+ // First pass with standard blending, second with addition
+ // We premultiply alpha so render state should be one.
+ color.rgb = pass1.rgb*pass1.a + pass2.rgb*pass2.a;
+ color.a = pass1.a;
+#elif defined(PASS_BLEND)
+ // We premultiply alpha so render state should be one.
+ color.rgb = pass1.rgb*pass1.a*(1.0-pass2.a) + pass2.rgb*pass2.a;
+ color.a = pass1.a*(1.0-pass2.a) + pass2.a;
+#endif
+
+#else
+ color = pass1;
+#endif
+
+ DoAlphaTest(color.a);
+
+ FRAGCOLOR(color);
+}
diff --git a/src/extras/shaders/leedsDefault.vert b/src/extras/shaders/leedsDefault.vert
new file mode 100644
index 00000000..9cb18a66
--- /dev/null
+++ b/src/extras/shaders/leedsDefault.vert
@@ -0,0 +1,51 @@
+#ifdef ENVMAP
+uniform mat4 u_texMatrix;
+#endif
+#ifdef SKIN
+uniform mat4 u_boneMatrices[64];
+#endif
+
+VSIN(ATTRIB_POS) vec3 in_pos;
+
+VSOUT vec4 v_color;
+VSOUT vec2 v_tex0;
+#ifdef ENVMAP
+VSOUT vec2 v_tex1;
+#endif
+VSOUT float v_fog;
+
+void
+main(void)
+{
+#ifdef SKIN
+ vec3 SkinVertex = vec3(0.0, 0.0, 0.0);
+ vec3 SkinNormal = vec3(0.0, 0.0, 0.0);
+ for(int i = 0; i < 4; i++){
+ SkinVertex += (u_boneMatrices[int(in_indices[i])] * vec4(in_pos, 1.0)).xyz * in_weights[i];
+ SkinNormal += (mat3(u_boneMatrices[int(in_indices[i])]) * in_normal) * in_weights[i];
+ }
+
+ vec4 Vertex = u_world * vec4(SkinVertex, 1.0);
+ gl_Position = u_proj * u_view * Vertex;
+ vec3 Normal = mat3(u_world) * SkinNormal;
+#else
+ vec4 Vertex = u_world * vec4(in_pos, 1.0);
+ gl_Position = u_proj * u_view * Vertex;
+ vec3 Normal = mat3(u_world) * in_normal;
+#endif
+
+ v_tex0 = in_tex0;
+#ifdef ENVMAP
+ v_tex1 = (u_texMatrix * vec4(Normal, 1.0)).xy;
+#endif
+
+ v_color = in_color;
+ v_color.rgb += u_ambLight.rgb*surfAmbient;
+ v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;
+ // PS2 clamps before material color
+ // PSP clamps after...maybe another constant for this?
+ v_color = clamp(v_color, 0.0, 1.0);
+ v_color *= u_matColor;
+
+ v_fog = DoFog(gl_Position.w);
+}
diff --git a/src/extras/shaders/leedsDefault_PS_x.hlsl b/src/extras/shaders/leedsDefault_PS_x.hlsl
new file mode 100644
index 00000000..0b546523
--- /dev/null
+++ b/src/extras/shaders/leedsDefault_PS_x.hlsl
@@ -0,0 +1,49 @@
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0;
+#if defined(PASS_BLEND) || defined(PASS_ADD)
+ float2 TexCoord1 : TEXCOORD1;
+#endif
+ float4 Color : COLOR0;
+};
+
+sampler2D diffTex : register(s0);
+sampler2D envTex : register(s1);
+
+float4 fogColor : register(c0);
+
+float4 colorscale : register(c1);
+float4 fxparams : register(c2);
+
+#define shininess (fxparams.x)
+
+float4 main(VS_out input) : COLOR
+{
+ float4 pass1 = input.Color*tex2D(diffTex, input.TexCoord0.xy)*colorscale;
+ pass1.rgb = clamp(pass1.rgb, 0.0, 1.0);
+ pass1.rgb = lerp(fogColor.rgb, pass1.rgb, input.TexCoord0.z);
+
+ float4 color;
+#if defined(PASS_BLEND) || defined(PASS_ADD)
+ float4 pass2 = tex2D(envTex, input.TexCoord1.xy);
+ pass2.a *= shininess;
+ pass2.rgb = lerp(float3(0.0, 0.0, 0.0), pass2.rgb, input.TexCoord0.z);
+
+ // We simulate drawing this in two passes.
+#if defined(PASS_ADD)
+ // First pass with standard blending, second with addition
+ // We premultiply alpha so render state should be one.
+ color.rgb = pass1.rgb*pass1.a + pass2.rgb*pass2.a;
+ color.a = pass1.a;
+#elif defined(PASS_BLEND)
+ // We premultiply alpha so render state should be one.
+ color.rgb = pass1.rgb*pass1.a*(1.0-pass2.a) + pass2.rgb*pass2.a;
+ color.a = pass1.a*(1.0-pass2.a) + pass2.a;
+#endif
+
+#else
+ color = pass1;
+#endif
+
+ return color;
+}
diff --git a/src/extras/shaders/leedsDefault_VS_x.hlsl b/src/extras/shaders/leedsDefault_VS_x.hlsl
new file mode 100644
index 00000000..58bee097
--- /dev/null
+++ b/src/extras/shaders/leedsDefault_VS_x.hlsl
@@ -0,0 +1,72 @@
+#include "standardConstants.h"
+
+#ifdef ENVMAP
+float4x4 texMat : register(c41);
+#endif
+#ifdef SKIN
+float4x3 boneMatrices[64] : register(c41);
+#endif
+
+struct VS_in
+{
+ float4 Position : POSITION;
+ float3 Normal : NORMAL;
+ float2 TexCoord : TEXCOORD0;
+ float4 Prelight : COLOR0;
+#ifdef SKIN
+ float4 Weights : BLENDWEIGHT;
+ int4 Indices : BLENDINDICES;
+#endif
+};
+
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0; // also fog
+#ifdef ENVMAP
+ float2 TexCoord1 : TEXCOORD1;
+#endif
+ float4 Color : COLOR0;
+};
+
+
+VS_out main(in VS_in input)
+{
+ VS_out output;
+
+#ifdef SKIN
+ int j;
+ float3 SkinVertex = float3(0.0, 0.0, 0.0);
+ float3 SkinNormal = float3(0.0, 0.0, 0.0);
+ for(j = 0; j < 4; j++){
+ SkinVertex += mul(input.Position, boneMatrices[input.Indices[j]]).xyz * input.Weights[j];
+ SkinNormal += mul(input.Normal, (float3x3)boneMatrices[input.Indices[j]]).xyz * input.Weights[j];
+ }
+ output.Position = mul(combinedMat, SkinVertex);
+// float3 V = mul(worldMat, SkinVertex).xyz;
+ float3 N = mul(normalMat, SkinNormal);
+#else
+ output.Position = mul(combinedMat, input.Position);
+// float3 V = mul(worldMat, input.Position).xyz;
+ float3 N = mul(normalMat, input.Normal);
+#endif
+
+ output.TexCoord0.xy = input.TexCoord;
+#ifdef ENVMAP
+ output.TexCoord1 = mul(texMat, float4(N, 1.0)).xy;
+#endif
+
+ output.Color = input.Prelight;
+ output.Color.rgb += ambientLight.rgb * surfAmbient;
+
+ int i;
+ for(i = 0; i < numDirLights; i++)
+ output.Color.xyz += DoDirLight(lights[i+firstDirLight], N)*surfDiffuse;
+ // PS2 clamps before material color
+ // PSP clamps after...maybe another constant for this?
+ output.Color = clamp(output.Color, 0.0, 1.0);
+ output.Color *= matCol;
+
+ output.TexCoord0.z = clamp((output.Position.w - fogEnd)*fogRange, fogDisable, 1.0);
+
+ return output;
+}
diff --git a/src/extras/shaders/leedsVehicle_mobile.frag b/src/extras/shaders/leedsVehicle_mobile.frag
new file mode 100644
index 00000000..5c7a60b9
--- /dev/null
+++ b/src/extras/shaders/leedsVehicle_mobile.frag
@@ -0,0 +1,74 @@
+uniform sampler2D tex0;
+uniform sampler2D tex1;
+
+uniform float u_shininess;
+uniform vec3 u_skyTop;
+uniform vec3 u_skyBot;
+
+// matfx:
+// case 1 normal envmap
+// custom1 (4.0, 1.0, 1.0, coef)
+// custom2 (0.25, 3.0, 1.0, 1.0)
+// case 2 too strong
+// custom1 (4.0, 1.0, 2.0, coef)
+// custom2 (0.5, 3.0, 1.0, 1.0)
+// ???: practically no fresnel
+// custom1 (4.0, 1.25, 0.01, coef)
+// custom2 (1.0, 2.0, 1.1, 2.0)
+
+#define power (4.0)
+
+#define preMult (1.0)
+#define postMult (1.0)
+#define minRefl (0.25)
+#define maxRefl (3.0)
+#define minOpacity (1.0)
+#define maxOpacity (1.0)
+
+//#define preMult (1.0)
+//#define postMult (2.0)
+//#define minRefl (0.5)
+//#define maxRefl (3.0)
+//#define minOpacity (1.0)
+//#define maxOpacity (1.0)
+
+//#define preMult (1.25)
+//#define postMult (0.01)
+//#define minRefl (1.0)
+//#define maxRefl (2.0)
+//#define minOpacity (1.1)
+//#define maxOpacity (2.0)
+
+FSIN vec4 v_color;
+FSIN vec2 v_tex0;
+FSIN vec2 v_tex1;
+FSIN float v_fog;
+FSIN vec2 v_reflData;
+
+#define v_NdotV (v_reflData.x)
+#define v_lightingCont (v_reflData.y)
+
+void
+main(void)
+{
+ vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
+
+ vec3 envtex = texture(tex1, v_tex1).rgb; // V flipped
+ vec3 skyColour = mix(u_skyBot, u_skyTop, envtex.g);
+ vec3 envOut = mix(envtex.rrr, skyColour, envtex.b);
+
+ float fresnel = mix(u_shininess, u_shininess * 2.0, v_NdotV);
+ fresnel = pow(v_NdotV * preMult, power);
+ fresnel = clamp(fresnel * postMult, 0.0, 1.0);
+ float reflectivity = v_lightingCont * mix(minRefl, maxRefl, fresnel)*u_shininess;
+
+ float opacity = mix(minOpacity, maxOpacity, fresnel)*pass1.a;
+ vec4 color = pass1 + vec4(reflectivity * envOut, 0.0);
+ color.a = opacity;
+
+ color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);
+
+ DoAlphaTest(color.a);
+
+ FRAGCOLOR(color);
+}
diff --git a/src/extras/shaders/leedsVehicle_mobile.vert b/src/extras/shaders/leedsVehicle_mobile.vert
new file mode 100644
index 00000000..b2123fa4
--- /dev/null
+++ b/src/extras/shaders/leedsVehicle_mobile.vert
@@ -0,0 +1,40 @@
+uniform vec4 u_amb;
+uniform vec4 u_emiss;
+
+VSIN(ATTRIB_POS) vec3 in_pos;
+
+VSOUT vec4 v_color;
+VSOUT vec2 v_tex0;
+VSOUT vec2 v_tex1;
+VSOUT float v_fog;
+VSOUT vec2 v_reflData;
+
+#define v_NdotV (v_reflData.x)
+#define v_lightingCont (v_reflData.y)
+
+void
+main(void)
+{
+ vec4 Vertex = u_world * vec4(in_pos, 1.0);
+ gl_Position = u_proj * u_view * Vertex;
+ vec3 Normal = mat3(u_world) * in_normal;
+
+ v_tex0 = in_tex0;
+
+ vec3 ViewNormal = mat3(u_view) * Normal;
+ v_tex1 = (ViewNormal.xy + vec2(1.0, 1.0))*0.5;
+
+ v_color = in_color;
+ vec4 combinedAmbient = mix(u_emiss, u_amb, Normal.z);
+ v_color.rgb += combinedAmbient.rgb*surfAmbient;
+ v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;
+ v_lightingCont = max(0.5, (v_color.r + v_color.g + v_color.b) / 3.0);
+ v_color *= u_matColor;
+
+ // for fresnel
+ vec3 camPos = -u_view[3].xyz * mat3(u_view);
+ vec3 viewVec = normalize(Vertex.xyz - camPos);
+ v_NdotV = 1.0 - dot(-Normal.xyz, viewVec.xyz);
+
+ v_fog = DoFog(gl_Position.w);
+}
diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl
new file mode 100644
index 00000000..a343b32f
--- /dev/null
+++ b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl
@@ -0,0 +1,53 @@
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0;
+ float2 TexCoord1 : TEXCOORD1;
+ float2 ReflData : TEXCOORD2;
+ float4 Color : COLOR0;
+};
+
+#define NdotV (input.ReflData.x)
+#define lightingCont (input.ReflData.y)
+
+sampler2D diffTex : register(s0);
+sampler2D envTex : register(s1);
+
+float4 fogColor : register(c0);
+
+float4 fxparams : register(c2);
+float3 skyTop : register(c3);
+float3 skyBot : register(c4);
+
+#define shininess (fxparams.x)
+
+#define power (4.0)
+
+#define preMult (1.0)
+#define postMult (1.0)
+#define minRefl (0.25)
+#define maxRefl (3.0)
+#define minOpacity (1.0)
+#define maxOpacity (1.0)
+
+
+float4 main(VS_out input) : COLOR
+{
+ float4 pass1 = input.Color*tex2D(diffTex, input.TexCoord0.xy);
+
+ float3 envtex = tex2D(envTex, float2(input.TexCoord1.x, 1.0-input.TexCoord1.y)).rgb; // V flipped
+ float3 skyColour = lerp(skyBot, skyTop, envtex.g);
+ float3 envOut = lerp(envtex.rrr, skyColour, envtex.b);
+
+ float fresnel = lerp(shininess, shininess * 2.0, NdotV);
+ fresnel = pow(NdotV * preMult, power);
+ fresnel = clamp(fresnel * postMult, 0.0, 1.0);
+ float reflectivity = lightingCont * lerp(minRefl, maxRefl, fresnel)*shininess;
+
+ float opacity = lerp(minOpacity, maxOpacity, fresnel)*pass1.a;
+ float4 color = pass1 + float4(reflectivity * envOut, 0.0);
+ color.a = opacity;
+
+ color.rgb = lerp(fogColor.rgb, color.rgb, input.TexCoord0.z);
+
+ return color;
+}
diff --git a/src/extras/shaders/leedsVehicle_mobile_VS.hlsl b/src/extras/shaders/leedsVehicle_mobile_VS.hlsl
new file mode 100644
index 00000000..3085c5e4
--- /dev/null
+++ b/src/extras/shaders/leedsVehicle_mobile_VS.hlsl
@@ -0,0 +1,57 @@
+#include "standardConstants.h"
+
+float4 emissive : register(c41);
+float4 ambient : register(c42);
+float4x4 viewMat : register(c43);
+
+struct VS_in
+{
+ float4 Position : POSITION;
+ float3 Normal : NORMAL;
+ float2 TexCoord : TEXCOORD0;
+ float4 Prelight : COLOR0;
+};
+
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0; // also fog
+ float2 TexCoord1 : TEXCOORD1;
+ float2 ReflData : TEXCOORD2;
+ float4 Color : COLOR0;
+};
+
+#define NdotV (output.ReflData.x)
+#define lightingCont (output.ReflData.y)
+
+VS_out main(in VS_in input)
+{
+ VS_out output;
+
+ output.Position = mul(combinedMat, input.Position);
+ float3 V = mul(worldMat, input.Position).xyz;
+ float3 N = mul(normalMat, input.Normal);
+
+ output.TexCoord0.xy = input.TexCoord;
+
+ float4 ViewNormal = mul(viewMat, float4(N, 0.0));
+ output.TexCoord1 = (ViewNormal.xy + float2(1.0, 1.0))*0.5;
+
+ output.Color = input.Prelight;
+ float4 combinedAmbient = lerp(emissive, ambient, N.z);
+ output.Color.rgb += combinedAmbient.rgb * surfAmbient;
+
+ int i;
+ for(i = 0; i < numDirLights; i++)
+ output.Color.xyz += DoDirLight(lights[i+firstDirLight], N)*surfDiffuse;
+ lightingCont = max(0.5, (output.Color.r + output.Color.g + output.Color.b) / 3.0);
+ output.Color *= matCol;
+
+ // for fresnel
+ float3 camPos = mul(-viewMat._m03_m13_m23, (float3x3)(viewMat));
+ float3 viewVec = normalize(V.xyz - camPos);
+ NdotV = 1.0 - dot(-N.xyz, viewVec.xyz);
+
+ output.TexCoord0.z = clamp((output.Position.w - fogEnd)*fogRange, fogDisable, 1.0);
+
+ return output;
+}
diff --git a/src/extras/shaders/make_hlsl.cmd b/src/extras/shaders/make_hlsl.cmd
deleted file mode 100644
index dee95283..00000000
--- a/src/extras/shaders/make_hlsl.cmd
+++ /dev/null
@@ -1,3 +0,0 @@
-@echo off
-for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f
-for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f
diff --git a/src/extras/shaders/obj/colourfilterLCS_PS.cso b/src/extras/shaders/obj/colourfilterLCS_PS.cso
new file mode 100644
index 00000000..17f2d612
--- /dev/null
+++ b/src/extras/shaders/obj/colourfilterLCS_PS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/colourfilterLCS_PS.inc b/src/extras/shaders/obj/colourfilterLCS_PS.inc
new file mode 100644
index 00000000..20738662
--- /dev/null
+++ b/src/extras/shaders/obj/colourfilterLCS_PS.inc
@@ -0,0 +1,28 @@
+static unsigned char colourfilterLCS_PS_cso[] = {
+ 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x2b, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x00,
+ 0x01, 0x00, 0x2a, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6c, 0x75, 0x72,
+ 0x63, 0x6f, 0x6c, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x00,
+ 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d,
+ 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29,
+ 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72,
+ 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e,
+ 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00,
+ 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xb0,
+ 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0,
+ 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0,
+ 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x0a, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x0a, 0x00, 0xff, 0xa0,
+ 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80,
+ 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/colourfilterLCS_frag.inc b/src/extras/shaders/obj/colourfilterLCS_frag.inc
new file mode 100644
index 00000000..886f0671
--- /dev/null
+++ b/src/extras/shaders/obj/colourfilterLCS_frag.inc
@@ -0,0 +1,22 @@
+const char *colourfilterLCS_frag_src =
+"uniform sampler2D tex0;\n"
+"uniform vec4 u_blurcolor;\n"
+
+"FSIN vec4 v_color;\n"
+"FSIN vec2 v_tex0;\n"
+"FSIN float v_fog;\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
+" dst += dst*u_blurcolor;\n"
+
+" vec4 color;\n"
+" color.rgb = dst.rgb;\n"
+" color.a = 1.0;\n"
+
+" FRAGCOLOR(color);\n"
+"}\n"
+
+;
diff --git a/src/extras/shaders/obj/colourfilterVC_PS.cso b/src/extras/shaders/obj/colourfilterVC_PS.cso
deleted file mode 100644
index 4b0e9f3f..00000000
--- a/src/extras/shaders/obj/colourfilterVC_PS.cso
+++ /dev/null
Binary files differ
diff --git a/src/extras/shaders/obj/colourfilterVC_PS.inc b/src/extras/shaders/obj/colourfilterVC_PS.inc
deleted file mode 100644
index daa18360..00000000
--- a/src/extras/shaders/obj/colourfilterVC_PS.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-static unsigned char colourfilterVC_PS_cso[] = {
- 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x2b, 0x00, 0x43, 0x54, 0x41, 0x42,
- 0x1c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff,
- 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x00,
- 0x01, 0x00, 0x2a, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6c, 0x75, 0x72,
- 0x63, 0x6f, 0x6c, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x00,
- 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d,
- 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29,
- 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72,
- 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e,
- 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00,
- 0x51, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xb0,
- 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0,
- 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0,
- 0x00, 0x08, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x17, 0x80,
- 0x0a, 0x00, 0xe4, 0xa0, 0x0a, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03,
- 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0x80,
- 0x12, 0x00, 0x00, 0x04, 0x03, 0x00, 0x07, 0x80, 0x0a, 0x00, 0xff, 0xa0,
- 0x02, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
- 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0a, 0x00, 0xe4, 0xa0,
- 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x17, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x00, 0x00, 0x00, 0xa0, 0x03, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
- 0x03, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x0a, 0x00, 0xe4, 0xa0, 0x12, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x80,
- 0x0a, 0x00, 0xff, 0xa0, 0x03, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80,
- 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x17, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
- 0x03, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x0a, 0x00, 0xe4, 0xa0, 0x12, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x80,
- 0x0a, 0x00, 0xff, 0xa0, 0x03, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80,
- 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x17, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
- 0x03, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x0a, 0x00, 0xe4, 0xa0, 0x12, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x80,
- 0x0a, 0x00, 0xff, 0xa0, 0x03, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80,
- 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x17, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
- 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x0a, 0x00, 0xe4, 0xa0, 0x12, 0x00, 0x00, 0x04, 0x03, 0x00, 0x07, 0x80,
- 0x0a, 0x00, 0xff, 0xa0, 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80,
- 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x17, 0x80, 0x02, 0x00, 0xe4, 0x80,
- 0x00, 0x00, 0x00, 0xa0, 0x03, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02,
- 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x55, 0xa0, 0x01, 0x00, 0x00, 0x02,
- 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00
-};
diff --git a/src/extras/shaders/obj/colourfilterVC_frag.inc b/src/extras/shaders/obj/colourfilterVC_frag.inc
deleted file mode 100644
index b61322d9..00000000
--- a/src/extras/shaders/obj/colourfilterVC_frag.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-const char *colourfilterVC_frag_src =
-"uniform sampler2D tex0;\n"
-"uniform vec4 u_blurcolor;\n"
-
-"FSIN vec4 v_color;\n"
-"FSIN vec2 v_tex0;\n"
-"FSIN float v_fog;\n"
-
-"void\n"
-"main(void)\n"
-"{\n"
-" float a = u_blurcolor.a;\n"
-" vec4 doublec = clamp(u_blurcolor*2.0, 0.0, 1.0);\n"
-" vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
-" vec4 prev = dst;\n"
-" for(int i = 0; i < 5; i++){\n"
-" vec4 tmp = dst*(1.0-a) + prev*doublec*a;\n"
-" tmp += prev*u_blurcolor;\n"
-" tmp += prev*u_blurcolor;\n"
-" prev = clamp(tmp, 0.0, 1.0);\n"
-" }\n"
-" vec4 color;\n"
-" color.rgb = prev.rgb;\n"
-" color.a = 1.0;\n"
-
-" FRAGCOLOR(color);\n"
-"}\n"
-
-;
diff --git a/src/extras/shaders/obj/leedsBuilding_VS.cso b/src/extras/shaders/obj/leedsBuilding_VS.cso
new file mode 100644
index 00000000..6720364d
--- /dev/null
+++ b/src/extras/shaders/obj/leedsBuilding_VS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsBuilding_VS.inc b/src/extras/shaders/obj/leedsBuilding_VS.inc
new file mode 100644
index 00000000..490a8c01
--- /dev/null
+++ b/src/extras/shaders/obj/leedsBuilding_VS.inc
@@ -0,0 +1,57 @@
+static unsigned char leedsBuilding_VS_cso[] = {
+ 0x00, 0x02, 0xfe, 0xff, 0xfe, 0xff, 0x4a, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0xff,
+ 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0xea, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2a, 0x00,
+ 0x01, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xac, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x29, 0x00, 0x01, 0x00, 0xa6, 0x00, 0x9c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00,
+ 0x01, 0x00, 0x3a, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xd9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x32, 0x00,
+ 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x36, 0x00, 0x9c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x00,
+ 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64,
+ 0x4d, 0x61, 0x74, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x76, 0x65, 0x00, 0x66, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61,
+ 0x00, 0x6d, 0x61, 0x74, 0x43, 0x6f, 0x6c, 0x00, 0x73, 0x75, 0x72, 0x66,
+ 0x50, 0x72, 0x6f, 0x70, 0x73, 0x00, 0x76, 0x73, 0x5f, 0x32, 0x5f, 0x30,
+ 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28,
+ 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64,
+ 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20,
+ 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31,
+ 0x31, 0x00, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x04, 0x00, 0x0f, 0xa0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80,
+ 0x02, 0x00, 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80,
+ 0x29, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x0d, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x2a, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80,
+ 0x02, 0x00, 0xff, 0x90, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x55, 0xa0,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0xff, 0x80,
+ 0x0c, 0x00, 0xff, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xd0,
+ 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0x55, 0x90, 0x01, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90,
+ 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80,
+ 0x02, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0xff, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xff, 0x80, 0x0e, 0x00, 0x55, 0xa1,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0xe4, 0x80,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80,
+ 0x0e, 0x00, 0xaa, 0xa0, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xa0, 0x0a, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x55, 0xa0,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0xe4, 0x90,
+ 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsBuilding_mobile_VS.cso b/src/extras/shaders/obj/leedsBuilding_mobile_VS.cso
new file mode 100644
index 00000000..c3ac2b9b
--- /dev/null
+++ b/src/extras/shaders/obj/leedsBuilding_mobile_VS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsBuilding_mobile_VS.inc b/src/extras/shaders/obj/leedsBuilding_mobile_VS.inc
new file mode 100644
index 00000000..1433ca3f
--- /dev/null
+++ b/src/extras/shaders/obj/leedsBuilding_mobile_VS.inc
@@ -0,0 +1,70 @@
+static unsigned char leedsBuilding_mobile_VS_cso[] = {
+ 0x00, 0x02, 0xfe, 0xff, 0xfe, 0xff, 0x42, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0xcc, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2a, 0x00,
+ 0x01, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
+ 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x29, 0x00, 0x01, 0x00, 0xa6, 0x00, 0x88, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00,
+ 0x01, 0x00, 0x3a, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x32, 0x00,
+ 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x6d, 0x62, 0x69,
+ 0x65, 0x6e, 0x74, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6d, 0x62,
+ 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x00, 0x03, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x00, 0x66, 0x6f, 0x67,
+ 0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, 0x43, 0x6f, 0x6c, 0x00,
+ 0x76, 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f,
+ 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53,
+ 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d,
+ 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39,
+ 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x51, 0x00, 0x00, 0x05,
+ 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0xc0, 0x3f,
+ 0x00, 0x00, 0x40, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05,
+ 0x05, 0x00, 0x0f, 0xa0, 0x9a, 0x99, 0x99, 0x3f, 0x9a, 0x99, 0x19, 0x3f,
+ 0x00, 0x00, 0xa0, 0x3f, 0xcd, 0xcc, 0x0c, 0x3f, 0x51, 0x00, 0x00, 0x05,
+ 0x06, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x0a, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x02, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0x55, 0xa0, 0x04, 0x00, 0xaa, 0xa0, 0x0b, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xff, 0xa0,
+ 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x80, 0x04, 0x00, 0x00, 0xa0,
+ 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x00, 0x80,
+ 0x2a, 0x00, 0x90, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0e, 0x80,
+ 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x55, 0xa0,
+ 0x0b, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0e, 0x80, 0x01, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80,
+ 0x01, 0x00, 0x00, 0x80, 0x29, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x02, 0x00, 0x07, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x05, 0x00, 0xaa, 0xa0,
+ 0x05, 0x00, 0xff, 0xa0, 0x0b, 0x00, 0x00, 0x03, 0x02, 0x00, 0x07, 0x80,
+ 0x02, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xf9, 0x80,
+ 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80,
+ 0x02, 0x00, 0xff, 0x90, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xff, 0xa0, 0x0a, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0x00, 0xa0,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0xff, 0x80,
+ 0x0c, 0x00, 0xff, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xd0,
+ 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0x55, 0x90, 0x01, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90,
+ 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80,
+ 0x02, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x03, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0xff, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0xff, 0x80, 0x0e, 0x00, 0x55, 0xa1,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0xe4, 0x80,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x80,
+ 0x0e, 0x00, 0xaa, 0xa0, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xa0, 0x0a, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0xa0,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xe0, 0x01, 0x00, 0xe4, 0x90,
+ 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsBuilding_mobile_vert.inc b/src/extras/shaders/obj/leedsBuilding_mobile_vert.inc
new file mode 100644
index 00000000..56bb8a80
--- /dev/null
+++ b/src/extras/shaders/obj/leedsBuilding_mobile_vert.inc
@@ -0,0 +1,54 @@
+const char *leedsBuilding_mobile_vert_src =
+"uniform vec4 u_amb;\n"
+"uniform vec4 u_emiss;\n"
+
+"#define surfEmissive (u_surfProps.w)\n"
+
+"#define vertContrast (1.5)\n"
+"#define vertBrightness (0.25)\n"
+"#define ambientContrast (1.2)\n"
+"#define ambientBrightness (0.1)\n"
+"#define emissiveContrast (1.25)\n"
+"#define emissiveBrightness (0.05)\n"
+
+
+"VSIN(ATTRIB_POS) vec3 in_pos;\n"
+
+"VSOUT vec4 v_color;\n"
+"VSOUT vec2 v_tex0;\n"
+"VSOUT float v_fog;\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
+" gl_Position = u_proj * u_view * Vertex;\n"
+" vec3 Normal = mat3(u_world) * in_normal;\n"
+
+" v_tex0 = in_tex0;\n"
+
+" vec4 vertCol = in_color;\n"
+" vec4 amb = u_amb;\n"
+" vec4 emiss = u_emiss;\n"
+
+" vertCol.xyz = ((vertCol.xyz - 0.5) * max(vertContrast, 0.0)) + 0.5;\n"
+" vertCol.xyz += vertBrightness;\n"
+" vertCol.xyz = max(vertCol.xyz, vec3(0.0,0.0,0.0));\n"
+" \n"
+" amb.xyz = ((amb.xyz - 0.5) * max(ambientContrast, 0.0)) + 0.5;\n"
+" amb.xyz += ambientBrightness;\n"
+" amb.xyz = max(amb.xyz, vec3(0.0,0.0,0.0));\n"
+" \n"
+" emiss.xyz = ((emiss.xyz - 0.5) * max(emissiveContrast, 0.0)) + 0.5;\n"
+" emiss.xyz += emissiveBrightness;\n"
+" emiss.xyz = max(emiss.xyz, vec3(0.0,0.0,0.0));\n"
+" v_color.xyz = emiss.xyz + (vertCol.xyz * amb.xyz);\n"
+" v_color.w = vertCol.w;\n"
+
+
+" v_color = clamp(v_color, 0.0, 1.0);\n"
+" v_color.a *= u_matColor.a;\n"
+
+" v_fog = DoFog(gl_Position.w);\n"
+"}\n"
+;
diff --git a/src/extras/shaders/obj/leedsBuilding_vert.inc b/src/extras/shaders/obj/leedsBuilding_vert.inc
new file mode 100644
index 00000000..33c5eccc
--- /dev/null
+++ b/src/extras/shaders/obj/leedsBuilding_vert.inc
@@ -0,0 +1,30 @@
+const char *leedsBuilding_vert_src =
+"uniform vec4 u_amb;\n"
+"uniform vec4 u_emiss;\n"
+
+"#define surfEmissive (u_surfProps.w)\n"
+
+"VSIN(ATTRIB_POS) vec3 in_pos;\n"
+
+"VSOUT vec4 v_color;\n"
+"VSOUT vec2 v_tex0;\n"
+"VSOUT float v_fog;\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
+" gl_Position = u_proj * u_view * Vertex;\n"
+" vec3 Normal = mat3(u_world) * in_normal;\n"
+
+" v_tex0 = in_tex0;\n"
+
+" v_color = in_color;\n"
+" v_color.rgb *= u_amb.rgb;\n"
+" v_color.rgb += u_emiss.rgb*surfEmissive;\n"
+" v_color = clamp(v_color, 0.0, 1.0);\n"
+" v_color.a *= u_matColor.a;\n"
+
+" v_fog = DoFog(gl_Position.w);\n"
+"}\n"
+;
diff --git a/src/extras/shaders/obj/leedsDefault_ADD_PS.cso b/src/extras/shaders/obj/leedsDefault_ADD_PS.cso
new file mode 100644
index 00000000..db862fdb
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_ADD_PS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsDefault_ADD_PS.inc b/src/extras/shaders/obj/leedsDefault_ADD_PS.inc
new file mode 100644
index 00000000..7a04522f
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_ADD_PS.inc
@@ -0,0 +1,47 @@
+static unsigned char leedsDefault_ADD_PS_cso[] = {
+ 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x47, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0xde, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x06, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
+ 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0xbc, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xd5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x0a, 0x00,
+ 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00,
+ 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x69, 0x66, 0x66, 0x54, 0x65, 0x78, 0x00, 0x04, 0x00, 0x0c, 0x00,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x65, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x66, 0x78, 0x70,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x70, 0x73, 0x5f, 0x32, 0x5f, 0x30,
+ 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28,
+ 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64,
+ 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20,
+ 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31,
+ 0x31, 0x00, 0xab, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x07, 0xb0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x03, 0xb0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90,
+ 0x00, 0x08, 0x0f, 0xa0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90,
+ 0x01, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x01, 0x00, 0xe4, 0xb0, 0x01, 0x08, 0xe4, 0xa0, 0x42, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0, 0x00, 0x08, 0xe4, 0xa0,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80,
+ 0x02, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xaa, 0xb0, 0x05, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80,
+ 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x80,
+ 0x00, 0x00, 0xe4, 0x90, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80,
+ 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02,
+ 0x01, 0x00, 0x17, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x12, 0x00, 0x00, 0x04,
+ 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0, 0x01, 0x00, 0xe4, 0x80,
+ 0x00, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80,
+ 0x02, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x80,
+ 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsDefault_BLEND_PS.cso b/src/extras/shaders/obj/leedsDefault_BLEND_PS.cso
new file mode 100644
index 00000000..e875c795
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_BLEND_PS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsDefault_BLEND_PS.inc b/src/extras/shaders/obj/leedsDefault_BLEND_PS.inc
new file mode 100644
index 00000000..be3a6d96
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_BLEND_PS.inc
@@ -0,0 +1,53 @@
+static unsigned char leedsDefault_BLEND_PS_cso[] = {
+ 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x47, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0xde, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x06, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
+ 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0xbc, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xd5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x0a, 0x00,
+ 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00,
+ 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x69, 0x66, 0x66, 0x54, 0x65, 0x78, 0x00, 0x04, 0x00, 0x0c, 0x00,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x65, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x66, 0x78, 0x70,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x70, 0x73, 0x5f, 0x32, 0x5f, 0x30,
+ 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28,
+ 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64,
+ 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20,
+ 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31,
+ 0x31, 0x00, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x03, 0x00, 0x0f, 0xa0,
+ 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x07, 0xb0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x03, 0xb0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90,
+ 0x00, 0x08, 0x0f, 0xa0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90,
+ 0x01, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0xb0, 0x00, 0x08, 0xe4, 0xa0, 0x42, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xb0, 0x01, 0x08, 0xe4, 0xa0,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80,
+ 0x00, 0x00, 0xe4, 0x90, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x17, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x12, 0x00, 0x00, 0x04,
+ 0x02, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0, 0x00, 0x00, 0xe4, 0x80,
+ 0x00, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80,
+ 0x00, 0x00, 0xff, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xaa, 0xb0,
+ 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x80,
+ 0x02, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x08, 0x80,
+ 0x02, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x08, 0x80,
+ 0x01, 0x00, 0xff, 0x80, 0x03, 0x00, 0xff, 0x81, 0x03, 0x00, 0x00, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x03, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80,
+ 0x01, 0x00, 0xff, 0x80, 0x02, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, 0x04,
+ 0x03, 0x00, 0x07, 0x80, 0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80,
+ 0x03, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsDefault_ENV_VS.cso b/src/extras/shaders/obj/leedsDefault_ENV_VS.cso
new file mode 100644
index 00000000..57db3798
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_ENV_VS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsDefault_ENV_VS.inc b/src/extras/shaders/obj/leedsDefault_ENV_VS.inc
new file mode 100644
index 00000000..ed27d470
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_ENV_VS.inc
@@ -0,0 +1,103 @@
+static unsigned char leedsDefault_ENV_VS_cso[] = {
+ 0x00, 0x02, 0xfe, 0xff, 0xfe, 0xff, 0x8d, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x02, 0xfe, 0xff,
+ 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0xf5, 0x01, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0f, 0x00,
+ 0x01, 0x00, 0x3e, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
+ 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0x42, 0x00, 0x2c, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00,
+ 0x01, 0x00, 0x3a, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x44, 0x01, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x18, 0x00, 0x46, 0x00,
+ 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x32, 0x00, 0xf4, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00,
+ 0x03, 0x00, 0x22, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc4, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
+ 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x36, 0x00, 0xf4, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0x02, 0x00, 0x29, 0x00,
+ 0x04, 0x00, 0xa6, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x67, 0x68, 0x74,
+ 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6d, 0x62,
+ 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x00, 0x03, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x66, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x00, 0xab,
+ 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x66, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x00,
+ 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x6f, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x00, 0xab, 0x4b, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00,
+ 0x64, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00,
+ 0x54, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00,
+ 0x08, 0x00, 0x03, 0x00, 0x78, 0x01, 0x00, 0x00, 0x6d, 0x61, 0x74, 0x43,
+ 0x6f, 0x6c, 0x00, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74,
+ 0x00, 0xab, 0xab, 0xab, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x75, 0x6d, 0x44,
+ 0x69, 0x72, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0xab, 0xab, 0xab,
+ 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x73, 0x75, 0x72, 0x66, 0x50, 0x72, 0x6f, 0x70,
+ 0x73, 0x00, 0x74, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x00, 0x76, 0x73, 0x5f,
+ 0x32, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
+ 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53,
+ 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c,
+ 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e,
+ 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05,
+ 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40,
+ 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x0a, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x05, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x90, 0x01, 0x00, 0xe4, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90,
+ 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80,
+ 0x03, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x90, 0x00, 0x00, 0xe4, 0x80,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0xe4, 0x80,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0x55, 0x90,
+ 0x09, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80,
+ 0x08, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x0a, 0x00, 0xe4, 0xa0,
+ 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02,
+ 0x01, 0x00, 0x01, 0x80, 0x0d, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04,
+ 0x01, 0x00, 0x07, 0x80, 0x0f, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x80,
+ 0x03, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0x80,
+ 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x80,
+ 0x04, 0x00, 0x00, 0xa0, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0xe4, 0xf0,
+ 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0x80,
+ 0x10, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x01, 0x80,
+ 0x03, 0x00, 0x00, 0x80, 0x04, 0x00, 0x55, 0xa0, 0x2e, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x01, 0xb0, 0x03, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x04,
+ 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x13, 0x20, 0xe4, 0xa1,
+ 0x00, 0x00, 0x00, 0xb0, 0x0b, 0x00, 0x00, 0x03, 0x03, 0x00, 0x01, 0x80,
+ 0x03, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04,
+ 0x03, 0x00, 0x07, 0x80, 0x03, 0x00, 0x00, 0x80, 0x11, 0x20, 0xe4, 0xa0,
+ 0x00, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0x80,
+ 0x03, 0x00, 0xe4, 0x80, 0x0d, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0xe4, 0x80,
+ 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x08, 0x80, 0x01, 0x00, 0xff, 0x80,
+ 0x04, 0x00, 0xaa, 0xa0, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02,
+ 0x02, 0x00, 0x08, 0x80, 0x03, 0x00, 0xff, 0x90, 0x0b, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0xa0,
+ 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0xaa, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xd0,
+ 0x01, 0x00, 0xe4, 0x80, 0x0c, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x03, 0x80, 0x00, 0x00, 0x55, 0x80, 0x2a, 0x00, 0xe4, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x29, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x03, 0x80, 0x2b, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0xe0,
+ 0x00, 0x00, 0xe4, 0x80, 0x2c, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xff, 0x80, 0x0e, 0x00, 0x55, 0xa1,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80,
+ 0x0e, 0x00, 0xaa, 0xa0, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xa0, 0x0a, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0xaa, 0xa0,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xe0, 0x02, 0x00, 0xe4, 0x90,
+ 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsDefault_frag.inc b/src/extras/shaders/obj/leedsDefault_frag.inc
new file mode 100644
index 00000000..e00eb66c
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_frag.inc
@@ -0,0 +1,48 @@
+const char *leedsDefault_frag_src =
+"uniform sampler2D tex0;\n"
+"uniform sampler2D tex1;\n"
+
+"uniform float u_shininess;\n"
+"uniform vec4 u_colorscale;\n"
+
+"FSIN vec4 v_color;\n"
+"FSIN vec2 v_tex0;\n"
+"#if defined(PASS_BLEND) || defined(PASS_ADD)\n"
+"FSIN vec2 v_tex1;\n"
+"#endif\n"
+"FSIN float v_fog;\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale;\n"
+" pass1.rgb = clamp(pass1.rgb, 0.0, 1.0);\n"
+" pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog);\n"
+
+" vec4 color;\n"
+"#if defined(PASS_BLEND) || defined(PASS_ADD)\n"
+" vec4 pass2 = texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));\n"
+" pass2.a *= u_shininess;\n"
+" pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog);\n"
+
+" // We simulate drawing this in two passes.\n"
+"#if defined(PASS_ADD)\n"
+" // First pass with standard blending, second with addition\n"
+" // We premultiply alpha so render state should be one.\n"
+" color.rgb = pass1.rgb*pass1.a + pass2.rgb*pass2.a;\n"
+" color.a = pass1.a;\n"
+"#elif defined(PASS_BLEND)\n"
+" // We premultiply alpha so render state should be one.\n"
+" color.rgb = pass1.rgb*pass1.a*(1.0-pass2.a) + pass2.rgb*pass2.a;\n"
+" color.a = pass1.a*(1.0-pass2.a) + pass2.a;\n"
+"#endif\n"
+
+"#else\n"
+" color = pass1;\n"
+"#endif\n"
+
+" DoAlphaTest(color.a);\n"
+
+" FRAGCOLOR(color);\n"
+"}\n"
+;
diff --git a/src/extras/shaders/obj/leedsDefault_vert.inc b/src/extras/shaders/obj/leedsDefault_vert.inc
new file mode 100644
index 00000000..4ff94fd4
--- /dev/null
+++ b/src/extras/shaders/obj/leedsDefault_vert.inc
@@ -0,0 +1,53 @@
+const char *leedsDefault_vert_src =
+"#ifdef ENVMAP\n"
+"uniform mat4 u_texMatrix;\n"
+"#endif\n"
+"#ifdef SKIN\n"
+"uniform mat4 u_boneMatrices[64];\n"
+"#endif\n"
+
+"VSIN(ATTRIB_POS) vec3 in_pos;\n"
+
+"VSOUT vec4 v_color;\n"
+"VSOUT vec2 v_tex0;\n"
+"#ifdef ENVMAP\n"
+"VSOUT vec2 v_tex1;\n"
+"#endif\n"
+"VSOUT float v_fog;\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+"#ifdef SKIN\n"
+" vec3 SkinVertex = vec3(0.0, 0.0, 0.0);\n"
+" vec3 SkinNormal = vec3(0.0, 0.0, 0.0);\n"
+" for(int i = 0; i < 4; i++){\n"
+" SkinVertex += (u_boneMatrices[int(in_indices[i])] * vec4(in_pos, 1.0)).xyz * in_weights[i];\n"
+" SkinNormal += (mat3(u_boneMatrices[int(in_indices[i])]) * in_normal) * in_weights[i];\n"
+" }\n"
+
+" vec4 Vertex = u_world * vec4(SkinVertex, 1.0);\n"
+" gl_Position = u_proj * u_view * Vertex;\n"
+" vec3 Normal = mat3(u_world) * SkinNormal;\n"
+"#else\n"
+" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
+" gl_Position = u_proj * u_view * Vertex;\n"
+" vec3 Normal = mat3(u_world) * in_normal;\n"
+"#endif\n"
+
+" v_tex0 = in_tex0;\n"
+"#ifdef ENVMAP\n"
+" v_tex1 = (u_texMatrix * vec4(Normal, 1.0)).xy;\n"
+"#endif\n"
+
+" v_color = in_color;\n"
+" v_color.rgb += u_ambLight.rgb*surfAmbient;\n"
+" v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;\n"
+" // PS2 clamps before material color\n"
+" // PSP clamps after...maybe another constant for this?\n"
+" v_color = clamp(v_color, 0.0, 1.0);\n"
+" v_color *= u_matColor;\n"
+
+" v_fog = DoFog(gl_Position.w);\n"
+"}\n"
+;
diff --git a/src/extras/shaders/obj/leedsVehicle_mobile_PS.cso b/src/extras/shaders/obj/leedsVehicle_mobile_PS.cso
new file mode 100644
index 00000000..b6f70b5b
--- /dev/null
+++ b/src/extras/shaders/obj/leedsVehicle_mobile_PS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsVehicle_mobile_PS.inc b/src/extras/shaders/obj/leedsVehicle_mobile_PS.inc
new file mode 100644
index 00000000..946b1c7a
--- /dev/null
+++ b/src/extras/shaders/obj/leedsVehicle_mobile_PS.inc
@@ -0,0 +1,63 @@
+static unsigned char leedsVehicle_mobile_PS_cso[] = {
+ 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x51, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff,
+ 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x07, 0x01, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xac, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00,
+ 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xd0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x0a, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x12, 0x00,
+ 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x64, 0x69, 0x66, 0x66, 0x54, 0x65, 0x78, 0x00,
+ 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x00, 0xab,
+ 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x78, 0x70, 0x61,
+ 0x72, 0x61, 0x6d, 0x73, 0x00, 0x73, 0x6b, 0x79, 0x42, 0x6f, 0x74, 0x00,
+ 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x73, 0x6b, 0x79, 0x54, 0x6f, 0x70, 0x00, 0x70,
+ 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73,
+ 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c,
+ 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70,
+ 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35,
+ 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05,
+ 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0xbf,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05,
+ 0x05, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x30, 0x40, 0x00, 0x00, 0x80, 0x3e,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0xb0, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0xb0, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x03, 0xb0, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x90, 0x01, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0, 0x00, 0x08, 0xe4, 0xa0,
+ 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x04, 0x00, 0xe4, 0xa0,
+ 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x81,
+ 0x03, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x03, 0x80,
+ 0x01, 0x00, 0xe4, 0xb0, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xd2, 0xa0,
+ 0x42, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x80,
+ 0x01, 0x08, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80,
+ 0x02, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xe4, 0xa0,
+ 0x12, 0x00, 0x00, 0x04, 0x03, 0x00, 0x07, 0x80, 0x02, 0x00, 0xaa, 0x80,
+ 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03,
+ 0x03, 0x00, 0x08, 0x80, 0x02, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0xb0,
+ 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x18, 0x80, 0x03, 0x00, 0xff, 0x80,
+ 0x03, 0x00, 0xff, 0x80, 0x04, 0x00, 0x00, 0x04, 0x03, 0x00, 0x08, 0x80,
+ 0x03, 0x00, 0xff, 0x80, 0x05, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x55, 0xa0,
+ 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x08, 0x80, 0x03, 0x00, 0xff, 0x80,
+ 0x02, 0x00, 0x55, 0xb0, 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x08, 0x80,
+ 0x03, 0x00, 0xff, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90,
+ 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x03, 0x00, 0xff, 0x80,
+ 0x03, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x12, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0, 0x01, 0x00, 0xe4, 0x80,
+ 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsVehicle_mobile_VS.cso b/src/extras/shaders/obj/leedsVehicle_mobile_VS.cso
new file mode 100644
index 00000000..85796f30
--- /dev/null
+++ b/src/extras/shaders/obj/leedsVehicle_mobile_VS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/leedsVehicle_mobile_VS.inc b/src/extras/shaders/obj/leedsVehicle_mobile_VS.inc
new file mode 100644
index 00000000..aa8859b1
--- /dev/null
+++ b/src/extras/shaders/obj/leedsVehicle_mobile_VS.inc
@@ -0,0 +1,132 @@
+static unsigned char leedsVehicle_mobile_VS_cso[] = {
+ 0x00, 0x02, 0xfe, 0xff, 0xfe, 0xff, 0x99, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x00, 0x02, 0xfe, 0xff,
+ 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x27, 0x02, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x02, 0x00, 0x2a, 0x00,
+ 0x01, 0x00, 0xaa, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x24, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
+ 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x29, 0x00, 0x01, 0x00, 0xa6, 0x00, 0x14, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00,
+ 0x01, 0x00, 0x42, 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x3a, 0x00,
+ 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x11, 0x00, 0x18, 0x00, 0x46, 0x00, 0xb8, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0c, 0x00,
+ 0x01, 0x00, 0x32, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xcf, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x03, 0x00, 0x22, 0x00,
+ 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xfc, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0d, 0x00,
+ 0x01, 0x00, 0x36, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x16, 0x02, 0x00, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x04, 0x00, 0xae, 0x00,
+ 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x12, 0x00, 0x30, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x00,
+ 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64,
+ 0x4d, 0x61, 0x74, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x76, 0x65, 0x00, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x69,
+ 0x67, 0x68, 0x74, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6f, 0x67, 0x44,
+ 0x61, 0x74, 0x61, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00,
+ 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0xab, 0x73, 0x01, 0x00, 0x00,
+ 0x7c, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00,
+ 0x95, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x03, 0x00, 0xa0, 0x01, 0x00, 0x00,
+ 0x6d, 0x61, 0x74, 0x43, 0x6f, 0x6c, 0x00, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x4d, 0x61, 0x74, 0x00, 0xab, 0xab, 0xab, 0x03, 0x00, 0x03, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6e, 0x75, 0x6d, 0x44, 0x69, 0x72, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73,
+ 0x00, 0xab, 0xab, 0xab, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x75, 0x72, 0x66,
+ 0x50, 0x72, 0x6f, 0x70, 0x73, 0x00, 0x76, 0x69, 0x65, 0x77, 0x4d, 0x61,
+ 0x74, 0x00, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x00, 0x76,
+ 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73,
+ 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c,
+ 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70,
+ 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35,
+ 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05,
+ 0x0b, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x51, 0x00, 0x00, 0x05,
+ 0x0f, 0x00, 0x0f, 0xa0, 0xab, 0xaa, 0xaa, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02,
+ 0x0a, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0f, 0x90, 0x05, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x90, 0x01, 0x00, 0xe4, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90,
+ 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80,
+ 0x03, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x90, 0x00, 0x00, 0xe4, 0x80,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0xe4, 0x80,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x55, 0x90,
+ 0x05, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80,
+ 0x04, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x06, 0x00, 0xe4, 0xa0,
+ 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x07, 0x80, 0x07, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x90,
+ 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80,
+ 0x2e, 0x00, 0xe4, 0xa0, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x80,
+ 0x01, 0x00, 0xe4, 0x81, 0x2b, 0x00, 0xe4, 0xa0, 0x08, 0x00, 0x00, 0x03,
+ 0x02, 0x00, 0x02, 0x80, 0x01, 0x00, 0xe4, 0x81, 0x2c, 0x00, 0xe4, 0xa0,
+ 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x04, 0x80, 0x01, 0x00, 0xe4, 0x81,
+ 0x2d, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0xe4, 0x81, 0x24, 0x00, 0x00, 0x02,
+ 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0x55, 0x90, 0x09, 0x00, 0xe4, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x08, 0x00, 0xe4, 0xa0,
+ 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x07, 0x80, 0x0a, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xaa, 0x90,
+ 0x00, 0x00, 0xe4, 0x80, 0x08, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0xe4, 0x81, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x06, 0x80, 0x00, 0x00, 0x55, 0x80, 0x2c, 0x00, 0xd0, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x06, 0x80, 0x2b, 0x00, 0xd0, 0xa0,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04,
+ 0x01, 0x00, 0x06, 0x80, 0x2d, 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xaa, 0x80,
+ 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x06, 0x80,
+ 0x01, 0x00, 0xe4, 0x80, 0x0b, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03,
+ 0x01, 0x00, 0x03, 0xe0, 0x01, 0x00, 0xe9, 0x80, 0x0b, 0x00, 0x55, 0xa0,
+ 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0x80, 0x29, 0x00, 0xe4, 0xa0,
+ 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0e, 0x80, 0x02, 0x00, 0x90, 0x81,
+ 0x2a, 0x00, 0x90, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0e, 0x80,
+ 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x29, 0x00, 0x90, 0xa0,
+ 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0e, 0x80, 0x01, 0x00, 0xe4, 0x80,
+ 0x0d, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x90, 0x90, 0x01, 0x00, 0x00, 0x02,
+ 0x02, 0x00, 0x07, 0x80, 0x01, 0x00, 0xf9, 0x80, 0x01, 0x00, 0x00, 0x02,
+ 0x03, 0x00, 0x01, 0x80, 0x0b, 0x00, 0xaa, 0xa0, 0x26, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0xe4, 0xf0, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x02, 0x80,
+ 0x03, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03,
+ 0x03, 0x00, 0x02, 0x80, 0x03, 0x00, 0x55, 0x80, 0x0b, 0x00, 0xff, 0xa0,
+ 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xb0, 0x03, 0x00, 0x55, 0x80,
+ 0x08, 0x00, 0x00, 0x04, 0x03, 0x00, 0x02, 0x80, 0x00, 0x00, 0xe4, 0x80,
+ 0x13, 0x20, 0xe4, 0xa1, 0x00, 0x00, 0x00, 0xb0, 0x0b, 0x00, 0x00, 0x03,
+ 0x03, 0x00, 0x02, 0x80, 0x03, 0x00, 0x55, 0x80, 0x0b, 0x00, 0xaa, 0xa0,
+ 0x05, 0x00, 0x00, 0x04, 0x03, 0x00, 0x0e, 0x80, 0x03, 0x00, 0x55, 0x80,
+ 0x11, 0x20, 0x90, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x04,
+ 0x02, 0x00, 0x07, 0x80, 0x03, 0x00, 0xf9, 0x80, 0x0d, 0x00, 0xaa, 0xa0,
+ 0x02, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x01, 0x80,
+ 0x03, 0x00, 0x00, 0x80, 0x0b, 0x00, 0x00, 0xa0, 0x27, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x08, 0x80, 0x03, 0x00, 0xff, 0x90,
+ 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xd0, 0x02, 0x00, 0xe4, 0x80,
+ 0x0c, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0xe0,
+ 0x01, 0x00, 0x00, 0x81, 0x0b, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0x55, 0x80, 0x02, 0x00, 0x00, 0x80,
+ 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0xaa, 0x80,
+ 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xa0, 0x0b, 0x00, 0x00, 0x03,
+ 0x02, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x0b, 0x00, 0x55, 0xa0,
+ 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xff, 0x80,
+ 0x0e, 0x00, 0x55, 0xa1, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xaa, 0xa0, 0x0b, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x00, 0xff, 0xa0,
+ 0x0a, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, 0x00, 0x80,
+ 0x0b, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xe0,
+ 0x02, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/leedsVehicle_mobile_frag.inc b/src/extras/shaders/obj/leedsVehicle_mobile_frag.inc
new file mode 100644
index 00000000..a937c327
--- /dev/null
+++ b/src/extras/shaders/obj/leedsVehicle_mobile_frag.inc
@@ -0,0 +1,76 @@
+const char *leedsVehicle_mobile_frag_src =
+"uniform sampler2D tex0;\n"
+"uniform sampler2D tex1;\n"
+
+"uniform float u_shininess;\n"
+"uniform vec3 u_skyTop;\n"
+"uniform vec3 u_skyBot;\n"
+
+"// matfx:\n"
+"// case 1 normal envmap\n"
+"// custom1 (4.0, 1.0, 1.0, coef)\n"
+"// custom2 (0.25, 3.0, 1.0, 1.0)\n"
+"// case 2 too strong\n"
+"// custom1 (4.0, 1.0, 2.0, coef)\n"
+"// custom2 (0.5, 3.0, 1.0, 1.0)\n"
+"// ???: practically no fresnel\n"
+"// custom1 (4.0, 1.25, 0.01, coef)\n"
+"// custom2 (1.0, 2.0, 1.1, 2.0)\n"
+
+"#define power (4.0)\n"
+
+"#define preMult (1.0)\n"
+"#define postMult (1.0)\n"
+"#define minRefl (0.25)\n"
+"#define maxRefl (3.0)\n"
+"#define minOpacity (1.0)\n"
+"#define maxOpacity (1.0)\n"
+
+"//#define preMult (1.0)\n"
+"//#define postMult (2.0)\n"
+"//#define minRefl (0.5)\n"
+"//#define maxRefl (3.0)\n"
+"//#define minOpacity (1.0)\n"
+"//#define maxOpacity (1.0)\n"
+
+"//#define preMult (1.25)\n"
+"//#define postMult (0.01)\n"
+"//#define minRefl (1.0)\n"
+"//#define maxRefl (2.0)\n"
+"//#define minOpacity (1.1)\n"
+"//#define maxOpacity (2.0)\n"
+
+"FSIN vec4 v_color;\n"
+"FSIN vec2 v_tex0;\n"
+"FSIN vec2 v_tex1;\n"
+"FSIN float v_fog;\n"
+"FSIN vec2 v_reflData;\n"
+
+"#define v_NdotV (v_reflData.x)\n"
+"#define v_lightingCont (v_reflData.y)\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
+
+" vec3 envtex = texture(tex1, v_tex1).rgb; // V flipped\n"
+" vec3 skyColour = mix(u_skyBot, u_skyTop, envtex.g);\n"
+" vec3 envOut = mix(envtex.rrr, skyColour, envtex.b);\n"
+
+" float fresnel = mix(u_shininess, u_shininess * 2.0, v_NdotV);\n"
+" fresnel = pow(v_NdotV * preMult, power);\n"
+" fresnel = clamp(fresnel * postMult, 0.0, 1.0);\n"
+" float reflectivity = v_lightingCont * mix(minRefl, maxRefl, fresnel)*u_shininess;\n"
+
+" float opacity = mix(minOpacity, maxOpacity, fresnel)*pass1.a;\n"
+" vec4 color = pass1 + vec4(reflectivity * envOut, 0.0);\n"
+" color.a = opacity;\n"
+
+" color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);\n"
+
+" DoAlphaTest(color.a);\n"
+
+" FRAGCOLOR(color);\n"
+"}\n"
+;
diff --git a/src/extras/shaders/obj/leedsVehicle_mobile_vert.inc b/src/extras/shaders/obj/leedsVehicle_mobile_vert.inc
new file mode 100644
index 00000000..3609e369
--- /dev/null
+++ b/src/extras/shaders/obj/leedsVehicle_mobile_vert.inc
@@ -0,0 +1,42 @@
+const char *leedsVehicle_mobile_vert_src =
+"uniform vec4 u_amb;\n"
+"uniform vec4 u_emiss;\n"
+
+"VSIN(ATTRIB_POS) vec3 in_pos;\n"
+
+"VSOUT vec4 v_color;\n"
+"VSOUT vec2 v_tex0;\n"
+"VSOUT vec2 v_tex1;\n"
+"VSOUT float v_fog;\n"
+"VSOUT vec2 v_reflData;\n"
+
+"#define v_NdotV (v_reflData.x)\n"
+"#define v_lightingCont (v_reflData.y)\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
+" gl_Position = u_proj * u_view * Vertex;\n"
+" vec3 Normal = mat3(u_world) * in_normal;\n"
+
+" v_tex0 = in_tex0;\n"
+
+" vec3 ViewNormal = mat3(u_view) * Normal;\n"
+" v_tex1 = (ViewNormal.xy + vec2(1.0, 1.0))*0.5;\n"
+
+" v_color = in_color;\n"
+" vec4 combinedAmbient = mix(u_emiss, u_amb, Normal.z);\n"
+" v_color.rgb += combinedAmbient.rgb*surfAmbient;\n"
+" v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;\n"
+" v_lightingCont = max(0.5, (v_color.r + v_color.g + v_color.b) / 3.0);\n"
+" v_color *= u_matColor;\n"
+
+" // for fresnel\n"
+" vec3 camPos = -u_view[3].xyz * mat3(u_view);\n"
+" vec3 viewVec = normalize(Vertex.xyz - camPos);\n"
+" v_NdotV = 1.0 - dot(-Normal.xyz, viewVec.xyz);\n"
+
+" v_fog = DoFog(gl_Position.w);\n"
+"}\n"
+;
diff --git a/src/extras/shaders/obj/scale_PS.cso b/src/extras/shaders/obj/scale_PS.cso
new file mode 100644
index 00000000..7d8e0734
--- /dev/null
+++ b/src/extras/shaders/obj/scale_PS.cso
Binary files differ
diff --git a/src/extras/shaders/obj/scale_PS.inc b/src/extras/shaders/obj/scale_PS.inc
new file mode 100644
index 00000000..e8f42e38
--- /dev/null
+++ b/src/extras/shaders/obj/scale_PS.inc
@@ -0,0 +1,31 @@
+static unsigned char scale_PS_cso[] = {
+ 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x43, 0x54, 0x41, 0x42,
+ 0x1c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x94, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x06, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x84, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x63, 0x61,
+ 0x6c, 0x65, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6f, 0x67, 0x43,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x74, 0x65, 0x78, 0x30, 0x00, 0xab, 0xab,
+ 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d,
+ 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29,
+ 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72,
+ 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e,
+ 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00,
+ 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0xb0,
+ 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90,
+ 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0,
+ 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0,
+ 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80,
+ 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90,
+ 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x17, 0x80, 0x00, 0x00, 0xe4, 0x80,
+ 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0,
+ 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02,
+ 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00
+};
diff --git a/src/extras/shaders/obj/scale_frag.inc b/src/extras/shaders/obj/scale_frag.inc
new file mode 100644
index 00000000..14082bb9
--- /dev/null
+++ b/src/extras/shaders/obj/scale_frag.inc
@@ -0,0 +1,21 @@
+const char *scale_frag_src =
+"uniform sampler2D tex0;\n"
+"uniform vec4 u_colorscale;\n"
+
+"FSIN vec4 v_color;\n"
+"FSIN vec2 v_tex0;\n"
+"FSIN float v_fog;\n"
+
+"void\n"
+"main(void)\n"
+"{\n"
+" vec4 color;\n"
+" color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale;\n"
+" color.rgb = clamp(color.rgb, 0.0, 1.0);\n"
+" color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);\n"
+" DoAlphaTest(color.a);\n"
+
+" FRAGCOLOR(color);\n"
+"}\n"
+
+;
diff --git a/src/extras/shaders/scale.frag b/src/extras/shaders/scale.frag
new file mode 100644
index 00000000..7d9d1ff4
--- /dev/null
+++ b/src/extras/shaders/scale.frag
@@ -0,0 +1,19 @@
+uniform sampler2D tex0;
+uniform vec4 u_colorscale;
+
+FSIN vec4 v_color;
+FSIN vec2 v_tex0;
+FSIN float v_fog;
+
+void
+main(void)
+{
+ vec4 color;
+ color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale;
+ color.rgb = clamp(color.rgb, 0.0, 1.0);
+ color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);
+ DoAlphaTest(color.a);
+
+ FRAGCOLOR(color);
+}
+
diff --git a/src/extras/shaders/scale_PS.hlsl b/src/extras/shaders/scale_PS.hlsl
new file mode 100644
index 00000000..54da9c82
--- /dev/null
+++ b/src/extras/shaders/scale_PS.hlsl
@@ -0,0 +1,19 @@
+struct VS_out {
+ float4 Position : POSITION;
+ float3 TexCoord0 : TEXCOORD0;
+ float4 Color : COLOR0;
+};
+
+sampler2D tex0 : register(s0);
+
+float4 fogColor : register(c0);
+float4 colorscale : register(c1);
+
+float4 main(VS_out input) : COLOR
+{
+ float4 color = input.Color;
+ color *= tex2D(tex0, input.TexCoord0.xy)*colorscale;
+ color.rgb = clamp(color.rgb, 0.0, 1.0);
+ color.rgb = lerp(fogColor.rgb, color.rgb, input.TexCoord0.z);
+ return color;
+}
diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp
index ee779788..f2232e99 100644
--- a/src/fakerw/fake.cpp
+++ b/src/fakerw/fake.cpp
@@ -393,7 +393,7 @@ RwStream *RwStreamOpen(RwStreamType type, RwStreamAccessType accessType, const v
return nil;
}
}
-RwBool RwStreamClose(RwStream * stream, void *pData) { stream->close(); rwFree(stream); return true; }
+RwBool RwStreamClose(RwStream * stream, void *pData) { if (!stream) return false; stream->close(); rwFree(stream); return true; }
RwUInt32 RwStreamRead(RwStream * stream, void *buffer, RwUInt32 length) { return stream->read8(buffer, length); }
RwStream *RwStreamWrite(RwStream * stream, const void *buffer, RwUInt32 length) { stream->write8(buffer, length); return stream; }
RwStream *RwStreamSkip(RwStream * stream, RwUInt32 offset) { stream->seek(offset); return stream; }
@@ -410,6 +410,9 @@ void RwIm2DVertexSetRecipCameraZ(RwIm2DVertex *vert, RwReal recipz) { vert->setR
void RwIm2DVertexSetScreenX(RwIm2DVertex *vert, RwReal scrnx) { vert->setScreenX(scrnx); }
void RwIm2DVertexSetScreenY(RwIm2DVertex *vert, RwReal scrny) { vert->setScreenY(scrny); }
void RwIm2DVertexSetScreenZ(RwIm2DVertex *vert, RwReal scrnz) { vert->setScreenZ(scrnz); }
+float RwIm2DVertexGetScreenX(RwIm2DVertex *vert) { return vert->getScreenX(); }
+float RwIm2DVertexGetScreenY(RwIm2DVertex *vert) { return vert->getScreenY(); }
+float RwIm2DVertexGetScreenZ(RwIm2DVertex *vert) { return vert->getScreenZ(); }
void RwIm2DVertexSetU(RwIm2DVertex *vert, RwReal texU, RwReal recipz) { vert->setU(texU, recipz); }
void RwIm2DVertexSetV(RwIm2DVertex *vert, RwReal texV, RwReal recipz) { vert->setV(texV, recipz); }
void RwIm2DVertexSetIntRGBA(RwIm2DVertex *vert, RwUInt8 red, RwUInt8 green, RwUInt8 blue, RwUInt8 alpha) { vert->setColor(red, green, blue, alpha); }
diff --git a/src/fakerw/rpworld.h b/src/fakerw/rpworld.h
index f10a3754..8e3b09f0 100644
--- a/src/fakerw/rpworld.h
+++ b/src/fakerw/rpworld.h
@@ -13,6 +13,7 @@
//struct RpMaterial;
typedef rw::Material RpMaterial;
+typedef rw::MaterialList RpMaterialList;
typedef RpMaterial *(*RpMaterialCallBack)(RpMaterial *material, void *data);
diff --git a/src/fakerw/rwcore.h b/src/fakerw/rwcore.h
index ab0a719f..4f690fd3 100644
--- a/src/fakerw/rwcore.h
+++ b/src/fakerw/rwcore.h
@@ -34,6 +34,9 @@ void RwIm2DVertexSetRecipCameraZ(RwIm2DVertex *vert, RwReal recipz);
void RwIm2DVertexSetScreenX(RwIm2DVertex *vert, RwReal scrnx);
void RwIm2DVertexSetScreenY(RwIm2DVertex *vert, RwReal scrny);
void RwIm2DVertexSetScreenZ(RwIm2DVertex *vert, RwReal scrnz);
+float RwIm2DVertexGetScreenX(RwIm2DVertex *vert);
+float RwIm2DVertexGetScreenY(RwIm2DVertex *vert);
+float RwIm2DVertexGetScreenZ(RwIm2DVertex *vert);
void RwIm2DVertexSetU(RwIm2DVertex *vert, RwReal texU, RwReal recipz);
void RwIm2DVertexSetV(RwIm2DVertex *vert, RwReal texV, RwReal recipz);
void RwIm2DVertexSetIntRGBA(RwIm2DVertex *vert, RwUInt8 red, RwUInt8 green, RwUInt8 blue, RwUInt8 alpha);
diff --git a/src/leeds/CustomSoundTrack.cpp b/src/leeds/CustomSoundTrack.cpp
new file mode 100644
index 00000000..a71a66cc
--- /dev/null
+++ b/src/leeds/CustomSoundTrack.cpp
@@ -0,0 +1,12 @@
+#include "common.h"
+
+#include "CustomSoundTrack.h"
+
+// TODO - implement
+
+template<>
+cCustomSoundTrack* base::cSingleton<cCustomSoundTrack>::mspInstance = nil;
+
+cCustomSoundTrack::cCustomSoundTrack() :
+ m_bIsPlaying(false)
+{}
diff --git a/src/leeds/CustomSoundTrack.h b/src/leeds/CustomSoundTrack.h
new file mode 100644
index 00000000..e7b97fbc
--- /dev/null
+++ b/src/leeds/CustomSoundTrack.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "common.h"
+#include "singletonManager.h"
+
+class cCustomSoundTrack : public base::cSingleton<cCustomSoundTrack>
+{
+public:
+ bool m_bIsPlaying;
+
+ cCustomSoundTrack();
+ bool IsPlaying()
+ {
+#ifdef CUSTOM_SOUND_TRACK
+ return m_bIsPlaying;
+#else
+ return false;
+#endif
+ }
+}; \ No newline at end of file
diff --git a/src/leeds/base/memoryManager.cpp b/src/leeds/base/memoryManager.cpp
new file mode 100644
index 00000000..57e7d954
--- /dev/null
+++ b/src/leeds/base/memoryManager.cpp
@@ -0,0 +1,75 @@
+#include "common.h"
+#include "memoryManager.h"
+
+namespace base
+{
+ cMemoryManager::cMemoryManager()
+ {
+
+ }
+
+ void* cMemoryManager::Allocate(uint32 size)
+ {
+ void* buf = malloc(size);
+ memset(buf, 0, size);
+ return buf;
+ }
+
+ void* cMemoryManager::AllocateAligned(uint32 size)
+ {
+ void* buf = malloc(size);
+ memset(buf, 0, size);
+ return buf;
+ }
+
+ void* cMemoryManager::Realloc(void* buf, uint32 newSize, bool unk)
+ {
+ return realloc(buf, newSize);
+ }
+
+ void cMemoryManager::Free(void* buf)
+ {
+ if (buf)
+ free(buf);
+ }
+
+ bool cMemoryManager::IsFree(void* buf)
+ {
+ return buf == nil;
+ }
+
+
+ cMainMemoryManager* cMainMemoryManager::m_pInstance = nil;
+
+ cMainMemoryManager::cMainMemoryManager()
+ {
+ assert(m_pInstance == nil);
+ m_pInstance = this;
+ Init(nil, 0);
+ }
+
+ void cMainMemoryManager::Init(void*, uint32)
+ {
+
+ }
+};
+
+void* operator new(size_t size)
+{
+ return base::cMainMemoryManager::Instance()->Allocate(size);
+}
+
+void* operator new[](size_t size)
+{
+ return base::cMainMemoryManager::Instance()->Allocate(size);
+}
+
+void operator delete(void* buf) noexcept
+{
+ base::cMainMemoryManager::Instance()->Free(buf);
+}
+
+void operator delete[](void* buf) noexcept
+{
+ base::cMainMemoryManager::Instance()->Free(buf);
+} \ No newline at end of file
diff --git a/src/leeds/base/memoryManager.h b/src/leeds/base/memoryManager.h
new file mode 100644
index 00000000..91124cd1
--- /dev/null
+++ b/src/leeds/base/memoryManager.h
@@ -0,0 +1,39 @@
+#pragma once
+
+namespace base
+{
+ class cMemoryManager
+ {
+ public:
+ cMemoryManager();
+ void* Allocate(uint32 size);
+ void* AllocateAligned(uint32 size);
+ void* Realloc(void* buf, uint32 newSize, bool unk);
+ void Free(void* buf);
+ bool IsFree(void* buf);
+ };
+
+ class cMainMemoryManager : public cMemoryManager
+ {
+ static cMainMemoryManager* m_pInstance;
+ static void Init(void*, uint32);
+
+ public:
+ cMainMemoryManager();
+ static cMainMemoryManager *Instance()
+ {
+ static cMainMemoryManager instance;
+ return &instance;
+ }
+ };
+
+ class cMemoryBlock
+ {
+ // TODO
+ };
+}
+
+void* operator new(size_t size);
+void* operator new[](size_t size);
+void operator delete(void* buf) noexcept;
+void operator delete[](void* buf) noexcept; \ No newline at end of file
diff --git a/src/leeds/base/relocatableChunk.cpp b/src/leeds/base/relocatableChunk.cpp
new file mode 100644
index 00000000..5391f420
--- /dev/null
+++ b/src/leeds/base/relocatableChunk.cpp
@@ -0,0 +1,38 @@
+#include "common.h"
+#include "relocatableChunk.h"
+
+namespace base
+{
+ // TODO(LCS): add actual code (all of these are stubs)
+
+ void* cRelocatableChunk::Load(void* data, bool bShrink) { return nil; }
+ void* cRelocatableChunk::Load(const char* name, bool bShrink) { return nil; }
+ void cRelocatableChunk::Fixup(const sChunkHeader& header, void* data) {}
+ void cRelocatableChunk::Fixup(void* data) {}
+ void* cRelocatableChunk::Shrink(const sChunkHeader& header, void* data) { return nil; }
+ void* cRelocatableChunk::Shrink(void* data) { return nil; }
+
+ cRelocatableChunkClassInfo::cRelocatableChunkClassInfo(const char* class_name, const void* pVmt, int size) {}
+
+ cRelocatableChunkWriter::cRelocatableChunkWriter() {}
+ cRelocatableChunkWriter::~cRelocatableChunkWriter() {}
+
+ void cRelocatableChunkWriter::AddPatch(void* addr) {}
+ void cRelocatableChunkWriter::AddPatchWithInfo(const char* str, int unk, void* addr) {}
+ void cRelocatableChunkWriter::AllocateRaw(void* addr, uint32 size, uint32 align, bool a5, bool a6) {}
+
+ void cRelocatableChunkWriter::Clear() {}
+ void cRelocatableChunkWriter::Class(void* ptr, const cRelocatableChunkClassInfo& classInfo) {}
+ void cRelocatableChunkWriter::DebugFileLine(void*) {}
+
+ void cRelocatableChunkWriter::PatchFunc(void* ptr) {}
+
+ bool cRelocatableChunkWriter::IsAllocated(void* addr) { return false; }
+
+ void cRelocatableChunkWriter::Reserve(int, int) {}
+
+ void cRelocatableChunkWriter::Save(const char* filename, uint32 a3, uint32 a4, bool a5) {}
+ void cRelocatableChunkWriter::Save(void* file, uint32 a3, uint32 a4, bool a5, sChunkHeader* pHeader) {}
+
+ void RegisterRelocatableChunkFunc(const void *func) {}
+}; \ No newline at end of file
diff --git a/src/leeds/base/relocatableChunk.h b/src/leeds/base/relocatableChunk.h
new file mode 100644
index 00000000..6e9e21e0
--- /dev/null
+++ b/src/leeds/base/relocatableChunk.h
@@ -0,0 +1,55 @@
+#pragma once
+
+namespace base
+{
+ // TODO(LCS): add actual struct fields
+
+ struct sChunkHeader;
+ struct sDataBlock;
+ struct sFileLine;
+
+ class cRelocatableChunk
+ {
+ public:
+ void* Load(void* data, bool bShrink);
+ void* Load(const char* name, bool bShrink);
+ void Fixup(const sChunkHeader& header, void* data);
+ void Fixup(void* data);
+ void* Shrink(const sChunkHeader& header, void* data);
+ void* Shrink(void* data);
+ };
+
+#define VTABLE_ADDR(obj) ((void*)obj) // TODO: make this portable
+
+ class cRelocatableChunkClassInfo
+ {
+ public:
+ cRelocatableChunkClassInfo(const char* class_name, const void* pVmt, int size);
+ };
+
+ class cRelocatableChunkWriter
+ {
+ public:
+ cRelocatableChunkWriter();
+ ~cRelocatableChunkWriter();
+
+ void AddPatch(void* addr);
+ void AddPatchWithInfo(const char* str, int unk, void* addr);
+ void AllocateRaw(void* addr, uint32 size, uint32 align, bool a5 = false, bool a6 = false);
+
+ void Clear();
+ void Class(void* ptr, const cRelocatableChunkClassInfo& classInfo);
+ void DebugFileLine(void*);
+
+ void PatchFunc(void* ptr);
+
+ bool IsAllocated(void* addr);
+
+ void Reserve(int, int);
+
+ void Save(const char* filename, uint32 a3, uint32 a4, bool a5);
+ void Save(void* file, uint32 a3, uint32 a4, bool a5, sChunkHeader* pHeader);
+ };
+
+ void RegisterRelocatableChunkFunc(const void *func);
+}; \ No newline at end of file
diff --git a/src/leeds/base/sList.h b/src/leeds/base/sList.h
new file mode 100644
index 00000000..378d8e31
--- /dev/null
+++ b/src/leeds/base/sList.h
@@ -0,0 +1,35 @@
+#pragma once
+
+namespace base
+{
+
+template<typename T>
+class cSList
+{
+public:
+ struct tSItem
+ {
+ tSItem* next;
+ T item;
+ };
+ // extra field on PS2
+ tSItem* first;
+
+ cSList() { first = nil; }
+ void Insert(tSItem* item) { tSItem* n = first; first = item; item->next = n; }
+ void Remove(tSItem* item) {
+ if (first == item) {
+ first = item->next;
+ return;
+ }
+ tSItem* i = first;
+ while (i && i->next != item)
+ i = i->next;
+ assert(i);
+ i->next = item->next;
+
+ }
+
+};
+
+} \ No newline at end of file
diff --git a/src/leeds/base/singletonManager.cpp b/src/leeds/base/singletonManager.cpp
new file mode 100644
index 00000000..9ff9f28c
--- /dev/null
+++ b/src/leeds/base/singletonManager.cpp
@@ -0,0 +1,36 @@
+#include "common.h"
+
+#include "singletonManager.h"
+
+namespace base
+{
+
+cSingletonManager& SingletonManager()
+{
+ static cSingletonManager manager;
+ return manager;
+}
+
+cSingletonManager::~cSingletonManager()
+{
+ Purge();
+}
+
+void cSingletonManager::Add(cSingletonBase* node)
+{
+ node->next = head;
+ if (!head)
+ tail = node;
+ head = node;
+}
+
+void cSingletonManager::Purge()
+{
+ for (cSingletonBase* node = tail; node; node = tail) {
+ tail = node->next;
+ delete node;
+ }
+}
+
+
+} \ No newline at end of file
diff --git a/src/leeds/base/singletonManager.h b/src/leeds/base/singletonManager.h
new file mode 100644
index 00000000..9c980bb2
--- /dev/null
+++ b/src/leeds/base/singletonManager.h
@@ -0,0 +1,62 @@
+#pragma once
+
+#include "common.h"
+
+namespace base
+{
+
+class cSingletonBase;
+
+class cSingletonManager
+{
+ cSingletonBase* head;
+ cSingletonBase* tail;
+
+public:
+ cSingletonManager() :
+ head(nil),
+ tail(nil)
+ {}
+
+ void Add(cSingletonBase*);
+ void Purge();
+ ~cSingletonManager();
+};
+
+cSingletonManager& SingletonManager();
+
+class cSingletonBase
+{
+ friend class cSingletonManager;
+
+ cSingletonBase* next;
+
+public:
+ virtual ~cSingletonBase() {}
+};
+
+template<typename T>
+class cSingleton : public cSingletonBase
+{
+ static T* mspInstance;
+ static void CreateInstance()
+ {
+ mspInstance = new T();
+ SingletonManager().Add(mspInstance);
+ }
+
+public:
+ static T* Instance()
+ {
+ if (!mspInstance)
+ CreateInstance();
+ return mspInstance;
+ }
+
+ ~cSingleton<T>()
+ {
+ mspInstance = nil;
+ }
+};
+
+} \ No newline at end of file
diff --git a/src/leeds/smallHeap.cpp b/src/leeds/smallHeap.cpp
new file mode 100644
index 00000000..262113af
--- /dev/null
+++ b/src/leeds/smallHeap.cpp
@@ -0,0 +1,20 @@
+#include "common.h"
+#include "smallHeap.h"
+
+cSmallHeap cSmallHeap::msInstance;
+
+cSmallHeap::cSmallHeap()
+{
+ bLocked = false;
+ bUnk = false;
+}
+
+void cSmallHeap::Lock()
+{
+ // TODO: PS2 code
+}
+
+void cSmallHeap::Unlock()
+{
+ // TODO: PS2 code
+} \ No newline at end of file
diff --git a/src/leeds/smallHeap.h b/src/leeds/smallHeap.h
new file mode 100644
index 00000000..f2897688
--- /dev/null
+++ b/src/leeds/smallHeap.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "memoryManager.h"
+
+class cSmallHeap : public base::cMemoryManager
+{
+ bool bLocked;
+ bool bUnk;
+public:
+ cSmallHeap();
+ void Lock();
+ void Unlock();
+
+ bool IsLocked() const { return bLocked; }
+
+ static cSmallHeap msInstance;
+}; \ No newline at end of file
diff --git a/src/math/Vector.cpp b/src/math/Vector.cpp
index ee76e555..e29d4335 100644
--- a/src/math/Vector.cpp
+++ b/src/math/Vector.cpp
@@ -44,3 +44,18 @@ operator*(const CMatrix &mat, const CVector &vec)
mat.ry * vec.x + mat.fy * vec.y + mat.uy * vec.z + mat.py,
mat.rz * vec.x + mat.fz * vec.y + mat.uz * vec.z + mat.pz);
}
+
+void
+RwV3dTransformPoints(CVector * pointsOut, const CVector * pointsIn, RwInt32 numPoints, const RwMatrix * matrix)
+{
+ while(numPoints--){
+ float x = pointsIn->x*matrix->right.x + pointsIn->y*matrix->up.x + pointsIn->z*matrix->at.x + matrix->pos.x;
+ float y = pointsIn->x*matrix->right.y + pointsIn->y*matrix->up.y + pointsIn->z*matrix->at.y + matrix->pos.y;
+ float z = pointsIn->x*matrix->right.z + pointsIn->y*matrix->up.z + pointsIn->z*matrix->at.z + matrix->pos.z;
+ pointsOut->x = x;
+ pointsOut->y = y;
+ pointsOut->z = z;
+ pointsOut++;
+ pointsIn++;
+ }
+}
diff --git a/src/math/Vector.h b/src/math/Vector.h
index 02128454..a86e4e72 100644
--- a/src/math/Vector.h
+++ b/src/math/Vector.h
@@ -1,8 +1,12 @@
#pragma once
+// TODO(LCS): this should have 16 byte alignment but VS doesn't like passing aligned values by value
+// need a solution for this eventually if we ever want to load original assets
class CVector : public RwV3d
{
public:
+ float w;
+
CVector(void) {}
CVector(float x, float y, float z)
{
@@ -18,7 +22,7 @@ public:
z = v.z;
}
// (0,1,0) means no rotation. So get right vector and its atan
- float Heading(void) const { return Atan2(-x, y); }
+ float Heading(void) const { return x == 0.0f && y == 0.0f ? 0.0f : Atan2(-x, y); }
float Magnitude(void) const { return Sqrt(x*x + y*y + z*z); }
float MagnitudeSqr(void) const { return x*x + y*y + z*z; }
float Magnitude2D(void) const { return Sqrt(x*x + y*y); }
@@ -126,4 +130,7 @@ class CMatrix;
CVector Multiply3x3(const CMatrix &mat, const CVector &vec);
CVector Multiply3x3(const CVector &vec, const CMatrix &mat);
-CVector operator*(const CMatrix &mat, const CVector &vec); \ No newline at end of file
+CVector operator*(const CMatrix &mat, const CVector &vec);
+
+// we need this because CVector and RwV3d have different size now
+void RwV3dTransformPoints(CVector * pointsOut, const CVector * pointsIn, RwInt32 numPoints, const RwMatrix * matrix);
diff --git a/src/math/VuVector.h b/src/math/VuVector.h
index 41584095..ccaa4cfb 100644
--- a/src/math/VuVector.h
+++ b/src/math/VuVector.h
@@ -3,10 +3,10 @@
class TYPEALIGN(16) CVuVector : public CVector
{
public:
- float w;
+// float w; // in CVector now
CVuVector(void) {}
CVuVector(float x, float y, float z) : CVector(x, y, z) {}
- CVuVector(float x, float y, float z, float w) : CVector(x, y, z), w(w) {}
+ CVuVector(float x, float y, float z, float w) : CVector(x, y, z)/*, w(w)*/ { this->w = w;}
CVuVector(const CVector &v) : CVector(v.x, v.y, v.z) {}
CVuVector(const RwV3d &v) : CVector(v) {}
/*
diff --git a/src/modelinfo/BaseModelInfo.cpp b/src/modelinfo/BaseModelInfo.cpp
index 709420fd..9af21da0 100644
--- a/src/modelinfo/BaseModelInfo.cpp
+++ b/src/modelinfo/BaseModelInfo.cpp
@@ -1,11 +1,15 @@
#include "common.h"
#include "templates.h"
+#include "main.h"
#include "TxdStore.h"
#include "2dEffect.h"
#include "BaseModelInfo.h"
#include "ModelInfo.h"
-#include "ColModel.h"
+#include "KeyGen.h"
+#include "Streaming.h"
+#include "smallHeap.h"
+#include "TempColModels.h"
CBaseModelInfo::CBaseModelInfo(ModelInfoType type)
{
@@ -17,6 +21,11 @@ CBaseModelInfo::CBaseModelInfo(ModelInfoType type)
m_type = type;
m_num2dEffects = 0;
m_bOwnsColModel = false;
+ m_nameKey = 0;
+ m_unk[0] = 0;
+ m_unk[1] = 0;
+ m_name = new char[MAX_MODEL_NAME];
+ *(int32*)m_name = 0;
}
void
@@ -24,6 +33,7 @@ CBaseModelInfo::Shutdown(void)
{
DeleteCollisionModel();
DeleteRwObject();
+ DeleteChunk();
m_2dEffectsID = -1;
m_num2dEffects = 0;
m_txdSlot = -1;
@@ -33,11 +43,11 @@ CBaseModelInfo::Shutdown(void)
void
CBaseModelInfo::DeleteCollisionModel(void)
{
- if(m_colModel && m_bOwnsColModel){
+ if(!gUseChunkFiles && m_colModel && m_bOwnsColModel){
if(m_colModel)
delete m_colModel;
- m_colModel = nil;
}
+ m_colModel = nil;
}
void
@@ -50,8 +60,10 @@ CBaseModelInfo::AddRef(void)
void
CBaseModelInfo::RemoveRef(void)
{
- m_refCount--;
- RemoveTexDictionaryRef();
+ if(m_refCount > 0){
+ m_refCount--;
+ RemoveTexDictionaryRef();
+ }
}
void
@@ -70,12 +82,24 @@ CBaseModelInfo::AddTexDictionaryRef(void)
}
void
+CBaseModelInfo::AddTexDictionaryRefGu(void)
+{
+ CTxdStore::AddRefGu(m_txdSlot);
+}
+
+void
CBaseModelInfo::RemoveTexDictionaryRef(void)
{
CTxdStore::RemoveRef(m_txdSlot);
}
void
+CBaseModelInfo::RemoveTexDictionaryRefGu(void)
+{
+ CTxdStore::RemoveRefGu(m_txdSlot);
+}
+
+void
CBaseModelInfo::Init2dEffects(void)
{
m_2dEffectsID = -1;
@@ -88,7 +112,7 @@ CBaseModelInfo::Add2dEffect(C2dEffect *fx)
if(m_2dEffectsID >= 0)
m_num2dEffects++;
else{
- m_2dEffectsID = CModelInfo::Get2dEffectStore().GetIndex(fx);
+ m_2dEffectsID = CModelInfo::Get2dEffectIndex(fx);
m_num2dEffects = 1;
}
}
@@ -97,7 +121,64 @@ C2dEffect*
CBaseModelInfo::Get2dEffect(int n)
{
if(m_2dEffectsID >= 0)
- return CModelInfo::Get2dEffectStore().GetItem(m_2dEffectsID+n);
+ return CModelInfo::Get2dEffect(m_2dEffectsID+n);
else
return nil;
}
+
+
+void
+CBaseModelInfo::SetModelName(const char *name)
+{
+ m_nameKey = CKeyGen::GetUppercaseKey(name);
+ if (!gUseChunkFiles)
+ strcpy(m_name, name);
+}
+
+void
+CBaseModelInfo::DeleteChunk(void)
+{
+ // BUG? what if we're not using chunks?
+ if(m_chunk){
+ CStreaming::UnregisterPointer(&m_chunk, 2);
+ cSmallHeap::msInstance.Free(m_chunk);
+ m_chunk = nil;
+ }
+}
+
+inline int
+GetColmodelID(CColModel *model)
+{
+ int colModelid = 0;
+ if(model == &gpTempColModels->ms_colModelBBox) colModelid = 1;
+ if(model == &gpTempColModels->ms_colModelPed1) colModelid = 2;
+ if(model == &gpTempColModels->ms_colModelWeapon) colModelid = 3;
+ if(model == &CTempColModels::ms_colModelPed2) colModelid = 4;
+ if(model == &CTempColModels::ms_colModelPedGroundHit) colModelid = 5;
+ if(model == &CTempColModels::ms_colModelDoor1) colModelid = 6;
+ if(model == &CTempColModels::ms_colModelBumper1) colModelid = 7;
+ if(model == &CTempColModels::ms_colModelPanel1) colModelid = 8;
+ if(model == &CTempColModels::ms_colModelBonnet1) colModelid = 9;
+ if(model == &CTempColModels::ms_colModelBoot1) colModelid = 10;
+ if(model == &CTempColModels::ms_colModelWheel1) colModelid = 11;
+ if(model == &CTempColModels::ms_colModelBodyPart1) colModelid = 12;
+ if(model == &CTempColModels::ms_colModelBodyPart2) colModelid = 13;
+ if(model == &CTempColModels::ms_colModelCutObj[0]) colModelid = 14;
+ if(model == &CTempColModels::ms_colModelCutObj[1]) colModelid = 15;
+ if(model == &CTempColModels::ms_colModelCutObj[2]) colModelid = 16;
+ if(model == &CTempColModels::ms_colModelCutObj[3]) colModelid = 17;
+ if(model == &CTempColModels::ms_colModelCutObj[4]) colModelid = 18;
+ return colModelid;
+}
+
+void
+CBaseModelInfo::Write(base::cRelocatableChunkWriter &writer)
+{
+ m_chunk = nil;
+ RcWriteThis(writer);
+ if(m_colModel){
+ if(m_bOwnsColModel || GetColmodelID(m_colModel) != 0)
+ m_colModel->Write(writer, true);
+ writer.AddPatch(&m_colModel);
+ }
+}
diff --git a/src/modelinfo/BaseModelInfo.h b/src/modelinfo/BaseModelInfo.h
index 2d1dc8ac..f9020335 100644
--- a/src/modelinfo/BaseModelInfo.h
+++ b/src/modelinfo/BaseModelInfo.h
@@ -2,7 +2,7 @@
struct CColModel;
-#define MAX_MODEL_NAME (21)
+#define MAX_MODEL_NAME (24)
enum ModelInfoType
{
@@ -23,11 +23,18 @@ class C2dEffect;
class CBaseModelInfo
{
protected:
- char m_name[MAX_MODEL_NAME];
+ uint32 m_unk[2]; // somehow related to GU texture stuff, unused here
+ uint32 m_nameKey;
+ union {
+ char *m_name; // if not using chunks
+ void *m_chunk; // else
+ };
uint8 m_type;
uint8 m_num2dEffects;
bool m_bOwnsColModel;
+public: // need this in colstore
CColModel *m_colModel;
+protected:
int16 m_2dEffectsID;
int16 m_objectId;
uint16 m_refCount;
@@ -35,7 +42,11 @@ protected:
public:
CBaseModelInfo(ModelInfoType type);
+#ifdef FIX_BUGS
+ virtual ~CBaseModelInfo() { delete []m_name; }
+#else
virtual ~CBaseModelInfo() {}
+#endif
virtual void Shutdown(void);
virtual void DeleteRwObject(void) = 0;
virtual RwObject *CreateInstance(void) = 0;
@@ -45,13 +56,24 @@ public:
virtual void ConvertAnimFileIndex(void) {}
virtual int GetAnimFileIndex(void) { return -1; }
+ virtual void LoadModel(void *model, const void *chunk) = 0;
+ virtual void DeleteChunk(void);
+ // this writes the modelinfo struct, possibly including actual RW models
+ virtual void Write(base::cRelocatableChunkWriter &writer);
+ // this writes the RW models
+ virtual void *WriteModel(base::cRelocatableChunkWriter &writer) { return nil; } // = 0; // this is not in the vtable for some reason???
+ // these allocate the space for a modelinfo struct and patch the vtable pointer
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer) = 0;
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer) = 0;
+
// one day it becomes virtual
uint8 GetModelType() const { return m_type; }
bool IsBuilding(void) { return m_type == MITYPE_SIMPLE || m_type == MITYPE_TIME; }
bool IsSimple(void) { return m_type == MITYPE_SIMPLE || m_type == MITYPE_TIME || m_type == MITYPE_WEAPON; }
bool IsClump(void) { return m_type == MITYPE_CLUMP || m_type == MITYPE_PED || m_type == MITYPE_VEHICLE; }
char *GetModelName(void) { return m_name; }
- void SetModelName(const char *name) { strncpy(m_name, name, MAX_MODEL_NAME); }
+ void SetModelName(const char *name);
+ uint32 GetNameHashKey() { return m_nameKey; }
void SetColModel(CColModel *col, bool owns = false){
m_colModel = col; m_bOwnsColModel = owns; }
CColModel *GetColModel(void) { return m_colModel; }
@@ -65,7 +87,9 @@ public:
void RemoveRef(void);
void SetTexDictionary(const char *name);
void AddTexDictionaryRef(void);
+ void AddTexDictionaryRefGu(void);
void RemoveTexDictionaryRef(void);
+ void RemoveTexDictionaryRefGu(void);
void Init2dEffects(void);
void Add2dEffect(C2dEffect *fx);
C2dEffect *Get2dEffect(int n);
diff --git a/src/modelinfo/ClumpModelInfo.cpp b/src/modelinfo/ClumpModelInfo.cpp
index ba18bfa7..00c2c0fe 100644
--- a/src/modelinfo/ClumpModelInfo.cpp
+++ b/src/modelinfo/ClumpModelInfo.cpp
@@ -1,17 +1,30 @@
#include "common.h"
+#include "main.h"
#include "RwHelper.h"
#include "General.h"
#include "NodeName.h"
#include "VisibilityPlugins.h"
#include "ModelInfo.h"
#include "AnimManager.h"
+#include "Streaming.h"
+#include "Leeds.h"
+
+base::cRelocatableChunkClassInfo CClumpModelInfo::msClassInfo("CElementGroupModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance)); // the real name
+CClumpModelInfo CClumpModelInfo::msClassInstance;
void
CClumpModelInfo::DeleteRwObject(void)
{
if(m_clump){
- RpClumpDestroy(m_clump);
+ if(!gUseChunkFiles)
+ RpClumpDestroy(m_clump);
+ else{
+ CStreaming::UnregisterClump(m_clump);
+ CStreaming::UnregisterPointer(&m_clump, 2);
+ DeleteChunk();
+ }
+
m_clump = nil;
RemoveTexDictionaryRef();
if(GetAnimFileIndex() != -1)
@@ -52,6 +65,7 @@ CClumpModelInfo::CreateInstance(RwMatrix *m)
if(m_clump){
RpClump *clump = (RpClump*)CreateInstance();
*RwFrameGetMatrix(RpClumpGetFrame(clump)) = *m;
+ CStreaming::RegisterInstance(clump);
return (RwObject*)clump;
}
return nil;
@@ -73,14 +87,15 @@ CClumpModelInfo::SetClump(RpClump *clump)
if(GetAnimFileIndex() != -1)
CAnimManager::AddAnimBlockRef(GetAnimFileIndex());
if(IsClumpSkinned(clump)){
- int i;
+ //int i;
RpHAnimHierarchy *hier;
- RpAtomic *skinAtomic;
- RpSkin *skin;
+ //RpAtomic *skinAtomic;
+ //RpSkin *skin;
hier = GetAnimHierarchyFromClump(clump);
assert(hier);
RpClumpForAllAtomics(clump, SetHierarchyForSkinAtomic, hier);
+/*
skinAtomic = GetFirstAtomic(clump);
assert(skinAtomic);
@@ -94,6 +109,7 @@ CClumpModelInfo::SetClump(RpClump *clump)
weights->w2 /= sum;
weights->w3 /= sum;
}
+*/
RpHAnimHierarchySetFlags(hier, (RpHAnimHierarchyFlag)(rpHANIMHIERARCHYUPDATEMODELLINGMATRICES|rpHANIMHIERARCHYUPDATELTMS));
}
}
@@ -203,3 +219,47 @@ CClumpModelInfo::GetFrameFromId(RpClump *clump, int32 id)
RwFrameForAllChildren(RpClumpGetFrame(clump), FindFrameFromIdCB, &assoc);
return assoc.frame;
}
+
+
+void
+CClumpModelInfo::LoadModel(void *clump, const void *chunk)
+{
+ m_chunk = (void*)chunk;
+ m_clump = (RpClump*)clump;
+ LoadResource(m_clump);
+ CStreaming::RegisterPointer(&m_chunk, 2, true);
+ CStreaming::RegisterClump(m_clump);
+ CStreaming::RegisterPointer(&m_clump, 2, true);
+}
+
+void
+CClumpModelInfo::Write(base::cRelocatableChunkWriter &writer)
+{
+ CBaseModelInfo::Write(writer);
+ if(m_clump){
+ writer.AddPatch(&m_clump);
+ SaveResource(m_clump, writer);
+ }
+}
+
+void*
+CClumpModelInfo::WriteModel(base::cRelocatableChunkWriter &writer)
+{
+ if(m_clump)
+ SaveResource(m_clump, writer);
+ return m_clump;
+}
+
+void
+CClumpModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CClumpModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/ClumpModelInfo.h b/src/modelinfo/ClumpModelInfo.h
index 0113d340..b8507e5f 100644
--- a/src/modelinfo/ClumpModelInfo.h
+++ b/src/modelinfo/ClumpModelInfo.h
@@ -35,6 +35,9 @@ public:
char *m_animFileName;
};
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CClumpModelInfo msClassInstance;
+
CClumpModelInfo(void) : CBaseModelInfo(MITYPE_CLUMP) { m_animFileIndex = -1; }
CClumpModelInfo(ModelInfoType id) : CBaseModelInfo(id) { m_animFileIndex = -1; }
~CClumpModelInfo() {}
@@ -48,6 +51,12 @@ public:
virtual void ConvertAnimFileIndex(void);
virtual int GetAnimFileIndex(void) { return m_animFileIndex; }
+ virtual void LoadModel(void *model, const void *chunk);
+ virtual void Write(base::cRelocatableChunkWriter &writer);
+ virtual void *WriteModel(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
static RpAtomic *SetAtomicRendererCB(RpAtomic *atomic, void *data);
void SetFrameIds(RwObjectNameIdAssocation *assocs);
static RwFrame *FindFrameFromNameCB(RwFrame *frame, void *data);
diff --git a/src/modelinfo/MloModelInfo.cpp b/src/modelinfo/MloModelInfo.cpp
index fa12b900..dc5e64fa 100644
--- a/src/modelinfo/MloModelInfo.cpp
+++ b/src/modelinfo/MloModelInfo.cpp
@@ -3,10 +3,13 @@
#include "VisibilityPlugins.h"
#include "ModelInfo.h"
-/*
+base::cRelocatableChunkClassInfo CMloModelInfo::msClassInfo("CMloModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CMloModelInfo CMloModelInfo::msClassInstance;
+
void
CMloModelInfo::ConstructClump()
{
+/*
m_clump = RpClumpCreate();
RwFrame *mainFrame = RwFrameCreate();
RwFrameSetIdentity(mainFrame);
@@ -37,5 +40,19 @@ CMloModelInfo::ConstructClump()
RpClumpDestroy(m_clump);
m_clump = nil;
}
+*/
+}
+
+void
+CMloModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CMloModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
}
-*/ \ No newline at end of file
diff --git a/src/modelinfo/MloModelInfo.h b/src/modelinfo/MloModelInfo.h
index b1ae3298..918efb89 100644
--- a/src/modelinfo/MloModelInfo.h
+++ b/src/modelinfo/MloModelInfo.h
@@ -11,4 +11,10 @@ public:
public:
CMloModelInfo(void) : CClumpModelInfo(MITYPE_MLO) {}
void ConstructClump();
+
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CMloModelInfo msClassInstance;
}; \ No newline at end of file
diff --git a/src/modelinfo/ModelIndices.cpp b/src/modelinfo/ModelIndices.cpp
index 98c7fb38..83539404 100644
--- a/src/modelinfo/ModelIndices.cpp
+++ b/src/modelinfo/ModelIndices.cpp
@@ -2,17 +2,25 @@
#include "General.h"
#include "ModelIndices.h"
+#include "main.h"
-#define X(name, var) int16 var = -1;
+CModelIndices *gpModelIndices;
+
+/*#define X(name, var) int16 var = -1;
MODELINDICES
-#undef X
+#undef X*/
void
InitModelIndices(void)
{
-#define X(name, var) var = -1;
+/*#define X(name, var) var = -1;
MODELINDICES
-#undef X
+#undef X*/
+ if (gMakeResources)
+ {
+ gpModelIndices = new CModelIndices;
+ memset(gpModelIndices, -1, sizeof(CModelIndices));
+ }
}
void
diff --git a/src/modelinfo/ModelIndices.h b/src/modelinfo/ModelIndices.h
index 836c4092..26fd0de8 100644
--- a/src/modelinfo/ModelIndices.h
+++ b/src/modelinfo/ModelIndices.h
@@ -2,8 +2,591 @@
#include "ModelInfo.h"
+struct CModelIndices
+{
+ int16 TRAFFICLIGHTS;
+ int16 TLIGHT_POST;
+ int16 TLIGHT_WALK;
+ int16 TLIGHT_BOX1;
+ int16 TLIGHT_BOX2;
+ int16 TRAFFICLIGHTS_VERTICAL;
+ int16 TRAFFICLIGHTS_MIAMI;
+ int16 TRAFFICLIGHTS_TWOVERTICAL;
+ int16 SINGLESTREETLIGHTS1;
+ int16 SINGLESTREETLIGHTS2;
+ int16 SINGLESTREETLIGHTS3;
+ int16 DOUBLESTREETLIGHTS;
+ int16 STREETLAMP1;
+ int16 STREETLAMP2;
+ int16 ROADSFORROADBLOCKSSTART;
+ int16 ROADSFORROADBLOCKSEND;
+ int16 TREE2;
+ int16 TREE3;
+ int16 TREE6;
+ int16 TREE8;
+ int16 TREE1;
+ int16 TREE4;
+ int16 TREE5;
+ int16 TREE7;
+ int16 TREE9;
+ int16 TREE10;
+ int16 TREE11;
+ int16 TREE12;
+ int16 TREE13;
+ int16 TREE14;
+ int16 CRANE_1;
+ int16 CRANE_2;
+ int16 CRANE_3;
+ int16 CRANE_4;
+ int16 CRANE_5;
+ int16 CRANE_6;
+ int16 PARKINGMETER;
+ int16 PARKINGMETER2;
+ int16 MALLFAN;
+ int16 HOTELFAN_NIGHT;
+ int16 HOTELFAN_DAY;
+ int16 HOTROOMFAN;
+ int16 PHONEBOOTH1;
+ int16 WASTEBIN;
+ int16 BIN;
+ int16 POSTBOX1;
+ int16 NEWSSTAND;
+ int16 TRAFFICCONE;
+ int16 DUMP1;
+ int16 ROADWORKBARRIER1;
+ int16 BUSSIGN1;
+ int16 NOPARKINGSIGN1;
+ int16 PHONESIGN;
+ int16 TAXISIGN;
+ int16 FISHSTALL01;
+ int16 FISHSTALL02;
+ int16 FISHSTALL03;
+ int16 FISHSTALL04;
+ int16 BAGELSTAND2;
+ int16 FIRE_HYDRANT;
+ int16 COLLECTABLE1;
+ int16 MONEY;
+ int16 CARMINE;
+ int16 GARAGEDOOR1;
+ int16 GARAGEDOOR2;
+ int16 GARAGEDOOR3;
+ int16 GARAGEDOOR4;
+ int16 GARAGEDOOR5;
+ int16 GARAGEDOOR6;
+ int16 GARAGEDOOR7;
+ int16 GARAGEDOOR9;
+ int16 GARAGEDOOR10;
+ int16 GARAGEDOOR11;
+ int16 GARAGEDOOR12;
+ int16 GARAGEDOOR13;
+ int16 GARAGEDOOR14;
+ int16 GARAGEDOOR15;
+ int16 GARAGEDOOR16;
+ int16 GARAGEDOOR17;
+ int16 GARAGEDOOR18;
+ int16 GARAGEDOOR19;
+ int16 GARAGEDOOR20;
+ int16 GARAGEDOOR21;
+ int16 GARAGEDOOR22;
+ int16 GARAGEDOOR23;
+ int16 GARAGEDOOR24;
+ int16 GARAGEDOOR25;
+ int16 GARAGEDOOR26;
+ int16 GARAGEDOOR27;
+ int16 GARAGEDOOR28;
+ int16 GARAGEDOOR29;
+ int16 GARAGEDOOR30;
+ int16 GARAGEDOOR31;
+ int16 GARAGEDOOR32;
+ int16 GARAGEDOOR33;
+ int16 GARAGEDOOR34;
+ int16 GARAGEDOOR35;
+ int16 GARAGEDOOR36;
+ int16 GARAGEDOOR37;
+ int16 GARAGEDOOR38;
+ int16 GARAGEDOOR39;
+ int16 TESTRAMP1; // UNUSED
+ int16 TESTRAMP2;
+ int16 NAUTICALMINE;
+ int16 CRUSHERBODY;
+ int16 CRUSHERLID;
+ int16 DONKEYMAG;
+ int16 BULLION;
+ int16 FLOATPACKAGE1;
+ int16 BRIEFCASE;
+ int16 CHINABANNER1;
+ int16 CHINABANNER2;
+ int16 CHINABANNER3;
+ int16 CHINABANNER4;
+ int16 CHINABANNER5;
+ int16 CHINABANNER6;
+ int16 CHINABANNER7;
+ int16 CHINABANNER8;
+ int16 CHINABANNER9;
+ int16 CHINABANNER10;
+ int16 CHINABANNER11;
+ int16 CHINABANNER12;
+ int16 CHINALANTERN;
+ int16 GLASS1;
+ int16 GLASS2;
+ int16 GLASS3;
+ int16 GLASS4;
+ int16 GLASS5;
+ int16 GLASS6;
+ int16 GLASS7;
+ int16 GLASS8;
+ int16 BRIDGELIFT;
+ int16 BRIDGEWEIGHT;
+ int16 BRIDGEROADSEGMENT;
+ int16 EXPLODINGBARREL;
+ int16 ITALYBANNER1;
+ int16 MEGADAMAGE;
+ int16 REGENERATOR;
+ int16 INVISIBLE;
+ int16 GOOD_CAR;
+ int16 BAD_CAR;
+ int16 PICKUP_ADRENALINE;
+ int16 PICKUP_BODYARMOUR;
+ int16 PICKUP_INFO;
+ int16 PICKUP_HEALTH;
+ int16 PICKUP_BONUS;
+ int16 PICKUP_BRIBE;
+ int16 PICKUP_KILLFRENZY;
+ int16 PICKUP_CAMERA;
+ int16 PICKUP_REVENUE;
+ int16 PICKUP_SAVEGAME;
+ int16 PICKUP_PROPERTY;
+ int16 PICKUP_PROPERTY_FORSALE;
+ int16 PICKUP_CLOTHES;
+ int16 BOLLARDLIGHT;
+ int16 CA_SP1;
+ int16 CA_SP2;
+ int16 CA_SP3;
+ int16 CA_SP4;
+ int16 PACKAGE1IZZY;
+ int16 MAGNET;
+ int16 RAILTRACKS;
+ int16 FENCE;
+ int16 FENCE2;
+ int16 PETROLPUMP;
+ int16 PETROLPUMP2;
+ int16 BODYCAST;
+ int16 IZZY_CONFDOOR;
+ int16 SHIPDOOR;
+ int16 IZZY_JDDOOR;
+ int16 IZZY_JDDOOR_SLIDER;
+ int16 LITEHOUSE_GATE;
+ int16 COFFEE;
+ int16 BUOY;
+ int16 PARKTABLE;
+ int16 SUBWAY1;
+ int16 SUBWAY2;
+ int16 SUBWAY3;
+ int16 SUBWAY4;
+ int16 SUBWAY5;
+ int16 SUBWAY6;
+ int16 SUBWAY7;
+ int16 SUBWAY8;
+ int16 SUBWAY9;
+ int16 SUBWAY10;
+ int16 SUBWAY11;
+ int16 SUBWAY12;
+ int16 SUBWAY13;
+ int16 SUBWAY14;
+ int16 SUBWAY15;
+ int16 SUBWAY16;
+ int16 SUBWAY17;
+ int16 SUBWAY18;
+ int16 SUBPLATFORM_IND;
+ int16 SUBPLATFORM_COMS;
+ int16 SUBPLATFORM_COMS2;
+ int16 SUBPLATFORM_COMN;
+ int16 SUBPLATFORM_SUB;
+ int16 SUBPLATFORM_SUB2;
+ int16 FILES;
+ int16 LAMPPOST1;
+ int16 VEG_PALM01;
+ int16 VEG_PALM02;
+ int16 VEG_PALM03;
+ int16 VEG_PALM04;
+ int16 VEG_PALM05;
+ int16 VEG_PALM06;
+ int16 VEG_PALM07;
+ int16 VEG_PALM08;
+ int16 MLAMPPOST;
+ int16 BARRIER1;
+ int16 LITTLEHA_POLICE;
+ int16 TELPOLE02;
+ int16 TRAFFICLIGHT01;
+ int16 PARKBENCH;
+ int16 PLC_STINGER;
+ int16 LIGHTBEAM;
+ int16 AIRPORTRADAR;
+ int16 RCBOMB;
+ int16 JM_SALRADIO;
+ int16 BEACHBALL;
+ int16 SANDCASTLE1;
+ int16 SANDCASTLE2;
+ int16 JELLYFISH;
+ int16 JELLYFISH01;
+ int16 FISH1SINGLE;
+ int16 FISH1S;
+ int16 FISH2SINGLE;
+ int16 FISH2S;
+ int16 FISH3SINGLE;
+ int16 FISH3S;
+ int16 TURTLE;
+ int16 DOLPHIN;
+ int16 SHARK;
+ int16 SUBMARINE;
+ int16 ESCALATORSTEP;
+ int16 LOUNGE_WOOD_UP;
+ int16 LOUNGE_TOWEL_UP;
+ int16 LOUNGE_WOOD_DN;
+ int16 LOTION;
+ int16 BEACHTOWEL01;
+ int16 BEACHTOWEL02;
+ int16 BEACHTOWEL03;
+ int16 BEACHTOWEL04;
+ int16 BLIMP_NIGHT;
+ int16 BLIMP_DAY;
+ int16 YT_MAIN_BODY;
+ int16 YT_MAIN_BODY2;
+ int16 SMALL_HELIX;
+ int16 PT_BARRIER;
+ int16 SUBWAYGATE;
+ int16 IN_PMBRIDRAMP3;
+ int16 IN_PMBRIDG2_UPGS;
+ int16 IN_PMBRIDGE2;
+ int16 IN_PMBRIDG1_UPGS;
+ int16 PM_LIGHTRIG3;
+ int16 PM_LIGHTRIG1;
+ int16 IN_PMSCAFF_UPS;
+ int16 IN_PM_CONCBLOK2;
+ int16 IN_PMSCAFFH_NS;
+ int16 IN_PM_GRAVL_JMP;
+ int16 IN_PM_SCAFFCOVR;
+ int16 IN_PM_GIRDER2;
+ int16 IN_PM_SCAFFH_WE;
+ int16 IN_PM_SIXCONC2;
+ int16 IN_BMBRIDRAMP3;
+ int16 IN_BMBRIDG2_UPGS;
+ int16 IN_BMBRIDGE2;
+ int16 IN_BMBRIDG1_UPGS;
+ int16 BM_LIGHTRIG3;
+ int16 BM_LIGHTRIG1;
+ int16 IN_BMSCAFF_UPS;
+ int16 IN_BM_CONCBLOK2;
+ int16 IN_BMSCAFFH_NS;
+ int16 IN_BM_GRAVL_JMP;
+ int16 IN_BM_SCAFFCOVR;
+ int16 IN_BM_GIRDER2;
+ int16 IN_BM_SCAFFH_WE;
+ int16 IN_BM_SIXCONC2;
+ int16 CRATE_SJL;
+ int16 DOOR1_SJL;
+ int16 DOOR2_SJL;
+ int16 SJL_PORTACABIN;
+ int16 SJL_PORTACABINRED;
+ int16 advert_test; // txd
+};
+
+extern CModelIndices *gpModelIndices;
+
+#define MI_TRAFFICLIGHTS gpModelIndices->TRAFFICLIGHTS
+#define MI_TLIGHT_POST gpModelIndices->TLIGHT_POST
+#define MI_TLIGHT_WALK gpModelIndices->TLIGHT_WALK
+#define MI_TLIGHT_BOX1 gpModelIndices->TLIGHT_BOX1
+#define MI_TLIGHT_BOX2 gpModelIndices->TLIGHT_BOX2
+#define MI_TRAFFICLIGHTS_VERTICAL gpModelIndices->TRAFFICLIGHTS_VERTICAL
+#define MI_TRAFFICLIGHTS_MIAMI gpModelIndices->TRAFFICLIGHTS_MIAMI
+#define MI_TRAFFICLIGHTS_TWOVERTICAL gpModelIndices->TRAFFICLIGHTS_TWOVERTICAL
+#define MI_SINGLESTREETLIGHTS1 gpModelIndices->SINGLESTREETLIGHTS1
+#define MI_SINGLESTREETLIGHTS2 gpModelIndices->SINGLESTREETLIGHTS2
+#define MI_SINGLESTREETLIGHTS3 gpModelIndices->SINGLESTREETLIGHTS3
+#define MI_DOUBLESTREETLIGHTS gpModelIndices->DOUBLESTREETLIGHTS
+#define MI_STREETLAMP1 gpModelIndices->STREETLAMP1
+#define MI_STREETLAMP2 gpModelIndices->STREETLAMP2
+#define MI_ROADSFORROADBLOCKSSTART gpModelIndices->ROADSFORROADBLOCKSSTART
+#define MI_ROADSFORROADBLOCKSEND gpModelIndices->ROADSFORROADBLOCKSEND
+#define MI_TREE2 gpModelIndices->TREE2
+#define MI_TREE3 gpModelIndices->TREE3
+#define MI_TREE6 gpModelIndices->TREE6
+#define MI_TREE8 gpModelIndices->TREE8
+#define MI_TREE1 gpModelIndices->TREE1
+#define MI_TREE4 gpModelIndices->TREE4
+#define MI_TREE5 gpModelIndices->TREE5
+#define MI_TREE7 gpModelIndices->TREE7
+#define MI_TREE9 gpModelIndices->TREE9
+#define MI_TREE10 gpModelIndices->TREE10
+#define MI_TREE11 gpModelIndices->TREE11
+#define MI_TREE12 gpModelIndices->TREE12
+#define MI_TREE13 gpModelIndices->TREE13
+#define MI_TREE14 gpModelIndices->TREE14
+#define MODELID_CRANE_1 gpModelIndices->CRANE_1
+#define MODELID_CRANE_2 gpModelIndices->CRANE_2
+#define MODELID_CRANE_3 gpModelIndices->CRANE_3
+#define MODELID_CRANE_4 gpModelIndices->CRANE_4
+#define MODELID_CRANE_5 gpModelIndices->CRANE_5
+#define MODELID_CRANE_6 gpModelIndices->CRANE_6
+#define MI_PARKINGMETER gpModelIndices->PARKINGMETER
+#define MI_PARKINGMETER2 gpModelIndices->PARKINGMETER2
+#define MI_MALLFAN gpModelIndices->MALLFAN
+#define MI_HOTELFAN_NIGHT gpModelIndices->HOTELFAN_NIGHT
+#define MI_HOTELFAN_DAY gpModelIndices->HOTELFAN_DAY
+#define MI_HOTROOMFAN gpModelIndices->HOTROOMFAN
+#define MI_PHONEBOOTH1 gpModelIndices->PHONEBOOTH1
+#define MI_WASTEBIN gpModelIndices->WASTEBIN
+#define MI_BIN gpModelIndices->BIN
+#define MI_POSTBOX1 gpModelIndices->POSTBOX1
+#define MI_NEWSSTAND gpModelIndices->NEWSSTAND
+#define MI_TRAFFICCONE gpModelIndices->TRAFFICCONE
+#define MI_DUMP1 gpModelIndices->DUMP1
+#define MI_ROADWORKBARRIER1 gpModelIndices->ROADWORKBARRIER1
+#define MI_BUSSIGN1 gpModelIndices->BUSSIGN1
+#define MI_NOPARKINGSIGN1 gpModelIndices->NOPARKINGSIGN1
+#define MI_PHONESIGN gpModelIndices->PHONESIGN
+#define MI_TAXISIGN gpModelIndices->TAXISIGN
+#define MI_FISHSTALL01 gpModelIndices->FISHSTALL01
+#define MI_FISHSTALL02 gpModelIndices->FISHSTALL02
+#define MI_FISHSTALL03 gpModelIndices->FISHSTALL03
+#define MI_FISHSTALL04 gpModelIndices->FISHSTALL04
+#define MI_BAGELSTAND2 gpModelIndices->BAGELSTAND2
+#define MI_FIRE_HYDRANT gpModelIndices->FIRE_HYDRANT
+#define MI_COLLECTABLE1 gpModelIndices->COLLECTABLE1
+#define MI_MONEY gpModelIndices->MONEY
+#define MI_CARMINE gpModelIndices->CARMINE
+#define MI_GARAGEDOOR1 gpModelIndices->GARAGEDOOR1
+#define MI_GARAGEDOOR2 gpModelIndices->GARAGEDOOR2
+#define MI_GARAGEDOOR3 gpModelIndices->GARAGEDOOR3
+#define MI_GARAGEDOOR4 gpModelIndices->GARAGEDOOR4
+#define MI_GARAGEDOOR5 gpModelIndices->GARAGEDOOR5
+#define MI_GARAGEDOOR6 gpModelIndices->GARAGEDOOR6
+#define MI_GARAGEDOOR7 gpModelIndices->GARAGEDOOR7
+#define MI_GARAGEDOOR9 gpModelIndices->GARAGEDOOR9
+#define MI_GARAGEDOOR10 gpModelIndices->GARAGEDOOR10
+#define MI_GARAGEDOOR11 gpModelIndices->GARAGEDOOR11
+#define MI_GARAGEDOOR12 gpModelIndices->GARAGEDOOR12
+#define MI_GARAGEDOOR13 gpModelIndices->GARAGEDOOR13
+#define MI_GARAGEDOOR14 gpModelIndices->GARAGEDOOR14
+#define MI_GARAGEDOOR15 gpModelIndices->GARAGEDOOR15
+#define MI_GARAGEDOOR16 gpModelIndices->GARAGEDOOR16
+#define MI_GARAGEDOOR17 gpModelIndices->GARAGEDOOR17
+#define MI_GARAGEDOOR18 gpModelIndices->GARAGEDOOR18
+#define MI_GARAGEDOOR19 gpModelIndices->GARAGEDOOR19
+#define MI_GARAGEDOOR20 gpModelIndices->GARAGEDOOR20
+#define MI_GARAGEDOOR21 gpModelIndices->GARAGEDOOR21
+#define MI_GARAGEDOOR22 gpModelIndices->GARAGEDOOR22
+#define MI_GARAGEDOOR23 gpModelIndices->GARAGEDOOR23
+#define MI_GARAGEDOOR24 gpModelIndices->GARAGEDOOR24
+#define MI_GARAGEDOOR25 gpModelIndices->GARAGEDOOR25
+#define MI_GARAGEDOOR26 gpModelIndices->GARAGEDOOR26
+#define MI_GARAGEDOOR27 gpModelIndices->GARAGEDOOR27
+#define MI_GARAGEDOOR28 gpModelIndices->GARAGEDOOR28
+#define MI_GARAGEDOOR29 gpModelIndices->GARAGEDOOR29
+#define MI_GARAGEDOOR30 gpModelIndices->GARAGEDOOR30
+#define MI_GARAGEDOOR31 gpModelIndices->GARAGEDOOR31
+#define MI_GARAGEDOOR32 gpModelIndices->GARAGEDOOR32
+#define MI_GARAGEDOOR33 gpModelIndices->GARAGEDOOR33
+#define MI_GARAGEDOOR34 gpModelIndices->GARAGEDOOR34
+#define MI_GARAGEDOOR35 gpModelIndices->GARAGEDOOR35
+#define MI_GARAGEDOOR36 gpModelIndices->GARAGEDOOR36
+#define MI_GARAGEDOOR37 gpModelIndices->GARAGEDOOR37
+#define MI_GARAGEDOOR38 gpModelIndices->GARAGEDOOR38
+#define MI_GARAGEDOOR39 gpModelIndices->GARAGEDOOR39
+#define MI_TESTRAMP1 gpModelIndices->TESTRAMP1 // UNUSED
+#define MI_TESTRAMP2 gpModelIndices->TESTRAMP2
+#define MI_NAUTICALMINE gpModelIndices->NAUTICALMINE
+#define MI_CRUSHERBODY gpModelIndices->CRUSHERBODY
+#define MI_CRUSHERLID gpModelIndices->CRUSHERLID
+#define MI_DONKEYMAG gpModelIndices->DONKEYMAG
+#define MI_BULLION gpModelIndices->BULLION
+#define MI_FLOATPACKAGE1 gpModelIndices->FLOATPACKAGE1
+#define MI_BRIEFCASE gpModelIndices->BRIEFCASE
+#define MI_CHINABANNER1 gpModelIndices->CHINABANNER1
+#define MI_CHINABANNER2 gpModelIndices->CHINABANNER2
+#define MI_CHINABANNER3 gpModelIndices->CHINABANNER3
+#define MI_CHINABANNER4 gpModelIndices->CHINABANNER4
+#define MI_CHINABANNER5 gpModelIndices->CHINABANNER5
+#define MI_CHINABANNER6 gpModelIndices->CHINABANNER6
+#define MI_CHINABANNER7 gpModelIndices->CHINABANNER7
+#define MI_CHINABANNER8 gpModelIndices->CHINABANNER8
+#define MI_CHINABANNER9 gpModelIndices->CHINABANNER9
+#define MI_CHINABANNER10 gpModelIndices->CHINABANNER10
+#define MI_CHINABANNER11 gpModelIndices->CHINABANNER11
+#define MI_CHINABANNER12 gpModelIndices->CHINABANNER12
+#define MI_CHINALANTERN gpModelIndices->CHINALANTERN
+#define MI_GLASS1 gpModelIndices->GLASS1
+#define MI_GLASS2 gpModelIndices->GLASS2
+#define MI_GLASS3 gpModelIndices->GLASS3
+#define MI_GLASS4 gpModelIndices->GLASS4
+#define MI_GLASS5 gpModelIndices->GLASS5
+#define MI_GLASS6 gpModelIndices->GLASS6
+#define MI_GLASS7 gpModelIndices->GLASS7
+#define MI_GLASS8 gpModelIndices->GLASS8
+#define MI_BRIDGELIFT gpModelIndices->BRIDGELIFT
+#define MI_BRIDGEWEIGHT gpModelIndices->BRIDGEWEIGHT
+#define MI_BRIDGEROADSEGMENT gpModelIndices->BRIDGEROADSEGMENT
+#define MI_EXPLODINGBARREL gpModelIndices->EXPLODINGBARREL
+#define MI_ITALYBANNER1 gpModelIndices->ITALYBANNER1
+#define MI_MEGADAMAGE gpModelIndices->MEGADAMAGE
+#define MI_REGENERATOR gpModelIndices->REGENERATOR
+#define MI_INVISIBLE gpModelIndices->INVISIBLE
+#define MI_GOOD_CAR gpModelIndices->GOOD_CAR
+#define MI_BAD_CAR gpModelIndices->BAD_CAR
+#define MI_PICKUP_ADRENALINE gpModelIndices->PICKUP_ADRENALINE
+#define MI_PICKUP_BODYARMOUR gpModelIndices->PICKUP_BODYARMOUR
+#define MI_PICKUP_INFO gpModelIndices->PICKUP_INFO
+#define MI_PICKUP_HEALTH gpModelIndices->PICKUP_HEALTH
+#define MI_PICKUP_BONUS gpModelIndices->PICKUP_BONUS
+#define MI_PICKUP_BRIBE gpModelIndices->PICKUP_BRIBE
+#define MI_PICKUP_KILLFRENZY gpModelIndices->PICKUP_KILLFRENZY
+#define MI_PICKUP_CAMERA gpModelIndices->PICKUP_CAMERA
+#define MI_PICKUP_REVENUE gpModelIndices->PICKUP_REVENUE
+#define MI_PICKUP_SAVEGAME gpModelIndices->PICKUP_SAVEGAME
+#define MI_PICKUP_PROPERTY gpModelIndices->PICKUP_PROPERTY
+#define MI_PICKUP_PROPERTY_FORSALE gpModelIndices->PICKUP_PROPERTY_FORSALE
+#define MI_PICKUP_CLOTHES gpModelIndices->PICKUP_CLOTHES
+#define MI_BOLLARDLIGHT gpModelIndices->BOLLARDLIGHT
+#define MI_CA_SP1 gpModelIndices->CA_SP1
+#define MI_CA_SP2 gpModelIndices->CA_SP2
+#define MI_CA_SP3 gpModelIndices->CA_SP3
+#define MI_CA_SP4 gpModelIndices->CA_SP4
+#define MI_PACKAGE1IZZY gpModelIndices->PACKAGE1IZZY
+#define MI_MAGNET gpModelIndices->MAGNET
+#define MI_RAILTRACKS gpModelIndices->RAILTRACKS
+#define MI_FENCE gpModelIndices->FENCE
+#define MI_FENCE2 gpModelIndices->FENCE2
+#define MI_PETROLPUMP gpModelIndices->PETROLPUMP
+#define MI_PETROLPUMP2 gpModelIndices->PETROLPUMP2
+#define MI_BODYCAST gpModelIndices->BODYCAST
+#define MI_IZZY_CONFDOOR gpModelIndices->IZZY_CONFDOOR
+#define MI_SHIPDOOR gpModelIndices->SHIPDOOR
+#define MI_IZZY_JDDOOR gpModelIndices->IZZY_JDDOOR
+#define MI_IZZY_JDDOOR_SLIDER gpModelIndices->IZZY_JDDOOR_SLIDER
+#define MI_LITEHOUSE_GATE gpModelIndices->LITEHOUSE_GATE
+#define MI_COFFEE gpModelIndices->COFFEE
+#define MI_BUOY gpModelIndices->BUOY
+#define MI_PARKTABLE gpModelIndices->PARKTABLE
+#define MI_SUBWAY1 gpModelIndices->SUBWAY1
+#define MI_SUBWAY2 gpModelIndices->SUBWAY2
+#define MI_SUBWAY3 gpModelIndices->SUBWAY3
+#define MI_SUBWAY4 gpModelIndices->SUBWAY4
+#define MI_SUBWAY5 gpModelIndices->SUBWAY5
+#define MI_SUBWAY6 gpModelIndices->SUBWAY6
+#define MI_SUBWAY7 gpModelIndices->SUBWAY7
+#define MI_SUBWAY8 gpModelIndices->SUBWAY8
+#define MI_SUBWAY9 gpModelIndices->SUBWAY9
+#define MI_SUBWAY10 gpModelIndices->SUBWAY10
+#define MI_SUBWAY11 gpModelIndices->SUBWAY11
+#define MI_SUBWAY12 gpModelIndices->SUBWAY12
+#define MI_SUBWAY13 gpModelIndices->SUBWAY13
+#define MI_SUBWAY14 gpModelIndices->SUBWAY14
+#define MI_SUBWAY15 gpModelIndices->SUBWAY15
+#define MI_SUBWAY16 gpModelIndices->SUBWAY16
+#define MI_SUBWAY17 gpModelIndices->SUBWAY17
+#define MI_SUBWAY18 gpModelIndices->SUBWAY18
+#define MI_SUBPLATFORM_IND gpModelIndices->SUBPLATFORM_IND
+#define MI_SUBPLATFORM_COMS gpModelIndices->SUBPLATFORM_COMS
+#define MI_SUBPLATFORM_COMS2 gpModelIndices->SUBPLATFORM_COMS2
+#define MI_SUBPLATFORM_COMN gpModelIndices->SUBPLATFORM_COMN
+#define MI_SUBPLATFORM_SUB gpModelIndices->SUBPLATFORM_SUB
+#define MI_SUBPLATFORM_SUB2 gpModelIndices->SUBPLATFORM_SUB2
+#define MI_FILES gpModelIndices->FILES
+#define MI_LAMPPOST1 gpModelIndices->LAMPPOST1
+#define MI_VEG_PALM01 gpModelIndices->VEG_PALM01
+#define MI_VEG_PALM02 gpModelIndices->VEG_PALM02
+#define MI_VEG_PALM03 gpModelIndices->VEG_PALM03
+#define MI_VEG_PALM04 gpModelIndices->VEG_PALM04
+#define MI_VEG_PALM05 gpModelIndices->VEG_PALM05
+#define MI_VEG_PALM06 gpModelIndices->VEG_PALM06
+#define MI_VEG_PALM07 gpModelIndices->VEG_PALM07
+#define MI_VEG_PALM08 gpModelIndices->VEG_PALM08
+#define MI_MLAMPPOST gpModelIndices->MLAMPPOST
+#define MI_BARRIER1 gpModelIndices->BARRIER1
+#define MI_LITTLEHA_POLICE gpModelIndices->LITTLEHA_POLICE
+#define MI_TELPOLE02 gpModelIndices->TELPOLE02
+#define MI_TRAFFICLIGHT01 gpModelIndices->TRAFFICLIGHT01
+#define MI_PARKBENCH gpModelIndices->PARKBENCH
+#define MI_PLC_STINGER gpModelIndices->PLC_STINGER
+#define MI_LIGHTBEAM gpModelIndices->LIGHTBEAM
+#define MI_AIRPORTRADAR gpModelIndices->AIRPORTRADAR
+#define MI_RCBOMB gpModelIndices->RCBOMB
+#define MI_JM_SALRADIO gpModelIndices->JM_SALRADIO
+#define MI_BEACHBALL gpModelIndices->BEACHBALL
+#define MI_SANDCASTLE1 gpModelIndices->SANDCASTLE1
+#define MI_SANDCASTLE2 gpModelIndices->SANDCASTLE2
+#define MI_JELLYFISH gpModelIndices->JELLYFISH
+#define MI_JELLYFISH01 gpModelIndices->JELLYFISH01
+#define MI_FISH1SINGLE gpModelIndices->FISH1SINGLE
+#define MI_FISH1S gpModelIndices->FISH1S
+#define MI_FISH2SINGLE gpModelIndices->FISH2SINGLE
+#define MI_FISH2S gpModelIndices->FISH2S
+#define MI_FISH3SINGLE gpModelIndices->FISH3SINGLE
+#define MI_FISH3S gpModelIndices->FISH3S
+#define MI_TURTLE gpModelIndices->TURTLE
+#define MI_DOLPHIN gpModelIndices->DOLPHIN
+#define MI_SHARK gpModelIndices->SHARK
+#define MI_SUBMARINE gpModelIndices->SUBMARINE
+#define MI_ESCALATORSTEP gpModelIndices->ESCALATORSTEP
+#define MI_LOUNGE_WOOD_UP gpModelIndices->LOUNGE_WOOD_UP
+#define MI_LOUNGE_TOWEL_UP gpModelIndices->LOUNGE_TOWEL_UP
+#define MI_LOUNGE_WOOD_DN gpModelIndices->LOUNGE_WOOD_DN
+#define MI_LOTION gpModelIndices->LOTION
+#define MI_BEACHTOWEL01 gpModelIndices->BEACHTOWEL01
+#define MI_BEACHTOWEL02 gpModelIndices->BEACHTOWEL02
+#define MI_BEACHTOWEL03 gpModelIndices->BEACHTOWEL03
+#define MI_BEACHTOWEL04 gpModelIndices->BEACHTOWEL04
+#define MI_BLIMP_NIGHT gpModelIndices->BLIMP_NIGHT
+#define MI_BLIMP_DAY gpModelIndices->BLIMP_DAY
+#define MI_YT_MAIN_BODY gpModelIndices->YT_MAIN_BODY
+#define MI_YT_MAIN_BODY2 gpModelIndices->YT_MAIN_BODY2
+#define MI_SMALL_HELIX gpModelIndices->SMALL_HELIX
+#define MI_PT_BARRIER gpModelIndices->PT_BARRIER
+#define MI_SUBWAYGATE gpModelIndices->SUBWAYGATE
+#define MI_IN_PMBRIDRAMP3 gpModelIndices->IN_PMBRIDRAMP3
+#define MI_IN_PMBRIDG2_UPGS gpModelIndices->IN_PMBRIDG2_UPGS
+#define MI_IN_PMBRIDGE2 gpModelIndices->IN_PMBRIDGE2
+#define MI_IN_PMBRIDG1_UPGS gpModelIndices->IN_PMBRIDG1_UPGS
+#define MI_PM_LIGHTRIG3 gpModelIndices->PM_LIGHTRIG3
+#define MI_PM_LIGHTRIG1 gpModelIndices->PM_LIGHTRIG1
+#define MI_IN_PMSCAFF_UPS gpModelIndices->IN_PMSCAFF_UPS
+#define MI_IN_PM_CONCBLOK2 gpModelIndices->IN_PM_CONCBLOK2
+#define MI_IN_PMSCAFFH_NS gpModelIndices->IN_PMSCAFFH_NS
+#define MI_IN_PM_GRAVL_JMP gpModelIndices->IN_PM_GRAVL_JMP
+#define MI_IN_PM_SCAFFCOVR gpModelIndices->IN_PM_SCAFFCOVR
+#define MI_IN_PM_GIRDER2 gpModelIndices->IN_PM_GIRDER2
+#define MI_IN_PM_SCAFFH_WE gpModelIndices->IN_PM_SCAFFH_WE
+#define MI_IN_PM_SIXCONC2 gpModelIndices->IN_PM_SIXCONC2
+#define MI_IN_BMBRIDRAMP3 gpModelIndices->IN_BMBRIDRAMP3
+#define MI_IN_BMBRIDG2_UPGS gpModelIndices->IN_BMBRIDG2_UPGS
+#define MI_IN_BMBRIDGE2 gpModelIndices->IN_BMBRIDGE2
+#define MI_IN_BMBRIDG1_UPGS gpModelIndices->IN_BMBRIDG1_UPGS
+#define MI_BM_LIGHTRIG3 gpModelIndices->BM_LIGHTRIG3
+#define MI_BM_LIGHTRIG1 gpModelIndices->BM_LIGHTRIG1
+#define MI_IN_BMSCAFF_UPS gpModelIndices->IN_BMSCAFF_UPS
+#define MI_IN_BM_CONCBLOK2 gpModelIndices->IN_BM_CONCBLOK2
+#define MI_IN_BMSCAFFH_NS gpModelIndices->IN_BMSCAFFH_NS
+#define MI_IN_BM_GRAVL_JMP gpModelIndices->IN_BM_GRAVL_JMP
+#define MI_IN_BM_SCAFFCOVR gpModelIndices->IN_BM_SCAFFCOVR
+#define MI_IN_BM_GIRDER2 gpModelIndices->IN_BM_GIRDER2
+#define MI_IN_BM_SCAFFH_WE gpModelIndices->IN_BM_SCAFFH_WE
+#define MI_IN_BM_SIXCONC2 gpModelIndices->IN_BM_SIXCONC2
+#define MI_CRATE_SJL gpModelIndices->CRATE_SJL
+#define MI_DOOR1_SJL gpModelIndices->DOOR1_SJL
+#define MI_DOOR2_SJL gpModelIndices->DOOR2_SJL
+#define MI_SJL_PORTACABIN gpModelIndices->SJL_PORTACABIN
+#define MI_SJL_PORTACABINRED gpModelIndices->SJL_PORTACABINRED
+
#define MODELINDICES \
X("fire_hydrant", MI_FIRE_HYDRANT) \
+ X("fire_hydrant", MI_FIRE_HYDRANT) /* BUG: second time */ \
+ X("bagelstnd02", MI_BAGELSTAND2) \
+ X("fish01", MI_FISHSTALL01) \
+ X("fishstall02", MI_FISHSTALL02) \
+ X("fishstall03", MI_FISHSTALL03) \
+ X("fishstall04", MI_FISHSTALL04) \
+ X("taxisign", MI_TAXISIGN) \
X("phonesign", MI_PHONESIGN) \
X("noparkingsign1", MI_NOPARKINGSIGN1) \
X("bussign1", MI_BUSSIGN1) \
@@ -16,12 +599,17 @@
X("wastebin", MI_WASTEBIN) \
X("phonebooth1", MI_PHONEBOOTH1) \
X("parkingmeter", MI_PARKINGMETER) \
+ X("trafficlight1", MI_TRAFFICLIGHTS) \
+ X("tlight_post", MI_TLIGHT_POST) \
+ X("tlight_walk", MI_TLIGHT_WALK) \
+ X("tlight_box1", MI_TLIGHT_BOX1) \
+ X("tlight_box2", MI_TLIGHT_BOX2) \
X("parkingmeterg", MI_PARKINGMETER2) \
X("mall_fans", MI_MALLFAN) \
X("htl_fan_rotate_nt", MI_HOTELFAN_NIGHT) \
X("htl_fan_rotate_dy", MI_HOTELFAN_DAY) \
X("hotroomfan", MI_HOTROOMFAN) \
- X("trafficlight1", MI_TRAFFICLIGHTS) \
+ X("trafficlight1", MI_TRAFFICLIGHTS) /* BUG: second time */ \
X("MTraffic4", MI_TRAFFICLIGHTS_VERTICAL) \
X("MTraffic1", MI_TRAFFICLIGHTS_MIAMI) \
X("MTraffic2", MI_TRAFFICLIGHTS_TWOVERTICAL) \
@@ -31,47 +619,110 @@
X("doublestreetlght1", MI_DOUBLESTREETLIGHTS) \
X("Streetlamp1", MI_STREETLAMP1) \
X("Streetlamp2", MI_STREETLAMP2) \
+ X("rd_Road2A10", MI_ROADSFORROADBLOCKSSTART) \
+ X("rd_Road1A30", MI_ROADSFORROADBLOCKSEND) \
+ X("veg_tree1", MI_TREE1) \
X("veg_tree3", MI_TREE2) \
X("veg_treea1", MI_TREE3) \
+ X("veg_treenew01", MI_TREE4) \
+ X("veg_treenew05", MI_TREE5) \
X("veg_treeb1", MI_TREE6) \
+ X("veg_treenew10", MI_TREE7) \
X("veg_treea3", MI_TREE8) \
- X("doc_crane_cab0", MODELID_CRANE_1) \
- X("doc_crane_cab01", MODELID_CRANE_2) \
- X("doc_crane_cab02", MODELID_CRANE_3) \
- X("doc_crane_cab03", MODELID_CRANE_4) \
- X("boatcranelg0", MODELID_CRANE_5) \
- X("LODnetopa0", MODELID_CRANE_6) \
+ X("veg_treenew09", MI_TREE9) \
+ X("veg_treenew08", MI_TREE10) \
+ X("veg_treenew03", MI_TREE11) \
+ X("veg_treenew16", MI_TREE12) \
+ X("veg_treenew17", MI_TREE13) \
+ X("veg_treenew06", MI_TREE14) \
+ X("crusher_crane", MODELID_CRANE_1) \
X("package1", MI_COLLECTABLE1) \
X("Money", MI_MONEY) \
X("barrel1", MI_CARMINE) \
- X("dk_paynspraydoor", MI_GARAGEDOOR2) \
- X("dk_waretankdoor1", MI_GARAGEDOOR3) \
- X("hav_garagedoor1", MI_GARAGEDOOR4) \
- X("hav_garagedoor02", MI_GARAGEDOOR5) \
- X("hav_garagedoor03", MI_GARAGEDOOR6) \
- X("hav_garagedoor04", MI_GARAGEDOOR7) \
- X("lh_showdoor03", MI_GARAGEDOOR9) \
- X("lh_showdoor1", MI_GARAGEDOOR10) \
- X("lhtankdoor", MI_GARAGEDOOR11) \
- X("nbtgardoor", MI_GARAGEDOOR12) \
- X("dk_camjonesdoor", MI_GARAGEDOOR13) \
- X("nbtgardoor02", MI_GARAGEDOOR14) \
- X("dt_savedra", MI_GARAGEDOOR15) \
- X("dt_savedrb", MI_GARAGEDOOR16) \
- X("dk_bombdoor", MI_GARAGEDOOR18) \
- X("haiwshpnsdoor", MI_GARAGEDOOR19) \
- X("wshpnsdoor", MI_GARAGEDOOR20) \
- X("nbecpnsdoor", MI_GARAGEDOOR21) \
- X("nbtgardoor03", MI_GARAGEDOOR22) \
- X("dt_savedrc", MI_GARAGEDOOR23) \
- X("dt_savedrd", MI_GARAGEDOOR24) \
- X("man_frntstepGD", MI_GARAGEDOOR25) \
- X("svegrgedoor", MI_GARAGEDOOR26) \
+ X("oddjgaragdoor", MI_GARAGEDOOR1) \
+ X("bombdoor", MI_GARAGEDOOR2) \
+ X("door_bombshop", MI_GARAGEDOOR3) \
+ X("vheistlocdoor", MI_GARAGEDOOR4) \
+ X("door2_garage", MI_GARAGEDOOR5) \
+ X("ind_slidedoor", MI_GARAGEDOOR6) \
+ X("bankjobdoor", MI_GARAGEDOOR7) \
+ X("door_jmsgrage", MI_GARAGEDOOR9) \
+ X("ind_safeh_gdoor", MI_GARAGEDOOR10) \
+ X("door_sfehousegrge", MI_GARAGEDOOR11) \
+ X("shedgaragedoor", MI_GARAGEDOOR12) \
+ X("door4_garage", MI_GARAGEDOOR13) \
+ X("door_col_compnd_01", MI_GARAGEDOOR14) \
+ X("door_col_compnd_02", MI_GARAGEDOOR15) \
+ X("door_col_compnd_03", MI_GARAGEDOOR16) \
+ X("door_col_compnd_04", MI_GARAGEDOOR17) \
+ X("door_col_compnd_05", MI_GARAGEDOOR18) \
+ X("impex_door", MI_GARAGEDOOR19) \
+ X("SalvGarage", MI_GARAGEDOOR20) \
+ X("door3_garage", MI_GARAGEDOOR21) \
+ X("leveldoor2", MI_GARAGEDOOR22) \
+ X("double_garage_dr", MI_GARAGEDOOR23) \
+ X("amcogaragedoor", MI_GARAGEDOOR24) \
+ X("towergaragedoor1", MI_GARAGEDOOR25) \
+ X("towergaragedoor2", MI_GARAGEDOOR26) \
+ X("towergaragedoor3", MI_GARAGEDOOR27) \
+ X("plysve_gragedoor", MI_GARAGEDOOR28) \
+ X("impexpsubgrgdoor", MI_GARAGEDOOR29) \
+ X("Sub_sprayshopdoor", MI_GARAGEDOOR30) \
+ X("ind_plyrwoor", MI_GARAGEDOOR31) \
+ X("8ballsuburbandoor", MI_GARAGEDOOR32) \
+ X("door_nthgrage", MI_GARAGEDOOR33) \
+ X("hangardoor1", MI_GARAGEDOOR34) \
+ X("hangardoor2", MI_GARAGEDOOR35) \
+ X("neds_door", MI_GARAGEDOOR36) \
+ X("fs_wrhsedoor", MI_GARAGEDOOR37) \
+ X("jm_ContraGarage", MI_GARAGEDOOR38) \
+ X("jm_imp_SalvGarage", MI_GARAGEDOOR39) \
+ X("Testramp1", MI_TESTRAMP1) /* BUG: LCS used MI_TESTRAMP2 here */ \
+ X("Testramp2", MI_TESTRAMP2) \
X("barrel2", MI_NAUTICALMINE) \
+ X("crushercrush", MI_CRUSHERBODY) \
+ X("crushertop", MI_CRUSHERLID) \
+ X("donkeymag", MI_DONKEYMAG) \
+ X("bullion", MI_BULLION) \
+ X("floatpackge1", MI_FLOATPACKAGE1) \
X("briefcase", MI_BRIEFCASE) \
- X("wglasssmash", MI_GLASS1) \
+ X("chinabanner1", MI_CHINABANNER1) \
+ X("chinabanner2", MI_CHINABANNER2) \
+ X("chinabanner3", MI_CHINABANNER3) \
+ X("chinabanner4", MI_CHINABANNER4) \
+ X("iten_chinatown5", MI_CHINABANNER5) \
+ X("iten_chinatown7", MI_CHINABANNER6) \
+ X("iten_chinatown3", MI_CHINABANNER7) \
+ X("iten_chinatown2", MI_CHINABANNER8) \
+ X("iten_chinatown4", MI_CHINABANNER9) \
+ X("iten_washline01", MI_CHINABANNER10) \
+ X("iten_washline02", MI_CHINABANNER11) \
+ X("iten_washline03", MI_CHINABANNER12) \
+ X("chinalanterns", MI_CHINALANTERN) \
+ X("glassfx1", MI_GLASS1) \
+ X("glassfx2", MI_GLASS2) \
+ X("glassfx3", MI_GLASS3) \
+ X("glassfx4", MI_GLASS4) \
+ X("glassfx55", MI_GLASS5) \
+ X("glassfxsub1", MI_GLASS6) \
+ X("glassfxsub2", MI_GLASS7) \
X("glassfx_composh", MI_GLASS8) \
+ X("bridge_liftsec", MI_BRIDGELIFT) \
+ X("bridge_liftweight", MI_BRIDGEWEIGHT) \
+ X("subbridge_lift", MI_BRIDGEROADSEGMENT) \
+ X("flagsitaly", MI_ITALYBANNER1) \
+ X("small_helix", MI_SMALL_HELIX) \
X("barrel4", MI_EXPLODINGBARREL) \
+ X("Crate_sjl", MI_CRATE_SJL) \
+ X("Door1_sjl", MI_DOOR1_SJL) \
+ X("Door2_sjl", MI_DOOR2_SJL) \
+ X("SJL_PortaCabin", MI_SJL_PORTACABIN) \
+ X("SJL_PortaCabinred", MI_SJL_PORTACABINRED) \
+ X("megaDamage", MI_MEGADAMAGE) \
+ X("regenerator", MI_REGENERATOR) \
+ X("invisible", MI_INVISIBLE) \
+ X("good_car", MI_GOOD_CAR) \
+ X("bad_car", MI_BAD_CAR) \
X("adrenaline", MI_PICKUP_ADRENALINE) \
X("bodyarmour", MI_PICKUP_BODYARMOUR) \
X("info", MI_PICKUP_INFO) \
@@ -82,16 +733,57 @@
X("camerapickup", MI_PICKUP_CAMERA) \
X("bigdollar", MI_PICKUP_REVENUE) \
X("pickupsave", MI_PICKUP_SAVEGAME) \
+ X("clothesp", MI_PICKUP_CLOTHES) \
X("property_locked", MI_PICKUP_PROPERTY) \
X("property_fsale", MI_PICKUP_PROPERTY_FORSALE) \
- X("clothesp", MI_PICKUP_CLOTHES) \
X("bollardlight", MI_BOLLARDLIGHT) \
+ X("ca_sp1", MI_CA_SP1) \
+ X("ca_sp2", MI_CA_SP2) \
+ X("ca_sp3", MI_CA_SP3) \
+ X("ca_sp4", MI_CA_SP4) \
+ X("package1izzy", MI_PACKAGE1IZZY) \
+ X("magnet", MI_MAGNET) \
+ X("streetlamp1", MI_STREETLAMP1) \
+ X("streetlamp2", MI_STREETLAMP2) \
+ X("railtrax_lo4b", MI_RAILTRACKS) \
X("bar_barrier10", MI_FENCE) \
X("bar_barrier12", MI_FENCE2) \
X("petrolpump", MI_PETROLPUMP) \
X("washgaspump", MI_PETROLPUMP2) \
+ X("bodycast", MI_BODYCAST) \
+ X("izzy_confDoor", MI_IZZY_CONFDOOR) \
+ X("shipdoor", MI_SHIPDOOR) \
+ X("izzy_jdDoor", MI_IZZY_JDDOOR) \
+ X("izzy_jdDoor_slider", MI_IZZY_JDDOOR_SLIDER) \
+ X("litehouse_gate", MI_LITEHOUSE_GATE) \
+ X("coffee", MI_COFFEE) \
X("bouy", MI_BUOY) \
X("parktable1", MI_PARKTABLE) \
+ X("sbwy_tunl_start", MI_SUBWAY1) \
+ X("sbwy_tunl_bit", MI_SUBWAY2) \
+ X("sbwy_tunl_bend", MI_SUBWAY3) \
+ X("sbwy_tunl_cstm6", MI_SUBWAY4) \
+ X("sbwy_tunl_cstm7", MI_SUBWAY5) \
+ X("sbwy_tunl_cstm8", MI_SUBWAY6) \
+ X("sbwy_tunl_cstm10", MI_SUBWAY7) \
+ X("sbwy_tunl_cstm9", MI_SUBWAY8) \
+ X("sbwy_tunl_cstm11", MI_SUBWAY9) \
+ X("sbwy_tunl_cstm1", MI_SUBWAY10) \
+ X("sbwy_tunl_cstm2", MI_SUBWAY11) \
+ X("sbwy_tunl_cstm4", MI_SUBWAY12) \
+ X("sbwy_tunl_cstm3", MI_SUBWAY13) \
+ X("sbwy_tunl_cstm5", MI_SUBWAY14) \
+ X("subplatform_n2", MI_SUBWAY15) \
+ X("suby_tunl_start", MI_SUBWAY16) \
+ X("sbwy_tunl_start2", MI_SUBWAY17) \
+ X("indy_tunl_start", MI_SUBWAY18) \
+ X("indsubway03", MI_SUBPLATFORM_IND) \
+ X("comerside_subway", MI_SUBPLATFORM_COMS) \
+ X("subplatform", MI_SUBPLATFORM_COMS2) \
+ X("subplatform_n", MI_SUBPLATFORM_COMN) \
+ X("Otherside_subway", MI_SUBPLATFORM_SUB) \
+ X("subplatform_sub", MI_SUBPLATFORM_SUB2) \
+ X("files", MI_FILES) \
X("lamppost1", MI_LAMPPOST1) \
X("veg_palm04", MI_VEG_PALM01) \
X("veg_palwee02", MI_VEG_PALM02) \
@@ -107,10 +799,12 @@
X("telgrphpole02", MI_TELPOLE02) \
X("trafficlight1", MI_TRAFFICLIGHT01) \
X("parkbench1", MI_PARKBENCH) \
+ X("Money", MI_MONEY) \
X("plc_stinger", MI_PLC_STINGER) \
X("od_lightbeam", MI_LIGHTBEAM) \
X("ap_radar1_01", MI_AIRPORTRADAR) \
X("rcbomb", MI_RCBOMB) \
+ X("jm_salradio", MI_JM_SALRADIO) \
X("beachball", MI_BEACHBALL) \
X("sandcastle1", MI_SANDCASTLE1) \
X("sandcastle2", MI_SANDCASTLE2) \
@@ -138,11 +832,42 @@
X("blimp_night", MI_BLIMP_NIGHT) \
X("blimp_day", MI_BLIMP_DAY) \
X("yt_main_body", MI_YT_MAIN_BODY) \
- X("yt_main_body2", MI_YT_MAIN_BODY2)
+ X("pt_barrier", MI_PT_BARRIER) \
+ X("subwaygate", MI_SUBWAYGATE) \
+ X("in_PMbridramp3", MI_IN_PMBRIDRAMP3) \
+ X("in_PMbridg2_upgs", MI_IN_PMBRIDG2_UPGS) \
+ X("in_PMbridge2", MI_IN_PMBRIDGE2) \
+ X("in_PMbridg1_upgs", MI_IN_PMBRIDG1_UPGS) \
+ X("pm_lightrig3", MI_PM_LIGHTRIG3) \
+ X("pm_lightrig1", MI_PM_LIGHTRIG1) \
+ X("in_pmSCAFF_UPS", MI_IN_PMSCAFF_UPS) \
+ X("in_pm_concblok2", MI_IN_PM_CONCBLOK2) \
+ X("in_pmSCAFFH_ns", MI_IN_PMSCAFFH_NS) \
+ X("in_pm_gravl_jmp", MI_IN_PM_GRAVL_JMP) \
+ X("in_pm_scaffcovr", MI_IN_PM_SCAFFCOVR) \
+ X("in_pm_girder2", MI_IN_PM_GIRDER2) \
+ X("in_pm_scaffH_we", MI_IN_PM_SCAFFH_WE) \
+ X("in_pm_sixconc2", MI_IN_PM_SIXCONC2) \
+ X("in_BMbridramp3", MI_IN_BMBRIDRAMP3) \
+ X("in_BMbridg2_upgs", MI_IN_BMBRIDG2_UPGS) \
+ X("in_BMbridge2", MI_IN_BMBRIDGE2) \
+ X("in_BMbridg1_upgs", MI_IN_BMBRIDG1_UPGS) \
+ X("Bm_lightrig3", MI_BM_LIGHTRIG3) \
+ X("bm_lightrig1", MI_BM_LIGHTRIG1) \
+ X("in_BmSCAFF_UPS", MI_IN_BMSCAFF_UPS) \
+ X("in_Bm_concblok2", MI_IN_BM_CONCBLOK2) \
+ X("in_BmSCAFFH_ns", MI_IN_BMSCAFFH_NS) \
+ X("in_Bm_gravl_jmp", MI_IN_BM_GRAVL_JMP) \
+ X("in_Bm_scaffcovr", MI_IN_BM_SCAFFCOVR) \
+ X("in_Bm_girder2", MI_IN_BM_GIRDER2) \
+ X("in_Bm_scaffH_we", MI_IN_BM_SCAFFH_WE) \
+ X("in_Bm_sixconc2", MI_IN_BM_SIXCONC2)
-#define X(name, var) extern int16 var;
- MODELINDICES
-#undef X
+ /*X("yt_main_body2", MI_YT_MAIN_BODY2) \*/
+
+//#define X(name, var) extern int16 var;
+// MODELINDICES
+//#undef X
// and some hardcoded ones
// expand as needed
@@ -157,96 +882,87 @@ enum
MI_FIREMAN,
MI_MALE01,
- MI_HFYST = 9,
- MI_HFOST,
- MI_HMYST,
- MI_HMOST,
- MI_HFYRI,
- MI_HFORI,
- MI_HMYRI,
- MI_HMORI,
- MI_HFYBE,
- MI_HFOBE,
- MI_HMYBE,
- MI_HMOBE,
- MI_HFYBU,
- MI_HFYMD,
- MI_HFYCG,
- MI_HFYPR,
- MI_HFOTR,
- MI_HMOTR,
- MI_HMYAP,
- MI_HMOCA,
- MI_TAXI_D = MI_HMOCA,
- MI_BMODK,
- MI_BMYKR,
- MI_BFYST,
- MI_BFOST,
- MI_BMYST,
- MI_BMOST,
- MI_BFYRI,
- MI_BFORI,
- MI_BMYRI,
- MI_BFYBE,
- MI_BMYBE,
- MI_BFOBE,
- MI_BMOBE,
- MI_BMYBU,
- MI_BFYPR,
- MI_BFOTR,
- MI_BMOTR,
- MI_BMYPI,
- MI_BMYBB,
- MI_WMYCR,
- MI_WFYST,
- MI_WFOST,
- MI_WMYST,
- MI_WMOST,
- MI_WFYRI,
- MI_WFORI,
- MI_WMYRI,
- MI_WMORI,
- MI_WFYBE,
- MI_WMYBE,
- MI_WFOBE,
- MI_WMOBE,
- MI_WMYCW,
- MI_WMYGO,
- MI_WFOGO,
- MI_WMOGO,
- MI_WFYLG,
- MI_WMYLG,
- MI_WFYBU,
- MI_WMYBU,
- MI_WMOBU,
- MI_WFYPR,
- MI_WFOTR,
- MI_WMOTR,
- MI_WMYPI,
- MI_WMOCA,
- MI_WFYJG,
- MI_WMYJG,
- MI_WFYSK,
- MI_WMYSK,
- MI_WFYSH,
- MI_WFOSH,
- MI_JFOTO,
- MI_JMOTO,
+ MI_TAXI_D = 9,
+ MI_PIMP,
+ MI_CRIMINAL01,
+ MI_CRIMINAL02,
+ MI_MALE02,
+ MI_MALE03,
+ MI_FATMALE01,
+ MI_FATMALE02,
+ MI_FEMALE01,
+ MI_FEMALE02,
+ MI_FEMALE03,
+ MI_FATFEMALE01,
+ MI_FATFEMALE02,
+ MI_PROSTITUTE,
+ MI_PROSTITUTE2,
+ MI_P_MAN1,
+ MI_P_MAN2,
+ MI_P_WOM1,
+ MI_P_WOM2,
+ MI_CT_MAN1,
+ MI_CT_MAN2,
+ MI_CT_WOM1,
+ MI_CT_WOM2,
+ MI_LI_MAN1,
+ MI_LI_MAN2,
+ MI_LI_WOM1,
+ MI_LI_WOM2,
+ MI_DOCKER1,
+ MI_DOCKER2,
+ MI_SCUM_MAN,
+ MI_SCUM_WOM,
+ MI_WORKER1,
+ MI_WORKER2,
+ MI_B_MAN1,
+ MI_B_MAN2,
+ MI_B_MAN3,
+ MI_B_WOM1,
+ MI_B_WOM2,
+ MI_B_WOM3,
+ MI_MOD_MAN,
+ MI_MOD_WOM,
+ MI_ST_MAN,
+ MI_ST_WOM,
+ MI_FAN_MAN1,
+ MI_FAN_MAN2,
+ MI_FAN_WOM,
+ MI_HOS_MAN,
+ MI_HOS_WOM,
+ MI_CONST1,
+ MI_CONST2,
+ MI_SHOPPER1,
+ MI_SHOPPER2,
+ MI_SHOPPER3,
+ MI_STUD_MAN,
+ MI_STUD_WOM,
+ MI_CAS_MAN,
+ MI_CAS_WOM,
+ MI_CAMP_MAN,
+ MI_CAMP_WOM,
+ MI_HITMAN,
- MI_CBA,// = 83,
- MI_CBB,
- MI_HNA,
- MI_HNB,
- MI_SGA,
- MI_SGB,
- MI_CLA,
- MI_CLB,
- MI_GDA,
- MI_GDB,
- MI_BKA,
- MI_BKB,
- MI_PGA,
- MI_PGB,
+ MI_JFOTO = 77,
+ MI_JMOTO,
+ MI_GANG01,
+ MI_GANG02,
+ MI_GANG03,
+ MI_GANG04,
+ MI_GANG05,
+ MI_GANG06,
+ MI_GANG07,
+ MI_GANG08,
+ MI_GANG09,
+ MI_GANG10,
+ MI_GANG11,
+ MI_GANG12,
+ MI_GANG13,
+ MI_GANG14,
+ MI_GANG15,
+ MI_GANG16,
+ MI_GANG17,
+ MI_GANG18,
MI_VICE1,
MI_VICE2,
MI_VICE3,
@@ -283,19 +999,20 @@ enum
MI_LAST_PED = MI_SPECIAL21,
MI_FIRST_VEHICLE,
- MI_LANDSTAL = MI_FIRST_VEHICLE,
+ MI_SPIDER = MI_FIRST_VEHICLE,
+ MI_LANDSTAL,
MI_IDAHO,
MI_STINGER,
MI_LINERUN,
MI_PEREN,
MI_SENTINEL,
- MI_RIO,
+ MI_PATRIOT,
MI_FIRETRUCK,
MI_TRASH,
MI_STRETCH,
MI_MANANA,
MI_INFERNUS,
- MI_VOODOO,
+ MI_BLISTA,
MI_PONY,
MI_MULE,
MI_CHEETAH,
@@ -304,100 +1021,132 @@ enum
MI_MOONBEAM,
MI_ESPERANT,
MI_TAXI,
- MI_WASHING,
+ MI_KURUMA,
MI_BOBCAT,
MI_MRWHOOP,
MI_BFINJECT,
- MI_HUNTER,
+ MI_HEARSE,
MI_POLICE,
MI_ENFORCER,
MI_SECURICA,
MI_BANSHEE,
- MI_PREDATOR,
MI_BUS,
MI_RHINO,
MI_BARRACKS,
- MI_CUBAN,
- MI_CHOPPER,
- MI_ANGEL,
+ MI_DODO,
MI_COACH,
MI_CABBIE,
MI_STALLION,
MI_RUMPO,
MI_RCBANDIT,
- MI_ROMERO,
- MI_PACKER,
- MI_SENTXS,
- MI_ADMIRAL,
- MI_SQUALO,
- MI_SEASPAR,
- MI_PIZZABOY,
- MI_GANGBUR,
- MI_AIRTRAIN,
- MI_DEADDODO,
- MI_SPEEDER,
- MI_REEFER,
- MI_TROPIC,
+ MI_BELLYUP,
+ MI_MRWONGS,
+ MI_MAFIA,
+ MI_YARDIE,
+ MI_YAKUZA,
+ MI_DIABLOS,
+ MI_COLUMB,
+ MI_HOODS,
+ MI_PANLANT,
MI_FLATBED,
MI_YANKEE,
- MI_CADDY,
- MI_ZEBRA,
+ MI_BORGNINE,
MI_TOPFUN,
- MI_SKIMMER,
+ MI_CAMPVAN,
+ MI_BALLOT,
+ MI_SHELBY,
+ MI_PONTIAC,
+ MI_ESPRIT,
+ MI_AMMOTRUK,
+ MI_HOTROD,
+ MI_SINDACCO_CAR,
+ MI_FORELLI_CAR,
+ MI_FERRY,
+ MI_GHOST,
+ MI_SPEEDER,
+ MI_REEFER,
+ MI_PREDATOR,
+ MI_TRAIN,
+ MI_ESCAPE,
+ MI_CHOPPER,
+ MI_AIRTRAIN,
+ MI_DEADDODO,
+ MI_ANGEL,
+ MI_PIZZABOY,
+ MI_NOODLEBOY,
MI_PCJ600,
MI_FAGGIO,
MI_FREEWAY,
- MI_RCBARON,
+ MI_ANGEL2,
+ MI_SANCHEZ2,
+ MI_SANCHEZ,
+ MI_RCGOBLIN,
MI_RCRAIDER,
+ MI_HUNTER,
+ MI_MAVERICK,
+ MI_POLMAV,
+ MI_VCNMAV,
+
+ MI_LAST_VEHICLE = MI_VCNMAV,
+
+
+ // these indices are original
+ MI_SKIMMER = -1000,
+ MI_CADDY = -999,
+ MI_TROPIC = -992,
+ MI_COASTG = -991,
+ MI_MARQUIS = -990,
+ MI_RIO = -988,
+ MI_DINGHY = -987,
+ MI_SEASPAR = -986,
+ MI_SPARROW = -985,
+ MI_VOODOO = -984,
+ MI_FBIRANCH = -982,
+ MI_SANDKING = -981,
+ MI_SQUALO = -974,
+ MI_PHEONIX = -973,
+ MI_COMET = -972,
+ MI_KAUFMAN = -967,
+ MI_BAGGAGE = -963,
+ MI_RCBARON = -955,
+ MI_VICECHEE = -954,
+
+ // 7 of the following MIs originally are in this set: {-998, -996, -979, -978, -977, -975, -969}
+ MI_WASHING = -3000,
+ MI_ADMIRAL,
MI_GLENDALE,
MI_OCEANIC,
- MI_SANCHEZ,
- MI_SPARROW,
- MI_PATRIOT,
- MI_LOVEFIST,
- MI_COASTG,
- MI_DINGHY,
- MI_HERMES,
+ MI_REGINA,
MI_SABRE,
+ MI_VIRGO,
+ MI_GREENWOO,
+
+ // 22 of the following MIs originally are in this set:
+ // {-997, -995, -994, -993, -989, -983, -980, -976, -971, -970, -968, -966, -965, -964, -963, -962, -961, -960, -959, -958, -957, -956}
+ MI_JETMAX = -2000,
+ MI_CUBAN,
+ MI_RANCHER,
+ MI_BLISTAC,
MI_SABRETUR,
- MI_PHEONIX,
- MI_WALTON,
- MI_REGINA,
- MI_COMET,
MI_DELUXO,
+ MI_HOTRING,
+ MI_SENTXS,
+ MI_HERMES,
+ MI_LOVEFIST,
+ MI_GANGBUR,
MI_BURRITO,
MI_SPAND,
- MI_MARQUIS,
- MI_BAGGAGE,
- MI_KAUFMAN,
- MI_MAVERICK,
- MI_VCNMAV,
- MI_RANCHER,
- MI_FBIRANCH,
- MI_VIRGO,
- MI_GREENWOO,
- MI_JETMAX,
- MI_HOTRING,
- MI_SANDKING,
- MI_BLISTAC,
- MI_POLMAV,
+ MI_PACKER,
+ MI_WALTON,
MI_BOXVILLE,
MI_BENSON,
MI_MESA,
- MI_RCGOBLIN,
MI_HOTRINA,
MI_HOTRINB,
MI_BLOODRA,
MI_BLOODRB,
- MI_VICECHEE,
-
- // HACK
- MI_TRAIN = -1,
- MI_DODO = -2,
- MI_LAST_VEHICLE = MI_VICECHEE,
-
- MI_WHEEL_RIM,
+ MI_WHEEL_RIM = 237,
MI_WHEEL_OFFROAD,
MI_WHEEL_TRUCK,
@@ -458,14 +1207,18 @@ enum
MI_FINGERS,
MI_MINIGUN2,
- MI_CUTOBJ01,// = 295,
+ MI_CUTOBJ01 = 120,
MI_CUTOBJ02,
MI_CUTOBJ03,
MI_CUTOBJ04,
MI_CUTOBJ05,
+ MI_CUTOBJ06,
+ MI_CUTOBJ07,
+ MI_CUTOBJ08,
+ MI_CUTOBJ09,
+ MI_CUTOBJ10,
-
- NUM_DEFAULT_MODELS,// = 300
+ NUM_DEFAULT_MODELS = 300
};
enum{
@@ -519,11 +1272,7 @@ IsLightThatNeedsRepositioning(int16 id)
return id == MI_SINGLESTREETLIGHTS1 ||
id == MI_SINGLESTREETLIGHTS2 ||
id == MI_SINGLESTREETLIGHTS3 ||
- id == MI_TRAFFICLIGHTS_MIAMI ||
- id == MI_TRAFFICLIGHTS_TWOVERTICAL ||
- id == MI_MLAMPPOST ||
- id == MI_STREETLAMP1 ||
- id == MI_STREETLAMP2;
+ id == MI_DOUBLESTREETLIGHTS;
}
inline bool
@@ -535,7 +1284,9 @@ IsLightObject(int16 id)
id == MI_SINGLESTREETLIGHTS2 ||
id == MI_SINGLESTREETLIGHTS3 ||
id == MI_DOUBLESTREETLIGHTS ||
- id == MI_TRAFFICLIGHTS_TWOVERTICAL;
+ id == MI_TRAFFICLIGHTS_TWOVERTICAL ||
+ id == MI_TRAFFICLIGHTS ||
+ id == MI_FENCE;
}
inline bool
@@ -554,6 +1305,15 @@ IsLampPost(int16 id)
}
inline bool
+IsLCSTrafficLight(int16 id)
+{
+ return id == MI_TLIGHT_POST ||
+ id == MI_TLIGHT_WALK ||
+ id == MI_TLIGHT_BOX1 ||
+ id == MI_TLIGHT_BOX2;
+}
+
+inline bool
IsBodyPart(int16 id)
{
return id == MI_BODYPARTA || id == MI_BODYPARTB;
@@ -567,24 +1327,26 @@ IsPedModel(int16 id)
inline bool
IsPalmTreeModel(int16 id)
{
- return id == MI_VEG_PALM01 ||
- id == MI_VEG_PALM02 ||
- id == MI_VEG_PALM03 ||
- id == MI_VEG_PALM04 ||
- id == MI_VEG_PALM05 ||
- id == MI_VEG_PALM06 ||
- id == MI_VEG_PALM07 ||
- id == MI_VEG_PALM08;
+ return false;
}
inline bool
IsTreeModel(int16 id)
{
- return id == MI_TREE2 ||
+ return id == MI_TREE1 ||
+ id == MI_TREE2 ||
id == MI_TREE3 ||
+ id == MI_TREE4 ||
+ id == MI_TREE5 ||
id == MI_TREE6 ||
+ id == MI_TREE7 ||
id == MI_TREE8 ||
- IsPalmTreeModel(id);
+ id == MI_TREE9 ||
+ id == MI_TREE10 ||
+ id == MI_TREE11 ||
+ id == MI_TREE12 ||
+ id == MI_TREE13 ||
+ id == MI_TREE14;
}
inline bool
diff --git a/src/modelinfo/ModelInfo.cpp b/src/modelinfo/ModelInfo.cpp
index 41515e20..2f2bf8bc 100644
--- a/src/modelinfo/ModelInfo.cpp
+++ b/src/modelinfo/ModelInfo.cpp
@@ -4,8 +4,10 @@
#include "TempColModels.h"
#include "ModelIndices.h"
#include "ModelInfo.h"
+#include "KeyGen.h"
-CBaseModelInfo *CModelInfo::ms_modelInfoPtrs[MODELINFOSIZE];
+CBaseModelInfo **CModelInfo::ms_modelInfoPtrs;
+int32 CModelInfo::msNumModelInfos;
CStore<CSimpleModelInfo, SIMPLEMODELSIZE> CModelInfo::ms_simpleModelStore;
CStore<CTimeModelInfo, TIMEMODELSIZE> CModelInfo::ms_timeModelStore;
@@ -15,6 +17,8 @@ CStore<CPedModelInfo, PEDMODELSIZE> CModelInfo::ms_pedModelStore;
CStore<CVehicleModelInfo, VEHICLEMODELSIZE> CModelInfo::ms_vehicleModelStore;
CStore<C2dEffect, TWODFXSIZE> CModelInfo::ms_2dEffectStore;
+C2dEffect *gp2dEffects;
+
void
CModelInfo::Initialise(void)
{
@@ -29,9 +33,12 @@ CModelInfo::Initialise(void)
debug("sizeof PedModelStore %d\n", sizeof(ms_pedModelStore));
debug("sizeof 2deffectsModelStore %d\n", sizeof(ms_2dEffectStore));
+ ms_modelInfoPtrs = new CBaseModelInfo*[MODELINFOSIZE];
+ msNumModelInfos = MODELINFOSIZE;
for(i = 0; i < MODELINFOSIZE; i++)
ms_modelInfoPtrs[i] = nil;
ms_2dEffectStore.Clear();
+ gp2dEffects = ms_2dEffectStore.store;
ms_simpleModelStore.Clear();
ms_timeModelStore.Clear();
ms_weaponModelStore.Clear();
@@ -107,13 +114,13 @@ CModelInfo::ShutDown(void)
for(i = 0; i < ms_2dEffectStore.allocPtr; i++)
ms_2dEffectStore.store[i].Shutdown();
- ms_2dEffectStore.Clear();
ms_simpleModelStore.Clear();
ms_timeModelStore.Clear();
ms_weaponModelStore.Clear();
- ms_pedModelStore.Clear();
ms_clumpModelStore.Clear();
ms_vehicleModelStore.Clear();
+ ms_pedModelStore.Clear();
+ ms_2dEffectStore.Clear();
}
CSimpleModelInfo*
@@ -184,10 +191,11 @@ CModelInfo::AddVehicleModel(int id)
CBaseModelInfo*
CModelInfo::GetModelInfo(const char *name, int *id)
{
+ uint32 hashKey = CKeyGen::GetUppercaseKey(name);
CBaseModelInfo *modelinfo;
- for(int i = 0; i < MODELINFOSIZE; i++){
+ for(int i = 0; i < msNumModelInfos; i++){
modelinfo = CModelInfo::ms_modelInfoPtrs[i];
- if(modelinfo && !CGeneral::faststricmp(modelinfo->GetModelName(), name)){
+ if(modelinfo && hashKey == modelinfo->GetNameHashKey()){
if(id)
*id = i;
return modelinfo;
@@ -199,51 +207,80 @@ CModelInfo::GetModelInfo(const char *name, int *id)
CBaseModelInfo*
CModelInfo::GetModelInfo(const char *name, int minIndex, int maxIndex)
{
+ uint32 hashKey = CKeyGen::GetUppercaseKey(name);
if (minIndex > maxIndex)
return 0;
CBaseModelInfo *modelinfo;
for(int i = minIndex; i <= maxIndex; i++){
modelinfo = CModelInfo::ms_modelInfoPtrs[i];
- if(modelinfo && !CGeneral::faststricmp(modelinfo->GetModelName(), name))
+ if(modelinfo && hashKey == modelinfo->GetNameHashKey())
return modelinfo;
}
return nil;
}
+CBaseModelInfo*
+CModelInfo::GetModelInfoFromHashKey(uint32 hashKey, int *id)
+{
+ CBaseModelInfo *modelinfo;
+ for(int i = 0; i < msNumModelInfos; i++){
+ modelinfo = CModelInfo::ms_modelInfoPtrs[i];
+ if(modelinfo && hashKey == modelinfo->GetNameHashKey()){
+ if(id)
+ *id = i;
+ return modelinfo;
+ }
+ }
+ return nil;
+}
+
bool
CModelInfo::IsBoatModel(int32 id)
{
- return GetModelInfo(id)->GetModelType() == MITYPE_VEHICLE &&
- ((CVehicleModelInfo*)GetModelInfo(id))->m_vehicleType == VEHICLE_TYPE_BOAT;
+ CBaseModelInfo *mi = GetModelInfo(id);
+ return mi && mi->GetModelType() == MITYPE_VEHICLE &&
+ ((CVehicleModelInfo*)mi)->m_vehicleType == VEHICLE_TYPE_BOAT;
}
bool
CModelInfo::IsBikeModel(int32 id)
{
- return GetModelInfo(id)->GetModelType() == MITYPE_VEHICLE &&
- ((CVehicleModelInfo*)GetModelInfo(id))->m_vehicleType == VEHICLE_TYPE_BIKE;
+ CBaseModelInfo *mi = GetModelInfo(id);
+ return mi && mi->GetModelType() == MITYPE_VEHICLE &&
+ ((CVehicleModelInfo*)mi)->m_vehicleType == VEHICLE_TYPE_BIKE;
}
bool
CModelInfo::IsCarModel(int32 id)
{
- return GetModelInfo(id)->GetModelType() == MITYPE_VEHICLE &&
- ((CVehicleModelInfo*)GetModelInfo(id))->m_vehicleType == VEHICLE_TYPE_CAR;
+ CBaseModelInfo *mi = GetModelInfo(id);
+ return mi && mi->GetModelType() == MITYPE_VEHICLE &&
+ ((CVehicleModelInfo*)mi)->m_vehicleType == VEHICLE_TYPE_CAR;
+}
+
+bool
+CModelInfo::IsTrainModel(int32 id)
+{
+ CBaseModelInfo *mi = GetModelInfo(id);
+ return mi && mi->GetModelType() == MITYPE_VEHICLE &&
+ ((CVehicleModelInfo*)mi)->m_vehicleType == VEHICLE_TYPE_TRAIN;
}
bool
CModelInfo::IsHeliModel(int32 id)
{
- return GetModelInfo(id)->GetModelType() == MITYPE_VEHICLE &&
- ((CVehicleModelInfo*)GetModelInfo(id))->m_vehicleType == VEHICLE_TYPE_HELI;
+ CBaseModelInfo *mi = GetModelInfo(id);
+ return mi && mi->GetModelType() == MITYPE_VEHICLE &&
+ ((CVehicleModelInfo*)mi)->m_vehicleType == VEHICLE_TYPE_HELI;
}
bool
CModelInfo::IsPlaneModel(int32 id)
{
- return GetModelInfo(id)->GetModelType() == MITYPE_VEHICLE &&
- ((CVehicleModelInfo*)GetModelInfo(id))->m_vehicleType == VEHICLE_TYPE_PLANE;
+ CBaseModelInfo *mi = GetModelInfo(id);
+ return mi && mi->GetModelType() == MITYPE_VEHICLE &&
+ ((CVehicleModelInfo*)mi)->m_vehicleType == VEHICLE_TYPE_PLANE;
}
void
@@ -251,8 +288,48 @@ CModelInfo::ReInit2dEffects()
{
ms_2dEffectStore.Clear();
- for (int i = 0; i < MODELINFOSIZE; i++) {
+ for (int i = 0; i < msNumModelInfos; i++) {
if (ms_modelInfoPtrs[i])
ms_modelInfoPtrs[i]->Init2dEffects();
}
}
+
+void
+CModelInfo::Load(uint32 numModelInfos, CBaseModelInfo **modelInfos)
+{
+ int i;
+
+ msNumModelInfos = numModelInfos;
+ ms_modelInfoPtrs = modelInfos;
+ for(i = 0; i < msNumModelInfos; i++)
+ if(ms_modelInfoPtrs[i] && ms_modelInfoPtrs[i]->GetModelType() == MITYPE_VEHICLE &&
+ ms_modelInfoPtrs[i]->GetRwObject())
+ ((CVehicleModelInfo*)ms_modelInfoPtrs[i])->SetAtomicRenderCallbacks();
+}
+
+void
+CModelInfo::Load2dEffects(uint32 numEffects, C2dEffect *effects)
+{
+ ms_2dEffectStore.allocPtr = numEffects;
+ gp2dEffects = effects;
+}
+
+CModelInfo*
+CModelInfo::Write(base::cRelocatableChunkWriter &writer)
+{
+ uint32 i;
+ uint32 numModelInfos;
+
+ for(numModelInfos = msNumModelInfos; ms_modelInfoPtrs[numModelInfos-1] == nil; numModelInfos--);
+ writer.AllocateRaw(ms_modelInfoPtrs, sizeof(void*)*numModelInfos, sizeof(void*), false, true);
+ for(i = 0; i < numModelInfos; i++)
+ if(ms_modelInfoPtrs[i]){
+ writer.AddPatch(ms_modelInfoPtrs[i]);
+ ms_modelInfoPtrs[i]->Write(writer);
+ }
+
+ resNumModelInfos = numModelInfos;
+ resModelInfoPtrs = ms_modelInfoPtrs;
+
+ return this;
+}
diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h
index a0ee0015..60a5e98f 100644
--- a/src/modelinfo/ModelInfo.h
+++ b/src/modelinfo/ModelInfo.h
@@ -8,11 +8,15 @@
#include "ClumpModelInfo.h"
#include "PedModelInfo.h"
#include "VehicleModelInfo.h"
+#include "XtraCompsModelInfo.h"
#include "templates.h"
+extern C2dEffect *gp2dEffects;
+
class CModelInfo
{
- static CBaseModelInfo *ms_modelInfoPtrs[MODELINFOSIZE];
+ static CBaseModelInfo **ms_modelInfoPtrs;
+ static int32 msNumModelInfos;
static CStore<CSimpleModelInfo, SIMPLEMODELSIZE> ms_simpleModelStore;
static CStore<CTimeModelInfo, TIMEMODELSIZE> ms_timeModelStore;
static CStore<CWeaponModelInfo, WEAPONMODELSIZE> ms_weaponModelStore;
@@ -22,6 +26,10 @@ class CModelInfo
static CStore<C2dEffect, TWODFXSIZE> ms_2dEffectStore;
public:
+ // these fields are in the resource image
+ int32 resNumModelInfos;
+ CBaseModelInfo **resModelInfoPtrs;
+
static void Initialise(void);
static void ShutDown(void);
@@ -33,12 +41,18 @@ public:
static CVehicleModelInfo *AddVehicleModel(int id);
static CStore<C2dEffect, TWODFXSIZE> &Get2dEffectStore(void) { return ms_2dEffectStore; }
+ static C2dEffect *Get2dEffect(int32 id) { return &gp2dEffects[id]; }
+ static int32 Get2dEffectIndex(C2dEffect *effect) { return effect - gp2dEffects; }
+ static int32 GetNumModelInfos(void) { return msNumModelInfos; }
static CBaseModelInfo *GetModelInfo(const char *name, int *id);
static CBaseModelInfo *GetModelInfo(int id){
+ if(id < 0 || id >= msNumModelInfos)
+ return nil;
return ms_modelInfoPtrs[id];
}
static CBaseModelInfo *GetModelInfo(const char *name, int minIndex, int maxIndex);
+ static CBaseModelInfo *GetModelInfoFromHashKey(uint32 hashKey, int *id);
static CColModel *GetColModel(int id){
return ms_modelInfoPtrs[id]->GetColModel();
}
@@ -46,7 +60,12 @@ public:
static bool IsBoatModel(int32 id);
static bool IsBikeModel(int32 id);
static bool IsCarModel(int32 id);
+ static bool IsTrainModel(int32 id);
static bool IsHeliModel(int32 id);
static bool IsPlaneModel(int32 id);
static void ReInit2dEffects();
+
+ static void Load(uint32 numModelInfos, CBaseModelInfo **modelInfos);
+ static void Load2dEffects(uint32 numEffects, C2dEffect *effects);
+ CModelInfo *Write(base::cRelocatableChunkWriter &writer);
};
diff --git a/src/modelinfo/PedModelInfo.cpp b/src/modelinfo/PedModelInfo.cpp
index 25b260d3..1d519b10 100644
--- a/src/modelinfo/PedModelInfo.cpp
+++ b/src/modelinfo/PedModelInfo.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "RwHelper.h"
#include "General.h"
#include "Bones.h"
@@ -9,12 +10,19 @@
#include "VisibilityPlugins.h"
#include "ModelInfo.h"
#include "custompipes.h"
+#include "Streaming.h"
+#include "Leeds.h"
+#include "TempColModels.h"
+
+base::cRelocatableChunkClassInfo CPedModelInfo::msClassInfo("CPedModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CPedModelInfo CPedModelInfo::msClassInstance;
void
CPedModelInfo::DeleteRwObject(void)
{
+ CStreaming::UnregisterPointer(&m_hitColModel, 2);
CClumpModelInfo::DeleteRwObject();
- if(m_hitColModel)
+ if(!gUseChunkFiles && m_hitColModel)
delete m_hitColModel;
m_hitColModel = nil;
}
@@ -41,13 +49,15 @@ CPedModelInfo::SetClump(RpClump *clump)
#ifdef EXTENDED_PIPELINES
CustomPipes::AttachRimPipe(clump);
#endif
+ if(!IsClumpSkinned(clump))
+ return;
CClumpModelInfo::SetClump(clump);
SetFrameIds(m_pPedIds); // not needed in VC actually
if(m_hitColModel == nil)
CreateHitColModelSkinned(clump);
RpClumpForAllAtomics(m_clump, SetAtomicRendererCB, (void*)CVisibilityPlugins::RenderPedCB);
- if(strcmp(GetModelName(), "player") == 0)
- RpClumpForAllAtomics(m_clump, SetAtomicRendererCB, (void*)CVisibilityPlugins::RenderPlayerCB);
+ //if(strcmp(GetModelName(), "player") == 0)
+ // RpClumpForAllAtomics(m_clump, SetAtomicRendererCB, (void*)CVisibilityPlugins::RenderPlayerCB);
}
struct ColNodeInfo
@@ -73,46 +83,27 @@ ColNodeInfo m_pColNodeInfos[NUMPEDINFONODES] = {
{ nil, PED_FOOTR, PEDPIECE_RIGHTLEG, 0.0f, 0.15f, 0.15f },
};
-void
+bool
CPedModelInfo::CreateHitColModelSkinned(RpClump *clump)
{
- RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(clump);
CColModel *colmodel = new CColModel;
CColSphere *spheres = (CColSphere*)RwMalloc(NUMPEDINFONODES*sizeof(CColSphere));
- RwFrame *root = RpClumpGetFrame(m_clump);
- RwMatrix *invmat = RwMatrixCreate();
- RwMatrix *mat = RwMatrixCreate();
- RwMatrixInvert(invmat, RwFrameGetMatrix(RpClumpGetFrame(clump)));
for(int i = 0; i < NUMPEDINFONODES; i++){
- *mat = *invmat;
-
- // From LCS. Otherwise gives FPE
-#ifdef FIX_BUGS
- spheres[i].center = CVector(0.0f, 0.0f, 0.0f);
-#else
- int id = ConvertPedNode2BoneTag(m_pColNodeInfos[i].pedNode); // this is wrong, wtf R* ???
- int idx = RpHAnimIDGetIndex(hier, id);
-
- // This doesn't really work as the positions are not initialized yet
- RwMatrixTransform(mat, &RpHAnimHierarchyGetMatrixArray(hier)[idx], rwCOMBINEPRECONCAT);
- RwV3d pos = { 0.0f, 0.0f, 0.0f };
- RwV3dTransformPoints(&pos, &pos, 1, mat);
-
- spheres[i].center = pos + CVector(m_pColNodeInfos[i].x, 0.0f, m_pColNodeInfos[i].z);
-#endif
+ spheres[i].center.x = 0.0f;
+ spheres[i].center.y = 0.0f;
+ spheres[i].center.z = 0.0f;
spheres[i].radius = m_pColNodeInfos[i].radius;
spheres[i].surface = SURFACE_PED;
spheres[i].piece = m_pColNodeInfos[i].pieceType;
}
- RwMatrixDestroy(invmat);
- RwMatrixDestroy(mat);
colmodel->spheres = spheres;
colmodel->numSpheres = NUMPEDINFONODES;
colmodel->boundingSphere.Set(2.0f, CVector(0.0f, 0.0f, 0.0f));
colmodel->boundingBox.Set(CVector(-0.5f, -0.5f, -1.2f), CVector(0.5f, 0.5f, 1.2f));
colmodel->level = LEVEL_GENERIC;
m_hitColModel = colmodel;
+ return true;
}
CColModel*
@@ -120,28 +111,27 @@ CPedModelInfo::AnimatePedColModelSkinned(RpClump *clump)
{
if(m_hitColModel == nil){
CreateHitColModelSkinned(clump);
+#ifndef FIX_BUGS
return m_hitColModel;
+#endif
+ // we should really animate this now
}
- RwMatrix *invmat, *mat;
+ RwMatrix invmat, mat;
CColSphere *spheres = m_hitColModel->spheres;
RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(clump);
- invmat = RwMatrixCreate();
- mat = RwMatrixCreate();
- RwMatrixInvert(invmat, RwFrameGetMatrix(RpClumpGetFrame(clump)));
+ RwMatrixInvert(&invmat, RwFrameGetMatrix(RpClumpGetFrame(clump)));
for(int i = 0; i < NUMPEDINFONODES; i++){
- *mat = *invmat;
+ mat = invmat;
int id = ConvertPedNode2BoneTag(m_pColNodeInfos[i].pedNode);
int idx = RpHAnimIDGetIndex(hier, id);
- RwMatrixTransform(mat, &RpHAnimHierarchyGetMatrixArray(hier)[idx], rwCOMBINEPRECONCAT);
- RwV3d pos = { 0.0f, 0.0f, 0.0f };
- RwV3dTransformPoints(&pos, &pos, 1, mat);
+ RwMatrixTransform(&mat, &RpHAnimHierarchyGetMatrixArray(hier)[idx], rwCOMBINEPRECONCAT);
+ RwV3d pos = { 0.0f, 0.0f, 0.0f }; // actually CVector
+ RwV3dTransformPoints(&pos, &pos, 1, &mat);
spheres[i].center = pos + CVector(m_pColNodeInfos[i].x, 0.0f, m_pColNodeInfos[i].z);
}
- RwMatrixDestroy(invmat);
- RwMatrixDestroy(mat);
return m_hitColModel;
}
@@ -159,10 +149,71 @@ CPedModelInfo::AnimatePedColModelSkinnedWorld(RpClump *clump)
int idx = RpHAnimIDGetIndex(hier, id);
mat = &RpHAnimHierarchyGetMatrixArray(hier)[idx];
- RwV3d pos = { 0.0f, 0.0f, 0.0f };
+ RwV3d pos = { 0.0f, 0.0f, 0.0f }; // actually CVector
RwV3dTransformPoints(&pos, &pos, 1, mat);
spheres[i].center = pos + CVector(m_pColNodeInfos[i].x, 0.0f, m_pColNodeInfos[i].z);
}
return m_hitColModel;
}
+
+
+struct PedChunk
+{
+ CColModel *colmodel;
+ RpClump *clump;
+};
+
+void
+CPedModelInfo::LoadModel(void *data, const void *chunk)
+{
+ PedChunk *chk = (PedChunk*)data;
+ m_hitColModel = chk->colmodel;
+ CStreaming::RegisterPointer(&m_hitColModel, 2, true);
+ CClumpModelInfo::LoadModel(chk->clump, chunk);
+}
+
+void
+CPedModelInfo::Write(base::cRelocatableChunkWriter &writer)
+{
+ SetColModel(&gpTempColModels->ms_colModelPed1);
+ CClumpModelInfo::Write(writer);
+ if(m_hitColModel){
+ writer.AddPatch(&m_hitColModel);
+ m_hitColModel->Write(writer, true);
+ }
+}
+
+void*
+CPedModelInfo::WriteModel(base::cRelocatableChunkWriter &writer)
+{
+ PedChunk *chunk = new PedChunk; // LEAK
+ chunk->colmodel = nil;
+ chunk->clump = nil;
+ writer.AllocateRaw(chunk, sizeof(*chunk), sizeof(void*), false, true);
+
+ chunk->clump = (RpClump*)CClumpModelInfo::WriteModel(writer);
+ if(chunk->clump)
+ writer.AddPatch(&chunk->clump);
+
+ chunk->colmodel = m_hitColModel;
+ if(chunk->colmodel){
+ writer.AddPatch(&chunk->colmodel);
+ chunk->colmodel->Write(writer, true);
+ }
+ return nil;
+}
+
+void
+CPedModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CPedModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/PedModelInfo.h b/src/modelinfo/PedModelInfo.h
index 79bd7eaa..7baa2bd8 100644
--- a/src/modelinfo/PedModelInfo.h
+++ b/src/modelinfo/PedModelInfo.h
@@ -38,6 +38,8 @@ public:
CColModel *m_hitColModel;
int8 radio1, radio2;
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CPedModelInfo msClassInstance;
static RwObjectNameIdAssocation m_pPedIds[PED_NODE_MAX];
CPedModelInfo(void) : CClumpModelInfo(MITYPE_PED) { m_hitColModel = nil; }
@@ -45,7 +47,13 @@ public:
void DeleteRwObject(void);
void SetClump(RpClump *);
- void CreateHitColModelSkinned(RpClump *clump);
+ virtual void LoadModel(void *model, const void *chunk);
+ virtual void Write(base::cRelocatableChunkWriter &writer);
+ virtual void *WriteModel(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
+ bool CreateHitColModelSkinned(RpClump *clump);
CColModel *GetHitColModel(void) { return m_hitColModel; }
CColModel *AnimatePedColModelSkinned(RpClump *clump);
CColModel *AnimatePedColModelSkinnedWorld(RpClump *clump);
diff --git a/src/modelinfo/SimpleModelInfo.cpp b/src/modelinfo/SimpleModelInfo.cpp
index 18eb7e5f..ba1cfb40 100644
--- a/src/modelinfo/SimpleModelInfo.cpp
+++ b/src/modelinfo/SimpleModelInfo.cpp
@@ -1,37 +1,61 @@
#include "common.h"
+#include "main.h"
#include "General.h"
+#include "Renderer.h"
#include "Camera.h"
#include "Renderer.h"
#include "ModelInfo.h"
#include "AnimManager.h"
#include "custompipes.h"
+#include "Streaming.h"
+#include "smallHeap.h"
+#include "Leeds.h"
+
+TempIdeData m_sTempIdeData[800];
+
+base::cRelocatableChunkClassInfo CSimpleModelInfo::msClassInfo("CSimpleModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CSimpleModelInfo CSimpleModelInfo::msClassInstance;
void
CSimpleModelInfo::DeleteRwObject(void)
{
int i;
RwFrame *f;
- for(i = 0; i < m_numAtomics; i++)
- if(m_atomics[i]){
- f = RpAtomicGetFrame(m_atomics[i]);
- RpAtomicDestroy(m_atomics[i]);
- RwFrameDestroy(f);
- m_atomics[i] = nil;
- RemoveTexDictionaryRef();
- if(GetAnimFileIndex() != -1)
- CAnimManager::RemoveAnimBlockRef(GetAnimFileIndex());
- }
+ if(m_atomics == nil)
+ return;
+ if(!gUseChunkFiles){
+ for(i = 0; i < m_numAtomics; i++)
+ if(m_atomics[i]){
+ f = RpAtomicGetFrame(m_atomics[i]);
+ RpAtomicDestroy(m_atomics[i]);
+ RwFrameDestroy(f);
+ m_atomics[i] = nil;
+ RemoveTexDictionaryRef();
+ if(GetAnimFileIndex() != -1)
+ CAnimManager::RemoveAnimBlockRef(GetAnimFileIndex());
+ }
+ }else if(m_chunk){
+ CStreaming::UnregisterPointer(&m_atomics, 2);
+ for(i = 0; i < m_numAtomics; i++)
+ CStreaming::UnregisterAtomic(m_atomics[i], nil);
+ DeleteChunk();
+ RemoveTexDictionaryRef();
+ if(GetAnimFileIndex() != -1)
+ CAnimManager::RemoveAnimBlockRef(GetAnimFileIndex());
+ }
+ m_atomics = nil;
}
RwObject*
CSimpleModelInfo::CreateInstance(void)
{
RpAtomic *atomic;
- if(m_atomics[0] == nil)
+ if(m_atomics == nil || m_atomics[0] == nil)
return nil;
atomic = RpAtomicClone(m_atomics[0]);
RpAtomicSetFrame(atomic, RwFrameCreate());
+ CStreaming::RegisterInstance(atomic, nil);
return (RwObject*)atomic;
}
@@ -41,21 +65,20 @@ CSimpleModelInfo::CreateInstance(RwMatrix *matrix)
RpAtomic *atomic;
RwFrame *frame;
- if(m_atomics[0] == nil)
+ if(m_atomics == nil || m_atomics[0] == nil)
return nil;
atomic = RpAtomicClone(m_atomics[0]);
frame = RwFrameCreate();
*RwFrameGetMatrix(frame) = *matrix;
RpAtomicSetFrame(atomic, frame);
+ CStreaming::RegisterInstance(atomic, nil);
return (RwObject*)atomic;
}
void
CSimpleModelInfo::Init(void)
{
- m_atomics[0] = nil;
- m_atomics[1] = nil;
- m_atomics[2] = nil;
+ m_atomics = new RpAtomic*[3];
m_numAtomics = 0;
m_firstDamaged = 0;
m_wetRoadReflection = 0;
@@ -71,21 +94,30 @@ CSimpleModelInfo::Init(void)
m_ignoreDrawDist = 0;
m_isCodeGlass = 0;
m_isArtistGlass = 0;
+ m_relatedModel = nil;
}
void
CSimpleModelInfo::SetAtomic(int n, RpAtomic *atomic)
{
- AddTexDictionaryRef();
+ if(m_atomics == nil){
+ m_atomics = new RpAtomic*[3];
+ m_atomics[0] = nil;
+ m_atomics[1] = nil;
+ m_atomics[2] = nil;
+ }
m_atomics[n] = atomic;
+ AddTexDictionaryRef();
if(GetAnimFileIndex() != -1)
CAnimManager::AddAnimBlockRef(GetAnimFileIndex());
RpGeometry *geo = RpAtomicGetGeometry(atomic);
if(m_ignoreLight)
RpGeometrySetFlags(geo, RpGeometryGetFlags(geo) & ~rpGEOMETRYLIGHT);
+/*
if(RpGeometryGetFlags(geo) & rpGEOMETRYNORMALS &&
RpGeometryGetNumTriangles(geo) > 200)
debug("%s has %d polys\n", m_name, RpGeometryGetNumTriangles(geo));
+*/
#ifdef EXTENDED_PIPELINES
if(m_wetRoadReflection)
@@ -136,10 +168,46 @@ CSimpleModelInfo::GetLargestLodDistance(void)
}
RpAtomic*
+CSimpleModelInfo::GetLodAtomic(int n)
+{
+ if(m_atomics == nil || n >= m_numAtomics)
+ return nil;
+ return m_atomics[n];
+}
+
+RpAtomic*
+CSimpleModelInfo::GetLastAtomic(void)
+{
+ if(m_atomics == nil)
+ return nil;
+ if(m_firstDamaged == 0 || m_isDamaged)
+ return m_atomics[m_numAtomics-1];
+ else
+ return m_atomics[m_firstDamaged-1];
+}
+
+RpAtomic*
+CSimpleModelInfo::GetLastAtomic(float dist)
+{
+ int n;
+ if(m_atomics == nil)
+ return nil;
+ if(m_firstDamaged == 0 || m_isDamaged)
+ n = m_numAtomics-1;
+ else
+ n = m_firstDamaged-1;
+ if(dist < m_lodDistances[n] * TheCamera.LODDistMultiplier)
+ return m_atomics[n];
+ return nil;
+}
+
+RpAtomic*
CSimpleModelInfo::GetAtomicFromDistance(float dist)
{
int i;
i = 0;
+ if(m_atomics == nil)
+ return nil;
if(m_isDamaged)
i = m_firstDamaged;
for(; i < m_numAtomics; i++)
@@ -151,20 +219,40 @@ CSimpleModelInfo::GetAtomicFromDistance(float dist)
RpAtomic*
CSimpleModelInfo::GetFirstAtomicFromDistance(float dist)
{
+ if(m_atomics == nil)
+ return nil;
if(dist < m_lodDistances[0] * TheCamera.LODDistMultiplier)
return m_atomics[0];
return nil;
}
void
-CSimpleModelInfo::FindRelatedModel(int32 minID, int32 maxID)
+CSimpleModelInfo::FindRelatedModel(void)
{
- int i;
CBaseModelInfo *mi;
- for(i = minID; i <= maxID; i++){
- mi = CModelInfo::GetModelInfo(i);
+ int thisIndex, otherIndex;
+
+ // find our own index in temp data
+ for(thisIndex = 0; thisIndex < ARRAY_SIZE(m_sTempIdeData); thisIndex++){
+ if(m_sTempIdeData[thisIndex].id == -1)
+ break;
+ if(this == CModelInfo::GetModelInfo(m_sTempIdeData[thisIndex].id))
+ goto found;
+ }
+ thisIndex = -1;
+found:
+#ifdef FIX_BUGS
+ if(thisIndex == -1)
+ return;
+#endif
+
+ for(otherIndex = 0; otherIndex < ARRAY_SIZE(m_sTempIdeData); otherIndex++){
+ if(m_sTempIdeData[otherIndex].id == -1)
+ break;
+
+ mi = CModelInfo::GetModelInfo(m_sTempIdeData[otherIndex].id);
if(mi && mi != this &&
- !CGeneral::faststrcmp(GetModelName()+3, mi->GetModelName()+3)){
+ !CGeneral::faststrcmp(m_sTempIdeData[thisIndex].name+3, m_sTempIdeData[otherIndex].name+3)){
assert(mi->IsSimple());
this->SetRelatedModel((CSimpleModelInfo*)mi);
return;
@@ -172,15 +260,17 @@ CSimpleModelInfo::FindRelatedModel(int32 minID, int32 maxID)
}
}
-#define NEAR_DRAW_DIST 0.0f // 100.0f in liberty city
+#define NEAR_DRAW_DIST 100.0f // 0.0f in vice city
void
-CSimpleModelInfo::SetupBigBuilding(int32 minID, int32 maxID)
+CSimpleModelInfo::SetupBigBuilding(void)
{
CSimpleModelInfo *related;
- if(m_lodDistances[0] > LOD_DISTANCE && GetRelatedModel() == nil){
+ if(m_lodDistances[0] < 0.0f)
+ m_lodDistances[0] = -m_lodDistances[0]; // what?
+ else if(m_lodDistances[0] > LOD_DISTANCE && GetRelatedModel() == nil){
m_isBigBuilding = 1;
- FindRelatedModel(minID, maxID);
+ FindRelatedModel();
related = GetRelatedModel();
if(related){
m_lodDistances[2] = related->GetLargestLodDistance()/TheCamera.LODDistMultiplier;
@@ -192,3 +282,79 @@ CSimpleModelInfo::SetupBigBuilding(int32 minID, int32 maxID)
m_lodDistances[2] = NEAR_DRAW_DIST;
}
}
+
+
+void
+CSimpleModelInfo::LoadModel(void *atomics, const void *chunk)
+{
+ int i;
+ m_chunk = (void*)chunk;
+ m_atomics = (RpAtomic**)atomics;
+ CStreaming::RegisterPointer(m_chunk, 2, true);
+ CStreaming::RegisterPointer(m_atomics, 2, true);
+ for(i = 0; i < m_numAtomics; i++){
+ LoadResource(m_atomics[i]);
+ CStreaming::RegisterAtomic(m_atomics[i], nil);
+ }
+}
+
+void
+CSimpleModelInfo::Write(base::cRelocatableChunkWriter &writer)
+{
+ CBaseModelInfo::Write(writer);
+ if(WriteModel(writer))
+ writer.AddPatch(&m_atomics);
+ else
+ m_atomics = nil;
+ if(m_isBigBuilding)
+ writer.AddPatch(&m_relatedModel);
+}
+
+void*
+CSimpleModelInfo::WriteModel(base::cRelocatableChunkWriter &writer)
+{
+ int i;
+ if(m_atomics == nil || m_atomics[0] == nil)
+ return nil;
+
+ // remove empty atomics
+ int numAtomics = 0;
+ for(i = 0; i < m_numAtomics; i++)
+ if(m_atomics[i]){
+ m_atomics[numAtomics] = m_atomics[i];
+#ifdef FIX_BUGS
+ m_lodDistances[numAtomics] = m_lodDistances[i];
+#endif
+ numAtomics++;
+ }
+ if(m_firstDamaged){
+ int firstDam = m_firstDamaged - m_numAtomics + numAtomics;
+ if(firstDam < numAtomics)
+ m_firstDamaged = firstDam;
+ else
+ m_firstDamaged = 0;
+ }
+ m_numAtomics = numAtomics;
+
+ // write the actual models
+ writer.AllocateRaw(m_atomics, m_numAtomics*sizeof(void*), sizeof(void*), false, true);
+ for(i = 0; m_numAtomics; i++){
+ writer.AddPatch(&m_atomics[i]);
+ SaveResource(m_atomics[i], writer);
+ }
+ return m_atomics;
+}
+
+void
+CSimpleModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), 0x10, false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CSimpleModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), 0x10, false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/SimpleModelInfo.h b/src/modelinfo/SimpleModelInfo.h
index 986cb886..f9191944 100644
--- a/src/modelinfo/SimpleModelInfo.h
+++ b/src/modelinfo/SimpleModelInfo.h
@@ -2,11 +2,18 @@
#include "BaseModelInfo.h"
+// For linking up models by name
+struct TempIdeData
+{
+ char name[24];
+ int16 id;
+};
+extern TempIdeData m_sTempIdeData[800];
+
class CSimpleModelInfo : public CBaseModelInfo
{
public:
- // atomics[2] is often a pointer to the non-LOD modelinfo
- RpAtomic *m_atomics[3];
+ RpAtomic **m_atomics;
// m_lodDistances[2] holds the near distance for LODs
float m_lodDistances[3];
uint8 m_numAtomics;
@@ -31,15 +38,26 @@ public:
uint16 m_isCodeGlass : 1;
uint16 m_isArtistGlass : 1;
+ CSimpleModelInfo *m_relatedModel;
+
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CSimpleModelInfo msClassInstance;
+
CSimpleModelInfo(void) : CBaseModelInfo(MITYPE_SIMPLE) {}
CSimpleModelInfo(ModelInfoType id) : CBaseModelInfo(id) {}
~CSimpleModelInfo() {}
void DeleteRwObject(void);
RwObject *CreateInstance(void);
RwObject *CreateInstance(RwMatrix *);
- RwObject *GetRwObject(void) { return (RwObject*)m_atomics[0]; }
+ RwObject *GetRwObject(void) { return m_atomics ? (RwObject*)m_atomics[0] : nil; }
+
+ virtual void LoadModel(void *atomics, const void *chunk);
+ virtual void Write(base::cRelocatableChunkWriter &writer);
+ virtual void *WriteModel(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
- virtual void SetAtomic(int n, RpAtomic *atomic);
+ /*virtual*/ void SetAtomic(int n, RpAtomic *atomic);
void Init(void);
void IncreaseAlpha(void);
@@ -47,15 +65,18 @@ public:
float GetLodDistance(int i);
float GetNearDistance(void);
float GetLargestLodDistance(void);
+ RpAtomic *GetLodAtomic(int n);
+ RpAtomic *GetLastAtomic(void);
+ RpAtomic *GetLastAtomic(float dist);
RpAtomic *GetAtomicFromDistance(float dist);
RpAtomic *GetFirstAtomicFromDistance(float dist);
- void FindRelatedModel(int32 minID, int32 maxID);
- void SetupBigBuilding(int32 minID, int32 maxID);
+ void FindRelatedModel(void);
+ void SetupBigBuilding(void);
void SetNumAtomics(int n) { m_numAtomics = n; }
CSimpleModelInfo *GetRelatedModel(void){
- return (CSimpleModelInfo*)m_atomics[2]; }
+ return m_relatedModel; }
void SetRelatedModel(CSimpleModelInfo *m){
- m_atomics[2] = (RpAtomic*)m; }
+ m_relatedModel = m; }
};
//static_assert(sizeof(CSimpleModelInfo) == 0x4C, "CSimpleModelInfo: error");
diff --git a/src/modelinfo/TimeModelInfo.cpp b/src/modelinfo/TimeModelInfo.cpp
index 0db5fb78..85b59e43 100644
--- a/src/modelinfo/TimeModelInfo.cpp
+++ b/src/modelinfo/TimeModelInfo.cpp
@@ -3,15 +3,20 @@
#include "Camera.h"
#include "ModelInfo.h"
#include "General.h"
+#include "KeyGen.h"
+
+base::cRelocatableChunkClassInfo CTimeModelInfo::msClassInfo("CTimeModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CTimeModelInfo CTimeModelInfo::msClassInstance;
+
CTimeModelInfo*
-CTimeModelInfo::FindOtherTimeModel(void)
+CTimeModelInfo::FindOtherTimeModel(const char *modelname)
{
char name[40];
char *p;
int i;
- strcpy(name, GetModelName());
+ strcpy(name, modelname);
// change _nt to _dy
if(p = strstr(name, "_nt"))
strncpy(p, "_dy", 4);
@@ -21,13 +26,29 @@ CTimeModelInfo::FindOtherTimeModel(void)
else
return nil;
+ uint32 nameKey = CKeyGen::GetUppercaseKey(name);
+
for(i = 0; i < MODELINFOSIZE; i++){
CBaseModelInfo *mi = CModelInfo::GetModelInfo(i);
- if (mi && mi->GetModelType() == MITYPE_TIME &&
- !CGeneral::faststrncmp(name, mi->GetModelName(), MAX_MODEL_NAME)){
+ if (mi && mi->GetModelType() == MITYPE_TIME && nameKey == mi->GetNameHashKey()){
m_otherTimeModelID = i;
return (CTimeModelInfo*)mi;
}
}
return nil;
}
+
+
+void
+CTimeModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CTimeModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/TimeModelInfo.h b/src/modelinfo/TimeModelInfo.h
index 6e3c64fb..67273b21 100644
--- a/src/modelinfo/TimeModelInfo.h
+++ b/src/modelinfo/TimeModelInfo.h
@@ -7,14 +7,21 @@ class CTimeModelInfo : public CSimpleModelInfo
int32 m_timeOn;
int32 m_timeOff;
int32 m_otherTimeModelID;
+
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CTimeModelInfo msClassInstance;
+
public:
CTimeModelInfo(void) : CSimpleModelInfo(MITYPE_TIME) { m_otherTimeModelID = -1; }
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
int32 GetTimeOn(void) { return m_timeOn; }
int32 GetTimeOff(void) { return m_timeOff; }
void SetTimes(int32 on, int32 off) { m_timeOn = on; m_timeOff = off; }
int32 GetOtherTimeModel(void) { return m_otherTimeModelID; }
void SetOtherTimeModel(int32 other) { m_otherTimeModelID = other; }
- CTimeModelInfo *FindOtherTimeModel(void);
+ CTimeModelInfo *FindOtherTimeModel(const char *name);
};
//static_assert(sizeof(CTimeModelInfo) == 0x58, "CTimeModelInfo: error");
diff --git a/src/modelinfo/VehicleModelInfo.cpp b/src/modelinfo/VehicleModelInfo.cpp
index d31962ce..21583709 100644
--- a/src/modelinfo/VehicleModelInfo.cpp
+++ b/src/modelinfo/VehicleModelInfo.cpp
@@ -1,6 +1,7 @@
#include "common.h"
#include <rpmatfx.h>
+#include "main.h"
#include "RwHelper.h"
#include "General.h"
#include "NodeName.h"
@@ -14,20 +15,28 @@
#include "Automobile.h"
#include "Boat.h"
#include "Train.h"
+#include "Ferry.h"
#include "Plane.h"
#include "Heli.h"
#include "Bike.h"
#include "ModelIndices.h"
#include "ModelInfo.h"
#include "custompipes.h"
+#include "Streaming.h"
+#include "Leeds.h"
-int8 CVehicleModelInfo::ms_compsToUse[2] = { -2, -2 };
-int8 CVehicleModelInfo::ms_compsUsed[2];
-RwRGBA CVehicleModelInfo::ms_vehicleColourTable[256];
-RwTexture *CVehicleModelInfo::ms_colourTextureTable[256];
+base::cRelocatableChunkClassInfo CVehicleModelInfo::msClassInfo("CVehicleModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CVehicleModelInfo CVehicleModelInfo::msClassInstance;
-RwTexture *gpWhiteTexture;
-RwFrame *pMatFxIdentityFrame;
+//int8 CVehicleModelInfo::ms_compsToUse[2] = { -2, -2 };
+//int8 CVehicleModelInfo::ms_compsUsed[2];
+//RwRGBA CVehicleModelInfo::ms_vehicleColourTable[256];
+CVehicleModelInfo::Statics *CVehicleModelInfo::mspInfo;
+
+//RwTexture *CVehicleModelInfo::ms_colourTextureTable[256];
+
+//RwTexture *gpWhiteTexture;
+//RwFrame *pMatFxIdentityFrame;
enum {
VEHICLE_FLAG_COLLAPSE = 0x2,
@@ -114,6 +123,22 @@ RwObjectNameIdAssocation trainIds[] = {
{ nil, 0, 0 }
};
+RwObjectNameIdAssocation ferryIds[] = {
+ { "door_front_dummy", FERRY_DOOR_FRONT, VEHICLE_FLAG_LEFT | VEHICLE_FLAG_COLLAPSE },
+ { "door_back_dummy", FERRY_DOOR_BACK, VEHICLE_FLAG_LEFT | VEHICLE_FLAG_COLLAPSE },
+ { "ramp_front_dummy", FERRY_RAMP_FRONT, VEHICLE_FLAG_LEFT | VEHICLE_FLAG_COLLAPSE },
+ { "ramp_back_dummy", FERRY_RAMP_BACK, VEHICLE_FLAG_LEFT | VEHICLE_FLAG_COLLAPSE },
+ { "light_front", FERRY_POS_LIGHT_FRONT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "light_rear", FERRY_POS_LIGHT_REAR, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "chim_left", FERRY_POS_CHIM_LEFT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "ped_point", FERRY_POS_PED_POINT, VEHICLE_FLAG_DOOR | VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "car1_dummy", FERRY_POS_CAR1, VEHICLE_FLAG_DOOR | VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "car2_dummy", FERRY_POS_CAR2, VEHICLE_FLAG_DOOR | VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "car3_dummy", FERRY_POS_CAR3, VEHICLE_FLAG_DOOR | VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { "car4_dummy", FERRY_POS_CAR4, VEHICLE_FLAG_DOOR | VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
+ { nil, 0, 0 }
+};
+
RwObjectNameIdAssocation heliIds[] = {
{ "chassis_dummy", HELI_CHASSIS, VEHICLE_FLAG_COLLAPSE },
{ "toprotor", HELI_TOPROTOR, 0 },
@@ -162,12 +187,36 @@ RwObjectNameIdAssocation *CVehicleModelInfo::ms_vehicleDescs[] = {
trainIds,
heliIds,
planeIds,
- bikeIds
+ bikeIds,
+ ferryIds
};
bool gbBlackCars;
bool gbPinkCars;
+void
+CVehicleModelInfo::Load(void *inst)
+{
+ if(inst)
+ mspInfo = (CVehicleModelInfo::Statics*)inst;
+ else{
+ mspInfo = new CVehicleModelInfo::Statics;
+ memset(mspInfo, 0, sizeof(*mspInfo));
+ mspInfo->ms_compsToUse[0] = -2;
+ mspInfo->ms_compsToUse[1] = -2;
+ }
+}
+
+void*
+CVehicleModelInfo::WriteStaticInfo(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(mspInfo, sizeof(*mspInfo), sizeof(void*), false, true);
+ if(mspInfo->unknown)
+ writer.AddPatch(&mspInfo->unknown);
+ return mspInfo;
+
+}
+
CVehicleModelInfo::CVehicleModelInfo(void)
: CClumpModelInfo(MITYPE_VEHICLE)
{
@@ -178,7 +227,12 @@ CVehicleModelInfo::CVehicleModelInfo(void)
m_positions[i].z = 0.0f;
}
m_numColours = 0;
+ CClumpModelInfo::m_animFileIndex = -1;
+
+ memset(m_materials1, 0, sizeof(m_materials1));
+ memset(m_materials2, 0, sizeof(m_materials2));
m_animFileIndex = -1;
+ m_normalSplay = 0.3f;
}
void
@@ -187,16 +241,78 @@ CVehicleModelInfo::DeleteRwObject(void)
int32 i;
RwFrame *f;
- for(i = 0; i < m_numComps; i++){
- f = RpAtomicGetFrame(m_comps[i]);
- RpAtomicDestroy(m_comps[i]);
- RwFrameDestroy(f);
+ if(!gUseChunkFiles){
+ for(i = 0; i < m_numComps; i++){
+ f = RpAtomicGetFrame(m_comps[i]);
+ RpAtomicDestroy(m_comps[i]);
+ RwFrameDestroy(f);
+ }
+#ifdef FIX_BUGS
+ delete[] m_comps;
+ m_comps = nil;
+#endif
+ m_numComps = 0;
}
- m_numComps = 0;
+
+ RemoveWheels();
+
+ for(i = 0; i < ARRAY_SIZE(m_materials1); i++)
+ CStreaming::UnregisterPointer(&m_materials1[i], 2);
+ for(i = 0; i < ARRAY_SIZE(m_materials2); i++)
+ CStreaming::UnregisterPointer(&m_materials2[i], 2);
+
+ if(m_numComps > 0){
+ CStreaming::UnregisterPointer(&m_comps, 2);
+ for(i = 0; i < m_numComps; i++)
+ CStreaming::UnregisterAtomic(m_comps[i], nil);
+ m_comps = nil;
+ }
+
CClumpModelInfo::DeleteRwObject();
}
RwObject*
+RemoveWheelCB(RwObject *object, void *arg)
+{
+ RpAtomic *atomic = (RpAtomic*)object;
+ if(RwObjectGetType(object) == rpATOMIC){
+ RpClumpRemoveAtomic((RpClump*)arg, atomic);
+#ifdef LIBRW
+ CStreaming::UnregisterPointer(&atomic->inClump.next, 2);
+ CStreaming::UnregisterPointer(&atomic->inClump.prev, 2);
+ CStreaming::UnregisterPointer(&atomic->object.object.parent, 2);
+ CStreaming::UnregisterPointer(&atomic->object.inFrame.next, 2);
+ CStreaming::UnregisterPointer(&atomic->object.inFrame.prev, 2);
+ CStreaming::UnregisterPointer(&atomic->clump, 2);
+#endif
+ RpAtomicDestroy(atomic);
+ }
+ return object;
+}
+
+void
+CVehicleModelInfo::RemoveWheels(void)
+{
+#ifdef FIX_BUGS
+ if(m_clump == nil)
+ return;
+#endif
+ RwObjectNameIdAssocation *desc = ms_vehicleDescs[m_vehicleType];
+ for(int i = 0; desc[i].name; i++){
+ RwObjectIdAssociation assoc;
+
+ if(desc[i].flags & (VEHICLE_FLAG_COMP|VEHICLE_FLAG_POS))
+ continue;
+ assoc.frame = nil;
+ assoc.id = desc[i].hierId;
+ RwFrameForAllChildren(RpClumpGetFrame(m_clump),
+ FindFrameFromIdCB, &assoc);
+ if(assoc.frame && desc[i].flags & VEHICLE_FLAG_ADD_WHEEL && m_wheelId != -1)
+ RwFrameForAllObjects(assoc.frame, RemoveWheelCB, m_clump);
+ }
+}
+
+RwObject*
CVehicleModelInfo::CreateInstance(void)
{
RpClump *clump;
@@ -205,7 +321,7 @@ CVehicleModelInfo::CreateInstance(void)
int32 comp1, comp2;
clump = (RpClump*)CClumpModelInfo::CreateInstance();
- if(m_numComps != 0){
+ if(clump && m_numComps != 0 && strcmp(m_gameName, "POLICAR") != 0){
clumpframe = RpClumpGetFrame(clump);
comp1 = ChooseComponent();
@@ -219,7 +335,7 @@ CVehicleModelInfo::CreateInstance(void)
RpClumpAddAtomic(clump, atomic);
RwFrameAddChild(clumpframe, f);
}
- ms_compsUsed[0] = comp1;
+ mspInfo->ms_compsUsed[0] = comp1;
comp2 = ChooseSecondComponent();
if(comp2 != -1 && m_comps[comp2]){
@@ -232,18 +348,27 @@ CVehicleModelInfo::CreateInstance(void)
RpClumpAddAtomic(clump, atomic);
RwFrameAddChild(clumpframe, f);
}
- ms_compsUsed[1] = comp2;
+ mspInfo->ms_compsUsed[1] = comp2;
}else{
- ms_compsUsed[0] = -1;
- ms_compsUsed[1] = -1;
+ mspInfo->ms_compsUsed[0] = -1;
+ mspInfo->ms_compsUsed[1] = -1;
}
+ CStreaming::RegisterInstance(clump);
return (RwObject*)clump;
}
+RpAtomic*
+SplayNormals(RpAtomic *atomic, void *arg)
+{
+ // PSP only?
+ return atomic;
+}
+
void
CVehicleModelInfo::SetClump(RpClump *clump)
{
CClumpModelInfo::SetClump(clump);
+ RpClumpForAllAtomics((RpClump*)GetRwObject(), SplayNormals, this);
SetAtomicRenderCallbacks();
SetFrameIds(ms_vehicleDescs[m_vehicleType]);
PreprocessHierarchy();
@@ -398,35 +523,76 @@ CVehicleModelInfo::SetAtomicRendererCB_Train(RpAtomic *atomic, void *data)
}
RpAtomic*
-CVehicleModelInfo::SetAtomicRendererCB_Boat(RpAtomic *atomic, void *data)
+CVehicleModelInfo::SetAtomicRendererCB_Ferry(RpAtomic *atomic, void *data)
{
- RpClump *clump;
char *name;
bool alpha;
- clump = (RpClump*)data;
name = GetFrameNodeName(RpAtomicGetFrame(atomic));
alpha = false;
RpGeometryForAllMaterials(RpAtomicGetGeometry(atomic), HasAlphaMaterialCB, &alpha);
- if(strcmp(name, "boat_hi") == 0 || !CGeneral::faststrncmp(name, "extra", 5))
- CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailCB_Boat);
- else if(strstr(name, "_hi")){
+ if(strstr(name, "_hi")){
if(alpha)
- CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_Boat);
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderTrainHiDetailAlphaCB);
else
- CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailCB);
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderTrainHiDetailCB);
}else if(strstr(name, "_lo")){
+ if(alpha)
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleLowDetailAlphaCB_BigVehicle);
+ else
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleLowDetailCB_BigVehicle);
+ }else if(strstr(name, "_vlo"))
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleReallyLowDetailCB_BigVehicle);
+ else
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
+ HideDamagedAtomicCB(atomic, nil);
+ return atomic;
+}
+
+RpAtomic*
+CVehicleModelInfo::SetAtomicRendererCB_Boat(RpAtomic *atomic, void *data)
+{
+ RpClump *clump;
+ char *name;
+
+ clump = (RpClump*)data;
+ name = GetFrameNodeName(RpAtomicGetFrame(atomic));
+ if(strcmp(name, "boat_hi") == 0 || !CGeneral::faststrncmp(name, "extra", 5))
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailCB_Boat);
+ else if(strstr(name, "_hi"))
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailCB);
+ else if(strstr(name, "_lo")){
RpClumpRemoveAtomic(clump, atomic);
RpAtomicDestroy(atomic);
return atomic; // BUG: not done by gta
}else if(strstr(name, "_vlo"))
CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleLoDetailCB_Boat);
- else{
- if(alpha)
- CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_Boat);
- else
- CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
- }
+ else
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
+ HideDamagedAtomicCB(atomic, nil);
+ return atomic;
+}
+
+RpAtomic*
+CVehicleModelInfo::SetAtomicRendererCB_Boat_Far(RpAtomic *atomic, void *data)
+{
+ RpClump *clump;
+ char *name;
+
+ clump = (RpClump*)data;
+ name = GetFrameNodeName(RpAtomicGetFrame(atomic));
+ if(strcmp(name, "boat_hi") == 0 || !CGeneral::faststrncmp(name, "extra", 5))
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailCB_Boat_Far);
+ else if(strstr(name, "_hi"))
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleHiDetailCB);
+ else if(strstr(name, "_lo")){
+ RpClumpRemoveAtomic(clump, atomic);
+ RpAtomicDestroy(atomic);
+ return atomic; // BUG: not done by gta
+ }else if(strstr(name, "_vlo"))
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleLoDetailCB_Boat_Far);
+ else
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
HideDamagedAtomicCB(atomic, nil);
return atomic;
}
@@ -434,6 +600,7 @@ CVehicleModelInfo::SetAtomicRendererCB_Boat(RpAtomic *atomic, void *data)
RpAtomic*
CVehicleModelInfo::SetAtomicRendererCB_Heli(RpAtomic *atomic, void *data)
{
+/* // LCS: gone, may be better to keep it though
char *name;
name = GetFrameNodeName(RpAtomicGetFrame(atomic));
@@ -442,6 +609,7 @@ CVehicleModelInfo::SetAtomicRendererCB_Heli(RpAtomic *atomic, void *data)
else if(strncmp(name, "rearrotor", 9) == 0)
CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderVehicleTailRotorAlphaCB);
else
+*/
CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
return atomic;
}
@@ -486,13 +654,18 @@ CVehicleModelInfo::SetAtomicRenderCallbacks(void)
RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_Train, nil);
else
#endif
- if(m_vehicleType == VEHICLE_TYPE_HELI)
+ if(m_vehicleType == VEHICLE_TYPE_FERRY)
+ RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_Ferry, nil);
+ else if(m_vehicleType == VEHICLE_TYPE_HELI)
RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_Heli, nil);
else if(m_vehicleType == VEHICLE_TYPE_PLANE)
RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_BigVehicle, nil);
- else if(m_vehicleType == VEHICLE_TYPE_BOAT)
- RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_Boat, m_clump);
- else if(mod_HandlingManager.GetHandlingData((tVehicleType)m_handlingId)->Flags & HANDLING_IS_HELI)
+ else if(m_vehicleType == VEHICLE_TYPE_BOAT){
+ if(strcmp(m_gameName, "REEFER") == 0)
+ RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_Boat_Far, m_clump);
+ else
+ RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_Boat, m_clump);
+ }else if(mod_HandlingManager.GetHandlingData((tVehicleType)m_handlingId)->Flags & HANDLING_IS_HELI)
RpClumpForAllAtomics(m_clump, SetAtomicRendererCB_RealHeli, m_clump);
else
RpClumpForAllAtomics(m_clump, SetAtomicRendererCB, m_clump);
@@ -540,6 +713,8 @@ CVehicleModelInfo::PreprocessHierarchy(void)
m_numDoors = 0;
m_numComps = 0;
+ m_comps = new RpAtomic*[7];
+
for(i = 0; desc[i].name; i++){
RwObjectNameAssociation assoc;
@@ -597,21 +772,23 @@ CVehicleModelInfo::PreprocessHierarchy(void)
SetVehicleComponentFlags(assoc.frame, desc[i].flags);
- if(desc[i].flags & VEHICLE_FLAG_ADD_WHEEL){
- if(m_wheelId == -1)
- RwFrameDestroy(assoc.frame);
- else{
- RwV3d scale;
- atomic = (RpAtomic*)CModelInfo::GetModelInfo(m_wheelId)->CreateInstance();
- RwFrameDestroy(RpAtomicGetFrame(atomic));
- RpAtomicSetFrame(atomic, assoc.frame);
- RpClumpAddAtomic(m_clump, atomic);
- CVisibilityPlugins::SetAtomicRenderCallback(atomic,
- CVisibilityPlugins::RenderWheelAtomicCB);
- scale.x = m_wheelScale;
- scale.y = m_wheelScale;
- scale.z = m_wheelScale;
- RwFrameScale(assoc.frame, &scale, rwCOMBINEPRECONCAT);
+ if(!(gMakeResources && gUseResources)){
+ if(desc[i].flags & VEHICLE_FLAG_ADD_WHEEL){
+ if(m_wheelId == -1)
+ RwFrameDestroy(assoc.frame);
+ else{
+ RwV3d scale;
+ atomic = (RpAtomic*)CModelInfo::GetModelInfo(m_wheelId)->CreateInstance();
+ RwFrameDestroy(RpAtomicGetFrame(atomic));
+ RpAtomicSetFrame(atomic, assoc.frame);
+ RpClumpAddAtomic(m_clump, atomic);
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic,
+ CVisibilityPlugins::RenderWheelAtomicCB);
+ scale.x = m_wheelScale;
+ scale.y = m_wheelScale;
+ scale.z = m_wheelScale;
+ RwFrameScale(assoc.frame, &scale, rwCOMBINEPRECONCAT);
+ }
}
}
}
@@ -756,7 +933,7 @@ CVehicleModelInfo::ChooseComponent(void)
int32 n;
comp = -1;
- if(ms_compsToUse[0] == -2){
+ if(mspInfo->ms_compsToUse[0] == -2){
if(COMPRULE_RULE(m_compRules) && IsValidCompRule(COMPRULE_RULE(m_compRules)))
comp = ::ChooseComponent(COMPRULE_RULE(m_compRules), COMPRULE_COMPS(m_compRules));
else if(CGeneral::GetRandomNumberInRange(0, 3) < 2){
@@ -765,8 +942,8 @@ CVehicleModelInfo::ChooseComponent(void)
comp = comps[(int)CGeneral::GetRandomNumberInRange(0, n)];
}
}else{
- comp = ms_compsToUse[0];
- ms_compsToUse[0] = -2;
+ comp = mspInfo->ms_compsToUse[0];
+ mspInfo->ms_compsToUse[0] = -2;
}
return comp;
}
@@ -779,7 +956,7 @@ CVehicleModelInfo::ChooseSecondComponent(void)
int32 n;
comp = -1;
- if(ms_compsToUse[1] == -2){
+ if(mspInfo->ms_compsToUse[1] == -2){
if(COMPRULE2_RULE(m_compRules) && IsValidCompRule(COMPRULE2_RULE(m_compRules)))
comp = ::ChooseComponent(COMPRULE2_RULE(m_compRules), COMPRULE2_COMPS(m_compRules));
else if(COMPRULE_RULE(m_compRules) && IsValidCompRule(COMPRULE_RULE(m_compRules)) &&
@@ -790,8 +967,8 @@ CVehicleModelInfo::ChooseSecondComponent(void)
comp = comps[(int)CGeneral::GetRandomNumberInRange(0, n)];
}
}else{
- comp = ms_compsToUse[1];
- ms_compsToUse[1] = -2;
+ comp = mspInfo->ms_compsToUse[1];
+ mspInfo->ms_compsToUse[1] = -2;
}
return comp;
}
@@ -859,7 +1036,7 @@ CVehicleModelInfo::SetVehicleColour(uint8 c1, uint8 c2)
RpMaterial **matp;
if(c1 != m_currentColour1){
- col = ms_vehicleColourTable[c1];
+ col = mspInfo->ms_vehicleColourTable[c1];
for(matp = m_materials1; *matp; matp++){
colp = (RwRGBA*)RpMaterialGetColor(*matp); // get rid of const
colp->red = col.red;
@@ -870,7 +1047,7 @@ CVehicleModelInfo::SetVehicleColour(uint8 c1, uint8 c2)
}
if(c2 != m_currentColour2){
- col = ms_vehicleColourTable[c2];
+ col = mspInfo->ms_vehicleColourTable[c2];
for(matp = m_materials2; *matp; matp++){
colp = (RwRGBA*)RpMaterialGetColor(*matp); // get rid of const
colp->red = col.red;
@@ -995,8 +1172,8 @@ CVehicleModelInfo::LoadVehicleColours(void)
fd = CFileMgr::OpenFile("CARCOLS.DAT", "r");
CFileMgr::ChangeDir("\\");
- for(i = 0; i < 256; i++)
- ms_colourTextureTable[i] = nil;
+ //for(i = 0; i < 256; i++)
+ // ms_colourTextureTable[i] = nil;
section = 0;
numCols = 0;
@@ -1028,10 +1205,10 @@ CVehicleModelInfo::LoadVehicleColours(void)
}else if(section == COLOURS){
sscanf(&line[start], // BUG: games doesn't add start
"%d %d %d", &r, &g, &b);
- ms_vehicleColourTable[numCols].red = r;
- ms_vehicleColourTable[numCols].green = g;
- ms_vehicleColourTable[numCols].blue = b;
- ms_vehicleColourTable[numCols].alpha = 0xFF;
+ mspInfo->ms_vehicleColourTable[numCols].red = r;
+ mspInfo->ms_vehicleColourTable[numCols].green = g;
+ mspInfo->ms_vehicleColourTable[numCols].blue = b;
+ mspInfo->ms_vehicleColourTable[numCols].alpha = 0xFF;
numCols++;
}else if(section == CARS){
n = sscanf(&line[start], // BUG: games doesn't add start
@@ -1061,6 +1238,7 @@ CVehicleModelInfo::LoadVehicleColours(void)
void
CVehicleModelInfo::DeleteVehicleColourTextures(void)
{
+/*
int i;
for(i = 0; i < 256; i++){
@@ -1069,6 +1247,7 @@ CVehicleModelInfo::DeleteVehicleColourTextures(void)
ms_colourTextureTable[i] = nil;
}
}
+*/
}
RpMaterial*
@@ -1080,6 +1259,7 @@ CVehicleModelInfo::GetMatFXEffectMaterialCB(RpMaterial *material, void *data)
return nil;
}
+/*
RpMaterial*
CVehicleModelInfo::SetDefaultEnvironmentMapCB(RpMaterial *material, void *data)
{
@@ -1096,7 +1276,9 @@ CVehicleModelInfo::SetDefaultEnvironmentMapCB(RpMaterial *material, void *data)
}
return material;
}
+*/
+/*
RpAtomic*
CVehicleModelInfo::SetEnvironmentMapCB(RpAtomic *atomic, void *data)
{
@@ -1112,10 +1294,12 @@ CVehicleModelInfo::SetEnvironmentMapCB(RpAtomic *atomic, void *data)
}
return atomic;
}
+*/
void
CVehicleModelInfo::SetEnvironmentMap(void)
{
+/*
CSimpleModelInfo *wheelmi;
int32 i;
@@ -1133,6 +1317,7 @@ CVehicleModelInfo::SetEnvironmentMap(void)
for(i = 0; i < wheelmi->m_numAtomics; i++)
SetEnvironmentMapCB(wheelmi->m_atomics[i], nil);
}
+*/
#ifdef EXTENDED_PIPELINES
CustomPipes::AttachVehiclePipe(m_clump);
@@ -1147,21 +1332,23 @@ CVehicleModelInfo::LoadEnvironmentMaps(void)
txdslot = CTxdStore::FindTxdSlot("particle");
CTxdStore::PushCurrentTxd();
CTxdStore::SetCurrentTxd(txdslot);
- if(gpWhiteTexture == nil){
+ /*if(gpWhiteTexture == nil){
gpWhiteTexture = RwTextureRead("white", nil);
RwTextureGetName(gpWhiteTexture)[0] = '@';
RwTextureSetFilterMode(gpWhiteTexture, rwFILTERLINEAR);
- }
+ }*/
CTxdStore::PopCurrentTxd();
}
void
CVehicleModelInfo::ShutdownEnvironmentMaps(void)
{
+/*
RwTextureDestroy(gpWhiteTexture);
gpWhiteTexture = nil;
RwFrameDestroy(pMatFxIdentityFrame);
pMatFxIdentityFrame = nil;
+*/
}
int
@@ -1184,10 +1371,162 @@ CVehicleModelInfo::GetMaximumNumberOfPassengersFromNumberOfDoors(int id)
}
if(n == 0)
- return id == MI_RCBANDIT || id == MI_PIZZABOY || id == MI_BAGGAGE ? 0 : 1;
+ return id == MI_RCBANDIT /*|| id == MI_PIZZABOY || id == MI_BAGGAGE*/ ? 0 : 1;
if(id == MI_COACH)
return 8;
return n - 1;
}
+
+
+struct VehicleChunk
+{
+ RpClump *clump;
+ int32 numComps;
+ RpAtomic **comp;
+ RpMaterial *materials1[NUM_FIRST_MATERIALS];
+ RpMaterial *materials2[NUM_SECOND_MATERIALS];
+};
+
+void
+CVehicleModelInfo::LoadModel(void *data, const void *chunk)
+{
+ int i;
+ VehicleChunk *chk = (VehicleChunk*)data;
+ CClumpModelInfo::LoadModel(chk->clump, chunk);
+
+ // editable materials
+ for(i = 0; i < NUM_FIRST_MATERIALS; i++){
+ m_materials1[i] = chk->materials1[i];
+ if(m_materials1[i])
+ CStreaming::RegisterPointer(&m_materials1[i], 2, true);
+ }
+ for(i = 0; i < NUM_SECOND_MATERIALS; i++){
+ m_materials2[i] = chk->materials2[i];
+ if(m_materials2[i])
+ CStreaming::RegisterPointer(&m_materials2[i], 2, true);
+ }
+
+ // extra components
+ m_numComps = chk->numComps;
+ if(m_numComps > 0){
+ m_comps = chk->comp;
+ CStreaming::RegisterPointer(&m_comps, 2, true);
+ for(i = 0; i < m_numComps; i++){
+ LoadResource(m_comps[i]);
+ CStreaming::RegisterAtomic(m_comps[i], nil);
+ }
+ }else
+ m_comps = nil;
+
+ m_currentColour1 = -1;
+ m_currentColour2 = -1;
+
+ // add wheels
+ RwObjectNameIdAssocation *desc = ms_vehicleDescs[m_vehicleType];
+ for(i = 0; desc[i].name; i++){
+ RwObjectIdAssociation assoc;
+
+ if(desc[i].flags & (VEHICLE_FLAG_COMP|VEHICLE_FLAG_POS))
+ continue;
+ assoc.frame = nil;
+ assoc.id = desc[i].hierId;
+ RwFrameForAllChildren(RpClumpGetFrame(m_clump),
+ FindFrameFromIdCB, &assoc);
+ if(assoc.frame && desc[i].flags & VEHICLE_FLAG_ADD_WHEEL && m_wheelId != -1){
+ RwV3d scale;
+ RpAtomic *atomic = (RpAtomic*)CModelInfo::GetModelInfo(m_wheelId)->CreateInstance();
+ RwFrameDestroy(RpAtomicGetFrame(atomic));
+ RpAtomicSetFrame(atomic, assoc.frame);
+ RpClumpAddAtomic(m_clump, atomic);
+ CVisibilityPlugins::SetAtomicRenderCallback(atomic,
+ CVisibilityPlugins::RenderWheelAtomicCB);
+ scale.x = m_wheelScale;
+ scale.y = m_wheelScale;
+ scale.z = m_wheelScale;
+ RwFrameScale(assoc.frame, &scale, rwCOMBINEPRECONCAT);
+#ifdef LIBRW
+ CStreaming::RegisterPointer(&atomic->inClump.next, 2, true);
+ CStreaming::RegisterPointer(&atomic->inClump.prev, 2, true);
+ CStreaming::RegisterPointer(&atomic->object.object.parent, 2, true);
+ CStreaming::RegisterPointer(&atomic->object.inFrame.next, 2, true);
+ CStreaming::RegisterPointer(&atomic->object.inFrame.prev, 2, true);
+ CStreaming::RegisterPointer(&atomic->clump, 2, true);
+#endif
+ }
+ }
+}
+
+void
+CVehicleModelInfo::Write(base::cRelocatableChunkWriter &writer)
+{
+ CClumpModelInfo::Write(writer);
+}
+
+void*
+CVehicleModelInfo::WriteModel(base::cRelocatableChunkWriter &writer)
+{
+ if(GetRwObject() == nil)
+ return nil;
+
+ int i;
+ VehicleChunk *chk = new VehicleChunk;
+ memset(chk, 0, sizeof(*chk));
+ writer.AllocateRaw(chk, sizeof(*chk), sizeof(void*), false, true);
+
+ // clump
+ chk->clump = (RpClump*)CClumpModelInfo::WriteModel(writer);
+ if(chk->clump)
+ writer.AddPatch(&chk->clump);
+
+ // materials
+ for(i = 0; i < NUM_FIRST_MATERIALS; i++){
+ if(m_materials1[i] == nil || m_vehicleType == VEHICLE_TYPE_FERRY)
+ chk->materials1[i] = nil;
+ else{
+ SaveResource(m_materials1[i], writer);
+ chk->materials1[i] = m_materials1[i];
+ writer.AddPatch(&chk->materials1[i]);
+ }
+ }
+ for(i = 0; i < NUM_SECOND_MATERIALS; i++){
+ if(m_materials2[i] == nil || m_vehicleType == VEHICLE_TYPE_FERRY)
+ chk->materials2[i] = nil;
+ else{
+ SaveResource(m_materials2[i], writer);
+ chk->materials2[i] = m_materials2[i];
+ writer.AddPatch(&chk->materials2[i]);
+ }
+ }
+
+ // extra components
+ chk->numComps = m_numComps;
+ chk->comp = nil;
+ if(m_numComps > 0){
+ chk->comp = m_comps;
+ writer.AddPatch(&chk->comp);
+
+ writer.AllocateRaw(m_comps, m_numComps*sizeof(void*), sizeof(void*), false, true);
+ for(i = 0; i < m_numComps; i++)
+ if(m_comps[i]){
+ SaveResource(m_comps[i], writer);
+ writer.AddPatch(&m_comps[i]);
+ }
+ }
+ return chk;
+}
+
+void
+CVehicleModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CVehicleModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/VehicleModelInfo.h b/src/modelinfo/VehicleModelInfo.h
index c7a41126..6f2cea3c 100644
--- a/src/modelinfo/VehicleModelInfo.h
+++ b/src/modelinfo/VehicleModelInfo.h
@@ -3,8 +3,8 @@
#include "ClumpModelInfo.h"
enum {
- NUM_FIRST_MATERIALS = 24,
- NUM_SECOND_MATERIALS = 20,
+ NUM_FIRST_MATERIALS = 25,
+ NUM_SECOND_MATERIALS = 25,
NUM_VEHICLE_COLOURS = 8,
};
@@ -31,6 +31,7 @@ enum eVehicleType {
VEHICLE_TYPE_HELI,
VEHICLE_TYPE_PLANE,
VEHICLE_TYPE_BIKE,
+ VEHICLE_TYPE_FERRY,
NUM_VEHICLE_TYPES
};
@@ -48,6 +49,18 @@ enum eBoatPositions
BOAT_POS_FRONTSEAT
};
+enum eFerryPositions
+{
+ FERRY_POS_LIGHT_FRONT,
+ FERRY_POS_LIGHT_REAR,
+ FERRY_POS_CHIM_LEFT,
+ FERRY_POS_PED_POINT,
+ FERRY_POS_CAR1,
+ FERRY_POS_CAR2,
+ FERRY_POS_CAR3,
+ FERRY_POS_CAR4
+};
+
enum eTrainPositions
{
TRAIN_POS_LIGHT_FRONT,
@@ -97,19 +110,30 @@ public:
uint8 m_lastColorVariation;
uint8 m_currentColour1;
uint8 m_currentColour2;
- RpAtomic *m_comps[6];
+ RpAtomic **m_comps;
+ float m_normalSplay;
// This is stupid, CClumpModelInfo already has it!
union {
int32 m_animFileIndex;
char *m_animFileName;
};
- static int8 ms_compsToUse[2];
- static int8 ms_compsUsed[2];
- static RwRGBA ms_vehicleColourTable[256];
- static RwTexture *ms_colourTextureTable[256];
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CVehicleModelInfo msClassInstance;
+
+ struct Statics {
+ void *unknown; // unused too it seems
+ RwRGBA ms_vehicleColourTable[256];
+ int8 ms_compsUsed[2];
+ int8 ms_compsToUse[2];
+ };
+ //static RwTexture *ms_colourTextureTable[256];
+ static Statics *mspInfo;
static RwObjectNameIdAssocation *ms_vehicleDescs[NUM_VEHICLE_TYPES];
+ static void Load(void *inst);
+ static void *WriteStaticInfo(base::cRelocatableChunkWriter &writer);
+
CVehicleModelInfo(void);
void DeleteRwObject(void);
RwObject *CreateInstance(void);
@@ -118,6 +142,12 @@ public:
void ConvertAnimFileIndex(void);
int GetAnimFileIndex(void) { return m_animFileIndex; }
+ virtual void LoadModel(void *model, const void *chunk);
+ virtual void Write(base::cRelocatableChunkWriter &writer);
+ virtual void *WriteModel(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
static RwFrame *CollapseFramesCB(RwFrame *frame, void *data);
static RwObject *MoveObjectsCB(RwObject *object, void *data);
static RpAtomic *HideDamagedAtomicCB(RpAtomic *atomic, void *data);
@@ -127,13 +157,16 @@ public:
static RpAtomic *SetAtomicRendererCB(RpAtomic *atomic, void *data);
static RpAtomic *SetAtomicRendererCB_BigVehicle(RpAtomic *atomic, void *data);
static RpAtomic *SetAtomicRendererCB_Train(RpAtomic *atomic, void *data);
+ static RpAtomic *SetAtomicRendererCB_Ferry(RpAtomic *atomic, void *data);
static RpAtomic *SetAtomicRendererCB_Boat(RpAtomic *atomic, void *data);
+ static RpAtomic *SetAtomicRendererCB_Boat_Far(RpAtomic *atomic, void *data);
static RpAtomic *SetAtomicRendererCB_Heli(RpAtomic *atomic, void *data);
static RpAtomic *SetAtomicRendererCB_RealHeli(RpAtomic *atomic, void *data);
void SetAtomicRenderCallbacks(void);
static RwObject *SetAtomicFlagCB(RwObject *object, void *data);
static RwObject *ClearAtomicFlagCB(RwObject *atomic, void *data);
+ void RemoveWheels(void);
void SetVehicleComponentFlags(RwFrame *frame, uint32 flags);
void PreprocessHierarchy(void);
void GetWheelPosn(int32 n, CVector &pos);
@@ -159,7 +192,7 @@ public:
static void ShutdownEnvironmentMaps(void);
static int GetMaximumNumberOfPassengersFromNumberOfDoors(int id);
- static void SetComponentsToUse(int8 c1, int8 c2) { ms_compsToUse[0] = c1; ms_compsToUse[1] = c2; }
+ static void SetComponentsToUse(int8 c1, int8 c2) { mspInfo->ms_compsToUse[0] = c1; mspInfo->ms_compsToUse[1] = c2; }
};
extern bool gbBlackCars;
diff --git a/src/modelinfo/WeaponModelInfo.cpp b/src/modelinfo/WeaponModelInfo.cpp
index d9294c3f..1d194ec4 100644
--- a/src/modelinfo/WeaponModelInfo.cpp
+++ b/src/modelinfo/WeaponModelInfo.cpp
@@ -4,6 +4,9 @@
#include "AnimManager.h"
#include "VisibilityPlugins.h"
+base::cRelocatableChunkClassInfo CWeaponModelInfo::msClassInfo("CWeaponModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CWeaponModelInfo CWeaponModelInfo::msClassInstance;
+
void
CWeaponModelInfo::SetAnimFile(const char *file)
{
@@ -35,19 +38,34 @@ CWeaponModelInfo::Init(void)
void
CWeaponModelInfo::SetWeaponInfo(int32 weaponId)
{
- m_atomics[2] = (RpAtomic*)weaponId;
+ m_relatedModel = (CSimpleModelInfo*)weaponId;
}
eWeaponType
CWeaponModelInfo::GetWeaponInfo(void)
{
- return (eWeaponType)(uintptr)m_atomics[2];
+ return (eWeaponType)(uintptr)m_relatedModel;
}
+/*
void
CWeaponModelInfo::SetAtomic(int n, RpAtomic *atomic)
{
CSimpleModelInfo::SetAtomic(n, atomic);
CVisibilityPlugins::SetAtomicRenderCallback(atomic, CVisibilityPlugins::RenderWeaponCB);
}
+*/
+
+void
+CWeaponModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+void
+CWeaponModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/WeaponModelInfo.h b/src/modelinfo/WeaponModelInfo.h
index 548bf8a6..8dc9baf1 100644
--- a/src/modelinfo/WeaponModelInfo.h
+++ b/src/modelinfo/WeaponModelInfo.h
@@ -9,13 +9,21 @@ class CWeaponModelInfo : public CSimpleModelInfo
int32 m_animFileIndex;
char *m_animFileName;
};
+
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CWeaponModelInfo msClassInstance;
+
public:
CWeaponModelInfo(void) : CSimpleModelInfo(MITYPE_WEAPON) { m_animFileIndex = -1; }
virtual void SetAnimFile(const char *file);
virtual void ConvertAnimFileIndex(void);
virtual int GetAnimFileIndex(void) { return m_animFileIndex; }
- virtual void SetAtomic(int n, RpAtomic *atomic);
+
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
+ //virtual void SetAtomic(int n, RpAtomic *atomic);
void Init(void);
void SetWeaponInfo(int32 weaponId);
diff --git a/src/modelinfo/XtraCompsModelInfo.cpp b/src/modelinfo/XtraCompsModelInfo.cpp
new file mode 100644
index 00000000..c11edaf8
--- /dev/null
+++ b/src/modelinfo/XtraCompsModelInfo.cpp
@@ -0,0 +1,21 @@
+#include "common.h"
+
+#include "VisibilityPlugins.h"
+#include "ModelInfo.h"
+
+base::cRelocatableChunkClassInfo CXtraCompsModelInfo::msClassInfo("CXtraCompsModelInfo", VTABLE_ADDR(&msClassInstance), sizeof(msClassInstance));
+CXtraCompsModelInfo CXtraCompsModelInfo::msClassInstance;
+
+void
+CXtraCompsModelInfo::RcWriteThis(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
+
+void
+CXtraCompsModelInfo::RcWriteEmpty(base::cRelocatableChunkWriter &writer)
+{
+ writer.AllocateRaw(this, sizeof(*this), sizeof(void*), false, true);
+ writer.Class(VTABLE_ADDR(this), msClassInfo);
+}
diff --git a/src/modelinfo/XtraCompsModelInfo.h b/src/modelinfo/XtraCompsModelInfo.h
new file mode 100644
index 00000000..7cd9b7ea
--- /dev/null
+++ b/src/modelinfo/XtraCompsModelInfo.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "ClumpModelInfo.h"
+
+class CXtraCompsModelInfo : public CClumpModelInfo
+{
+ int field_34;
+public:
+ CXtraCompsModelInfo(void) : CClumpModelInfo(MITYPE_XTRACOMPS) { field_34 = 0; }
+ void Shutdown(void) {};
+ RwObject *CreateInstance(void) { return nil; }
+ void SetClump(RpClump*) {};
+
+ virtual void RcWriteThis(base::cRelocatableChunkWriter &writer);
+ virtual void RcWriteEmpty(base::cRelocatableChunkWriter &writer);
+
+ static base::cRelocatableChunkClassInfo msClassInfo;
+ static CXtraCompsModelInfo msClassInstance;
+}; \ No newline at end of file
diff --git a/src/objects/CutsceneObject.cpp b/src/objects/CutsceneObject.cpp
index 7d9fe640..803fcf0f 100644
--- a/src/objects/CutsceneObject.cpp
+++ b/src/objects/CutsceneObject.cpp
@@ -53,12 +53,15 @@ CCutsceneObject::SetModelIndex(uint32 id)
void
CCutsceneObject::CreateShadow(void)
{
+ // empty in LCS
+ /*
if ( IsPedModel(GetModelIndex()) )
{
m_pShadow = new CCutsceneShadow();
if (!m_pShadow->IsInitialized())
m_pShadow->Create(m_rwObject, 6, true, 4, true);
}
+ */
}
void
diff --git a/src/objects/CutsceneObject.h b/src/objects/CutsceneObject.h
index af24c0a6..b0659c08 100644
--- a/src/objects/CutsceneObject.h
+++ b/src/objects/CutsceneObject.h
@@ -14,6 +14,7 @@ public:
CCutsceneObject(void);
~CCutsceneObject(void);
+ bool UpdatesInCutscene(void) { return true; }
void SetModelIndex(uint32 id);
void CreateShadow(void);
void ProcessControl(void);
diff --git a/src/objects/Object.h b/src/objects/Object.h
index f59379bf..a535732c 100644
--- a/src/objects/Object.h
+++ b/src/objects/Object.h
@@ -71,6 +71,7 @@ public:
uint8 bIsWeapon : 1;
uint8 bIsStreetLight : 1;
int8 m_nBonusValue;
+ int8 m_nLastWeaponToDamage;
uint16 m_nCostValue;
float m_fCollisionDamageMultiplier;
uint8 m_nCollisionDamageEffect;
diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp
index 28c5240f..c49044a0 100644
--- a/src/objects/ParticleObject.cpp
+++ b/src/objects/ParticleObject.cpp
@@ -248,6 +248,16 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
break;
}
+ case POBJECT_FIRE_HYDRANT_STEAM:
+ {
+ pobj->m_ParticleType = PARTICLE_HYDRANT_STEAM;
+ pobj->m_nNumEffectCycles = 2;
+ pobj->m_nSkipFrames = 2;
+ pobj->m_nCreationChance = 8;
+ pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds() + 5000;
+ break;
+ }
+
case POBJECT_CAR_WATER_SPLASH:
case POBJECT_PED_WATER_SPLASH:
{
@@ -927,6 +937,7 @@ void CParticleObject::UpdateClose(void)
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
CGeneral::GetRandomNumberInRange(0.005f, 0.0075f), this->m_Color, 0, 0, 1, 300);
}
+
for ( int32 i = 0; i < this->m_nNumEffectCycles; i++ )
{
CParticle::AddParticle(this->m_ParticleType, pos, vel, nil, 0.0f, this->m_Color);
diff --git a/src/objects/ParticleObject.h b/src/objects/ParticleObject.h
index f199e533..1ac29451 100644
--- a/src/objects/ParticleObject.h
+++ b/src/objects/ParticleObject.h
@@ -15,6 +15,7 @@ enum eParticleObjectType
POBJECT_WALL_STEAM_SLOWMOTION,
POBJECT_DARK_SMOKE,
POBJECT_FIRE_HYDRANT,
+ POBJECT_FIRE_HYDRANT_STEAM,
POBJECT_CAR_WATER_SPLASH,
POBJECT_PED_WATER_SPLASH,
POBJECT_SPLASHES_AROUND,
@@ -49,7 +50,7 @@ public:
CParticleObject *m_pNext;
CParticleObject *m_pPrev;
CParticle *m_pParticle;
- uint32 m_nRemoveTimer;
+ uint32 m_nRemoveTimer;
eParticleObjectType m_Type;
tParticleType m_ParticleType;
uint8 m_nNumEffectCycles;
@@ -109,4 +110,4 @@ public:
static void Remove(CParticleObject *particleobject);
static CAudioHydrant *Get(int n); // for neo screen droplets
-}; \ No newline at end of file
+};
diff --git a/src/peds/Gangs.cpp b/src/peds/Gangs.cpp
index 240f6b37..5cec5e12 100644
--- a/src/peds/Gangs.cpp
+++ b/src/peds/Gangs.cpp
@@ -21,23 +21,24 @@ CGangInfo::CGangInfo() :
void CGangs::Initialise(void)
{
- SetGangPedModels(GANG_CUBAN, MI_CBA, MI_CBB);
- SetGangPedModels(GANG_HAITIAN, MI_HNA, MI_HNB);
- SetGangPedModels(GANG_STREET, MI_SGA, MI_SGB);
- SetGangPedModels(GANG_DIAZ, MI_CLA, MI_CLB);
- SetGangPedModels(GANG_SECURITY, MI_GDA, MI_GDB);
- SetGangPedModels(GANG_BIKER, MI_BKA, MI_BKB);
- SetGangPedModels(GANG_PLAYER, MI_PGA, MI_PGB);
- SetGangPedModels(GANG_GOLFER, MI_WFOGO, MI_WMOGO);
- SetGangVehicleModel(GANG_CUBAN, MI_CUBAN);
- SetGangVehicleModel(GANG_HAITIAN, MI_VOODOO);
- SetGangVehicleModel(GANG_STREET, MI_GANGBUR);
- SetGangVehicleModel(GANG_DIAZ, -1);
- SetGangVehicleModel(GANG_SECURITY, -1);
- SetGangVehicleModel(GANG_BIKER, MI_ANGEL);
- SetGangVehicleModel(GANG_PLAYER, -1);
- SetGangVehicleModel(GANG_GOLFER, MI_CADDY);
- SetGangWeapons(GANG_GOLFER, WEAPONTYPE_GOLFCLUB, WEAPONTYPE_GOLFCLUB);
+ SetGangPedModels(GANG_MAFIA, MI_GANG01, MI_GANG02);
+ SetGangPedModels(GANG_TRIAD, MI_GANG03, MI_GANG04);
+ SetGangPedModels(GANG_DIABLOS, MI_GANG05, MI_GANG06);
+ SetGangPedModels(GANG_YAKUZA, MI_GANG07, MI_GANG08);
+ SetGangPedModels(GANG_YARDIE, MI_GANG09, MI_GANG10);
+ SetGangPedModels(GANG_COLUMB, MI_GANG11, MI_GANG12);
+ SetGangPedModels(GANG_HOODS, MI_GANG13, MI_GANG14);
+ SetGangPedModels(GANG_FORELLI, MI_GANG15, MI_GANG16);
+ SetGangPedModels(GANG_SINDACCO, MI_GANG17, MI_GANG18);
+ SetGangVehicleModel(GANG_MAFIA, MI_MAFIA);
+ SetGangVehicleModel(GANG_TRIAD, MI_BELLYUP);
+ SetGangVehicleModel(GANG_DIABLOS, MI_DIABLOS);
+ SetGangVehicleModel(GANG_YAKUZA, MI_YAKUZA);
+ SetGangVehicleModel(GANG_YARDIE, MI_YARDIE);
+ SetGangVehicleModel(GANG_COLUMB, MI_COLUMB);
+ SetGangVehicleModel(GANG_HOODS, MI_HOODS);
+ SetGangVehicleModel(GANG_FORELLI, MI_FORELLI_CAR);
+ SetGangVehicleModel(GANG_SINDACCO, MI_SINDACCO_CAR);
#ifdef FIX_BUGS
for (int i = 0; i < NUM_GANGS; i++)
SetGangPedModelOverride(i, -1);
diff --git a/src/peds/Gangs.h b/src/peds/Gangs.h
index c6381343..acb2fb99 100644
--- a/src/peds/Gangs.h
+++ b/src/peds/Gangs.h
@@ -17,15 +17,15 @@ struct CGangInfo
VALIDATE_SIZE(CGangInfo, 0x10);
enum {
- GANG_CUBAN = 0,
- GANG_HAITIAN,
- GANG_STREET,
- GANG_DIAZ,
- GANG_SECURITY,
- GANG_BIKER,
- GANG_PLAYER,
- GANG_GOLFER,
- GANG_9,
+ GANG_MAFIA = 0,
+ GANG_TRIAD,
+ GANG_DIABLOS,
+ GANG_YAKUZA,
+ GANG_YARDIE,
+ GANG_COLUMB,
+ GANG_HOODS,
+ GANG_FORELLI,
+ GANG_SINDACCO,
NUM_GANGS
};
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp
index 6cbe7484..8657c426 100644
--- a/src/peds/Ped.cpp
+++ b/src/peds/Ped.cpp
@@ -307,6 +307,10 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
bDonePositionOutOfCollision = false;
bCanAttackPlayerWithCops = false;
+ bDropsWeaponsOnDeath = false;
+ b1A4_2 = true;
+ bAttacksPlayerWithCops = false;
+
if (CGeneral::GetRandomNumber() & 3)
bHasACamera = false;
else
@@ -8157,6 +8161,62 @@ CPed::ClearWaitState(void)
if (assoc)
assoc->blendDelta = -8.0f;
break;
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ case WAITSTATE_DONH2_CAMERA:
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ case WAITSTATE_JDT2_SHRUG:
+ case WAITSTATE_JDT4_DILDO_TALK:
+ case WAITSTATE_JDT5_CALM_DOWN:
+ case WAITSTATE_JDT5_POINT:
+ case WAITSTATE_JDT6_PICKUP:
+ case WAITSTATE_MAR1_SKIRT:
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ case WAITSTATE_MAR2_CELL_END:
+ case WAITSTATE_MAR2_CELL_TALK:
+ case WAITSTATE_MAR2_FOOT_TAP:
+ case WAITSTATE_MAR3_HOOCHY:
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ case WAITSTATE_SAL3_SEATED_TALK:
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ case WAITSTATE_SAL4_DUST_DOWN:
+ case WAITSTATE_SAL4_GIRL_RUN:
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ case WAITSTATE_SAL7_LOOKOUT:
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ case WAITSTATE_VIC3_WAFT:
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ case WAITSTATE_VIC4_CARRY_BOX:
+ case WAITSTATE_VIC4_CELL_LOOK:
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ case WAITSTATE_TOURIST3:
+ case WAITSTATE_TOURIST2:
+ case WAITSTATE_TOURIST1:
+ case WAITSTATE_MAC2_PLEAD:
+ case WAITSTATE_JDT6_KNOCK:
+ case WAITSTATE_SAL3_SIT_DOWN:
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ assoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_IDLE);
+ if (assoc)
+ assoc->Remove();
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DONH3_HAPPY);
+ if (assoc)
+ assoc->blendDelta = -1.0f;
+ break;
default:
break;
}
@@ -8164,10 +8224,10 @@ CPed::ClearWaitState(void)
}
void
-CPed::SetWaitState(eWaitState state, void *time)
+CPed::SetWaitState(eWaitState state, void *time, bool repeat)
{
AnimationId waitAnim = ANIM_STD_NUM;
- CAnimBlendAssociation *animAssoc;
+ CAnimBlendAssociation *animAssoc = nil;
if (!IsPedInControl())
return;
@@ -8346,7 +8406,7 @@ CPed::SetWaitState(eWaitState state, void *time)
SetFall(-1, ANIM_STD_HIGHIMPACT_FRONT, true);
break;
case WAITSTATE_BOMBER:
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DETONATE, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DETONATE, 4.0f);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
break;
case WAITSTATE_GROUND_ATTACK:
@@ -8365,7 +8425,7 @@ CPed::SetWaitState(eWaitState state, void *time)
break;
}
case WAITSTATE_LANCESITTING:
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_LANCE, ANIM_SUNBATHE_IDLE, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_LANCE, ANIM_SUNBATHE_IDLE, 4.0f);
break;
case WAITSTATE_PLAYANIM_HANDSUP_SIMPLE:
animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSUP, 4.0f);
@@ -8374,12 +8434,193 @@ CPed::SetWaitState(eWaitState state, void *time)
animAssoc->SetDeleteCallback(FinishedWaitCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
break;
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_MPNOTE, ANIM_MULTIPLAYER_CUTSCENE_MPNOTE, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_MPNOTE, ANIM_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_CSMISC,
+ (AnimationId)(ANIM_CS_MISC_IDLE_LOOK + (int)(state - WAITSTATE_CS_MISC_IDLE_LOOK)), 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_DONH2_CAMERA:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_DONH2, ANIM_DONH2_CAMERA, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_DONH3, ANIM_DONH3_HAPPY, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT2, ANIM_JDT2_ANXIOUS_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT2_SHRUG:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT2, ANIM_JDT2_SHRUG);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT4_DILDO_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT4, ANIM_JDT4_DILDO_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT5_CALM_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT5, ANIM_JDT5_CALM_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT5_POINT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT5, ANIM_JDT5_POINT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT6_PICKUP:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT6, ANIM_JDT6_PICKUP);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR1_SKIRT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR1, ANIM_MAR1_SKIRT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_CELL_ANSWER);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_CELL_END:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_CELL_END);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_CELL_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_CELL_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_FOOT_TAP:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_FOOT_TAP);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR3_HOOCHY:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR3, ANIM_MAR3_HOOCHY);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR3, ANIM_MAR3_NOTE_IDLE);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR3, ANIM_MAR3_NOTE_PICKUP);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL1, ANIM_SAL1_BIREFCASE_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL2, ANIM_SAL2_IDLE_SEATED);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL2, ANIM_SAL2_SEAT_TO_STAND);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL3_SEATED_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL3, ANIM_SAL3_SEATED_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL3, ANIM_SAL3_SEATED_IDLE);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL4_DUST_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL4, ANIM_SAL4_DUST_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL4_GIRL_RUN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL4, ANIM_SAL4_GIRL_RUN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL6, ANIM_SAL6_ANGRY_SEATED);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL6, ANIM_SAL6_IDLE_SEATED);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL7_LOOKOUT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL7, ANIM_SAL7_LOOKOUT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC2, ANIM_VIC2_POINT_ANGRY);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC3_WAFT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC3, ANIM_VIC3_WAFT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC3, ANIM_VIC3_PICKUP_ROLL);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC4_CARRY_BOX:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC4, ANIM_VIC4_CARRY_BOX);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC4_CELL_LOOK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC4, ANIM_VIC4_CELL_LOOK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC4, ANIM_VIC4_CRATE_IDLE);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC6, ANIM_VIC6_CELL_ANGRY);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_TOURIST3:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_TOURIST, ANIM_TOURIST3);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_TOURIST2:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_TOURIST, ANIM_TOURIST2);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_TOURIST1:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_TOURIST, ANIM_TOURIST1);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAC2_PLEAD:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAC2, ANIM_MAC2_PLEAD);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT6_KNOCK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT6, ANIM_JDT6_KNOCK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL3_SIT_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL3, ANIM_SAL3_SIT_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC7, ANIM_VIC7_PROD_WITH_FOOT);
+ animAssoc->speed = 1.0f;
+ break;
default:
ClearWaitState();
RestoreHeadingRate();
return;
}
+ bool rep = animAssoc ? repeat : false;
m_nWaitState = state;
+ if (rep)
+ animAssoc->flags |= ASSOC_REPEAT;
}
void
@@ -9337,7 +9578,7 @@ CPed::SetRadioStation(void)
if (IsPlayer() || !m_pMyVehicle || m_pMyVehicle->pDriver != this)
return;
- if (GetModelIndex() != MI_PGA && GetModelIndex() != MI_PGB) {
+ if (GetModelIndex() != MI_GANG13 && GetModelIndex() != MI_GANG14) {
if (m_pMyVehicle->m_nRadioStation != modelInfo->radio1 && m_pMyVehicle->m_nRadioStation != modelInfo->radio2) {
if (CGeneral::GetRandomTrueFalse())
m_pMyVehicle->m_nRadioStation = modelInfo->radio1;
@@ -9350,8 +9591,10 @@ CPed::SetRadioStation(void)
}
void
-CPed::WarpPedIntoCar(CVehicle *car)
+CPed::WarpPedIntoCar(CVehicle *car) // LCS TODO: remove passenger logic
{
+ if (GetPedState() == PED_FACE_PHONE)
+ QuitEnteringCar();
bInVehicle = true;
m_pMyVehicle = car;
m_pMyVehicle->RegisterReference((CEntity **) &m_pMyVehicle);
@@ -9416,6 +9659,77 @@ CPed::WarpPedIntoCar(CVehicle *car)
bChangedSeat = true;
}
+void
+CPed::WarpPedIntoCarAsPassenger(CVehicle* pVehicle, int32 position)
+{
+ if (GetPedState() == PED_FACE_PHONE)
+ QuitEnteringCar();
+ bInVehicle = true;
+ m_pMyVehicle = pVehicle;
+ m_pMyVehicle->RegisterReference((CEntity**)&m_pMyVehicle);
+ m_carInObjective = pVehicle;
+ m_carInObjective->RegisterReference((CEntity**)&m_carInObjective);
+ SetPedState(PED_DRIVING); // TODO: this is PED_PASSENGER, but it needs to have some logic applied first
+ bUsesCollision = false;
+ bIsInTheAir = false;
+ bVehExitWillBeInstant = true;
+ if (pVehicle->IsBike() && !pVehicle->pPassengers[0]) {
+ pVehicle->pPassengers[0] = this;
+ pVehicle->pPassengers[0]->RegisterReference((CEntity**)&pVehicle->pPassengers[0]);
+ }
+ if (position >= 0) {
+ if (!pVehicle->pPassengers[position]) {
+ pVehicle->pPassengers[position] = this;
+ pVehicle->pPassengers[position]->RegisterReference((CEntity**)&pVehicle->pPassengers[position]);
+ }
+ }
+ else {
+ for (int i = 0; i < 4; i++) {
+ if (!pVehicle->pPassengers[i]) {
+ pVehicle->pPassengers[i] = this;
+ pVehicle->pPassengers[i]->RegisterReference((CEntity**)&pVehicle->pPassengers[i]);
+ break;
+ }
+ }
+ }
+
+ if (IsPlayer()) {
+ pVehicle->SetStatus(STATUS_PLAYER);
+ AudioManager.PlayerJustGotInCar();
+ CCarCtrl::RegisterVehicleOfInterest(pVehicle);
+ }
+ else {
+ pVehicle->SetStatus(STATUS_PHYSICS);
+ }
+
+ CWorld::Remove(this);
+ SetPosition(pVehicle->GetPosition());
+ CWorld::Add(this);
+
+ if (pVehicle->bIsAmbulanceOnDuty) {
+ pVehicle->bIsAmbulanceOnDuty = false;
+ --CCarCtrl::NumAmbulancesOnDuty;
+ }
+ if (pVehicle->bIsFireTruckOnDuty) {
+ pVehicle->bIsFireTruckOnDuty = false;
+ --CCarCtrl::NumFiretrucksOnDuty;
+ }
+ if (!pVehicle->bEngineOn) {
+ pVehicle->bEngineOn = true;
+ DMAudio.PlayOneShot(pVehicle->m_audioEntityId, SOUND_CAR_ENGINE_START, 1.0f);
+ }
+
+ RpAnimBlendClumpSetBlendDeltas(GetClump(), ASSOC_PARTIAL, -1000.0f);
+
+ AddInCarAnims(pVehicle, pVehicle->pDriver == this);
+ RemoveWeaponWhenEnteringVehicle();
+
+ if (pVehicle->bIsBus)
+ bRenderPedInCar = false;
+
+ bChangedSeat = true;
+}
+
bool
CPed::HasAttractor(void)
{
@@ -9602,6 +9916,247 @@ CPed::Say(uint16 audio, int32 time)
}
}
+void
+CPed::LoadNonStandardPedAnim(eWaitState waitState)
+{
+ switch(waitState) {
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("MPNote"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_CS_MISC_IDLE_LOOK:
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ case WAITSTATE_CS_MISC_IDLE_CELL_TALK:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("cs_misc"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_DONH2_CAMERA:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("donh2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("donh3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ case WAITSTATE_JDT2_SHRUG:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT4_DILDO_TALK:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt4"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT5_CALM_DOWN:
+ case WAITSTATE_JDT5_POINT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt5"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT6_PICKUP:
+ case WAITSTATE_JDT6_KNOCK:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt6"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAR1_SKIRT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mar1"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ case WAITSTATE_MAR2_CELL_END:
+ case WAITSTATE_MAR2_CELL_TALK:
+ case WAITSTATE_MAR2_FOOT_TAP:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mar2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAR3_HOOCHY:
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mar3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal1"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL3_SEATED_TALK:
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ case WAITSTATE_SAL3_SIT_DOWN:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL4_DUST_DOWN:
+ case WAITSTATE_SAL4_GIRL_RUN:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal4"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal6"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL7_LOOKOUT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal7"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC3_WAFT:
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC4_CARRY_BOX:
+ case WAITSTATE_VIC4_CELL_LOOK:
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic4"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic6"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_TOURIST3:
+ case WAITSTATE_TOURIST2:
+ case WAITSTATE_TOURIST1:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("tourist"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAC2_PLEAD:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mac2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic7"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ default:
+ CStreaming::RequestAnim(0, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ }
+ CStreaming::LoadAllRequestedModels(false);
+}
+
+void
+CPed::UnloadNonStandardPedAnim(eWaitState waitState)
+{
+ switch(waitState) {
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ if(CAnimManager::GetAnimationBlock("MPNote"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("MPNote"));
+ break;
+ case WAITSTATE_CS_MISC_IDLE_LOOK:
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ case WAITSTATE_CS_MISC_IDLE_CELL_TALK:
+ if(CAnimManager::GetAnimationBlock("cs_misc"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("cs_misc"));
+ break;
+ case WAITSTATE_DONH2_CAMERA:
+ if(CAnimManager::GetAnimationBlock("donh2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("donh2"));
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ if(CAnimManager::GetAnimationBlock("donh3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("donh3"));
+ break;
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ case WAITSTATE_JDT2_SHRUG:
+ if(CAnimManager::GetAnimationBlock("cs_misc"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("cs_misc"));
+ break;
+ case WAITSTATE_JDT4_DILDO_TALK:
+ if(CAnimManager::GetAnimationBlock("jdt4"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("jdt4"));
+ break;
+ case WAITSTATE_JDT5_CALM_DOWN:
+ case WAITSTATE_JDT5_POINT:
+ if(CAnimManager::GetAnimationBlock("jdt5"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("jdt5"));
+ break;
+ case WAITSTATE_JDT6_PICKUP:
+ case WAITSTATE_JDT6_KNOCK:
+ if(CAnimManager::GetAnimationBlock("jdt6"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("jdt6"));
+ break;
+ case WAITSTATE_MAR1_SKIRT:
+ if(CAnimManager::GetAnimationBlock("mar1"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mar1"));
+ break;
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ case WAITSTATE_MAR2_CELL_END:
+ case WAITSTATE_MAR2_CELL_TALK:
+ case WAITSTATE_MAR2_FOOT_TAP:
+ if(CAnimManager::GetAnimationBlock("mar2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mar2"));
+ break;
+ case WAITSTATE_MAR3_HOOCHY:
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ if(CAnimManager::GetAnimationBlock("mar3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mar3"));
+ break;
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ if(CAnimManager::GetAnimationBlock("sal1"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal1"));
+ break;
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ if(CAnimManager::GetAnimationBlock("sal2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal2"));
+ break;
+ case WAITSTATE_SAL3_SEATED_TALK:
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ case WAITSTATE_SAL3_SIT_DOWN:
+ if(CAnimManager::GetAnimationBlock("sal3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal3"));
+ break;
+ case WAITSTATE_SAL4_DUST_DOWN:
+ case WAITSTATE_SAL4_GIRL_RUN:
+ if(CAnimManager::GetAnimationBlock("sal4"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal4"));
+ break;
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ if(CAnimManager::GetAnimationBlock("sal6"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal6"));
+ break;
+ case WAITSTATE_SAL7_LOOKOUT:
+ if(CAnimManager::GetAnimationBlock("sal7"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal7"));
+ break;
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ if(CAnimManager::GetAnimationBlock("vic2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic2"));
+ break;
+ case WAITSTATE_VIC3_WAFT:
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ if(CAnimManager::GetAnimationBlock("vic3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic3"));
+ break;
+ case WAITSTATE_VIC4_CARRY_BOX:
+ case WAITSTATE_VIC4_CELL_LOOK:
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ if(CAnimManager::GetAnimationBlock("vic4"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic4"));
+ break;
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ if(CAnimManager::GetAnimationBlock("vic6"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic6"));
+ break;
+ case WAITSTATE_TOURIST3:
+ case WAITSTATE_TOURIST2:
+ case WAITSTATE_TOURIST1:
+ if(CAnimManager::GetAnimationBlock("tourist"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("tourist"));
+ break;
+ case WAITSTATE_MAC2_PLEAD:
+ if(CAnimManager::GetAnimationBlock("mac2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mac2"));
+ break;
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ if(CAnimManager::GetAnimationBlock("vic7"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic7"));
+ break;
+ default:
+ break;
+ }
+}
+
+
#ifdef COMPATIBLE_SAVES
#define CopyFromBuf(buf, data) memcpy(&data, buf, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
#define CopyToBuf(buf, data) memcpy(buf, &data, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
diff --git a/src/peds/Ped.h b/src/peds/Ped.h
index 26cdf03f..f415b386 100644
--- a/src/peds/Ped.h
+++ b/src/peds/Ped.h
@@ -100,9 +100,31 @@ enum PedFightMoves
{
FIGHTMOVE_NULL,
// Attacker
- FIGHTMOVE_STDPUNCH,
+// FIGHTMOVE_STDPUNCH,
FIGHTMOVE_IDLE,
FIGHTMOVE_SHUFFLE_F,
+ // Combos
+ FIGHTMOVE_COMBO_A1,
+ FIGHTMOVE_COMBO_A2,
+ FIGHTMOVE_COMBO_A3,
+ FIGHTMOVE_COMBO_B1,
+ FIGHTMOVE_COMBO_B2,
+ FIGHTMOVE_COMBO_B3,
+ // Melee
+ FIGHTMOVE_MELEE1,
+ FIGHTMOVE_MELEE2,
+ FIGHTMOVE_MELEE3,
+ // Special
+ FIGHTMOVE_GROUNDKICK,
+ // Opponent
+ FIGHTMOVE_HITFRONT,
+ FIGHTMOVE_HITBACK,
+ FIGHTMOVE_HITRIGHT,
+ FIGHTMOVE_HITLEFT,
+ FIGHTMOVE_HITONFLOOR,
+ FIGHTMOVE_HITBEHIND,
+ FIGHTMOVE_IDLE2NORM,
+/*
FIGHTMOVE_KNEE,
FIGHTMOVE_PUNCHHOOK,
FIGHTMOVE_PUNCHJAB,
@@ -134,7 +156,16 @@ enum PedFightMoves
FIGHTMOVE_MELEE2,
FIGHTMOVE_MELEE3,
FIGHTMOVE_IDLE2NORM,
- NUM_FIGHTMOVES
+*/
+
+ NUM_FIGHTMOVES,
+
+ // LCS replacements for the old names:
+ // NB: this may be totally bogus, i just need it to compile
+ FIGHTMOVE_PUNCH = FIGHTMOVE_COMBO_A2,
+ FIGHTMOVE_FWDRIGHT = FIGHTMOVE_COMBO_B1,
+ FIGHTMOVE_LONGKICK = FIGHTMOVE_COMBO_B2,
+ FIGHTMOVE_ROUNDHOUSE = FIGHTMOVE_COMBO_B3,
};
enum ePedPieceTypes
@@ -185,6 +216,56 @@ enum eWaitState {
WAITSTATE_GROUND_ATTACK,
WAITSTATE_LANCESITTING,
WAITSTATE_PLAYANIM_HANDSUP_SIMPLE,
+ WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE,
+ WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP,
+ WAITSTATE_CS_MISC_IDLE_LOOK,
+ WAITSTATE_CS_MISC_IDLE_NO,
+ WAITSTATE_CS_MISC_IDLE_YES,
+ WAITSTATE_CS_MISC_IDLE_CHAT2,
+ WAITSTATE_CS_MISC_IDLE_COUGH,
+ WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE,
+ WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT,
+ WAITSTATE_CS_MISC_IDLE_CELL_TALK,
+ WAITSTATE_DONH2_CAMERA,
+ WAITSTATE_DONH3_HAPPY,
+ WAITSTATE_JDT2_ANXIOUS_TALK,
+ WAITSTATE_JDT2_SHRUG,
+ WAITSTATE_JDT4_DILDO_TALK,
+ WAITSTATE_JDT5_CALM_DOWN,
+ WAITSTATE_JDT5_POINT,
+ WAITSTATE_JDT6_PICKUP,
+ WAITSTATE_MAR1_SKIRT,
+ WAITSTATE_MAR2_CELL_ANSWER,
+ WAITSTATE_MAR2_CELL_END,
+ WAITSTATE_MAR2_CELL_TALK,
+ WAITSTATE_MAR2_FOOT_TAP,
+ WAITSTATE_MAR3_HOOCHY,
+ WAITSTATE_MAR3_NOTE_IDLE,
+ WAITSTATE_MAR3_NOTE_PICKUP,
+ WAITSTATE_SAL1_BIREFCASE_DOWN,
+ WAITSTATE_SAL2_IDLE_SEATED,
+ WAITSTATE_SAL2_SEAT_TO_STAND,
+ WAITSTATE_SAL3_SEATED_TALK,
+ WAITSTATE_SAL3_SEATED_IDLE,
+ WAITSTATE_SAL4_DUST_DOWN,
+ WAITSTATE_SAL4_GIRL_RUN,
+ WAITSTATE_SAL6_ANGRY_SEATED,
+ WAITSTATE_SAL6_IDLE_SEATED,
+ WAITSTATE_SAL7_LOOKOUT,
+ WAITSTATE_VIC2_POINT_ANGRY,
+ WAITSTATE_VIC3_WAFT,
+ WAITSTATE_VIC3_PICKUP_ROLL,
+ WAITSTATE_VIC4_CARRY_BOX,
+ WAITSTATE_VIC4_CELL_LOOK,
+ WAITSTATE_VIC4_CRATE_IDLE,
+ WAITSTATE_VIC6_CELL_ANGRY,
+ WAITSTATE_TOURIST3,
+ WAITSTATE_TOURIST2,
+ WAITSTATE_TOURIST1,
+ WAITSTATE_MAC2_PLEAD,
+ WAITSTATE_JDT6_KNOCK,
+ WAITSTATE_SAL3_SIT_DOWN,
+ WAITSTATE_VIC7_PROD_WITH_FOOT
};
enum eObjective {
@@ -347,7 +428,8 @@ enum PedState
PED_EXIT_CAR,
PED_HANDS_UP,
PED_ARRESTED,
- PED_DEPLOY_STINGER
+ PED_DEPLOY_STINGER,
+ PED_STATE64
};
enum eMoveState {
@@ -375,7 +457,7 @@ public:
float m_fCollisionSpeed;
// cf. https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CPed.h from R*
- uint32 bIsStanding : 1;
+ uint32 bIsStanding : 1; // 0x194 on PS2, 0x1A4 on android
uint32 bWasStanding : 1;
uint32 bIsAttacking : 1; // doesn't reset after fist fight
uint32 bIsPointingGunAt : 1;
@@ -469,11 +551,12 @@ public:
uint32 bDrownsInWater : 1;
uint32 bWaitForLeaderToComeCloser : 1;
uint32 bHeldHostageInCar : 1;
+ uint32 b19C_10 : 1;
uint32 bIsPlayerFriend : 1;
uint32 bHeadStuckInCollision : 1;
uint32 bDeadPedInFrontOfCar : 1;
- uint32 bStayInCarOnJack : 1;
+ uint32 bStayInCarOnJack : 1;
uint32 bDontFight : 1;
uint32 bDoomAim : 1;
uint32 bCanBeShotInVehicle : 1;
@@ -481,8 +564,8 @@ public:
uint32 bMakeFleeScream : 1;
uint32 bPushedAlongByCar : 1;
uint32 bRemoveMeWhenIGotIntoCar : 1;
- uint32 bIgnoreThreatsBehindObjects : 1;
+ uint32 bIgnoreThreatsBehindObjects : 1;
uint32 bNeverEverTargetThisPed : 1;
uint32 bCrouchWhenScared : 1;
uint32 bKnockedOffBike : 1;
@@ -490,18 +573,42 @@ public:
uint32 bCollectBusFare : 1;
uint32 bBoughtIceCream : 1;
uint32 bDonePositionOutOfCollision : 1;
- uint32 bCanAttackPlayerWithCops : 1;
+
+ uint32 bCanAttackPlayerWithCops : 1; // 1A1_1 on PS2
+ uint32 bOnlyAllowedToSitBehind : 1;
+ uint32 bOnlyAllowedToSitInFront : 1;
+ uint32 b1A1_8 : 1;
+ uint32 b1A1_10 : 1;
+ uint32 bOverrideMoveAnim : 1;
#ifdef KANGAROO_CHEAT
// our own flags
uint32 m_ped_flagI80 : 1; // KANGAROO_CHEAT define makes use of this as cheat toggle
#endif
- uint8 m_gangFlags;
- uint8 m_unused15D; // these 3 can't be padding but had to actually have been members ...
- uint8 m_unused15E;
- uint8 m_unused15F;
- uint8 CharCreatedBy;
+ uint16 m_gangFlags; // <- this one is uint16
+
+ uint8 bDropsWeaponsOnDeath : 1;
+ uint8 b1A4_2 : 1; // something to do with car hostages
+ uint8 bAttacksPlayerWithCops : 1;
+ uint8 b1A4_8 : 1;
+ uint8 b1A4_10 : 1;
+ uint8 b1A4_20 : 1;
+ uint8 b1A4_40 : 1;
+ uint8 b1A4_80 : 1;
+
+ uint8 bCanBeTargettedByLeader : 1;
+ uint8 b1A5_2 : 1;
+ uint8 b1A5_4 : 1;
+ uint8 b1A5_8 : 1;
+ uint8 b1A5_10 : 1;
+ uint8 b1A5_20 : 1;
+ uint8 b1A5_40 : 1;
+ uint8 b1A5_80 : 1;
+
+ uint8 unk_1A6; // <- init with 100 in constructor
+
+ uint8 CharCreatedBy; // 1AC
eObjective m_objective;
eObjective m_prevObjective;
CPed *m_pedInObjective;
@@ -550,6 +657,8 @@ public:
float m_fHealth;
float m_fArmour;
uint32 m_nExtendedRangeTimer;
+ uint32 m_nScriptShootTimer;
+ uint32 m_nScriptAttackTimer;
int16 m_routeLastPoint;
uint16 m_routeStartPoint;
int16 m_routePointsPassed;
@@ -596,7 +705,7 @@ public:
uint32 m_delayedWeaponAmmo;
uint8 m_currentWeapon; // eWeaponType
uint8 m_maxWeaponTypeAllowed; // eWeaponType
- uint8 m_wepSkills;
+ uint8 m_wepSkills; // TODO - missing?
uint8 m_wepAccuracy;
CEntity *m_pPointGunAt;
CVector m_vecHitLastPos;
@@ -649,6 +758,7 @@ public:
uint32 m_lastComment;
CVector m_vecSpotToGuard;
float m_radiusToGuard;
+ float m_fMaxHealth;
static void *operator new(size_t) throw();
static void *operator new(size_t, int) throw();
@@ -720,6 +830,7 @@ public:
void SetObjective(eObjective);
void SetObjective(eObjective, int16, int16);
void SetObjective(eObjective, CVector);
+ void SetObjective(eObjective, CVector, float);
void SetObjective(eObjective, float, const CVector&);
void ClearChat(void);
void InformMyGangOfAttack(CEntity*);
@@ -769,7 +880,7 @@ public:
void SetEvasiveDive(CPhysical*, uint8);
void SetAttack(CEntity*);
void StartFightAttack(uint8);
- void SetWaitState(eWaitState, void*);
+ void SetWaitState(eWaitState, void*, bool repeat = false);
bool FightStrike(CVector&, bool);
void FightHitPed(CPed*, CVector&, CVector&, int16);
int32 ChooseAttackPlayer(uint8, bool);
@@ -852,6 +963,7 @@ public:
void SetSolicit(uint32 time);
void ScanForInterestingStuff(void);
void WarpPedIntoCar(CVehicle*);
+ void WarpPedIntoCarAsPassenger(CVehicle*, int32);
void SetCarJack(CVehicle*);
bool WarpPedToNearLeaderOffScreen(void);
void Solicit(void);
@@ -980,8 +1092,13 @@ public:
PedState GetPedState(void) { return m_nPedState; }
void SetPedState(PedState state)
{
- if (GetPedState() == PED_FOLLOW_PATH && state != PED_FOLLOW_PATH)
+ if (GetPedState() == PED_FOLLOW_PATH && state != PED_FOLLOW_PATH) {
+ if (m_followPathTargetEnt) {
+ m_followPathTargetEnt->CleanUpOldReference(&m_followPathTargetEnt);
+ m_followPathTargetEnt = nil;
+ }
ClearFollowPath();
+ }
m_nPedState = state;
}
bool Dead(void) { return m_nPedState == PED_DEAD; }
@@ -1006,6 +1123,16 @@ public:
{
return m_pMyVehicle != nil && ((CEntity*)m_pMyVehicle)->GetStatus() != STATUS_WRECKED;
}
+ bool CanStartMission() // used in CAN_PLAYER_START_MISSION and can looks like inlined function
+ {
+ if (m_nPedState >= PED_WANDER_RANGE && m_nPedState < PED_STATES_NO_AI && m_nPedState != PED_ANSWER_MOBILE)
+ return false;
+ if (m_nPedState >= PED_JUMP && m_nPedState < PED_STATES_NO_ST)
+ return false;
+ if (m_nPedState >= PED_ENTER_TRAIN && m_nPedState < PED_DEPLOY_STINGER)
+ return false;
+ return !bIsInTheAir && !bIsLanding && m_fHealth > 0.0f;
+ }
// My names. Inlined in VC
AnimationId GetFireAnimNotDucking(CWeaponInfo* weapon) {
@@ -1024,7 +1151,7 @@ public:
static AnimationId GetFireAnimGround(CWeaponInfo* weapon, bool kickFloorIfNone = true) {
if (weapon->IsFlagSet(WEAPONFLAG_GROUND_2ND))
- return ANIM_WEAPON_CROUCHFIRE;
+ return ANIM_ATTACK_2;
else if (weapon->IsFlagSet(WEAPONFLAG_GROUND_3RD))
return ANIM_WEAPON_FIRE_3RD;
else if (kickFloorIfNone)
@@ -1037,26 +1164,26 @@ public:
if (weapon->IsFlagSet(WEAPONFLAG_ANIMDETONATE))
return ANIM_STD_DETONATE;
else
- return ANIM_WEAPON_FIRE;
+ return ANIM_ATTACK_1;
}
static AnimationId GetCrouchReloadAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_RELOAD))
- return ANIM_WEAPON_CROUCHRELOAD;
+ return ANIM_ATTACK_EXTRA2;
else
return (AnimationId)0;
}
static AnimationId GetCrouchFireAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_CROUCHFIRE))
- return ANIM_WEAPON_CROUCHFIRE;
+ return ANIM_ATTACK_2;
else
return (AnimationId)0;
}
static AnimationId GetReloadAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_RELOAD))
- return ANIM_WEAPON_RELOAD;
+ return ANIM_ATTACK_EXTRA1;
else
return (AnimationId)0;
}
@@ -1157,6 +1284,9 @@ public:
static bool bPedCheat3;
static CVector2D ms_vec2DFleePosition;
+ static void LoadNonStandardPedAnim(eWaitState waitState);
+ static void UnloadNonStandardPedAnim(eWaitState waitState);
+
#ifndef MASTER
// Mobile things
void DebugDrawPedDestination(CPed *, int, int);
diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp
index e204dad9..73522fe3 100644
--- a/src/peds/PedAI.cpp
+++ b/src/peds/PedAI.cpp
@@ -362,6 +362,51 @@ CPed::SetObjective(eObjective newObj, void *entity)
}
}
+void
+CPed::SetObjective(eObjective newObj, CVector dest, float safeDist)
+{
+ if (DyingOrDead())
+ return;
+
+ if (m_prevObjective != OBJECTIVE_NONE && m_prevObjective == newObj)
+ return;
+
+ if (m_objective == newObj) {
+ if (newObj == OBJECTIVE_GOTO_AREA_ANY_MEANS || newObj == OBJECTIVE_GOTO_AREA_ON_FOOT || newObj == OBJECTIVE_RUN_TO_AREA || newObj == OBJECTIVE_SPRINT_TO_AREA) {
+ if (m_nextRoutePointPos == dest && m_distanceToCountSeekDone == safeDist)
+ return;
+ }
+ else if (newObj == OBJECTIVE_GUARD_SPOT) {
+ if (m_vecSpotToGuard == dest && m_radiusToGuard == safeDist)
+ return;
+ }
+ }
+
+ ClearPointGunAt();
+ SetObjectiveTimer(0);
+ bObjectiveCompleted = false;
+ if (IsTemporaryObjective(m_objective)) {
+ m_prevObjective = newObj;
+ }
+ else {
+ if (m_objective != newObj)
+ SetStoredObjective();
+
+ m_objective = newObj;
+ }
+
+ if (newObj == OBJECTIVE_GUARD_SPOT) {
+ m_vecSpotToGuard = dest;
+ m_radiusToGuard = safeDist;
+ }
+ else if (newObj == OBJECTIVE_GOTO_AREA_ANY_MEANS || newObj == OBJECTIVE_GOTO_AREA_ON_FOOT || newObj == OBJECTIVE_RUN_TO_AREA || newObj == OBJECTIVE_SPRINT_TO_AREA) {
+ m_pNextPathNode = nil;
+ m_nextRoutePointPos = dest;
+ m_vecSeekPos = m_nextRoutePointPos;
+ bUsePedNodeSeek = true;
+ }
+}
+
// Only used in 01E1: SET_CHAR_OBJ_FOLLOW_ROUTE opcode
// IDA fails very badly in here, puts a fake loop and ignores SetFollowRoute call...
void
@@ -6454,7 +6499,7 @@ CPed::KillCharOnFootArmed(CVector &ourPos, CVector &targetPos, CVector &distWith
}
}
if (m_pedInObjective->IsPlayer() && m_nPedType != PEDTYPE_COP
- && CharCreatedBy != MISSION_CHAR && FindPlayerPed()->m_pWanted->m_CurrentCops != 0) {
+ && CharCreatedBy != MISSION_CHAR && FindPlayerPed()->m_pWanted->m_CurrentCops != 0/* TODO: && !bAttacksPlayerWithCops*/) {
SetObjective(OBJECTIVE_FLEE_ON_FOOT_TILL_SAFE);
return CANT_ATTACK;
diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp
index 43ded57a..eda59f2e 100644
--- a/src/peds/PedFight.cpp
+++ b/src/peds/PedFight.cpp
@@ -31,6 +31,7 @@ RpClump* flyingClumpTemp;
FightMove tFightMoves[NUM_FIGHTMOVES] =
{
+/*
{ ANIM_STD_NUM, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
{ ANIM_STD_PUNCH, 0.2f, 8.f/30.f, 0.0f, 0.3f, 1.0f, HITLEVEL_HIGH, 1, 0 },
{ ANIM_STD_FIGHT_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
@@ -63,6 +64,7 @@ FightMove tFightMoves[NUM_FIGHTMOVES] =
{ ANIM_ATTACK_2, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
{ ANIM_ATTACK_3, 4.f / 30.f, 7.f / 30.f, 10.f / 30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
{ ANIM_STD_FIGHT_2IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 }
+*/
};
static PedOnGroundState
@@ -182,14 +184,14 @@ CPed::SetPointGunAt(CEntity *to)
if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(curWeapon)) {
aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(curWeapon));
} else {
- aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
}
if (!aimAssoc || aimAssoc->blendDelta < 0.0f) {
if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(curWeapon)) {
aimAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, GetCrouchFireAnim(curWeapon), 4.0f);
} else {
- aimAssoc = CAnimManager::AddAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_WEAPON_FIRE);
+ aimAssoc = CAnimManager::AddAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_ATTACK_1);
}
aimAssoc->blendAmount = 0.0f;
@@ -204,7 +206,7 @@ CPed::PointGunAt(void)
{
CWeaponInfo *weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
float animLoopStart = weaponInfo->m_fAnimLoopStart;
- CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
if (!weaponAssoc || weaponAssoc->blendDelta < 0.0f) {
if (weaponInfo->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) {
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weaponInfo));
@@ -240,7 +242,7 @@ CPed::ClearPointGunAt(void)
RestorePreviousState();
}
weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
if (!animAssoc || animAssoc->blendDelta < 0.0f) {
if (weaponInfo->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) {
animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weaponInfo));
@@ -1013,7 +1015,7 @@ CPed::Attack(void)
weaponAnimAssoc->SetFinishCallback(FinishedAttackCB, this);
} else if (GetSecondFireAnim(ourWeapon)) {
if (weaponAnimAssoc->animId == GetSecondFireAnim(ourWeapon)) {
- weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, ANIM_WEAPON_FIRE, 8.0f);
+ weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, ANIM_ATTACK_1, 8.0f);
} else {
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetSecondFireAnim(ourWeapon), 8.0f);
}
@@ -1128,10 +1130,7 @@ CPed::StartFightAttack(uint8 buttonPressure)
break;
}
} else {
- if (m_curFightMove == FIGHTMOVE_BACKKICK)
- animAssoc->speed = 1.15f;
- else
- animAssoc->speed = 0.8f;
+ animAssoc->speed = 0.8f;
}
if (IsPlayer())
animAssoc->SetCurrentTime(0.08f);
@@ -1239,12 +1238,14 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
default:
if (hitLevel == HITLEVEL_LOW) {
hitAnim = ANIM_STD_KO_SHOT_STOMACH;
+/* LCS: removed
} else if (CGeneral::GetRandomNumber() & 1) {
fall = false;
hitAnim = ANIM_STD_HIT_WALK;
} else if (CGeneral::GetRandomNumber() & 1) {
fall = false;
hitAnim = ANIM_STD_HIT_HEAD;
+*/
} else {
hitAnim = ANIM_STD_KO_SHOT_FACE;
}
@@ -1279,7 +1280,7 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
Say(SOUND_PED_DEFEND);
return;
}
- m_curFightMove = FIGHTMOVE_HITBODY;
+ m_curFightMove = FIGHTMOVE_HITFRONT; // LCS
break;
case HITLEVEL_HIGH:
switch (direction) {
@@ -1293,10 +1294,12 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
m_curFightMove = FIGHTMOVE_HITRIGHT;
break;
default:
- if (unk <= 5)
- m_curFightMove = FIGHTMOVE_HITHEAD;
- else
- m_curFightMove = FIGHTMOVE_HITBIGSTEP;
+ // LCS: removed
+ //if (unk <= 5)
+ // m_curFightMove = FIGHTMOVE_HITHEAD;
+ //else
+ // m_curFightMove = FIGHTMOVE_HITBIGSTEP;
+ m_curFightMove = FIGHTMOVE_HITFRONT;
break;
}
break;
@@ -1312,10 +1315,12 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
m_curFightMove = FIGHTMOVE_HITRIGHT;
break;
default:
- if (unk <= 5)
- m_curFightMove = FIGHTMOVE_HITCHEST;
- else
- m_curFightMove = FIGHTMOVE_HITBIGSTEP;
+ // LCS: removed
+ //if (unk <= 5)
+ // m_curFightMove = FIGHTMOVE_HITCHEST;
+ //else
+ // m_curFightMove = FIGHTMOVE_HITBIGSTEP;
+ m_curFightMove = FIGHTMOVE_HITFRONT;
break;
}
break;
@@ -1468,30 +1473,30 @@ CPed::Fight(void)
CVector touchingNodePos(0.0f, 0.0f, 0.0f);
switch (m_curFightMove) {
- case FIGHTMOVE_KNEE:
- TransformToNode(touchingNodePos, PED_LOWERLEGR);
- break;
- case FIGHTMOVE_PUNCHHOOK:
- case FIGHTMOVE_PUNCHJAB:
- TransformToNode(touchingNodePos, PED_HANDL);
- break;
+ // case FIGHTMOVE_KNEE:
+ // TransformToNode(touchingNodePos, PED_LOWERLEGR);
+ // break;
+ // case FIGHTMOVE_PUNCHHOOK:
+ // case FIGHTMOVE_PUNCHJAB:
+ // TransformToNode(touchingNodePos, PED_HANDL);
+ // break;
case FIGHTMOVE_LONGKICK:
case FIGHTMOVE_ROUNDHOUSE:
- case FIGHTMOVE_FWDLEFT:
- case FIGHTMOVE_BACKRIGHT:
+ // case FIGHTMOVE_FWDLEFT:
+ // case FIGHTMOVE_BACKRIGHT:
case FIGHTMOVE_GROUNDKICK:
TransformToNode(touchingNodePos, PED_FOOTR);
break;
case FIGHTMOVE_FWDRIGHT:
TransformToNode(touchingNodePos, PED_HEAD);
break;
- case FIGHTMOVE_BACKKICK:
- case FIGHTMOVE_BACKFLIP:
- TransformToNode(touchingNodePos, PED_FOOTL);
- break;
- case FIGHTMOVE_BACKLEFT:
- TransformToNode(touchingNodePos, PED_UPPERARML);
- break;
+ // case FIGHTMOVE_BACKKICK:
+ // case FIGHTMOVE_BACKFLIP:
+ // TransformToNode(touchingNodePos, PED_FOOTL);
+ // break;
+ // case FIGHTMOVE_BACKLEFT:
+ // TransformToNode(touchingNodePos, PED_UPPERARML);
+ // break;
default:
TransformToNode(touchingNodePos, PED_HANDR);
break;
@@ -1543,10 +1548,7 @@ CPed::Fight(void)
tFightMoves[m_curFightMove].animId, 8.0f);
if (weaponInfo->m_AnimToPlay != ASSOCGRP_KNIFE || m_curFightMove < FIGHTMOVE_MELEE1) {
- if (m_curFightMove == FIGHTMOVE_BACKKICK)
- animAssoc->speed = 1.15f;
- else
- animAssoc->speed = 0.8f;
+ animAssoc->speed = 0.8f;
} else {
switch (GetWeapon()->m_eWeaponType) {
case WEAPONTYPE_SCREWDRIVER:
@@ -1686,8 +1688,9 @@ CPed::ChooseAttackAI(uint8 buttonPressure, bool fightWithWeapon)
return FIGHTMOVE_IDLE;
}
}
- if (dist < 0.95f && canKneeHead)
- return FIGHTMOVE_KNEE;
+ // LCS: removed
+ //if (dist < 0.95f && canKneeHead)
+ // return FIGHTMOVE_KNEE;
if (dist < 1.4f)
return FIGHTMOVE_PUNCH;
if (dist < 2.f && canKick) {
@@ -1805,9 +1808,11 @@ CPed::ChooseAttackPlayer(uint8 buttonPressure, bool fightWithWeapon)
switch (dir) {
case 0: // forward
if (fightWithWeapon) {
- if (distToVictim < 0.95f - 0.2f && m_nPedState == PED_FIGHT) {
- choosenMove = FIGHTMOVE_KNEE;
- } else {
+ // LCS: removed
+ //if (distToVictim < 0.95f - 0.2f && m_nPedState == PED_FIGHT) {
+ // choosenMove = FIGHTMOVE_KNEE;
+ //} else
+ {
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_CLEAVER) {
if (distToVictim < 0.85f * weaponInfo->m_fRange)
choosenMove = FIGHTMOVE_MELEE1;
@@ -1830,18 +1835,20 @@ CPed::ChooseAttackPlayer(uint8 buttonPressure, bool fightWithWeapon)
}
}
}
- } else if (distToVictim < 0.95f && m_nPedState == PED_FIGHT) {
- choosenMove = FIGHTMOVE_KNEE;
+ // LCS: removed
+ //} else if (distToVictim < 0.95f && m_nPedState == PED_FIGHT) {
+ // choosenMove = FIGHTMOVE_KNEE;
} else if (distToVictim < 1.4f) {
- if (m_curFightMove == FIGHTMOVE_PUNCHJAB) {
+ // LCS: removed
+ /*if (m_curFightMove == FIGHTMOVE_PUNCHJAB) {
choosenMove = FIGHTMOVE_PUNCH;
- } else if (m_curFightMove != FIGHTMOVE_PUNCH || randVal != 1) {
- if (randVal == 2)
+ } else*/ if (m_curFightMove != FIGHTMOVE_PUNCH || randVal != 1) {
+ //if (randVal == 2)
choosenMove = FIGHTMOVE_PUNCH;
- else
- choosenMove = FIGHTMOVE_PUNCHJAB;
+ //else
+ // choosenMove = FIGHTMOVE_PUNCHJAB;
} else {
choosenMove = FIGHTMOVE_LONGKICK;
}
@@ -1849,6 +1856,7 @@ CPed::ChooseAttackPlayer(uint8 buttonPressure, bool fightWithWeapon)
choosenMove = FIGHTMOVE_LONGKICK;
}
break;
+/* LCS: removed
case 1:
choosenMove = FIGHTMOVE_FWDLEFT;
break;
@@ -1861,6 +1869,7 @@ CPed::ChooseAttackPlayer(uint8 buttonPressure, bool fightWithWeapon)
case 4:
choosenMove = FIGHTMOVE_BACKRIGHT;
break;
+*/
default:
choosenMove = FIGHTMOVE_FWDRIGHT;
break;
@@ -1926,20 +1935,22 @@ CPed::ChooseAttackPlayer(uint8 buttonPressure, bool fightWithWeapon)
#else
switch (CGeneral::GetRandomNumberInRange(0,3)) {
#endif
- case 0:
- choosenMove = FIGHTMOVE_PUNCHJAB;
- break;
+ // LCS: hack hack
+ // case 0:
+ // choosenMove = FIGHTMOVE_PUNCHJAB;
+ // break;
+ default:
case 1:
choosenMove = FIGHTMOVE_PUNCH;
break;
case 2:
choosenMove = FIGHTMOVE_LONGKICK;
break;
- case 3:
- choosenMove = FIGHTMOVE_KNEE;
- break;
- default:
- break;
+ // case 3:
+ // choosenMove = FIGHTMOVE_KNEE;
+ // break;
+ // default:
+ // break;
}
}
return choosenMove;
@@ -1982,6 +1993,7 @@ CPed::EndFight(uint8 endType)
void
CPed::PlayHitSound(CPed *hitTo)
{
+#if 0 // LCS: temporarily removed
// That was very complicated to reverse for me...
// First index is our fight move ID (from 1 to 17, total 17), second is the one of we fight with (from 18 to 27, total 10).
enum {
@@ -2052,6 +2064,7 @@ CPed::PlayHitSound(CPed *hitTo)
if (soundId != NO_SND)
DMAudio.PlayOneShot(m_audioEntityId, soundId, (weapon << 8) | ENTITY_TYPE_PED);
+#endif
}
bool
@@ -2183,8 +2196,9 @@ CPed::FightHitPed(CPed *victim, CVector &touchPoint, CVector &dir, int16 piece)
bool brassKnucklePunch = false;
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_BRASSKNUCKLE) {
- if (m_curFightMove == FIGHTMOVE_PUNCHHOOK || m_curFightMove == FIGHTMOVE_PUNCHJAB || m_curFightMove == FIGHTMOVE_BACKLEFT ||
- m_curFightMove == FIGHTMOVE_STDPUNCH || m_curFightMove == FIGHTMOVE_PUNCH) {
+ // LCS: removed
+ if (/*m_curFightMove == FIGHTMOVE_PUNCHHOOK || m_curFightMove == FIGHTMOVE_PUNCHJAB || m_curFightMove == FIGHTMOVE_BACKLEFT ||
+ m_curFightMove == FIGHTMOVE_STDPUNCH ||*/ m_curFightMove == FIGHTMOVE_PUNCH) {
brassKnucklePunch = true;
damageMult *= 1.5f;
}
@@ -4172,7 +4186,7 @@ CPed::RemoveWeaponAnims(int unused, float animDelta)
CAnimBlendAssociation *weaponAssoc;
//CWeaponInfo::GetWeaponInfo(unused);
- weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
if (weaponAssoc) {
weaponAssoc->blendDelta = animDelta;
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -4187,7 +4201,7 @@ CPed::RemoveWeaponAnims(int unused, float animDelta)
weaponAssoc->blendDelta = animDelta;
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
}
- weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_RELOAD);
+ weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA1);
if (weaponAssoc) {
weaponAssoc->blendDelta = animDelta;
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
diff --git a/src/peds/PedType.h b/src/peds/PedType.h
index a4698bbb..776dd14d 100644
--- a/src/peds/PedType.h
+++ b/src/peds/PedType.h
@@ -95,6 +95,9 @@ VALIDATE_SIZE(CPedType, 0x20);
enum ePedStats
{
+ PEDSTAT_COWARD,
+ PEDSTAT_SHOPPER,
+ PEDSTAT_OLDSHOPPER,
PEDSTAT_PLAYER,
PEDSTAT_COP,
PEDSTAT_MEDIC,
@@ -106,6 +109,8 @@ enum ePedStats
PEDSTAT_GANG5,
PEDSTAT_GANG6,
PEDSTAT_GANG7,
+ PEDSTAT_GANG8,
+ PEDSTAT_GANG9,
PEDSTAT_STREET_GUY,
PEDSTAT_SUIT_GUY,
PEDSTAT_SENSIBLE_GUY,
@@ -128,13 +133,10 @@ enum ePedStats
PEDSTAT_PSYCHO,
PEDSTAT_STEWARD,
PEDSTAT_SPORTSFAN,
- PEDSTAT_SHOPPER,
- PEDSTAT_OLDSHOPPER,
PEDSTAT_BEACH_GUY,
PEDSTAT_BEACH_GIRL,
PEDSTAT_SKATER,
PEDSTAT_STD_MISSION,
- PEDSTAT_COWARD,
NUM_PEDSTATS
};
diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp
index b3fe0ff0..4fb0ec29 100644
--- a/src/peds/PlayerPed.cpp
+++ b/src/peds/PlayerPed.cpp
@@ -1158,7 +1158,8 @@ void
CPlayerPed::ProcessAnimGroups(void)
{
AssocGroupId groupToSet;
-#ifdef PC_PLAYER_CONTROLS
+//#ifdef PC_PLAYER_CONTROLS
+#if 0 // chainsaw anims missing in LCS
if ((m_fWalkAngle <= -DEGTORAD(50.0f) || m_fWalkAngle >= DEGTORAD(50.0f))
&& TheCamera.Cams[TheCamera.ActiveCam].Using3rdPersonMouseCam()
&& CanStrafeOrMouseControl()) {
diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp
index 495cad16..6a2e5a8f 100644
--- a/src/peds/Population.cpp
+++ b/src/peds/Population.cpp
@@ -1211,10 +1211,11 @@ CPopulation::IsSkateable(CVector const& pos)
return foundCol.surfaceB == SURFACE_TARMAC || foundCol.surfaceB == SURFACE_PAVEMENT;
}
+//--LCS: done
bool
CPopulation::CanJeerAtStripper(int32 model)
{
- return model == MI_WMOBE || model == MI_WMYBE || model == MI_WMOST || model == MI_BMYBB;
+ return false;
}
void
@@ -1246,46 +1247,38 @@ bool
CPopulation::IsMale(int32 model)
{
switch (model) {
- case MI_HMYST:
- case MI_HMOST:
- case MI_HMYRI:
- case MI_HMORI:
- case MI_HMYBE:
- case MI_HMOBE:
- case MI_HMOTR:
- case MI_HMYAP:
- case MI_HMOCA:
- case MI_BMODK:
- case MI_BMYKR:
- case MI_BMYST:
- case MI_BMOST:
- case MI_BMYRI:
- case MI_BMYBE:
- case MI_BMOBE:
- case MI_BMYBU:
- case MI_BMOTR:
- case MI_BMYPI:
- case MI_BMYBB:
- case MI_WMYCR:
- case MI_WMYST:
- case MI_WMOST:
- case MI_WMYRI:
- case MI_WMORI:
- case MI_WMYBE:
- case MI_WMOBE:
- case MI_WMYCW:
- case MI_WMYGO:
- case MI_WMOGO:
- case MI_WMYLG:
- case MI_WMYBU:
- case MI_WMOBU:
- case MI_WMOTR:
- case MI_WMYPI:
- case MI_WMOCA:
- case MI_WMYJG:
- case MI_WMYSK:
-
- // BUG? Why no JMOTO?
+ // TODO(LCS): do this right
+ case MI_TAXI_D:
+ case MI_PIMP:
+ case MI_CRIMINAL01:
+ case MI_CRIMINAL02:
+ case MI_MALE02:
+ case MI_MALE03:
+ case MI_P_MAN1:
+ case MI_P_MAN2:
+ case MI_CT_MAN1:
+ case MI_CT_MAN2:
+ case MI_LI_MAN1:
+ case MI_LI_MAN2:
+ case MI_DOCKER1:
+ case MI_DOCKER2:
+ case MI_SCUM_MAN:
+ case MI_WORKER1:
+ case MI_WORKER2:
+ case MI_B_MAN1:
+ case MI_B_MAN2:
+ case MI_B_MAN3:
+ case MI_MOD_MAN:
+ case MI_ST_MAN:
+ case MI_FAN_MAN1:
+ case MI_FAN_MAN2:
+ case MI_HOS_MAN:
+ case MI_CONST1:
+ case MI_CONST2:
+ case MI_STUD_MAN:
+ case MI_CAS_MAN:
+ case MI_CAMP_MAN:
+ case MI_HITMAN:
return true;
default:
return false;
@@ -1296,41 +1289,34 @@ bool
CPopulation::IsFemale(int32 model)
{
switch (model) {
- case MI_HFYST:
- case MI_HFOST:
- case MI_HFYRI:
- case MI_HFORI:
- case MI_HFYBE:
- case MI_HFOBE:
- case MI_HFYBU:
- case MI_HFYMD:
- case MI_HFYCG:
- case MI_HFYPR:
- case MI_HFOTR:
- case MI_BFYST:
- case MI_BFOST:
- case MI_BFYRI:
- case MI_BFORI:
- case MI_BFYBE:
- case MI_BFOBE:
- case MI_BFYPR:
- case MI_BFOTR:
- case MI_WFYST:
- case MI_WFOST:
- case MI_WFYRI:
- case MI_WFORI:
- case MI_WFYBE:
- case MI_WFOBE:
- case MI_WFOGO:
- case MI_WFYLG:
- case MI_WFYBU:
- case MI_WFYPR:
- case MI_WFOTR:
- case MI_WFYJG:
- case MI_WFYSK:
- case MI_WFYSH:
- case MI_WFOSH:
- case MI_JFOTO:
+ // TODO(LCS): do this right
+ case MI_FEMALE01:
+ case MI_FEMALE02:
+ case MI_FEMALE03:
+ case MI_FATFEMALE01:
+ case MI_FATFEMALE02:
+ case MI_PROSTITUTE:
+ case MI_PROSTITUTE2:
+ case MI_P_WOM1:
+ case MI_P_WOM2:
+ case MI_CT_WOM1:
+ case MI_CT_WOM2:
+ case MI_LI_WOM1:
+ case MI_LI_WOM2:
+ case MI_SCUM_WOM:
+ case MI_B_WOM1:
+ case MI_B_WOM2:
+ case MI_B_WOM3:
+ case MI_MOD_WOM:
+ case MI_ST_WOM:
+ case MI_FAN_WOM:
+ case MI_HOS_WOM:
+ case MI_SHOPPER1:
+ case MI_SHOPPER2:
+ case MI_SHOPPER3:
+ case MI_STUD_WOM:
+ case MI_CAS_WOM:
+ case MI_CAMP_WOM:
return true;
default:
return false;
@@ -1340,23 +1326,7 @@ CPopulation::IsFemale(int32 model)
bool
CPopulation::IsSunbather(int32 model)
{
- switch (model) {
- case MI_HFYBE:
- case MI_HFOBE:
- case MI_HMYBE:
- case MI_HMOBE:
- case MI_BFYBE:
- case MI_BMYBE:
- case MI_BFOBE:
- case MI_BMOBE:
- case MI_WFYBE:
- case MI_WMYBE:
- case MI_WFOBE:
- case MI_WMOBE:
- return true;
- default:
- return false;
- }
+ return false;
}
int32
@@ -1368,13 +1338,13 @@ CPopulation::ComputeRandomisedGangSize(void)
bool
CPopulation::CanSolicitPlayerInCar(int32 model)
{
- return model == MI_HFYPR || model == MI_BFYPR || model == MI_WFYPR;
+ return model == MI_PROSTITUTE || model == MI_PROSTITUTE2;
}
bool
CPopulation::CanSolicitPlayerOnFoot(int32 model)
{
- return model == MI_HFYMD || model == MI_HFYCG || model == MI_BFOTR || model == MI_BMOTR || model == MI_WFOTR || model == MI_WMOTR;
+ return model == MI_B_WOM3 || model == MI_FEMALE01 || model == MI_FEMALE02 || model == MI_FEMALE03;
}
bool
diff --git a/src/renderer/Coronas.cpp b/src/renderer/Coronas.cpp
index d9bf88d1..a00dc165 100644
--- a/src/renderer/Coronas.cpp
+++ b/src/renderer/Coronas.cpp
@@ -913,9 +913,9 @@ CEntity::ProcessLightsForEntity(void)
effect->light.shadowSize, 0.0f,
0.0f, -effect->light.shadowSize,
128,
- effect->col.r*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
- effect->col.g*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
- effect->col.b*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
+ effect->col.r,
+ effect->col.g,
+ effect->col.b,
15.0f, 1.0f, 40.0f, false, 0.0f);
}else if(lightFlickering){
CShadows::StoreStaticShadow((uintptr)this + i, SHADOWTYPE_ADDITIVE,
diff --git a/src/renderer/Fluff.cpp b/src/renderer/Fluff.cpp
index 59d3668d..b914d1bc 100644
--- a/src/renderer/Fluff.cpp
+++ b/src/renderer/Fluff.cpp
@@ -424,8 +424,9 @@ void CMovingThings::Init()
}
}
- CEscalators::Init();
- aScrollBars[0].Init(CVector(-1069.209f, 1320.126f, 18.848f), CVector(-1069.209f, 1342.299f, 22.612f), SCROLL_ARENA_STRING, 128, 255, 0, 0.3f);
+// LCS: removed
+// CEscalators::Init();
+// aScrollBars[0].Init(CVector(-1069.209f, 1320.126f, 18.848f), CVector(-1069.209f, 1342.299f, 22.612f), SCROLL_ARENA_STRING, 128, 255, 0, 0.3f);
}
void CMovingThings::Shutdown()
diff --git a/src/renderer/Font.cpp b/src/renderer/Font.cpp
index 6ae10011..b38b0efd 100644
--- a/src/renderer/Font.cpp
+++ b/src/renderer/Font.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "Sprite2d.h"
#include "TxdStore.h"
#include "Font.h"
@@ -7,6 +8,9 @@
#include "FileMgr.h"
#endif
#include "Timer.h"
+#include "Frontend.h"
+
+//--LCS: todo scaling (needs CSprite2d reversed), SuspendHandler, ReplaceGermanSZ, volatile mem, other todos
void
AsciiToUnicode(const char *src, wchar *dst)
@@ -53,221 +57,44 @@ bool16 CFont::NewLine;
CSprite2d CFont::Sprite[MAX_FONTS];
CFontRenderState CFont::RenderState;
-#ifdef MORE_LANGUAGES
-uint8 CFont::LanguageSet = FONT_LANGSET_EFIGS;
-int32 CFont::Slot = -1;
-#define JAP_TERMINATION (0x8000 | '~')
-
-int16 CFont::Size[LANGSET_MAX][MAX_FONTS][210] = {
- {
-#else
-int16 CFont::Size[MAX_FONTS][210] = {
-#endif
- {
- //FONT2 EFIGS
- //SPC,!, $, %, &, ', [, ], +, , -, .,
- 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33,
- //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??,
- 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30,
- // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O,
- 12, 16, 19, 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19,
- //P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, , \,
- #ifdef FIX_BUGS
- 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19,
- #else
- 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 19, 19,
- #endif
- //??,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o,
- 12, 14, 11, 11, 16, 11, 12, 14, 14, 10, 13, 12, 10, 19, 18, 12,
- //p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??,
- 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37,
- //, , , , , , , , , , , , , , , ,
- 16, 16, 16, 16, 33, 17, 18, 18, 18, 18, 11, 11, 11, 11, 19, 19,
- //, , , , , , , , , , , , , , , ,
- 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11,
- //, , , , , , , , , , , , , , , ,
- #ifdef FIX_BUGS
- 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 22, 18, 21,
- #else
- 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 24, 18, 21,
- #endif
- //i,BLANKS
- 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- //space, unprop
- 19, 16
- },
- {
- //FONT1 EFIGS
- //Characters with a '2' refer to the Pricedown font.
- //Characters that are referred as '*I' are characters that contain icons for PS2/XBOX, but contain regular characters on PC
- //in order to display them properly in the Keyboard controls menu.
- //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I,
- 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26,
- //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?,
- 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19,
- //TM,A, B, C, D, E, F, G, H, I, J, K, L, M, N, O,
- 20, 22, 22, 21, 22, 18, 18, 22, 22, 9, 14, 21, 18, 27, 21, 24,
- //P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, , ,
- #ifdef FIX_BUGS
- 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19,
- #else
- 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 10, 19,
- #endif
- //(C),a, b, c, d, e, f, g, h, i, j, k, l, m, n, o,
- 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, 17,
- //p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2,
- 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15,
- //, , , , , , , , , , , , , , , ,
- 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23,
- //, , , , , , , , , , , , , , , ,
- 23, 23, 24, 24, 24, 24, 20, 19, 17, 17, 17, 30, 16, 17, 17, 17,
- //, , , , , , , , , , , , , , , ,
- #ifdef FIX_BUGS
- 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19,
- #else
- 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 19, 20, 20,
- #endif
- //02,12,22, 32, 42, 52, 62, 72, 82, 92, :2, A2, B2, C2, D2, E2,
- 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, 19, 19, 20, 19,
- //F2,G2,H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2,
- 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19,
- //V2,W2,X2, Y2, Z2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9,
- //2,2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, '2, .2,
- #ifdef FIX_BUGS
- 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9,
- #else
- 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 10, 9,
- #endif
- //space, unprop
- 10, 20
- }
-
-#ifdef MORE_LANGUAGES
- },
- {
- {
- 5, 9, 9, 0, 17, 17, 23, 3, 21, 18, 0, 8, 3, 8, 3, 0,
- 16, 9, 16, 16, 15, 19, 15, 14, 17, 17, 4, 4, 0, 0, 0, 17,
- 19, 17, 19, 15, 21, 18, 19, 16, 21, 13, 15, 21, 20, 28, 21, 18,
- 22, 17, 21, 20, 18, 18, 20, 26, 22, 18, 18, 0, 8, 0, 9, 8,
- 0, 14, 11, 12, 16, 11, 13, 13, 15, 10, 14, 15, 11, 21, 17, 10,
- 20, 15, 12, 12, 16, 17, 13, 16, 13, 21, 11, 0, 0, 0, 0, 0,
- 20, 19, 19, 22, 27, 15, 18, 18, 20, 26, 21, 23, 17, 22, 21, 17,
- 26, 25, 26, 17, 20, 26, 17, 16, 11, 12, 13, 21, 11, 17, 17, 12,
- 21, 17, 17, 15, 24, 16, 10, 20, 23, 16, 7, 9, 16, 23, 12, 11,
- 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, 19,
- 19, 16
- },
- {
- 11, 5, 10, 15, 19, 22, 20, 5, 9, 8, 11, 12, 5, 12, 6, 12,
- 19, 5, 18, 19, 20, 18, 19, 18, 20, 19, 5, 6, 26, 12, 30, 19,
- 23, 21, 20, 20, 20, 16, 16, 21, 19, 5, 13, 19, 16, 24, 20, 21,
- 20, 21, 20, 19, 17, 20, 21, 30, 22, 21, 20, 25, 13, 30, 5, 9,
- 10, 15, 15, 14, 15, 16, 10, 15, 15, 5, 5, 15, 5, 23, 15, 16,
- 15, 15, 9, 16, 10, 15, 17, 24, 18, 15, 15, 27, 5, 19, 2, 2,
- 20, 20, 16, 23, 30, 19, 20, 20, 21, 24, 19, 19, 20, 23, 22, 19,
- 27, 29, 25, 20, 20, 28, 24, 16, 16, 14, 19, 25, 16, 16, 16, 17,
- 19, 16, 16, 17, 25, 19, 15, 23, 26, 21, 16, 14, 22, 20, 16, 19,
- 15, 14, 15, 16, 17, 15, 15, 15, 15, 15, 7, 15, 15, 15, 15, 15,
- 13, 15, 15, 7, 15, 16, 13, 23, 15, 15, 15, 15, 15, 15, 17, 15,
- 16, 24, 17, 17, 17, 15, 15, 13, 20, 23, 15, 17, 17, 16, 24, 15,
- 15, 15, 23, 18, 15, 23, 26, 23, 16, 15, 23, 15, 15, 19, 2, 2,
- 10, 20
- },
- },
- {
- {
- //FONT2 EFIGS
- //SPC,!, $, %, &, ', [, ], +, , -, .,
- 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33,
- //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??,
- 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30,
- // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O,
- 12, 16, 19, 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19,
- //P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, , \,
- 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19,
- //??,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o,
- 12, 14, 11, 11, 16, 11, 12, 14, 14, 10, 13, 12, 10, 19, 18, 12,
- //p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??,
- 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37,
- //, , , , , , , , , , , , , , , ,
- 16, 16, 16, 16, 33, 17, 18, 18, 18, 18, 11, 11, 11, 11, 19, 19,
- //, , , , , , , , , , , , , , , ,
- 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11,
- //, , , , , , , , , , , , , , , ,
- 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 22, 18, 21,
- //i,BLANKS
- 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- //space, unprop
- 19, 16
- },
- {
- //FONT1 EFIGS
- //Characters with a '2' refer to the Pricedown font.
- //Characters that are referred as '*I' are characters that contain icons for PS2/XBOX, but contain regular characters on PC
- //in order to display them properly in the Keyboard controls menu.
- //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I,
- 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26,
- //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?,
- 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19,
- //TM,A, B, C, D, E, F, G, H, I, J, K, L, M, N, O,
- 20, 22, 22, 21, 22, 18, 18, 22, 22, 9, 14, 21, 18, 27, 21, 24,
- //P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, , ,
- 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19,
- //(C),a, b, c, d, e, f, g, h, i, j, k, l, m, n, o,
- 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, 17,
- //p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2,
- 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15,
- //, , , , , , , , , , , , , , , ,
- 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23,
- //, , , , , , , , , , , , , , , ,
- 23, 23, 24, 24, 24, 24, 20, 19, 17, 17, 17, 30, 16, 17, 17, 17,
- //, , , , , , , , , , , , , , , ,
- 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19,
- //02,12,22, 32, 42, 52, 62, 72, 82, 92, :2, A2, B2, C2, D2, E2,
- 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, 19, 19, 20, 19,
- //F2,G2,H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2,
- 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19,
- //V2,W2,X2, Y2, Z2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9,
- //2,2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, '2, .2,
- 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9,
- //space, unprop
- 10, 20
- }
- }
-#endif
+int16 CFont::Size[MAX_FONTS][419] = {
+ {15, 6, 8, 24, 22, 28, 28, 2, 8, 8, 12, 24, 8, 10, 8, 12, 24, 8, 22, 20, 24, 22, 22, 22, 24, 22, 8, 8, 22, 22, 24, 16, 28, 26, 20, 22, 22, 18, 18,
+ 24, 22, 4, 16, 20, 18, 26, 20, 24, 20, 24, 22, 24, 20, 20, 26, 32, 26, 26, 20, 10, 12, 8, 22, 18, 6, 26, 20, 22, 22, 18, 18, 24, 22, 4, 16, 20, 18, 26,
+ 20, 24, 20, 24, 22, 24, 20, 20, 26, 32, 26, 26, 20, 10, 12, 8, 22, 18, 26, 26, 26, 26, 26, 26, 26, 22, 18, 18, 18, 18, 8, 8, 10, 10, 26, 20, 24, 24, 24,
+ 24, 24, 22, 24, 20, 20, 20, 20, 26, 22, 20, 26, 26, 26, 26, 26, 26, 26, 22, 18, 18, 18, 18, 8, 8, 10, 10, 26, 20, 24, 24, 24, 24, 24, 22, 24, 20, 20, 20,
+ 20, 26, 22, 24, 24, 8, 16, 10, 8, 28, 8, 8, 18, 16, 10, 28, 8, 28, 24, 6, 16, 22, 18, 24, 4, 14, 10, 26, 14, 16, 26, 12, 2, 16, 16, 32, 19, 19, 19,
+ 19, 19, 19, 19, 19, 24, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 2, 0, 0, 0, 0, 0, 0, -2, 0, -2, -2, 0, 0, 0, 0, -2, -2, -2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -2, 0, -2, -2, 0, 0, 0, 0, -2, -2, -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, -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, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 28},
+ {10, 12, 20, 24, 28, 30, 28, 12, 14, 14, 20, 24, 12, 16, 10, 28, 26, 20, 24, 24, 26, 24, 24, 24, 24, 24, 12, 12, 22, 22, 24, 24, 32, 28, 24, 26, 26, 24, 22,
+ 28, 26, 10, 22, 26, 22, 30, 28, 28, 26, 30, 26, 26, 28, 26, 26, 32, 26, 26, 26, 14, 18, 14, 22, 22, 14, 22, 22, 22, 22, 22, 18, 22, 22, 10, 12, 20, 10, 28,
+ 20, 22, 22, 22, 20, 22, 20, 20, 20, 30, 20, 22, 20, 16, 10, 16, 20, 0, 28, 28, 28, 28, 28, 28, 32, 26, 24, 24, 24, 24, 14, 14, 18, 16, 30, 28, 28, 28, 28,
+ 28, 28, 20, 30, 26, 26, 26, 26, 28, 26, 22, 22, 22, 22, 22, 22, 22, 32, 22, 22, 22, 22, 22, 14, 14, 18, 16, 22, 20, 22, 22, 22, 22, 22, 22, 24, 20, 20, 20,
+ 20, 22, 22, 22, 26, 12, 18, 18, 12, 32, 12, 12, 18, 18, 18, 32, 12, 32, 28, 10, 22, 28, 24, 28, 10, 26, 16, 30, 16, 20, 30, 18, 14, 18, 24, 32, 30, 30, 30,
+ 30, 24, 28, 24, 20, 24, 20, 20, 22, 20, 20, 10, 10, 10, 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, -2, 0, 0, 0, -2, -2, 0, 0, 2, 0, 0, 0, 0, -2, -2, 0, 0, 0, -2, -2, -2, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0,
+ 0, 0, -2, -2, 0, 0, -2, 0, -2, 1, 0, -2, -1, 0, 0, 0, -2, 0, 0, 0, -2, 0, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 0, -2, -2, -2, -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, 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, 28},
+ {15, 8, 0, 0, 18, 0, 22, 8, 13, 13, 0, 0, 7, 0, 8, 22, 18, 17, 18, 18, 20, 18, 18, 18, 18, 18, 8, 18, 18, 18, 18, 18, 15, 18, 18, 8, 18, 18, 13,
+ 28, 18, 18, 18, 18, 18, 18, 20, 18, 19, 30, 18, 18, 18, 18, 18, 18, 0, 18, 0, 28, 18, 18, 18, 18, 0, 8, 8, 8, 8, 0, 18, 18, 18, 18, 0, 18, 0, 0,
+ 18, 18, 18, 18, 0, 0, 20, 30, 18, 8, 9, 9, 18, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 22}
};
-#ifdef MORE_LANGUAGES
-int16 Size_jp[] = {
- 15, 14, 16, 20, 19, 26, 22, 11, 18, 18, 27, 26, 13, //; 0
- 19, 20, 27, 19, 15, 19, 19, 21, 19, 20, 18, 19, 15, //; 13
- 13, 28, 15, 32, 15, 35, 15, 19, 19, 19, 19, 17, 16, //; 26
- 19, 20, 15, 19, 20, 14, 17, 19, 19, 19, 19, 19, 19, //; 39
- 19, 19, 20, 25, 20, 19, 19, 33, 31, 39, 37, 39, 37, //; 52
- 21, 21, 21, 19, 17, 15, 23, 21, 15, 19, 20, 16, 19, //; 65
- 19, 19, 20, 20, 17, 22, 19, 22, 22, 19, 22, 22, 23, //; 78
- 35, 35, 35, 35, 37, 19, 19, 19, 19, 29, 19, 19, 19, //; 91
- 19, 19, 9, 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, //; 104
- 19, 19, 19, 19, 19, 30, 19, 19, 19, 19, 19, 10, 10, //; 118
- 10, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 23, 35, //; 131
- 12, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, //; 144
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, //; 157
- 19, 19, 19, 11, 19, 19, 19, 19, 19, 19, 19, 19, 19, //; 170
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 21
-};
-#endif
+
+int FontSizeIncrementers[] = { 4, -2, 2 };
wchar foreign_table[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -301,44 +128,26 @@ int CFont::PS2Symbol = BUTTON_NONE;
int CFont::ButtonsSlot = -1;
#endif // BUTTON_ICONS
+//--TODO(LCS): volatile memory
void
CFont::Initialise(void)
{
int slot;
- slot = CTxdStore::AddTxdSlot("fonts");
-#ifdef MORE_LANGUAGES
- Slot = slot;
- switch (LanguageSet)
+ if (gMakeResources)
{
- case FONT_LANGSET_EFIGS:
- default:
+ slot = CTxdStore::AddTxdSlot("fonts");
CTxdStore::LoadTxd(slot, "MODELS/FONTS.TXD");
- break;
- case FONT_LANGSET_POLISH:
- CTxdStore::LoadTxd(slot, "MODELS/FONTS_P.TXD");
- break;
- case FONT_LANGSET_RUSSIAN:
- CTxdStore::LoadTxd(slot, "MODELS/FONTS_R.TXD");
- break;
- case FONT_LANGSET_JAPANESE:
- CTxdStore::LoadTxd(slot, "MODELS/FONTS_J.TXD");
- break;
- }
-#else
- CTxdStore::LoadTxd(slot, "MODELS/FONTS.TXD");
-#endif
- CTxdStore::AddRef(slot);
- CTxdStore::PushCurrentTxd();
- CTxdStore::SetCurrentTxd(slot);
- Sprite[0].SetTexture("font2", "font2m");
-#ifdef MORE_LANGUAGES
- if (IsJapanese()) {
- Sprite[1].SetTexture("FONTJAP", "FONTJAP_mask");
- Sprite[3].SetTexture("FONTJAP", "FONTJAP_mask");
+ CTxdStore::AddRef(slot);
+ CTxdStore::PushCurrentTxd();
+ CTxdStore::SetCurrentTxd(slot);
+ Sprite[0].SetTexture("font2", "font2m");
+ Sprite[1].SetTexture("font1", "font1m");
+ Sprite[2].SetTexture("font3", "font3m");
+ CTxdStore::PopCurrentTxd();
}
-#endif // MORE_LANGUAGES
- Sprite[1].SetTexture("font1", "font1m");
+ else
+ slot = CTxdStore::FindTxdSlot("fonts");
SetScale(1.0f, 1.0f);
SetSlantRefPoint(SCREEN_WIDTH, 0.0f);
SetSlant(0.0f);
@@ -355,7 +164,17 @@ CFont::Initialise(void)
SetRightJustifyWrap(0.0f);
SetAlphaFade(255.0f);
SetDropShadowPosition(0);
- CTxdStore::PopCurrentTxd();
+ SetOutlineColor(CRGBA(0, 0, 0, 0));
+ SetOutlineOn(0);
+ SetNewLineAdd(0);
+ SetNewLineAdd(2);
+
+ /*
+ if (mspCompressedTexList)
+ {
+ // TODO (LCS): volatile shit
+ }
+ */
#if !defined(GAMEPAD_MENU) && defined(BUTTON_ICONS)
// loaded in CMenuManager with GAMEPAD_MENU defined
@@ -418,8 +237,9 @@ CFont::ReloadFonts(uint8 set)
if (Slot != -1 && LanguageSet != set) {
Sprite[0].Delete();
Sprite[1].Delete();
+ Sprite[2].Delete();
if (IsJapanese())
- Sprite[2].Delete();
+ Sprite[3].Delete();
CTxdStore::PushCurrentTxd();
CTxdStore::RemoveTxd(Slot);
switch (set)
@@ -441,15 +261,19 @@ CFont::ReloadFonts(uint8 set)
CTxdStore::SetCurrentTxd(Slot);
Sprite[0].SetTexture("font2", "font2_mask");
if (set == FONT_LANGSET_JAPANESE) {
- Sprite[2].SetTexture("FONTJAP", "FONTJAP_mask");
+ Sprite[1].SetTexture("FONTJAP", "FONTJAP_mask");
+ Sprite[3].SetTexture("FONTJAP", "FONTJAP_mask");
}
- Sprite[1].SetTexture("font1", "font1_mask");
+ else
+ Sprite[1].SetTexture("pager", "pager_mask");
+ Sprite[2].SetTexture("font1", "font1_mask");
CTxdStore::PopCurrentTxd();
}
LanguageSet = set;
}
#endif
+//--TODO(LCS): gpFonts
void
CFont::Shutdown(void)
{
@@ -463,6 +287,7 @@ CFont::Shutdown(void)
#endif
Sprite[0].Delete();
Sprite[1].Delete();
+ Sprite[2].Delete();
#ifdef MORE_LANGUAGES
if (IsJapanese())
Sprite[3].Delete();
@@ -473,6 +298,7 @@ CFont::Shutdown(void)
#endif
}
+//--LCS: Done
void
CFont::InitPerFrame(void)
{
@@ -515,39 +341,39 @@ CFont::DrawButton(float x, float y)
}
#endif
+//--LCS: TODO (mostly done but could use some checking)
void
CFont::PrintChar(float x, float y, wchar c)
{
+ if (!(c >= 0 && c < 209)) return;
+
bool bDontPrint = false;
if(x <= 0.0f || x > SCREEN_WIDTH ||
- y <= 0.0f || y > SCREEN_HEIGHT) // BUG: game uses SCREENW again
+ y <= -12.0f || y > SCREEN_HEIGHT) // BUG: game uses SCREENW again
return;
bDontPrint = c == '\0';
float w = GetCharacterWidth(c) / 32.0f;
+
+ if ( !RenderState.proportional && RenderState.rightJustify )
+ x += (GetCharacterWidth(c) - GetCharacterWidth(c, true)) * RenderState.scaleX;
+
if (Details.bFontHalfTexture && c == 208)
c = '\0';
+
+
float xoff = c % 16;
float yoff = c / 16;
-#ifdef MORE_LANGUAGES
- if (IsJapaneseFont()) {
- w = 21.0f;
- xoff = (float)(c % 48);
- yoff = c / 48;
- }
-#endif
+
+ // small float modifiers were left for pc
if(RenderState.style == FONT_BANK || RenderState.style == FONT_STANDARD){
if (bDontPrint) return;
if (RenderState.slant == 0.0f) {
-#ifdef FIX_BUGS
if (c < 192) {
-#else
- if (c < 193) {
-#endif
CSprite2d::AddToBuffer(
CRect(x, y,
- x + 32.0f * RenderState.scaleX * 1.0f,
+ x + 32.0f * RenderState.scaleX * 0.96f,
y + 40.0f * RenderState.scaleY * 0.5f),
RenderState.color,
xoff / 16.0f, yoff / 12.8f + 0.0021f,
@@ -555,10 +381,13 @@ CFont::PrintChar(float x, float y, wchar c)
xoff / 16.0f, (yoff + 1.0f) / 12.8f - 0.0021f,
(xoff + 1.0f) / 16.0f - 0.001f, (yoff + 1.0f) / 12.8f - 0.0021f);
} else {
+ float xScale = 0.54f;
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ xScale = 0.486f;
CSprite2d::AddToBuffer(
- CRect(x, y,
- x + 32.0f * RenderState.scaleX * 1.0f,
- y + 33.0f * RenderState.scaleY * 0.5f),
+ CRect(x, y + RenderState.scaleY * 4.0f,
+ x + 32.0f * RenderState.scaleY * xScale * 0.96f,
+ y + 4.0f * RenderState.scaleY + 16.0f * RenderState.scaleY),
RenderState.color,
xoff / 16.0f, yoff / 12.8f + 0.0021f,
(xoff + 1.0f) / 16.0f - 0.001f, yoff / 12.8f + 0.0021f,
@@ -568,37 +397,13 @@ CFont::PrintChar(float x, float y, wchar c)
} else
CSprite2d::AddToBuffer(
CRect(x, y,
- x + 32.0f * RenderState.scaleX * 1.0f,
+ x + 32.0f * RenderState.scaleX * 0.96f,
y + 40.0f * RenderState.scaleY * 0.5f),
RenderState.color,
xoff / 16.0f, yoff / 12.8f + 0.00055f,
(xoff + 1.0f) / 16.0f - 0.001f, yoff / 12.8f + 0.0021f + 0.01f,
xoff / 16.0f, (yoff + 1.0f) / 12.8f - 0.009f,
(xoff + 1.0f) / 16.0f - 0.001f, (yoff + 1.0f) / 12.8f - 0.0021f + 0.01f);
-#ifdef MORE_LANGUAGES
- /*}else if (IsJapaneseFont()) {
- if (Details.dropShadowPosition != 0) {
- CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank
- CRect(x + SCREEN_SCALE_X(Details.dropShadowPosition),
- y + SCREEN_SCALE_Y(Details.dropShadowPosition),
- x + SCREEN_SCALE_X(Details.dropShadowPosition) + 32.0f * Details.scaleX * 1.0f,
- y + SCREEN_SCALE_Y(Details.dropShadowPosition) + 40.0f * Details.scaleY / 2.75f),
- Details.dropColor,
- xoff * w / 1024.0f, yoff / 25.6f,
- xoff * w / 1024.0f + (1.0f / 48.0f) - 0.001f, yoff / 25.6f,
- xoff * w / 1024.0f, (yoff + 1.0f) / 25.6f,
- xoff * w / 1024.0f + (1.0f / 48.0f) - 0.001f, (yoff + 1.0f) / 25.6f - 0.0001f);
- }
- CSprite2d::AddSpriteToBank(Details.bank + Details.style, // BUG: game doesn't add bank
- CRect(x, y,
- x + 32.0f * Details.scaleX * 1.0f,
- y + 40.0f * Details.scaleY / 2.75f),
- Details.color,
- xoff * w / 1024.0f, yoff / 25.6f,
- xoff * w / 1024.0f + (1.0f / 48.0f) - 0.001f, yoff / 25.6f,
- xoff * w / 1024.0f, (yoff + 1.0f) / 25.6f - 0.002f,
- xoff * w / 1024.0f + (1.0f / 48.0f) - 0.001f, (yoff + 1.0f) / 25.6f - 0.0001f);*/
-#endif
} else {
if (bDontPrint) return;
CSprite2d::AddToBuffer(
@@ -606,10 +411,10 @@ CFont::PrintChar(float x, float y, wchar c)
x + 32.0f * RenderState.scaleX * w,
y + 32.0f * RenderState.scaleY * 0.5f),
RenderState.color,
- xoff / 16.0f, yoff / 16.0f,
- (xoff + w) / 16.0f, yoff / 16.0f,
- xoff / 16.0f, (yoff + 1.0f) / 16.0f,
- (xoff + w) / 16.0f - 0.0001f, (yoff + 1.0f) / 16.0f - 0.0001f);
+ xoff / 16.0f, yoff / 6.4f,
+ (xoff + w) / 16.0f, yoff / 6.4f,
+ xoff / 16.0f, (yoff + 1.0f) / 6.4f,
+ (xoff + w) / 16.0f, (yoff + 1.0f) / 6.4f);
}
}
@@ -635,6 +440,7 @@ bool CFont::IsAnsiCharacter(wchar *s)
}
#endif
+//--LCS: TODO (mostly done but could use some checking)
void
CFont::RenderFontBuffer()
{
@@ -647,7 +453,7 @@ CFont::RenderFontBuffer()
bool bFlash = false;
Sprite[RenderState.style].SetRenderState();
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+ RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); // TODO: not in lcs
RenderState = *(CFontRenderState*)&FontRenderStateBuf[0];
textPosX = RenderState.fTextPosX;
textPosY = RenderState.fTextPosY;
@@ -689,16 +495,15 @@ CFont::RenderFontBuffer()
}
Details.color.alpha = Details.bFlashState ? 0 : 255;
}
- if (!RenderState.bIsShadow)
+ if (!RenderState.bIsShadow && !RenderState.bOutlineOn)
RenderState.color = color;
}
wchar c = *pRenderStateBufPointer.pStr;
c -= ' ';
+ if (c == 200) c = '^';
+ if (c == 201) c = '>';
if (RenderState.bFontHalfTexture)
- c = FindNewCharacter(c);
- else if (c > 155)
- c = '\0';
-
+ c = FindNewCharacter(c);
if (RenderState.slant != 0.0f)
textPosY = (RenderState.slantRefX - textPosX) * RenderState.slant + RenderState.slantRefY;
PrintChar(textPosX, textPosY, c);
@@ -707,11 +512,11 @@ CFont::RenderFontBuffer()
PrintChar(textPosX + 2.0f, textPosY, c);
textPosX += 2.0f;
}
-#ifdef FIX_BUGS
- // PS2 uses different chars for some symbols
- if (!RenderState.bFontHalfTexture && c == 30) c = 61; // wanted star
-#endif
textPosX += RenderState.scaleX * GetCharacterWidth(c);
+//#ifdef FIX_BUGS
+// // PS2 uses different chars for some symbols
+// if (!RenderState.bFontHalfTexture && c == 30) c = 61; // wanted star
+//#endif
if (c == '\0')
textPosX += RenderState.fExtraSpace;
}
@@ -719,50 +524,8 @@ CFont::RenderFontBuffer()
FontRenderStatePointer.pRenderState = (CFontRenderState*)FontRenderStateBuf;
}
-#if 0 //def MORE_LANGUAGES
-bool
-CFont::PrintString(float x, float y, wchar *start, wchar *&end, float spwidth, float japX)
-{
- wchar *s, c, unused;
- if (IsJapanese()) {
- float jx = 0.0f;
- for (s = start; s < end; s++) {
- if (*s == JAP_TERMINATION || *s == '~')
- s = ParseToken(s, &unused, true);
- if (NewLine) {
- NewLine = false;
- break;
- }
- jx += GetCharacterSize(*s - ' ');
- }
- s = start;
- if (Details.centre)
- x = japX - jx / 2.0f;
- else if (Details.rightJustify)
- x = japX - jx;
- }
-
- for (s = start; s < end; s++) {
- if (*s == '~' || (IsJapanese() && *s == JAP_TERMINATION))
- s = ParseToken(s, &unused);
- if (NewLine && IsJapanese()) {
- NewLine = false;
- end = s;
- return true;
- }
- c = *s - ' ';
- if (Details.slant != 0.0f && !IsJapanese())
- y = (Details.slantRefX - x) * Details.slant + Details.slantRefY;
-
- PrintChar(x, y, c);
- x += GetCharacterSize(c);
- if (c == 0 && (!NewLine || !IsJapanese())) // space
- x += spwidth;
- }
- return false;
-}
-#else
+//--LCS: TODO
void
CFont::PrintString(float x, float y, uint32, wchar *start, wchar *end, float spwidth)
{
@@ -773,26 +536,38 @@ CFont::PrintString(float x, float y, uint32, wchar *start, wchar *end, float spw
RenderState.style = Details.style;
}
- float dropShadowPosition = Details.dropShadowPosition;
- if (dropShadowPosition != 0.0f && (Details.style == FONT_BANK || Details.style == FONT_STANDARD)) {
+ if (Details.outlineColor.a != 0) {
CRGBA color = Details.color;
- Details.color = Details.dropColor;
+ Details.color = Details.outlineColor;
+ Details.bOutlineOn = true;
+ Details.outlineColor.a = 0;
Details.dropShadowPosition = 0;
- Details.bIsShadow = true;
- if (Details.slant != 0.0f) {
- Details.slantRefX += SCREEN_SCALE_X(dropShadowPosition);
- Details.slantRefY += SCREEN_SCALE_Y(dropShadowPosition);
- PrintString(SCREEN_SCALE_X(dropShadowPosition) + x, SCREEN_SCALE_Y(dropShadowPosition) + y, Details.anonymous_25, start, end, spwidth);
- Details.slantRefX -= SCREEN_SCALE_X(dropShadowPosition);
- Details.slantRefY -= SCREEN_SCALE_Y(dropShadowPosition);
- } else {
- PrintString(SCREEN_SCALE_X(dropShadowPosition) + x, SCREEN_SCALE_Y(dropShadowPosition) + y, Details.anonymous_25, start, end, spwidth);
- }
- Details.color = color;
- Details.dropShadowPosition = dropShadowPosition;
Details.bIsShadow = false;
+ PrintString(x, y, Details.anonymous_25, start, end, spwidth);
+ Details.color = color;
+ Details.bOutlineOn = false;
+ } else {
+ float dropShadowPosition = Details.dropShadowPosition;
+ if (dropShadowPosition != 0.0f && (Details.style == FONT_BANK || Details.style == FONT_STANDARD)) {
+ CRGBA color = Details.color;
+ Details.color = Details.dropColor;
+ Details.dropShadowPosition = 0;
+ Details.bIsShadow = true;
+ if (Details.slant != 0.0f) {
+ Details.slantRefX += SCREEN_SCALE_X(dropShadowPosition);
+ Details.slantRefY += SCREEN_SCALE_Y(dropShadowPosition);
+ PrintString(SCREEN_SCALE_X(dropShadowPosition) + x, SCREEN_SCALE_Y(dropShadowPosition) + y, Details.anonymous_25, start, end, spwidth);
+ Details.slantRefX -= SCREEN_SCALE_X(dropShadowPosition);
+ Details.slantRefY -= SCREEN_SCALE_Y(dropShadowPosition);
+ } else {
+ PrintString(SCREEN_SCALE_X(dropShadowPosition) + x, SCREEN_SCALE_Y(dropShadowPosition) + y, Details.anonymous_25, start, end, spwidth);
+ }
+ Details.color = color;
+ Details.dropShadowPosition = dropShadowPosition;
+ Details.bIsShadow = false;
+ }
}
- if (FontRenderStatePointer.pStr >= (wchar*)&FontRenderStateBuf[ARRAY_SIZE(FontRenderStateBuf)] - (end - start + 26)) // why 26?
+ if ((uintptr)FontRenderStatePointer.pStr >= (uintptr)&FontRenderStateBuf[ARRAY_SIZE(FontRenderStateBuf)] - sizeof(wchar) * (end - start + 2) - sizeof(CFontRenderState))
RenderFontBuffer();
CFontRenderState *pRenderState = FontRenderStatePointer.pRenderState;
pRenderState->fTextPosX = x;
@@ -828,17 +603,18 @@ CFont::PrintString(float x, float y, uint32, wchar *start, wchar *end, float spw
*(FontRenderStatePointer.pStr++) = '\0';
FontRenderStatePointer.Align();
}
-#endif
+// LCS: Done
void
CFont::PrintStringFromBottom(float x, float y, wchar *str)
{
- y -= (32.0f * Details.scaleY / 2.0f + 2.0f * Details.scaleY) * GetNumberLines(x, y, str);
+ y -= (32.0f * Details.scaleY / 2.0f + Details.line * Details.scaleY) * GetNumberLines(x, y, str);
if (Details.slant != 0.0f)
y -= ((Details.slantRefX - x) * Details.slant + Details.slantRefY);
PrintString(x, y, str);
}
+//--LCS: TODO
void
CFont::PrintString(float xstart, float ystart, wchar *s)
{
@@ -849,7 +625,8 @@ CFont::PrintString(float xstart, float ystart, wchar *s)
bool first;
wchar *start, *t;
- Details.bFlash = false;
+ CRGBA outlineColor = Details.outlineColor;
+ CFont::SetFlashOff();
if(*s == '*')
return;
@@ -896,7 +673,7 @@ CFont::PrintString(float xstart, float ystart, wchar *s)
float xleft = Details.centre ? xstart - x/2 :
Details.rightJustify ? xstart - x :
xstart;
-#if 0//def MORE_LANGUAGES
+#ifdef MORE_LANGUAGES
PrintString(xleft, y, start, s, spaceWidth, xstart);
#else
PrintString(xleft, y, Details.anonymous_25, start, s, spaceWidth);
@@ -934,7 +711,7 @@ CFont::PrintString(float xstart, float ystart, wchar *s)
#endif
lineLength = x;
s = t+1;
-#if 0 //def MORE_LANGUAGES
+#ifdef MORE_LANGUAGES
if (IsJapaneseFont() && !*s) {
x += GetStringWidth(s);
if (IsAnsiCharacter(s))
@@ -966,7 +743,7 @@ CFont::PrintString(float xstart, float ystart, wchar *s)
float xleft = Details.centre ? xstart - x/2 :
Details.rightJustify ? xstart - x :
xstart;
-#if 0 //def MORE_LANGUAGES
+#ifdef MORE_LANGUAGES
if (PrintString(xleft, y, start, s, 0.0f, xstart) && IsJapaneseFont()) {
start = s;
if (!Details.centre && !Details.rightJustify)
@@ -984,6 +761,7 @@ CFont::PrintString(float xstart, float ystart, wchar *s)
}
}
+//--LCS: TODO
int
CFont::GetNumberLines(float xstart, float ystart, wchar *s)
{
@@ -992,7 +770,7 @@ CFont::GetNumberLines(float xstart, float ystart, wchar *s)
wchar *t;
n = 0;
-#if 0//def MORE_LANGUAGES
+#ifdef MORE_LANGUAGES
bool bSomeJapBool = false;
if (IsJapanese()) {
@@ -1085,6 +863,7 @@ CFont::GetNumberLines(float xstart, float ystart, wchar *s)
return n;
}
+//--LCS: TODO
void
CFont::GetTextRect(CRect *rect, float xstart, float ystart, wchar *s)
{
@@ -1190,101 +969,65 @@ CFont::GetTextRect(CRect *rect, float xstart, float ystart, wchar *s)
}
}
-float
-CFont::GetCharacterWidth(wchar c)
+//--LCS: done
+bool IsPunctuation(wchar c)
{
-#ifdef MORE_LANGUAGES
- if (IsJapanese()) {
- if (!RenderState.proportional)
- return Size[0][Details.style][192];
- if (c <= 94 || Details.style == FONT_HEADING || RenderState.style == FONT_BANK) {
- switch (RenderState.style)
- {
- case FONT_JAPANESE:
- return Size_jp[c];
- default:
- return Size[0][RenderState.style][c];
- }
- }
-
- switch (RenderState.style)
- {
- case FONT_JAPANESE:
- return 29.4f;
- case FONT_BANK:
- return 10.0f;
- default:
- return Size[0][RenderState.style][c];
- }
+ switch (c)
+ {
+ case '!':
+ case '?':
+ case '.':
+ case ',':
+ case ':':
+ case ';':
+
+ // these are lucid it seems
+ //case '$':
+ //case '/':
+ //case '\\':
+ return true;
}
-
- else if (RenderState.proportional)
- return Size[LanguageSet][RenderState.style][c];
- else
- return Size[LanguageSet][RenderState.style][209];
-#else
-
- if (RenderState.proportional)
- return Size[RenderState.style][c];
- else
- return Size[RenderState.style][209];
-#endif // MORE_LANGUAGES
+ return false;
}
+//--LCS: done
float
-CFont::GetCharacterSize(wchar c)
+CFont::GetCharacterWidth(wchar c, bool forceProportional)
{
-#ifdef MORE_LANGUAGES
-
- if (IsJapanese())
- {
- if (!Details.proportional)
- return Size[0][Details.style][209] * Details.scaleX;
- if (c <= 94 || Details.style == FONT_HEADING || Details.style == FONT_BANK) {
- switch (Details.style)
- {
- case FONT_JAPANESE:
- return Size_jp[c] * Details.scaleX;
- default:
- return Size[0][Details.style][c] * Details.scaleX;
- }
- }
-
- switch (Details.style)
- {
- case FONT_JAPANESE:
- return 29.4f * Details.scaleX;
- case FONT_BANK:
- return 10.0f * Details.scaleX;
- default:
- return Size[0][Details.style][c] * Details.scaleX;
- }
- }
- else
+ if (RenderState.proportional || forceProportional)
{
- if (!Details.bFontHalfTexture && c == 30) c = 61; // wanted star
- if (Details.bFontHalfTexture)
- c = FindNewCharacter(c);
- if (Details.proportional)
- return Size[LanguageSet][Details.style][c] * Details.scaleX;
+ float inc = c < 192 ? 0.0f : 4.0f;
+ return Size[RenderState.style][c] + Size[RenderState.style][c + 209] + FontSizeIncrementers[RenderState.style] + inc;
+ } else {
+ if (IsPunctuation(c + ' '))
+ return Size[RenderState.style][418] / 1.6f + FontSizeIncrementers[RenderState.style];
else
- return Size[LanguageSet][Details.style][209] * Details.scaleX;
+ return Size[RenderState.style][418] + FontSizeIncrementers[RenderState.style];
}
-#else
+}
-#ifdef FIX_BUGS
+//--LCS: done
+float
+CFont::GetCharacterSize(wchar c)
+{
+//#ifdef FIX_BUGS
// PS2 don't call FindNewCharacter in here at all, and also uses different chars for some symbols
- if (!Details.bFontHalfTexture && c == 30) c = 61; // wanted star
-#endif
+// if (!Details.bFontHalfTexture && c == 30) c = 61; // wanted star
+//#endif
if (Details.bFontHalfTexture)
c = FindNewCharacter(c);
- if (Details.proportional)
- return Size[Details.style][c] * Details.scaleX;
- else
- return Size[Details.style][209] * Details.scaleX;
-#endif // MORE_LANGUAGES
+ if (Details.proportional) {
+ float inc = c < 192 ? 0.0f : 4.0f;
+ return (Size[Details.style][c] + Size[Details.style][c + 209] + FontSizeIncrementers[Details.style] + inc) * Details.scaleX;
+ } else {
+ if (IsPunctuation(c + ' '))
+ return (Size[Details.style][418] + FontSizeIncrementers[Details.style]) / 1.6f * Details.scaleX;
+ else
+ return Size[Details.style][418] + FontSizeIncrementers[Details.style] * Details.scaleX;
+ }
}
+//--LCS: TODO
float
CFont::GetStringWidth(wchar *s, bool spaces)
{
@@ -1397,6 +1140,19 @@ CFont::GetStringWidth_Jap(wchar* s)
}
#endif
+//--LCS: done
+bool16
+CFont::CheckNewLine(wchar *s)
+{
+ while (*s == ' ')
+ s++;
+
+ if (*s == '~')
+ return s[1] == 'N' || s[1] == 'n';
+ return false;
+}
+
+//--LCS: TODO
wchar*
CFont::GetNextSpace(wchar *s)
{
@@ -1427,6 +1183,7 @@ CFont::GetNextSpace(wchar *s)
return s;
}
+//--LCS: done
wchar*
CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
{
@@ -1439,28 +1196,36 @@ CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
case 'B':
bold = !bold;
break;
+ case 'Y':
+ color.r = 255;
+ color.g = 227;
+ color.b = 79;
+ break;
case 'b':
- color.r = 27;
- color.g = 89;
- color.b = 130;
+ color.r = 77;
+ color.g = 155;
+ color.b = 210;
break;
case 'f':
flash = !flash;
break;
case 'g':
- color.r = 255;
- color.g = 150;
- color.b = 225;
+ color.r = 75;
+ color.g = 151;
+ color.b = 75;
+ Details.anonymous_23 = true;
break;
case 'h':
- color.r = 225;
- color.g = 225;
- color.b = 225;
+ color.r = 255;
+ color.g = 255;
+ color.b = 255;
+ Details.anonymous_23 = true;
break;
case 'l':
color.r = 0;
color.g = 0;
color.b = 0;
+ Details.anonymous_23 = true;
break;
case 'o':
color.r = 229;
@@ -1468,9 +1233,9 @@ CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
color.b = 126;
break;
case 'p':
- color.r = 168;
- color.g = 110;
- color.b = 252;
+ color.r = 151;
+ color.g = 82;
+ color.b = 197;
break;
case 'q':
color.r = 199;
@@ -1478,9 +1243,9 @@ CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
color.b = 203;
break;
case 'r':
- color.r = 255;
- color.g = 150;
- color.b = 225;
+ color.r = 174;
+ color.g = 0;
+ color.b = 0;
break;
case 't':
color.r = 86;
@@ -1488,27 +1253,20 @@ CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
color.b = 146;
break;
case 'w':
- color.r = 175;
- color.g = 175;
- color.b = 175;
- break;
-#ifdef FIX_BUGS
- case 'x':
- color.r = 0;
- color.g = 255;
- color.b = 255;
+ color.r = 225;
+ color.g = 225;
+ color.b = 225;
+ Details.anonymous_23 = true;
break;
-#else
case 'x':
color.r = 132;
color.g = 146;
color.b = 197;
break;
-#endif
case 'y':
color.r = 255;
- color.g = 227;
- color.b = 79;
+ color.g = 255;
+ color.b = 0;
break;
#ifdef BUTTON_ICONS
case 'U': PS2Symbol = BUTTON_UP; break;
@@ -1536,187 +1294,34 @@ CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
}
while (*s != '~')
++s;
- if (*(++s) == '~')
- s = ParseToken(s, color, flash, bold);
- return s;
-}
-#if 0//def MORE_LANGUAGES
-wchar*
-CFont::ParseToken(wchar *s, bool japShit)
-{
+ // seem to be gone in lcs
+ //if (*(++s) == '~')
+ // s = ParseToken(s, color, flash, bold);
+
+ // wtf?
+ if (*s == '\0') s++;
s++;
- if ((Details.color.r || Details.color.g || Details.color.b) && !japShit) {
- wchar c = *s;
- if (IsJapanese())
- c &= 0x7FFF;
- switch (c) {
- case 'N':
- case 'n':
- NewLine = true;
- break;
- case 'b': SetColor(CRGBA(128, 167, 243, 255)); break;
- case 'g': SetColor(CRGBA(95, 160, 106, 255)); break;
- case 'h': SetColor(CRGBA(225, 225, 225, 255)); break;
- case 'l': SetColor(CRGBA(0, 0, 0, 255)); break;
- case 'p': SetColor(CRGBA(168, 110, 252, 255)); break;
- case 'r': SetColor(CRGBA(113, 43, 73, 255)); break;
- case 'w': SetColor(CRGBA(175, 175, 175, 255)); break;
- case 'y': SetColor(CRGBA(210, 196, 106, 255)); break;
-#ifdef BUTTON_ICONS
- case 'U': PS2Symbol = BUTTON_UP; break;
- case 'D': PS2Symbol = BUTTON_DOWN; break;
- case '<': PS2Symbol = BUTTON_LEFT; break;
- case '>': PS2Symbol = BUTTON_RIGHT; break;
- case 'X': PS2Symbol = BUTTON_CROSS; break;
- case 'O': PS2Symbol = BUTTON_CIRCLE; break;
- case 'Q': PS2Symbol = BUTTON_SQUARE; break;
- case 'T': PS2Symbol = BUTTON_TRIANGLE; break;
- case 'K': PS2Symbol = BUTTON_L1; break;
- case 'M': PS2Symbol = BUTTON_L2; break;
- case 'A': PS2Symbol = BUTTON_L3; break;
- case 'J': PS2Symbol = BUTTON_R1; break;
- case 'V': PS2Symbol = BUTTON_R2; break;
- case 'C': PS2Symbol = BUTTON_R3; break;
- case 'H': PS2Symbol = BUTTON_RSTICK_UP; break;
- case 'L': PS2Symbol = BUTTON_RSTICK_DOWN; break;
- case '(': PS2Symbol = BUTTON_RSTICK_LEFT; break;
- case ')': PS2Symbol = BUTTON_RSTICK_RIGHT; break;
-#endif
- }
- } else if (IsJapanese()) {
- if ((*s & 0x7FFF) == 'N' || (*s & 0x7FFF) == 'n')
- NewLine = true;
- }
- while ((!IsJapanese() || (*s != JAP_TERMINATION)) && *s != '~') s++;
- return s + 1;
+ return s;
}
-#else
+
+//--LCS: done
wchar*
CFont::ParseToken(wchar *s)
{
- Details.anonymous_23 = false;
- s++;
- if(Details.color.r || Details.color.g || Details.color.b)
- switch(*s){
- case 'B':
- Details.bBold = !Details.bBold;
- break;
- case 'N':
- case 'n':
- NewLine = true;
- break;
- case 'b':
- Details.color.r = 27;
- Details.color.g = 89;
- Details.color.b = 130;
- Details.anonymous_23 = true;
- break;
- case 'f':
- Details.bFlash = !Details.bFlash;
- if (!Details.bFlash)
- Details.color.a = 255;
- break;
- case 'g':
- Details.color.r = 255;
- Details.color.g = 150;
- Details.color.b = 225;
- Details.anonymous_23 = true;
- break;
- case 'h':
- Details.color.r = 225;
- Details.color.g = 225;
- Details.color.b = 225;
- Details.anonymous_23 = true;
- break;
- case 'l':
- Details.color.r = 0;
- Details.color.g = 0;
- Details.color.b = 0;
- Details.anonymous_23 = true;
- break;
- case 'o':
- Details.color.r = 229;
- Details.color.g = 125;
- Details.color.b = 126;
- Details.anonymous_23 = true;
- break;
- case 'p':
- Details.color.r = 168;
- Details.color.g = 110;
- Details.color.b = 252;
- Details.anonymous_23 = true;
- break;
- case 'q':
- Details.color.r = 199;
- Details.color.g = 144;
- Details.color.b = 203;
- Details.anonymous_23 = true;
- break;
- case 'r':
- Details.color.r = 255;
- Details.color.g = 150;
- Details.color.b = 225;
- Details.anonymous_23 = true;
- break;
- case 't':
- Details.color.r = 86;
- Details.color.g = 212;
- Details.color.b = 146;
- Details.anonymous_23 = true;
- break;
- case 'w':
- Details.color.r = 175;
- Details.color.g = 175;
- Details.color.b = 175;
- Details.anonymous_23 = true;
- break;
- case 'x':
-#ifdef FIX_BUGS
- Details.color.r = 0;
- Details.color.g = 255;
- Details.color.b = 255;
-#else
- Details.color.r = 132;
- Details.color.g = 146;
- Details.color.b = 197;
-#endif
- Details.anonymous_23 = true;
- break;
- case 'y':
- Details.color.r = 255;
- Details.color.g = 227;
- Details.color.b = 79;
- Details.anonymous_23 = true;
- break;
-#ifdef BUTTON_ICONS
- case 'U': PS2Symbol = BUTTON_UP; break;
- case 'D': PS2Symbol = BUTTON_DOWN; break;
- case '<': PS2Symbol = BUTTON_LEFT; break;
- case '>': PS2Symbol = BUTTON_RIGHT; break;
- case 'X': PS2Symbol = BUTTON_CROSS; break;
- case 'O': PS2Symbol = BUTTON_CIRCLE; break;
- case 'Q': PS2Symbol = BUTTON_SQUARE; break;
- case 'T': PS2Symbol = BUTTON_TRIANGLE; break;
- case 'K': PS2Symbol = BUTTON_L1; break;
- case 'M': PS2Symbol = BUTTON_L2; break;
- case 'A': PS2Symbol = BUTTON_L3; break;
- case 'J': PS2Symbol = BUTTON_R1; break;
- case 'V': PS2Symbol = BUTTON_R2; break;
- case 'C': PS2Symbol = BUTTON_R3; break;
- case 'H': PS2Symbol = BUTTON_RSTICK_UP; break;
- case 'L': PS2Symbol = BUTTON_RSTICK_DOWN; break;
- case '(': PS2Symbol = BUTTON_RSTICK_LEFT; break;
- case ')': PS2Symbol = BUTTON_RSTICK_RIGHT; break;
-#endif
- }
- while(*s != '~') s++;
- if (*(++s) == '~')
- s = ParseToken(s);
+ bool flash = false;
+ bool bold = false;
+ CRGBA color = Details.color;
+ s = ParseToken(s, color, flash, bold);
+ Details.bFlash = flash;
+ Details.bBold = bold;
+
+ if (Details.anonymous_23)
+ Details.color = color;
return s;
}
-#endif
+//--LCS: done
void
CFont::FilterOutTokensFromString(wchar *str)
{
@@ -1735,25 +1340,22 @@ CFont::FilterOutTokensFromString(wchar *str)
str[newIdx] = '\0';
}
+//--LCS: done
void
CFont::DrawFonts(void)
{
RenderFontBuffer();
}
+//--LCS: done
void
CFont::SetScale(float x, float y)
{
-#ifdef MORE_LANGUAGES
- /*if (IsJapanese()) {
- x *= 1.35f;
- y *= 1.25f;
- }*/
-#endif
Details.scaleX = x;
Details.scaleY = y;
}
+//--LCS: done
void
CFont::SetSlantRefPoint(float x, float y)
{
@@ -1761,12 +1363,14 @@ CFont::SetSlantRefPoint(float x, float y)
Details.slantRefY = y;
}
+//--LCS: done
void
CFont::SetSlant(float s)
{
Details.slant = s;
}
+//--LCS: done
void
CFont::SetColor(CRGBA col)
{
@@ -1775,6 +1379,14 @@ CFont::SetColor(CRGBA col)
Details.color.a *= Details.alphaFade / 255.0f;
}
+//--LCS: done
+void
+CFont::SetFlashOff()
+{
+ Details.bFlash = false;
+}
+
+//--LCS: done
void
CFont::SetJustifyOn(void)
{
@@ -1783,6 +1395,7 @@ CFont::SetJustifyOn(void)
Details.rightJustify = false;
}
+//--LCS: done
void
CFont::SetJustifyOff(void)
{
@@ -1790,6 +1403,7 @@ CFont::SetJustifyOff(void)
Details.rightJustify = false;
}
+//--LCS: done
void
CFont::SetCentreOn(void)
{
@@ -1798,54 +1412,65 @@ CFont::SetCentreOn(void)
Details.rightJustify = false;
}
+//--LCS: done
void
CFont::SetCentreOff(void)
{
Details.centre = false;
}
+//--LCS: TODO
void
CFont::SetWrapx(float x)
{
+ // uncomment when scaling is done
+ //x = clamp(x, 0.0f, DEFAULT_SCREEN_WIDTH);
Details.wrapX = x;
}
+//--LCS: done
void
CFont::SetCentreSize(float s)
{
Details.centreSize = s;
}
+//--LCS: done
void
CFont::SetBackgroundOn(void)
{
Details.background = true;
}
+//--LCS: done
void
CFont::SetBackgroundOff(void)
{
Details.background = false;
}
+//--LCS: done
void
CFont::SetBackgroundColor(CRGBA col)
{
Details.backgroundColor = col;
}
+//--LCS: done
void
CFont::SetBackGroundOnlyTextOn(void)
{
Details.backgroundOnlyText = true;
}
+//--LCS: done
void
CFont::SetBackGroundOnlyTextOff(void)
{
Details.backgroundOnlyText = false;
}
+//--LCS: done
void
CFont::SetRightJustifyOn(void)
{
@@ -1854,6 +1479,7 @@ CFont::SetRightJustifyOn(void)
Details.centre = false;
}
+//--LCS: done
void
CFont::SetRightJustifyOff(void)
{
@@ -1862,70 +1488,118 @@ CFont::SetRightJustifyOff(void)
Details.centre = false;
}
+//--LCS: done
void
CFont::SetPropOff(void)
{
Details.proportional = false;
}
+//--LCS: done
void
CFont::SetPropOn(void)
{
Details.proportional = true;
}
+//--LCS: done
void
CFont::SetFontStyle(int16 style)
{
if (style == FONT_HEADING) {
- Details.style = FONT_STANDARD;
+ Details.style = FONT_HEADING;
Details.bFontHalfTexture = true;
- } else {
+ }
+ else {
Details.style = style;
Details.bFontHalfTexture = false;
}
}
+//--LCS: done
void
CFont::SetRightJustifyWrap(float wrap)
{
Details.rightJustifyWrap = wrap;
}
+//--LCS: done
void
CFont::SetAlphaFade(float fade)
{
Details.alphaFade = fade;
}
+//--LCS: done
void
CFont::SetDropColor(CRGBA col)
{
Details.dropColor = col;
if (Details.alphaFade < 255.0f)
- Details.dropColor.a *= Details.alphaFade / 255.0f;
+ // TODO: was this a copypaste bug in here?
+ //Details.dropColor.a *= Details.alphaFade / 255.0f;
+ Details.dropColor.a = Details.color.a * Details.alphaFade / 255.0f;
+}
+
+
+//--LCS: done
+void
+CFont::SetOutlineColor(CRGBA col)
+{
+ Details.outlineColor = col;
+ if (Details.alphaFade < 255.0f)
+ Details.outlineColor.a *= Details.alphaFade / 255.0f;
+}
+
+//--LCS: done
+void
+CFont::SetOutlineOn(int on)
+{
+ Details.bOutlineOn = on;
}
+//--LCS: done
+void
+CFont::SetNewLineAdd(int line)
+{
+ Details.line = line;
+}
+
+//--LCS: done
void
CFont::SetDropShadowPosition(int16 pos)
{
Details.dropShadowPosition = pos;
}
-wchar CFont::FindNewCharacter(wchar c)
+int16 CFont::FindNewCharacter(int16 c)
{
- if (c >= 16 && c <= 26) return c + 128;
- if (c >= 8 && c <= 9) return c + 86;
- if (c == 4) return c + 89;
- if (c == 7) return 206;
- if (c == 14) return 207;
- if (c >= 33 && c <= 58) return c + 122;
- if (c >= 65 && c <= 90) return c + 90;
- if (c >= 96 && c <= 118) return c + 85;
- if (c >= 119 && c <= 140) return c + 62;
- if (c >= 141 && c <= 142) return 204;
- if (c == 143) return 205;
- if (c == 1) return 208;
+ if (c >= 33 && c <= 33 + 25)
+ return c - 6;
+ else if(c >= 65 && c <= 65 + 25)
+ return c - 38;
+ else if (c >= 96 && c <= 96 + 31)
+ return c - 43;
+ else if (c >= 128 && c <= 128 + 31)
+ return c - 75;
+
+ switch (c)
+ {
+ case 190:
+ return 90;
+ case 175:
+ return 87;
+ case 184:
+ return 88;
+ case 187:
+ return 89;
+ case 31:
+ return 88;
+ }
+ if (c >= 27 && c < 31)
+ return 2;
+ if (c >= 180 && c < 256)
+ c = 2;
return c;
}
@@ -1935,4 +1609,4 @@ CFont::character_code(uint8 c)
if(c < 128)
return c;
return foreign_table[c-128];
-} \ No newline at end of file
+}
diff --git a/src/renderer/Font.h b/src/renderer/Font.h
index 02e7df3b..fdf5f3f2 100644
--- a/src/renderer/Font.h
+++ b/src/renderer/Font.h
@@ -39,6 +39,9 @@ struct CFontDetails
int nFlashTimer;
bool8 anonymous_23;
uint32 anonymous_25;
+ CRGBA outlineColor;
+ int bOutlineOn;
+ int line;
};
struct CFontRenderState
@@ -58,6 +61,9 @@ struct CFontRenderState
bool8 proportional;
bool8 anonymous_14;
int16 style;
+ int bOutlineOn;
+ int line;
+ bool8 rightJustify;
};
class CSprite2d;
@@ -66,10 +72,7 @@ enum {
FONT_BANK,
FONT_STANDARD,
FONT_HEADING,
-#ifdef MORE_LANGUAGES
- FONT_JAPANESE,
-#endif
- MAX_FONTS = FONT_HEADING
+ MAX_FONTS
};
enum {
@@ -127,7 +130,7 @@ class CFont
static uint8 LanguageSet;
static int32 Slot;
#else
- static int16 Size[MAX_FONTS][210];
+ static int16 Size[MAX_FONTS][419];
#endif
static bool16 NewLine;
public:
@@ -151,7 +154,6 @@ public:
static void PrintChar(float x, float y, wchar c);
static void PrintString(float x, float y, wchar *s);
#ifdef XBOX_SUBTITLES
- static void PrintStringFromBottom(float x, float y, wchar *str);
static void PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor);
#endif
static int GetNumberLines(float xstart, float ystart, wchar *s);
@@ -162,7 +164,7 @@ public:
static void PrintString(float x, float y, uint32, wchar *start, wchar *end, float spwidth);
//#endif
static void PrintStringFromBottom(float x, float y, wchar *str);
- static float GetCharacterWidth(wchar c);
+ static float GetCharacterWidth(wchar c, bool forceProportional = false);
static float GetCharacterSize(wchar c);
static float GetStringWidth(wchar *s, bool spaces = false);
#ifdef MORE_LANGUAGES
@@ -194,6 +196,7 @@ public:
static void SetBackgroundOff(void);
static void SetBackGroundOnlyTextOn(void);
static void SetBackGroundOnlyTextOff(void);
+ static void SetFlashOff(void);
static void SetPropOn(void);
static void SetPropOff(void);
static void SetFontStyle(int16 style);
@@ -203,8 +206,14 @@ public:
static void SetBackgroundColor(CRGBA col);
static void SetColor(CRGBA col);
static void SetDropColor(CRGBA col);
- static wchar FindNewCharacter(wchar c);
+
+ static void SetOutlineColor(CRGBA col);
+ static void SetOutlineOn(int on);
+ static void SetNewLineAdd(int line);
+
+ static int16 FindNewCharacter(int16 c);
static void FilterOutTokensFromString(wchar*);
+ static bool16 CheckNewLine(wchar *s);
#ifdef MORE_LANGUAGES
static void ReloadFonts(uint8 set);
diff --git a/src/renderer/Hud.cpp b/src/renderer/Hud.cpp
index d7d8050f..8b021645 100644
--- a/src/renderer/Hud.cpp
+++ b/src/renderer/Hud.cpp
@@ -45,14 +45,14 @@
// Game has colors inlined in code.
// For easier modification we collect them here:
CRGBA MONEY_COLOR(0, 207, 133, 255);
-CRGBA AMMO_COLOR(255, 150, 225, 255);
+CRGBA AMMO_COLOR(255, 255, 255, 255);
CRGBA HEALTH_COLOR(255, 150, 225, 255);
CRGBA ARMOUR_COLOR(185, 185, 185, 255);
CRGBA NOTWANTED_COLOR(27, 89, 130, 255);
CRGBA WANTED_COLOR_FLASH(62, 141, 181, 255);
CRGBA WANTED_COLOR(97, 194, 247, 255);
-CRGBA ZONE_COLOR(45, 155, 90, 255);
-CRGBA VEHICLE_COLOR(97, 194, 247, 255);
+CRGBA ZONE_COLOR(255, 255, 255, 255);
+CRGBA VEHICLE_COLOR(255, 255, 255, 255);
CRGBA CLOCK_COLOR(97, 194, 247, 255);
CRGBA TIMER_COLOR(97, 194, 247, 255);
CRGBA COUNTER_COLOR(97, 194, 247, 255);
@@ -89,13 +89,13 @@ wchar CHud::m_Message[256];
wchar CHud::m_PagerMessage[256];
bool CHud::m_Wants_To_Draw_Hud;
bool CHud::m_Wants_To_Draw_3dMarkers;
-wchar CHud::m_BigMessage[6][128];
+wchar CHud::m_BigMessage[8][128];
int16 CHud::m_ItemToFlash;
bool CHud::m_HideRadar;
int32 CHud::m_ClockState;
// These aren't really in CHud
-float CHud::BigMessageInUse[6];
+float BigMessageInUse[6];
float CHud::BigMessageAlpha[6];
float CHud::BigMessageX[6];
float CHud::OddJob2OffTimer;
@@ -134,6 +134,10 @@ uint32 CHud::m_LastTimeEnergyLost;
CSprite2d CHud::Sprites[NUM_HUD_SPRITES];
+wchar* CHud::gLastPrintForeverString;
+
+uint8 CHud::m_HudAlpha = 209;
+
struct
{
const char *name;
@@ -190,24 +194,25 @@ struct
{ "", "" },
{ "", "" },
{ "radardisc", "radardisc" },
+ { "radardiscback", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
- { "", "" },
- { "", "" },
- { "", "" },
- { "", "" },
- { "", "" },
- { "", "" },
- { "", "" },
+ { "bar_inside1dark", "" },
+ { "bar_inside2dark", "" },
+ { "hudnumbers", "" },
+ { "bar_inside1", "" },
+ { "bar_inside2", "" },
+ { "bar_outline", "" },
{ "sitesniper", "sitesniperm" },
{ "siteM16", "siteM16m" },
{ "sitelaser", "sitelaserm" },
{ "laserdot", "laserdotm" },
{ "viewfinder_128", "viewfinder_128m" },
- { "bleeder", "" }
+ { "bleeder", "" },
+ { "gren_rem", "noMaskNeeded" }
};
RwTexture *gpSniperSightTex;
@@ -216,6 +221,7 @@ RwTexture *gpLaserSightTex;
RwTexture *gpLaserDotTex;
RwTexture *gpViewFinderTex;
+// TODO(LCS): some things were reversed from LCS but not all
void CHud::Draw()
{
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
@@ -408,6 +414,8 @@ void CHud::Draw()
DrawMoneyCounter
*/
+ RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); // TODO(LCS): temp filtering fix for money counter, remove later
+
wchar sPrint[16];
wchar sPrintIcon[16];
char sTemp[16];
@@ -420,25 +428,8 @@ void CHud::Draw()
m_LastDisplayScore = CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney;
}
if (m_DisplayScoreState != FADED_OUT) {
- sprintf(sTemp, "$%08d", CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney);
- AsciiToUnicode(sTemp, sPrint);
-
- CFont::SetPropOff();
- CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetCentreOff();
- CFont::SetRightJustifyOn();
- CFont::SetRightJustifyWrap(0.0f);
- CFont::SetBackGroundOnlyTextOff();
- CFont::SetFontStyle(FONT_HEADING);
- CFont::SetPropOff();
- CFont::SetDropShadowPosition(2);
- CFont::SetDropColor(CRGBA(0, 0, 0, alpha));
- MONEY_COLOR.a = alpha;
- CFont::SetColor(MONEY_COLOR);
-
if (FrontEndMenuManager.m_PrefsShowHud) {
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(110.0f), SCREEN_SCALE_Y(43.0f), sPrint);
+ DrawCash();
}
}
@@ -451,46 +442,23 @@ void CHud::Draw()
alpha = CHud::DrawFadeState(HUD_WEAPON_FADING, 1);
m_LastWeapon = playerPed->GetWeapon()->m_eWeaponType;
}
+ alpha = Min(alpha, m_HudAlpha);
if (m_WeaponState != FADED_OUT) {
CWeapon *weapon = playerPed->GetWeapon();
- int32 AmmoAmount = CWeaponInfo::GetWeaponInfo((eWeaponType)WeaponType)->m_nAmountofAmmunition;
- int32 AmmoInClip = weapon->m_nAmmoInClip;
- int32 TotalAmmo = weapon->m_nAmmoTotal;
- int32 Ammo, Clip;
-
- if (AmmoAmount <= 1 || AmmoAmount >= 1000)
- sprintf(sTemp, "%d", TotalAmmo);
- else {
- if (WeaponType == WEAPONTYPE_FLAMETHROWER) {
- Clip = AmmoInClip / 10;
-
- Ammo = Min((TotalAmmo - AmmoInClip) / 10, 9999);
- } else {
- Clip = AmmoInClip;
-
- Ammo = Min(TotalAmmo - AmmoInClip, 9999);
- }
-
- sprintf(sTemp, "%d-%d", Ammo, Clip);
- }
-
- AsciiToUnicode(sTemp, sPrint);
CWeaponInfo *weaponInfo = CWeaponInfo::GetWeaponInfo((eWeaponType)WeaponType);
/*
DrawWeaponIcon
*/
if (FrontEndMenuManager.m_PrefsShowHud) {
+ float right = FrontEndMenuManager.m_PrefsUseWideScreen ? 468.6f : 470.0f;
+ float left = right - (FrontEndMenuManager.m_PrefsUseWideScreen ? 48.6f : 54.0f);
if (weaponInfo->m_nModelId <= 0) {
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
if (FrontEndMenuManager.m_PrefsShowHud)
Sprites[WeaponType].Draw(
- CRect(SCREEN_SCALE_FROM_RIGHT(99.0f), SCREEN_SCALE_Y(27.0f), SCREEN_SCALE_FROM_RIGHT(35.0f), SCREEN_SCALE_Y(91.0f)),
- CRGBA(255, 255, 255, alpha),
- 0.015f, 0.015f,
- 1.0f, 0.0f,
- 0.015f, 1.0f,
- 1.0f, 1.0f);
+ CRect(PSP_SCREEN_SCALE_X(left), PSP_SCREEN_SCALE_Y(16.0f), PSP_SCREEN_SCALE_X(right), PSP_SCREEN_SCALE_Y(60.0f)),
+ CRGBA(255, 255, 255, alpha));
} else {
CBaseModelInfo *weaponModel = CModelInfo::GetModelInfo(weaponInfo->m_nModelId);
RwTexDictionary *weaponTxd = CTxdStore::GetSlot(weaponModel->GetTxdSlot())->texDict;
@@ -510,12 +478,8 @@ void CHud::Draw()
static CSprite2d sprite;
sprite.m_pTexture = weaponIcon;
sprite.Draw(
- CRect(SCREEN_SCALE_FROM_RIGHT(99.0f), SCREEN_SCALE_Y(27.0f), SCREEN_SCALE_FROM_RIGHT(35.0f), SCREEN_SCALE_Y(91.0f)),
- CRGBA(255, 255, 255, alpha),
- 0.015f, 0.015f,
- 1.0f, 0.0f,
- 0.015f, 1.0f,
- 1.0f, 1.0f);
+ CRect(PSP_SCREEN_SCALE_X(left), PSP_SCREEN_SCALE_Y(16.0f), PSP_SCREEN_SCALE_X(right), PSP_SCREEN_SCALE_Y(60.0f)),
+ CRGBA(255, 255, 255, alpha));
sprite.m_pTexture = nil;
#endif
}
@@ -523,7 +487,7 @@ void CHud::Draw()
}
CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.8f));
+ CFont::SetScale(PSP_SCREEN_SCALE_X(FrontEndMenuManager.m_PrefsUseWideScreen ? 0.18f : 0.2f), PSP_SCREEN_SCALE_Y(0.44f));
CFont::SetJustifyOff();
CFont::SetCentreOn();
CFont::SetCentreSize(SCREEN_STRETCH_X(DEFAULT_SCREEN_WIDTH));
@@ -531,13 +495,65 @@ void CHud::Draw()
CFont::SetDropShadowPosition(0);
CFont::SetFontStyle(FONT_STANDARD);
+ int32 AmmoAmount = CWeaponInfo::GetWeaponInfo((eWeaponType)WeaponType)->m_nAmountofAmmunition;
+ int32 AmmoInClip = weapon->m_nAmmoInClip;
+ int32 TotalAmmo = weapon->m_nAmmoTotal;
+ int32 Ammo, Clip;
+
if (Min(9999, TotalAmmo - AmmoInClip) != 9999 && !CDarkel::FrenzyOnGoing() && weaponInfo->m_nWeaponSlot > 1 && weapon->m_eWeaponType != WEAPONTYPE_DETONATOR) {
CFont::SetDropShadowPosition(2);
CFont::SetDropColor(CRGBA(0, 0, 0, alpha));
AMMO_COLOR.a = alpha;
CFont::SetColor(AMMO_COLOR);
- if (FrontEndMenuManager.m_PrefsShowHud)
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(66.0f), SCREEN_SCALE_Y(90.0f), sPrint);
+ if (FrontEndMenuManager.m_PrefsShowHud) {
+
+
+ if (AmmoAmount <= 1 || AmmoAmount >= 1000)
+ {
+ sprintf(sTemp, "%d", TotalAmmo);
+ AsciiToUnicode(sTemp, sPrint);
+ float pos = 435.0f;
+#ifdef FIX_BUGS
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ pos = 438.0f;
+#endif
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(PSP_DEFAULT_SCREEN_WIDTH - pos), PSP_SCREEN_SCALE_Y(42.0f), sPrint);
+ }
+ else {
+
+ if (WeaponType == WEAPONTYPE_FLAMETHROWER) {
+ Clip = AmmoInClip / 10;
+
+ Ammo = Min((TotalAmmo - AmmoInClip) / 10, 9999);
+ }
+ else {
+ Clip = AmmoInClip;
+
+ Ammo = Min(TotalAmmo - AmmoInClip, 9999);
+ }
+
+ char sMinus[10];
+ char sAmmo[20];
+ char sClip[20];
+
+ sprintf(sMinus, "-");
+ sprintf(sAmmo, "%d", Ammo);
+ sprintf(sClip, "%d", Clip);
+
+ CFont::SetCentreOff();
+ CFont::SetRightJustifyOn();
+ AsciiToUnicode(sAmmo, sPrint);
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(PSP_DEFAULT_SCREEN_WIDTH - (FrontEndMenuManager.m_PrefsUseWideScreen ? 438.0f : 435.0f)), PSP_SCREEN_SCALE_Y(42.0f), sPrint);
+
+ CFont::SetRightJustifyOff();
+ AsciiToUnicode(sMinus, sPrint);
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(PSP_DEFAULT_SCREEN_WIDTH - (FrontEndMenuManager.m_PrefsUseWideScreen ? 439.0f : 436.0f)), PSP_SCREEN_SCALE_Y(42.0f), sPrint);
+
+ AsciiToUnicode(sClip, sPrint);
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(PSP_DEFAULT_SCREEN_WIDTH - (FrontEndMenuManager.m_PrefsUseWideScreen ? 441.0f : 439.0f)), PSP_SCREEN_SCALE_Y(42.0f), sPrint);
+
+ }
+ }
CFont::SetDropShadowPosition(0);
}
}
@@ -571,23 +587,8 @@ void CHud::Draw()
&& FRAMECOUNTER & 8) {
if (playerPed->m_fHealth >= 10
|| playerPed->m_fHealth < 10 && FRAMECOUNTER & 8) {
-
- AsciiToUnicode("{", sPrintIcon);
-#ifdef FIX_BUGS
- sprintf(sTemp, "%03d", int32(playerPed->m_fHealth + 0.5f));
-#else
- sprintf(sTemp, "%03d", (int32)playerPed->m_fHealth);
-#endif
- AsciiToUnicode(sTemp, sPrint);
-
- CFont::SetColor(HEALTH_COLOR);
if (FrontEndMenuManager.m_PrefsShowHud) {
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(110.0f), SCREEN_SCALE_Y(65.0f), sPrint);
-
- if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss + 2000 || FRAMECOUNTER & 4) {
- // CFont::SetColor(HEALTH_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(110.0f + 54.0f), SCREEN_SCALE_Y(65.0f), sPrintIcon);
- }
+ DrawHealthBar(playerPed->m_fHealth);
}
}
}
@@ -608,13 +609,7 @@ void CHud::Draw()
CFont::SetColor(ARMOUR_COLOR);
if (FrontEndMenuManager.m_PrefsShowHud) {
-
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(182.0f), SCREEN_SCALE_Y(65.0f), sPrint);
-
- if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss + 2000 || FRAMECOUNTER & 4) {
- // CFont::SetColor(ARMOUR_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(182.0f + 52.0f), SCREEN_SCALE_Y(65.0f), sPrintIcon);
- }
+ DrawArmourBar(playerPed->m_fArmour);
}
}
}
@@ -631,36 +626,23 @@ void CHud::Draw()
}
if (m_WantedState != FADED_OUT) {
- CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetJustifyOff();
- CFont::SetCentreOff();
- CFont::SetRightJustifyOn();
- CFont::SetPropOn();
- CFont::SetFontStyle(FONT_STANDARD);
-
- AsciiToUnicode(">", sPrintIcon);
-
+ char wantedStar[] = "\x16";
+ float starX = 441.0f;
for (int i = 0; i < 6; i++) {
if (FrontEndMenuManager.m_PrefsShowHud) {
if (playerPed->m_pWanted->GetWantedLevel() > i
&& (CTimer::GetTimeInMilliseconds() > playerPed->m_pWanted->m_nLastWantedLevelChange
+ 2000 || FRAMECOUNTER & 4)) {
- WANTED_COLOR.a = alpha;
- CFont::SetColor(WANTED_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(110.0f + 23.0f * i), SCREEN_SCALE_Y(87.0f), sPrintIcon);
+ DrawTimeAndCashNumbers(wantedStar, starX, 63.0f, false);
} else if (playerPed->m_pWanted->m_nMinWantedLevel > i && FRAMECOUNTER & 4) {
- WANTED_COLOR_FLASH.a = alpha;
- CFont::SetColor(WANTED_COLOR_FLASH);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(110.0f + 23.0f * i), SCREEN_SCALE_Y(87.0f), sPrintIcon);
-
- } else if (playerPed->m_pWanted->GetWantedLevel() <= i) {
- NOTWANTED_COLOR.a = alpha;
- CFont::SetColor(NOTWANTED_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(110.0f + 23.0f * i), SCREEN_SCALE_Y(87.0f), sPrintIcon);
+ DrawTimeAndCashNumbers(wantedStar, starX, 63.0f, true);
}
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ starX -= 11.0f;
+ else
+ starX -= 13.5f;
}
}
}
@@ -788,14 +770,14 @@ void CHud::Draw()
CFont::SetPropOn();
CFont::SetBackgroundOff();
- if (FrontEndMenuManager.m_PrefsLanguage == CMenuManager::LANGUAGE_SPANISH)
- CFont::SetScale(SCREEN_SCALE_X(1.7f * 0.8f), SCREEN_SCALE_Y(1.8f));
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.42768f), PSP_SCREEN_SCALE_Y(0.88f));
else
- CFont::SetScale(SCREEN_SCALE_X(1.7f), SCREEN_SCALE_Y(1.8f));
-
- CFont::SetSlantRefPoint(SCREEN_SCALE_FROM_RIGHT(32.0f), SCREEN_SCALE_FROM_BOTTOM(128.0f));
- CFont::SetSlant(0.15f);
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.4752f), PSP_SCREEN_SCALE_Y(0.88f));
+ //CFont::SetSlantRefPoint(SCREEN_SCALE_FROM_RIGHT(32.0f), SCREEN_SCALE_FROM_BOTTOM(128.0f));
+ //CFont::SetSlant(0.15f);
+ CFont::SetWrapx(SCREEN_WIDTH);
CFont::SetRightJustifyOn();
CFont::SetRightJustifyWrap(0.0f);
CFont::SetBackGroundOnlyTextOff();
@@ -805,9 +787,9 @@ void CHud::Draw()
CFont::SetColor(CRGBA(ZONE_COLOR.r, ZONE_COLOR.g, ZONE_COLOR.b, fZoneAlpha));
if (!CTheScripts::bPlayerIsInTheStatium)
- CFont::PrintStringFromBottom(SCREEN_SCALE_FROM_RIGHT(32.0f), SCREEN_SCALE_FROM_BOTTOM(128.0f), m_ZoneToPrint);
+ CFont::PrintStringFromBottom(PSP_SCREEN_SCALE_FROM_RIGHT(24.0f), PSP_SCREEN_SCALE_FROM_BOTTOM(16.0f), m_ZoneToPrint);
- CFont::SetSlant(0.f);
+ //CFont::SetSlant(0.f);
} else {
m_ZoneState = 3;
}
@@ -888,13 +870,14 @@ void CHud::Draw()
CFont::SetPropOn();
CFont::SetBackgroundOff();
- if (FrontEndMenuManager.m_PrefsLanguage != CMenuManager::LANGUAGE_ITALIAN && FrontEndMenuManager.m_PrefsLanguage != CMenuManager::LANGUAGE_SPANISH)
- CFont::SetScale(SCREEN_SCALE_X(1.7f), SCREEN_SCALE_Y(1.8f));
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.42768f), PSP_SCREEN_SCALE_Y(0.88f));
else
- CFont::SetScale(SCREEN_SCALE_X(1.7f * 0.85f), SCREEN_SCALE_Y(1.8f));
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.4752f), PSP_SCREEN_SCALE_Y(0.88f));
- CFont::SetSlantRefPoint(SCREEN_SCALE_FROM_RIGHT(32.0f), SCREEN_SCALE_FROM_BOTTOM(105.0f));
- CFont::SetSlant(0.15f);
+ CFont::SetWrapx(SCREEN_WIDTH);
+ CFont::SetSlantRefPoint(PSP_SCREEN_SCALE_FROM_RIGHT(24.0f), PSP_SCREEN_SCALE_FROM_BOTTOM(35.6f));
+ CFont::SetSlant(0.f);
CFont::SetRightJustifyOn();
CFont::SetRightJustifyWrap(0.0f);
@@ -904,7 +887,7 @@ void CHud::Draw()
CFont::SetColor(CRGBA(VEHICLE_COLOR.r, VEHICLE_COLOR.g, VEHICLE_COLOR.b, fVehicleAlpha));
CFont::SetDropColor(CRGBA(0, 0, 0, fVehicleAlpha));
- CFont::PrintStringFromBottom(SCREEN_SCALE_FROM_RIGHT(32.0f), SCREEN_SCALE_FROM_BOTTOM(105.0f), m_pVehicleNameToPrint);
+ CFont::PrintStringFromBottom(PSP_SCREEN_SCALE_FROM_RIGHT(24.0f), PSP_SCREEN_SCALE_FROM_BOTTOM(35.6f), m_pVehicleNameToPrint);
CFont::SetSlant(0.f);
}
@@ -921,24 +904,8 @@ void CHud::Draw()
DrawClock
*/
if (m_ClockState) {
- CFont::SetJustifyOff();
- CFont::SetCentreOff();
- CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetBackGroundOnlyTextOff();
- CFont::SetPropOff();
- CFont::SetFontStyle(FONT_HEADING);
- CFont::SetRightJustifyOn();
- CFont::SetRightJustifyWrap(0.0f);
- CFont::SetDropShadowPosition(2);
- CFont::SetDropColor(CRGBA(0, 0, 0, 255));
-
- sprintf(sTemp, "%02d:%02d", CClock::GetHours(), CClock::GetMinutes());
- AsciiToUnicode(sTemp, sPrint);
-
- CFont::SetColor(CLOCK_COLOR);
if (FrontEndMenuManager.m_PrefsShowHud)
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(111.0f), SCREEN_SCALE_Y(22.0f), sPrint);
+ DrawTime();
}
/*
@@ -946,8 +913,35 @@ void CHud::Draw()
*/
wchar sTimer[16];
+ uint16 nNumBigOnscrnLines = 0;
+ for (uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) {
+ if (CUserDisplay::OnscnTimer.m_sCounters[i].m_bCounterProcessed) {
+ if (!CounterOnLastFrame[i])
+ CounterFlashTimer[i] = 1;
- if (!CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockProcessed)
+ CounterOnLastFrame[i] = true;
+
+ if (CounterFlashTimer[i] != 0) {
+ if (++CounterFlashTimer[i] > 50)
+ CounterFlashTimer[i] = 0;
+ }
+
+ if (FRAMECOUNTER & 4 || CounterFlashTimer[i] == 0) {
+ if (CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText2[0] != '\0') {
+ wchar* pCounterText = TheText.Get(CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText2);
+ UseTimerCounterFontSettings();
+ CFont::SetPropOn();
+ CFont::SetColor(CRGBA(255, 255, 255, m_HudAlpha));
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.7f), PSP_SCREEN_SCALE_Y(1.5217391f));
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(12.0f), PSP_SCREEN_SCALE_Y(31.0f * nNumBigOnscrnLines) + PSP_SCREEN_SCALE_Y(100.0f), pCounterText);
+ }
+ }
+ if (CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText2[0] != '\0')
+ nNumBigOnscrnLines++;
+ }
+ }
+
+ if (!CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockProcessed || CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockTickThisFrame)
TimerOnLastFrame = false;
for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) {
@@ -956,43 +950,45 @@ void CHud::Draw()
}
if (CUserDisplay::OnscnTimer.m_bProcessed) {
- if (CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockProcessed) {
+ if (CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockProcessed && !CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockTickThisFrame) {
if (!TimerOnLastFrame)
TimerFlashTimer = 1;
TimerOnLastFrame = true;
- if (TimerFlashTimer != 0) {
- if (++TimerFlashTimer > 50)
- TimerFlashTimer = 0;
- }
-
if (FRAMECOUNTER & 4 || TimerFlashTimer == 0) {
AsciiToUnicode(CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockBuffer, sTimer);
- CFont::SetPropOn();
- CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetRightJustifyOn();
- CFont::SetRightJustifyWrap(0.0f);
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
+ UseTimerCounterFontSettings();
CFont::SetPropOff();
- CFont::SetBackGroundOnlyTextOn();
- CFont::SetDropShadowPosition(2);
- CFont::SetDropColor(CRGBA(0, 0, 0, 255));
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetColor(TIMER_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(37.0f), SCREEN_SCALE_Y(110.0f), sTimer);
- CFont::SetPropOn();
+ CFont::SetColor(CRGBA(
+ CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockColour.r,
+ CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockColour.g,
+ CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockColour.b,
+ m_HudAlpha));
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(12.0f), PSP_SCREEN_SCALE_Y(31.0f * nNumBigOnscrnLines) + PSP_SCREEN_SCALE_Y(100.0f), sTimer);
if (CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockText[0]) {
- CFont::SetDropShadowPosition(2);
- CFont::SetDropColor(CRGBA(0, 0, 0, 255));
- CFont::SetColor(TIMER_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(37.0f) - SCREEN_SCALE_X(80.0f), SCREEN_SCALE_Y(110.0f), TheText.Get(CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockText));
+ float width = CFont::GetStringWidth(sTimer) + PSP_SCREEN_SCALE_Y(4.0f);
+ CFont::SetPropOn();
+ CFont::SetColor(CRGBA(
+ CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockColour.r,
+ CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockColour.g,
+ CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockColour.b,
+ m_HudAlpha));
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(12.0f) - width, PSP_SCREEN_SCALE_Y(31.0f * nNumBigOnscrnLines) + PSP_SCREEN_SCALE_Y(100.0f), TheText.Get(CUserDisplay::OnscnTimer.m_sClocks[0].m_aClockText));
}
}
+
+ if (TimerFlashTimer != 0) {
+ if (++TimerFlashTimer > 50)
+ TimerFlashTimer = 0;
+ }
}
+ int nNumOnscrnLines = 0;
+ if (CUserDisplay::OnscnTimer.m_sClocks[0].m_bClockProcessed)
+ nNumOnscrnLines = 1;
+
for(uint32 i = 0; i < NUMONSCREENCOUNTERS; i++) {
if (CUserDisplay::OnscnTimer.m_sCounters[i].m_bCounterProcessed) {
if (!CounterOnLastFrame[i])
@@ -1005,52 +1001,62 @@ void CHud::Draw()
CounterFlashTimer[i] = 0;
}
- if (FRAMECOUNTER & 4 || CounterFlashTimer[i] == 0) {
+ if (FRAMECOUNTER & 4 || CounterFlashTimer[i] == 0 || CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText2[0] != '\0') {
+ float sizeOfCounter;
if (CUserDisplay::OnscnTimer.m_sCounters[i].m_nType == COUNTER_DISPLAY_NUMBER) {
AsciiToUnicode(CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterBuffer, sTimer);
- CFont::SetPropOn();
- CFont::SetBackgroundOff();
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetCentreOff();
- CFont::SetRightJustifyOn();
- CFont::SetRightJustifyWrap(0.0f);
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
- CFont::SetWrapx(SCREEN_STRETCH_X(DEFAULT_SCREEN_WIDTH));
- CFont::SetPropOn();
- CFont::SetBackGroundOnlyTextOn();
- CFont::SetDropShadowPosition(2);
- CFont::SetDropColor(CRGBA(0, 0, 0, 255));
- CFont::SetColor(COUNTER_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(37.0f), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y * 20.f * i) + SCREEN_SCALE_Y(132.0f), sTimer);
+ UseTimerCounterFontSettings();
+ CFont::SetPropOff();
+ CFont::SetColor(CRGBA(
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.r,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.g,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.b,
+ m_HudAlpha));
+ sizeOfCounter = CFont::GetStringWidth(sTimer) + PSP_SCREEN_SCALE_X(4.0f);
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(12.0f), PSP_SCREEN_SCALE_Y(100.0f) + PSP_SCREEN_SCALE_Y(20.0f * nNumOnscrnLines) + PSP_SCREEN_SCALE_Y(31.0f * nNumBigOnscrnLines), sTimer);
} else {
int counter = atoi(CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterBuffer);
- const float barWidth = SCREEN_SCALE_X(100.f / 2.f);
- const float right = SCREEN_SCALE_FROM_RIGHT(37.0f);
+ const float barWidth = PSP_SCREEN_SCALE_X(92.f / 2.f);
+ const float right = PSP_SCREEN_SCALE_FROM_RIGHT(12.0f);
const float left = right - barWidth;
- const float barHeight = SCREEN_SCALE_Y(11.0f);
- const float top = SCREEN_SCALE_Y(132.0f) + SCREEN_SCALE_Y(8.0f) + SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y * 20.f * i);
+ const float barHeight = PSP_SCREEN_SCALE_Y(11.0f);
+ const float top = PSP_SCREEN_SCALE_Y(100.0f) + PSP_SCREEN_SCALE_Y(20.0f * nNumOnscrnLines) + PSP_SCREEN_SCALE_Y(31.0f * nNumBigOnscrnLines) + PSP_SCREEN_SCALE_Y(3.0f);
const float bottom = top + barHeight;
+ sizeOfCounter = barWidth + PSP_SCREEN_SCALE_X(4.0f);
+
// shadow
- CSprite2d::DrawRect(CRect(left + SCREEN_SCALE_X(6.0f), top + SCREEN_SCALE_Y(2.0f), right + SCREEN_SCALE_X(6.0f), bottom + SCREEN_SCALE_Y(2.0f)), CRGBA(0, 0, 0, 255));
+ CSprite2d::DrawRect(CRect(left - PSP_SCREEN_SCALE_X(1.0f), top - PSP_SCREEN_SCALE_Y(1.0f), right + PSP_SCREEN_SCALE_X(1.0f), bottom + PSP_SCREEN_SCALE_Y(1.0f)), CRGBA(0, 0, 0, m_HudAlpha));
- CSprite2d::DrawRect(CRect(left + SCREEN_SCALE_X(4.0f), top, right + SCREEN_SCALE_X(4.0f), bottom), CRGBA(27, 89, 130, 255));
- CSprite2d::DrawRect(CRect(left + SCREEN_SCALE_X(4.0f), top, left + SCREEN_SCALE_X(counter) / 2.0f + SCREEN_SCALE_X(4.0f), bottom), CRGBA(97, 194, 247, 255));
+ CSprite2d::DrawRect(
+ CRect(left, top, right, bottom),
+ CRGBA(
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour2.r,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour2.g,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour2.b,
+ m_HudAlpha));
+ CSprite2d::DrawRect(
+ CRect(left, top, left + counter / 100.0f * barWidth, bottom),
+ CRGBA(
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.r,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.g,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.b,
+ m_HudAlpha));
}
- if (CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText[0]) {
+ if (CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText1[0]) {
+ UseTimerCounterFontSettings();
CFont::SetPropOn();
- CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING));
- CFont::SetScale(SCREEN_SCALE_X(HUD_TEXT_SCALE_X), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y));
- CFont::SetDropShadowPosition(2);
- CFont::SetDropColor(CRGBA(0, 0, 0, 255));
- CFont::SetColor(COUNTER_COLOR);
- CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(37.0f) - SCREEN_SCALE_X(61.0f), SCREEN_SCALE_Y(HUD_TEXT_SCALE_Y * 20.f * i) + SCREEN_SCALE_Y(132.0f), TheText.Get(CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText));
+ CFont::SetColor(CRGBA(
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.r,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.g,
+ CUserDisplay::OnscnTimer.m_sCounters[i].m_colour1.b,
+ m_HudAlpha));
+ CFont::PrintString(PSP_SCREEN_SCALE_FROM_RIGHT(12.0f) - sizeOfCounter, PSP_SCREEN_SCALE_Y(100.0f) + PSP_SCREEN_SCALE_Y(20.f * nNumOnscrnLines) + PSP_SCREEN_SCALE_Y(31.0f * nNumBigOnscrnLines), TheText.Get(CUserDisplay::OnscnTimer.m_sCounters[i].m_aCounterText1));
}
- // unused/leftover color. I wonder what was it for
- CFont::SetColor(CRGBA(244, 225, 91, 255));
+ nNumOnscrnLines++;
}
}
}
@@ -1205,7 +1211,7 @@ void CHud::Draw()
onceItWasWidescreen = false;
CFont::DrawFonts();
- CFont::SetDropShadowPosition(2);
+ CFont::SetDropShadowPosition(0);
CFont::SetDropColor(CRGBA(0, 0, 0, 255));
CFont::SetScale(SCREEN_SCALE_X(0.58f), SCREEN_SCALE_Y(1.22f));
@@ -1431,6 +1437,221 @@ void CHud::Draw()
}
}
+int HealthFlashTimer = 50;
+
+void
+CHud::DrawHealthBar(int16 value)
+{
+ if (m_ItemToFlash == ITEM_HEALTH) {
+ if (CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fHealth > 10.0f) {
+ if (HealthFlashTimer-- == 0) {
+ m_ItemToFlash = -1;
+ HealthFlashTimer = 50;
+ }
+ }
+ }
+ float fHealth = value;
+ float fMaxHealth = CWorld::Players[CWorld::PlayerInFocus].m_nMaxHealth;
+ fHealth = Clamp(fHealth, 0.0f, fMaxHealth);
+ float fWidth = (fHealth / fMaxHealth) * 40.0f + 16.0f + 4.0f;
+ float u = fWidth / 64.0f;
+ if (value == 0) {
+ fWidth = 0.0f;
+ u = 0.0f;
+ } else if (value == fMaxHealth) {
+ fWidth = 64.0f;
+ u = 1.0f;
+ }
+
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ fWidth *= 0.68f;
+ else
+ fWidth *= 0.85f;
+
+ float fX1 = FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f;
+ float fX2 = fWidth + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ CRect rect1(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(40.0f), PSP_SCREEN_SCALE_X(fX2), PSP_SCREEN_SCALE_Y(50.0f));
+ CRGBA color1(255, 255, 255, m_HudAlpha);
+ Sprites[HUD_BAR_INSIDE2].Draw(rect1, color1, 0.0f, 0.0f, u, 0.0f, 0.0f, 1.0f, u, 1.0f);
+
+ fX1 = fWidth + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ fX2 = (FrontEndMenuManager.m_PrefsUseWideScreen ? 43.52f : 54.4f) + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ CRect rect2(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(40.0f), PSP_SCREEN_SCALE_X(fX2), PSP_SCREEN_SCALE_Y(50.0f));
+ CRGBA color2(255, 255, 255, m_HudAlpha);
+ Sprites[HUD_BAR_INSIDE2DARK].Draw(rect2, color2, u, 0.0f, 1.0f, 0.0f, u, 1.0f, 1.0f, 1.0f);
+
+ fX1 = FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f;
+ fX2 = (FrontEndMenuManager.m_PrefsUseWideScreen ? 43.52f : 54.4f) + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ CRect rect3(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(40.0f), PSP_SCREEN_SCALE_X(fX2), PSP_SCREEN_SCALE_Y(50.0f));
+ CRGBA color3(255, 255, 255, m_HudAlpha);
+ Sprites[HUD_BAR_OUTLINE].Draw(rect3, color3, 0.01f, 0.0f, 1.0f, 0.0f, 0.01f, 1.0f, 1.0f, 1.0f);
+
+ if (fMaxHealth > 100.0f)
+ {
+ CFont::SetFontStyle(FONT_STANDARD);
+ CFont::SetDropShadowPosition(0);
+ CFont::SetDropColor(CRGBA(0, 0, 0, m_HudAlpha));
+ CFont::SetColor(CRGBA(255, 255, 255, m_HudAlpha));
+ CFont::SetCentreOn();
+ if (fMaxHealth > 125.0f)
+ CFont::SetScale(FrontEndMenuManager.StretchX(PSP_SCALE_TO_PS2_X(FrontEndMenuManager.m_PrefsUseWideScreen ? 0.3375f : 0.45f)), FrontEndMenuManager.StretchY(PSP_SCALE_TO_PS2_Y(0.75f)));
+ else
+ CFont::SetScale(FrontEndMenuManager.StretchX(PSP_SCALE_TO_PS2_X(FrontEndMenuManager.m_PrefsUseWideScreen ? 0.2625f : 0.35f)), FrontEndMenuManager.StretchY(PSP_SCALE_TO_PS2_Y(0.6f)));
+
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ fX1 = 375.0f + 12.0f;
+ else
+ fX1 = 360.0f + 15.0f;
+ CFont::PrintString(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(36.0f), (wchar*)L"+");
+ }
+
+}
+
+int ArmourFlashTimer = 50;
+
+void
+CHud::DrawArmourBar(int16 value)
+{
+ if (m_ItemToFlash == ITEM_ARMOUR) {
+ if (CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fArmour > 10.0f) {
+ if (ArmourFlashTimer-- == 0) {
+ m_ItemToFlash = -1;
+ ArmourFlashTimer = 50;
+ }
+ }
+ }
+ float fArmour = value;
+ float fMaxArmour = CWorld::Players[CWorld::PlayerInFocus].m_nMaxArmour;
+ fArmour = Clamp(fArmour, 0.0f, fMaxArmour);
+ float fWidth = (fArmour / fMaxArmour) * 40.0f + 16.0f + 4.0f;
+ float u = fWidth / 64.0f;
+ if (value == 0) {
+ fWidth = 0.0f;
+ u = 0.0f;
+ } else if (value == fMaxArmour) {
+ fWidth = 64.0f;
+ u = 1.0f;
+ }
+
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ fWidth *= 0.68f;
+ else
+ fWidth *= 0.85f;
+
+ float fX1 = FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f;
+ float fX2 = fWidth + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ CRect rect1(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(28.0f), PSP_SCREEN_SCALE_X(fX2), PSP_SCREEN_SCALE_Y(38.0f));
+ CRGBA color1(255, 255, 255, m_HudAlpha);
+ Sprites[HUD_BAR_INSIDE1].Draw(rect1, color1, 0.0f, 0.0f, u, 0.0f, 0.0f, 1.0f, u, 1.0f);
+
+ fX1 = fWidth + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ fX2 = (FrontEndMenuManager.m_PrefsUseWideScreen ? 43.52f : 54.4f) + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ CRect rect2(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(28.0f), PSP_SCREEN_SCALE_X(fX2), PSP_SCREEN_SCALE_Y(38.0f));
+ CRGBA color2(255, 255, 255, m_HudAlpha);
+ Sprites[HUD_BAR_INSIDE1DARK].Draw(rect2, color2, u, 0.0f, 1.0f, 0.0f, u, 1.0f, 1.0f, 1.0f);
+
+ fX1 = FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f;
+ fX2 = (FrontEndMenuManager.m_PrefsUseWideScreen ? 43.52f : 54.4f) + (FrontEndMenuManager.m_PrefsUseWideScreen ? 375.0f : 360.0f);
+ CRect rect3(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(28.0f), PSP_SCREEN_SCALE_X(fX2), PSP_SCREEN_SCALE_Y(38.0f));
+ CRGBA color3(255, 255, 255, m_HudAlpha);
+ Sprites[HUD_BAR_OUTLINE].Draw(rect3, color3, 0.01f, 0.0f, 1.0f, 0.0f, 0.01f, 1.0f, 1.0f, 1.0f);
+
+ if (fMaxArmour > 100.0f) {
+ CFont::SetFontStyle(FONT_STANDARD);
+ CFont::SetDropShadowPosition(0);
+ CFont::SetDropColor(CRGBA(0, 0, 0, m_HudAlpha));
+ CFont::SetColor(CRGBA(255, 255, 255, m_HudAlpha));
+ CFont::SetCentreOn();
+ if (fMaxArmour > 125.0f)
+ CFont::SetScale(FrontEndMenuManager.StretchX(PSP_SCALE_TO_PS2_X(FrontEndMenuManager.m_PrefsUseWideScreen ? 0.3375f : 0.45f)), FrontEndMenuManager.StretchY(PSP_SCALE_TO_PS2_Y(0.75f)));
+ else
+ CFont::SetScale(FrontEndMenuManager.StretchX(PSP_SCALE_TO_PS2_X(FrontEndMenuManager.m_PrefsUseWideScreen ? 0.2625f : 0.35f)), FrontEndMenuManager.StretchY(PSP_SCALE_TO_PS2_Y(0.6f)));
+
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ fX1 = 375.0f + 12.0f;
+ else
+ fX1 = 360.0f + 15.0f;
+ CFont::PrintString(PSP_SCREEN_SCALE_X(fX1), PSP_SCREEN_SCALE_Y(24.0f), (wchar*)L"+");
+ }
+
+}
+
+void
+CHud::DrawTimeAndCashNumbers(char *str, float x, float y, bool secondSet)
+{
+ CRGBA color(255, 255, 255, m_HudAlpha);
+
+ float width = 11.0f;
+ if (FrontEndMenuManager.m_PrefsUseWideScreen)
+ width = 9.0f;
+
+ float height = 10.0f;
+ while (*str) {
+ uint8 c = *str;
+ if (c >= '0' && c <= ':')
+ {
+ if (secondSet) c -= '%';
+ else c -= '0';
+ } else {
+ if (c == 22) {
+ if (secondSet)
+ color = CRGBA(62, 141, 188, m_HudAlpha);
+ else
+ color = CRGBA(192, 155, 54, m_HudAlpha);
+ } else if (!secondSet)
+ c = 10;
+ else
+ c = 21;
+ }
+
+ int row = c / 8;
+ int col = c - row * 8;
+ float width2 = width;
+ if (c == 22)
+ width2 += 3.0f;
+ CRect rect(PSP_SCREEN_SCALE_X(x), PSP_SCREEN_SCALE_Y(y), PSP_SCREEN_SCALE_X(x+ width2), PSP_SCREEN_SCALE_Y(y) + PSP_SCREEN_SCALE_Y(height));
+
+ float u = col * 0.125f;
+ // TODO(LCS): some odd calculation with u going on in here if it's < 0, it might be fabs, but maybe not
+
+ float v = row * 0.265625f;
+ // TODO(LCS): same odd calculation with v as above
+
+ str++;
+ Sprites[HUD_HUDNUMBERS].Draw(rect, color, u, v, u + 0.125f, v, u, v + 0.265625f, u + 0.125f, v + 0.265625f);
+
+ x += (width - 2.0f);
+ if (c == 10)
+ x -= 4.0f;
+
+#ifdef GTA_PSP
+ x = Ceil(PSP_SCREEN_SCALE_X(x)) * ((float)PSP_DEFAULT_SCREEN_WIDTH / (float)SCREEN_WIDTH);
+#else
+ // BUG: actually above wasn't PSP only but on higher resolutions things don't look like they were meant to, so we stick with PS2 version here
+ x = Ceil(PSP_SCALE_TO_PS2_X(x)) * ((float)PSP_DEFAULT_SCREEN_WIDTH / (float)DEFAULT_SCREEN_WIDTH);
+#endif
+ }
+}
+
+void
+CHud::DrawCash()
+{
+ char str[200];
+ sprintf(str, "$%08d", CWorld::Players[CWorld::PlayerInFocus].m_nMoney);
+ DrawTimeAndCashNumbers(str, FrontEndMenuManager.m_PrefsUseWideScreen ? 386.0f : 373.0f, 53.0f, true);
+}
+
+void
+CHud::DrawTime()
+{
+ // TODO(LCS): a lot more code should be here
+
+ char str[24];
+ sprintf(str, "%02d:%02d", CClock::ms_nGameClockHours, CClock::ms_nGameClockMinutes);
+ DrawTimeAndCashNumbers(str, FrontEndMenuManager.m_PrefsUseWideScreen ? 386.0f : 373.0f, 17.0f, false);
+}
+
+
void CHud::DrawAfterFade()
{
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
@@ -1840,7 +2061,7 @@ void CHud::ReInitialise() {
m_LastWeapon = 0;
}
-wchar LastBigMessage[6][128];
+wchar LastBigMessage[8][128];
void CHud::SetBigMessage(wchar *message, uint16 style)
{
@@ -2087,3 +2308,17 @@ CHud::ResetWastedText(void)
m_BigMessage[2][0] = 0;
m_BigMessage[0][0] = 0;
}
+
+void
+CHud::UseTimerCounterFontSettings()
+{
+ CFont::SetScale(PSP_SCREEN_SCALE_X(0.4048f), PSP_SCREEN_SCALE_Y(0.88f));
+ CFont::SetFontStyle(FONT_STANDARD);
+ CFont::SetCentreOff();
+ CFont::SetRightJustifyOn();
+ CFont::SetRightJustifyWrap(0.0f);
+ CFont::SetDropShadowPosition(0);
+ CFont::SetDropColor(CRGBA(0, 0, 0, 0));
+ CFont::SetBackgroundOff();
+ CFont::SetBackGroundOnlyTextOff();
+} \ No newline at end of file
diff --git a/src/renderer/Hud.h b/src/renderer/Hud.h
index a4b9609a..8a5dc9c6 100644
--- a/src/renderer/Hud.h
+++ b/src/renderer/Hud.h
@@ -38,15 +38,23 @@ enum eSprites
HUD_FIST,
HUD_SITEROCKET = 41,
HUD_RADARDISC = 50,
- HUD_SITESNIPER = 63,
+ HUD_BAR_INSIDE1DARK = 57,
+ HUD_BAR_INSIDE2DARK,
+ HUD_HUDNUMBERS,
+ HUD_BAR_INSIDE1,
+ HUD_BAR_INSIDE2,
+ HUD_BAR_OUTLINE,
+ HUD_SITESNIPER,
HUD_SITEM16,
HUD_SITELASER,
HUD_LASERDOT,
HUD_VIEWFINDER,
HUD_BLEEDER,
- NUM_HUD_SPRITES = 69,
+ NUM_HUD_SPRITES = 70,
};
+extern float BigMessageInUse[6];
+
class CHud
{
public:
@@ -76,13 +84,12 @@ public:
static wchar m_PagerMessage[256];
static bool m_Wants_To_Draw_Hud;
static bool m_Wants_To_Draw_3dMarkers;
- static wchar m_BigMessage[6][128];
+ static wchar m_BigMessage[8][128];
static int16 m_ItemToFlash;
static bool m_HideRadar;
static int32 m_ClockState;
// These aren't really in CHud
- static float BigMessageInUse[6];
static float BigMessageAlpha[6];
static float BigMessageX[6];
static float OddJob2OffTimer;
@@ -117,6 +124,9 @@ public:
static uint32 m_LastWeapon;
static uint32 m_LastTimeEnergyLost;
+ static wchar* gLastPrintForeverString;
+ static uint8 m_HudAlpha;
+
public:
static void Draw();
static void DrawAfterFade();
@@ -136,4 +146,11 @@ public:
static void Shutdown();
static float DrawFadeState(DRAW_FADE_STATE, int);
static void ResetWastedText(void);
+ static void DrawHealthBar(int16 value);
+ static void DrawArmourBar(int16 value);
+ static void DrawTimeAndCashNumbers(char *str, float x, float y, bool secondSet);
+ static void DrawCash();
+ static void DrawTime();
+
+ static void UseTimerCounterFontSettings();
};
diff --git a/src/renderer/MBlur.cpp b/src/renderer/MBlur.cpp
index cc8270ce..f2c85719 100644
--- a/src/renderer/MBlur.cpp
+++ b/src/renderer/MBlur.cpp
@@ -593,6 +593,8 @@ CMBlur::AddRenderFx(RwCamera *cam, RwRect *rect, float z, FxType type)
void
CMBlur::OverlayRenderFx(RwCamera *cam, RwRaster *frontBuf)
{
+ //TODO(LCS)
+#if 0
bool drawWaterDrops = false;
RwIm2DVertex verts[4];
int red = (0.75f*CTimeCycle::GetDirectionalRed() + CTimeCycle::GetAmbientRed())*0.55f * 255;
@@ -798,4 +800,5 @@ CMBlur::OverlayRenderFx(RwCamera *cam, RwRaster *frontBuf)
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
pBufVertCount = 0;
+#endif
}
diff --git a/src/renderer/Particle.cpp b/src/renderer/Particle.cpp
index 461a10a6..18e9e415 100644
--- a/src/renderer/Particle.cpp
+++ b/src/renderer/Particle.cpp
@@ -13,6 +13,7 @@
#include "Replay.h"
#include "Stats.h"
#include "Weather.h"
+#include "WaterLevel.h"
#include "MBlur.h"
#include "main.h"
#include "AudioScriptObject.h"
@@ -213,7 +214,6 @@ RwRaster *gpRainDropRaster;
RwTexture *gpSparkTex;
RwTexture *gpNewspaperTex;
RwTexture *gpGunSmokeTex;
-RwTexture *gpDotTex;
RwTexture *gpHeatHazeTex;
RwTexture *gpBeastieTex;
RwTexture *gpRainDripTex[MAX_RAINDRIP_FILES];
@@ -222,34 +222,30 @@ RwTexture *gpRainDripDarkTex[MAX_RAINDRIP_FILES];
RwRaster *gpSparkRaster;
RwRaster *gpNewspaperRaster;
RwRaster *gpGunSmokeRaster;
-RwRaster *gpDotRaster;
RwRaster *gpHeatHazeRaster;
RwRaster *gpBeastieRaster;
RwRaster *gpRainDripRaster[MAX_RAINDRIP_FILES];
RwRaster *gpRainDripDarkRaster[MAX_RAINDRIP_FILES];
+RwTexture *gpFireHoseTex;
+RwRaster *gpFireHoseRaster;
+
+RwTexture *gpMultiPlayerHitTex;
+RwRaster *gpMultiPlayerHitRaster;
+
float CParticle::ms_afRandTable[CParticle::RAND_TABLE_SIZE];
CParticle *CParticle::m_pUnusedListHead;
float CParticle::m_SinTable[CParticle::SIN_COS_TABLE_SIZE];
float CParticle::m_CosTable[CParticle::SIN_COS_TABLE_SIZE];
int32 Randomizer;
-int32 nParticleCreationInterval = 1;
float PARTICLE_WIND_TEST_SCALE = 0.002f;
-float fParticleScaleLimit = 0.5f;
-
-bool clearWaterDrop;
-int32 numWaterDropOnScreen;
#ifdef DEBUGMENU
SETTWEAKPATH("Particle");
-TWEAKINT32(nParticleCreationInterval, 0, 5, 1);
-TWEAKFLOAT(fParticleScaleLimit, 0.0f, 1.0f, 0.1f);
TWEAKFUNC(CParticle::ReloadConfig);
#endif
-
-
void CParticle::ReloadConfig()
{
debug("Initialising CParticleMgr...");
@@ -287,14 +283,6 @@ void CParticle::ReloadConfig()
gParticleArray[i].m_nFadeAlphaTimer = 0;
- gParticleArray[i].m_nCurrentZRotation = 0;
-
- gParticleArray[i].m_nZRotationTimer = 0;
-
- gParticleArray[i].m_fCurrentZRadius = 0.0f;
-
- gParticleArray[i].m_nZRadiusTimer = 0;
-
gParticleArray[i].m_nCurrentFrame = 0;
gParticleArray[i].m_nAnimationSpeedTimer = 0;
@@ -319,7 +307,7 @@ void CParticle::Initialise()
}
for ( int32 i = 0; i < SIN_COS_TABLE_SIZE; i++ )
- {
+ {
float angle = DEGTORAD(float(i) * float(360.0f / SIN_COS_TABLE_SIZE));
m_SinTable[i] = ::Sin(angle);
@@ -334,83 +322,98 @@ void CParticle::Initialise()
for ( int32 i = 0; i < MAX_SMOKE_FILES; i++ )
{
gpSmokeTex[i] = RwTextureRead(SmokeFiles[i], nil);
+ ASSERT(gpSmokeTex[i] != nil);
gpSmokeRaster[i] = RwTextureGetRaster(gpSmokeTex[i]);
}
gpSmoke2Tex = RwTextureRead("smokeII_3", nil);
+ ASSERT(gpSmoke2Tex != nil);
gpSmoke2Raster = RwTextureGetRaster(gpSmoke2Tex);
for ( int32 i = 0; i < MAX_RUBBER_FILES; i++ )
{
gpRubberTex[i] = RwTextureRead(RubberFiles[i], nil);
+ ASSERT(gpRubberTex[i] != nil);
gpRubberRaster[i] = RwTextureGetRaster(gpRubberTex[i]);
}
for ( int32 i = 0; i < MAX_RAINSPLASH_FILES; i++ )
{
gpRainSplashTex[i] = RwTextureRead(RainSplashFiles[i], nil);
+ ASSERT(gpRainSplashTex[i] != nil);
gpRainSplashRaster[i] = RwTextureGetRaster(gpRainSplashTex[i]);
}
for ( int32 i = 0; i < MAX_WATERSPRAY_FILES; i++ )
{
gpWatersprayTex[i] = RwTextureRead(WatersprayFiles[i], nil);
+ ASSERT(gpWatersprayTex[i] != nil);
gpWatersprayRaster[i] = RwTextureGetRaster(gpWatersprayTex[i]);
}
for ( int32 i = 0; i < MAX_EXPLOSIONMEDIUM_FILES; i++ )
{
gpExplosionMediumTex[i] = RwTextureRead(ExplosionMediumFiles[i], nil);
+ ASSERT(gpExplosionMediumTex[i] != nil);
gpExplosionMediumRaster[i] = RwTextureGetRaster(gpExplosionMediumTex[i]);
}
for ( int32 i = 0; i < MAX_GUNFLASH_FILES; i++ )
{
gpGunFlashTex[i] = RwTextureRead(GunFlashFiles[i], nil);
+ ASSERT(gpGunFlashTex[i] != nil);
gpGunFlashRaster[i] = RwTextureGetRaster(gpGunFlashTex[i]);
}
gpRainDropTex = RwTextureRead("raindrop4", nil);
+ ASSERT(gpRainDropTex != nil);
gpRainDropRaster = RwTextureGetRaster(gpRainDropTex);
-
for ( int32 i = 0; i < MAX_RAINSPLASHUP_FILES; i++ )
{
gpRainSplashupTex[i] = RwTextureRead(RainSplashupFiles[i], nil);
+ ASSERT(gpRainSplashupTex[i] != nil);
gpRainSplashupRaster[i] = RwTextureGetRaster(gpRainSplashupTex[i]);
}
for ( int32 i = 0; i < MAX_BIRDFRONT_FILES; i++ )
{
gpBirdfrontTex[i] = RwTextureRead(BirdfrontFiles[i], nil);
+ ASSERT(gpBirdfrontTex[i] != nil);
gpBirdfrontRaster[i] = RwTextureGetRaster(gpBirdfrontTex[i]);
}
for ( int32 i = 0; i < MAX_BOAT_FILES; i++ )
{
gpBoatTex[i] = RwTextureRead(BoatFiles[i], nil);
+ ASSERT(gpBoatTex[i] != nil);
gpBoatRaster[i] = RwTextureGetRaster(gpBoatTex[i]);
}
for ( int32 i = 0; i < MAX_CARDEBRIS_FILES; i++ )
{
gpCarDebrisTex[i] = RwTextureRead(CardebrisFiles[i], nil);
+ ASSERT(gpCarDebrisTex[i] != nil);
gpCarDebrisRaster[i] = RwTextureGetRaster(gpCarDebrisTex[i]);
}
for ( int32 i = 0; i < MAX_CARSPLASH_FILES; i++ )
{
gpCarSplashTex[i] = RwTextureRead(CarsplashFiles[i], nil);
+ ASSERT(gpCarSplashTex[i] != nil);
gpCarSplashRaster[i] = RwTextureGetRaster(gpCarSplashTex[i]);
}
gpBoatWakeTex = RwTextureRead("boatwake2", nil);
+ ASSERT(gpBoatWakeTex != nil);
gpBoatWakeRaster = RwTextureGetRaster(gpBoatWakeTex);
gpFlame1Tex = RwTextureRead("flame1", nil);
+ ASSERT(gpFlame1Tex != nil);
gpFlame1Raster = RwTextureGetRaster(gpFlame1Tex);
gpFlame5Tex = RwTextureRead("flame5", nil);
+ ASSERT(gpFlame5Tex != nil);
//#ifdef FIX_BUGS
#if 0
@@ -421,257 +424,409 @@ void CParticle::Initialise()
#endif
gpRainDropSmallTex = RwTextureRead("rainsmall", nil);
+ ASSERT(gpRainDropSmallTex != nil);
gpRainDropSmallRaster = RwTextureGetRaster(gpRainDropSmallTex);
gpBloodTex = RwTextureRead("blood", nil);
+ ASSERT(gpBloodTex != nil);
gpBloodRaster = RwTextureGetRaster(gpBloodTex);
gpLeafTex[0] = RwTextureRead("gameleaf01_64", nil);
+ ASSERT(gpLeafTex[0] != nil);
gpLeafRaster[0] = RwTextureGetRaster(gpLeafTex[0]);
gpLeafTex[1] = RwTextureRead("letter", nil);
+ ASSERT(gpLeafTex[1] != nil);
gpLeafRaster[1] = RwTextureGetRaster(gpLeafTex[1]);
gpCloudTex1 = RwTextureRead("cloud3", nil);
+ ASSERT(gpCloudTex1 != nil);
gpCloudRaster1 = RwTextureGetRaster(gpCloudTex1);
gpCloudTex4 = RwTextureRead("cloudmasked", nil);
+ ASSERT(gpCloudTex4 != nil);
gpCloudRaster4 = RwTextureGetRaster(gpCloudTex4);
gpBloodSmallTex = RwTextureRead("bloodsplat2", nil);
+ ASSERT(gpBloodSmallTex != nil);
gpBloodSmallRaster = RwTextureGetRaster(gpBloodSmallTex);
gpGungeTex = RwTextureRead("gunge", nil);
+ ASSERT(gpGungeTex != nil);
gpGungeRaster = RwTextureGetRaster(gpGungeTex);
gpCollisionSmokeTex = RwTextureRead("collisionsmoke", nil);
+ ASSERT(gpCollisionSmokeTex != nil);
gpCollisionSmokeRaster = RwTextureGetRaster(gpCollisionSmokeTex);
gpBulletHitTex = RwTextureRead("bullethitsmoke", nil);
+ ASSERT(gpBulletHitTex != nil);
gpBulletHitRaster = RwTextureGetRaster(gpBulletHitTex);
gpGunShellTex = RwTextureRead("gunshell", nil);
+ ASSERT(gpGunShellTex != nil);
gpGunShellRaster = RwTextureGetRaster(gpGunShellTex);
- gpPointlightTex = RwTextureRead("pointlight", nil);
+ gpPointlightTex = RwTextureRead("smoke5", nil);
+ ASSERT(gpPointlightTex != nil);
gpPointlightRaster = RwTextureGetRaster(gpPointlightTex);
gpSparkTex = RwTextureRead("spark", nil);
+ ASSERT(gpSparkTex != nil);
gpSparkRaster = RwTextureGetRaster(gpSparkTex);
- gpNewspaperTex = RwTextureRead("newspaper02_64", nil);
+ gpNewspaperTex = RwTextureRead("ballot_paper", nil);
+ ASSERT(gpNewspaperTex != nil);
gpNewspaperRaster = RwTextureGetRaster(gpNewspaperTex);
gpGunSmokeTex = RwTextureRead("gunsmoke3", nil);
+ ASSERT(gpGunSmokeTex != nil);
gpGunSmokeRaster = RwTextureGetRaster(gpGunSmokeTex);
- gpDotTex = RwTextureRead("dot", nil);
- gpDotRaster = RwTextureGetRaster(gpDotTex);
-
gpHeatHazeTex = RwTextureRead("heathaze", nil);
+ ASSERT(gpHeatHazeTex != nil);
gpHeatHazeRaster = RwTextureGetRaster(gpHeatHazeTex);
gpBeastieTex = RwTextureRead("beastie", nil);
+ ASSERT(gpBeastieTex != nil);
gpBeastieRaster = RwTextureGetRaster(gpBeastieTex);
gpRainDripTex[0] = RwTextureRead("raindrip64", nil);
+ ASSERT(gpRainDripTex[0] != nil);
gpRainDripRaster[0] = RwTextureGetRaster(gpRainDripTex[0]);
gpRainDripTex[1] = RwTextureRead("raindripb64", nil);
+ ASSERT(gpRainDripTex[1] != nil);
gpRainDripRaster[1] = RwTextureGetRaster(gpRainDripTex[1]);
gpRainDripDarkTex[0] = RwTextureRead("raindrip64_d", nil);
+ ASSERT(gpRainDripDarkTex[0] != nil);
gpRainDripDarkRaster[0] = RwTextureGetRaster(gpRainDripDarkTex[0]);
- gpRainDripDarkTex[1] = RwTextureRead("raindripb64_d", nil);
- gpRainDripDarkRaster[1] = RwTextureGetRaster(gpRainDripDarkTex[1]);
+ gpMultiPlayerHitTex = RwTextureRead("mphit", nil);
+ ASSERT(gpMultiPlayerHitTex != nil);
+ gpMultiPlayerHitRaster = RwTextureGetRaster(gpMultiPlayerHitTex);
- CTxdStore::PopCurrentTxd();
+ gpFireHoseTex = RwTextureRead("firehose", nil);
+ ASSERT(gpFireHoseTex != nil);
+ gpFireHoseRaster = RwTextureGetRaster(gpFireHoseTex);
- for ( int32 i = 0; i < MAX_PARTICLES; i++ )
+ CTxdStore::PopCurrentTxd();
+ SetPixelData();
+
+ debug("CParticle ready");
+}
+
+void CParticle::SetPixelData()
+{
+ for (int32 i = 0; i < MAX_PARTICLES; i++)
{
- tParticleSystemData *entry = &mod_ParticleSystemManager.m_aParticles[i];
-
- switch ( i )
+ tParticleSystemData* entry = &mod_ParticleSystemManager.m_aParticles[i];
+
+ switch (i)
{
- case PARTICLE_SPARK:
- case PARTICLE_SPARK_SMALL:
- case PARTICLE_RAINDROP_SMALL:
- case PARTICLE_HELI_ATTACK:
- entry->m_ppRaster = &gpRainDropSmallRaster;
- break;
-
- case PARTICLE_WATER_SPARK:
- entry->m_ppRaster = &gpSparkRaster;
- break;
-
- case PARTICLE_WHEEL_DIRT:
- case PARTICLE_SAND:
- case PARTICLE_STEAM2:
- case PARTICLE_STEAM_NY:
- case PARTICLE_STEAM_NY_SLOWMOTION:
- case PARTICLE_GROUND_STEAM:
- case PARTICLE_ENGINE_STEAM:
- case PARTICLE_PEDFOOT_DUST:
- case PARTICLE_CAR_DUST:
- case PARTICLE_EXHAUST_FUMES:
- entry->m_ppRaster = &gpSmoke2Raster;
- break;
-
- case PARTICLE_WHEEL_WATER:
- case PARTICLE_WATER:
- case PARTICLE_SMOKE:
- case PARTICLE_SMOKE_SLOWMOTION:
- case PARTICLE_DRY_ICE:
- case PARTICLE_GARAGEPAINT_SPRAY:
- case PARTICLE_STEAM:
- case PARTICLE_WATER_CANNON:
- case PARTICLE_EXTINGUISH_STEAM:
- case PARTICLE_HELI_DUST:
- case PARTICLE_PAINT_SMOKE:
- case PARTICLE_BULLETHIT_SMOKE:
- entry->m_ppRaster = gpSmokeRaster;
- break;
-
- case PARTICLE_BLOOD:
- entry->m_ppRaster = &gpBloodRaster;
- break;
-
- case PARTICLE_BLOOD_SMALL:
- case PARTICLE_BLOOD_SPURT:
- entry->m_ppRaster = &gpBloodSmallRaster;
- break;
-
- case PARTICLE_DEBRIS:
- case PARTICLE_TREE_LEAVES:
- entry->m_ppRaster = gpLeafRaster;
- break;
-
- case PARTICLE_DEBRIS2:
- entry->m_ppRaster = &gpGungeRaster;
- break;
-
- case PARTICLE_FLYERS:
- entry->m_ppRaster = &gpNewspaperRaster;
- break;
-
- case PARTICLE_FLAME:
- case PARTICLE_CARFLAME:
- entry->m_ppRaster = &gpFlame1Raster;
- break;
-
- case PARTICLE_FIREBALL:
- entry->m_ppRaster = &gpFlame5Raster;
- break;
-
- case PARTICLE_GUNFLASH:
- case PARTICLE_GUNFLASH_NOANIM:
- entry->m_ppRaster = gpGunFlashRaster;
- break;
-
-
- case PARTICLE_GUNSMOKE:
- case PARTICLE_WATERDROP:
- case PARTICLE_BLOODDROP:
- case PARTICLE_HEATHAZE:
- case PARTICLE_HEATHAZE_IN_DIST:
- entry->m_ppRaster = nil;
- break;
-
- case PARTICLE_GUNSMOKE2:
- case PARTICLE_BOAT_THRUSTJET:
- case PARTICLE_RUBBER_SMOKE:
- entry->m_ppRaster = gpRubberRaster;
- break;
-
- case PARTICLE_CIGARETTE_SMOKE:
- entry->m_ppRaster = &gpGunSmokeRaster;
- break;
-
- case PARTICLE_TEARGAS:
- entry->m_ppRaster = &gpHeatHazeRaster;
- break;
-
- case PARTICLE_SHARD:
- case PARTICLE_RAINDROP:
- case PARTICLE_RAINDROP_2D:
- entry->m_ppRaster = &gpRainDropRaster;
- break;
-
- case PARTICLE_SPLASH:
- case PARTICLE_PED_SPLASH:
- case PARTICLE_CAR_SPLASH:
- case PARTICLE_WATER_HYDRANT:
- entry->m_ppRaster = gpCarSplashRaster;
- break;
-
- case PARTICLE_RAIN_SPLASH:
- case PARTICLE_RAIN_SPLASH_BIGGROW:
- entry->m_ppRaster = gpRainSplashRaster;
- break;
-
- case PARTICLE_RAIN_SPLASHUP:
- entry->m_ppRaster = gpRainSplashupRaster;
- break;
-
- case PARTICLE_WATERSPRAY:
- entry->m_ppRaster = gpWatersprayRaster;
- break;
-
- case PARTICLE_EXPLOSION_MEDIUM:
- case PARTICLE_EXPLOSION_LARGE:
- case PARTICLE_EXPLOSION_MFAST:
- case PARTICLE_EXPLOSION_LFAST:
- entry->m_ppRaster = gpExplosionMediumRaster;
- break;
-
- case PARTICLE_BOAT_SPLASH:
- entry->m_ppRaster = &gpBoatWakeRaster;
- break;
-
- case PARTICLE_ENGINE_SMOKE:
- case PARTICLE_ENGINE_SMOKE2:
- case PARTICLE_CARFLAME_SMOKE:
- case PARTICLE_FIREBALL_SMOKE:
- case PARTICLE_ROCKET_SMOKE:
- case PARTICLE_TEST:
- entry->m_ppRaster = &gpCloudRaster4;
- break;
-
- case PARTICLE_CARCOLLISION_DUST:
- case PARTICLE_BURNINGRUBBER_SMOKE:
- entry->m_ppRaster = &gpCollisionSmokeRaster;
- break;
-
- case PARTICLE_CAR_DEBRIS:
- case PARTICLE_HELI_DEBRIS:
- case PARTICLE_BIRD_DEBRIS:
- entry->m_ppRaster = gpCarDebrisRaster;
- break;
-
- case PARTICLE_GUNSHELL_FIRST:
- case PARTICLE_GUNSHELL:
- case PARTICLE_GUNSHELL_BUMP1:
- case PARTICLE_GUNSHELL_BUMP2:
- entry->m_ppRaster = &gpGunShellRaster;
- break;
-
-
- case PARTICLE_BIRD_FRONT:
- entry->m_ppRaster = gpBirdfrontRaster;
- break;
-
- case PARTICLE_SHIP_SIDE:
- entry->m_ppRaster = gpBoatRaster;
- break;
-
- case PARTICLE_BEASTIE:
- entry->m_ppRaster = &gpBeastieRaster;
- break;
+ case PARTICLE_SPARK:
+ entry->m_ppRaster = &gpRainDropSmallRaster;
+ break;
+
+ case PARTICLE_SPARK_SMALL:
+ entry->m_ppRaster = &gpRainDropSmallRaster;
+ break;
+
+ case PARTICLE_WATER_SPARK:
+ entry->m_ppRaster = &gpSparkRaster;
+ break;
+
+ case PARTICLE_WHEEL_DIRT:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_SAND:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_WHEEL_WATER:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_BLOOD:
+ entry->m_ppRaster = &gpBloodRaster;
+ break;
+
+ case PARTICLE_BLOOD_SMALL:
+ entry->m_ppRaster = &gpBloodSmallRaster;
+ break;
+
+ case PARTICLE_BLOOD_SPURT:
+ entry->m_ppRaster = &gpBloodSmallRaster;
+ break;
+
+ case PARTICLE_DEBRIS:
+ entry->m_ppRaster = gpLeafRaster;
+ break;
+
+ case PARTICLE_DEBRIS2:
+ entry->m_ppRaster = &gpGungeRaster;
+ break;
+
+ case PARTICLE_FLYERS:
+ entry->m_ppRaster = &gpNewspaperRaster;
+ break;
+
+ case PARTICLE_WATER:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_FLAME:
+ entry->m_ppRaster = &gpFlame1Raster;
+ break;
+
+ case PARTICLE_FIREBALL:
+ entry->m_ppRaster = &gpFlame5Raster;
+ break;
+
+ case PARTICLE_GUNFLASH:
+ entry->m_ppRaster = gpGunFlashRaster;
+ break;
+
+ case PARTICLE_GUNFLASH_NOANIM:
+ entry->m_ppRaster = gpGunFlashRaster;
+ break;
+
+ case PARTICLE_GUNSMOKE:
+ entry->m_ppRaster = nil;
+ break;
+
+ case PARTICLE_GUNSMOKE2:
+ entry->m_ppRaster = gpRubberRaster;
+ break;
+
+ case PARTICLE_CIGARETTE_SMOKE:
+ entry->m_ppRaster = &gpGunSmokeRaster;
+ break;
+
+ case PARTICLE_TEARGAS:
+ entry->m_ppRaster = &gpHeatHazeRaster;
+ break;
+
+ case PARTICLE_SMOKE:
+ case PARTICLE_SMOKE_SLOWMOTION:
+ case PARTICLE_DRY_ICE:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_GARAGEPAINT_SPRAY:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_SHARD:
+ entry->m_ppRaster = &gpRainDropRaster;
+ break;
+
+ case PARTICLE_SPLASH:
+ entry->m_ppRaster = gpCarSplashRaster;
+ break;
+
+ case PARTICLE_CARFLAME:
+ entry->m_ppRaster = &gpFlame1Raster;
+ break;
+
+ case PARTICLE_STEAM:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_STEAM2:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_STEAM_NY:
+ case PARTICLE_STEAM_NY_SLOWMOTION:
+ case PARTICLE_GROUND_STEAM:
+ case PARTICLE_HYDRANT_STEAM:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_ENGINE_STEAM:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_RAINDROP:
+ entry->m_ppRaster = &gpRainDropRaster;
+ break;
+
+ case PARTICLE_RAINDROP_SMALL:
+ entry->m_ppRaster = &gpRainDropSmallRaster;
+ break;
+
+ case PARTICLE_RAIN_SPLASH:
+ case PARTICLE_RAIN_SPLASH_BIGGROW:
+ entry->m_ppRaster = gpRainSplashRaster;
+ break;
+
+ case PARTICLE_RAIN_SPLASHUP:
+ entry->m_ppRaster = gpRainSplashupRaster;
+ break;
+
+ case PARTICLE_WATERSPRAY:
+ entry->m_ppRaster = gpWatersprayRaster;
+ break;
+
+ case PARTICLE_RAINDROP_2D:
+ entry->m_ppRaster = &gpRainDropRaster;
+ break;
+
+ case PARTICLE_EXPLOSION_MEDIUM:
+ entry->m_ppRaster = gpExplosionMediumRaster;
+ break;
+
+ case PARTICLE_EXPLOSION_LARGE:
+ entry->m_ppRaster = gpExplosionMediumRaster;
+ break;
+
+ case PARTICLE_EXPLOSION_MFAST:
+ entry->m_ppRaster = gpExplosionMediumRaster;
+ break;
+
+ case PARTICLE_EXPLOSION_LFAST:
+ entry->m_ppRaster = gpExplosionMediumRaster;
+ break;
+
+ case PARTICLE_CAR_SPLASH:
+ entry->m_ppRaster = gpCarSplashRaster;
+ break;
+
+ case PARTICLE_BOAT_SPLASH:
+ entry->m_ppRaster = &gpBoatWakeRaster;
+ break;
+
+ case PARTICLE_BOAT_THRUSTJET:
+ entry->m_ppRaster = gpRubberRaster;
+ break;
+
+ case PARTICLE_WATER_HYDRANT:
+ entry->m_ppRaster = gpCarSplashRaster;
+ break;
+
+ case PARTICLE_WATER_CANNON:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_EXTINGUISH_STEAM:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_PED_SPLASH:
+ entry->m_ppRaster = gpCarSplashRaster;
+ break;
+
+ case PARTICLE_PEDFOOT_DUST:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_CAR_DUST:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_HELI_DUST:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_HELI_ATTACK:
+ entry->m_ppRaster = &gpRainDropSmallRaster;
+ break;
+
+ case PARTICLE_ENGINE_SMOKE:
+ entry->m_ppRaster = &gpCloudRaster4;
+ break;
+
+ case PARTICLE_ENGINE_SMOKE2:
+ case PARTICLE_ROCKET_SMOKE:
+ entry->m_ppRaster = &gpCloudRaster4;
+ break;
+
+ case PARTICLE_CARFLAME_SMOKE:
+ entry->m_ppRaster = &gpCloudRaster4;
+ break;
+
+ case PARTICLE_FIREBALL_SMOKE:
+ entry->m_ppRaster = &gpCloudRaster4;
+ break;
+
+ case PARTICLE_PAINT_SMOKE:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_TREE_LEAVES:
+ entry->m_ppRaster = gpLeafRaster;
+ break;
+
+ case PARTICLE_CARCOLLISION_DUST:
+ entry->m_ppRaster = &gpCollisionSmokeRaster;
+ break;
+
+ case PARTICLE_CAR_DEBRIS:
+ case PARTICLE_BIRD_DEBRIS:
+ case PARTICLE_HELI_DEBRIS:
+ entry->m_ppRaster = gpCarDebrisRaster;
+ break;
+
+ case PARTICLE_EXHAUST_FUMES:
+ entry->m_ppRaster = &gpSmoke2Raster;
+ break;
+
+ case PARTICLE_RUBBER_SMOKE:
+ entry->m_ppRaster = gpRubberRaster;
+ break;
+
+ case PARTICLE_BURNINGRUBBER_SMOKE:
+ entry->m_ppRaster = &gpCollisionSmokeRaster;
+ break;
+
+ case PARTICLE_BULLETHIT_SMOKE:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_GUNSHELL_FIRST:
+ entry->m_ppRaster = &gpGunShellRaster;
+ break;
+
+ case PARTICLE_GUNSHELL:
+ entry->m_ppRaster = &gpGunShellRaster;
+ break;
+
+ case PARTICLE_GUNSHELL_BUMP1:
+ entry->m_ppRaster = &gpGunShellRaster;
+ break;
+
+ case PARTICLE_GUNSHELL_BUMP2:
+ entry->m_ppRaster = &gpGunShellRaster;
+ break;
+
+ case PARTICLE_TEST:
+ entry->m_ppRaster = &gpCloudRaster4;
+ break;
+
+ case PARTICLE_BIRD_FRONT:
+ entry->m_ppRaster = gpBirdfrontRaster;
+ break;
+
+ case PARTICLE_SHIP_SIDE:
+ entry->m_ppRaster = gpBoatRaster;
+ break;
+
+ case PARTICLE_BEASTIE:
+ entry->m_ppRaster = &gpBeastieRaster;
+ break;
+
+ case PARTICLE_FERRY_CHIM_SMOKE:
+ entry->m_ppRaster = gpSmokeRaster;
+ break;
+
+ case PARTICLE_MULTIPLAYER_HIT:
+ entry->m_ppRaster = &gpMultiPlayerHitRaster;
+ break;
}
}
-
- debug("CParticle ready");
}
void CParticle::Shutdown()
@@ -755,8 +910,13 @@ void CParticle::Shutdown()
RwTextureDestroy(gpRainDripTex[i]);
gpRainDripTex[i] = nil;
- RwTextureDestroy(gpRainDripDarkTex[i]);
- gpRainDripDarkTex[i] = nil;
+#ifdef FIX_BUGS
+ if (gpRainDripDarkTex[i])
+#endif
+ {
+ RwTextureDestroy(gpRainDripDarkTex[i]);
+ gpRainDripDarkTex[i] = nil;
+ }
}
RwTextureDestroy(gpBoatWakeTex);
@@ -812,14 +972,18 @@ void CParticle::Shutdown()
RwTextureDestroy(gpGunSmokeTex);
gpGunSmokeTex = nil;
-
- RwTextureDestroy(gpDotTex);
- gpDotTex = nil;
+
RwTextureDestroy(gpHeatHazeTex);
gpHeatHazeTex = nil;
RwTextureDestroy(gpBeastieTex);
gpBeastieTex = nil;
+
+ RwTextureDestroy(gpMultiPlayerHitTex);
+ gpBeastieTex = nil;
+
+ RwTextureDestroy(gpFireHoseTex);
+ gpFireHoseTex = nil;
int32 slot;
@@ -871,24 +1035,12 @@ CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVe
CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVector const &vecDir, CEntity *pEntity, float fSize, RwRGBA const &color, int32 nRotationSpeed, int32 nRotation, int32 nCurFrame, int32 nLifeSpan)
{
- if ( CTimer::GetIsPaused() )
+ if ( CTimer::GetIsPaused() /*TODO: || byte_355C47*/ )
return nil;
-
- if ( ( type == PARTICLE_ENGINE_SMOKE
- || type == PARTICLE_ENGINE_SMOKE2
- || type == PARTICLE_ENGINE_STEAM
- || type == PARTICLE_CARFLAME_SMOKE
- || type == PARTICLE_RUBBER_SMOKE
- || type == PARTICLE_BURNINGRUBBER_SMOKE
- || type == PARTICLE_EXHAUST_FUMES
- || type == PARTICLE_CARCOLLISION_DUST )
- && nParticleCreationInterval & CTimer::GetFrameCounter() )
- {
- return nil;
- }
-
+/*
if ( !CReplay::IsPlayingBack() )
CReplay::RecordParticle(type, vecPos, vecDir, fSize, color);
+*/
CParticle *pParticle = m_pUnusedListHead;
@@ -923,38 +1075,15 @@ CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVe
if ( psystem->m_nFadeAlphaTime )
pParticle->m_nFadeAlphaTimer /= psystem->m_nFadeAlphaTime;
- pParticle->m_nCurrentZRotation = psystem->m_nZRotationInitialAngle;
- pParticle->m_fCurrentZRadius = psystem->m_fInitialZRadius;
-
if ( nCurFrame != 0 )
pParticle->m_nCurrentFrame = nCurFrame;
else
pParticle->m_nCurrentFrame = psystem->m_nStartAnimationFrame;
-
- pParticle->m_nZRotationTimer = 0;
- pParticle->m_nZRadiusTimer = 0;
pParticle->m_nAnimationSpeedTimer = 0;
pParticle->m_fZGround = 0.0f;
-
- if ( type != PARTICLE_HEATHAZE )
- pParticle->m_vecPosition = vecPos;
- else
- {
- CVector screen;
- float w, h;
-
- if ( !CSprite::CalcScreenCoors(vecPos, &screen, &w, &h, true) )
- return nil;
-
- pParticle->m_vecPosition = screen;
- psystem->m_vecTextureStretch.x = w;
- psystem->m_vecTextureStretch.y = h;
- }
-
+ pParticle->m_vecPosition = vecPos;
pParticle->m_vecVelocity = vecDir;
-
- pParticle->m_vecParticleMovementOffset = CVector(0.0f, 0.0f, 0.0f);
pParticle->m_nTimeWhenColorWillBeChanged = 0;
if ( color.alpha != 0 )
@@ -1091,14 +1220,14 @@ CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVe
break;
case PARTICLE_EXPLOSION_MEDIUM:
- pParticle->m_nColorIntensity -= 30 * (CGeneral::GetRandomNumber() & 1); // mb "+= -30 * rand" here ?
+ pParticle->m_nColorIntensity -= 2 * 15 * (CGeneral::GetRandomNumber() & 1); // mb "+= -30 * rand" here ?
pParticle->m_nAnimationSpeedTimer = CGeneral::GetRandomNumber() & 7;
pParticle->m_fSize = CGeneral::GetRandomNumberInRange(0.3f, 0.8f);
pParticle->m_vecPosition.z -= CGeneral::GetRandomNumberInRange(-0.1f, 0.1f);
break;
case PARTICLE_EXPLOSION_LARGE:
- pParticle->m_nColorIntensity -= 30 * (CGeneral::GetRandomNumber() & 1); // mb "+= -30 * rand" here ?
+ pParticle->m_nColorIntensity -= 2 * 15 * (CGeneral::GetRandomNumber() & 1); // mb "+= -30 * rand" here ?
pParticle->m_nAnimationSpeedTimer = CGeneral::GetRandomNumber() & 7;
pParticle->m_fSize = CGeneral::GetRandomNumberInRange(0.8f, 1.4f);
pParticle->m_vecPosition.z -= CGeneral::GetRandomNumberInRange(-0.3f, 0.3f);
@@ -1124,7 +1253,7 @@ CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVe
void CParticle::Update()
{
- if ( CTimer::GetIsPaused() )
+ if ( CTimer::GetIsPaused() /*TODO: || byte_355C47*/ )
return;
CRGBA color(0, 0, 0, 0);
@@ -1137,7 +1266,9 @@ void CParticle::Update()
float fFricDeccel99 = pow(0.99f, CTimer::GetTimeStep());
CParticleObject::UpdateAll();
-
+
+ // no more erectedcocks
+#ifndef FIX_BUGS
// ejaculation at 23:00, 23:15, 23:30, 23:45
if ( CClock::ms_nGameClockHours == 23 &&
( CClock::ms_nGameClockMinutes == 0
@@ -1156,6 +1287,7 @@ void CParticle::Update()
1,
1000);
}
+#endif
for ( int32 i = 0; i < MAX_PARTICLES; i++ )
{
@@ -1175,68 +1307,7 @@ void CParticle::Update()
CVector vecMoveStep = particle->m_vecVelocity * CTimer::GetTimeStep();
CVector vecPos = particle->m_vecPosition;
-
- if ( numWaterDropOnScreen == 0 )
- clearWaterDrop = false;
-
- if ( psystem->m_Type == PARTICLE_WATERDROP )
- {
- if ( CGame::IsInInterior() || clearWaterDrop == true )
- {
- bRemoveParticle = true;
- continue;
- }
-
- static uint8 nWaterDropCount;
-
- if ( nWaterDropCount == 5 )
- {
- vecMoveStep = CVector(0.0f, 0.0f, 0.0f);
- particle->m_nTimeWhenWillBeDestroyed += 1250;
- nWaterDropCount = 0;
- }
- else
- {
- if ( TheCamera.m_CameraAverageSpeed > 0.35f )
- {
- if ( vecMoveStep.Magnitude() > 0.5f )
- {
- if ( vecMoveStep.Magnitude() > 0.4f && vecMoveStep.Magnitude() < 0.8f )
- {
- vecMoveStep.x += TheCamera.m_CameraAverageSpeed * 1.5f;
- vecMoveStep.y += TheCamera.m_CameraAverageSpeed * 1.5f;
- }
- else if ( vecMoveStep.Magnitude() != 0.0f )
- {
- vecMoveStep.x += CGeneral::GetRandomNumberInRange(0.01f, 0.05f);
- vecMoveStep.y += CGeneral::GetRandomNumberInRange(0.01f, 0.05f);
- }
- }
- }
-
- nWaterDropCount++;
- }
-
- if ( vecPos.z <= 1.5f )
- vecMoveStep.z = 0.0f;
- }
-
- if ( psystem->m_Type == PARTICLE_HEATHAZE || psystem->m_Type == PARTICLE_HEATHAZE_IN_DIST )
- {
-#ifdef FIX_BUGS
- int32 nSinCosIndex = (int32(DEGTORAD((float)particle->m_nRotation) * float(SIN_COS_TABLE_SIZE) / TWOPI) + SIN_COS_TABLE_SIZE) % SIN_COS_TABLE_SIZE;
-#else
- int32 nSinCosIndex = int32(DEGTORAD((float)particle->m_nRotation) * float(SIN_COS_TABLE_SIZE) / TWOPI) % SIN_COS_TABLE_SIZE;
-#endif
- vecMoveStep.x = Sin(nSinCosIndex);
- vecMoveStep.y = Sin(nSinCosIndex);
-
- if ( psystem->m_Type == PARTICLE_HEATHAZE_IN_DIST )
- particle->m_nRotation = int16((float)particle->m_nRotation + 0.75f);
- else
- particle->m_nRotation = int16((float)particle->m_nRotation + 1.0f);
- }
-
+
if ( psystem->m_Type == PARTICLE_BEASTIE )
{
#ifdef FIX_BUGS
@@ -1259,28 +1330,7 @@ void CParticle::Update()
}
vecPos += vecMoveStep;
-
- if ( psystem->m_Type == PARTICLE_FIREBALL )
- {
- AddParticle(PARTICLE_HEATHAZE, particle->m_vecPosition, CVector(0.0f, 0.0f, 0.0f),
- nil, particle->m_fSize * 5.0f);
- }
-
- if ( psystem->m_Type == PARTICLE_GUNSMOKE2 )
- {
- if ( CTimer::GetFrameCounter() & 10 )
- {
-#ifdef FIX_BUGS
- if ( FindPlayerPed() && FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_MINIGUN )
-#else
- if ( FindPlayerPed()->GetWeapon()->m_eWeaponType == WEAPONTYPE_MINIGUN )
-#endif
- {
- AddParticle(PARTICLE_HEATHAZE, particle->m_vecPosition, CVector(0.0f, 0.0f, 0.0f));
- }
- }
- }
-
+
if ( CWeather::Wind > 0.0f )
{
if ( vecMoveStep.Magnitude() != 0.0f )
@@ -1300,12 +1350,15 @@ void CParticle::Update()
|| psystem->m_Type == PARTICLE_BOAT_SPLASH
|| psystem->m_Type == PARTICLE_RAINDROP_2D )
{
- int32 nMaxDrops = int32(6.0f * TheCamera.m_CameraAverageSpeed + 1.0f);
+ //int32 nMaxDrops = int32(6.0f * TheCamera.m_CameraAverageSpeed + 1.0f);
float fDistToCam = 0.0f;
if ( psystem->m_Type == PARTICLE_BOAT_SPLASH || psystem->m_Type == PARTICLE_CAR_SPLASH )
{
- if ( vecPos.z + particle->m_fSize < 5.0f )
+ float fWaterLevel = 0.0f;
+ CWaterLevel::GetWaterLevelNoWaves(vecPos.x, vecPos.y, vecPos.z, &fWaterLevel);
+
+ if ( vecPos.z + particle->m_fSize < fWaterLevel )
{
bRemoveParticle = true;
continue;
@@ -1316,61 +1369,16 @@ void CParticle::Update()
case LOOKING_LEFT:
case LOOKING_RIGHT:
case LOOKING_FORWARD:
- nMaxDrops /= 2;
+ //nMaxDrops /= 2;
break;
default:
- nMaxDrops = 0;
+ //nMaxDrops = 0;
break;
}
fDistToCam = (TheCamera.GetPosition() - vecPos).Magnitude();
}
-
- if ( numWaterDropOnScreen < nMaxDrops && numWaterDropOnScreen < 63
- && fDistToCam < 10.0f
- && clearWaterDrop == false
- && !CGame::IsInInterior() )
- {
- CVector vecWaterdropTarget
- (
- CGeneral::GetRandomNumberInRange(-0.25f, 0.25f),
- CGeneral::GetRandomNumberInRange(0.1f, 0.75f),
- -0.01f
- );
-
- CVector vecWaterdropPos;
-
- if ( TheCamera.m_CameraAverageSpeed < 0.35f )
- vecWaterdropPos.x = (float)CGeneral::GetRandomNumberInRange(50, int32(SCREEN_WIDTH) - 50);
- else
- vecWaterdropPos.x = (float)CGeneral::GetRandomNumberInRange(200, int32(SCREEN_WIDTH) - 200);
-
- if ( psystem->m_Type == PARTICLE_BOAT_SPLASH || psystem->m_Type == PARTICLE_CAR_SPLASH )
- vecWaterdropPos.y = (float)CGeneral::GetRandomNumberInRange(SCREEN_HEIGHT / 2, SCREEN_HEIGHT);
- else
- {
- if ( TheCamera.m_CameraAverageSpeed < 0.35f )
- vecWaterdropPos.y = (float)CGeneral::GetRandomNumberInRange(0, int32(SCREEN_HEIGHT));
- else
- vecWaterdropPos.y = (float)CGeneral::GetRandomNumberInRange(150, int32(SCREEN_HEIGHT) - 200);
- }
-
- vecWaterdropPos.z = 2.0f;
-
- if ( AddParticle(PARTICLE_WATERDROP,
- vecWaterdropPos,
- vecWaterdropTarget,
- nil,
- CGeneral::GetRandomNumberInRange(0.1f, 0.15f),
- 0,
- 0,
- CGeneral::GetRandomNumber() & 1,
- 0) != nil )
- {
- numWaterDropOnScreen++;
- }
- }
}
if ( CTimer::GetTimeInMilliseconds() > particle->m_nTimeWhenWillBeDestroyed || particle->m_nAlpha == 0 )
@@ -1433,10 +1441,7 @@ void CParticle::Update()
}
else
size = particle->m_fSize + particle->m_fExpansionRate;
-
- if ( psystem->m_Type == PARTICLE_WATERDROP )
- size = (size - Abs(vecMoveStep.x) * 0.000150000007f) + (Abs(vecMoveStep.z) * 0.0500000007f); //TODO:
-
+
if ( size < 0.0f )
{
bRemoveParticle = true;
@@ -1717,28 +1722,6 @@ void CParticle::Update()
continue;
}
}
-
- if ( psystem->m_nZRotationAngleChangeAmount != 0 )
- {
- if ( particle->m_nZRotationTimer >= psystem->m_nZRotationChangeTime )
- {
- particle->m_nZRotationTimer = 0;
- particle->m_nCurrentZRotation += psystem->m_nZRotationAngleChangeAmount;
- }
- else
- ++particle->m_nZRotationTimer;
- }
-
- if ( psystem->m_fZRadiusChangeAmount != 0.0f )
- {
- if ( particle->m_nZRadiusTimer >= psystem->m_nZRadiusChangeTime )
- {
- particle->m_nZRadiusTimer = 0;
- particle->m_fCurrentZRadius += psystem->m_fZRadiusChangeAmount;
- }
- else
- ++particle->m_nZRadiusTimer;
- }
if ( psystem->m_nAnimationSpeed != 0 )
{
@@ -1765,21 +1748,6 @@ void CParticle::Update()
particle->m_nRotation += particle->m_nRotationStep;
#endif
- if ( particle->m_fCurrentZRadius != 0.0f )
- {
- int32 nSinCosIndex = particle->m_nCurrentZRotation % SIN_COS_TABLE_SIZE;
-
- float fX = (Cos(nSinCosIndex) - Sin(nSinCosIndex)) * particle->m_fCurrentZRadius;
-
- float fY = (Sin(nSinCosIndex) + Cos(nSinCosIndex)) * particle->m_fCurrentZRadius;
-
- vecPos -= particle->m_vecParticleMovementOffset;
-
- vecPos += CVector(fX, fY, 0.0f);
-
- particle->m_vecParticleMovementOffset = CVector(fX, fY, 0.0f);
- }
-
particle->m_vecPosition = vecPos;
}
}
@@ -1812,6 +1780,8 @@ void CParticle::Render()
RwRaster **frames = psystem->m_ppRaster;
tParticleType type = psystem->m_Type;
+ /*
+ something on ps2
if ( type == PARTICLE_ENGINE_SMOKE
|| type == PARTICLE_ENGINE_SMOKE2
|| type == PARTICLE_ENGINE_STEAM
@@ -1823,7 +1793,7 @@ void CParticle::Render()
{
particleBanned = true;
}
-
+ */
if ( particle )
{
if ( (flags & DRAW_OPAQUE) != (psystem->Flags & DRAW_OPAQUE)
@@ -1868,6 +1838,8 @@ void CParticle::Render()
if ( particle->m_nAlpha == 0 )
canDraw = false;
+ // TODO: psp vert buffer check
+
if ( canDraw && psystem->m_nFinalAnimationFrame != 0 && frames != nil )
{
RwRaster *curFrame = frames[particle->m_nCurrentFrame];
@@ -1881,20 +1853,7 @@ void CParticle::Render()
if ( canDraw && psystem->Flags & DRAWTOP2D )
{
- float screenZ;
-#ifdef FIX_BUGS
- bool zIsZero = true;
- if ( particle->m_vecPosition.z != 0.0f ) {
-#endif
- screenZ = (particle->m_vecPosition.z - CDraw::GetNearClipZ())
- * (CSprite::GetFarScreenZ() - CSprite::GetNearScreenZ())
- * CDraw::GetFarClipZ()
- / ( (CDraw::GetFarClipZ() - CDraw::GetNearClipZ()) * particle->m_vecPosition.z )
- + CSprite::GetNearScreenZ();
-#ifdef FIX_BUGS
- zIsZero = false;
- }
-#endif
+ float screenZ = CalcScreenZ(particle->m_vecPosition.z);
float stretchTexW;
float stretchTexH;
@@ -1909,115 +1868,7 @@ void CParticle::Render()
stretchTexW = CGeneral::GetRandomNumberInRange(0.1f, 1.0f) * psystem->m_vecTextureStretch.x + 63.0f;
stretchTexH = CGeneral::GetRandomNumberInRange(0.1f, 1.0f) * psystem->m_vecTextureStretch.y + 63.0f;
}
-
-#ifdef FIX_BUGS
- if (!zIsZero) {
-#endif
-
- if ( i == PARTICLE_WATERDROP )
- {
- int32 timeLeft = (particle->m_nTimeWhenWillBeDestroyed - CTimer::GetTimeInMilliseconds()) / particle->m_nTimeWhenWillBeDestroyed;
-
- stretchTexH += (1.0f - (float)timeLeft ) * psystem->m_vecTextureStretch.y;
-
- RwRect rect;
-
- rect.x = int32(particle->m_vecPosition.x - SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
- rect.y = int32(particle->m_vecPosition.y - SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH));
- rect.w = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
- rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH));
-
- FxType fxtype;
-
- if ( particle->m_nCurrentFrame != 0 )
- fxtype = FXTYPE_WATER2;
- else
- fxtype = FXTYPE_WATER1;
-
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, fxtype);
-
- canDraw = false;
- }
-
- if ( i == PARTICLE_BLOODDROP )
- {
- int32 timeLeft = (particle->m_nTimeWhenWillBeDestroyed - CTimer::GetTimeInMilliseconds()) / particle->m_nTimeWhenWillBeDestroyed;
-
- stretchTexH += (1.0f + (float)timeLeft) * psystem->m_vecTextureStretch.y;
- stretchTexW += (1.0f - (float)timeLeft) * psystem->m_vecTextureStretch.x;
-
- RwRect rect;
-
- rect.x = int32(particle->m_vecPosition.x - SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
- rect.y = int32(particle->m_vecPosition.y - SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH));
- rect.w = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
- rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH));
-
- FxType fxtype;
-
- if ( particle->m_nCurrentFrame )
- fxtype = FXTYPE_BLOOD2;
- else
- fxtype = FXTYPE_BLOOD1;
-
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, fxtype);
-
- canDraw = false;
- }
-
- if ( i == PARTICLE_HEATHAZE_IN_DIST )
- {
- RwRect rect;
-
- rect.x = int32(particle->m_vecPosition.x - SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
- rect.y = int32(particle->m_vecPosition.y - SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH * 0.15f));
- rect.w = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
- rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH * 0.15f));
-
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_HEATHAZE);
-
- canDraw = false;
- }
- if ( i == PARTICLE_HEATHAZE )
- {
- RwRect rect;
-
- switch ( TheCamera.GetLookDirection() )
- {
- case LOOKING_LEFT:
- rect.x = int32(particle->m_vecPosition.x - SCREEN_STRETCH_X(particle->m_fSize * psystem->m_vecTextureStretch.x * 2.0f));
- rect.y = int32(particle->m_vecPosition.y - SCREEN_STRETCH_Y(particle->m_fSize * psystem->m_vecTextureStretch.y));
- rect.w = int32(particle->m_vecPosition.x - SCREEN_STRETCH_X(particle->m_fSize * psystem->m_vecTextureStretch.x));
- rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * psystem->m_vecTextureStretch.y));
-
- break;
-
- case LOOKING_RIGHT:
- rect.x = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * psystem->m_vecTextureStretch.x));
- rect.y = int32(particle->m_vecPosition.y - SCREEN_STRETCH_Y(particle->m_fSize * psystem->m_vecTextureStretch.y));
- rect.w = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * psystem->m_vecTextureStretch.x * 4.0f));
- rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * psystem->m_vecTextureStretch.y));
-
- break;
-
- default:
- rect.x = int32(particle->m_vecPosition.x - SCREEN_STRETCH_X(particle->m_fSize * psystem->m_vecTextureStretch.x));
- rect.y = int32(particle->m_vecPosition.y - SCREEN_STRETCH_Y(particle->m_fSize * psystem->m_vecTextureStretch.y));
- rect.w = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * psystem->m_vecTextureStretch.x));
- rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * psystem->m_vecTextureStretch.y));
-
- break;
- }
-
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_HEATHAZE);
-
- canDraw = false;
- }
-#ifdef FIX_BUGS
- }
- if ( !(zIsZero && (i == PARTICLE_WATERDROP || i == PARTICLE_BLOODDROP || i == PARTICLE_HEATHAZE_IN_DIST || i == PARTICLE_HEATHAZE) ) )
-#endif
if ( canDraw )
{
if ( particle->m_nRotation != 0 )
@@ -2082,6 +1933,8 @@ void CParticle::Render()
}
else if ( i == PARTICLE_WATER_HYDRANT )
{
+ float screenZ = CalcScreenZ(particle->m_vecPosition.z);
+
int32 timeLeft = (particle->m_nTimeWhenWillBeDestroyed - CTimer::GetTimeInMilliseconds()) / particle->m_nTimeWhenWillBeDestroyed;
w += (1.0f - (float)timeLeft) * psystem->m_vecTextureStretch.x;
@@ -2101,190 +1954,149 @@ void CParticle::Render()
h += CGeneral::GetRandomNumberInRange(0.1f, 1.0f) * psystem->m_vecTextureStretch.y;
}
- if ( i == PARTICLE_WATER_HYDRANT
- || (!particleBanned || SCREEN_WIDTH * fParticleScaleLimit >= w)
- && SCREEN_HEIGHT * fParticleScaleLimit >= h )
+ if ( particle->m_nRotation != 0 && i != PARTICLE_BEASTIE )
+ {
+ CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension(coors.x, coors.y, coors.z,
+ particle->m_fSize * w, particle->m_fSize * h,
+ particle->m_Color.red,
+ particle->m_Color.green,
+ particle->m_Color.blue,
+ particle->m_nColorIntensity,
+ 1.0f / coors.z,
+ DEGTORAD((float)particle->m_nRotation),
+ particle->m_nAlpha);
+ }
+ else if ( psystem->Flags & SCREEN_TRAIL )
{
- if ( i == PARTICLE_WATER_HYDRANT )
+ float fRotation;
+ float fTrailLength;
+
+ if ( particle->m_fZGround == 0.0f )
{
- RwRect rect;
-
- if ( w > 0.0f )
- {
- rect.x = int32(coors.x - SCREEN_STRETCH_X(particle->m_fSize * w));
- rect.w = int32(coors.x + SCREEN_STRETCH_X(particle->m_fSize * w));
- }
- else
- {
- rect.w = int32(coors.x - SCREEN_STRETCH_X(particle->m_fSize * w));
- rect.x = int32(coors.x + SCREEN_STRETCH_X(particle->m_fSize * w));
- }
-
- if ( h > 0.0f )
- {
- rect.y = int32(coors.y - SCREEN_STRETCH_Y(particle->m_fSize * h));
- rect.h = int32(coors.y + SCREEN_STRETCH_Y(particle->m_fSize * h));
- }
- else
- {
- rect.h = int32(coors.y - SCREEN_STRETCH_Y(particle->m_fSize * h));
- rect.y = int32(coors.y + SCREEN_STRETCH_Y(particle->m_fSize * h));
- }
-
- float screenZ = (coors.z - CDraw::GetNearClipZ())
- * (CSprite::GetFarScreenZ() - CSprite::GetNearScreenZ()) * CDraw::GetFarClipZ()
- / ( (CDraw::GetFarClipZ() - CDraw::GetNearClipZ()) * coors.z ) + CSprite::GetNearScreenZ();
-
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_SPLASH1);
+ fTrailLength = 0.0f;
+ fRotation = 0.0f;
}
else
{
- if ( particle->m_nRotation != 0 && i != PARTICLE_BEASTIE )
- {
- CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension(coors.x, coors.y, coors.z,
- particle->m_fSize * w, particle->m_fSize * h,
- particle->m_Color.red,
- particle->m_Color.green,
- particle->m_Color.blue,
- particle->m_nColorIntensity,
- 1.0f / coors.z,
- DEGTORAD((float)particle->m_nRotation),
- particle->m_nAlpha);
- }
- else if ( psystem->Flags & SCREEN_TRAIL )
- {
- float fRotation;
- float fTrailLength;
-
- if ( particle->m_fZGround == 0.0f )
- {
- fTrailLength = 0.0f;
- fRotation = 0.0f;
- }
- else
- {
- CVector2D vecDist
- (
- coors.x - particle->m_fZGround,
- coors.y - particle->m_fExpansionRate
- );
+ CVector2D vecDist
+ (
+ coors.x - particle->m_fZGround,
+ coors.y - particle->m_fExpansionRate
+ );
- float fDist = vecDist.Magnitude();
+ float fDist = vecDist.Magnitude();
- fTrailLength = fDist;
-
- float fRot = Asin(vecDist.x / fDist);
+ fTrailLength = fDist;
+
+ float fRot = Asin(vecDist.x / fDist);
- fRotation = fRot;
+ fRotation = fRot;
- if ( vecDist.y < 0.0f )
- fRotation = -1.0f * fRot + DEGTORAD(180.0f);
-
- float fSpeed = particle->m_vecVelocity.Magnitude();
-
- float fNewTrailLength = fSpeed * CTimer::GetTimeStep() * w * 2.0f;
-
- if ( fDist > fNewTrailLength )
- fTrailLength = fNewTrailLength;
- }
-
- CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension(coors.x, coors.y, coors.z,
- particle->m_fSize * w,
- particle->m_fSize * h + fTrailLength * psystem->m_fTrailLengthMultiplier,
- particle->m_Color.red,
- particle->m_Color.green,
- particle->m_Color.blue,
- particle->m_nColorIntensity,
- 1.0f / coors.z,
- fRotation,
- particle->m_nAlpha);
+ if ( vecDist.y < 0.0f )
+ fRotation = -1.0f * fRot + DEGTORAD(180.0f);
+
+ float fSpeed = particle->m_vecVelocity.Magnitude();
+
+ float fNewTrailLength = fSpeed * CTimer::GetTimeStep() * w * 2.0f;
+
+ if ( fDist > fNewTrailLength )
+ fTrailLength = fNewTrailLength;
+ }
+
+ CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension(coors.x, coors.y, coors.z,
+ particle->m_fSize * w,
+ particle->m_fSize * h + fTrailLength * psystem->m_fTrailLengthMultiplier,
+ particle->m_Color.red,
+ particle->m_Color.green,
+ particle->m_Color.blue,
+ particle->m_nColorIntensity,
+ 1.0f / coors.z,
+ fRotation,
+ particle->m_nAlpha);
- particle->m_fZGround = coors.x; // WTF ?
- particle->m_fExpansionRate = coors.y; // WTF ?
- }
- else if ( psystem->Flags & SPEED_TRAIL )
- {
- CVector vecPrevPos = particle->m_vecPosition - particle->m_vecVelocity;
- float fRotation;
- float fTrailLength;
- CVector vecScreenPosition;
-
- if ( CSprite::CalcScreenCoors(vecPrevPos, &vecScreenPosition, &fTrailLength, &fRotation, true) )
- {
- CVector2D vecDist
- (
- coors.x - vecScreenPosition.x,
- coors.y - vecScreenPosition.y
- );
-
- float fDist = vecDist.Magnitude();
-
- fTrailLength = fDist;
-
- float fRot = Asin(vecDist.x / fDist);
-
- fRotation = fRot;
-
- if ( vecDist.y < 0.0f )
- fRotation = -1.0f * fRot + DEGTORAD(180.0f);
- }
- else
- {
- fRotation = 0.0f;
- fTrailLength = 0.0f;
- }
-
- CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension(coors.x, coors.y, coors.z,
- particle->m_fSize * w,
- particle->m_fSize * h + fTrailLength * psystem->m_fTrailLengthMultiplier,
- particle->m_Color.red,
- particle->m_Color.green,
- particle->m_Color.blue,
- particle->m_nColorIntensity,
- 1.0f / coors.z,
- fRotation,
- particle->m_nAlpha);
- }
- else if ( psystem->Flags & VERT_TRAIL )
- {
- float fTrailLength = fabsf(particle->m_vecVelocity.z * 10.0f);
-
- CSprite::RenderBufferedOneXLUSprite(coors.x, coors.y, coors.z,
- particle->m_fSize * w,
- (particle->m_fSize + fTrailLength * psystem->m_fTrailLengthMultiplier) * h,
- particle->m_Color.red,
- particle->m_Color.green,
- particle->m_Color.blue,
- particle->m_nColorIntensity,
- 1.0f / coors.z,
- particle->m_nAlpha);
- }
- else if ( i == PARTICLE_RAINDROP_SMALL )
- {
- CSprite::RenderBufferedOneXLUSprite(coors.x, coors.y, coors.z,
- particle->m_fSize * w * 0.05f,
- particle->m_fSize * h,
- particle->m_Color.red,
- particle->m_Color.green,
- particle->m_Color.blue,
- particle->m_nColorIntensity,
- 1.0f / coors.z,
- particle->m_nAlpha);
- }
- /*else if ( i == PARTICLE_BOAT_WAKE )*/
- else
- {
- CSprite::RenderBufferedOneXLUSprite(coors.x, coors.y, coors.z,
- particle->m_fSize * w,
- particle->m_fSize * h,
- particle->m_Color.red,
- particle->m_Color.green,
- particle->m_Color.blue,
- particle->m_nColorIntensity,
- 1.0f / coors.z,
- particle->m_nAlpha);
- }
+ particle->m_fZGround = coors.x; // WTF ?
+ particle->m_fExpansionRate = coors.y; // WTF ?
+ }
+ else if ( psystem->Flags & SPEED_TRAIL )
+ {
+ CVector vecPrevPos = particle->m_vecPosition - particle->m_vecVelocity;
+ float fRotation;
+ float fTrailLength;
+ CVector vecScreenPosition;
+
+ if ( CSprite::CalcScreenCoors(vecPrevPos, &vecScreenPosition, &fTrailLength, &fRotation, true) )
+ {
+ CVector2D vecDist
+ (
+ coors.x - vecScreenPosition.x,
+ coors.y - vecScreenPosition.y
+ );
+
+ float fDist = vecDist.Magnitude();
+
+ fTrailLength = fDist;
+
+ float fRot = Asin(vecDist.x / fDist);
+
+ fRotation = fRot;
+
+ if ( vecDist.y < 0.0f )
+ fRotation = -1.0f * fRot + DEGTORAD(180.0f);
+ }
+ else
+ {
+ fRotation = 0.0f;
+ fTrailLength = 0.0f;
}
+
+ CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension(coors.x, coors.y, coors.z,
+ particle->m_fSize * w,
+ particle->m_fSize * h + fTrailLength * psystem->m_fTrailLengthMultiplier,
+ particle->m_Color.red,
+ particle->m_Color.green,
+ particle->m_Color.blue,
+ particle->m_nColorIntensity,
+ 1.0f / coors.z,
+ fRotation,
+ particle->m_nAlpha);
+ }
+ else if ( psystem->Flags & VERT_TRAIL )
+ {
+ float fTrailLength = Abs(particle->m_vecVelocity.z * 10.0f);
+
+ CSprite::RenderBufferedOneXLUSprite(coors.x, coors.y, coors.z,
+ particle->m_fSize * w,
+ (particle->m_fSize + fTrailLength * psystem->m_fTrailLengthMultiplier) * h,
+ particle->m_Color.red,
+ particle->m_Color.green,
+ particle->m_Color.blue,
+ particle->m_nColorIntensity,
+ 1.0f / coors.z,
+ particle->m_nAlpha);
+ }
+ else if ( i == PARTICLE_RAINDROP_SMALL )
+ {
+ CSprite::RenderBufferedOneXLUSprite(coors.x, coors.y, coors.z,
+ particle->m_fSize * w * 0.05f,
+ particle->m_fSize * h,
+ particle->m_Color.red,
+ particle->m_Color.green,
+ particle->m_Color.blue,
+ particle->m_nColorIntensity,
+ 1.0f / coors.z,
+ particle->m_nAlpha);
+ }
+ else
+ {
+ CSprite::RenderBufferedOneXLUSprite(coors.x, coors.y, coors.z,
+ particle->m_fSize * w,
+ particle->m_fSize * h,
+ particle->m_Color.red,
+ particle->m_Color.green,
+ particle->m_Color.blue,
+ particle->m_nColorIntensity,
+ 1.0f / coors.z,
+ particle->m_nAlpha);
}
}
}
@@ -2315,9 +2127,6 @@ void CParticle::RemovePSystem(tParticleType type)
void CParticle::RemoveParticle(CParticle *pParticle, CParticle *pPrevParticle, tParticleSystemData *pPSystemData)
{
- if ( pPSystemData->m_Type == PARTICLE_WATERDROP )
- --numWaterDropOnScreen;
-
if ( pPrevParticle )
pPrevParticle->m_pNext = pParticle->m_pNext;
else
@@ -2417,18 +2226,7 @@ void CParticle::CalWindDir(CVector *vecDirIn, CVector *vecDirOut)
void CParticle::HandleShipsAtHorizonStuff()
{
- tParticleSystemData *psystemdata = &mod_ParticleSystemManager.m_aParticles[PARTICLE_SHIP_SIDE];
-
- for ( CParticle *particle = psystemdata->m_pParticles; particle; particle = particle->m_pNext )
- {
- if ( CTimer::GetTimeInMilliseconds() > particle->m_nTimeWhenWillBeDestroyed - 32000
- && CTimer::GetTimeInMilliseconds() < particle->m_nTimeWhenWillBeDestroyed - 22000 )
- {
- particle->m_nAlpha = Min(particle->m_nAlpha + 1, 96);
- }
- if ( CTimer::GetTimeInMilliseconds() > particle->m_nTimeWhenWillBeDestroyed - 10000 )
- particle->m_nFadeAlphaTimer = 1;
- }
+ ;
}
void CParticle::HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos)
@@ -2468,7 +2266,7 @@ void CParticle::HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos)
bRemoveParticle = true;
for ( int32 i = 0; i < 8; i++ )
- {
+ {
CParticle *pBirdDerbis = AddParticle(PARTICLE_BIRD_DEBRIS,
particle->m_vecPosition,
CVector
diff --git a/src/renderer/Particle.h b/src/renderer/Particle.h
index 5542dc02..57e36f82 100644
--- a/src/renderer/Particle.h
+++ b/src/renderer/Particle.h
@@ -18,11 +18,6 @@ public:
uint32 m_nTimeWhenWillBeDestroyed;
uint32 m_nTimeWhenColorWillBeChanged;
float m_fZGround;
- CVector m_vecParticleMovementOffset;
- int16 m_nCurrentZRotation;
- uint16 m_nZRotationTimer;
- float m_fCurrentZRadius;
- uint16 m_nZRadiusTimer;
uint8 m_nColorIntensity;
uint8 m_nAlpha;
float m_fSize;
@@ -35,12 +30,13 @@ public:
uint8 m_nCurrentFrame;
RwRGBA m_Color;
CParticle *m_pNext;
-
+ int32 field_4C;
+
CParticle()
{
;
}
-
+
~CParticle()
{
;
@@ -95,14 +91,13 @@ public:
static void HandleShipsAtHorizonStuff();
static void HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos);
+
+ static void SetPixelData();
};
-extern bool clearWaterDrop;
-extern int32 numWaterDropOnScreen;
extern RwRaster *gpCarSplashRaster[];
extern RwRaster *gpHeatHazeRaster;
-extern RwRaster *gpDotRaster;
extern RwRaster *gpRainDripRaster[];
extern RwRaster *gpRainDripDarkRaster[];
-VALIDATE_SIZE(CParticle, 0x58);
+VALIDATE_SIZE(CParticle, 0x50);
diff --git a/src/renderer/ParticleMgr.cpp b/src/renderer/ParticleMgr.cpp
index f6919435..04f42c82 100644
--- a/src/renderer/ParticleMgr.cpp
+++ b/src/renderer/ParticleMgr.cpp
@@ -4,18 +4,30 @@
#include "FileMgr.h"
#include "ParticleMgr.h"
+// --LCS: File done
+
cParticleSystemMgr mod_ParticleSystemManager;
const char *ParticleFilename = "PARTICLE.CFG";
cParticleSystemMgr::cParticleSystemMgr()
{
- memset(this, 0, sizeof(*this));
+#ifdef FIX_BUGS
+ m_aParticles = nil;
+#endif
+}
+
+#ifdef FIX_BUGS
+cParticleSystemMgr::~cParticleSystemMgr()
+{
+ delete [] m_aParticles;
}
+#endif
void cParticleSystemMgr::Initialise()
{
- LoadParticleData();
+ if ( gMakeResources )
+ LoadParticleData();
for ( int32 i = 0; i < MAX_PARTICLES; i++ )
m_aParticles[i].m_pParticles = nil;
@@ -23,20 +35,30 @@ void cParticleSystemMgr::Initialise()
void cParticleSystemMgr::LoadParticleData()
{
- CFileMgr::SetDir("DATA");
- CFileMgr::LoadFile(ParticleFilename, work_buff, ARRAY_SIZE(work_buff), "r");
+#ifdef FIX_BUGS
+ delete [] m_aParticles;
+#endif
+ m_aParticles = new tParticleSystemData[MAX_PARTICLES];
+
+ memset(m_aParticles, 0, sizeof(tParticleSystemData)*MAX_PARTICLES);
+
+ CFileMgr::SetDir("Data");
+ ssize_t len = CFileMgr::LoadFile(ParticleFilename, work_buff, ARRAY_SIZE(work_buff), "r");
CFileMgr::SetDir("");
+ ASSERT(!(len <= 0));
+
tParticleSystemData *entry = nil;
int32 type = PARTICLE_FIRST;
+ char *buffEnd = (char *)&work_buff[len];
char *lineStart = (char *)work_buff;
char *lineEnd = lineStart + 1;
char line[500];
char delims[4];
- while ( true )
+ while ( lineStart < buffEnd )
{
ASSERT(lineStart != nil);
ASSERT(lineEnd != nil);
diff --git a/src/renderer/ParticleMgr.h b/src/renderer/ParticleMgr.h
index f4afc018..16da2c5f 100644
--- a/src/renderer/ParticleMgr.h
+++ b/src/renderer/ParticleMgr.h
@@ -124,15 +124,18 @@ class cParticleSystemMgr
};
public:
- tParticleSystemData m_aParticles[MAX_PARTICLES];
+ tParticleSystemData *m_aParticles;//[MAX_PARTICLES];
cParticleSystemMgr();
+#ifdef FIX_BUGS
+ ~cParticleSystemMgr();
+#endif
void Initialise();
void LoadParticleData();
void RangeCheck(tParticleSystemData *pData) { }
};
-VALIDATE_SIZE(cParticleSystemMgr, 0x2FFC);
+VALIDATE_SIZE(cParticleSystemMgr, 0x4);
extern cParticleSystemMgr mod_ParticleSystemManager;
diff --git a/src/renderer/ParticleType.h b/src/renderer/ParticleType.h
index 9578083d..cb3d53f0 100644
--- a/src/renderer/ParticleType.h
+++ b/src/renderer/ParticleType.h
@@ -42,8 +42,6 @@ enum tParticleType
PARTICLE_RAIN_SPLASH_BIGGROW,
PARTICLE_RAIN_SPLASHUP,
PARTICLE_WATERSPRAY,
- PARTICLE_WATERDROP,
- PARTICLE_BLOODDROP,
PARTICLE_EXPLOSION_MEDIUM,
PARTICLE_EXPLOSION_LARGE,
PARTICLE_EXPLOSION_MFAST,
@@ -83,10 +81,11 @@ enum tParticleType
PARTICLE_SHIP_SIDE,
PARTICLE_BEASTIE,
PARTICLE_RAINDROP_2D,
- PARTICLE_HEATHAZE,
- PARTICLE_HEATHAZE_IN_DIST,
+ PARTICLE_FERRY_CHIM_SMOKE,
+ PARTICLE_MULTIPLAYER_HIT,
+ PARTICLE_HYDRANT_STEAM,
MAX_PARTICLES,
PARTICLE_FIRST = PARTICLE_SPARK,
- PARTICLE_LAST = PARTICLE_HEATHAZE_IN_DIST
+ PARTICLE_LAST = PARTICLE_HYDRANT_STEAM
}; \ No newline at end of file
diff --git a/src/renderer/PlayerSkin.cpp b/src/renderer/PlayerSkin.cpp
index ee944ca7..672312d4 100644
--- a/src/renderer/PlayerSkin.cpp
+++ b/src/renderer/PlayerSkin.cpp
@@ -124,7 +124,7 @@ void
CPlayerSkin::BeginFrontendSkinEdit(void)
{
LoadPlayerDff();
- RpClumpForAllAtomics(gpPlayerClump, CClumpModelInfo::SetAtomicRendererCB, (void*)CVisibilityPlugins::RenderPlayerCB);
+// RpClumpForAllAtomics(gpPlayerClump, CClumpModelInfo::SetAtomicRendererCB, (void*)CVisibilityPlugins::RenderPlayerCB);
CWorld::Players[0].LoadPlayerSkin();
gOldFov = CDraw::GetFOV();
CDraw::SetFOV(30.0f);
diff --git a/src/renderer/Renderer.cpp b/src/renderer/Renderer.cpp
index 96e3a329..28177cca 100644
--- a/src/renderer/Renderer.cpp
+++ b/src/renderer/Renderer.cpp
@@ -2,6 +2,7 @@
#include "common.h"
#include "main.h"
+#include "General.h"
#include "Lights.h"
#include "ModelInfo.h"
#include "Treadable.h"
@@ -20,11 +21,18 @@
#include "ModelIndices.h"
#include "Streaming.h"
#include "Shadows.h"
+#include "Coronas.h"
#include "PointLights.h"
#include "Occlusion.h"
#include "Renderer.h"
#include "custompipes.h"
#include "Frontend.h"
+#include "Ferry.h"
+#include "Plane.h"
+#include "WaterLevel.h"
+
+// maybe some day...
+//#define GTA_WORLDSTREAM
bool gbShowPedRoadGroups;
bool gbShowCarRoadGroups;
@@ -40,6 +48,11 @@ bool gbDontRenderPeds;
bool gbDontRenderObjects;
bool gbDontRenderVehicles;
+bool gbRenderDebugEnvMap;
+
+// unused
+bool gbLighting;
+
// unused
int16 TestCloseThings;
int16 TestBigThings;
@@ -56,9 +69,9 @@ int32 CRenderer::ms_nNoOfVisibleEntities;
CEntity *CRenderer::ms_aVisibleEntityPtrs[NUMVISIBLEENTITIES];
CEntity *CRenderer::ms_aInVisibleEntityPtrs[NUMINVISIBLEENTITIES];
int32 CRenderer::ms_nNoOfInVisibleEntities;
-#ifdef NEW_RENDERER
int32 CRenderer::ms_nNoOfVisibleVehicles;
CEntity *CRenderer::ms_aVisibleVehiclePtrs[NUMVISIBLEENTITIES];
+#ifdef NEW_RENDERER
int32 CRenderer::ms_nNoOfVisibleBuildings;
CEntity *CRenderer::ms_aVisibleBuildingPtrs[NUMVISIBLEENTITIES];
#endif
@@ -68,16 +81,12 @@ CVehicle *CRenderer::m_pFirstPersonVehicle;
bool CRenderer::m_loadingPriority;
float CRenderer::ms_lodDistScale = 1.2f;
-// unused
-BlockedRange CRenderer::aBlockedRanges[16];
-BlockedRange* CRenderer::pFullBlockedRanges;
-BlockedRange* CRenderer::pEmptyBlockedRanges;
-
void
CRenderer::Init(void)
{
gSortedVehiclesAndPeds.Init(40);
- SortBIGBuildings();
+ if(gMakeResources)
+ SortBIGBuildings();
}
void
@@ -95,10 +104,10 @@ CRenderer::PreRender(void)
for(i = 0; i < ms_nNoOfVisibleEntities; i++)
ms_aVisibleEntityPtrs[i]->PreRender();
+ for(i = 0; i < ms_nNoOfVisibleVehicles; i++)
+ ms_aVisibleVehiclePtrs[i]->PreRender();
#ifdef NEW_RENDERER
if(gbNewRenderer){
- for(i = 0; i < ms_nNoOfVisibleVehicles; i++)
- ms_aVisibleVehiclePtrs[i]->PreRender();
// How is this done with cWorldStream?
for(i = 0; i < ms_nNoOfVisibleBuildings; i++)
ms_aVisibleBuildingPtrs[i]->PreRender();
@@ -128,11 +137,9 @@ CRenderer::PreRender(void)
void
CRenderer::RenderOneRoad(CEntity *e)
{
-#ifndef FINAL
+#ifndef MASTER
if(gbDontRenderBuildings)
return;
-#endif
-#ifndef MASTER
if(gbShowCollisionPolys || gbShowCollisionPolysReflections || gbShowCollisionPolysNoShadows)
CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetColModel(e->GetModelIndex()), e->GetModelIndex());
else
@@ -206,16 +213,36 @@ CRenderer::RenderOneNonRoad(CEntity *e)
// Render Peds in vehicle before vehicle itself
if(e->IsVehicle()){
veh = (CVehicle*)e;
- if(veh->pDriver && veh->pDriver->m_nPedState == PED_DRIVING)
+#ifdef VIS_DISTANCE_ALPHA
+ int vehalpha = CVisibilityPlugins::GetObjectDistanceAlpha(veh->m_rwObject);
+#endif
+ if(veh->pDriver && veh->pDriver->m_nPedState == PED_DRIVING){
+#ifdef VIS_DISTANCE_ALPHA
+ int alpha = CVisibilityPlugins::GetObjectDistanceAlpha(veh->pDriver->m_rwObject);
+ CVisibilityPlugins::SetObjectDistanceAlpha(veh->pDriver->m_rwObject, vehalpha);
+ veh->pDriver->Render();
+ CVisibilityPlugins::SetObjectDistanceAlpha(veh->pDriver->m_rwObject, alpha);
+#else
veh->pDriver->Render();
+#endif
+ }
for(i = 0; i < 8; i++)
- if(veh->pPassengers[i] && veh->pPassengers[i]->m_nPedState == PED_DRIVING)
+ if(veh->pPassengers[i] && veh->pPassengers[i]->m_nPedState == PED_DRIVING){
+#ifdef VIS_DISTANCE_ALPHA
+ int alpha = CVisibilityPlugins::GetObjectDistanceAlpha(veh->pPassengers[i]->m_rwObject);
+ CVisibilityPlugins::SetObjectDistanceAlpha(veh->pPassengers[i]->m_rwObject, vehalpha);
+ veh->pPassengers[i]->Render();
+ CVisibilityPlugins::SetObjectDistanceAlpha(veh->pPassengers[i]->m_rwObject, alpha);
+#else
veh->pPassengers[i]->Render();
+#endif
+ }
SetCullMode(rwCULLMODECULLNONE);
}
e->Render();
if(e->IsVehicle()){
+ // TODO(LCS): LCS does not use bImBeingRendered, keeping it for safety
e->bImBeingRendered = true;
CVisibilityPlugins::RenderAlphaAtomics();
e->bImBeingRendered = false;
@@ -252,7 +279,7 @@ CRenderer::RenderRoads(void)
PUSH_RENDERGROUP("CRenderer::RenderRoads");
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+// RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
DeActivateDirectional();
SetAmbientColours();
@@ -278,18 +305,18 @@ inline bool PutIntoSortedVehicleList(CVehicle *veh)
return veh->bTouchingWater;
}
+// this only renders objects in LCS
void
CRenderer::RenderEverythingBarRoads(void)
{
int i;
CEntity *e;
- EntityInfo ei;
PUSH_RENDERGROUP("CRenderer::RenderEverythingBarRoads");
- RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+// RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
+// RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
- gSortedVehiclesAndPeds.Clear();
+// gSortedVehiclesAndPeds.Clear();
for(i = 0; i < ms_nNoOfVisibleEntities; i++){
e = ms_aVisibleEntityPtrs[i];
@@ -302,17 +329,19 @@ CRenderer::RenderEverythingBarRoads(void)
continue;
#endif
- if(e->IsVehicle() ||
- e->IsPed() && CVisibilityPlugins::GetClumpAlpha((RpClump*)e->m_rwObject) != 255){
- if(e->IsVehicle() && PutIntoSortedVehicleList((CVehicle*)e)){
- ei.ent = e;
- ei.sort = (ms_vecCameraPosition - e->GetPosition()).MagnitudeSqr();
- gSortedVehiclesAndPeds.InsertSorted(ei);
- }else{
- if(!CVisibilityPlugins::InsertEntityIntoSortedList(e, (ms_vecCameraPosition - e->GetPosition()).Magnitude())){
- printf("Ran out of space in alpha entity list");
- RenderOneNonRoad(e);
- }
+ // we're not even rendering peds here....
+#ifdef VIS_DISTANCE_ALPHA
+ // this looks like a fix for objects just popping in
+ int distAlpha = CVisibilityPlugins::GetObjectDistanceAlpha(e->m_rwObject);
+ if(e->IsPed() && CVisibilityPlugins::GetClumpAlpha((RpClump*)e->m_rwObject) != 255 ||
+ distAlpha != 255){
+ if(distAlpha != 0 && !CVisibilityPlugins::InsertEntityIntoSortedList(e, (ms_vecCameraPosition - e->GetPosition()).Magnitude())){
+#else
+ if(e->IsPed() && CVisibilityPlugins::GetClumpAlpha((RpClump*)e->m_rwObject) != 255){
+ if(!CVisibilityPlugins::InsertEntityIntoSortedList(e, (ms_vecCameraPosition - e->GetPosition()).Magnitude())){
+#endif
+ printf("Ran out of space in alpha entity list");
+ RenderOneNonRoad(e);
}
}else
RenderOneNonRoad(e);
@@ -323,30 +352,26 @@ CRenderer::RenderEverythingBarRoads(void)
void
CRenderer::RenderBoats(void)
{
+ int i;
+ CEntity *e;
+ EntityInfo ei;
CLink<EntityInfo> *node;
PUSH_RENDERGROUP("CRenderer::RenderBoats");
+ gbLighting = true;
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+// RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
-#ifdef NEW_RENDERER
- int i;
- CEntity *e;
- EntityInfo ei;
- if(gbNewRenderer){
- gSortedVehiclesAndPeds.Clear();
- // not the real thing
- for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
- e = ms_aVisibleVehiclePtrs[i];
- if(e->IsVehicle() && PutIntoSortedVehicleList((CVehicle*)e)){
- ei.ent = e;
- ei.sort = (ms_vecCameraPosition - e->GetPosition()).MagnitudeSqr();
- gSortedVehiclesAndPeds.InsertSorted(ei);
- }
+ gSortedVehiclesAndPeds.Clear();
+ for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
+ e = ms_aVisibleVehiclePtrs[i];
+ if(e->IsVehicle() && PutIntoSortedVehicleList((CVehicle*)e)){
+ ei.ent = e;
+ ei.sort = (ms_vecCameraPosition - e->GetPosition()).MagnitudeSqr();
+ gSortedVehiclesAndPeds.InsertSorted(ei);
}
}
-#endif
for(node = gSortedVehiclesAndPeds.tail.prev;
node != &gSortedVehiclesAndPeds.head;
@@ -354,6 +379,69 @@ CRenderer::RenderBoats(void)
CVehicle *v = (CVehicle*)node->item.ent;
RenderOneNonRoad(v);
}
+ RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
+ gbLighting = false;
+ POP_RENDERGROUP();
+}
+
+// also renders peds
+void
+CRenderer::RenderVehicles(void)
+{
+ int i;
+ CEntity *e;
+
+ PUSH_RENDERGROUP("CRenderer::RenderVehicles");
+ // LCS: not on android
+ RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
+ RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
+ // TODO(LCS): PS2VehicleAlphaFunc();
+
+ gbLighting = true;
+ RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
+
+ CVisibilityPlugins::InitAlphaEntityList();
+ for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
+ e = ms_aVisibleVehiclePtrs[i];
+#ifdef VIS_DISTANCE_ALPHA
+ if(CVisibilityPlugins::GetClumpAlpha((RpClump*)e->m_rwObject) == 0 ||
+ CVisibilityPlugins::GetObjectDistanceAlpha(e->m_rwObject) == 0)
+ continue;
+#endif
+
+ int behindDriver = e->bIsPed && ((CPed*)e)->m_nPedState == PED_DRIVING &&
+ TheCamera.GetLookDirection() == LOOKING_FORWARD;
+ // what is going on here? !behindDriver will always be true because we're checking for !PED_DRIVING
+ if(!e->bDistanceFade && (e->IsPed() || e->bIsPed) && ((CPed*)e)->m_nPedState != PED_DRIVING && !behindDriver){
+#ifdef VIS_DISTANCE_ALPHA
+ if(CVisibilityPlugins::GetClumpAlpha((RpClump*)e->m_rwObject) != 255 ||
+ CVisibilityPlugins::GetObjectDistanceAlpha(e->m_rwObject) != 255)
+ ; // set blend render states
+ else
+ ; // set default render states
+#endif
+ RenderOneNonRoad(e);
+ }else if(!PutIntoSortedVehicleList((CVehicle*)e) && // boats handled elsewhere
+ !CVisibilityPlugins::InsertEntityIntoSortedList(e, (ms_vecCameraPosition - e->GetPosition()).Magnitude())){
+#ifdef VIS_DISTANCE_ALPHA
+ if(CVisibilityPlugins::GetClumpAlpha((RpClump*)e->m_rwObject) != 255 ||
+ CVisibilityPlugins::GetObjectDistanceAlpha(e->m_rwObject) != 255)
+ ; // set blend render states
+ else
+ ; // set default render states
+#endif
+ printf("Ran out of space in alpha entity list");
+ RenderOneNonRoad(e);
+ }
+ }
+ CVisibilityPlugins::RenderFadingEntities();
+
+ CFerry::RenderAllRemaning();
+ CPlane::RenderAllRemaning();
+ // TODO(LCS): gpGlobalEnvironmentMap = nil;
+ // TODO(LCS): CMattRenderer::Get().ResetRenderStates();
+ RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
+ gbLighting = false;
POP_RENDERGROUP();
}
@@ -361,7 +449,6 @@ CRenderer::RenderBoats(void)
#ifndef LIBRW
#error "Need librw for EXTENDED_PIPELINES"
#endif
-#include "WaterLevel.h"
enum {
// blend passes
@@ -442,12 +529,16 @@ CRenderer::RenderOneBuilding(CEntity *ent, float camdist)
ent->bImBeingRendered = false; // TODO: this seems wrong, but do we even need it?
}
+// our replacement for cWorldStream::Render
void
CRenderer::RenderWorld(int pass)
{
int i;
CEntity *e;
CLink<CVisibilityPlugins::AlphaObjectInfo> *node;
+ // use old renderer
+ if(gbPreviewCity)
+ return;
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
@@ -511,57 +602,21 @@ CRenderer::RenderWorld(int pass)
break;
}
}
+#endif
+// actually CMattRenderer::RenderWater
+// adapted slightly
void
-CRenderer::RenderPeds(void)
+CRenderer::RenderWater(void)
{
int i;
CEntity *e;
- PUSH_RENDERGROUP("CRenderer::RenderPeds");
- for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
- e = ms_aVisibleVehiclePtrs[i];
- if(e->IsPed())
- RenderOneNonRoad(e);
- }
- POP_RENDERGROUP();
-}
+ PUSH_RENDERGROUP("CRenderer::RenderWater");
-void
-CRenderer::RenderVehicles(void)
-{
- int i;
- CEntity *e;
- EntityInfo ei;
- CLink<EntityInfo> *node;
-
- PUSH_RENDERGROUP("CRenderer::RenderVehicles");
- // not the real thing
- for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
- e = ms_aVisibleVehiclePtrs[i];
- if(!e->IsVehicle())
- continue;
- if(PutIntoSortedVehicleList((CVehicle*)e))
- continue; // boats handled elsewhere
- ei.ent = e;
- ei.sort = (ms_vecCameraPosition - e->GetPosition()).MagnitudeSqr();
- gSortedVehiclesAndPeds.InsertSorted(ei);
- }
+ gbLighting = false;
+ CWaterLevel::RenderWater();
- for(node = gSortedVehiclesAndPeds.tail.prev;
- node != &gSortedVehiclesAndPeds.head;
- node = node->prev)
- RenderOneNonRoad(node->item.ent);
- POP_RENDERGROUP();
-}
-
-void
-CRenderer::RenderTransparentWater(void)
-{
- int i;
- CEntity *e;
-
- PUSH_RENDERGROUP("CRenderer::RenderTransparentWater");
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
@@ -585,6 +640,7 @@ CRenderer::RenderTransparentWater(void)
CWaterLevel::RenderTransparentWater();
SetStencilState(0);
+ gbLighting = true;
POP_RENDERGROUP();
}
@@ -593,22 +649,23 @@ CRenderer::ClearForFrame(void)
{
ms_nNoOfVisibleEntities = 0;
ms_nNoOfVisibleVehicles = 0;
- ms_nNoOfVisibleBuildings = 0;
ms_nNoOfInVisibleEntities = 0;
gSortedVehiclesAndPeds.Clear();
+#ifdef NEW_RENDERER
+ ms_nNoOfVisibleBuildings = 0;
WorldRender::numBlendInsts[PASS_NOZ] = 0;
WorldRender::numBlendInsts[PASS_ADD] = 0;
WorldRender::numBlendInsts[PASS_BLEND] = 0;
-}
#endif
+}
void
CRenderer::RenderFadingInEntities(void)
{
PUSH_RENDERGROUP("CRenderer::RenderFadingInEntities");
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+// RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
DeActivateDirectional();
SetAmbientColours();
@@ -620,6 +677,9 @@ void
CRenderer::RenderFadingInUnderwaterEntities(void)
{
PUSH_RENDERGROUP("CRenderer::RenderFadingInUnderwaterEntities");
+ RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
+// RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+ SetCullMode(rwCULLMODECULLBACK);
DeActivateDirectional();
SetAmbientColours();
CVisibilityPlugins::RenderFadingUnderwaterEntities();
@@ -666,6 +726,9 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
float dist;
bool request = true;
+ if(mi->GetModelType() == MITYPE_SIMPLE){
+ // TODO(LCS): some cWorldStream dynamics stuff
+ }
if(mi->GetModelType() == MITYPE_TIME){
ti = (CTimeModelInfo*)mi;
other = ti->GetOtherTimeModel();
@@ -687,6 +750,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
if(mi->GetModelType() != MITYPE_SIMPLE && mi->GetModelType() != MITYPE_WEAPON){
if(FindPlayerVehicle() == ent &&
TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON &&
+// TODO(LCS): something in CWorld::Players...
!(FindPlayerVehicle()->IsBike() && ((CBike*)FindPlayerVehicle())->bWheelieCam)){
// Player's vehicle in first person mode
CVehicle *veh = (CVehicle*)ent;
@@ -694,6 +758,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
int direction = TheCamera.Cams[TheCamera.ActiveCam].DirectionWasLooking;
if(direction == LOOKING_FORWARD ||
ent->GetModelIndex() == MI_RHINO ||
+ ent->GetModelIndex() == MI_BUS ||
ent->GetModelIndex() == MI_COACH ||
TheCamera.m_bInATunnelAndABigVehicle ||
direction == LOOKING_BEHIND && veh->pHandling->Flags & HANDLING_UNKNOWN){
@@ -702,7 +767,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
}
if(direction != LOOKING_BEHIND ||
- !veh->IsBoat() || model == MI_REEFER || model == MI_TROPIC || model == MI_PREDATOR || model == MI_SKIMMER){
+ !veh->IsBoat() || model == MI_REEFER || model == MI_PREDATOR){
m_pFirstPersonVehicle = (CVehicle*)ent;
ent->bNoBrightHeadLights = false;
return VIS_OFFSCREEN;
@@ -744,7 +809,8 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
dist = (ent->GetPosition() - ms_vecCameraPosition).Magnitude();
-#ifndef FIX_BUGS
+//#ifndef FIX_BUGS
+#if 0
// Whatever this is supposed to do, it breaks fading for objects
// whose draw dist is > LOD_DISTANCE-FADE_DISTANCE, i.e. 280
// because decreasing dist here makes the object visible above LOD_DISTANCE
@@ -754,6 +820,9 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
if(LOD_DISTANCE < dist && dist < mi->GetLargestLodDistance() + FADE_DISTANCE)
dist += mi->GetLargestLodDistance() - LOD_DISTANCE;
#endif
+ // LCS has this now, wonder if it's any better:
+ if(LOD_DISTANCE + STREAM_DISTANCE < dist && dist < mi->GetLargestLodDistance())
+ dist = mi->GetLargestLodDistance();
if(ent->IsObject() && ent->bRenderDamaged)
mi->m_isDamaged = true;
@@ -805,7 +874,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
// We might be fading
- a = mi->GetAtomicFromDistance(dist - FADE_DISTANCE);
+ a = mi->GetLastAtomic(dist - FADE_DISTANCE);
mi->m_isDamaged = false;
if(a == nil){
// request model
@@ -871,7 +940,7 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent)
// Find out whether to draw below near distance.
// This is only the case if there is a non-LOD which is either not
// loaded or not completely faded in yet.
- if(dist < mi->GetNearDistance() && dist < LOD_DISTANCE){
+ if(dist < mi->GetNearDistance() && dist < LOD_DISTANCE + STREAM_DISTANCE){
// No non-LOD or non-LOD is completely visible.
if(nonLOD == nil ||
nonLOD->GetRwObject() && nonLOD->m_alpha == 255)
@@ -927,7 +996,7 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent)
// get faded atomic
a = mi->GetFirstAtomicFromDistance(dist - FADE_DISTANCE);
if(a == nil){
- if(ent->bStreamBIGBuilding && dist-STREAM_DISTANCE < mi->GetLodDistance(0) && request){
+ if(ent->bStreamBIGBuilding && dist-STREAM_DISTANCE-FADE_DISTANCE < mi->GetLodDistance(0) && request){
return ent->GetIsOnScreen() ? VIS_STREAMME : VIS_INVISIBLE;
}else{
ent->DeleteRwObject();
@@ -956,30 +1025,15 @@ void
CRenderer::ConstructRenderList(void)
{
COcclusion::ProcessBeforeRendering();
-#ifdef NEW_RENDERER
- if(!gbNewRenderer)
-#endif
-{
- ms_nNoOfVisibleEntities = 0;
- ms_nNoOfInVisibleEntities = 0;
-}
ms_vecCameraPosition = TheCamera.GetPosition();
// unused
- pFullBlockedRanges = nil;
- pEmptyBlockedRanges = aBlockedRanges;
- for(int i = 0; i < 16; i++){
- aBlockedRanges[i].prev = &aBlockedRanges[i-1];
- aBlockedRanges[i].next = &aBlockedRanges[i+1];
- }
- aBlockedRanges[0].prev = nil;
- aBlockedRanges[15].next = nil;
-
- // unused
TestCloseThings = 0;
TestBigThings = 0;
ScanWorld();
+
+ // LCS: mobile has a bunch of code after this,
}
void
@@ -1128,7 +1182,9 @@ CRenderer::ScanWorld(void)
poly[2].y = CWorld::GetSectorY(vectors[CORNER_FAR_TOPRIGHT].y);
ScanSectorPoly(poly, 3, ScanSectorList);
}
-
+
+#ifndef GTA_WORLDSTREAM
+ // TODO(LCS): may be better to have this code with gbPreviewCity
#ifdef NO_ISLAND_LOADING
if (FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) {
ScanBigBuildingList(CWorld::GetBigBuildingList(LEVEL_BEACH));
@@ -1142,6 +1198,7 @@ CRenderer::ScanWorld(void)
ScanBigBuildingList(CWorld::GetBigBuildingList(CGame::currLevel));
}
ScanBigBuildingList(CWorld::GetBigBuildingList(LEVEL_GENERIC));
+#endif
}
}
}
@@ -1434,6 +1491,7 @@ CRenderer::ScanSectorPoly(RwV2d *poly, int32 numVertices, void (*scanfunc)(CPtrL
}
}
+// probably didn't exist as a separate function in LCS
void
CRenderer::InsertEntityIntoList(CEntity *ent)
{
@@ -1441,15 +1499,32 @@ CRenderer::InsertEntityIntoList(CEntity *ent)
if (!ent->m_rwObject) return;
#endif
-#ifdef NEW_RENDERER
- // TODO: there are more flags being checked here
- if(gbNewRenderer && (ent->IsVehicle() || ent->IsPed()))
+ if(ent->IsVehicle() || ent->bIsVehicle || ent->IsPed() || ent->bIsPed)
ms_aVisibleVehiclePtrs[ms_nNoOfVisibleVehicles++] = ent;
- else if(gbNewRenderer && ent->IsBuilding())
+#ifdef NEW_RENDERER
+ else if(!gbPreviewCity && ent->IsBuilding())
+ ms_aVisibleBuildingPtrs[ms_nNoOfVisibleBuildings++] = ent;
+#endif
+ else
+ ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
+#if defined(VIS_DISTANCE_ALPHA) && defined(FIX_BUGS)
+ // this flag can only be trusted if entity is in alpha list
+ // unfortunately we're checking it in other cases too, which is bad.
+ // no idea why this isn't a problem on android
+ ent->bDistanceFade = false;
+#endif
+}
+
+void
+CRenderer::AddVisibleEntity(CEntity *ent)
+{
+#ifdef NEW_RENDERER
+ if(!gbPreviewCity && ent->IsBuilding())
ms_aVisibleBuildingPtrs[ms_nNoOfVisibleBuildings++] = ent;
else
#endif
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
+ ent->bOffscreen = false;
}
void
@@ -1459,18 +1534,21 @@ CRenderer::ScanBigBuildingList(CPtrList &list)
CEntity *ent;
int vis;
- int f = CTimer::GetFrameCounter() & 3;
+ int f = CTimer::GetFrameCounter() & 6;
for(node = list.first; node; node = node->next){
ent = (CEntity*)node->item;
- if(ent->bOffscreen || (ent->m_randomSeed&3) != f){
+ if(ent->bOffscreen || (ent->m_randomSeed&6) != f){
ent->bOffscreen = true;
vis = SetupBigBuildingVisibility(ent);
}else
- vis = VIS_VISIBLE;
+ vis = ent->bOffscreen ? VIS_INVISIBLE : VIS_VISIBLE;
+ if(ent->bMakeVisible){
+ ent->bMakeVisible = false;
+ ent->bIsVisible = true;
+ }
switch(vis){
case VIS_VISIBLE:
- InsertEntityIntoList(ent);
- ent->bOffscreen = false;
+ AddVisibleEntity(ent);
break;
case VIS_STREAMME:
if(!CStreaming::ms_disableStreaming)
@@ -1489,7 +1567,15 @@ CRenderer::ScanSectorList(CPtrList *lists)
int i;
float dx, dy;
- for(i = 0; i < NUMSECTORENTITYLISTS; i++){
+ int numLists = NUMSECTORENTITYLISTS;
+#ifdef GTA_WORLDSTREAM
+ if(gbPreviewCity){
+ numLists -= ENTITYLIST_UNKNOWN;
+ lists += ENTITYLIST_UNKNOWN;
+ }
+#endif
+
+ for(i = 0; i < numLists; i++){
list = &lists[i];
for(node = list->first; node; node = node->next){
ent = (CEntity*)node->item;
@@ -1498,7 +1584,12 @@ CRenderer::ScanSectorList(CPtrList *lists)
ent->m_scanCode = CWorld::GetCurrentScanCode();
ent->bOffscreen = false;
- switch(SetupEntityVisibility(ent)){
+ int vis = SetupEntityVisibility(ent);
+ if(ent->bMakeVisible){
+ ent->bMakeVisible = false;
+ ent->bIsVisible = true;
+ }
+ switch(vis){
case VIS_VISIBLE:
InsertEntityIntoList(ent);
break;
@@ -1534,7 +1625,15 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
int i;
float dx, dy;
- for(i = 0; i < NUMSECTORENTITYLISTS; i++){
+ int numLists = NUMSECTORENTITYLISTS;
+#ifdef GTA_WORLDSTREAM
+ if(gbPreviewCity){
+ numLists -= ENTITYLIST_UNKNOWN;
+ lists += ENTITYLIST_UNKNOWN;
+ }
+#endif
+
+ for(i = 0; i < numLists; i++){
list = &lists[i];
for(node = list->first; node; node = node->next){
ent = (CEntity*)node->item;
@@ -1543,7 +1642,12 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
ent->m_scanCode = CWorld::GetCurrentScanCode();
ent->bOffscreen = false;
- switch(SetupEntityVisibility(ent)){
+ int vis = SetupEntityVisibility(ent);
+ if(ent->bMakeVisible){
+ ent->bMakeVisible = false;
+ ent->bIsVisible = true;
+ }
+ switch(vis){
case VIS_VISIBLE:
InsertEntityIntoList(ent);
break;
@@ -1582,7 +1686,15 @@ CRenderer::ScanSectorList_Subway(CPtrList *lists)
int i;
float dx, dy;
- for(i = 0; i < NUMSECTORENTITYLISTS; i++){
+ int numLists = NUMSECTORENTITYLISTS;
+#ifdef GTA_WORLDSTREAM
+ if(gbPreviewCity){
+ numLists -= ENTITYLIST_UNKNOWN;
+ lists += ENTITYLIST_UNKNOWN;
+ }
+#endif
+
+ for(i = 0; i < numLists; i++){
list = &lists[i];
for(node = list->first; node; node = node->next){
ent = (CEntity*)node->item;
@@ -1617,7 +1729,15 @@ CRenderer::ScanSectorList_RequestModels(CPtrList *lists)
CEntity *ent;
int i;
- for(i = 0; i < NUMSECTORENTITYLISTS; i++){
+ int numLists = NUMSECTORENTITYLISTS;
+#ifdef GTA_WORLDSTREAM
+ if(gbPreviewCity){
+ numLists -= ENTITYLIST_UNKNOWN;
+ lists += ENTITYLIST_UNKNOWN;
+ }
+#endif
+
+ for(i = 0; i < numLists; i++){
list = &lists[i];
for(node = list->first; node; node = node->next){
ent = (CEntity*)node->item;
@@ -1664,9 +1784,12 @@ CRenderer::ShouldModelBeStreamed(CEntity *ent, const CVector &campos)
if(!IsAreaVisible(ent->m_area))
return false;
CTimeModelInfo *mi = (CTimeModelInfo *)CModelInfo::GetModelInfo(ent->GetModelIndex());
- if(mi->GetModelType() == MITYPE_TIME)
- if(!CClock::GetIsTimeInRange(mi->GetTimeOn(), mi->GetTimeOff()))
- return false;
+ if(!ent->IsObject() && !ent->IsDummy()){
+ if(mi->GetModelType() == MITYPE_TIME)
+ if(!CClock::GetIsTimeInRange(mi->GetTimeOn(), mi->GetTimeOff()))
+ return false;
+ // LCS(TODO): cWorldStream::pDynamic, but just returns 0 anyway
+ }
float dist = (ent->GetPosition() - campos).Magnitude();
if(mi->m_noFade)
return dist - STREAM_DISTANCE < mi->GetLargestLodDistance();
@@ -1682,6 +1805,188 @@ CRenderer::RemoveVehiclePedLights(CEntity *ent, bool reset)
if(reset)
ReSetAmbientAndDirectionalColours();
}
- SetAmbientColours();
- DeActivateDirectional();
+// SetAmbientColours();
+// DeActivateDirectional();
+}
+
+
+#include "postfx.h"
+
+static RwIm2DVertex Screen2EnvQuad[4];
+static RwImVertexIndex EnvQuadIndices[6] = { 0, 1, 2, 0, 2, 3 };
+
+static void
+SetQuadVertices(RwRaster *env, RwRaster *screen, float z)
+{
+ uint32 width = RwRasterGetWidth(env);
+ uint32 height = RwRasterGetHeight(env);
+
+ float zero, xmax, ymax;
+
+ zero = -HALFPX;
+ xmax = width - HALFPX;
+ ymax = height - HALFPX;
+
+ float recipz = 1.0f/z;
+ float umax = (float)SCREEN_WIDTH/RwRasterGetWidth(screen);
+ float vmax = (float)SCREEN_HEIGHT/RwRasterGetHeight(screen);
+
+ RwIm2DVertexSetScreenX(&Screen2EnvQuad[0], zero);
+ RwIm2DVertexSetScreenY(&Screen2EnvQuad[0], zero);
+ RwIm2DVertexSetScreenZ(&Screen2EnvQuad[0], RwIm2DGetNearScreenZ());
+ RwIm2DVertexSetCameraZ(&Screen2EnvQuad[0], z);
+ RwIm2DVertexSetRecipCameraZ(&Screen2EnvQuad[0], recipz);
+ RwIm2DVertexSetU(&Screen2EnvQuad[0], 0.0f, recipz);
+ RwIm2DVertexSetV(&Screen2EnvQuad[0], 0.0f, recipz);
+ RwIm2DVertexSetIntRGBA(&Screen2EnvQuad[0], 255, 255, 255, 255);
+
+ RwIm2DVertexSetScreenX(&Screen2EnvQuad[1], zero);
+ RwIm2DVertexSetScreenY(&Screen2EnvQuad[1], ymax);
+ RwIm2DVertexSetScreenZ(&Screen2EnvQuad[1], RwIm2DGetNearScreenZ());
+ RwIm2DVertexSetCameraZ(&Screen2EnvQuad[1], z);
+ RwIm2DVertexSetRecipCameraZ(&Screen2EnvQuad[1], recipz);
+ RwIm2DVertexSetU(&Screen2EnvQuad[1], 0.0f, recipz);
+ RwIm2DVertexSetV(&Screen2EnvQuad[1], vmax, recipz);
+ RwIm2DVertexSetIntRGBA(&Screen2EnvQuad[1], 255, 255, 255, 255);
+
+ RwIm2DVertexSetScreenX(&Screen2EnvQuad[2], xmax);
+ RwIm2DVertexSetScreenY(&Screen2EnvQuad[2], ymax);
+ RwIm2DVertexSetScreenZ(&Screen2EnvQuad[2], RwIm2DGetNearScreenZ());
+ RwIm2DVertexSetCameraZ(&Screen2EnvQuad[2], z);
+ RwIm2DVertexSetRecipCameraZ(&Screen2EnvQuad[2], recipz);
+ RwIm2DVertexSetU(&Screen2EnvQuad[2], umax, recipz);
+ RwIm2DVertexSetV(&Screen2EnvQuad[2], vmax, recipz);
+ RwIm2DVertexSetIntRGBA(&Screen2EnvQuad[2], 255, 255, 255, 255);
+
+ RwIm2DVertexSetScreenX(&Screen2EnvQuad[3], xmax);
+ RwIm2DVertexSetScreenY(&Screen2EnvQuad[3], zero);
+ RwIm2DVertexSetScreenZ(&Screen2EnvQuad[3], RwIm2DGetNearScreenZ());
+ RwIm2DVertexSetCameraZ(&Screen2EnvQuad[3], z);
+ RwIm2DVertexSetRecipCameraZ(&Screen2EnvQuad[3], recipz);
+ RwIm2DVertexSetU(&Screen2EnvQuad[3], umax, recipz);
+ RwIm2DVertexSetV(&Screen2EnvQuad[3], 0.0f, recipz);
+ RwIm2DVertexSetIntRGBA(&Screen2EnvQuad[3], 255, 255, 255, 255);
+}
+
+static RwIm2DVertex coronaVerts[4*4];
+static RwImVertexIndex coronaIndices[6*4];
+static int numCoronaVerts, numCoronaIndices;
+
+static void
+AddCorona(float x, float y, float sz)
+{
+ float nearz, recipz;
+ RwIm2DVertex *v;
+ nearz = RwIm2DGetNearScreenZ();
+ float z = RwCameraGetNearClipPlane(RwCameraGetCurrentCamera());
+ recipz = 1.0f/z;
+
+ v = &coronaVerts[numCoronaVerts];
+ RwIm2DVertexSetScreenX(&v[0], x);
+ RwIm2DVertexSetScreenY(&v[0], y);
+ RwIm2DVertexSetScreenZ(&v[0], z);
+ RwIm2DVertexSetScreenZ(&v[0], nearz);
+ RwIm2DVertexSetRecipCameraZ(&v[0], recipz);
+ RwIm2DVertexSetU(&v[0], 0.0f, recipz);
+ RwIm2DVertexSetV(&v[0], 0.0f, recipz);
+ RwIm2DVertexSetIntRGBA(&v[0], 255, 255, 255, 255);
+
+ RwIm2DVertexSetScreenX(&v[1], x);
+ RwIm2DVertexSetScreenY(&v[1], y + sz);
+ RwIm2DVertexSetScreenZ(&v[1], z);
+ RwIm2DVertexSetScreenZ(&v[1], nearz);
+ RwIm2DVertexSetRecipCameraZ(&v[1], recipz);
+ RwIm2DVertexSetU(&v[1], 0.0f, recipz);
+ RwIm2DVertexSetV(&v[1], 1.0f, recipz);
+ RwIm2DVertexSetIntRGBA(&v[1], 255, 255, 255, 255);
+
+ RwIm2DVertexSetScreenX(&v[2], x + sz);
+ RwIm2DVertexSetScreenY(&v[2], y + sz);
+ RwIm2DVertexSetScreenZ(&v[2], z);
+ RwIm2DVertexSetScreenZ(&v[2], nearz);
+ RwIm2DVertexSetRecipCameraZ(&v[2], recipz);
+ RwIm2DVertexSetU(&v[2], 1.0f, recipz);
+ RwIm2DVertexSetV(&v[2], 1.0f, recipz);
+ RwIm2DVertexSetIntRGBA(&v[2], 255, 255, 255, 255);
+
+ RwIm2DVertexSetScreenX(&v[3], x + sz);
+ RwIm2DVertexSetScreenY(&v[3], y);
+ RwIm2DVertexSetScreenZ(&v[3], z);
+ RwIm2DVertexSetScreenZ(&v[3], nearz);
+ RwIm2DVertexSetRecipCameraZ(&v[3], recipz);
+ RwIm2DVertexSetU(&v[3], 1.0f, recipz);
+ RwIm2DVertexSetV(&v[3], 0.0f, recipz);
+ RwIm2DVertexSetIntRGBA(&v[3], 255, 255, 255, 255);
+
+
+ coronaIndices[numCoronaIndices++] = numCoronaVerts;
+ coronaIndices[numCoronaIndices++] = numCoronaVerts + 1;
+ coronaIndices[numCoronaIndices++] = numCoronaVerts + 2;
+ coronaIndices[numCoronaIndices++] = numCoronaVerts;
+ coronaIndices[numCoronaIndices++] = numCoronaVerts + 2;
+ coronaIndices[numCoronaIndices++] = numCoronaVerts + 3;
+ numCoronaVerts += 4;
+}
+
+static void
+DrawEnvMapCoronas(float heading)
+{
+ RwRaster *rt = RwTextureGetRaster(CustomPipes::EnvMapTex);
+ const float BIG = 89.0f * RwRasterGetWidth(rt)/128.0f;
+ const float SMALL = 38.0f * RwRasterGetHeight(rt)/128.0f;
+
+ float x;
+ numCoronaVerts = 0;
+ numCoronaIndices = 0;
+ x = (heading - PI)/TWOPI;// - 1.0f;
+ x *= BIG+SMALL;
+ AddCorona(x, 0.0f, BIG); x += BIG;
+ AddCorona(x, 12.0f, SMALL); x += SMALL;
+ AddCorona(x, 0.0f, BIG); x += BIG;
+ AddCorona(x, 12.0f, SMALL); x += SMALL;
+
+ RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE);
+ RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE);
+ RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+ RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[CCoronas::TYPE_STAR]));
+ RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, coronaVerts, numCoronaVerts, coronaIndices, numCoronaIndices);
+ RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
+ RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
+ RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
+}
+
+void
+CRenderer::GenerateEnvironmentMap(void)
+{
+ // We'll probably do this differently eventually
+ // re-using all sorts of stuff here...
+
+ CPostFX::GetBackBuffer(Scene.camera);
+
+ RwCameraBeginUpdate(CustomPipes::EnvMapCam);
+
+ // get current scene
+ SetQuadVertices(RwTextureGetRaster(CustomPipes::EnvMapTex), CPostFX::pBackBuffer, RwCameraGetNearClipPlane(RwCameraGetCurrentCamera()));
+ RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE);
+ RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
+ RwRenderStateSet(rwRENDERSTATETEXTURERASTER, CPostFX::pBackBuffer);
+ RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
+ RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
+ RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, Screen2EnvQuad, 4, EnvQuadIndices, 6);
+ RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
+ RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
+
+ // Draw coronas
+ if(CustomPipes::VehiclePipeSwitch != CustomPipes::VEHICLEPIPE_MOBILE)
+ DrawEnvMapCoronas(TheCamera.GetForward().Heading());
+
+ RwCameraEndUpdate(CustomPipes::EnvMapCam);
+
+
+ RwCameraBeginUpdate(Scene.camera);
+
+ if(gbRenderDebugEnvMap){
+ RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(CustomPipes::EnvMapTex));
+ RwIm2DRenderIndexedPrimitive(rwPRIMTYPETRILIST, CustomPipes::EnvScreenQuad, 4, (RwImVertexIndex*)CustomPipes::QuadIndices, 6);
+ }
}
diff --git a/src/renderer/Renderer.h b/src/renderer/Renderer.h
index 9b202098..baf2016b 100644
--- a/src/renderer/Renderer.h
+++ b/src/renderer/Renderer.h
@@ -25,13 +25,6 @@ extern bool gbDontRenderVehicles;
class CVehicle;
class CPtrList;
-// unused
-struct BlockedRange
-{
- float a, b; // unknown
- BlockedRange *prev, *next;
-};
-
class CRenderer
{
static int32 ms_nNoOfVisibleEntities;
@@ -49,10 +42,6 @@ class CRenderer
static CVector ms_vecCameraPosition;
static CVehicle *m_pFirstPersonVehicle;
- // unused
- static BlockedRange aBlockedRanges[16];
- static BlockedRange *pFullBlockedRanges;
- static BlockedRange *pEmptyBlockedRanges;
public:
static float ms_lodDistScale;
static bool m_loadingPriority;
@@ -93,13 +82,15 @@ public:
static void RemoveVehiclePedLights(CEntity *ent, bool reset);
-#ifdef NEW_RENDERER
static void ClearForFrame(void);
- static void RenderPeds(void);
static void RenderVehicles(void); // also renders peds in LCS
+ static void RenderWater(void); // keep-out polys and transparent water
+#ifdef NEW_RENDERER
static void RenderOneBuilding(CEntity *ent, float camdist = 0.0f);
static void RenderWorld(int pass); // like cWorldStream::Render(int)
- static void RenderTransparentWater(void); // keep-out polys and transparent water
#endif
static void InsertEntityIntoList(CEntity *ent);
+ static void AddVisibleEntity(CEntity *ent);
+
+ static void GenerateEnvironmentMap(void);
};
diff --git a/src/renderer/Shadows.cpp b/src/renderer/Shadows.cpp
index 5339916a..840b9a37 100644
--- a/src/renderer/Shadows.cpp
+++ b/src/renderer/Shadows.cpp
@@ -76,14 +76,14 @@ CShadows::Init(void)
gpShadowBikeTex = RwTextureRead("shad_bike", nil);
gpShadowBaronTex = RwTextureRead("shad_rcbaron", nil);
gpShadowExplosionTex = RwTextureRead("shad_exp", nil);
- gpShadowHeadLightsTex = RwTextureRead("headlight", nil);
+ gpShadowHeadLightsTex = RwTextureRead("headlight_single", nil);
gpOutline1Tex = RwTextureRead("outline_64", nil);
gpOutline2Tex = RwTextureRead("outline2_64", nil);
gpOutline3Tex = RwTextureRead("outline3_64", nil);
gpBloodPoolTex = RwTextureRead("bloodpool_64", nil);
- gpReflectionTex = RwTextureRead("reflection01", nil);
+ //gpReflectionTex = RwTextureRead("reflection01", nil);
gpWalkDontTex = RwTextureRead("walk_dont", nil);
- gpCrackedGlassTex = RwTextureRead("wincrack_32", nil);
+ //gpCrackedGlassTex = RwTextureRead("wincrack_32", nil);
gpPostShadowTex = RwTextureRead("lamp_shad_64", nil);
CTxdStore::PopCurrentTxd();
@@ -99,9 +99,9 @@ CShadows::Init(void)
ASSERT(gpOutline2Tex != nil);
ASSERT(gpOutline3Tex != nil);
ASSERT(gpBloodPoolTex != nil);
- ASSERT(gpReflectionTex != nil);
+ //ASSERT(gpReflectionTex != nil);
ASSERT(gpWalkDontTex != nil);
- ASSERT(gpCrackedGlassTex != nil);
+ //ASSERT(gpCrackedGlassTex != nil);
ASSERT(gpPostShadowTex != nil);
@@ -178,9 +178,9 @@ CShadows::Shutdown(void)
ASSERT(gpOutline2Tex != nil);
ASSERT(gpOutline3Tex != nil);
ASSERT(gpBloodPoolTex != nil);
- ASSERT(gpReflectionTex != nil);
+ //ASSERT(gpReflectionTex != nil);
ASSERT(gpWalkDontTex != nil);
- ASSERT(gpCrackedGlassTex != nil);
+ //ASSERT(gpCrackedGlassTex != nil);
ASSERT(gpPostShadowTex != nil);
RwTextureDestroy(gpShadowCarTex);
@@ -194,9 +194,9 @@ CShadows::Shutdown(void)
RwTextureDestroy(gpOutline2Tex);
RwTextureDestroy(gpOutline3Tex);
RwTextureDestroy(gpBloodPoolTex);
- RwTextureDestroy(gpReflectionTex);
+ //RwTextureDestroy(gpReflectionTex);
RwTextureDestroy(gpWalkDontTex);
- RwTextureDestroy(gpCrackedGlassTex);
+ //RwTextureDestroy(gpCrackedGlassTex);
RwTextureDestroy(gpPostShadowTex);
}
@@ -720,7 +720,7 @@ CShadows::StoreShadowForVehicle(CVehicle *pCar, VEH_SHD_TYPE type)
void
CShadows::StoreCarLightShadow(CVehicle *pCar, int32 nID, RwTexture *pTexture, CVector *pPosn,
float fFrontX, float fFrontY, float fSideX, float fSideY, uint8 nRed, uint8 nGreen, uint8 nBlue,
- float fMaxViewAngle)
+ float fMaxViewAngle, bool arg1, float arg2, float arg3)
{
ASSERT(pCar != nil);
ASSERT(pPosn != nil);
diff --git a/src/renderer/Shadows.h b/src/renderer/Shadows.h
index 937ff4eb..446c8602 100644
--- a/src/renderer/Shadows.h
+++ b/src/renderer/Shadows.h
@@ -159,7 +159,7 @@ public:
static void StoreShadowToBeRendered ( uint8 ShadowType, CVector *pPosn, float fFrontX, float fFrontY, float fSideX, float fSideY, int16 nIntensity, uint8 nRed, uint8 nGreen, uint8 nBlue);
static void StoreShadowToBeRendered ( uint8 ShadowType, RwTexture *pTexture, CVector *pPosn, float fFrontX, float fFrontY, float fSideX, float fSideY, int16 nIntensity, uint8 nRed, uint8 nGreen, uint8 nBlue, float fZDistance, bool bDrawOnWater, float fScale, CCutsceneShadow *pShadow, bool bDrawOnBuildings);
static void StoreShadowForVehicle (CVehicle *pCar, VEH_SHD_TYPE type);
- static void StoreCarLightShadow (CVehicle *pCar, int32 nID, RwTexture *pTexture, CVector *pPosn, float fFrontX, float fFrontY, float fSideX, float fSideY, uint8 nRed, uint8 nGreen, uint8 nBlue, float fMaxViewAngle);
+ static void StoreCarLightShadow (CVehicle *pCar, int32 nID, RwTexture *pTexture, CVector *pPosn, float fFrontX, float fFrontY, float fSideX, float fSideY, uint8 nRed, uint8 nGreen, uint8 nBlue, float fMaxViewAngle, bool arg1 = false, float arg2 = 0.0f, float arg3 = 1.0f);
static void StoreShadowForPed (CPed *pPed, float fDisplacementX, float fDisplacementY, float fFrontX, float fFrontY, float fSideX, float fSideY);
static void StoreShadowForPedObject (CEntity *pPedObject, float fDisplacementX, float fDisplacementY, float fFrontX, float fFrontY, float fSideX, float fSideY);
static void StoreShadowForCutscenePedObject(CCutsceneObject *pObject, float fDisplacementX, float fDisplacementY, float fFrontX, float fFrontY, float fSideX, float fSideY);
diff --git a/src/renderer/SpecialFX.cpp b/src/renderer/SpecialFX.cpp
index 61750f85..4bf94f2b 100644
--- a/src/renderer/SpecialFX.cpp
+++ b/src/renderer/SpecialFX.cpp
@@ -878,7 +878,7 @@ C3dMarkers::PlaceMarker(uint32 identifier, uint16 type, CVector &pos, float size
pMarker->m_Matrix.GetPosition() = pos;
if (pMarker->m_bFindZOnNextPlacement) {
- if ((playerPos - pos).MagnitudeSqr() < sq(100.f) && CColStore::HasCollisionLoaded(CVector2D(pos))) {
+ if ((playerPos - pos).MagnitudeSqr() < sq(100.f) && CColStore::HasCollisionLoaded(pos)) {
float z = CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z + 1.0f, nil);
if (z != 0.0f)
pMarker->m_Matrix.GetPosition().z = z - 0.05f * size;
@@ -894,7 +894,7 @@ C3dMarkers::PlaceMarker(uint32 identifier, uint16 type, CVector &pos, float size
pMarker->AddMarker(identifier, type, size, r, g, b, a, pulsePeriod, pulseFraction, rotateRate);
if (type == MARKERTYPE_CYLINDER || type == MARKERTYPE_0 || type == MARKERTYPE_2) {
- if ((playerPos - pos).MagnitudeSqr() < sq(100.f) && CColStore::HasCollisionLoaded(CVector2D(pos))) {
+ if ((playerPos - pos).MagnitudeSqr() < sq(100.f) && CColStore::HasCollisionLoaded(pos)) {
float z = CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z + 1.0f, nil);
if (z != 0.0f)
pos.z = z - 0.05f * size;
diff --git a/src/renderer/Sprite.cpp b/src/renderer/Sprite.cpp
index ecfd3fdc..bf2c929f 100644
--- a/src/renderer/Sprite.cpp
+++ b/src/renderer/Sprite.cpp
@@ -14,6 +14,19 @@ float CSprite::m_f2DFarScreenZ;
float CSprite::m_fRecipNearClipPlane;
int32 CSprite::m_bFlushSpriteBufferSwitchZTest;
+float CalcScreenZ(float z)
+{
+ // LCS TODO: check
+
+ if ( z == 0.0f )
+ return CSprite::GetNearScreenZ();
+
+ return (z - CDraw::GetNearClipZ())
+ * (CSprite::GetFarScreenZ() - CSprite::GetNearScreenZ()) * CDraw::GetFarClipZ()
+ / ( (CDraw::GetFarClipZ() - CDraw::GetNearClipZ()) * z )
+ + CSprite::GetNearScreenZ();
+}
+
float
CSprite::CalcHorizonCoors(void)
{
diff --git a/src/renderer/Sprite.h b/src/renderer/Sprite.h
index fae6684e..952837a0 100644
--- a/src/renderer/Sprite.h
+++ b/src/renderer/Sprite.h
@@ -29,3 +29,5 @@ public:
static void RenderBufferedOneXLUSprite2D_Rotate_Dimension(float x, float y, float w, float h, const RwRGBA &colour, int16 intens, float rotation, uint8 alpha);
};
+
+extern float CalcScreenZ(float z); \ No newline at end of file
diff --git a/src/renderer/Timecycle.cpp b/src/renderer/Timecycle.cpp
index 95d9fe3c..8a3efd85 100644
--- a/src/renderer/Timecycle.cpp
+++ b/src/renderer/Timecycle.cpp
@@ -134,6 +134,61 @@ float CTimeCycle::m_fShadowSideY[16];
float CTimeCycle::m_fShadowDisplacementX[16];
float CTimeCycle::m_fShadowDisplacementY[16];
+
+
+static float tmp_nAmbientRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientRed_Obj[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientGreen_Obj[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientBlue_Obj[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientRed_Bl[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientGreen_Bl[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientBlue_Bl[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientRed_Obj_Bl[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientGreen_Obj_Bl[NUMHOURS][NUMWEATHERS];
+static float tmp_nAmbientBlue_Obj_Bl[NUMHOURS][NUMWEATHERS];
+static float tmp_nDirectionalRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nDirectionalGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nDirectionalBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nSkyTopRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nSkyTopGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nSkyTopBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nSkyBottomRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nSkyBottomGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nSkyBottomBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nSunCoreRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nSunCoreGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nSunCoreBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nSunCoronaRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nSunCoronaGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nSunCoronaBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_fSunSize[NUMHOURS][NUMWEATHERS];
+static float tmp_fSpriteSize[NUMHOURS][NUMWEATHERS];
+static float tmp_fSpriteBrightness[NUMHOURS][NUMWEATHERS];
+static float tmp_nShadowStrength[NUMHOURS][NUMWEATHERS];
+static float tmp_nLightShadowStrength[NUMHOURS][NUMWEATHERS];
+static float tmp_nPoleShadowStrength[NUMHOURS][NUMWEATHERS];
+static float tmp_fFogStart[NUMHOURS][NUMWEATHERS];
+static float tmp_fFarClip[NUMHOURS][NUMWEATHERS];
+static float tmp_fLightsOnGroundBrightness[NUMHOURS][NUMWEATHERS];
+static float tmp_nLowCloudsRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nLowCloudsGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nLowCloudsBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nFluffyCloudsTopRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nFluffyCloudsTopGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nFluffyCloudsTopBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_nFluffyCloudsBottomRed[NUMHOURS][NUMWEATHERS];
+static float tmp_nFluffyCloudsBottomGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_nFluffyCloudsBottomBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_fBlurRed[NUMHOURS][NUMWEATHERS];
+static float tmp_fBlurGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_fBlurBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_fWaterRed[NUMHOURS][NUMWEATHERS];
+static float tmp_fWaterGreen[NUMHOURS][NUMWEATHERS];
+static float tmp_fWaterBlue[NUMHOURS][NUMWEATHERS];
+static float tmp_fWaterAlpha[NUMHOURS][NUMWEATHERS];
+
void
CTimeCycle::Initialise(void)
{
@@ -171,7 +226,7 @@ CTimeCycle::Initialise(void)
for(h = 0; h < NUMHOURS; h++){
li = 0;
while(work_buff[bi] == '/' || work_buff[bi] == '\n' ||
- work_buff[bi] == '\0' || work_buff[bi] == ' ' || work_buff[bi] == '\r'){
+ work_buff[bi] == '\0' || work_buff[bi] == '\r'){
while(work_buff[bi] != '\n' && work_buff[bi] != '\0' && work_buff[bi] != '\r')
bi++;
bi++;
@@ -207,65 +262,180 @@ CTimeCycle::Initialise(void)
&blurR, &blurG, &blurB,
&waterR, &waterG, &waterB, &waterA);
- m_nAmbientRed[h][w] = ambR;
- m_nAmbientGreen[h][w] = ambG;
- m_nAmbientBlue[h][w] = ambB;
- m_nAmbientRed_Obj[h][w] = ambobjR;
- m_nAmbientGreen_Obj[h][w] = ambobjG;
- m_nAmbientBlue_Obj[h][w] = ambobjB;
- m_nAmbientRed_Bl[h][w] = ambblR;
- m_nAmbientGreen_Bl[h][w] = ambblG;
- m_nAmbientBlue_Bl[h][w] = ambblB;
- m_nAmbientRed_Obj_Bl[h][w] = ambobjblR;
- m_nAmbientGreen_Obj_Bl[h][w] = ambobjblG;
- m_nAmbientBlue_Obj_Bl[h][w] = ambobjblB;
- m_nDirectionalRed[h][w] = dirR;
- m_nDirectionalGreen[h][w] = dirG;
- m_nDirectionalBlue[h][w] = dirB;
- m_nSkyTopRed[h][w] = skyTopR;
- m_nSkyTopGreen[h][w] = skyTopG;
- m_nSkyTopBlue[h][w] = skyTopB;
- m_nSkyBottomRed[h][w] = skyBotR;
- m_nSkyBottomGreen[h][w] = skyBotG;
- m_nSkyBottomBlue[h][w] = skyBotB;
- m_nSunCoreRed[h][w] = sunCoreR;
- m_nSunCoreGreen[h][w] = sunCoreG;
- m_nSunCoreBlue[h][w] = sunCoreB;
- m_nSunCoronaRed[h][w] = sunCoronaR;
- m_nSunCoronaGreen[h][w] = sunCoronaG;
- m_nSunCoronaBlue[h][w] = sunCoronaB;
- m_fSunSize[h][w] = sunSz * 10.0f;
- m_fSpriteSize[h][w] = sprSz * 10.0f;
- m_fSpriteBrightness[h][w] = sprBght * 10.0f;
- m_nShadowStrength[h][w] = shad;
- m_nLightShadowStrength[h][w] = lightShad;
- m_nPoleShadowStrength[h][w] = poleShad;
- m_fFarClip[h][w] = farClp;
- m_fFogStart[h][w] = fogSt;
- m_fLightsOnGroundBrightness[h][w] = lightGnd * 10.0f;
- m_nLowCloudsRed[h][w] = cloudR;
- m_nLowCloudsGreen[h][w] = cloudG;
- m_nLowCloudsBlue[h][w] = cloudB;
- m_nFluffyCloudsTopRed[h][w] = fluffyTopR;
- m_nFluffyCloudsTopGreen[h][w] = fluffyTopG;
- m_nFluffyCloudsTopBlue[h][w] = fluffyTopB;
- m_nFluffyCloudsBottomRed[h][w] = fluffyBotR;
- m_nFluffyCloudsBottomGreen[h][w] = fluffyBotG;
- m_nFluffyCloudsBottomBlue[h][w] = fluffyBotB;
- m_fBlurRed[h][w] = blurR;
- m_fBlurGreen[h][w] = blurG;
- m_fBlurBlue[h][w] = blurB;
- m_fWaterRed[h][w] = waterR;
- m_fWaterGreen[h][w] = waterG;
- m_fWaterBlue[h][w] = waterB;
- m_fWaterAlpha[h][w] = waterA;
+ tmp_nAmbientRed[h][w] = ambR;
+ tmp_nAmbientGreen[h][w] = ambG;
+ tmp_nAmbientBlue[h][w] = ambB;
+ tmp_nAmbientRed_Obj[h][w] = ambobjR;
+ tmp_nAmbientGreen_Obj[h][w] = ambobjG;
+ tmp_nAmbientBlue_Obj[h][w] = ambobjB;
+ tmp_nAmbientRed_Bl[h][w] = ambblR;
+ tmp_nAmbientGreen_Bl[h][w] = ambblG;
+ tmp_nAmbientBlue_Bl[h][w] = ambblB;
+ tmp_nAmbientRed_Obj_Bl[h][w] = ambobjblR;
+ tmp_nAmbientGreen_Obj_Bl[h][w] = ambobjblG;
+ tmp_nAmbientBlue_Obj_Bl[h][w] = ambobjblB;
+ tmp_nDirectionalRed[h][w] = dirR;
+ tmp_nDirectionalGreen[h][w] = dirG;
+ tmp_nDirectionalBlue[h][w] = dirB;
+ tmp_nSkyTopRed[h][w] = skyTopR;
+ tmp_nSkyTopGreen[h][w] = skyTopG;
+ tmp_nSkyTopBlue[h][w] = skyTopB;
+ tmp_nSkyBottomRed[h][w] = skyBotR;
+ tmp_nSkyBottomGreen[h][w] = skyBotG;
+ tmp_nSkyBottomBlue[h][w] = skyBotB;
+ tmp_nSunCoreRed[h][w] = sunCoreR;
+ tmp_nSunCoreGreen[h][w] = sunCoreG;
+ tmp_nSunCoreBlue[h][w] = sunCoreB;
+ tmp_nSunCoronaRed[h][w] = sunCoronaR;
+ tmp_nSunCoronaGreen[h][w] = sunCoronaG;
+ tmp_nSunCoronaBlue[h][w] = sunCoronaB;
+ if(sunSz == -1)
+ tmp_fSunSize[h][w] = -1;
+ else
+ tmp_fSunSize[h][w] = sunSz * 10.0f;
+ if(sprSz == -1)
+ tmp_fSpriteSize[h][w] = -1;
+ else
+ tmp_fSpriteSize[h][w] = sprSz * 10.0f;
+ if(sprBght == -1)
+ tmp_fSpriteBrightness[h][w] = -1;
+ else
+ tmp_fSpriteBrightness[h][w] = sprBght * 10.0f;
+ tmp_nShadowStrength[h][w] = shad;
+ tmp_nLightShadowStrength[h][w] = lightShad;
+ tmp_nPoleShadowStrength[h][w] = poleShad;
+ tmp_fFarClip[h][w] = farClp;
+ tmp_fFogStart[h][w] = fogSt;
+ if(lightGnd == -1)
+ tmp_fLightsOnGroundBrightness[h][w] = -1;
+ else
+ tmp_fLightsOnGroundBrightness[h][w] = lightGnd * 10.0f;
+ tmp_nLowCloudsRed[h][w] = cloudR;
+ tmp_nLowCloudsGreen[h][w] = cloudG;
+ tmp_nLowCloudsBlue[h][w] = cloudB;
+ tmp_nFluffyCloudsTopRed[h][w] = fluffyTopR;
+ tmp_nFluffyCloudsTopGreen[h][w] = fluffyTopG;
+ tmp_nFluffyCloudsTopBlue[h][w] = fluffyTopB;
+ tmp_nFluffyCloudsBottomRed[h][w] = fluffyBotR;
+ tmp_nFluffyCloudsBottomGreen[h][w] = fluffyBotG;
+ tmp_nFluffyCloudsBottomBlue[h][w] = fluffyBotB;
+ tmp_fBlurRed[h][w] = blurR;
+ tmp_fBlurGreen[h][w] = blurG;
+ tmp_fBlurBlue[h][w] = blurB;
+ tmp_fWaterRed[h][w] = waterR;
+ tmp_fWaterGreen[h][w] = waterG;
+ tmp_fWaterBlue[h][w] = waterB;
+ tmp_fWaterAlpha[h][w] = waterA;
}
+ UpdateArrays();
+
m_FogReduction = 0;
debug("CTimeCycle ready\n");
}
+template<typename T> void
+FillGaps(T (*out)[NUMWEATHERS], float (*in)[NUMWEATHERS])
+{
+ int w;
+ for(w = 0; w < NUMWEATHERS; w++){
+ for(int h = 0; h < NUMHOURS; h++)
+ out[h][w] = in[h][w];
+
+#define NEXT(h) (((h)+1)%NUMHOURS)
+#define PREV(h) (((h)+NUMHOURS-1)%NUMHOURS)
+ int hend, h1, h2;
+ for(hend = 0; hend < NUMHOURS; hend++)
+ if(in[hend][w] != -1.0f)
+ goto foundstart;
+ return; // this should never happen
+foundstart:
+ // Found the start of a block of filled in entries
+ for(h1 = NEXT(hend); h1 != hend; h1 = h2){
+ // Skip filled in entries
+ for(; h1 != hend; h1 = NEXT(h1))
+ if(in[h1][w] == -1.0f)
+ goto foundfirst;
+ break; // all filled in already
+foundfirst:
+ // h1 is now the first -1 after n filled in values
+ for(h2 = NEXT(h1); ; h2 = NEXT(h2))
+ if(in[h2][w] != -1.0f)
+ goto foundlast;
+ break;
+foundlast:
+ // h2 is now the first entry after a row of -1s
+ h1 = PREV(h1); // make h1 the first before a row of -1s
+ int n = (h2-h1 + NUMHOURS) % NUMHOURS;
+ if(n == 0) n = NUMHOURS; // can't happen
+ float step = (in[h2][w] - in[h1][w])/n;
+
+ for(int i = 1; i < n; i++){
+ float f = (float)i/n;
+ out[(h1+i)%NUMHOURS][w] = in[h2][w]*f + in[h1][w]*(1.0f-f);
+ }
+ }
+ }
+}
+
+void
+CTimeCycle::UpdateArrays(void)
+{
+ FillGaps(m_nAmbientRed, tmp_nAmbientRed);
+ FillGaps(m_nAmbientGreen, tmp_nAmbientGreen);
+ FillGaps(m_nAmbientBlue, tmp_nAmbientBlue);
+ FillGaps(m_nAmbientRed_Obj, tmp_nAmbientRed_Obj);
+ FillGaps(m_nAmbientGreen_Obj, tmp_nAmbientGreen_Obj);
+ FillGaps(m_nAmbientBlue_Obj, tmp_nAmbientBlue_Obj);
+ FillGaps(m_nAmbientRed_Bl, tmp_nAmbientRed_Bl);
+ FillGaps(m_nAmbientGreen_Bl, tmp_nAmbientGreen_Bl);
+ FillGaps(m_nAmbientBlue_Bl, tmp_nAmbientBlue_Bl);
+ FillGaps(m_nAmbientRed_Obj_Bl, tmp_nAmbientRed_Obj_Bl);
+ FillGaps(m_nAmbientGreen_Obj_Bl, tmp_nAmbientGreen_Obj_Bl);
+ FillGaps(m_nAmbientBlue_Obj_Bl, tmp_nAmbientBlue_Obj_Bl);
+ FillGaps(m_nDirectionalRed, tmp_nDirectionalRed);
+ FillGaps(m_nDirectionalGreen, tmp_nDirectionalGreen);
+ FillGaps(m_nDirectionalBlue, tmp_nDirectionalBlue);
+ FillGaps(m_nSkyTopRed, tmp_nSkyTopRed);
+ FillGaps(m_nSkyTopGreen, tmp_nSkyTopGreen);
+ FillGaps(m_nSkyTopBlue, tmp_nSkyTopBlue);
+ FillGaps(m_nSkyBottomRed, tmp_nSkyBottomRed);
+ FillGaps(m_nSkyBottomGreen, tmp_nSkyBottomGreen);
+ FillGaps(m_nSkyBottomBlue, tmp_nSkyBottomBlue);
+ FillGaps(m_nSunCoreRed, tmp_nSunCoreRed);
+ FillGaps(m_nSunCoreGreen, tmp_nSunCoreGreen);
+ FillGaps(m_nSunCoreBlue, tmp_nSunCoreBlue);
+ FillGaps(m_nSunCoronaRed, tmp_nSunCoronaRed);
+ FillGaps(m_nSunCoronaGreen, tmp_nSunCoronaGreen);
+ FillGaps(m_nSunCoronaBlue, tmp_nSunCoronaBlue);
+ FillGaps(m_fSunSize, tmp_fSunSize);
+ FillGaps(m_fSpriteSize, tmp_fSpriteSize);
+ FillGaps(m_fSpriteBrightness, tmp_fSpriteBrightness);
+ FillGaps(m_nShadowStrength, tmp_nShadowStrength);
+ FillGaps(m_nLightShadowStrength, tmp_nLightShadowStrength);
+ FillGaps(m_nPoleShadowStrength, tmp_nPoleShadowStrength);
+ FillGaps(m_fFogStart, tmp_fFogStart);
+ FillGaps(m_fFarClip, tmp_fFarClip);
+ FillGaps(m_fLightsOnGroundBrightness, tmp_fLightsOnGroundBrightness);
+ FillGaps(m_nLowCloudsRed, tmp_nLowCloudsRed);
+ FillGaps(m_nLowCloudsGreen, tmp_nLowCloudsGreen);
+ FillGaps(m_nLowCloudsBlue, tmp_nLowCloudsBlue);
+ FillGaps(m_nFluffyCloudsTopRed, tmp_nFluffyCloudsTopRed);
+ FillGaps(m_nFluffyCloudsTopGreen, tmp_nFluffyCloudsTopGreen);
+ FillGaps(m_nFluffyCloudsTopBlue, tmp_nFluffyCloudsTopBlue);
+ FillGaps(m_nFluffyCloudsBottomRed, tmp_nFluffyCloudsBottomRed);
+ FillGaps(m_nFluffyCloudsBottomGreen, tmp_nFluffyCloudsBottomGreen);
+ FillGaps(m_nFluffyCloudsBottomBlue, tmp_nFluffyCloudsBottomBlue);
+ FillGaps(m_fBlurRed, tmp_fBlurRed);
+ FillGaps(m_fBlurGreen, tmp_fBlurGreen);
+ FillGaps(m_fBlurBlue, tmp_fBlurBlue);
+ FillGaps(m_fWaterRed, tmp_fWaterRed);
+ FillGaps(m_fWaterGreen, tmp_fWaterGreen);
+ FillGaps(m_fWaterBlue, tmp_fWaterBlue);
+ FillGaps(m_fWaterAlpha, tmp_fWaterAlpha);
+}
+
static float interp_c0, interp_c1, interp_c2, interp_c3;
float CTimeCycle::Interpolate(int8 *a, int8 *b)
diff --git a/src/renderer/Timecycle.h b/src/renderer/Timecycle.h
index da911b75..d8c333f6 100644
--- a/src/renderer/Timecycle.h
+++ b/src/renderer/Timecycle.h
@@ -185,6 +185,7 @@ public:
static int32 GetWaterAlpha(void) { return m_fCurrentWaterAlpha; }
static void Initialise(void);
+ static void UpdateArrays(void);
static void Update(void);
static float Interpolate(int8 *a, int8 *b);
static float Interpolate(uint8 *a, uint8 *b);
diff --git a/src/renderer/WaterCannon.cpp b/src/renderer/WaterCannon.cpp
index 4976f8a3..4aaa8d6f 100644
--- a/src/renderer/WaterCannon.cpp
+++ b/src/renderer/WaterCannon.cpp
@@ -13,6 +13,16 @@
#include "Camera.h"
#include "Particle.h"
+// --LCS: file done
+
+#ifdef PSP_WATERCANNON
+ //PSP:
+ #define WATER_COLOR 255
+#else
+ //PS2:
+ #define WATER_COLOR 127
+#endif
+
#define WATERCANNONVERTS 4
#define WATERCANNONINDEXES 12
@@ -115,23 +125,33 @@ void CWaterCannon::Update_NewInput(CVector *pos, CVector *dir)
m_abUsed[m_nCur] = true;
}
+static float fWaterCannonU = 0.0f;
void CWaterCannon::Render(void)
{
+ extern RwRaster *gpFireHoseRaster;
+
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)TRUE);
- RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void *)gpWaterRaster);
+ RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void *)gpFireHoseRaster);
- float v = float(CGeneral::GetRandomNumber() & 255) / 256;
-
- RwIm3DVertexSetV(&WaterCannonVertices[0], v);
- RwIm3DVertexSetV(&WaterCannonVertices[1], v);
- RwIm3DVertexSetV(&WaterCannonVertices[2], v);
- RwIm3DVertexSetV(&WaterCannonVertices[3], v);
+ fWaterCannonU += CTimer::GetTimeStepInSeconds() * 6.0f;
- int16 pointA = m_nCur % NUM_SEGMENTPOINTS;
+ while ( fWaterCannonU >= 1.0f )
+ fWaterCannonU -= 1.0f;
+ RwIm3DVertexSetU(&WaterCannonVertices[0], -fWaterCannonU);
+ RwIm3DVertexSetV(&WaterCannonVertices[0], 0.0f);
+ RwIm3DVertexSetU(&WaterCannonVertices[1], -fWaterCannonU);
+ RwIm3DVertexSetV(&WaterCannonVertices[1], 1.0f);
+ RwIm3DVertexSetU(&WaterCannonVertices[2], 1.0f - fWaterCannonU);
+ RwIm3DVertexSetV(&WaterCannonVertices[2], 0.0f);
+ RwIm3DVertexSetU(&WaterCannonVertices[3], 1.0f - fWaterCannonU);
+ RwIm3DVertexSetV(&WaterCannonVertices[3], 1.0f);
+
+ int16 pointA = m_nCur % NUM_SEGMENTPOINTS;
int16 pointB = pointA - 1;
+ int16 pointC = pointA;
if ( pointB < 0 )
pointB += NUM_SEGMENTPOINTS;
@@ -142,6 +162,10 @@ void CWaterCannon::Render(void)
{
if ( m_abUsed[pointA] && m_abUsed[pointB] )
{
+ bool bFirst = false;
+ if ( i == 0 || m_abUsed[pointA] && !m_abUsed[pointC] )
+ bFirst = true;
+
if ( !bInit )
{
CVector cp = CrossProduct(m_avecPos[pointB] - m_avecPos[pointA], TheCamera.GetForward());
@@ -149,26 +173,25 @@ void CWaterCannon::Render(void)
bInit = true;
}
- float dist = float(i*i*i) / 300.0f + 1.0f;
float brightness = float(i) / NUM_SEGMENTPOINTS;
-
int32 color = (int32)((1.0f - brightness*brightness) * 255.0f);
- CVector offset = dist * norm;
- RwIm3DVertexSetRGBA(&WaterCannonVertices[0], color, color, color, color);
+ CVector offset = (float(i)+1.0f) * norm;
+
+ RwIm3DVertexSetRGBA(&WaterCannonVertices[0], WATER_COLOR, WATER_COLOR, WATER_COLOR, bFirst ? 0 : color);
RwIm3DVertexSetPos (&WaterCannonVertices[0], m_avecPos[pointA].x - offset.x, m_avecPos[pointA].y - offset.y, m_avecPos[pointA].z - offset.z);
- RwIm3DVertexSetRGBA(&WaterCannonVertices[1], color, color, color, color);
+ RwIm3DVertexSetRGBA(&WaterCannonVertices[1], WATER_COLOR, WATER_COLOR, WATER_COLOR, bFirst ? 0 : color);
RwIm3DVertexSetPos (&WaterCannonVertices[1], m_avecPos[pointA].x + offset.x, m_avecPos[pointA].y + offset.y, m_avecPos[pointA].z + offset.z);
- RwIm3DVertexSetRGBA(&WaterCannonVertices[2], color, color, color, color);
+ offset = (float(i+1)+1.0f) * norm;
+
+ RwIm3DVertexSetRGBA(&WaterCannonVertices[2], WATER_COLOR, WATER_COLOR, WATER_COLOR, color);
RwIm3DVertexSetPos (&WaterCannonVertices[2], m_avecPos[pointB].x - offset.x, m_avecPos[pointB].y - offset.y, m_avecPos[pointB].z - offset.z);
- RwIm3DVertexSetRGBA(&WaterCannonVertices[3], color, color, color, color);
+ RwIm3DVertexSetRGBA(&WaterCannonVertices[3], WATER_COLOR, WATER_COLOR, WATER_COLOR, color);
RwIm3DVertexSetPos (&WaterCannonVertices[3], m_avecPos[pointB].x + offset.x, m_avecPos[pointB].y + offset.y, m_avecPos[pointB].z + offset.z);
- LittleTest();
-
if ( RwIm3DTransform(WaterCannonVertices, WATERCANNONVERTS, NULL, rwIM3D_VERTEXUV) )
{
RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, WaterCannonIndexList, WATERCANNONINDEXES);
@@ -176,6 +199,7 @@ void CWaterCannon::Render(void)
}
}
+ pointC = pointA;
pointA = pointB--;
if ( pointB < 0 )
pointB += NUM_SEGMENTPOINTS;
diff --git a/src/renderer/WaterCannon.h b/src/renderer/WaterCannon.h
index a37bdd12..5b60639c 100644
--- a/src/renderer/WaterCannon.h
+++ b/src/renderer/WaterCannon.h
@@ -14,6 +14,7 @@ public:
int32 m_nId;
int16 m_nCur;
uint32 m_nTimeCreated;
+ int32 field_C;
CVector m_avecPos[NUM_SEGMENTPOINTS];
CVector m_avecVelocity[NUM_SEGMENTPOINTS];
bool m_abUsed[NUM_SEGMENTPOINTS];
@@ -25,7 +26,7 @@ public:
void PushPeds(void);
};
-VALIDATE_SIZE(CWaterCannon, 412);
+VALIDATE_SIZE(CWaterCannon, 0x1A0);
class CWaterCannons
{
diff --git a/src/renderer/WaterCreatures.cpp b/src/renderer/WaterCreatures.cpp
index 92fb74ee..4c6c92a6 100644
--- a/src/renderer/WaterCreatures.cpp
+++ b/src/renderer/WaterCreatures.cpp
@@ -8,6 +8,7 @@
#include "General.h"
#include "Object.h"
+/*
int CWaterCreatures::nNumActiveSeaLifeForms;
CWaterCreature CWaterCreatures::aWaterCreatures[NUM_WATER_CREATURES];
@@ -272,4 +273,5 @@ void CWaterCreatures::RemoveAll() {
nNumActiveSeaLifeForms--;
}
}
-} \ No newline at end of file
+}
+*/ \ No newline at end of file
diff --git a/src/renderer/WaterCreatures.h b/src/renderer/WaterCreatures.h
index 32754a10..099cc1a4 100644
--- a/src/renderer/WaterCreatures.h
+++ b/src/renderer/WaterCreatures.h
@@ -2,6 +2,7 @@
class CObject;
+/*
enum eFishSlotState {
WATER_CREATURE_INIT = 0,
WATER_CREATURE_ACTIVE,
@@ -46,4 +47,4 @@ struct WaterCreatureProperties {
float fLevel;
float fUnknown; //unused
float fWaterDepth;
-}; \ No newline at end of file
+};*/ \ No newline at end of file
diff --git a/src/renderer/WaterLevel.cpp b/src/renderer/WaterLevel.cpp
index dee60d66..1aa63697 100644
--- a/src/renderer/WaterLevel.cpp
+++ b/src/renderer/WaterLevel.cpp
@@ -374,7 +374,7 @@ CWaterLevel::CreateWavyAtomic()
{
wavyMaterial = RpMaterialCreate();
RpMaterialSetTexture(wavyMaterial, gpWaterTex);
- RwRGBA watercolor = { 255, 255, 255, 192 };
+ RwRGBA watercolor = { 255, 255, 255, 255 /*192*/ };
RpMaterialSetColor(wavyMaterial, &watercolor);
}
@@ -1176,13 +1176,13 @@ CWaterLevel::RenderWater()
if ( WavesCalculatedThisFrame )
{
RenderSeaBirds();
- RenderShipsOnHorizon();
- CParticle::HandleShipsAtHorizonStuff();
- HandleBeachToysStuff();
+ //RenderShipsOnHorizon();
+ //CParticle::HandleShipsAtHorizonStuff();
+ //HandleBeachToysStuff();
}
- if ( _bSeaLife )
- HandleSeaLifeForms();
+ //if ( _bSeaLife )
+ // HandleSeaLifeForms();
DefinedState();
}
@@ -1227,7 +1227,7 @@ CWaterLevel::RenderTransparentWater(void)
colorTrans.red = CTimeCycle::GetWaterRed();
colorTrans.green = CTimeCycle::GetWaterGreen();
colorTrans.blue = CTimeCycle::GetWaterBlue();
- colorTrans.alpha = CTimeCycle::GetWaterAlpha();
+ colorTrans.alpha = 255; //CTimeCycle::GetWaterAlpha();
TempBufferVerticesStored = 0;
TempBufferIndicesStored = 0;
@@ -1676,7 +1676,6 @@ void
CWaterLevel::RenderOneWavySector(float fX, float fY, float fZ, RwRGBA const &color, bool bDontRender)
{
CVector vecSectorPos(fX + (SMALL_SECTOR_SIZE/2), fY + (SMALL_SECTOR_SIZE/2), fZ + 2.0f);
-
if ( COcclusion::IsAABoxOccluded(vecSectorPos, SMALL_SECTOR_SIZE, SMALL_SECTOR_SIZE, 4.0f) )
return;
@@ -1815,6 +1814,7 @@ CWaterLevel::RenderWavyMask(float fX, float fY, float fZ,
int32 nCamDirX, int32 nCamDirY, RwRGBA const&color)
#endif
{
+return; // LCS
#ifndef PC_WATER
bool bRender = true;
if (m_nRenderWaterLayers != 0 && m_nRenderWaterLayers != 2 && m_nRenderWaterLayers != 3)
@@ -2531,7 +2531,7 @@ CWaterLevel::RenderBoatWakes(void)
CBoat::FillBoatList();
- float fWakeZ = 5.97f;
+ float fWakeZ = 0.0f;//5.97f;
float fWakeLifeTimeMult = 0.01f / CBoat::WAKE_LIFETIME;
for ( int32 idx = 0; idx < ARRAY_SIZE(CBoat::apFrameWakeGeneratingBoats); idx++ )
@@ -3110,6 +3110,7 @@ CWaterLevel::RenderShipsOnHorizon()
}
}
+/*
void
CWaterLevel::HandleSeaLifeForms()
{
@@ -3150,7 +3151,7 @@ CWaterLevel::HandleSeaLifeForms()
}
CWaterCreatures::UpdateAll();
-}
+}*/
void
CWaterLevel::HandleBeachToysStuff(void)
diff --git a/src/renderer/WaterLevel.h b/src/renderer/WaterLevel.h
index 6d6614d8..d12fb9f6 100644
--- a/src/renderer/WaterLevel.h
+++ b/src/renderer/WaterLevel.h
@@ -1,6 +1,6 @@
#pragma once
-#define WATER_X_OFFSET (400.0f)
+#define WATER_X_OFFSET (0.0f)
#define WATER_Z_OFFSET (0.5f)
diff --git a/src/renderer/Weather.cpp b/src/renderer/Weather.cpp
index 9f925a8c..7358654c 100644
--- a/src/renderer/Weather.cpp
+++ b/src/renderer/Weather.cpp
@@ -49,6 +49,11 @@ float CWeather::WindClipped;
float CWeather::TrafficLightBrightness;
bool CWeather::bScriptsForceRain;
+bool CWeather::Stored_StateStored;
+float CWeather::Stored_InterpolationValue;
+int16 CWeather::Stored_OldWeatherType;
+int16 CWeather::Stored_NewWeatherType;
+float CWeather::Stored_Rain;
tRainStreak Streaks[NUM_RAIN_STREAKS];
@@ -323,6 +328,7 @@ void CWeather::Update(void)
void CWeather::AddHeatHaze()
{
+ /*
if(TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN ||
TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED)
return;
@@ -334,6 +340,7 @@ void CWeather::AddHeatHaze()
pos.y = CGeneral::GetRandomNumberInRange(SCREEN_HEIGHT*0.4f, SCREEN_HEIGHT*0.9f);
pos.z = 100.0f;
CParticle::AddParticle(PARTICLE_HEATHAZE_IN_DIST, pos, CVector(0.0f, 0.0f, 0.0f));
+ */
}
void CWeather::AddBeastie()
@@ -646,6 +653,26 @@ void CWeather::RenderRainStreaks(void)
TempBufferIndicesStored = 0;
}
+void CWeather::StoreWeatherState()
+{
+ Stored_StateStored = true;
+ Stored_InterpolationValue = InterpolationValue;
+ Stored_Rain = Rain;
+ Stored_NewWeatherType = NewWeatherType;
+ Stored_OldWeatherType = OldWeatherType;
+}
+
+void CWeather::RestoreWeatherState()
+{
+#ifdef FIX_BUGS // it's not used anyway though
+ Stored_StateStored = false;
+#endif
+ InterpolationValue = Stored_InterpolationValue;
+ Rain = Stored_Rain;
+ NewWeatherType = Stored_NewWeatherType;
+ OldWeatherType = Stored_OldWeatherType;
+}
+
#ifdef SECUROM
void CWeather::ForceHurricaneWeather()
{
diff --git a/src/renderer/Weather.h b/src/renderer/Weather.h
index bda57d55..0e7cf9bd 100644
--- a/src/renderer/Weather.h
+++ b/src/renderer/Weather.h
@@ -42,6 +42,11 @@ public:
static float TrafficLightBrightness;
static bool bScriptsForceRain;
+ static bool Stored_StateStored;
+ static float Stored_InterpolationValue;
+ static int16 Stored_OldWeatherType;
+ static int16 Stored_NewWeatherType;
+ static float Stored_Rain;
static void RenderRainStreaks(void);
static void Update(void);
@@ -57,6 +62,8 @@ public:
static void AddBeastie();
static void ForceHurricaneWeather();
+ static void StoreWeatherState();
+ static void RestoreWeatherState();
};
enum {
diff --git a/src/rw/Lights.cpp b/src/rw/Lights.cpp
index 772e1961..5f8ba823 100644
--- a/src/rw/Lights.cpp
+++ b/src/rw/Lights.cpp
@@ -24,12 +24,7 @@ RwRGBAReal DirectionalLightColourForFrame;
RwRGBAReal AmbientLightColour;
RwRGBAReal DirectionalLightColour;
-#ifdef EXTENDED_COLOURFILTER
-#include "postfx.h"
-#define USEBLURCOLORS CPostFX::UseBlurColours()
-#else
-#define USEBLURCOLORS CMBlur::BlurOn
-#endif
+#define USEBLURCOLORS true // actually CMBlur::BlurOn, but that's always supposed to be on
void
SetLightsWithTimeOfDayColour(RpWorld *)
diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp
index 25cd2eef..8ad57fa1 100644
--- a/src/rw/RwHelper.cpp
+++ b/src/rw/RwHelper.cpp
@@ -19,7 +19,7 @@ bool gPS2alphaTest = true;
#else
bool gPS2alphaTest = false;
#endif
-bool gBackfaceCulling = true;
+bool gBackfaceCulling = false; // can we ever enable this in LCS even?
#if !defined(FINAL) || defined(DEBUGMENU)
static bool charsetOpen;
@@ -96,6 +96,7 @@ DefinedState(void)
#endif
}
+//LCS: remove this
void
SetCullMode(uint32 mode)
{
diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp
index 1f96180b..ddb178e2 100644
--- a/src/rw/TexRead.cpp
+++ b/src/rw/TexRead.cpp
@@ -321,11 +321,7 @@ ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255));
CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), SCREEN_SCALE_FROM_RIGHT(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(64, 64, 64, 255));
-#ifdef FIX_BUGS
- CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(255, 150, 225, 255));
-#else
- CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(255, 217, 106, 255));
-#endif
+ CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(97, 194, 247, 255));
CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(120.0f), SCREEN_SCALE_Y(150.0f), SCREEN_SCALE_FROM_RIGHT(120.0f), SCREEN_HEIGHT - SCREEN_SCALE_Y(220.0f)), CRGBA(50, 50, 50, 210));
CFont::SetBackgroundOff();
@@ -334,11 +330,7 @@ ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
CFont::SetCentreOff();
CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f));
CFont::SetJustifyOff();
-#ifdef FIX_BUGS
- CFont::SetColor(CRGBA(255, 150, 225, 255));
-#else
- CFont::SetColor(CRGBA(255, 217, 106, 255));
-#endif
+ CFont::SetColor(CRGBA(115, 173, 216, 255));
CFont::SetBackGroundOnlyTextOff();
CFont::SetFontStyle(FONT_STANDARD);
CFont::PrintString(SCREEN_SCALE_X(170.0f), SCREEN_SCALE_Y(160.0f), TheText.Get(text));
diff --git a/src/rw/TxdStore.cpp b/src/rw/TxdStore.cpp
index 0bd29718..b7936bcf 100644
--- a/src/rw/TxdStore.cpp
+++ b/src/rw/TxdStore.cpp
@@ -1,5 +1,7 @@
#include "common.h"
+#include "main.h"
+#include "smallHeap.h"
#include "templates.h"
#include "General.h"
#include "Streaming.h"
@@ -9,13 +11,19 @@
CPool<TxdDef,TxdDef> *CTxdStore::ms_pTxdPool;
RwTexDictionary *CTxdStore::ms_pStoredTxd;
+// LCS: file done except unused:
+// CTexListStore::RemoveTexListChunk(int)
+// CTexListStore::validateRefs(void)
+// CTexListStore::Write(base::cRelocatableChunkWriter &)
+
void
CTxdStore::Initialise(void)
{
- if(ms_pTxdPool == nil)
+ if(gMakeResources && ms_pTxdPool == nil)
ms_pTxdPool = new CPool<TxdDef,TxdDef>(TXDSTORESIZE, "TexDictionary");
}
+// removed in LCS but we should probably keep it
void
CTxdStore::Shutdown(void)
{
@@ -23,6 +31,7 @@ CTxdStore::Shutdown(void)
delete ms_pTxdPool;
}
+// removed in LCS but we should probably keep it
void
CTxdStore::GameShutdown(void)
{
@@ -42,6 +51,7 @@ CTxdStore::AddTxdSlot(const char *name)
assert(def);
def->texDict = nil;
def->refCount = 0;
+ def->refCountGu = 0;
strcpy(def->name, name);
return ms_pTxdPool->GetJustIndex(def);
}
@@ -95,7 +105,11 @@ CTxdStore::SetCurrentTxd(int slot)
void
CTxdStore::Create(int slot)
{
- GetSlot(slot)->texDict = RwTexDictionaryCreate();
+ TxdDef *def = GetSlot(slot);
+ def->texDict = RwTexDictionaryCreate();
+ // LCS: mobile sets the txd name here, but txds don't really have names
+ def->refCount = 0;
+ def->refCountGu = 0;
}
int
@@ -111,6 +125,20 @@ CTxdStore::AddRef(int slot)
}
void
+CTxdStore::AddRefEvenIfNotInMemory(int slot)
+{
+ GetSlot(slot)->refCount++;
+}
+
+void
+CTxdStore::AddRefGu(int slot)
+{
+ TxdDef *def = GetSlot(slot);
+ def->refCount++;
+ def->refCountGu++;
+}
+
+void
CTxdStore::RemoveRef(int slot)
{
if(--GetSlot(slot)->refCount <= 0)
@@ -118,6 +146,15 @@ CTxdStore::RemoveRef(int slot)
}
void
+CTxdStore::RemoveRefGu(int slot)
+{
+ TxdDef *def = GetSlot(slot);
+ def->refCount--;
+ if(gUseChunkFiles)
+ def->refCountGu--;
+}
+
+void
CTxdStore::RemoveRefWithoutDelete(int slot)
{
GetSlot(slot)->refCount--;
@@ -128,15 +165,32 @@ CTxdStore::LoadTxd(int slot, RwStream *stream)
{
TxdDef *def = GetSlot(slot);
- if(RwStreamFindChunk(stream, rwID_TEXDICTIONARY, nil, nil)){
- def->texDict = RwTexDictionaryGtaStreamRead(stream);
- return def->texDict != nil;
+ if(stream){
+ if(RwStreamFindChunk(stream, rwID_TEXDICTIONARY, nil, nil)){
+ def->texDict = RwTexDictionaryGtaStreamRead(stream);
+ return def->texDict != nil;
+ }
+ }else{
+ // TODO(LCS)? fall back reading from file
}
printf("Failed to load TXD\n");
return false;
}
bool
+CTxdStore::LoadTxd(int slot, void *data, void *chunk)
+{
+ TxdDef *def = GetSlot(slot);
+ def->texDict = (RwTexDictionary*)data;
+ if(strncasecmp(def->name, "radar", 5) == 0){
+ def->refCount = 0;
+ def->refCountGu = 0;
+ }
+ CStreaming::RegisterPointer(&def->texDict, 3, true);
+ return def->texDict != nil;
+}
+
+bool
CTxdStore::LoadTxd(int slot, const char *filename)
{
RwStream *stream;
@@ -152,6 +206,7 @@ CTxdStore::LoadTxd(int slot, const char *filename)
return ret;
}
+// removed in LCS but we should probably keep it
bool
CTxdStore::StartLoadTxd(int slot, RwStream *stream)
{
@@ -165,6 +220,7 @@ CTxdStore::StartLoadTxd(int slot, RwStream *stream)
}
}
+// removed in LCS but we should probably keep it
bool
CTxdStore::FinishLoadTxd(int slot, RwStream *stream)
{
@@ -174,10 +230,31 @@ CTxdStore::FinishLoadTxd(int slot, RwStream *stream)
}
void
-CTxdStore::RemoveTxd(int slot)
+CTxdStore::RemoveTxd(int slot, bool notChunk)
{
TxdDef *def = GetSlot(slot);
- if(def->texDict)
- RwTexDictionaryDestroy(def->texDict);
+ if(def->texDict){
+ if(!gUseChunkFiles || notChunk)
+ RwTexDictionaryDestroy(def->texDict);
+ else{
+ // TODO? Rsl3D specific: RslTextureDestroyDispList for all textures
+ CStreaming::UnregisterPointer(&def->texDict, 3);
+ cSmallHeap::msInstance.Free(def->texDict);
+ }
+ }
def->texDict = nil;
+ def->refCount = 0;
+ def->refCountGu = 0;
+}
+
+void
+CTxdStore::Load(RwTexDictionary *stored, CPool<TxdDef> *pool)
+{
+ ms_pTxdPool = pool;
+ ms_pStoredTxd = stored;
+ for(int i = 0; i < TXDSTORESIZE; i++){
+ TxdDef *def = GetSlot(i);
+ if(def)
+ def->refCount = def->texDict != nil;
+ }
}
diff --git a/src/rw/TxdStore.h b/src/rw/TxdStore.h
index 937fd1b7..31fcf87f 100644
--- a/src/rw/TxdStore.h
+++ b/src/rw/TxdStore.h
@@ -4,7 +4,8 @@
struct TxdDef {
RwTexDictionary *texDict;
- int refCount;
+ int16 refCount;
+ int16 refCountGu;
char name[20];
};
@@ -26,13 +27,19 @@ public:
static void Create(int slot);
static int GetNumRefs(int slot);
static void AddRef(int slot);
+ static void AddRefEvenIfNotInMemory(int slot);
+ static void AddRefGu(int slot);
static void RemoveRef(int slot);
+ static void RemoveRefGu(int slot);
static void RemoveRefWithoutDelete(int slot);
static bool LoadTxd(int slot, RwStream *stream);
+ static bool LoadTxd(int slot, void *data, void *chunk);
static bool LoadTxd(int slot, const char *filename);
static bool StartLoadTxd(int slot, RwStream *stream);
static bool FinishLoadTxd(int slot, RwStream *stream);
- static void RemoveTxd(int slot);
+ static void RemoveTxd(int slot, bool notChunk = false);
+
+ static void Load(RwTexDictionary *stored, CPool<TxdDef> *pool);
static TxdDef *GetSlot(int slot) {
assert(slot >= 0);
diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp
index 01f2c8e7..c84c7d8b 100644
--- a/src/rw/VisibilityPlugins.cpp
+++ b/src/rw/VisibilityPlugins.cpp
@@ -14,10 +14,13 @@
#include "custompipes.h"
#include "MemoryHeap.h"
+//--LCS: file done
+// LCS: no transparent water in LCS so no need for alpha boat and alpha underwater lists
+
CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaList;
-CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaBoatAtomicList;
+//CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaBoatAtomicList;
CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaEntityList;
-CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaUnderwaterEntityList;
+//CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaUnderwaterEntityList;
#ifdef NEW_RENDERER
CLinkList<CVisibilityPlugins::AlphaObjectInfo> CVisibilityPlugins::m_alphaBuildingList;
#endif
@@ -34,7 +37,7 @@ float CVisibilityPlugins::ms_vehicleLod1Dist;
float CVisibilityPlugins::ms_vehicleFadeDist;
float CVisibilityPlugins::ms_bigVehicleLod0Dist;
float CVisibilityPlugins::ms_bigVehicleLod1Dist;
-float CVisibilityPlugins::ms_pedLod1Dist;
+float CVisibilityPlugins::ms_pedLodDist;
float CVisibilityPlugins::ms_pedFadeDist;
#define RENDERCALLBACK AtomicDefaultRenderCallBack
@@ -46,9 +49,9 @@ CVisibilityPlugins::Initialise(void)
m_alphaList.head.item.sort = 0.0f;
m_alphaList.tail.item.sort = 100000000.0f;
- m_alphaBoatAtomicList.Init(NUMBOATALPHALIST);
- m_alphaBoatAtomicList.head.item.sort = 0.0f;
- m_alphaBoatAtomicList.tail.item.sort = 100000000.0f;
+// m_alphaBoatAtomicList.Init(NUMBOATALPHALIST);
+// m_alphaBoatAtomicList.head.item.sort = 0.0f;
+// m_alphaBoatAtomicList.tail.item.sort = 100000000.0f;
#ifdef ASPECT_RATIO_SCALE
// default 150 is not enough for bigger FOVs
@@ -59,24 +62,44 @@ CVisibilityPlugins::Initialise(void)
m_alphaEntityList.head.item.sort = 0.0f;
m_alphaEntityList.tail.item.sort = 100000000.0f;
- m_alphaUnderwaterEntityList.Init(NUMALPHAUNTERWATERENTITYLIST);
- m_alphaUnderwaterEntityList.head.item.sort = 0.0f;
- m_alphaUnderwaterEntityList.tail.item.sort = 100000000.0f;
+// m_alphaUnderwaterEntityList.Init(NUMALPHAUNTERWATERENTITYLIST);
+// m_alphaUnderwaterEntityList.head.item.sort = 0.0f;
+// m_alphaUnderwaterEntityList.tail.item.sort = 100000000.0f;
#ifdef NEW_RENDERER
m_alphaBuildingList.Init(NUMALPHAENTITYLIST);
m_alphaBuildingList.head.item.sort = 0.0f;
m_alphaBuildingList.tail.item.sort = 100000000.0f;
#endif
+
+ base::RegisterRelocatableChunkFunc((void*)RENDERCALLBACK);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleReallyLowDetailCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleHiDetailCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleHiDetailAlphaCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderTrainHiDetailCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderTrainHiDetailAlphaCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderWheelAtomicCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleRotorAlphaCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleTailRotorAlphaCB);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleReallyLowDetailCB_BigVehicle);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleLowDetailCB_BigVehicle);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleHiDetailCB_BigVehicle);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleLowDetailAlphaCB_BigVehicle);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleHiDetailAlphaCB_BigVehicle);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleHiDetailCB_Boat);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleLoDetailCB_Boat);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleHiDetailCB_Boat_Far);
+ base::RegisterRelocatableChunkFunc((void*)RenderVehicleLoDetailCB_Boat_Far);
+ base::RegisterRelocatableChunkFunc((void*)RenderPedCB);
}
void
CVisibilityPlugins::Shutdown(void)
{
m_alphaList.Shutdown();
- m_alphaBoatAtomicList.Shutdown();
+// m_alphaBoatAtomicList.Shutdown();
m_alphaEntityList.Shutdown();
- m_alphaUnderwaterEntityList.Shutdown();
+// m_alphaUnderwaterEntityList.Shutdown();
#ifdef NEW_RENDERER
m_alphaBuildingList.Shutdown();
#endif
@@ -86,8 +109,8 @@ void
CVisibilityPlugins::InitAlphaEntityList(void)
{
m_alphaEntityList.Clear();
- m_alphaBoatAtomicList.Clear();
- m_alphaUnderwaterEntityList.Clear();
+// m_alphaBoatAtomicList.Clear();
+// m_alphaUnderwaterEntityList.Clear();
#ifdef NEW_RENDERER
m_alphaBuildingList.Clear();
#endif
@@ -104,11 +127,11 @@ CVisibilityPlugins::InsertEntityIntoSortedList(CEntity *e, float dist)
item.entity = e;
item.sort = dist;
#ifdef NEW_RENDERER
- if(gbNewRenderer && e->IsBuilding())
+ if(!gbPreviewCity && e->IsBuilding())
return !!m_alphaBuildingList.InsertSorted(item);
#endif
- if(e->bUnderwater && m_alphaUnderwaterEntityList.InsertSorted(item))
- return true;
+// if(e->bUnderwater && m_alphaUnderwaterEntityList.InsertSorted(item))
+// return true;
return !!m_alphaEntityList.InsertSorted(item);
}
@@ -127,6 +150,7 @@ CVisibilityPlugins::InsertAtomicIntoSortedList(RpAtomic *a, float dist)
return !!m_alphaList.InsertSorted(item);
}
+/*
bool
CVisibilityPlugins::InsertAtomicIntoBoatSortedList(RpAtomic *a, float dist)
{
@@ -135,9 +159,11 @@ CVisibilityPlugins::InsertAtomicIntoBoatSortedList(RpAtomic *a, float dist)
item.sort = dist;
return !!m_alphaBoatAtomicList.InsertSorted(item);
}
+*/
// can't increase this yet unfortunately...
// probably have to fix fading for this so material alpha isn't overwritten
+// LCS: VIS_DISTANCE_ALPHA will probably take care of this
#define VEHICLE_LODDIST_MULTIPLIER (TheCamera.GenerationDistMultiplier)
void
@@ -157,7 +183,7 @@ CVisibilityPlugins::SetRenderWareCamera(RwCamera *camera)
ms_vehicleFadeDist = sq(100.0f * VEHICLE_LODDIST_MULTIPLIER);
ms_bigVehicleLod0Dist = sq(60.0f * VEHICLE_LODDIST_MULTIPLIER);
ms_bigVehicleLod1Dist = sq(150.0f * VEHICLE_LODDIST_MULTIPLIER);
- ms_pedLod1Dist = sq(60.0f * TheCamera.LODDistMultiplier);
+ ms_pedLodDist = sq(70.0f * TheCamera.LODDistMultiplier);
ms_pedFadeDist = sq(70.0f * TheCamera.LODDistMultiplier);
}
@@ -173,7 +199,10 @@ CVisibilityPlugins::SetupVehicleVariables(RpClump *vehicle)
RwV3d distToCam;
RwV3dSub(&distToCam, ms_pCameraPosn, &RwFrameGetMatrix(RpClumpGetFrame(vehicle))->pos);
float dist2d = Sqrt(SQR(distToCam.x) + SQR(distToCam.y));
- PitchToCamera = Atan2(distToCam.z, dist2d);
+ if(distToCam.z == 0.0f && dist2d == 0.0f)
+ PitchToCamera = 0.0f;
+ else
+ PitchToCamera = Atan2(distToCam.z, dist2d);
}
RpMaterial*
@@ -204,6 +233,8 @@ CVisibilityPlugins::RenderAlphaAtomics(void)
RenderAtomicList(m_alphaList);
}
+/*
+//LCS: removed
void
CVisibilityPlugins::RenderBoatAlphaAtomics(void)
{
@@ -211,6 +242,7 @@ CVisibilityPlugins::RenderBoatAlphaAtomics(void)
RenderAtomicList(m_alphaBoatAtomicList);
SetCullMode(rwCULLMODECULLBACK);
}
+*/
void
CVisibilityPlugins::RenderFadingEntities(CLinkList<AlphaObjectInfo> &list)
@@ -229,6 +261,8 @@ CVisibilityPlugins::RenderFadingEntities(CLinkList<AlphaObjectInfo> &list)
if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite)
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE);
+#if defined(FIX_BUGS) && !defined(VIS_DISTANCE_ALPHA)
+ //LCS: removed, but that's dumb cause it breaks distance fading
if(e->bDistanceFade){
DeActivateDirectional();
SetAmbientColours();
@@ -238,7 +272,18 @@ CVisibilityPlugins::RenderFadingEntities(CLinkList<AlphaObjectInfo> &list)
POP_RENDERGROUP();
e->bImBeingRendered = false;
}else
+#endif
+ {
+#ifdef VIS_DISTANCE_ALPHA
+ // BUG: we don't even know if this is a clump
+ if(GetClumpAlpha((RpClump*)e->m_rwObject) != 255 ||
+ GetObjectDistanceAlpha(e->m_rwObject) != 255)
+ ; // set blend render states
+ else
+ ; // set default render states
+#endif
CRenderer::RenderOneNonRoad(e);
+ }
if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite)
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
@@ -249,13 +294,13 @@ void
CVisibilityPlugins::RenderFadingEntities(void)
{
RenderFadingEntities(m_alphaEntityList);
- RenderBoatAlphaAtomics();
+// RenderBoatAlphaAtomics();
}
void
CVisibilityPlugins::RenderFadingUnderwaterEntities(void)
{
- RenderFadingEntities(m_alphaUnderwaterEntityList);
+// RenderFadingEntities(m_alphaUnderwaterEntityList);
}
RpAtomic*
@@ -267,7 +312,12 @@ CVisibilityPlugins::RenderWheelAtomicCB(RpAtomic *atomic)
mi = GetAtomicModelInfo(atomic);
len = Sqrt(DistToCameraSq);
+#ifdef FIX_BUGS
+ len *= 0.5f; // HACK HACK, LOD wheels look shite
lodatm = mi->GetAtomicFromDistance(len * TheCamera.LODDistMultiplier / VEHICLE_LODDIST_MULTIPLIER);
+#else
+ lodatm = mi->GetAtomicFromDistance(len);
+#endif
if(lodatm){
if(RpAtomicGetGeometry(lodatm) != RpAtomicGetGeometry(atomic))
RpAtomicSetGeometry(atomic, RpAtomicGetGeometry(lodatm), rpATOMICSAMEBOUNDINGSPHERE);
@@ -308,6 +358,8 @@ CVisibilityPlugins::RenderAlphaAtomic(RpAtomic *atomic, int alpha)
return atomic;
}
+/*
+//LCS: removed
RpAtomic*
CVisibilityPlugins::RenderWeaponCB(RpAtomic *atomic)
{
@@ -325,7 +377,9 @@ CVisibilityPlugins::RenderWeaponCB(RpAtomic *atomic)
RENDERCALLBACK(atomic);
return atomic;
}
+*/
+//LCS: removed, but we want it
RpAtomic*
CVisibilityPlugins::RenderFadingAtomic(RpAtomic *atomic, float camdist)
{
@@ -364,7 +418,6 @@ CVisibilityPlugins::RenderFadingAtomic(RpAtomic *atomic, float camdist)
}
-
RpAtomic*
CVisibilityPlugins::RenderVehicleHiDetailCB(RpAtomic *atomic)
{
@@ -381,6 +434,10 @@ CVisibilityPlugins::RenderVehicleHiDetailCB(RpAtomic *atomic)
if(dot > 0.0f && ((flags & ATOMIC_FLAG_ANGLECULL) || 0.1f*DistToCameraSq < dot*dot))
return atomic;
}
+#ifdef VIS_DISTANCE_ALPHA
+ if(GetObjectDistanceAlpha((RwObject*)RpAtomicGetClump(atomic)) == 255 ||
+ !InsertAtomicIntoSortedList(atomic, DistToCameraSq))
+#endif
RENDERCALLBACK(atomic);
}
return atomic;
@@ -466,6 +523,16 @@ CVisibilityPlugins::RenderVehicleHiDetailCB_Boat(RpAtomic *atomic)
}
RpAtomic*
+CVisibilityPlugins::RenderVehicleHiDetailCB_Boat_Far(RpAtomic *atomic)
+{
+ if(DistToCameraSq < ms_bigVehicleLod1Dist)
+ RENDERCALLBACK(atomic);
+ return atomic;
+}
+
+/*
+//LCS: removed
+RpAtomic*
CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_Boat(RpAtomic *atomic)
{
if(DistToCameraSq < ms_vehicleLod0Dist){
@@ -477,6 +544,7 @@ CVisibilityPlugins::RenderVehicleHiDetailAlphaCB_Boat(RpAtomic *atomic)
}
return atomic;
}
+*/
RpAtomic*
CVisibilityPlugins::RenderVehicleLoDetailCB_Boat(RpAtomic *atomic)
@@ -487,9 +555,26 @@ CVisibilityPlugins::RenderVehicleLoDetailCB_Boat(RpAtomic *atomic)
clump = RpAtomicGetClump(atomic);
if(DistToCameraSq >= ms_vehicleLod0Dist){
alpha = GetClumpAlpha(clump);
- if(alpha == 255)
- RENDERCALLBACK(atomic);
- else
+// if(alpha == 255)
+// RENDERCALLBACK(atomic);
+// else
+ RenderAlphaAtomic(atomic, alpha);
+ }
+ return atomic;
+}
+
+RpAtomic*
+CVisibilityPlugins::RenderVehicleLoDetailCB_Boat_Far(RpAtomic *atomic)
+{
+ RpClump *clump;
+ int32 alpha;
+
+ clump = RpAtomicGetClump(atomic);
+ if(DistToCameraSq >= ms_bigVehicleLod1Dist){
+ alpha = GetClumpAlpha(clump);
+// if(alpha == 255)
+// RENDERCALLBACK(atomic);
+// else
RenderAlphaAtomic(atomic, alpha);
}
return atomic;
@@ -549,9 +634,9 @@ CVisibilityPlugins::RenderVehicleReallyLowDetailCB(RpAtomic *atomic)
clump = RpAtomicGetClump(atomic);
if(DistToCameraSq >= ms_vehicleLod0Dist){
alpha = GetClumpAlpha(clump);
- if(alpha == 255)
- RENDERCALLBACK(atomic);
- else
+// if(alpha == 255)
+// RENDERCALLBACK(atomic);
+// else
RenderAlphaAtomic(atomic, alpha);
}
return atomic;
@@ -649,6 +734,7 @@ CVisibilityPlugins::RenderVehicleTailRotorAlphaCB(RpAtomic *atomic)
return atomic;
}
+/*
RpAtomic*
CVisibilityPlugins::RenderPlayerCB(RpAtomic *atomic)
{
@@ -657,6 +743,7 @@ CVisibilityPlugins::RenderPlayerCB(RpAtomic *atomic)
RENDERCALLBACK(atomic);
return atomic;
}
+*/
RpAtomic*
CVisibilityPlugins::RenderPedCB(RpAtomic *atomic)
@@ -667,11 +754,11 @@ CVisibilityPlugins::RenderPedCB(RpAtomic *atomic)
clump = RpAtomicGetClump(atomic);
dist = GetDistanceSquaredFromCamera(RpClumpGetFrame(clump));
- if(dist < ms_pedLod1Dist){
+ if(dist < ms_pedLodDist){
alpha = GetClumpAlpha(clump);
- if(alpha == 255)
- RENDERCALLBACK(atomic);
- else
+// if(alpha == 255)
+// RENDERCALLBACK(atomic);
+// else
RenderAlphaAtomic(atomic, alpha);
}
return atomic;
@@ -744,16 +831,7 @@ CVisibilityPlugins::DefaultVisibilityCB(RpClump *clump)
bool
CVisibilityPlugins::FrustumSphereCB(RpClump *clump)
{
- RwSphere sphere;
- RwFrame *frame = RpClumpGetFrame(clump);
-
- CClumpModelInfo *modelInfo = (CClumpModelInfo*)GetFrameHierarchyId(frame);
- sphere.radius = modelInfo->GetColModel()->boundingSphere.radius;
- sphere.center.x = modelInfo->GetColModel()->boundingSphere.center.x;
- sphere.center.y = modelInfo->GetColModel()->boundingSphere.center.y;
- sphere.center.z = modelInfo->GetColModel()->boundingSphere.center.z;
- RwV3dTransformPoints(&sphere.center, &sphere.center, 1, RwFrameGetLTM(frame));
- return RwCameraFrustumTestSphere(ms_pCamera, &sphere) != rwSPHEREOUTSIDE;
+ return true;
}
bool
@@ -812,9 +890,9 @@ CVisibilityPlugins::PluginAttach(void)
return ms_atomicPluginOffset != -1 && ms_clumpPluginOffset != -1;
}
-#define ATOMICEXT(o) (RWPLUGINOFFSET(AtomicExt, o, ms_atomicPluginOffset))
-#define FRAMEEXT(o) (RWPLUGINOFFSET(FrameExt, o, ms_framePluginOffset))
-#define CLUMPEXT(o) (RWPLUGINOFFSET(ClumpExt, o, ms_clumpPluginOffset))
+#define ATOMICEXT(o) (RWPLUGINOFFSET(CVisibilityPlugins::AtomicExt, o, CVisibilityPlugins::ms_atomicPluginOffset))
+#define FRAMEEXT(o) (RWPLUGINOFFSET(CVisibilityPlugins::FrameExt, o, CVisibilityPlugins::ms_framePluginOffset))
+#define CLUMPEXT(o) (RWPLUGINOFFSET(CVisibilityPlugins::ClumpExt, o, CVisibilityPlugins::ms_clumpPluginOffset))
//
// Atomic
@@ -823,7 +901,13 @@ CVisibilityPlugins::PluginAttach(void)
void*
CVisibilityPlugins::AtomicConstructor(void *object, int32, int32)
{
- ATOMICEXT(object)->modelInfo = nil;
+ ATOMICEXT(object)->modelId = -1;
+ ATOMICEXT(object)->flags = 0;
+#ifdef VIS_DISTANCE_ALPHA
+ // This seems strange, want to start out invisible before fading in
+ // but maybe it's set elsewhere?
+ ATOMICEXT(object)->distanceAlpha = 255;
+#endif
return object;
}
@@ -844,14 +928,29 @@ void
CVisibilityPlugins::SetAtomicModelInfo(RpAtomic *atomic,
CSimpleModelInfo *modelInfo)
{
- AtomicExt *ext = ATOMICEXT(atomic);
- ext->modelInfo = modelInfo;
+ int id;
+
+ for(id = 0; id < MODELINFOSIZE; id++)
+ if(CModelInfo::GetModelInfo(id) == modelInfo){
+ ATOMICEXT(atomic)->modelId = id;
+ return;
+ }
+ ATOMICEXT(atomic)->modelId = -1;
+}
+
+void
+CVisibilityPlugins::SetAtomicModelIndex(RpAtomic *atomic, int modelId)
+{
+ ATOMICEXT(atomic)->modelId = modelId;
}
CSimpleModelInfo*
CVisibilityPlugins::GetAtomicModelInfo(RpAtomic *atomic)
{
- return ATOMICEXT(atomic)->modelInfo;
+ int id = ATOMICEXT(atomic)->modelId;
+ if(id == -1)
+ return nil;
+ return (CSimpleModelInfo*)CModelInfo::GetModelInfo(id);
}
void
@@ -996,3 +1095,58 @@ CVisibilityPlugins::IsClumpVisible(RpClump *clump)
{
return CLUMPEXT(clump)->visibilityCB(clump);
}
+
+#ifdef VIS_DISTANCE_ALPHA
+// LCS walks the atomic list manually but we want to be compatible with both RW and librw,
+// so this code isn't quite original and uses callbacks instead.
+static RpAtomic*
+SetAtomicDistanceAlphaCB(RpAtomic *atomic, void *data)
+{
+ ATOMICEXT(atomic)->distanceAlpha = *(int*)data;
+ return atomic;
+}
+void
+CVisibilityPlugins::SetClumpDistanceAlpha(RpClump *clump, int alpha)
+{
+ RpClumpForAllAtomics(clump, SetAtomicDistanceAlphaCB, &alpha);
+}
+
+static RpAtomic*
+GetAtomicDistanceAlphaCB(RpAtomic *atomic, void *data)
+{
+ *(int*)data = ATOMICEXT(atomic)->distanceAlpha;
+ return atomic;
+}
+int
+CVisibilityPlugins::GetClumpDistanceAlpha(RpClump *clump)
+{
+ int alpha = 255;
+ RpClumpForAllAtomics(clump, GetAtomicDistanceAlphaCB, &alpha);
+ return alpha;
+}
+
+
+
+
+void
+CVisibilityPlugins::SetObjectDistanceAlpha(RwObject *object, int alpha)
+{
+ if(object == nil)
+ return;
+ if(RwObjectGetType(object) == rpATOMIC)
+ ATOMICEXT(object)->distanceAlpha = alpha;
+ else
+ SetClumpDistanceAlpha((RpClump*)object, alpha);
+}
+
+int
+CVisibilityPlugins::GetObjectDistanceAlpha(RwObject *object)
+{
+ if(object == nil)
+ return 255;
+ if(RwObjectGetType(object) == rpATOMIC)
+ return ATOMICEXT(object)->distanceAlpha;
+ else
+ return GetClumpDistanceAlpha((RpClump*)object);
+}
+#endif
diff --git a/src/rw/VisibilityPlugins.h b/src/rw/VisibilityPlugins.h
index 90afc0f5..e8ff0735 100644
--- a/src/rw/VisibilityPlugins.h
+++ b/src/rw/VisibilityPlugins.h
@@ -21,9 +21,9 @@ public:
};
static CLinkList<AlphaObjectInfo> m_alphaList;
- static CLinkList<AlphaObjectInfo> m_alphaBoatAtomicList;
+ //static CLinkList<AlphaObjectInfo> m_alphaBoatAtomicList;
static CLinkList<AlphaObjectInfo> m_alphaEntityList;
- static CLinkList<AlphaObjectInfo> m_alphaUnderwaterEntityList;
+ //static CLinkList<AlphaObjectInfo> m_alphaUnderwaterEntityList;
#ifdef NEW_RENDERER
static CLinkList<AlphaObjectInfo> m_alphaBuildingList;
#endif
@@ -35,7 +35,7 @@ public:
static float ms_vehicleFadeDist;
static float ms_bigVehicleLod0Dist;
static float ms_bigVehicleLod1Dist;
- static float ms_pedLod1Dist;
+ static float ms_pedLodDist;
static float ms_pedFadeDist;
static void Initialise(void);
@@ -44,7 +44,7 @@ public:
static bool InsertEntityIntoSortedList(CEntity *e, float dist);
static void InitAlphaAtomicList(void);
static bool InsertAtomicIntoSortedList(RpAtomic *a, float dist);
- static bool InsertAtomicIntoBoatSortedList(RpAtomic *a, float dist);
+// static bool InsertAtomicIntoBoatSortedList(RpAtomic *a, float dist);
static void SetRenderWareCamera(RwCamera *camera);
static void SetupVehicleVariables(RpClump *vehicle);
@@ -52,7 +52,7 @@ public:
static RpAtomic *RenderWheelAtomicCB(RpAtomic *atomic);
static RpAtomic *RenderObjNormalAtomic(RpAtomic *atomic);
static RpAtomic *RenderAlphaAtomic(RpAtomic *atomic, int alpha);
- static RpAtomic *RenderWeaponCB(RpAtomic *atomic);
+// static RpAtomic *RenderWeaponCB(RpAtomic *atomic);
static RpAtomic *RenderFadingAtomic(RpAtomic *atm, float dist);
static RpAtomic *RenderVehicleHiDetailCB(RpAtomic *atomic);
@@ -60,8 +60,10 @@ public:
static RpAtomic *RenderVehicleHiDetailCB_BigVehicle(RpAtomic *atomic);
static RpAtomic *RenderVehicleHiDetailAlphaCB_BigVehicle(RpAtomic *atomic);
static RpAtomic *RenderVehicleHiDetailCB_Boat(RpAtomic *atomic);
- static RpAtomic *RenderVehicleHiDetailAlphaCB_Boat(RpAtomic *atomic);
+// static RpAtomic *RenderVehicleHiDetailAlphaCB_Boat(RpAtomic *atomic);
+ static RpAtomic *RenderVehicleHiDetailCB_Boat_Far(RpAtomic *atomic);
static RpAtomic *RenderVehicleLoDetailCB_Boat(RpAtomic *atomic);
+ static RpAtomic *RenderVehicleLoDetailCB_Boat_Far(RpAtomic *atomic);
static RpAtomic *RenderVehicleLowDetailCB_BigVehicle(RpAtomic *atomic);
static RpAtomic *RenderVehicleLowDetailAlphaCB_BigVehicle(RpAtomic *atomic);
static RpAtomic *RenderVehicleReallyLowDetailCB(RpAtomic *atomic);
@@ -71,12 +73,12 @@ public:
static RpAtomic *RenderVehicleRotorAlphaCB(RpAtomic *atomic);
static RpAtomic *RenderVehicleTailRotorAlphaCB(RpAtomic *atomic);
- static RpAtomic *RenderPlayerCB(RpAtomic *atomic);
+// static RpAtomic *RenderPlayerCB(RpAtomic *atomic);
static RpAtomic *RenderPedCB(RpAtomic *atomic); // for skinned models with only one clump
static void RenderAtomicList(CLinkList<AlphaObjectInfo> &list);
static void RenderAlphaAtomics(void);
- static void RenderBoatAlphaAtomics(void);
+// static void RenderBoatAlphaAtomics(void);
static void RenderFadingEntities(CLinkList<AlphaObjectInfo> &list);
static void RenderFadingEntities(void);
static void RenderFadingUnderwaterEntities(void);
@@ -96,12 +98,16 @@ public:
// RW Plugins
//
- union AtomicExt
+ struct AtomicExt
{
- CSimpleModelInfo *modelInfo; // used by SimpleModelInfo
- int flags; // used by ClumpModelInfo
+ int16 modelId; // used by SimpleModelInfo
+ uint16 flags; // used by ClumpModelInfo
+#ifdef VIS_DISTANCE_ALPHA
+ int distanceAlpha;
+#endif
};
static void SetAtomicModelInfo(RpAtomic*, CSimpleModelInfo*);
+ static void SetAtomicModelIndex(RpAtomic *atomic, int modelId);
static CSimpleModelInfo *GetAtomicModelInfo(RpAtomic *atomic);
static void SetAtomicFlag(RpAtomic*, int);
static void ClearAtomicFlag(RpAtomic*, int);
@@ -139,6 +145,8 @@ public:
static void SetClumpAlpha(RpClump*, int);
static int GetClumpAlpha(RpClump*);
static bool IsClumpVisible(RpClump*);
+ static void SetClumpDistanceAlpha(RpClump*, int);
+ static int GetClumpDistanceAlpha(RpClump*);
static void *ClumpConstructor(void *object, int32 offset, int32 len);
static void *ClumpDestructor(void *object, int32 offset, int32 len);
@@ -146,6 +154,11 @@ public:
int32 offset, int32 len);
static int32 ms_clumpPluginOffset;
+#ifdef VIS_DISTANCE_ALPHA
+ static void SetObjectDistanceAlpha(RwObject *object, int alpha);
+ static int GetObjectDistanceAlpha(RwObject *object);
+#endif
+
static bool PluginAttach(void);
};
diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp
index b68b805a..ccf1bec8 100644
--- a/src/save/GenericGameStorage.cpp
+++ b/src/save/GenericGameStorage.cpp
@@ -42,7 +42,7 @@
#include "Fluff.h"
#define BLOCK_COUNT 22
-#define SIZE_OF_SIMPLEVARS 0xE4
+#define SIZE_OF_SIMPLEVARS 0xE8
const uint32 SIZE_OF_ONE_GAME_IN_BYTES = 201729;
@@ -181,7 +181,7 @@ GenericSave(int file)
WriteDataToBufferPointer(buf, CClock::ms_nGameClockMinutes);
currPad = CPad::GetPad(0);
WriteDataToBufferPointer(buf, currPad->Mode);
- WriteDataToBufferPointer(buf, CTimer::m_snTimeInMilliseconds);
+ //WriteDataToBufferPointer(buf, CTimer::m_snTimeInMilliseconds);
WriteDataToBufferPointer(buf, CTimer::ms_fTimeScale);
WriteDataToBufferPointer(buf, CTimer::ms_fTimeStep);
WriteDataToBufferPointer(buf, CTimer::ms_fTimeStepNonClipped);
@@ -213,7 +213,7 @@ GenericSave(int file)
WriteDataToBufferPointer(buf, CTimeCycle::m_ExtraColourInter);
PopulateRadioStationPositionList();
WriteDataToBufferPointer(buf, RadioStationPosition);
- assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
+ //assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
// Save scripts, block is nested within the same block as simple vars for some reason
presize = buf;
@@ -228,28 +228,28 @@ GenericSave(int file)
totalSize = buf - work_buff;
// Save the rest
- WriteSaveDataBlock(CPools::SavePedPool, "PedPoolSize");
+ //WriteSaveDataBlock(CPools::SavePedPool, "PedPoolSize");
WriteSaveDataBlock(CGarages::Save, "GaragesSize");
- WriteSaveDataBlock(CGameLogic::Save, "GameLogicSize");
- WriteSaveDataBlock(CPools::SaveVehiclePool, "VehPoolSize");
- WriteSaveDataBlock(CPools::SaveObjectPool, "ObjectPoolSize");
- WriteSaveDataBlock(ThePaths.Save, "ThePathsSize");
- WriteSaveDataBlock(CCranes::Save, "CranesSize");
- WriteSaveDataBlock(CPickups::Save, "PickUpsSize");
- WriteSaveDataBlock(gPhoneInfo.Save, "PhoneInfoSize");
- WriteSaveDataBlock(CRestart::SaveAllRestartPoints, "RestartPointsBufferSize");
- WriteSaveDataBlock(CRadar::SaveAllRadarBlips, "RadarBlipsBufferSize");
- WriteSaveDataBlock(CTheZones::SaveAllZones, "AllZonesBufferSize");
- WriteSaveDataBlock(CGangs::SaveAllGangData, "AllGangDataSize");
- WriteSaveDataBlock(CTheCarGenerators::SaveAllCarGenerators, "AllCarGeneratorsSize");
- WriteSaveDataBlock(CParticleObject::SaveParticle, "ParticlesSize");
- WriteSaveDataBlock(cAudioScriptObject::SaveAllAudioScriptObjects, "AllAudioScriptObjectsSize");
- WriteSaveDataBlock(CScriptPaths::Save, "ScriptPathsSize");
+ //WriteSaveDataBlock(CGameLogic::Save, "GameLogicSize");
+ //WriteSaveDataBlock(CPools::SaveVehiclePool, "VehPoolSize");
+ //WriteSaveDataBlock(CPools::SaveObjectPool, "ObjectPoolSize");
+ //WriteSaveDataBlock(ThePaths.Save, "ThePathsSize");
+ //WriteSaveDataBlock(CCranes::Save, "CranesSize");
+ //WriteSaveDataBlock(CPickups::Save, "PickUpsSize");
+ //WriteSaveDataBlock(gPhoneInfo.Save, "PhoneInfoSize");
+ //WriteSaveDataBlock(CRestart::SaveAllRestartPoints, "RestartPointsBufferSize");
+ //WriteSaveDataBlock(CRadar::SaveAllRadarBlips, "RadarBlipsBufferSize");
+ //WriteSaveDataBlock(CTheZones::SaveAllZones, "AllZonesBufferSize");
+ //WriteSaveDataBlock(CGangs::SaveAllGangData, "AllGangDataSize");
+ //WriteSaveDataBlock(CTheCarGenerators::SaveAllCarGenerators, "AllCarGeneratorsSize");
+ //WriteSaveDataBlock(CParticleObject::SaveParticle, "ParticlesSize");
+ //WriteSaveDataBlock(cAudioScriptObject::SaveAllAudioScriptObjects, "AllAudioScriptObjectsSize");
+ //WriteSaveDataBlock(CScriptPaths::Save, "ScriptPathsSize");
WriteSaveDataBlock(CWorld::Players[CWorld::PlayerInFocus].SavePlayerInfo, "PlayerInfoSize");
WriteSaveDataBlock(CStats::SaveStats, "StatsSize");
- WriteSaveDataBlock(CSetPieces::Save, "SetPiecesSize");
- WriteSaveDataBlock(CStreaming::MemoryCardSave, "StreamingSize");
- WriteSaveDataBlock(CPedType::Save, "PedTypeSize");
+ //WriteSaveDataBlock(CSetPieces::Save, "SetPiecesSize");
+ //WriteSaveDataBlock(CStreaming::MemoryCardSave, "StreamingSize");
+ //WriteSaveDataBlock(CPedType::Save, "PedTypeSize");
// sure just write garbage data repeatedly ...
#ifndef THIS_IS_STUPID
@@ -318,7 +318,7 @@ GenericLoad()
ReadDataFromBufferPointer(buf, CClock::ms_nGameClockMinutes);
currPad = CPad::GetPad(0);
ReadDataFromBufferPointer(buf, currPad->Mode);
- ReadDataFromBufferPointer(buf, CTimer::m_snTimeInMilliseconds);
+ //ReadDataFromBufferPointer(buf, CTimer::m_snTimeInMilliseconds);
ReadDataFromBufferPointer(buf, CTimer::ms_fTimeScale);
ReadDataFromBufferPointer(buf, CTimer::ms_fTimeStep);
ReadDataFromBufferPointer(buf, CTimer::ms_fTimeStepNonClipped);
@@ -359,7 +359,7 @@ GenericLoad()
ReadDataFromBufferPointer(buf, CTimeCycle::m_bExtraColourOn);
ReadDataFromBufferPointer(buf, CTimeCycle::m_ExtraColourInter);
ReadDataFromBufferPointer(buf, RadioStationPosition);
- assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
+ //assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
#ifdef MISSION_REPLAY
WaitForSave = 0;
if (FrontEndMenuManager.m_nCurrSaveSlot == PAUSE_SAVE_SLOT && qs == 3)
@@ -368,54 +368,54 @@ GenericLoad()
ReadDataFromBlock("Loading Scripts \n", CTheScripts::LoadAllScripts);
// Load the rest
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading PedPool \n", CPools::LoadPedPool);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading PedPool \n", CPools::LoadPedPool);
LoadSaveDataBlock();
ReadDataFromBlock("Loading Garages \n", CGarages::Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading GameLogic \n", CGameLogic::Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Vehicles \n", CPools::LoadVehiclePool);
- LoadSaveDataBlock();
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading GameLogic \n", CGameLogic::Load);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Vehicles \n", CPools::LoadVehiclePool);
+ //LoadSaveDataBlock();
CProjectileInfo::RemoveAllProjectiles();
CObject::DeleteAllTempObjects();
- ReadDataFromBlock("Loading Objects \n", CPools::LoadObjectPool);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Paths \n", ThePaths.Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Cranes \n", CCranes::Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Pickups \n", CPickups::Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Phoneinfo \n", gPhoneInfo.Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Restart \n", CRestart::LoadAllRestartPoints);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Radar Blips \n", CRadar::LoadAllRadarBlips);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Zones \n", CTheZones::LoadAllZones);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Gang Data \n", CGangs::LoadAllGangData);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Car Generators \n", CTheCarGenerators::LoadAllCarGenerators);
- CParticle::ReloadConfig();
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Particles \n", CParticleObject::LoadParticle);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading AudioScript Objects \n", cAudioScriptObject::LoadAllAudioScriptObjects);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading ScriptPaths \n", CScriptPaths::Load);
+ //ReadDataFromBlock("Loading Objects \n", CPools::LoadObjectPool);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Paths \n", ThePaths.Load);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Cranes \n", CCranes::Load);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Pickups \n", CPickups::Load);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Phoneinfo \n", gPhoneInfo.Load);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Restart \n", CRestart::LoadAllRestartPoints);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Radar Blips \n", CRadar::LoadAllRadarBlips);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Zones \n", CTheZones::LoadAllZones);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Gang Data \n", CGangs::LoadAllGangData);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Car Generators \n", CTheCarGenerators::LoadAllCarGenerators);
+ //CParticle::ReloadConfig();
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Particles \n", CParticleObject::LoadParticle);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading AudioScript Objects \n", cAudioScriptObject::LoadAllAudioScriptObjects);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading ScriptPaths \n", CScriptPaths::Load);
LoadSaveDataBlock();
ReadDataFromBlock("Loading Player Info \n", CWorld::Players[CWorld::PlayerInFocus].LoadPlayerInfo);
LoadSaveDataBlock();
ReadDataFromBlock("Loading Stats \n", CStats::LoadStats);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Set Pieces \n", CSetPieces::Load);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading Streaming Stuff \n", CStreaming::MemoryCardLoad);
- LoadSaveDataBlock();
- ReadDataFromBlock("Loading PedType Stuff \n", CPedType::Load);
-
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Set Pieces \n", CSetPieces::Load);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading Streaming Stuff \n", CStreaming::MemoryCardLoad);
+ //LoadSaveDataBlock();
+ //ReadDataFromBlock("Loading PedType Stuff \n", CPedType::Load);
+ CStreaming::ReInit();
DMAudio.SetMusicMasterVolume(FrontEndMenuManager.m_PrefsMusicVolume);
DMAudio.SetEffectsMasterVolume(FrontEndMenuManager.m_PrefsSfxVolume);
if (!CloseFile(file)) {
@@ -423,7 +423,7 @@ GenericLoad()
return false;
}
- DoGameSpecificStuffAfterSucessLoad();
+ //DoGameSpecificStuffAfterSucessLoad();
debug("Game successfully loaded \n");
return true;
}
diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp
index f1f97ee3..eee3dcc9 100644
--- a/src/skel/glfw/glfw.cpp
+++ b/src/skel/glfw/glfw.cpp
@@ -2221,8 +2221,8 @@ main(int argc, char *argv[])
printf("Into TheGame!!!\n");
#else
- LoadingScreen(nil, nil, "loadsc0");
- // LoadingScreen(nil, nil, "loadsc0"); // duplicate
+ LoadingScreen(nil, nil, "sceelee");
+ // LoadingScreen(nil, nil, "sceelee"); // duplicate
#endif
if ( !CGame::InitialiseOnceAfterRW() )
RsGlobal.quit = TRUE;
@@ -2238,8 +2238,8 @@ main(int argc, char *argv[])
#ifndef PS2_MENU
case GS_INIT_FRONTEND:
{
- LoadingScreen(nil, nil, "loadsc0");
- // LoadingScreen(nil, nil, "loadsc0"); // duplicate
+ LoadingScreen(nil, nil, "sceelee");
+ // LoadingScreen(nil, nil, "sceelee"); // duplicate
FrontEndMenuManager.m_bGameNotLoaded = true;
@@ -2398,7 +2398,7 @@ main(int argc, char *argv[])
CGame::InitialiseWhenRestarting();
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
LoadSplash(GetLevelSplashScreen(CGame::currLevel));
- FrontEndMenuManager.m_bWantToLoad = false;
+ //FrontEndMenuManager.m_bWantToLoad = false;
}
else
{
diff --git a/src/skel/skeleton.cpp b/src/skel/skeleton.cpp
index 2bb23460..d5805681 100644
--- a/src/skel/skeleton.cpp
+++ b/src/skel/skeleton.cpp
@@ -397,7 +397,7 @@ RsInitialize(void)
*/
RwBool result;
- RsGlobal.appName = RWSTRING("GTA: Vice City");
+ RsGlobal.appName = RWSTRING("GTA: Liberty City Stories");
RsGlobal.maximumWidth = DEFAULT_SCREEN_WIDTH;
RsGlobal.maximumHeight = DEFAULT_SCREEN_HEIGHT;
RsGlobal.width = DEFAULT_SCREEN_WIDTH;
diff --git a/src/skel/win/gtalcs.ico b/src/skel/win/gtalcs.ico
new file mode 100644
index 00000000..c4b53436
--- /dev/null
+++ b/src/skel/win/gtalcs.ico
Binary files differ
diff --git a/src/skel/win/gtavc.ico b/src/skel/win/gtavc.ico
deleted file mode 100644
index 7bfcc5a5..00000000
--- a/src/skel/win/gtavc.ico
+++ /dev/null
Binary files differ
diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp
index c49f0ab9..639f6272 100644
--- a/src/skel/win/win.cpp
+++ b/src/skel/win/win.cpp
@@ -2380,8 +2380,8 @@ WinMain(HINSTANCE instance,
printf("Into TheGame!!!\n");
#else
- LoadingScreen(nil, nil, "loadsc0");
- // LoadingScreen(nil, nil, "loadsc0"); // duplicate
+ LoadingScreen(nil, nil, "sceelee");
+ // LoadingScreen(nil, nil, "sceelee"); // duplicate
#endif
if ( !CGame::InitialiseOnceAfterRW() )
RsGlobal.quit = TRUE;
@@ -2398,8 +2398,8 @@ WinMain(HINSTANCE instance,
#ifndef PS2_MENU
case GS_INIT_FRONTEND:
{
- LoadingScreen(nil, nil, "loadsc0");
- // LoadingScreen(nil, nil, "loadsc0"); // duplicate
+ LoadingScreen(nil, nil, "sceelee");
+ // LoadingScreen(nil, nil, "sceelee"); // duplicate
FrontEndMenuManager.m_bGameNotLoaded = true;
@@ -2560,7 +2560,7 @@ WinMain(HINSTANCE instance,
CGame::InitialiseWhenRestarting();
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
LoadSplash(GetLevelSplashScreen(CGame::currLevel));
- FrontEndMenuManager.m_bWantToLoad = false;
+ //FrontEndMenuManager.m_bWantToLoad = false;
}
else
{
diff --git a/src/skel/win/win.rc b/src/skel/win/win.rc
index 9b5aa305..702c3de7 100644
--- a/src/skel/win/win.rc
+++ b/src/skel/win/win.rc
@@ -42,6 +42,6 @@ END
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
-IDI_MAIN_ICON ICON DISCARDABLE "gtavc.ico"
+IDI_MAIN_ICON ICON DISCARDABLE "gtalcs.ico"
///////////////////////////////////////////////////////////////////////////// \ No newline at end of file
diff --git a/src/text/Messages.cpp b/src/text/Messages.cpp
index 81339ae0..f55e6bd7 100644
--- a/src/text/Messages.cpp
+++ b/src/text/Messages.cpp
@@ -11,6 +11,8 @@
#include "Font.h"
+#include "Pad.h"
+
tMessage CMessages::BriefMessages[NUMBRIEFMESSAGES];
tPreviousBrief CMessages::PreviousBriefs[NUMPREVIOUSBRIEFS];
tBigMessage CMessages::BIGMessages[NUMBIGMESSAGES];
@@ -441,6 +443,64 @@ CMessages::InsertStringInString(wchar *str1, wchar *str2)
str1[i++] = '\0';
}
+int
+CMessages::GetTokenPadKeyString(const wchar *in, wchar *out)
+{
+ wchar str[256];
+ memset(str, 0, sizeof(str));
+ str[0] = 'C';
+
+ // TODO: there was a switch here but that's stupid
+ str[1] = CPad::GetPad(0)->Mode + 48;
+
+ while (*in != '~') in++;
+ in++;
+
+ int i = 1;
+ while (*in != '~')
+ str[1+i++] = *(in++);
+
+ wchar *text = TheText.Get(UnicodeToAscii(str));
+ if (!text) return i;
+ while (text[0] != '\0')
+ {
+ if (text[0] == '~')
+ {
+ switch (text[1])
+ {
+ case 'L':
+ *(out++) = 'M';
+ break;
+ case 'N':
+ *(out++) = 'O';
+ break;
+ case 'O':
+ *(out++) = 227;
+ break;
+ case 'R':
+ *(out++) = 'S';
+ break;
+ case 'S':
+ *(out++) = 225;
+ break;
+ case 'T':
+ *(out++) = 224;
+ break;
+ case 'X':
+ *(out++) = 226;
+ break;
+ default:
+ break;
+ }
+ text += 3;
+ }
+ else {
+ *(out++) = *(text++);
+ }
+ }
+ return i;
+}
+
void
CMessages::InsertPlayerControlKeysInString(wchar *str)
{
@@ -450,7 +510,7 @@ CMessages::InsertPlayerControlKeysInString(wchar *str)
if (!str) return;
uint16 strSize = GetWideStringLength(str);
- memset(keybuf, 0, 256*sizeof(wchar));
+ memset(keybuf, 0, 256*sizeof(wchar)); // not memset? :O
wchar *_outstr = outstr;
for (i = 0; i < strSize;) {
@@ -460,9 +520,16 @@ CMessages::InsertPlayerControlKeysInString(wchar *str)
#else
if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') {
#endif
+ memset(keybuf, 0, 256 * sizeof(wchar));
i += 4;
- bool done = false;
- for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS && !done; cont++) {
+ i += GetTokenPadKeyString(&str[i], keybuf) + 1;
+ uint16 keybuf_size = GetWideStringLength(keybuf);
+ for (uint16 j = 0; j < keybuf_size; j++) {
+ *(_outstr++) = keybuf[j];
+ keybuf[j] = '\0';
+ }
+
+ /*for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS && !done; cont++) {
uint16 contSize = GetWideStringLength(ControlsManager.m_aActionNames[cont]);
if (contSize != 0) {
if (WideStringCompare(&str[i], ControlsManager.m_aActionNames[cont], contSize)) {
@@ -476,7 +543,7 @@ CMessages::InsertPlayerControlKeysInString(wchar *str)
i += contSize + 1;
}
}
- }
+ }*/
} else {
*(_outstr++) = str[i++];
}
@@ -813,3 +880,13 @@ CMessages::ClearAllMessagesDisplayedByGame()
CHud::GetRidOfAllHudMessages();
CUserDisplay::Pager.ClearMessages();
}
+
+void
+CMessages::ClearThisBigPrintNow(uint32 id)
+{
+ if (BIGMessages[id].m_Stack[0].m_pText)
+ ClearThisBigPrint(BIGMessages[id].m_Stack[0].m_pText);
+ CHud::m_BigMessage[id][0] = '\0';
+ BigMessageInUse[id] = 0.0f;
+}
+
diff --git a/src/text/Messages.h b/src/text/Messages.h
index e8ba1bf7..15abaafe 100644
--- a/src/text/Messages.h
+++ b/src/text/Messages.h
@@ -23,7 +23,7 @@ struct tPreviousBrief
};
#define NUMBRIEFMESSAGES 8
-#define NUMBIGMESSAGES 6
+#define NUMBIGMESSAGES 8
#define NUMPREVIOUSBRIEFS 5
class CMessages
@@ -61,6 +61,8 @@ public:
static void ClearThisPrint(wchar *str);
static void ClearThisBigPrint(wchar *str);
static void ClearAllMessagesDisplayedByGame(void);
+ static void ClearThisBigPrintNow(uint32 id);
+ static int GetTokenPadKeyString(const wchar *in, wchar *out);
// unused or cut
//static void AddMessageSoonWithString(wchar*, uint32, uint16, wchar*);
diff --git a/src/text/Text.cpp b/src/text/Text.cpp
index 1369d1db..e387fe01 100644
--- a/src/text/Text.cpp
+++ b/src/text/Text.cpp
@@ -11,7 +11,7 @@
wchar WideErrorString[25];
-CText TheText;
+CText *CText::msInstance = nil;
CText::CText(void)
{
@@ -39,7 +39,7 @@ CText::Load(void)
CFileMgr::SetDir("TEXT");
switch(FrontEndMenuManager.m_PrefsLanguage){
case CMenuManager::LANGUAGE_AMERICAN:
- sprintf(filename, "AMERICAN.GXT");
+ sprintf(filename, "ENGLISH.GXT");
break;
case CMenuManager::LANGUAGE_FRENCH:
sprintf(filename, "FRENCH.GXT");
@@ -91,11 +91,13 @@ CText::Load(void)
keyArray.Update(data.chars);
CFileMgr::CloseFile(file);
CFileMgr::SetDir("");
+ bIsLoaded = true;
}
void
CText::Unload(void)
{
+ bIsLoaded = false;
CMessages::ClearAllMessagesDisplayedByGame();
keyArray.Unload();
data.Unload();
@@ -243,7 +245,7 @@ CText::LoadMissionText(char *MissionTableName)
CFileMgr::SetDir("TEXT");
switch (FrontEndMenuManager.m_PrefsLanguage) {
case CMenuManager::LANGUAGE_AMERICAN:
- sprintf(filename, "AMERICAN.GXT");
+ sprintf(filename, "ENGLISH.GXT");
break;
case CMenuManager::LANGUAGE_FRENCH:
sprintf(filename, "FRENCH.GXT");
@@ -305,6 +307,11 @@ CText::LoadMissionText(char *MissionTableName)
bIsMissionTextLoaded = true;
}
+bool
+CText::IsLoaded()
+{
+ return bIsLoaded;
+}
void
CKeyArray::Load(size_t length, int file, size_t* offset)
diff --git a/src/text/Text.h b/src/text/Text.h
index 1174216c..05387346 100644
--- a/src/text/Text.h
+++ b/src/text/Text.h
@@ -58,7 +58,7 @@ public:
uint32 offset;
};
- enum {MAX_MISSION_TEXTS = 90}; // beware that LCS has more
+ enum {MAX_MISSION_TEXTS = 200};
Entry data[MAX_MISSION_TEXTS];
uint16 size; // You can make this size_t if you want to exceed 32-bit boundaries, everything else should be ready.
@@ -84,6 +84,9 @@ class CText
bool bIsMissionTextLoaded;
char szMissionTableName[8];
CMissionTextOffsets MissionTextOffsets;
+ bool bIsLoaded;
+
+ static CText *msInstance;
public:
CText(void);
void Load(void);
@@ -94,6 +97,15 @@ public:
void GetNameOfLoadedMissionText(char *outName);
void ReadChunkHeader(ChunkHeader *buf, int32 file, size_t *bytes_read);
void LoadMissionText(char *MissionTableName);
+ bool IsLoaded();
+ void GetUTF8(const char*, char*, int); // TODO but unused
+
+ static CText &Instance()
+ {
+ if (!msInstance)
+ msInstance = new CText;
+ return *msInstance;
+ }
};
-extern CText TheText;
+#define TheText CText::Instance()
diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp
index 815b2534..b0f21af7 100644
--- a/src/vehicles/Automobile.cpp
+++ b/src/vehicles/Automobile.cpp
@@ -51,6 +51,8 @@
#include "Bike.h"
#include "Wanted.h"
#include "SaveBuf.h"
+#include "Streaming.h"
+#include "sampman.h"
bool bAllCarCheat;
@@ -86,6 +88,7 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
switch(GetModelIndex()){
case MI_HUNTER:
case MI_ANGEL:
+ case MI_ANGEL2:
case MI_FREEWAY:
m_nRadioStation = V_ROCK;
break;
@@ -103,6 +106,8 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
pHandling = mod_HandlingManager.GetHandlingData((tVehicleType)mi->m_handlingId);
pFlyingHandling = mod_HandlingManager.GetFlyingPointer((tVehicleType)mi->m_handlingId);
+ m_fEngineInertiaVar1 = 0.0f;
+ m_fEngineInertiaVar2 = 0.0f;
m_auto_unused1 = 20.0f;
m_auto_unused2 = 0;
@@ -148,10 +153,10 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
for(i = 0; i < 6; i++)
m_randomValues[i] = CGeneral::GetRandomNumberInRange(-0.15f, 0.15f);
- m_fMass = pHandling->fMass;
- m_fTurnMass = pHandling->fTurnMass;
+ m_fMass = pHandling->GetMass();
+ m_fTurnMass = pHandling->GetTurnMass();
m_vecCentreOfMass = pHandling->CentreOfMass;
- m_fAirResistance = pHandling->Dimension.x*pHandling->Dimension.z/m_fMass;
+ m_fAirResistance = pHandling->fDragMult > 0.01f ? pHandling->fDragMult*0.0005f : pHandling->fDragMult;
m_fElasticity = 0.05f;
m_fBuoyancy = pHandling->fBuoyancy;
@@ -192,12 +197,6 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
m_fTraction = 1.0f;
m_fTireTemperature = 1.0f;
- CColModel *colModel = mi->GetColModel();
- if(colModel->lines == nil){
- colModel->lines = (CColLine*)RwMalloc(4*sizeof(CColLine));
- colModel->numLines = 4;
- }
-
SetupSuspensionLines();
SetStatus(STATUS_SIMPLE);
@@ -205,6 +204,10 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
m_nNumPassengers = 0;
+ m_pBombRigger = nil;
+ m_bombType = CARBOMB_NONE;
+ bDriverLastFrame = false;
+
if(m_nDoorLock == CARLOCK_UNLOCKED &&
(id == MI_POLICE || id == MI_ENFORCER || id == MI_RHINO))
m_nDoorLock = CARLOCK_LOCKED_INITIALLY;
@@ -235,6 +238,7 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
bExplosionProof = true;
bBulletProof = true;
}
+ m_vehLCS_2A3 = -1;
}
void
@@ -246,6 +250,8 @@ CAutomobile::SetModelIndex(uint32 id)
#define SAND_SLOWDOWN (0.01f)
float CAR_BALANCE_MULT = 0.3f;
+float CAR_INAIR_ROTF = 0.0007f;
+float CAR_INAIR_ROTLIM = 0.02f;
float HELI_ROTOR_DOTPROD_LIMIT = 0.95f;
CVector vecSeaSparrowGunPos(-0.5f, 2.4f, -0.785f);
CVector vecHunterGunPos(0.0f, 4.8f, -1.3f);
@@ -263,6 +269,23 @@ CAutomobile::ProcessControl(void)
CColModel *colModel;
float brake = 0.0f;
+ if(TheCamera.WorldViewerBeingUsed){
+ if(bIsAmbulanceOnDuty){
+ bIsAmbulanceOnDuty = false;
+ CCarCtrl::NumAmbulancesOnDuty--;
+ }
+ if(bIsFireTruckOnDuty){
+ bIsFireTruckOnDuty = false;
+ CCarCtrl::NumFiretrucksOnDuty--;
+ }
+ }
+
+ if(m_vehLCS_2A3 >= 0){
+ m_vehLCS_2A4--;
+ if(m_vehLCS_2A4 == 0)
+ m_vehLCS_2A3 = -1;
+ }
+
if(bUsingSpecialColModel)
colModel = &CWorld::Players[CWorld::PlayerInFocus].m_ColModel;
else
@@ -312,7 +335,7 @@ CAutomobile::ProcessControl(void)
if(GetStatus() != STATUS_ABANDONED && GetStatus() != STATUS_WRECKED &&
GetStatus() != STATUS_PLAYER && GetStatus() != STATUS_PLAYER_REMOTE && GetStatus() != STATUS_PLAYER_DISABLED){
switch(GetModelIndex())
- case MI_FBIRANCH:
+ case MI_FBICAR:
case MI_POLICE:
case MI_ENFORCER:
case MI_SECURICA:
@@ -321,16 +344,29 @@ CAutomobile::ProcessControl(void)
ScanForCrimes();
}
+ if (pDriver) {
+ if (!bDriverLastFrame && m_bombType == CARBOMB_ONIGNITIONACTIVE) {
+ // If someone enters the car and there is a bomb, detonate
+ m_nBombTimer = 1000;
+ m_pBlowUpEntity = m_pBombRigger;
+ if (m_pBlowUpEntity)
+ m_pBlowUpEntity->RegisterReference((CEntity**)&m_pBlowUpEntity);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TICK, 1.0f);
+ }
+ bDriverLastFrame = true;
+ }
+ else
+ bDriverLastFrame = false;
+
// Process driver
- if(pDriver)
+ if(pDriver){
if(IsUpsideDown() && CanPedEnterCar()){
if(!pDriver->IsPlayer() &&
!(pDriver->m_leader && pDriver->m_leader->bInVehicle) &&
pDriver->CharCreatedBy != MISSION_CHAR)
pDriver->SetObjective(OBJECTIVE_LEAVE_CAR, this);
}
-
- ActivateBombWhenEntered();
+ }
// Process passengers
if(m_nNumPassengers != 0 && IsUpsideDown() && CanPedEnterCar()){
@@ -353,7 +389,7 @@ CAutomobile::ProcessControl(void)
if(strongGrip1 || bCheat3)
m_vecCentreOfMass.z = 0.3f*m_aSuspensionSpringLength[0] + -1.0f*m_fHeightAboveRoad;
else if(pHandling->Flags & HANDLING_NONPLAYER_STABILISER && GetStatus() == STATUS_PHYSICS)
- m_vecCentreOfMass.z = pHandling->CentreOfMass.z - 0.2f*pHandling->Dimension.z;
+ m_vecCentreOfMass.z = pHandling->CentreOfMass.z + (colModel->boundingBox.min.z - pHandling->CentreOfMass.z)*0.4f;
else
m_vecCentreOfMass = pHandling->CentreOfMass;
@@ -373,11 +409,7 @@ CAutomobile::ProcessControl(void)
bool playerRemote = false;
switch(GetStatus()){
case STATUS_PLAYER_REMOTE:
-#ifdef FIX_BUGS
if(CPad::GetPad(0)->CarGunJustDown() && !bDisableRemoteDetonation){
-#else
- if(CPad::GetPad(0)->WeaponJustDown() && !bDisableRemoteDetonation){
-#endif
BlowUpCar(FindPlayerPed());
CRemote::TakeRemoteControlledCarFromPlayer();
}
@@ -396,7 +428,8 @@ CAutomobile::ProcessControl(void)
// fall through
case STATUS_PLAYER:
if(playerRemote ||
- pDriver && pDriver->GetPedState() != PED_EXIT_CAR && pDriver->GetPedState() != PED_DRAG_FROM_CAR && pDriver->GetPedState() != PED_ARRESTED){
+ // TODO(LCS): ped state 64
+ pDriver && pDriver->GetPedState() != PED_EXIT_CAR && pDriver->GetPedState() != PED_DRAG_FROM_CAR && pDriver->GetPedState() != PED_ARRESTED && pDriver->GetPedState() != PED_STATE64){
// process control input if controlled by player
if(playerRemote || pDriver->m_nPedType == PEDTYPE_PLAYER1)
ProcessControlInputs(0);
@@ -421,6 +454,34 @@ CAutomobile::ProcessControl(void)
}else
m_vecCentreOfMass.z = pHandling->CentreOfMass.z;
+ // in air handling
+ if(m_nWheelsOnGround == 0 &&
+ GetVehicleAppearance() != VEHICLE_APPEARANCE_PLANE && GetVehicleAppearance() != VEHICLE_APPEARANCE_HELI){
+ float turnForce = m_fTurnMass * CAR_INAIR_ROTF;
+ turnForce *= Min(3000.0f/m_fTurnMass, 1.0f);
+ if(CPad::GetPad(0)->GetHandBrake()){
+ float upRot = DotProduct(m_vecTurnSpeed, GetUp());
+ if(upRot < CAR_INAIR_ROTLIM && CPad::GetPad(0)->GetSteeringLeftRight() < 0.0f ||
+ upRot > -CAR_INAIR_ROTLIM && CPad::GetPad(0)->GetSteeringLeftRight() > 0.0f)
+ ApplyTurnForce(GetRight() * turnForce * (CPad::GetPad(0)->GetSteeringLeftRight()/128.0f) * CTimer::GetTimeStep(),
+ m_vecCentreOfMass + GetForward());
+ }else if(!CPad::GetPad(0)->GetAccelerate()){
+ float fwdRot = DotProduct(m_vecTurnSpeed, GetForward());
+ if(fwdRot < CAR_INAIR_ROTLIM && CPad::GetPad(0)->GetSteeringLeftRight() < 0.0f ||
+ fwdRot > -CAR_INAIR_ROTLIM && CPad::GetPad(0)->GetSteeringLeftRight() > 0.0f)
+ ApplyTurnForce(GetRight() * turnForce * (CPad::GetPad(0)->GetSteeringLeftRight()/128.0f) * CTimer::GetTimeStep(),
+ m_vecCentreOfMass + GetUp());
+ }
+
+ if(!CPad::GetPad(0)->GetAccelerate()){
+ float rightRot = DotProduct(m_vecTurnSpeed, GetRight());
+ if(rightRot < CAR_INAIR_ROTLIM && CPad::GetPad(0)->GetSteeringUpDown() < 0.0f ||
+ rightRot > -CAR_INAIR_ROTLIM && CPad::GetPad(0)->GetSteeringUpDown() > 0.0f)
+ ApplyTurnForce(GetUp() * turnForce * (CPad::GetPad(0)->GetSteeringUpDown()/128.0f) * CTimer::GetTimeStep(),
+ m_vecCentreOfMass + GetForward());
+ }
+ }
+
if(bHoverCheat)
DoHoverSuspensionRatios();
@@ -456,8 +517,6 @@ CAutomobile::ProcessControl(void)
m_fBrakePedal = 1.0f;
m_fGasPedal = 0.0f;
}
- if(CPad::GetPad(0)->CarGunJustDown())
- ActivateBomb();
break;
case STATUS_SIMPLE:
@@ -532,8 +591,10 @@ CAutomobile::ProcessControl(void)
m_fSteerAngle = 0.0f;
m_fGasPedal = 0.0f;
- if(!IsAlarmOn())
- m_nCarHornTimer = 0;
+ m_nCarHornTimer = 0;
+ // TODO(LCS):
+ // CWeapon::::RemovePlayersRemoteDetonatorForThisVehicle
+ m_pBombRigger = nil;
break;
case STATUS_PLAYER_DISABLED:
@@ -627,9 +688,7 @@ CAutomobile::ProcessControl(void)
// special control
switch(GetModelIndex()){
- case MI_FIRETRUCK:
- FireTruckControl();
- break;
+ // FireTruckControl in PreRender now
case MI_RHINO:
TankControl();
BlowUpCarsInPath();
@@ -724,7 +783,7 @@ CAutomobile::ProcessControl(void)
ApplyTurnSpeed();
}
bIsInSafePosition = true;
- bIsStuck = false;
+ bIsStuck = false;
}
CPhysical::ProcessControl();
@@ -743,6 +802,7 @@ CAutomobile::ProcessControl(void)
CVector contactPoints[4]; // relative to model
CVector contactSpeeds[4]; // speed at contact points
CVector springDirections[4]; // normalized, in world space
+ float springForces[4];
for(i = 0; i < 4; i++){
// Set spring under certain circumstances
@@ -766,10 +826,13 @@ CAutomobile::ProcessControl(void)
}
// get points and directions if spring is compressed
+ springDirections[i] = -GetUp(); // springs are always pointing down anyway
if(m_aSuspensionSpringRatio[i] < 1.0f){
contactPoints[i] = m_aWheelColPoints[i].point - GetPosition();
- springDirections[i] = Multiply3x3(GetMatrix(), colModel->lines[i].p1 - colModel->lines[i].p0);
- springDirections[i].Normalise();
+// springDirections[i] = Multiply3x3(GetMatrix(), colModel->lines[i].p1 - colModel->lines[i].p0);
+// springDirections[i].Normalise();
+ }else{
+ contactPoints[i] = CVector(0.0f, 0.0f, 0.0f);
}
}
@@ -782,7 +845,7 @@ CAutomobile::ProcessControl(void)
ApplySpringCollisionAlt(pHandling->fSuspensionForceLevel,
springDirections[i], contactPoints[i],
- m_aSuspensionSpringRatio[i], bias, m_aWheelColPoints[i].normal);
+ m_aSuspensionSpringRatio[i], bias, m_aWheelColPoints[i].normal, springForces[i]);
m_aWheelSkidmarkUnk[i] = false;
if(m_aWheelColPoints[i].surfaceB == SURFACE_GRASS ||
@@ -794,8 +857,8 @@ CAutomobile::ProcessControl(void)
m_aWheelSkidmarkUnk[i] = true;
}else
m_aWheelSkidmarkType[i] = SKIDMARK_NORMAL;
- }else{
- contactPoints[i] = Multiply3x3(GetMatrix(), colModel->lines[i].p1);
+// }else{
+// contactPoints[i] = Multiply3x3(GetMatrix(), colModel->lines[i].p1);
}
}
@@ -817,7 +880,7 @@ CAutomobile::ProcessControl(void)
// dampen springs
for(i = 0; i < 4; i++)
if(m_aSuspensionSpringRatio[i] < 0.99999f)
- ApplySpringDampening(pHandling->fSuspensionDampingLevel,
+ ApplySpringDampening(pHandling->fSuspensionDampingLevel, springForces[i],
springDirections[i], contactPoints[i], contactSpeeds[i]);
// Get speed at contact points again
@@ -830,42 +893,6 @@ CAutomobile::ProcessControl(void)
}
}
- bool gripCheat = true;
- fwdSpeed = DotProduct(m_vecMoveSpeed, GetForward());
- if(!strongGrip1 && !CVehicle::bCheat3)
- gripCheat = false;
- float acceleration = pHandling->Transmission.CalculateDriveAcceleration(m_fGasPedal, m_nCurrentGear, m_fChangeGearTime, fwdSpeed, gripCheat);
- acceleration /= m_fForceMultiplier;
-
- if(IsRealHeli() || IsRealPlane())
- acceleration = 0.0f;
-
- if(bAudioChangingGear && m_fGasPedal > 0.4f && m_fBrakePedal < 0.1f && fwdSpeed > 0.15f &&
- this == FindPlayerVehicle() && TheCamera.Cams[TheCamera.ActiveCam].Mode != CCam::MODE_1STPERSON){
- if(GetStatus() == STATUS_PLAYER && !(pHandling->Flags & HANDLING_IS_BUS)){
- if(m_nBusDoorTimerEnd == 0)
- m_nBusDoorTimerEnd = 1000;
- else {
- uint32 timeStepInMs = CTimer::GetTimeStepInMilliseconds();
- if(m_nBusDoorTimerEnd > timeStepInMs)
- m_nBusDoorTimerEnd -= timeStepInMs;
- else
- m_nBusDoorTimerEnd = 0;
- }
- }
-
- if((m_aSuspensionSpringRatio[0] < 1.0f || m_aSuspensionSpringRatio[2] < 1.0f) &&
- (m_aSuspensionSpringRatio[1] < 1.0f || m_aSuspensionSpringRatio[3] < 1.0f))
- ApplyTurnForce(-GRAVITY*Min(m_fTurnMass, 2500.0f)*GetUp(), -1.0f*GetForward());
- }
-
- brake = m_fBrakePedal * pHandling->fBrakeDeceleration * CTimer::GetTimeStep();
- bool neutralHandling = GetStatus() != STATUS_PLAYER && GetStatus() != STATUS_PLAYER_REMOTE && (pHandling->Flags & HANDLING_NEUTRALHANDLING);
- float brakeBiasFront = neutralHandling ? 1.0f : 2.0f*pHandling->fBrakeBias;
- float brakeBiasRear = neutralHandling ? 1.0f : 2.0f-pHandling->fBrakeBias; // looks like a bug, but it was correct in III...
- float tractionBiasFront = neutralHandling ? 1.0f : 2.0f*pHandling->fTractionBias;
- float tractionBiasRear = neutralHandling ? 1.0f : 2.0f-tractionBiasFront;
-
// Count how many wheels are touching the ground
m_nWheelsOnGround = 0;
@@ -896,16 +923,48 @@ CAutomobile::ProcessControl(void)
}
}
+ bool gripCheat = true;
+ fwdSpeed = DotProduct(m_vecMoveSpeed, GetForward());
+ if(!strongGrip1 && !CVehicle::bCheat3)
+ gripCheat = false;
+ float acceleration = pHandling->Transmission.CalculateDriveAcceleration(m_fGasPedal, m_nCurrentGear, m_fChangeGearTime, fwdSpeed,
+ &m_fEngineInertiaVar1, &m_fEngineInertiaVar2, m_nDriveWheelsOnGround, gripCheat);
+ acceleration /= m_fForceMultiplier;
+
+ if(IsRealHeli() || IsRealPlane())
+ acceleration = 0.0f;
+
+ if(Abs(acceleration) > 0.0f)
+ m_fEngineEnergy += Abs(acceleration);
+ else
+ m_fEngineEnergy = 0.0f;
+
float traction;
if(GetStatus() == STATUS_PHYSICS)
traction = 0.004f * m_fTraction;
else
traction = 0.004f;
- traction *= pHandling->fTractionMultiplier / 4.0f;
+ traction *= pHandling->GetTractionMultiplier() / 4.0f;
traction /= m_fForceMultiplier;
if(CVehicle::bCheat3)
traction *= 4.0f;
+ if(FindPlayerVehicle() && FindPlayerVehicle() == this)
+ if (CPad::GetPad(0)->CarGunJustDown()) {
+ if (m_bombType == CARBOMB_TIMED) {
+ m_bombType = CARBOMB_TIMEDACTIVE;
+ m_nBombTimer = 7000;
+ m_pBlowUpEntity = FindPlayerPed();
+ CGarages::TriggerMessage("GA_12", -1, 3000, -1);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TIMED_ACTIVATED, 1.0f);
+ }
+ else if (m_bombType == CARBOMB_ONIGNITION) {
+ m_bombType = CARBOMB_ONIGNITIONACTIVE;
+ CGarages::TriggerMessage("GA_12", -1, 3000, -1);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_ONIGNITION_ACTIVATED, 1.0f);
+ }
+ }
+
if(FindPlayerVehicle() != this && (strongGrip1 || CVehicle::bCheat3)){
traction *= 1.2f;
acceleration *= 1.4f;
@@ -915,429 +974,67 @@ CAutomobile::ProcessControl(void)
}
}
- static float fThrust;
- static tWheelState WheelState[4];
-
- bool rearWheelsFirst = !!(pHandling->Flags & HANDLING_REARWHEEL_1ST);
-
- // Process front wheels on ground - first try
-
- if(!rearWheelsFirst){
- if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f || m_aWheelTimer[CARWHEEL_FRONT_RIGHT] > 0.0f){
- float s = Sin(m_fSteerAngle);
- float c = Cos(m_fSteerAngle);
-
- CVector wheelFwd, wheelRight, tmp;
-
- if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier))
- fThrust = acceleration;
- else
- fThrust = 0.0f;
-
- wheelFwd = GetForward();
- wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal;
- wheelFwd.Normalise();
- wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal);
- wheelRight.Normalise();
- tmp = c*wheelFwd - s*wheelRight;
- wheelRight = s*wheelFwd + c*wheelRight;
- wheelFwd = tmp;
-
- m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceA = SURFACE_WHEELBASE;
- float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[CARWHEEL_FRONT_LEFT])*traction;
- if(GetStatus() == STATUS_PLAYER)
- adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceB);
- WheelState[CARWHEEL_FRONT_LEFT] = m_aWheelState[CARWHEEL_FRONT_LEFT];
-
- if(Damage.GetWheelStatus(CARWHEEL_FRONT_LEFT) == WHEEL_STATUS_BURST)
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront*Damage.m_fWheelDamageEffect,
- CARWHEEL_FRONT_LEFT,
- &m_aWheelSpeed[CARWHEEL_FRONT_LEFT],
- &WheelState[CARWHEEL_FRONT_LEFT],
- WHEEL_STATUS_BURST);
- else
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront,
- CARWHEEL_FRONT_LEFT,
- &m_aWheelSpeed[CARWHEEL_FRONT_LEFT],
- &WheelState[CARWHEEL_FRONT_LEFT],
- WHEEL_STATUS_OK);
- }
-
- if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] > 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier))
- fThrust = acceleration;
- else
- fThrust = 0.0f;
-
- wheelFwd = GetForward();
- wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal;
- wheelFwd.Normalise();
- wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal);
- wheelRight.Normalise();
- tmp = c*wheelFwd - s*wheelRight;
- wheelRight = s*wheelFwd + c*wheelRight;
- wheelFwd = tmp;
-
- m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceA = SURFACE_WHEELBASE;
- float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT])*traction;
- if(GetStatus() == STATUS_PLAYER)
- adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceB);
- WheelState[CARWHEEL_FRONT_RIGHT] = m_aWheelState[CARWHEEL_FRONT_RIGHT];
-
- if(Damage.GetWheelStatus(CARWHEEL_FRONT_RIGHT) == WHEEL_STATUS_BURST)
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront*Damage.m_fWheelDamageEffect,
- CARWHEEL_FRONT_RIGHT,
- &m_aWheelSpeed[CARWHEEL_FRONT_RIGHT],
- &WheelState[CARWHEEL_FRONT_RIGHT],
- WHEEL_STATUS_BURST);
- else
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront,
- CARWHEEL_FRONT_RIGHT,
- &m_aWheelSpeed[CARWHEEL_FRONT_RIGHT],
- &WheelState[CARWHEEL_FRONT_RIGHT],
- WHEEL_STATUS_OK);
- }
- }
-
- // Process front wheels off ground
-
- if(!IsRealHeli()){
- if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] <= 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){
- if(acceleration > 0.0f){
- if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] < 2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_LEFT] -= 0.2f;
- }else{
- if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] > -2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_LEFT] += 0.1f;
- }
- }else{
- m_aWheelSpeed[CARWHEEL_FRONT_LEFT] *= 0.95f;
- }
- m_aWheelRotation[CARWHEEL_FRONT_LEFT] += m_aWheelSpeed[CARWHEEL_FRONT_LEFT];
- }
- if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] <= 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){
- if(acceleration > 0.0f){
- if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] < 2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] -= 0.2f;
- }else{
- if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] > -2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] += 0.1f;
- }
- }else{
- m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] *= 0.95f;
- }
- m_aWheelRotation[CARWHEEL_FRONT_RIGHT] += m_aWheelSpeed[CARWHEEL_FRONT_RIGHT];
- }
- }
- }
-
- // Process rear wheels
-
- if(m_aWheelTimer[CARWHEEL_REAR_LEFT] > 0.0f || m_aWheelTimer[CARWHEEL_REAR_RIGHT] > 0.0f){
- CVector wheelFwd = GetForward();
- CVector wheelRight = GetRight(); // overwritten for resp. wheel
-
- float rearBrake = brake;
- float rearTraction = traction;
- if(bIsHandbrakeOn){
-#ifdef FIX_BUGS
- // Not sure if this is needed, but brake usually has timestep as a factor
- rearBrake = 20000.0f * CTimer::GetTimeStepFix();
-#else
- rearBrake = 20000.0f;
-#endif
- if(fwdSpeed > 0.1f && pHandling->Flags & HANDLING_HANDBRAKE_TYRE){
- m_fTireTemperature += 0.005*CTimer::GetTimeStep();
- if(m_fTireTemperature > 2.0f)
- m_fTireTemperature = 2.0f;
+ // TODO(LCS): where did this go?
+/*
+ if(bAudioChangingGear && m_fGasPedal > 0.4f && m_fBrakePedal < 0.1f && fwdSpeed > 0.15f &&
+ this == FindPlayerVehicle() && TheCamera.Cams[TheCamera.ActiveCam].Mode != CCam::MODE_1STPERSON){
+ if(GetStatus() == STATUS_PLAYER && !(pHandling->Flags & HANDLING_IS_BUS)){
+ if(m_nBusDoorTimerEnd == 0)
+ m_nBusDoorTimerEnd = 1000;
+ else {
+ uint32 timeStepInMs = CTimer::GetTimeStepInMilliseconds();
+ if(m_nBusDoorTimerEnd > timeStepInMs)
+ m_nBusDoorTimerEnd -= timeStepInMs;
+ else
+ m_nBusDoorTimerEnd = 0;
}
- }else if(m_doingBurnout && mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)){
- rearBrake = 0.0f;
- rearTraction = 0.0f;
- // BUG: missing timestep
- ApplyTurnForce(contactPoints[CARWHEEL_REAR_LEFT], -0.001f*m_fTurnMass*m_fSteerAngle*GetRight());
- }else if(m_fTireTemperature > 1.0f){
- rearTraction *= m_fTireTemperature;
- }
-
- if(m_aWheelTimer[CARWHEEL_REAR_LEFT] > 0.0f){
- if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier))
- fThrust = acceleration;
- else
- fThrust = 0.0f;
-
- wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_REAR_LEFT].normal)*m_aWheelColPoints[CARWHEEL_REAR_LEFT].normal;
- wheelFwd.Normalise();
- wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_REAR_LEFT].normal);
- wheelRight.Normalise();
-
- m_aWheelColPoints[CARWHEEL_REAR_LEFT].surfaceA = SURFACE_WHEELBASE;
- float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[CARWHEEL_REAR_LEFT])*rearTraction;
- if(GetStatus() == STATUS_PLAYER)
- adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_REAR_LEFT].surfaceB);
- WheelState[CARWHEEL_REAR_LEFT] = m_aWheelState[CARWHEEL_REAR_LEFT];
-
- if(Damage.GetWheelStatus(CARWHEEL_REAR_LEFT) == WHEEL_STATUS_BURST)
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_REAR_LEFT], contactPoints[CARWHEEL_REAR_LEFT],
- m_nWheelsOnGround, fThrust,
- rearBrake*brakeBiasRear,
- adhesion*tractionBiasRear*Damage.m_fWheelDamageEffect,
- CARWHEEL_REAR_LEFT,
- &m_aWheelSpeed[CARWHEEL_REAR_LEFT],
- &WheelState[CARWHEEL_REAR_LEFT],
- WHEEL_STATUS_BURST);
- else
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_REAR_LEFT], contactPoints[CARWHEEL_REAR_LEFT],
- m_nWheelsOnGround, fThrust,
- rearBrake*brakeBiasRear,
- adhesion*tractionBiasRear,
- CARWHEEL_REAR_LEFT,
- &m_aWheelSpeed[CARWHEEL_REAR_LEFT],
- &WheelState[CARWHEEL_REAR_LEFT],
- WHEEL_STATUS_OK);
}
-#ifdef FIX_BUGS
- // Shouldn't we reset these after the left wheel?
- wheelFwd = GetForward();
- wheelRight = GetRight(); // actually useless
-#endif
-
- if(m_aWheelTimer[CARWHEEL_REAR_RIGHT] > 0.0f){
- if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier))
- fThrust = acceleration;
- else
- fThrust = 0.0f;
-
- wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_REAR_RIGHT].normal)*m_aWheelColPoints[CARWHEEL_REAR_RIGHT].normal;
- wheelFwd.Normalise();
- wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_REAR_RIGHT].normal);
- wheelRight.Normalise();
-
- m_aWheelColPoints[CARWHEEL_REAR_RIGHT].surfaceA = SURFACE_WHEELBASE;
- float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[CARWHEEL_REAR_RIGHT])*rearTraction;
- if(GetStatus() == STATUS_PLAYER)
- adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_REAR_RIGHT].surfaceB);
- WheelState[CARWHEEL_REAR_RIGHT] = m_aWheelState[CARWHEEL_REAR_RIGHT];
-
- if(Damage.GetWheelStatus(CARWHEEL_REAR_RIGHT) == WHEEL_STATUS_BURST)
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_REAR_RIGHT], contactPoints[CARWHEEL_REAR_RIGHT],
- m_nWheelsOnGround, fThrust,
- rearBrake*brakeBiasRear,
- adhesion*tractionBiasRear*Damage.m_fWheelDamageEffect,
- CARWHEEL_REAR_RIGHT,
- &m_aWheelSpeed[CARWHEEL_REAR_RIGHT],
- &WheelState[CARWHEEL_REAR_RIGHT],
- WHEEL_STATUS_BURST);
- else
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_REAR_RIGHT], contactPoints[CARWHEEL_REAR_RIGHT],
- m_nWheelsOnGround, fThrust,
- rearBrake*brakeBiasRear,
- adhesion*tractionBiasRear,
- CARWHEEL_REAR_RIGHT,
- &m_aWheelSpeed[CARWHEEL_REAR_RIGHT],
- &WheelState[CARWHEEL_REAR_RIGHT],
- WHEEL_STATUS_OK);
- }
- }
-
- if(m_doingBurnout && mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) &&
- (m_aWheelState[CARWHEEL_REAR_LEFT] == WHEEL_STATE_SPINNING || m_aWheelState[CARWHEEL_REAR_RIGHT] == WHEEL_STATE_SPINNING)){
- m_fTireTemperature += 0.001f*CTimer::GetTimeStep();
- if(m_fTireTemperature > 3.0f)
- m_fTireTemperature = 3.0f;
- }else if(m_fTireTemperature > 1.0f){
- m_fTireTemperature = (m_fTireTemperature - 1.0f)*Pow(0.995f, CTimer::GetTimeStep()) + 1.0f;
- }
-
- // Process rear wheels off ground
-
- if(!IsRealHeli()){
- if(m_aWheelTimer[CARWHEEL_REAR_LEFT] <= 0.0f){
- if(bIsHandbrakeOn)
- m_aWheelSpeed[CARWHEEL_REAR_LEFT] = 0.0f;
- else if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){
- if(acceleration > 0.0f){
- if(m_aWheelSpeed[CARWHEEL_REAR_LEFT] < 2.0f)
- m_aWheelSpeed[CARWHEEL_REAR_LEFT] -= 0.2f;
- }else{
- if(m_aWheelSpeed[CARWHEEL_REAR_LEFT] > -2.0f)
- m_aWheelSpeed[CARWHEEL_REAR_LEFT] += 0.1f;
- }
- }else{
- m_aWheelSpeed[CARWHEEL_REAR_LEFT] *= 0.95f;
- }
- m_aWheelRotation[CARWHEEL_REAR_LEFT] += m_aWheelSpeed[CARWHEEL_REAR_LEFT];
- }
- if(m_aWheelTimer[CARWHEEL_REAR_RIGHT] <= 0.0f){
- if(bIsHandbrakeOn)
- m_aWheelSpeed[CARWHEEL_REAR_RIGHT] = 0.0f;
- else if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){
- if(acceleration > 0.0f){
- if(m_aWheelSpeed[CARWHEEL_REAR_RIGHT] < 2.0f)
- m_aWheelSpeed[CARWHEEL_REAR_RIGHT] -= 0.2f;
- }else{
- if(m_aWheelSpeed[CARWHEEL_REAR_RIGHT] > -2.0f)
- m_aWheelSpeed[CARWHEEL_REAR_RIGHT] += 0.1f;
- }
- }else{
- m_aWheelSpeed[CARWHEEL_REAR_RIGHT] *= 0.95f;
- }
- m_aWheelRotation[CARWHEEL_REAR_RIGHT] += m_aWheelSpeed[CARWHEEL_REAR_RIGHT];
- }
+ if((m_aSuspensionSpringRatio[0] < 1.0f || m_aSuspensionSpringRatio[2] < 1.0f) &&
+ (m_aSuspensionSpringRatio[1] < 1.0f || m_aSuspensionSpringRatio[3] < 1.0f))
+ ApplyTurnForce(-GRAVITY*Min(m_fTurnMass, 2500.0f)*GetUp(), -1.0f*GetForward());
}
-
- // Process front wheels on ground - second try
-
- if(rearWheelsFirst){
- if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f || m_aWheelTimer[CARWHEEL_FRONT_RIGHT] > 0.0f){
- float s = Sin(m_fSteerAngle);
- float c = Cos(m_fSteerAngle);
-
- CVector wheelFwd, wheelRight, tmp;
-
- if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier))
- fThrust = acceleration;
- else
- fThrust = 0.0f;
-
- wheelFwd = GetForward();
- wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal;
- wheelFwd.Normalise();
- wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal);
- wheelRight.Normalise();
- tmp = c*wheelFwd - s*wheelRight;
- wheelRight = s*wheelFwd + c*wheelRight;
- wheelFwd = tmp;
-
- m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceA = SURFACE_WHEELBASE;
- float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[CARWHEEL_FRONT_LEFT])*traction;
- if(GetStatus() == STATUS_PLAYER)
- adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_LEFT].surfaceB);
- WheelState[CARWHEEL_FRONT_LEFT] = m_aWheelState[CARWHEEL_FRONT_LEFT];
-
- if(Damage.GetWheelStatus(CARWHEEL_FRONT_LEFT) == WHEEL_STATUS_BURST)
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront*Damage.m_fWheelDamageEffect,
- CARWHEEL_FRONT_LEFT,
- &m_aWheelSpeed[CARWHEEL_FRONT_LEFT],
- &WheelState[CARWHEEL_FRONT_LEFT],
- WHEEL_STATUS_BURST);
- else
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_LEFT], contactPoints[CARWHEEL_FRONT_LEFT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront,
- CARWHEEL_FRONT_LEFT,
- &m_aWheelSpeed[CARWHEEL_FRONT_LEFT],
- &WheelState[CARWHEEL_FRONT_LEFT],
- WHEEL_STATUS_OK);
- }
-
- if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] > 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier))
- fThrust = acceleration;
+*/
+
+ static float magicValue = 4.0f;
+ if(magicValue > 0.0f){
+ float steerRange;
+ // looks like a bug with the wheel ids here, why only left wheels?
+ if(fwdSpeed > 0.01f && (m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f || m_aWheelTimer[CARWHEEL_REAR_LEFT] > 0.0f) && GetStatus() == STATUS_PLAYER){
+ CColPoint point;
+ point.surfaceA = SURFACE_WHEELBASE;
+ point.surfaceB = SURFACE_TARMAC;
+ float rightSpeed = DotProduct(m_vecMoveSpeed, GetRight());
+ float adhesion = CSurfaceTable::GetAdhesiveLimit(point);
+ // i have no idea what's going on here
+ float magic = magicValue * traction * adhesion * 4.0f / SQR(fwdSpeed);
+ magic = Clamp(magic, -1.0f, 1.0f);
+ magic = Asin(magic);
+ if(m_fSteerAngle < 0.0f && rightSpeed > 0.05f ||
+ m_fSteerAngle > 0.0f && rightSpeed < -0.05f ||
+ bIsHandbrakeOn)
+ steerRange = 1.0f;
else
- fThrust = 0.0f;
-
- wheelFwd = GetForward();
- wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal;
- wheelFwd.Normalise();
- wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal);
- wheelRight.Normalise();
- tmp = c*wheelFwd - s*wheelRight;
- wheelRight = s*wheelFwd + c*wheelRight;
- wheelFwd = tmp;
+ steerRange = Min(magic/DEGTORAD(pHandling->fSteeringLock), 1.0f);
+
+ }else
+ steerRange = 1.0f;
- m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceA = SURFACE_WHEELBASE;
- float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT])*traction;
- if(GetStatus() == STATUS_PLAYER)
- adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].surfaceB);
- WheelState[CARWHEEL_FRONT_RIGHT] = m_aWheelState[CARWHEEL_FRONT_RIGHT];
-
- if(Damage.GetWheelStatus(CARWHEEL_FRONT_RIGHT) == WHEEL_STATUS_BURST)
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront*Damage.m_fWheelDamageEffect,
- CARWHEEL_FRONT_RIGHT,
- &m_aWheelSpeed[CARWHEEL_FRONT_RIGHT],
- &WheelState[CARWHEEL_FRONT_RIGHT],
- WHEEL_STATUS_BURST);
- else
- ProcessWheel(wheelFwd, wheelRight,
- contactSpeeds[CARWHEEL_FRONT_RIGHT], contactPoints[CARWHEEL_FRONT_RIGHT],
- m_nWheelsOnGround, fThrust,
- brake*brakeBiasFront,
- adhesion*tractionBiasFront,
- CARWHEEL_FRONT_RIGHT,
- &m_aWheelSpeed[CARWHEEL_FRONT_RIGHT],
- &WheelState[CARWHEEL_FRONT_RIGHT],
- WHEEL_STATUS_OK);
- }
+ m_fSteerAngle *= steerRange;
}
- // Process front wheels off ground
+ brake = m_fBrakePedal * pHandling->fBrakeDeceleration * CTimer::GetTimeStep();
- if (!IsRealHeli()) {
- if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] <= 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){
- if(acceleration > 0.0f){
- if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] < 2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_LEFT] -= 0.2f;
- }else{
- if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] > -2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_LEFT] += 0.1f;
- }
- }else{
- m_aWheelSpeed[CARWHEEL_FRONT_LEFT] *= 0.95f;
- }
- m_aWheelRotation[CARWHEEL_FRONT_LEFT] += m_aWheelSpeed[CARWHEEL_FRONT_LEFT];
- }
- if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] <= 0.0f){
- if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){
- if(acceleration > 0.0f){
- if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] < 2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] -= 0.2f;
- }else{
- if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] > -2.0f)
- m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] += 0.1f;
- }
- }else{
- m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] *= 0.95f;
- }
- m_aWheelRotation[CARWHEEL_FRONT_RIGHT] += m_aWheelSpeed[CARWHEEL_FRONT_RIGHT];
- }
- }
+ if(pHandling->Flags & HANDLING_REARWHEEL_1ST){
+ ProcessCarWheelPair(CARWHEEL_REAR_LEFT, CARWHEEL_REAR_RIGHT, -999.0f, contactSpeeds, contactPoints,
+ traction, acceleration, brake, false);
+ ProcessCarWheelPair(CARWHEEL_FRONT_LEFT, CARWHEEL_FRONT_RIGHT, m_fSteerAngle, contactSpeeds, contactPoints,
+ traction, acceleration, brake, true);
+ }else{
+ ProcessCarWheelPair(CARWHEEL_FRONT_LEFT, CARWHEEL_FRONT_RIGHT, m_fSteerAngle, contactSpeeds, contactPoints,
+ traction, acceleration, brake, true);
+ ProcessCarWheelPair(CARWHEEL_REAR_LEFT, CARWHEEL_REAR_RIGHT, -999.0f, contactSpeeds, contactPoints,
+ traction, acceleration, brake, false);
}
for(i = 0; i < 4; i++){
@@ -1349,14 +1046,6 @@ CAutomobile::ProcessControl(void)
else
m_aWheelPosition[i] += (wheelPos - m_aWheelPosition[i])*0.75f;
}
- for(i = 0; i < 4; i++)
- m_aWheelState[i] = WheelState[i];
- if(m_fGasPedal < 0.0f){
- if(m_aWheelState[CARWHEEL_REAR_LEFT] == WHEEL_STATE_SPINNING)
- m_aWheelState[CARWHEEL_REAR_LEFT] = WHEEL_STATE_NORMAL;
- if(m_aWheelState[CARWHEEL_REAR_RIGHT] == WHEEL_STATE_SPINNING)
- m_aWheelState[CARWHEEL_REAR_RIGHT] = WHEEL_STATE_NORMAL;
- }
// Process horn
@@ -1367,7 +1056,7 @@ CAutomobile::ProcessControl(void)
if(UsesSiren()){
if(Pads[0].bHornHistory[Pads[0].iCurrHornHistory]){
if(Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+CPad::HORNHISTORY_SIZE-1) % CPad::HORNHISTORY_SIZE] &&
- Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+CPad::HORNHISTORY_SIZE-2) % CPad::HORNHISTORY_SIZE])
+ Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+1) % CPad::HORNHISTORY_SIZE])
m_nCarHornTimer = 1;
else
m_nCarHornTimer = 0;
@@ -1397,10 +1086,14 @@ CAutomobile::ProcessControl(void)
if(GetStatus() != STATUS_PLAYER && GetStatus() != STATUS_PLAYER_REMOTE && GetStatus() != STATUS_PHYSICS){
if(IsRealHeli()){
bEngineOn = false;
- m_aWheelSpeed[1] = Max(m_aWheelSpeed[1]-0.0005f, 0.0f);
- if(GetModelIndex() != MI_RCRAIDER && GetModelIndex() != MI_RCGOBLIN)
- if(m_aWheelSpeed[1] < 0.154f && m_aWheelSpeed[1] > 0.0044f)
- playRotorSound = true;
+ if(GetStatus() == STATUS_WRECKED)
+ m_aWheelSpeed[1] = 0.0f;
+ else{
+ m_aWheelSpeed[1] = Max(m_aWheelSpeed[1]-0.0005f, 0.0f);
+ if(GetModelIndex() != MI_RCRAIDER && GetModelIndex() != MI_RCGOBLIN)
+ if(m_aWheelSpeed[1] < 0.154f && m_aWheelSpeed[1] > 0.0044f)
+ playRotorSound = true;
+ }
}
}else if(isPlane && m_vecMoveSpeed.Magnitude() > 0.0f && CTimer::GetTimeStep() > 0.0f){
if(GetModelIndex() == MI_DODO)
@@ -1470,7 +1163,7 @@ CAutomobile::ProcessControl(void)
source = GetMatrix()*source + Max(DotProduct(m_vecMoveSpeed, GetForward()), 0.0f)*GetForward()*CTimer::GetTimeStep();
gun.FireProjectile(this, &source, 0.0f);
- CStats::RoundsFiredByPlayer++;
+// CStats::RoundsFiredByPlayer++;
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_SHOT_FIRED, 0.0f);
m_nGunFiringTime = CTimer::GetTimeInMilliseconds();
// Hunter gun
@@ -1480,7 +1173,7 @@ CAutomobile::ProcessControl(void)
source = GetMatrix()*source + m_vecMoveSpeed*CTimer::GetTimeStep();
gun.FireInstantHit(this, &source);
gun.AddGunshell(this, source, CVector2D(0.0f, 0.1f), 0.025f);
- CStats::RoundsFiredByPlayer++;
+// CStats::RoundsFiredByPlayer++;
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_SHOT_FIRED, 0.0f);
m_nGunFiringTime = CTimer::GetTimeInMilliseconds();
}
@@ -1492,7 +1185,7 @@ CAutomobile::ProcessControl(void)
source = GetMatrix()*source + m_vecMoveSpeed*CTimer::GetTimeStep();
gun.FireInstantHit(this, &source);
gun.AddGunshell(this, source, CVector2D(0.0f, 0.1f), 0.025f);
- CStats::RoundsFiredByPlayer++;
+// CStats::RoundsFiredByPlayer++;
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_SHOT_FIRED, 0.0f);
m_nGunFiringTime = CTimer::GetTimeInMilliseconds();
}
@@ -1593,9 +1286,10 @@ CAutomobile::ProcessControl(void)
float suspShake = 0.0f;
float surfShake = 0.0f;
float speedsq = m_vecMoveSpeed.MagnitudeSqr();
+ float wheelSpin = 0.0f;
for(i = 0; i < 4; i++){
float suspChange = m_aSuspensionSpringRatioPrev[i] - m_aSuspensionSpringRatio[i];
- if(suspChange > 0.3f && !drivingInSand && speedsq > SQR(0.2f)){
+ if(suspChange > 0.1f && !drivingInSand && speedsq > SQR(0.2f)){
if(Damage.GetWheelStatus(i) == WHEEL_STATUS_BURST)
DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_JUMP_2, suspChange);
else
@@ -1620,10 +1314,27 @@ CAutomobile::ProcessControl(void)
// BUG: this only observes one of the wheels
TheCamera.m_bVehicleSuspenHigh = Abs(suspChange) > 0.05f;
+ if((i == CARWHEEL_FRONT_LEFT || i == CARWHEEL_FRONT_RIGHT) && mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) ||
+ (i == CARWHEEL_REAR_LEFT || i == CARWHEEL_REAR_RIGHT) && mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier))
+ wheelSpin += WHEELSPIN_TARGET_RATE;
+ else if(m_aWheelState[i] == WHEEL_STATE_SPINNING)
+ wheelSpin += WHEELSPIN_INAIR_TARGET_RATE;
+
m_aSuspensionSpringRatioPrev[i] = m_aSuspensionSpringRatio[i];
m_aSuspensionSpringRatio[i] = 1.0f;
}
+ if(pHandling->Transmission.nDriveType == '4')
+ wheelSpin /= 4.0f;
+ else
+ wheelSpin /= 2.0f;
+ float spinChange;
+ if(wheelSpin < m_fWheelSpin)
+ spinChange = Pow(WHEELSPIN_FALL_RATE, CTimer::GetTimeStep());
+ else
+ spinChange = Pow(WHEELSPIN_RISE_RATE, CTimer::GetTimeStep());
+ m_fWheelSpin = m_fWheelSpin*spinChange + wheelSpin*(1.0f-spinChange);
+
// Shake pad
if(!drivingInSand && (suspShake > 0.0f || surfShake > 0.0f) && GetStatus() == STATUS_PLAYER){
@@ -1651,13 +1362,13 @@ CAutomobile::ProcessControl(void)
// TODO: make the numbers defines
float heading;
- if(GetPosition().x > 1950.0f-400.0f){
+ if(GetPosition().x > 1950.0f){
if(m_vecMoveSpeed.x > 0.0f)
m_vecMoveSpeed.x *= -1.0f;
heading = GetForward().Heading();
if(heading > 0.0f) // going west
SetHeading(-heading);
- }else if(GetPosition().x < -1950.0f-400.0f){
+ }else if(GetPosition().x < -1950.0f){
if(m_vecMoveSpeed.x < 0.0f)
m_vecMoveSpeed.x *= -1.0f;
heading = GetForward().Heading();
@@ -1710,17 +1421,262 @@ CAutomobile::ProcessControl(void)
CVector(0.0f, 0.0f, 0.0f), nil, 0.7f, col, 0, 0, 0, 3000);
if(CWorld::TestSphereAgainstWorld(GetPosition(), 10.0f, this, true, false, false, false, false, false) ||
- GetPosition().z < 6.0f)
+ GetPosition().z < 0.0f)
if(!bRenderScorched){ // we already know this is true...
CExplosion::AddExplosion(this, nil, EXPLOSION_CAR, GetPosition(), 0);
bRenderScorched = true;
}
}
+
+ // The rest was in PreRender
+
+ bool onlyFrontWheels = false;
+ if(IsRealHeli()){
+ // Looks like LCS actually uses fmodf for the angles but VC has a loop...
+ // top rotor
+ m_aWheelRotation[1] += m_aWheelSpeed[1]*CTimer::GetTimeStep();
+ while(m_aWheelRotation[1] > TWOPI) m_aWheelRotation[1] -= TWOPI;
+ // rear rotor
+ m_aWheelRotation[3] += m_aWheelSpeed[1]*CTimer::GetTimeStep();
+ while(m_aWheelRotation[3] > TWOPI) m_aWheelRotation[3] -= TWOPI;
+ onlyFrontWheels = true;
+ }
+
+ CVehicleModelInfo *mi = GetModelInfo();
+ CVector contactPoints[4]; // relative to model
+ CVector contactSpeeds[4]; // speed at contact points
+ CVector frontWheelFwd = Multiply3x3(GetMatrix(), CVector(-Sin(m_fSteerAngle), Cos(m_fSteerAngle), 0.0f));
+ CVector rearWheelFwd = GetForward();
+ for(i = 0; i < 4; i++){
+ if (m_aWheelTimer[i] > 0.0f && (!onlyFrontWheels || i == CARWHEEL_FRONT_LEFT || i == CARWHEEL_FRONT_RIGHT)) {
+ contactPoints[i] = m_aWheelColPoints[i].point - GetPosition();
+ contactSpeeds[i] = GetSpeed(contactPoints[i]);
+ if (i == CARWHEEL_FRONT_LEFT || i == CARWHEEL_FRONT_RIGHT)
+ m_aWheelSpeed[i] = ProcessWheelRotation(m_aWheelState[i], frontWheelFwd, contactSpeeds[i], 0.5f*mi->m_wheelScale);
+ else
+ m_aWheelSpeed[i] = ProcessWheelRotation(m_aWheelState[i], rearWheelFwd, contactSpeeds[i], 0.5f*mi->m_wheelScale);
+ m_aWheelRotation[i] += m_aWheelSpeed[i];
+ }
+ }
+
+ if(GetModelIndex() == MI_DODO){
+ ProcessSwingingDoor(CAR_DOOR_LF, DOOR_FRONT_LEFT);
+ ProcessSwingingDoor(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
+ }else if(GetModelIndex() == MI_RHINO){
+ }else if(IsRealHeli()){
+ }else{
+ ProcessSwingingDoor(CAR_DOOR_LF, DOOR_FRONT_LEFT);
+ ProcessSwingingDoor(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
+ ProcessSwingingDoor(CAR_DOOR_LR, DOOR_REAR_LEFT);
+ ProcessSwingingDoor(CAR_DOOR_RR, DOOR_REAR_RIGHT);
+ ProcessSwingingDoor(CAR_BONNET, DOOR_BONNET);
+ ProcessSwingingDoor(CAR_BOOT, DOOR_BOOT);
+ }
}
#pragma optimize("", on)
void
+CAutomobile::ProcessCarWheelPair(int leftWheel, int rightWheel, float steerAngle, CVector *contactSpeeds, CVector *contactPoints, float traction, float acceleration, float brake, bool bFront)
+{
+ bool driveWheels;
+ float suspensionBias;
+
+ if(bFront){
+ driveWheels = mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier);
+ suspensionBias = 2.0f*pHandling->fSuspensionBias;
+ }else{
+ driveWheels = mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier);
+ suspensionBias = 2.0f*(1.0f-pHandling->fSuspensionBias);
+
+ float fwdSpeed = DotProduct(m_vecMoveSpeed, GetForward());
+ if(bIsHandbrakeOn && Abs(fwdSpeed) > 0.01f){
+#ifdef FIX_BUGS
+ // Not sure if this is needed, but brake usually has timestep as a factor
+ brake = 20000.0f * CTimer::GetTimeStepFix();
+#else
+ brake = 20000.0f;
+#endif
+/*
+ if(fwdSpeed > 0.1f && pHandling->Flags & HANDLING_HANDBRAKE_TYRE){
+ m_fTireTemperature += 0.005*CTimer::GetTimeStep();
+ if(m_fTireTemperature > 2.0f)
+ m_fTireTemperature = 2.0f;
+ }
+*/
+ }else if(driveWheels && m_doingBurnout){
+ brake = 0.0f;
+ traction = 0.0f;
+ // BUG: missing timestep
+ ApplyTurnForce(contactPoints[leftWheel], -0.003f*m_fTurnMass*Min(3000.0f/m_fTurnMass, 1.0f)*m_fSteerAngle*GetRight());
+ }else if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)){
+ traction *= m_fTireTemperature;
+ }
+ }
+
+ // Wheels on ground
+ if(m_aWheelTimer[leftWheel] > 0.0f || m_aWheelTimer[rightWheel] > 0.0f){
+ CVector wheelFwd, wheelRight;
+ float s, c;
+ bool canSteer = steerAngle > -100.0f;
+ if(canSteer){
+ s = Sin(steerAngle);
+ c = Cos(steerAngle);
+ }
+
+ bool neutralHandling = GetStatus() != STATUS_PLAYER && GetStatus() != STATUS_PLAYER_REMOTE && (pHandling->Flags & HANDLING_NEUTRALHANDLING);
+ float brakeBias, tractionBias;
+ if(bFront){
+ brakeBias = neutralHandling ? 1.0f : 2.0f*pHandling->fBrakeBias;
+ tractionBias = neutralHandling ? 1.0f : 2.0f*pHandling->fTractionBias;
+ }else{
+ brakeBias = neutralHandling ? 1.0f : 2.0f*(1.0f-pHandling->fBrakeBias);
+ tractionBias = neutralHandling ? 1.0f : 2.0f*(1.0f-pHandling->fTractionBias);
+ }
+
+ if(m_aWheelTimer[leftWheel] > 0.0f){
+ float fThrust = driveWheels ? acceleration : 0.0f;
+
+ wheelFwd = GetForward();
+ wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[leftWheel].normal)*m_aWheelColPoints[leftWheel].normal;
+ wheelFwd.Normalise();
+ wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[leftWheel].normal);
+ wheelRight.Normalise();
+ if(canSteer){
+ CVector tmp = c*wheelFwd - s*wheelRight;
+ wheelRight = s*wheelFwd + c*wheelRight;
+ wheelFwd = tmp;
+ }
+
+ m_aWheelColPoints[leftWheel].surfaceA = SURFACE_WHEELBASE;
+ float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[leftWheel])*traction;
+ if(GetStatus() == STATUS_PLAYER){
+ adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[leftWheel].surfaceB);
+ adhesion *= Min(suspensionBias*pHandling->fSuspensionForceLevel*4.0f*(1.0f-m_aSuspensionSpringRatio[leftWheel]), 2.0f);
+ }
+ tWheelState WheelState = m_aWheelState[leftWheel];
+ if(Damage.GetWheelStatus(leftWheel) == WHEEL_STATUS_BURST)
+ ProcessWheel(wheelFwd, wheelRight,
+ contactSpeeds[leftWheel], contactPoints[leftWheel],
+ m_nWheelsOnGround, fThrust,
+ brake*brakeBias,
+ adhesion*tractionBias*Damage.m_fWheelDamageEffect,
+ leftWheel,
+ &m_aWheelRotation[leftWheel],
+ &WheelState,
+ WHEEL_STATUS_BURST);
+ else
+ ProcessWheel(wheelFwd, wheelRight,
+ contactSpeeds[leftWheel], contactPoints[leftWheel],
+ m_nWheelsOnGround, fThrust,
+ brake*brakeBias,
+ adhesion*tractionBias,
+ leftWheel,
+ &m_aWheelRotation[leftWheel],
+ &WheelState,
+ WHEEL_STATUS_OK);
+
+ if(driveWheels && m_fGasPedal < 0.0f && WheelState == WHEEL_STATE_SPINNING)
+ m_aWheelState[leftWheel] = WHEEL_STATE_NORMAL;
+ else
+ m_aWheelState[leftWheel] = WheelState;
+ }
+
+ if(m_aWheelTimer[rightWheel] > 0.0f){
+ float fThrust = driveWheels ? acceleration : 0.0f;
+
+ wheelFwd = GetForward();
+ wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[rightWheel].normal)*m_aWheelColPoints[rightWheel].normal;
+ wheelFwd.Normalise();
+ wheelRight = CrossProduct(wheelFwd, m_aWheelColPoints[rightWheel].normal);
+ wheelRight.Normalise();
+ if(canSteer){
+ CVector tmp = c*wheelFwd - s*wheelRight;
+ wheelRight = s*wheelFwd + c*wheelRight;
+ wheelFwd = tmp;
+ }
+
+ m_aWheelColPoints[rightWheel].surfaceA = SURFACE_WHEELBASE;
+ float adhesion = CSurfaceTable::GetAdhesiveLimit(m_aWheelColPoints[rightWheel])*traction;
+ if(GetStatus() == STATUS_PLAYER){
+ adhesion *= CSurfaceTable::GetWetMultiplier(m_aWheelColPoints[rightWheel].surfaceB);
+ adhesion *= Min(suspensionBias*pHandling->fSuspensionForceLevel*4.0f*(1.0f-m_aSuspensionSpringRatio[rightWheel]), 2.0f);
+ }
+ tWheelState WheelState = m_aWheelState[rightWheel];
+ if(Damage.GetWheelStatus(rightWheel) == WHEEL_STATUS_BURST)
+ ProcessWheel(wheelFwd, wheelRight,
+ contactSpeeds[rightWheel], contactPoints[rightWheel],
+ m_nWheelsOnGround, fThrust,
+ brake*brakeBias,
+ adhesion*tractionBias*Damage.m_fWheelDamageEffect,
+ rightWheel,
+ &m_aWheelRotation[rightWheel],
+ &WheelState,
+ WHEEL_STATUS_BURST);
+ else
+ ProcessWheel(wheelFwd, wheelRight,
+ contactSpeeds[rightWheel], contactPoints[rightWheel],
+ m_nWheelsOnGround, fThrust,
+ brake*brakeBias,
+ adhesion*tractionBias,
+ rightWheel,
+ &m_aWheelRotation[rightWheel],
+ &WheelState,
+ WHEEL_STATUS_OK);
+
+ if(driveWheels && m_fGasPedal < 0.0f && WheelState == WHEEL_STATE_SPINNING)
+ m_aWheelState[rightWheel] = WHEEL_STATE_NORMAL;
+ else
+ m_aWheelState[rightWheel] = WheelState;
+ }
+ }
+
+ if(!bFront){
+ if(m_doingBurnout && driveWheels &&
+ (m_aWheelState[CARWHEEL_REAR_LEFT] == WHEEL_STATE_SPINNING || m_aWheelState[CARWHEEL_REAR_RIGHT] == WHEEL_STATE_SPINNING)){
+ m_fTireTemperature += 0.001f*CTimer::GetTimeStep();
+ if(m_fTireTemperature > 3.0f)
+ m_fTireTemperature = 3.0f;
+ }else if(m_fTireTemperature > 1.0f){
+ m_fTireTemperature = (m_fTireTemperature - 1.0f)*Pow(0.995f, CTimer::GetTimeStep()) + 1.0f;
+ }
+ }
+
+ // Process wheels off ground
+
+ if(!IsRealHeli()){
+ if(m_aWheelTimer[leftWheel] <= 0.0f){
+ if(driveWheels && acceleration != 0.0f){
+ if(acceleration > 0.0f){
+ if(m_aWheelSpeed[leftWheel] < 1.0f)
+ m_aWheelSpeed[leftWheel] -= 0.1f;
+ }else{
+ if(m_aWheelSpeed[leftWheel] > -1.0f)
+ m_aWheelSpeed[leftWheel] += 0.05f;
+ }
+ }else{
+ m_aWheelSpeed[leftWheel] *= 0.95f;
+ }
+ m_aWheelRotation[leftWheel] += m_aWheelSpeed[leftWheel]*CTimer::GetTimeStep();
+ }
+ if(m_aWheelTimer[rightWheel] <= 0.0f){
+ if(driveWheels && acceleration != 0.0f){
+ if(acceleration > 0.0f){
+ if(m_aWheelSpeed[rightWheel] < 1.0f)
+ m_aWheelSpeed[rightWheel] -= 0.1f;
+ }else{
+ if(m_aWheelSpeed[rightWheel] > -1.0f)
+ m_aWheelSpeed[rightWheel] += 0.05f;
+ }
+ }else{
+ m_aWheelSpeed[rightWheel] *= 0.95f;
+ }
+ m_aWheelRotation[rightWheel] += m_aWheelSpeed[rightWheel]*CTimer::GetTimeStep();
+ }
+ }
+}
+
+void
CAutomobile::Teleport(CVector pos)
{
CWorld::Remove(this);
@@ -1735,25 +1691,24 @@ CAutomobile::Teleport(CVector pos)
CWorld::Add(this);
}
+float gHeadlightRange = 25.0f;
+float gTaxilightRange = 1.1f;
+CVector gHeadlightColour(0.86f, 0.82f, 1.0f);
+CVector gTaxilightColour(1.0, 1.0f, 0.5f);
+
void
CAutomobile::PreRender(void)
{
int i, j, n;
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
- if(GetModelIndex() == MI_RHINO && m_aCarNodes[CAR_WINDSCREEN]){
- // Rotate Rhino turret
- CMatrix m;
- CVector p;
- m.Attach(RwFrameGetMatrix(m_aCarNodes[CAR_WINDSCREEN]));
- p = m.GetPosition();
- m.SetRotateZ(m_fCarGunLR);
- m.Translate(p);
- m.UpdateRW();
- }
+ if(GetModelIndex() == MI_FIRETRUCK)
+ FireTruckControl();
+
+ CVehicle::PreRender();
if(GetModelIndex() == MI_RCBANDIT){
- CVector pos = GetMatrix() * CVector(0.218f, -0.444f, 0.391f);
+ CVector pos = GetMatrix() * CVector(0.218f, -0.3f, 0.0f);
CAntennas::RegisterOne((uintptr)this, GetUp(), pos, 1.0f);
}
@@ -1762,7 +1717,7 @@ CAutomobile::PreRender(void)
// Wheel particles
- if(GetModelIndex() == MI_DODO || GetVehicleAppearance() != VEHICLE_APPEARANCE_CAR){
+ if(GetModelIndex() == MI_DODO){
; // nothing
}else if(GetModelIndex() == MI_RCBANDIT){
for(i = 0; i < 4; i++){
@@ -1958,7 +1913,7 @@ CAutomobile::PreRender(void)
// Rain on roof
- if(!CCullZones::CamNoRain() && !CCullZones::PlayerNoRain() &&
+ if(!CCullZones::CamNoRain() && !CCullZones::PlayerNoRain() && // LCS has those checks twice, but let's not be silly
Abs(fwdSpeed) < 20.0f && CWeather::Rain > 0.02f){
CColModel *colModel = GetColModel();
@@ -1973,7 +1928,7 @@ CAutomobile::PreRender(void)
p3 = GetMatrix() * p3;
c = (p1 + p2 + p3)/3.0f;
- n = 6.0f*CWeather::Rain;
+ n = 4.5f*CWeather::Rain;
for(j = 0; j <= n; j++)
CParticle::AddParticle(PARTICLE_RAIN_SPLASHUP,
c + CVector(CGeneral::GetRandomNumberInRange(-0.4f, 0.4f), CGeneral::GetRandomNumberInRange(-0.4f, 0.4f), 0.0f),
@@ -2003,8 +1958,10 @@ CAutomobile::PreRender(void)
dir1.y = m_vecMoveSpeed.y;
}
+ bool dblExhaust = false;
pos1 = GetMatrix() * exhaustPos;
if(pHandling->Flags & HANDLING_DBL_EXHAUST){
+ dblExhaust = true;
pos2 = exhaustPos;
pos2.x = -pos2.x;
pos2 = GetMatrix() * pos2;
@@ -2013,7 +1970,8 @@ CAutomobile::PreRender(void)
static float fumesLimit = 2.0f;
if(CGeneral::GetRandomNumberInRange(1.0f, 3.0f)*(m_fGasPedal+1.1f) > fumesLimit)
- for(i = 0; i < 4;){
+// for(i = 0; i < 4;)
+ {
CParticle::AddParticle(PARTICLE_EXHAUST_FUMES, pos1, dir1);
if(pHandling->Flags & HANDLING_DBL_EXHAUST)
CParticle::AddParticle(PARTICLE_EXHAUST_FUMES, pos2, dir2);
@@ -2026,6 +1984,7 @@ CAutomobile::PreRender(void)
CParticle::AddParticle(PARTICLE_EXHAUST_FUMES, pos2, dir2);
}
+/*
// Fire on Cuban hermes
if(GetModelIndex() == MI_CUBAN && i == 1 && m_fGasPedal > 0.9f){
if(m_nCurrentGear == 1 || m_nCurrentGear == 3 && (CTimer::GetTimeInMilliseconds()%1500) > 750){
@@ -2063,6 +2022,7 @@ CAutomobile::PreRender(void)
dir2 -= 0.05f*GetRight();
}else
i = 99;
+*/
}
}
}
@@ -2082,26 +2042,26 @@ CAutomobile::PreRender(void)
switch(GetModelIndex()){
case MI_FIRETRUCK:
- pos1 = CVector(1.1f, 1.7f, 2.0f);
- pos2 = CVector(-1.1f, 1.7f, 2.0f);
+ pos1 = CVector(0.91f, 1.7f, 1.86f);
+ pos2 = CVector(-0.91f, 1.7f, 1.86f);
r1 = 255; g1 = 0; b1 = 0;
r2 = 255; g2 = 255; b2 = 0;
break;
case MI_AMBULAN:
- pos1 = CVector(1.1f, 0.9f, 1.6f);
- pos2 = CVector(-1.1f, 0.9f, 1.6f);
+ pos1 = CVector(0.95f, 0.64f, 1.6f);
+ pos2 = CVector(-0.95f, 0.64f, 1.6f);
r1 = 255; g1 = 0; b1 = 0;
r2 = 255; g2 = 255; b2 = 255;
break;
case MI_POLICE:
- pos1 = CVector(0.7f, -0.4f, 1.0f);
- pos2 = CVector(-0.7f, -0.4f, 1.0f);
+ pos1 = CVector(0.47f, -0.4f, 1.0f);
+ pos2 = CVector(-0.47f, -0.4f, 1.0f);
r1 = 255; g1 = 0; b1 = 0;
r2 = 0; g2 = 0; b2 = 255;
break;
case MI_ENFORCER:
- pos1 = CVector(1.1f, 0.8f, 1.2f);
- pos2 = CVector(-1.1f, 0.8f, 1.2f);
+ pos1 = CVector(0.7f, 0.98f, 1.55f);
+ pos2 = CVector(-0.7f, 0.98f, 1.55f);
r1 = 255; g1 = 0; b1 = 0;
r2 = 0; g2 = 0; b2 = 255;
break;
@@ -2174,7 +2134,7 @@ CAutomobile::PreRender(void)
}
break;
- case MI_FBIRANCH:
+ //case MI_FBIRANCH:
case MI_VICECHEE:
if(m_bSirenOrAlarm){
CVector pos = GetMatrix() * CVector(0.4f, 0.6f, 0.3f);
@@ -2200,11 +2160,39 @@ CAutomobile::PreRender(void)
break;
case MI_TAXI:
+ if(bTaxiLight){
+ CVector pos = GetPosition() + GetForward()*-0.3f + GetUp()*0.9f;
+ CCoronas::RegisterCorona((uintptr)this + 21,
+ 128, 128, 0, 255,
+ pos, 0.8f, 50.0f,
+ CCoronas::TYPE_NORMAL,
+ CCoronas::FLARE_NONE,
+ CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f);
+ CPointLights::AddLight(CPointLights::LIGHT_POINT,
+ pos, CVector(0.0f, 0.0f, 0.0f), gTaxilightRange,
+ gTaxilightColour.x, gTaxilightColour.y, gTaxilightColour.z, CPointLights::FOG_NONE, true);
+ }
+ break;
+
case MI_CABBIE:
- case MI_ZEBRA:
+ if(bTaxiLight){
+ CVector pos = GetPosition() + GetUp()*0.9f;
+ CCoronas::RegisterCorona((uintptr)this + 21,
+ 128, 128, 0, 255,
+ pos, 0.8f, 50.0f,
+ CCoronas::TYPE_NORMAL,
+ CCoronas::FLARE_NONE,
+ CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f);
+ CPointLights::AddLight(CPointLights::LIGHT_POINT,
+ pos, CVector(0.0f, 0.0f, 0.0f), gTaxilightRange,
+ gTaxilightColour.x, gTaxilightColour.y, gTaxilightColour.z, CPointLights::FOG_NONE, true);
+ }
+ break;
+
+ case MI_BORGNINE:
case MI_KAUFMAN:
if(bTaxiLight){
- CVector pos = GetPosition() + GetUp()*0.95f;
+ CVector pos = GetPosition() + GetForward()*-0.3f + GetUp()*0.85f;
CCoronas::RegisterCorona((uintptr)this + 21,
128, 128, 0, 255,
pos, 0.8f, 50.0f,
@@ -2212,8 +2200,8 @@ CAutomobile::PreRender(void)
CCoronas::FLARE_NONE,
CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f);
CPointLights::AddLight(CPointLights::LIGHT_POINT,
- pos, CVector(0.0f, 0.0f, 0.0f), 10.0f,
- 1.0f, 1.0f, 0.5f, CPointLights::FOG_NONE, true);
+ pos, CVector(0.0f, 0.0f, 0.0f), gTaxilightRange,
+ gTaxilightColour.x, gTaxilightColour.y, gTaxilightColour.z, CPointLights::FOG_NONE, true);
}
break;
}
@@ -2250,7 +2238,8 @@ CAutomobile::PreRender(void)
else
alarmOff = true;
}
- if(bEngineOn && bLightsOn || alarmOn || alarmOff){
+ bool playerRemote = this == FindPlayerVehicle() && CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle;
+ if((bEngineOn && bLightsOn && !m_bGarageTurnedLightsOff || alarmOn || alarmOff) && !playerRemote){
CVector lookVector = GetPosition() - TheCamera.GetPosition();
float camDist = lookVector.Magnitude();
if(camDist != 0.0f)
@@ -2374,12 +2363,12 @@ CAutomobile::PreRender(void)
intensity += 0.4f;
size += 0.3f;
if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
- CCoronas::RegisterCorona((uintptr)this + 14, 128*intensity, 128*intensity, 128*intensity, 255,
+ CCoronas::RegisterCorona((uintptr)this + 2, 128*intensity, 128*intensity, 128*intensity, 255,
lightL, size, 50.0f*TheCamera.LODDistMultiplier,
CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle);
if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK)
- CCoronas::RegisterCorona((uintptr)this + 15, 128*intensity, 128*intensity, 128*intensity, 255,
+ CCoronas::RegisterCorona((uintptr)this + 3, 128*intensity, 128*intensity, 128*intensity, 255,
lightR, size, 50.0f*TheCamera.LODDistMultiplier,
CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle);
@@ -2391,23 +2380,23 @@ CAutomobile::PreRender(void)
if(alarmOff){
if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
- CCoronas::RegisterCorona((uintptr)this + 14, 0, 0, 0, 0,
+ CCoronas::RegisterCorona((uintptr)this + 2, 0, 0, 0, 0,
lightL, size, 0.0f,
CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle);
if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK)
- CCoronas::RegisterCorona((uintptr)this + 15, 0, 0, 0, 0,
+ CCoronas::RegisterCorona((uintptr)this + 3, 0, 0, 0, 0,
lightR, size, 0.0f,
CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle);
}else{
if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
- CCoronas::RegisterCorona((uintptr)this + 14, 128*intensity, 0, 0, 255,
+ CCoronas::RegisterCorona((uintptr)this + 2, 128*intensity, 0, 0, 255,
lightL, size, 50.0f*TheCamera.LODDistMultiplier,
CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle);
if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK)
- CCoronas::RegisterCorona((uintptr)this + 15, 128*intensity, 0, 0, 255,
+ CCoronas::RegisterCorona((uintptr)this + 3, 128*intensity, 0, 0, 255,
lightR, size, 50.0f*TheCamera.LODDistMultiplier,
CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle);
@@ -2433,27 +2422,52 @@ CAutomobile::PreRender(void)
CVector pos = GetPosition();
CVector2D fwd(GetForward());
fwd.Normalise();
- float f = headLightPos.y + 6.0f;
+ float f = headLightPos.y + 7.0f;
pos += CVector(f*fwd.x, f*fwd.y, 2.0f);
- if(Damage.GetLightStatus(VEHLIGHT_FRONT_LEFT) == LIGHT_STATUS_OK ||
- Damage.GetLightStatus(VEHLIGHT_FRONT_RIGHT) == LIGHT_STATUS_OK)
+ if(Damage.GetLightStatus(VEHLIGHT_FRONT_RIGHT) == LIGHT_STATUS_OK &&
+ Damage.GetLightStatus(VEHLIGHT_FRONT_LEFT) == LIGHT_STATUS_OK)
CShadows::StoreCarLightShadow(this, (uintptr)this + 22, gpShadowHeadLightsTex, &pos,
- 7.0f*fwd.x, 7.0f*fwd.y, 5.5f*fwd.y, -5.5f*fwd.x, 45, 45, 45, 7.0f);
+ 7.0f*fwd.x, 7.0f*fwd.y, -3.5f*fwd.y, 3.5f*fwd.x, 145, 145, 145, 7.0f, true, -0.4f, 1.4f);
+ else if(Damage.GetLightStatus(VEHLIGHT_FRONT_RIGHT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 22, gpShadowHeadLightsTex, &pos,
+ 7.0f*fwd.x, 7.0f*fwd.y, -3.5f*fwd.y, 3.5f*fwd.x, 145, 145, 145, 7.0f, false, 9.9f, 1.4f);
+ else if(Damage.GetLightStatus(VEHLIGHT_FRONT_LEFT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 22, gpShadowHeadLightsTex, &pos,
+ 7.0f*fwd.x, 7.0f*fwd.y, -3.5f*fwd.y, 3.5f*fwd.x, 145, 145, 145, 7.0f, false, -0.4f, 1.4f);
- f = (tailLightPos.y - 2.5f) - (headLightPos.y + 6.0f);
+ f = (tailLightPos.y - 2.1f) - (headLightPos.y + 7.0f);
pos += CVector(f*fwd.x, f*fwd.y, 0.0f);
- if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK ||
- Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK)
- CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowExplosionTex, &pos,
- 3.0f, 0.0f, 0.0f, -3.0f, 35, 0, 0, 4.0f);
+ if(m_fGasPedal < 0.0f){
+ if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK &&
+ Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowHeadLightsTex, &pos,
+ -2.0f*fwd.x, -2.0f*fwd.y, 1.5f*fwd.y, -1.5f*fwd.x, 58, 58, 58, 4.0f, true, -0.5f, 1.5f);
+ else if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowHeadLightsTex, &pos,
+ -2.0f*fwd.x, -2.0f*fwd.y, 1.5f*fwd.y, -1.5f*fwd.x, 58, 58, 58, 4.0f, false, 9.9f, 1.5f);
+ else if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowHeadLightsTex, &pos,
+ -2.0f*fwd.x, -2.0f*fwd.y, 1.5f*fwd.y, -1.5f*fwd.x, 58, 58, 58, 4.0f, false, -0.5f, 1.5f);
+ }else{
+ if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK &&
+ Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowHeadLightsTex, &pos,
+ -2.0f*fwd.x, -2.0f*fwd.y, 1.5f*fwd.y, -1.5f*fwd.x, 56, 0, 0, 4.0f, true, -0.5f, 1.5f);
+ else if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowHeadLightsTex, &pos,
+ -2.0f*fwd.x, -2.0f*fwd.y, 1.5f*fwd.y, -1.5f*fwd.x, 56, 0, 0, 4.0f, false, 9.9f, 1.5f);
+ else if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK)
+ CShadows::StoreCarLightShadow(this, (uintptr)this + 25, gpShadowHeadLightsTex, &pos,
+ -2.0f*fwd.x, -2.0f*fwd.y, 1.5f*fwd.y, -1.5f*fwd.x, 56, 0, 0, 4.0f, false, -0.5f, 1.5f);
+ }
}
if(this == FindPlayerVehicle() && !alarmOff){
if(Damage.GetLightStatus(VEHLIGHT_FRONT_LEFT) == LIGHT_STATUS_OK ||
Damage.GetLightStatus(VEHLIGHT_FRONT_RIGHT) == LIGHT_STATUS_OK)
CPointLights::AddLight(CPointLights::LIGHT_DIRECTIONAL, GetPosition(), GetForward(),
- 20.0f, 1.0f, 1.0f, 1.0f,
+ gHeadlightRange, gHeadlightColour.x, gHeadlightColour.y, gHeadlightColour.z,
FindPlayerVehicle()->m_vecMoveSpeed.MagnitudeSqr2D() < sq(0.45f) ? CPointLights::FOG_NORMAL : CPointLights::FOG_NONE,
false);
CVector pos = GetPosition() - 4.0f*GetForward();
@@ -2461,15 +2475,15 @@ CAutomobile::PreRender(void)
Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) {
if(m_fBrakePedal > 0.0f)
CPointLights::AddLight(CPointLights::LIGHT_POINT, pos, CVector(0.0f, 0.0f, 0.0f),
- 10.0f, 1.0f, 0.0f, 0.0f,
+ 8.39f, 1.0f, 0.0f, 0.0f,
CPointLights::FOG_NONE, false);
else
CPointLights::AddLight(CPointLights::LIGHT_POINT, pos, CVector(0.0f, 0.0f, 0.0f),
- 7.0f, 0.6f, 0.0f, 0.0f,
+ 5.13f, 0.64f, 0.0f, 0.0f,
CPointLights::FOG_NONE, false);
}
}
- }else if(GetStatus() != STATUS_ABANDONED && GetStatus() != STATUS_WRECKED){
+ }else if(GetStatus() != STATUS_ABANDONED && GetStatus() != STATUS_WRECKED && !m_bGarageTurnedLightsOff && !playerRemote){
// Lights off
CVector lightPos = mi->m_positions[CAR_POS_TAILLIGHTS];
@@ -2538,7 +2552,7 @@ CAutomobile::PreRender(void)
else
CShadows::StoreShadowForVehicle(this, VEH_SHD_TYPE_CAR);
- DoSunGlare();
+// DoSunGlare();
// Heli dust
if(IsRealHeli() && m_aWheelSpeed[1] > 0.1125f && GetPosition().z < 30.0f){
@@ -2559,31 +2573,13 @@ CAutomobile::PreRender(void)
CMatrix mat;
CVector pos;
- bool onlyFrontWheels = false;
- if(IsRealHeli()){
- // top rotor
- m_aWheelRotation[1] += m_aWheelSpeed[1]*CTimer::GetTimeStep();
- while(m_aWheelRotation[1] > TWOPI) m_aWheelRotation[1] -= TWOPI;
- // rear rotor
- m_aWheelRotation[3] += m_aWheelSpeed[1]*CTimer::GetTimeStep();
- while(m_aWheelRotation[3] > TWOPI) m_aWheelRotation[3] -= TWOPI;
- onlyFrontWheels = true;
- }
-
- CVector contactPoints[4]; // relative to model
- CVector contactSpeeds[4]; // speed at contact points
- CVector frontWheelFwd = Multiply3x3(GetMatrix(), CVector(-Sin(m_fSteerAngle), Cos(m_fSteerAngle), 0.0f));
- CVector rearWheelFwd = GetForward();
- for(i = 0; i < 4; i++){
- if (m_aWheelTimer[i] > 0.0f && (!onlyFrontWheels || i == CARWHEEL_FRONT_LEFT || i == CARWHEEL_FRONT_RIGHT)) {
- contactPoints[i] = m_aWheelColPoints[i].point - GetPosition();
- contactSpeeds[i] = GetSpeed(contactPoints[i]);
- if (i == CARWHEEL_FRONT_LEFT || i == CARWHEEL_FRONT_RIGHT)
- m_aWheelSpeed[i] = ProcessWheelRotation(m_aWheelState[i], frontWheelFwd, contactSpeeds[i], 0.5f*mi->m_wheelScale);
- else
- m_aWheelSpeed[i] = ProcessWheelRotation(m_aWheelState[i], rearWheelFwd, contactSpeeds[i], 0.5f*mi->m_wheelScale);
- m_aWheelRotation[i] += m_aWheelSpeed[i];
- }
+ // what's this supposed to be? Rhino doesn't have this node
+ if(GetModelIndex() == MI_RHINO && m_aCarNodes[CAR_BONNET]){
+ mat.Attach(RwFrameGetMatrix(m_aCarNodes[CAR_BONNET]));
+ pos = mat.GetPosition();
+ mat.SetRotateZ(m_fCarGunLR);
+ mat.Translate(pos);
+ mat.UpdateRW();
}
RwRGBA hoverParticleCol = { 255, 255, 255, 32 };
@@ -2773,9 +2769,6 @@ CAutomobile::PreRender(void)
mat.Translate(pos);
mat.UpdateRW();
}
-
- ProcessSwingingDoor(CAR_DOOR_LF, DOOR_FRONT_LEFT);
- ProcessSwingingDoor(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
}else if(GetModelIndex() == MI_RHINO){
// Front right wheel
mat.Attach(RwFrameGetMatrix(m_aCarNodes[CAR_WHEEL_RF]));
@@ -2849,8 +2842,8 @@ CAutomobile::PreRender(void)
}else{
CParticle::AddParticle(PARTICLE_CAR_SPLASH, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].point,
0.3f*m_vecMoveSpeed+0.15f*GetRight()+CVector(0.0f, 0.0f, 0.1f), nil, 0.15f, hoverParticleCol,
- CGeneral::GetRandomNumberInRange(0.0f, 90.0f),
- CGeneral::GetRandomNumberInRange(0.0f, 10.0f), 1);
+ CGeneral::GetRandomNumberInRange(0.0f, 10.0f),
+ CGeneral::GetRandomNumberInRange(0.0f, 90.0f), 1);
}
#ifdef BETTER_ALLCARSAREDODO_CHEAT
} else if (bAllDodosCheat && m_nDriveWheelsOnGround == 0 && m_nDriveWheelsOnGroundPrev == 0) {
@@ -2890,8 +2883,8 @@ CAutomobile::PreRender(void)
}else{
CParticle::AddParticle(PARTICLE_CAR_SPLASH, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].point,
0.3f*m_vecMoveSpeed-0.15f*GetRight()+CVector(0.0f, 0.0f, 0.1f), nil, 0.15f, hoverParticleCol,
- CGeneral::GetRandomNumberInRange(0.0f, 90.0f),
- CGeneral::GetRandomNumberInRange(0.0f, 10.0f), 1);
+ CGeneral::GetRandomNumberInRange(0.0f, 10.0f),
+ CGeneral::GetRandomNumberInRange(0.0f, 90.0f), 1);
}
#ifdef BETTER_ALLCARSAREDODO_CHEAT
} else if (bAllDodosCheat && m_nDriveWheelsOnGround == 0 && m_nDriveWheelsOnGroundPrev == 0) {
@@ -2911,13 +2904,6 @@ CAutomobile::PreRender(void)
mat.Scale(mi->m_wheelScale);
mat.Translate(pos);
mat.UpdateRW();
-
- ProcessSwingingDoor(CAR_DOOR_LF, DOOR_FRONT_LEFT);
- ProcessSwingingDoor(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
- ProcessSwingingDoor(CAR_DOOR_LR, DOOR_REAR_LEFT);
- ProcessSwingingDoor(CAR_DOOR_RR, DOOR_REAR_RIGHT);
- ProcessSwingingDoor(CAR_BONNET, DOOR_BONNET);
- ProcessSwingingDoor(CAR_BOOT, DOOR_BOOT);
}
if((GetModelIndex() == MI_PHEONIX || GetModelIndex() == MI_BFINJECT) &&
@@ -2968,6 +2954,7 @@ CAutomobile::Render(void)
{
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
+ m_nSetPieceExtendedRangeTime = CTimer::GetTimeInMilliseconds() + 3000;
mi->SetVehicleColour(m_currentColour1, m_currentColour2);
if(IsRealHeli()){
@@ -3093,6 +3080,9 @@ static float fMouseCentreMult = 0.975f;
void
CAutomobile::ProcessControlInputs(uint8 pad)
{
+ if(this == FindPlayerVehicle() && CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle)
+ return;
+
float speed = DotProduct(m_vecMoveSpeed, GetForward());
if(!CPad::GetPad(pad)->GetExitVehicle() ||
@@ -3103,6 +3093,7 @@ CAutomobile::ProcessControlInputs(uint8 pad)
bIsHandbrakeOn = true;
// Steer left/right
+#if 0 // LCS: removed, need mouse for free cam
if(CCamera::m_bUseMouse3rdPerson && !CVehicle::m_bDisableMouseSteering){
if(CPad::GetPad(pad)->GetMouseX() != 0.0f){
m_fSteerInput += fMouseSteerSens*CPad::GetPad(pad)->GetMouseX();
@@ -3115,7 +3106,9 @@ CAutomobile::ProcessControlInputs(uint8 pad)
0.2f*CTimer::GetTimeStep();
nLastControlInput = 0;
}
- }else{
+ }else
+#endif
+ {
m_fSteerInput += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteerInput)*
0.2f*CTimer::GetTimeStep();
nLastControlInput = 0;
@@ -3209,10 +3202,11 @@ CAutomobile::ProcessControlInputs(uint8 pad)
// Brake if player isn't in control
// BUG: game always uses pad 0 here
#ifdef FIX_BUGS
- if(CPad::GetPad(pad)->ArePlayerControlsDisabled()){
+ if((CPad::GetPad(pad)->ArePlayerControlsDisabled() || CPad::GetPad(pad)->bApplyBrakes || m_bSuperBrake) &&
#else
- if(CPad::GetPad(0)->ArePlayerControlsDisabled()){
+ if((CPad::GetPad(0)->ArePlayerControlsDisabled() || CPad::GetPad(0)->bApplyBrakes || m_bSuperBrake) &&
#endif
+ (gMultiplayerSuperBrakeOnPause || m_bSuperBrake)){
m_fBrakePedal = 1.0f;
bIsHandbrakeOn = true;
m_fGasPedal = 0.0f;
@@ -3226,67 +3220,119 @@ CAutomobile::ProcessControlInputs(uint8 pad)
}
}
+// not sure if global variables
+float FIRETRUCK_LR_SPEED = 0.05f;
+float FIRETRUCK_UD_SPEED = 0.02f;
+
void
CAutomobile::FireTruckControl(void)
{
if(this == FindPlayerVehicle()){
- if(!CPad::GetPad(0)->GetCarGunFired())
- return;
-#ifdef FREE_CAM
- if (!CCamera::bFreeCam)
-#endif
- {
- m_fCarGunLR += CPad::GetPad(0)->GetCarGunLeftRight() * 0.00025f * CTimer::GetTimeStep();
- m_fCarGunUD += CPad::GetPad(0)->GetCarGunUpDown() * 0.0001f * CTimer::GetTimeStep();
- }
- m_fCarGunUD = Clamp(m_fCarGunUD, 0.05f, 0.3f);
-
-
- CVector cannonPos(0.0f, 1.5f, 1.9f);
- cannonPos = GetMatrix() * cannonPos;
- CVector cannonDir(
- Sin(m_fCarGunLR) * Cos(m_fCarGunUD),
- Cos(m_fCarGunLR) * Cos(m_fCarGunUD),
- Sin(m_fCarGunUD));
- cannonDir = Multiply3x3(GetMatrix(), cannonDir);
- cannonDir.z += (CGeneral::GetRandomNumber()&0xF)/1000.0f;
- CWaterCannons::UpdateOne((uintptr)this, &cannonPos, &cannonDir);
- }else if(GetStatus() == STATUS_PHYSICS){
- CFire *fire = gFireManager.FindFurthestFire_NeverMindFireMen(GetPosition(), 10.0f, 35.0f);
- if(fire == nil)
- return;
+ if(CPad::GetPad(0)->GetCarGunFired()){
+ if(TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_CAM_ON_A_STRING){
+ // android code differs
+ CVector localFront = Multiply3x3(TheCamera.Cams[TheCamera.ActiveCam].Front, GetMatrix());
+ float targetDirLR = localFront.Heading();
+ float targetDirUD = Atan2(localFront.z, localFront.Magnitude2D());
+
+ targetDirUD += DEGTORAD(15.0f);
+ if(m_fCarGunLR + PI < targetDirLR)
+ targetDirLR -= TWOPI;
+ else if(m_fCarGunLR - PI > targetDirLR)
+ targetDirLR += TWOPI;
+
+ if(targetDirLR - m_fCarGunLR > CTimer::GetTimeStep()*FIRETRUCK_LR_SPEED)
+ m_fCarGunLR += CTimer::GetTimeStep()*FIRETRUCK_LR_SPEED;
+ else if(targetDirLR - m_fCarGunLR < -CTimer::GetTimeStep()*FIRETRUCK_LR_SPEED)
+ m_fCarGunLR -= CTimer::GetTimeStep()*FIRETRUCK_LR_SPEED;
+ else
+ m_fCarGunLR = targetDirLR;
- // Target cannon onto fire
- float targetAngle = CGeneral::GetATanOfXY(fire->m_vecPos.x-GetPosition().x, fire->m_vecPos.y-GetPosition().y);
- float fwdAngle = CGeneral::GetATanOfXY(GetForward().x, GetForward().y);
- float targetCannonAngle = fwdAngle - targetAngle;
- float angleDelta = CTimer::GetTimeStep()*0.01f;
- float cannonDelta = targetCannonAngle - m_fCarGunLR;
- while(cannonDelta < PI) cannonDelta += TWOPI;
- while(cannonDelta > PI) cannonDelta -= TWOPI;
- if(Abs(cannonDelta) < angleDelta)
- m_fCarGunLR = targetCannonAngle;
- else if(cannonDelta > 0.0f)
- m_fCarGunLR += angleDelta;
- else
- m_fCarGunLR -= angleDelta;
-
- // Go up and down a bit
- float upDown = Sin((float)(CTimer::GetTimeInMilliseconds() & 0xFFF)/0x1000 * TWOPI);
- m_fCarGunUD = 0.2f + 0.2f*upDown;
-
- // Spray water every once in a while
- if((CTimer::GetTimeInMilliseconds()>>10) & 3){
- CVector cannonPos(0.0f, 0.0f, 2.2f); // different position than player's firetruck!
- cannonPos = GetMatrix() * cannonPos;
- CVector cannonDir(
- Sin(m_fCarGunLR) * Cos(m_fCarGunUD),
- Cos(m_fCarGunLR) * Cos(m_fCarGunUD),
- Sin(m_fCarGunUD));
- cannonDir = Multiply3x3(GetMatrix(), cannonDir);
+ if(targetDirUD - m_fCarGunUD > CTimer::GetTimeStep()*FIRETRUCK_UD_SPEED)
+ m_fCarGunUD += CTimer::GetTimeStep()*FIRETRUCK_UD_SPEED;
+ else if(targetDirUD - m_fCarGunUD < -CTimer::GetTimeStep()*FIRETRUCK_UD_SPEED)
+ m_fCarGunUD -= CTimer::GetTimeStep()*FIRETRUCK_UD_SPEED;
+ else
+ m_fCarGunUD = targetDirUD;
+ }else{
+ m_fCarGunLR -= CPad::GetPad(0)->GetCarGunLeftRight()/128.0f * FIRETRUCK_LR_SPEED * CTimer::GetTimeStep();
+ m_fCarGunUD += CPad::GetPad(0)->GetCarGunUpDown()/128.0f * FIRETRUCK_UD_SPEED * CTimer::GetTimeStep();
+ }
+
+ if(m_fCarGunLR < -PI) m_fCarGunLR += TWOPI;
+ else if(m_fCarGunLR > PI) m_fCarGunLR -= TWOPI;
+ m_fCarGunUD = Clamp(m_fCarGunUD, -0.06f, 0.3f);
+
+ CVector cannonPos, cannonDir;
+ CVector localOffset(0.0f, 0.75f, 0.0f);
+ CVector localPos(0.0f, 1.05f, 2.02f);
+ CMatrix rotMat;
+ rotMat.SetUnity();
+ rotMat.SetRotateZ(m_fCarGunLR);
+ localOffset = rotMat * localOffset;
+ localPos += localOffset;
+ cannonPos = GetMatrix() * localPos;
+ cannonDir = Multiply3x3(GetMatrix(), CVector(-Sin(m_fCarGunLR) * Cos(m_fCarGunUD),
+ Cos(m_fCarGunLR) * Cos(m_fCarGunUD),
+ Sin(m_fCarGunUD)));
cannonDir.z += (CGeneral::GetRandomNumber()&0xF)/1000.0f;
CWaterCannons::UpdateOne((uintptr)this, &cannonPos, &cannonDir);
}
+ }else if(GetStatus() == STATUS_PHYSICS){
+ CFire *fire = gFireManager.FindFurthestFire_NeverMindFireMen(GetPosition(), 10.0f, 35.0f);
+ if(fire){
+
+ // Target cannon onto fire
+ float targetAngle = CGeneral::GetATanOfXY(fire->m_vecPos.x-GetPosition().x, fire->m_vecPos.y-GetPosition().y);
+ float fwdAngle = CGeneral::GetATanOfXY(GetForward().x, GetForward().y);
+#ifdef FIX_BUGS
+ // angle direction changed but they didn't notice
+ targetAngle = TWOPI - targetAngle;
+ fwdAngle = TWOPI - fwdAngle;
+#endif
+ float targetCannonAngle = fwdAngle - targetAngle;
+ float angleDelta = CTimer::GetTimeStep()*0.01f;
+ float cannonDelta = CGeneral::LimitRadianAngle(targetCannonAngle - m_fCarGunLR);
+ if(Abs(cannonDelta) < angleDelta)
+ m_fCarGunLR = targetCannonAngle;
+ else if(cannonDelta > 0.0f)
+ m_fCarGunLR += angleDelta;
+ else
+ m_fCarGunLR -= angleDelta;
+
+ // Go up and down a bit
+ float upDown = Sin((float)(CTimer::GetTimeInMilliseconds() & 0xFFF)/0x1000 * TWOPI);
+ m_fCarGunUD = 0.2f + 0.2f*upDown;
+
+ // Spray water every once in a while
+ if((CTimer::GetTimeInMilliseconds()>>10) & 3){
+ CVector cannonPos, cannonDir;
+ CVector localOffset(0.0f, 0.75f, 0.0f);
+ CVector localPos(0.0f, 1.05f, 2.02f);
+ CMatrix rotMat;
+ rotMat.SetUnity();
+ rotMat.SetRotateZ(m_fCarGunLR);
+ localOffset = rotMat * localOffset;
+ localPos += localOffset;
+ cannonPos = GetMatrix() * localPos;
+ cannonDir = Multiply3x3(GetMatrix(), CVector(-Sin(m_fCarGunLR) * Cos(m_fCarGunUD),
+ Cos(m_fCarGunLR) * Cos(m_fCarGunUD),
+ Sin(m_fCarGunUD)));
+ cannonDir.z += (CGeneral::GetRandomNumber()&0xF)/1000.0f;
+#ifdef FIX_BUGS
+ // actual call missing?!?
+ CWaterCannons::UpdateOne((uintptr)this, &cannonPos, &cannonDir);
+#endif
+ }
+ }
+ }
+
+ if(m_aCarNodes[CAR_BUMP_REAR]){
+ CMatrix mat(RwFrameGetMatrix(m_aCarNodes[CAR_BUMP_REAR]));
+ CVector pos = mat.GetPosition();
+ mat.SetRotateZ(m_fCarGunLR);
+ mat.Translate(pos);
+ mat.UpdateRW();
}
}
@@ -3307,10 +3353,7 @@ CAutomobile::TankControl(void)
// Rotate turret
float prevAngle = m_fCarGunLR;
-#ifdef FREE_CAM
- if(!CCamera::bFreeCam)
-#endif
- m_fCarGunLR -= CPad::GetPad(0)->GetCarGunLeftRight() * 0.00015f * CTimer::GetTimeStep();
+ m_fCarGunLR -= CPad::GetPad(0)->GetCarGunLeftRight() * 0.00015f * CTimer::GetTimeStep();
if(m_fCarGunLR < 0.0f)
m_fCarGunLR += TWOPI;
@@ -3387,6 +3430,14 @@ CAutomobile::TankControl(void)
flashPos += 0.1f*shotDir;
CParticle::AddParticle(PARTICLE_GUNFLASH, flashPos, nullDir, nil, 0.15f, black, 0, 0, 0, lifeSpan);
}
+
+ if(m_aCarNodes[CAR_WINDSCREEN]){
+ CMatrix mat(RwFrameGetMatrix(m_aCarNodes[CAR_WINDSCREEN]));
+ CVector pos = mat.GetPosition();
+ mat.SetRotateZ(m_fCarGunLR);
+ mat.Translate(pos);
+ mat.UpdateRW();
+ }
}
#define HYDRAULIC_UPPER_EXT (-0.16f)
@@ -3691,8 +3742,8 @@ CAutomobile::ProcessBuoyancy(void)
if(mod_Buoyancy.ProcessBuoyancy(this, m_fBuoyancy, &point, &impulse)){
bTouchingWater = true;
- float timeStep = Max(CTimer::GetTimeStep(), 0.01f);
- float impulseRatio = impulse.z / (GRAVITY * m_fMass * timeStep);
+ float timeStep = Max(CTimer::GetTimeStep(), 0.5f); // this seems awfully high
+ float impulseRatio = impulse.z / ((bIsHeavy?GRAVITY/3.0f:GRAVITY) * m_fMass * timeStep);
float waterResistance = Pow(1.0f - 0.05f*impulseRatio, CTimer::GetTimeStep());
m_vecMoveSpeed *= waterResistance;
m_vecTurnSpeed *= waterResistance;
@@ -3737,8 +3788,11 @@ CAutomobile::ProcessBuoyancy(void)
if(pDriver){
pDriver->bIsInWater = true;
- if(pDriver->IsPlayer() || !bWaterTight)
+ if(pDriver->IsPlayer() || !bWaterTight){
+ if(pDriver->m_fHealth < 30.0f)
+ SampleManager.SetMusicFadeVolume(Max(0, SampleManager.GetMusicFadeVolume()-4));
pDriver->InflictDamage(nil, WEAPONTYPE_DROWNING, CTimer::GetTimeStep(), PEDPIECE_TORSO, 0);
+ }
}
for(i = 0; i < m_nNumMaxPassengers; i++)
if(pPassengers[i]){
@@ -3907,7 +3961,7 @@ CAutomobile::DoDriveByShootings(void)
if (!anim || !anim->IsRunning()) {
if (CPad::GetPad(0)->GetCarGunFired() && CTimer::GetTimeInMilliseconds() > weapon->m_nTimer) {
weapon->FireFromCar(this, lookingLeft, true);
- weapon->m_nTimer = CTimer::GetTimeInMilliseconds() + 70;
+ weapon->m_nTimer = CTimer::GetTimeInMilliseconds() + weapon->GetInfo()->m_nFiringRate;
}
}
}else{
@@ -4158,14 +4212,14 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
case CAR_PIECE_BUMP_FRONT:
GetComponentWorldPosition(CAR_BUMP_FRONT, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_BUMPER_FRONT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_BUMPER_FRONT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetBumperDamage(CAR_BUMP_FRONT, VEHBUMPER_FRONT);
if(m_aCarNodes[CAR_BONNET] && Damage.GetPanelStatus(VEHBUMPER_FRONT) == PANEL_STATUS_MISSING){
case CAR_PIECE_BONNET:
GetComponentWorldPosition(CAR_BONNET, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
if(GetModelIndex() != MI_DODO)
- if(Damage.ApplyDamage(COMPONENT_DOOR_BONNET, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_DOOR_BONNET, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetDoorDamage(CAR_BONNET, DOOR_BONNET);
}
break;
@@ -4173,13 +4227,13 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
case CAR_PIECE_BUMP_REAR:
GetComponentWorldPosition(CAR_BUMP_REAR, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_BUMPER_REAR, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_BUMPER_REAR, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetBumperDamage(CAR_BUMP_REAR, VEHBUMPER_REAR);
if(m_aCarNodes[CAR_BOOT] && Damage.GetPanelStatus(VEHBUMPER_REAR) == PANEL_STATUS_MISSING){
case CAR_PIECE_BOOT:
GetComponentWorldPosition(CAR_BOOT, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_DOOR_BOOT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_DOOR_BOOT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetDoorDamage(CAR_BOOT, DOOR_BOOT);
}
break;
@@ -4187,50 +4241,50 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
case CAR_PIECE_DOOR_LF:
GetComponentWorldPosition(CAR_DOOR_LF, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_DOOR_FRONT_LEFT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_DOOR_FRONT_LEFT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetDoorDamage(CAR_DOOR_LF, DOOR_FRONT_LEFT);
break;
case CAR_PIECE_DOOR_RF:
GetComponentWorldPosition(CAR_DOOR_RF, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_DOOR_FRONT_RIGHT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_DOOR_FRONT_RIGHT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetDoorDamage(CAR_DOOR_RF, DOOR_FRONT_RIGHT);
break;
case CAR_PIECE_DOOR_LR:
GetComponentWorldPosition(CAR_DOOR_LR, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_DOOR_REAR_LEFT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_DOOR_REAR_LEFT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetDoorDamage(CAR_DOOR_LR, DOOR_REAR_LEFT);
break;
case CAR_PIECE_DOOR_RR:
GetComponentWorldPosition(CAR_DOOR_RR, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_DOOR_REAR_RIGHT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_DOOR_REAR_RIGHT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetDoorDamage(CAR_DOOR_RR, DOOR_REAR_RIGHT);
break;
case CAR_PIECE_WING_LF:
GetComponentWorldPosition(CAR_WING_LF, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_PANEL_FRONT_LEFT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_PANEL_FRONT_LEFT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetPanelDamage(CAR_WING_LF, VEHPANEL_FRONT_LEFT);
break;
case CAR_PIECE_WING_RF:
GetComponentWorldPosition(CAR_WING_RF, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_PANEL_FRONT_RIGHT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_PANEL_FRONT_RIGHT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetPanelDamage(CAR_WING_RF, VEHPANEL_FRONT_RIGHT);
break;
case CAR_PIECE_WING_LR:
GetComponentWorldPosition(CAR_WING_LR, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_PANEL_REAR_LEFT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_PANEL_REAR_LEFT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetPanelDamage(CAR_WING_LR, VEHPANEL_REAR_LEFT);
break;
case CAR_PIECE_WING_RR:
GetComponentWorldPosition(CAR_WING_RR, pos);
dmgDrawCarCollidingParticles(pos, impulse*damageMultiplier);
- if(Damage.ApplyDamage(COMPONENT_PANEL_REAR_RIGHT, impulse*impulseMult, pHandling->fCollisionDamageMultiplier))
+ if(Damage.ApplyDamage(COMPONENT_PANEL_REAR_RIGHT, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier()))
SetPanelDamage(CAR_WING_RR, VEHPANEL_REAR_RIGHT);
break;
@@ -4241,7 +4295,7 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
break;
case CAR_PIECE_WINDSCREEN:
- if(Damage.ApplyDamage(COMPONENT_PANEL_WINDSCREEN, impulse*impulseMult, pHandling->fCollisionDamageMultiplier)){
+ if(Damage.ApplyDamage(COMPONENT_PANEL_WINDSCREEN, impulse*impulseMult, pHandling->GetCollisionDamageMultiplier())){
uint8 oldStatus = Damage.GetPanelStatus(VEHPANEL_WINDSCREEN);
SetPanelDamage(CAR_WINDSCREEN, VEHPANEL_WINDSCREEN);
if(oldStatus != Damage.GetPanelStatus(VEHPANEL_WINDSCREEN)){
@@ -4252,7 +4306,7 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
}
}
- float damage = (impulse-minImpulse)*pHandling->fCollisionDamageMultiplier*0.6f*damageMultiplier;
+ float damage = (impulse-minImpulse)*pHandling->GetCollisionDamageMultiplier()*0.6f*damageMultiplier;
if(GetModelIndex() == MI_SECURICA && m_pDamageEntity && m_pDamageEntity->GetStatus() == STATUS_PLAYER)
damage *= 7.0f;
@@ -4274,6 +4328,7 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
int oldHealth = m_fHealth;
if(this == FindPlayerVehicle())
+ // android has other values here
m_fHealth -= bTakeLessDamage ? damage/6.0f : damage/2.0f;
else if(bTakeLessDamage)
m_fHealth -= damage/12.0f;
@@ -4311,6 +4366,35 @@ CAutomobile::VehicleDamage(float impulse, uint16 damagedPiece)
Damage.SetEngineStatus(100);
}
}
+
+ if(bHitByTrain){
+ for(i = 0; i < PHYSICAL_MAX_COLLISIONRECORDS; i++){
+ CVehicle *train = (CVehicle*)m_aCollisionRecords[i];
+ if(train && train->IsVehicle() &&
+ train->GetModelIndex() == MI_TRAIN &&
+ train->GetSpeed(CVector(0.0f, 0.0, 0.0f)).MagnitudeSqr() > SQR(0.001f)){
+ CPed *ped = KnockPedOutCar(WEAPONTYPE_RAMMEDBYCAR, CAR_DOOR_LF, pDriver);
+ if(ped){
+//TODO(LCS): ped->NailToSubwayTrack();
+ ped->SetDie();
+ }
+ BlowUpCar(train);
+ }
+ }
+ }
+
+ if(pDriver && pDriver->IsPlayer()){
+ for(i = 0; i < PHYSICAL_MAX_COLLISIONRECORDS; i++){
+ CVehicle *airtrain = (CVehicle*)m_aCollisionRecords[i];
+ if(airtrain && airtrain->IsVehicle() &&
+ airtrain->GetModelIndex() == MI_AIRTRAIN){
+ CPed *ped = KnockPedOutCar(WEAPONTYPE_RAMMEDBYCAR, CAR_DOOR_LF, pDriver);
+ if(ped)
+ ped->SetDie();
+ BlowUpCar(airtrain);
+ }
+ }
+ }
}
void
@@ -4339,6 +4423,7 @@ CAutomobile::dmgDrawCarCollidingParticles(const CVector &pos, float amount)
CVector(0.0f, 0.0f, 0.0f), nil, 0.5f);
n = (int)amount/50 + 1;
+ n = Min(n, 10);
for(i = 0; i < n; i++)
CParticle::AddParticle(PARTICLE_CAR_DEBRIS, pos,
CVector(CGeneral::GetRandomNumberInRange(-0.25f, 0.25f),
@@ -4346,7 +4431,7 @@ CAutomobile::dmgDrawCarCollidingParticles(const CVector &pos, float amount)
CGeneral::GetRandomNumberInRange(0.1f, 0.25f)),
nil,
CGeneral::GetRandomNumberInRange(0.02f, 0.08f),
- CVehicleModelInfo::ms_vehicleColourTable[m_currentColour1],
+ CVehicleModelInfo::mspInfo->ms_vehicleColourTable[m_currentColour1],
CGeneral::GetRandomNumberInRange(-40, 40),
0,
CGeneral::GetRandomNumberInRange(0, 4));
@@ -4591,7 +4676,9 @@ CAutomobile::OpenDoor(int32 component, eDoors door, float openRatio)
if(Damage.GetDoorStatus(door) == DOOR_STATUS_SWINGING)
Damage.SetDoorStatus(door, DOOR_STATUS_OK); // huh?
ShowAllComps();
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_DOOR_CLOSE_BONNET + door, 0.0f);
+ // TODO(LCS): this makes no sense at all to me
+ if(component != CAR_DOOR_LR || IsDoorReady(DOOR_REAR_RIGHT))
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_DOOR_CLOSE_BONNET + door, 0.0f);
}
axes[Doors[door].m_nAxis] = Doors[door].m_fAngle;
@@ -4644,6 +4731,19 @@ CAutomobile::ProcessOpenDoor(uint32 component, uint32 anim, float time)
{
eDoors door;
+ if(bIsVan){
+ if(component == CAR_DOOR_RR){
+ if(anim == ANIM_STD_VAN_OPEN_DOOR_REAR_RHS || anim == ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS)
+ if(IsDoorReady(DOOR_REAR_LEFT))
+ ProcessOpenDoor(CAR_DOOR_LR, anim, time);
+ }
+ if(component == CAR_DOOR_LR){
+ if(anim == ANIM_STD_VAN_OPEN_DOOR_REAR_LHS || anim == ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS)
+ if(IsDoorReady(DOOR_REAR_RIGHT))
+ ProcessOpenDoor(CAR_DOOR_RR, anim, time);
+ }
+ }
+
switch(component){
case CAR_DOOR_RF: door = DOOR_FRONT_RIGHT; break;
case CAR_DOOR_RR: door = DOOR_REAR_RIGHT; break;
@@ -4665,7 +4765,7 @@ CAutomobile::ProcessOpenDoor(uint32 component, uint32 anim, float time)
case ANIM_STD_CAR_CLOSE_DOOR_LO_LHS:
case ANIM_STD_CAR_CLOSE_DOOR_RHS:
case ANIM_STD_CAR_CLOSE_DOOR_LO_RHS:
- ProcessDoorCloseAnimation(this, component, door, time, 0.2f, 0.45f);
+ ProcessDoorCloseAnimation(this, component, door, time, 0.2f, 0.63f);
break;
case ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS:
case ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS:
@@ -4679,7 +4779,7 @@ CAutomobile::ProcessOpenDoor(uint32 component, uint32 anim, float time)
break;
case ANIM_STD_CAR_CLOSE_LHS:
case ANIM_STD_CAR_CLOSE_RHS:
- ProcessDoorCloseAnimation(this, component, door, time, 0.1f, 0.23f);
+ ProcessDoorCloseAnimation(this, component, door, time, 0.35f, 0.5f);
break;
case ANIM_STD_CAR_PULL_OUT_PED_RHS:
case ANIM_STD_CAR_PULL_OUT_PED_LO_RHS:
@@ -4996,7 +5096,9 @@ CAutomobile::PlayCarHorn(void)
{
uint32 r;
- if (IsAlarmOn() || m_nCarHornTimer != 0)
+ if (IsAlarmOn() ||
+ this == FindPlayerVehicle() && CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle ||
+ m_nCarHornTimer != 0)
return;
if (m_nCarHornDelay) {
@@ -5047,6 +5149,14 @@ CAutomobile::SetupSuspensionLines(void)
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
CColModel *colModel = mi->GetColModel();
+ bool adjustColModel;
+ if(colModel->lines == nil){
+ adjustColModel = true;
+ colModel->lines = new CColLine[4];
+ colModel->numLines = 4;
+ }else
+ adjustColModel = false;
+
// Each suspension line starts at the uppermost wheel position
// and extends down to the lowermost point on the tyre
for(i = 0; i < 4; i++){
@@ -5086,6 +5196,21 @@ CAutomobile::SetupSuspensionLines(void)
for(i = 0; i < colModel->numSpheres; i++)
colModel->spheres[i].radius = 0.3f;
}
+
+ if(pHandling->Flags & HANDLING_FORCE_GRND_CLR && adjustColModel){
+ // 0.25 is the min distance between ground and col spheres, everything above it is safe
+ float safePos = 0.25f - m_fHeightAboveRoad;
+ for(i = 0; i < colModel->numSpheres; i++){
+ CColSphere *sph = &colModel->spheres[i];
+ if(sph->center.z - sph->radius < safePos){
+ // sphere extends too far down, so move it up
+ // or decrease the radius for bigger spheres
+ if(radius > 0.4f)
+ sph->radius = Max(sph->center.z - safePos, 0.4f);
+ sph->center.z = safePos + sph->radius;
+ }
+ }
+ }
}
// called on police cars
@@ -5108,6 +5233,7 @@ CAutomobile::BlowUpCarsInPath(void)
for(i = 0; i < m_nCollisionRecords; i++)
if(m_aCollisionRecords[i] &&
m_aCollisionRecords[i]->IsVehicle() &&
+ IsVehiclePointerValid((CVehicle*)m_aCollisionRecords[i]) &&
m_aCollisionRecords[i]->GetModelIndex() != MI_RHINO &&
!m_aCollisionRecords[i]->bRenderScorched){
if(this == FindPlayerVehicle())
@@ -5402,6 +5528,7 @@ CAutomobile::Fix(void)
for(component = 0; component < 4; component++)
Damage.SetWheelStatus(component, WHEEL_STATUS_OK);
+/*
if(GetModelIndex() == MI_HUNTER){
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LB]), 0);
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_RB]), 0);
@@ -5411,6 +5538,7 @@ CAutomobile::Fix(void)
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LB]), 0);
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_RB]), 0);
}
+*/
}
void
@@ -5472,6 +5600,7 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
if(obj == nil)
return nil;
+ phys_lcs_unk1 = false;
if(component == CAR_WINDSCREEN){
obj->SetModelIndexNoCreate(MI_CAR_BONNET);
}else switch(type){
@@ -5510,6 +5639,7 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
*RwFrameGetMatrix(frame) = *matrix;
RpAtomicSetFrame(atomic, frame);
CVisibilityPlugins::SetAtomicRenderCallback(atomic, nil);
+ CStreaming::RegisterInstance(atomic, nil);
obj->AttachToRwObject((RwObject*)atomic);
obj->bDontStream = true;
@@ -5554,7 +5684,7 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
CVector dist = obj->GetPosition() - GetPosition();
dist.Normalise();
if(component == COMPGROUP_BONNET || component == COMPGROUP_BOOT || component == CAR_WINDSCREEN){
- // push these up some
+ // push these up some
dist += GetUp();
if(GetUp().z > 0.0f){
// simulate fast upward movement if going fast
@@ -5577,9 +5707,9 @@ CAutomobile::SpawnFlyingComponent(int32 component, uint32 type)
ApplyMoveForce(5.0f*dist);
}
- if(CCollision::ProcessColModels(obj->GetMatrix(), *obj->GetColModel(),
- this->GetMatrix(), *this->GetColModel(),
- CWorld::m_aTempColPts, nil, nil) > 0)
+// if(CCollision::ProcessColModels(obj->GetMatrix(), *obj->GetColModel(),
+// this->GetMatrix(), *this->GetColModel(),
+// CWorld::m_aTempColPts, nil, nil) > 0)
obj->m_pCollidingEntity = this;
if(bRenderScorched)
diff --git a/src/vehicles/Automobile.h b/src/vehicles/Automobile.h
index f4046e9e..f3ee803b 100644
--- a/src/vehicles/Automobile.h
+++ b/src/vehicles/Automobile.h
@@ -26,6 +26,8 @@ public:
float m_aSuspensionSpringRatioPrev[4];
float m_aWheelTimer[4]; // set to 4.0 when wheel is touching ground, then decremented
float m_auto_unused1;
+ float m_fEngineInertiaVar1;
+ float m_fEngineInertiaVar2;
eSkidmarkType m_aWheelSkidmarkType[4];
bool m_aWheelSkidmarkBloody[4];
bool m_aWheelSkidmarkUnk[4];
@@ -33,10 +35,9 @@ public:
float m_aWheelPosition[4];
float m_aWheelSpeed[4];
uint8 m_auto_unused2;
-#if (defined GTA_PS2 && !defined FIX_BUGS)
uint8 m_bombType : 3;
-#endif
uint8 bTaxiLight : 1;
+ uint8 bDriverLastFrame : 1;
uint8 bFixedColour : 1;
uint8 bBigWheels : 1;
uint8 bWaterTight : 1; // no damage for non-player peds
@@ -45,9 +46,7 @@ public:
uint8 bTankDetonateCars : 1;
uint8 bStuckInSand : 1;
uint8 bHeliDestroyed : 1;
-#if (defined GTA_PS2 && !defined FIX_BUGS)
CEntity* m_pBombRigger;
-#endif
int16 m_doingBurnout;
uint16 m_hydraulicState;
uint32 m_nBusDoorTimerEnd;
@@ -114,6 +113,7 @@ public:
float GetHeightAboveRoad(void);
void PlayCarHorn(void);
+ void ProcessCarWheelPair(int leftWheel, int rightWheel, float steerAngle, CVector *contactSpeeds, CVector *contactPoints, float traction, float acceleration, float brake, bool bFront);
void FireTruckControl(void);
void TankControl(void);
void HydraulicControl(void);
diff --git a/src/vehicles/Bike.cpp b/src/vehicles/Bike.cpp
index a65b64d2..d8ad71ea 100644
--- a/src/vehicles/Bike.cpp
+++ b/src/vehicles/Bike.cpp
@@ -37,6 +37,7 @@
#include "Bike.h"
#include "Debug.h"
#include "SaveBuf.h"
+#include "Garages.h"
const uint32 CBike::nSaveStructSize =
#ifdef COMPATIBLE_SAVES
@@ -74,15 +75,17 @@ CBike::CBike(int32 id, uint8 CreatedBy)
break;
case MI_PIZZABOY:
case MI_FAGGIO:
+ case MI_NOODLEBOY:
m_bikeAnimType = ASSOCGRP_BIKE_VESPA;
break;
case MI_PCJ600:
m_bikeAnimType = ASSOCGRP_BIKE_STANDARD;
break;
case MI_SANCHEZ:
+ case MI_SANCHEZ2:
m_bikeAnimType = ASSOCGRP_BIKE_DIRT;
break;
- default: assert(0 && "invalid bike model ID");
+ default: m_bikeAnimType = ASSOCGRP_BIKE_STANDARD; //assert(0 && "invalid bike model ID"); // TODO
}
m_vehType = VEHICLE_TYPE_BIKE;
@@ -110,7 +113,7 @@ CBike::CBike(int32 id, uint8 CreatedBy)
m_fTurnMass = pHandling->fTurnMass;
m_vecCentreOfMass = pHandling->CentreOfMass;
m_vecCentreOfMass.z = 0.1f;
- m_fAirResistance = pHandling->Dimension.x*pHandling->Dimension.z/m_fMass;
+ m_fAirResistance = pHandling->fDragMult > 0.01f ? pHandling->fDragMult*0.0005f : pHandling->fDragMult;
m_fElasticity = 0.05f;
m_fBuoyancy = pHandling->fBuoyancy;
@@ -134,6 +137,8 @@ CBike::CBike(int32 id, uint8 CreatedBy)
bIsOnFire = false;
bWheelieCam = false;
+ bFixedColour = false; // <- figure out actual place (TODO)
+
m_fTireTemperature = 1.0f;
m_fBrakeDestabilization = 0.0f;
m_fVelocityChangeForAudio = 0;
@@ -228,7 +233,19 @@ CBike::ProcessControl(void)
ProcessCarAlarm();
- ActivateBombWhenEntered();
+ if (pDriver) {
+ if (!bDriverLastFrame && m_bombType == CARBOMB_ONIGNITIONACTIVE) {
+ // If someone enters the car and there is a bomb, detonate
+ m_nBombTimer = 1000;
+ m_pBlowUpEntity = m_pBombRigger;
+ if (m_pBlowUpEntity)
+ m_pBlowUpEntity->RegisterReference((CEntity**)&m_pBlowUpEntity);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TICK, 1.0f);
+ }
+ bDriverLastFrame = true;
+ }
+ else
+ bDriverLastFrame = false;
CRubbish::StirUp(this);
@@ -296,8 +313,23 @@ CBike::ProcessControl(void)
ApplyMoveForce(parallelSpeed * -CTimer::GetTimeStep()*SAND_SLOWDOWN*m_fMass);
}
}
- if(CPad::GetPad(0)->WeaponJustDown())
- ActivateBomb();
+
+#ifdef BOMBS_ON_BIKES
+ if(CPad::GetPad(0)->WeaponJustDown()) {
+ if (m_bombType == CARBOMB_TIMED) {
+ m_bombType = CARBOMB_TIMEDACTIVE;
+ m_nBombTimer = 7000;
+ m_pBlowUpEntity = FindPlayerPed();
+ CGarages::TriggerMessage("GA_12", -1, 3000, -1);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TIMED_ACTIVATED, 1.0f);
+ }
+ else if (m_bombType == CARBOMB_ONIGNITION) {
+ m_bombType = CARBOMB_ONIGNITIONACTIVE;
+ CGarages::TriggerMessage("GA_12", -1, 3000, -1);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_ONIGNITION_ACTIVATED, 1.0f);
+ }
+ }
+#endif
break;
case STATUS_PLAYER_PLAYBACKFROMBUFFER:
@@ -1723,7 +1755,7 @@ CBike::PreRender(void)
TheCamera.GetLookDirection() == LOOKING_RIGHT)
pos1 -= 0.2f*GetForward();
- CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f));
+ //CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f));
}
}
}
diff --git a/src/vehicles/Bike.h b/src/vehicles/Bike.h
index 219d8872..ce89e8c7 100644
--- a/src/vehicles/Bike.h
+++ b/src/vehicles/Bike.h
@@ -67,14 +67,18 @@ public:
float m_fPedLeanAmountUD;
uint8 m_bike_unused2;
uint8 unused[3]; // looks like padding..but for what?
+ uint8 m_bombType : 3;
+ uint8 bDriverLastFrame : 1;
uint8 m_bike_flag01 : 1;
uint8 m_bike_flag02 : 1;
- uint8 bWaterTight : 1;
+ uint8 bWaterTight : 1; // 535_40
uint8 bIsBeingPickedUp : 1;
uint8 bIsStanding : 1;
uint8 bExtraSpeed : 1; // leaning forward
uint8 bIsOnFire : 1;
uint8 bWheelieCam : 1;
+ uint8 bFixedColour : 1; // <- figure out its actual place (TODO)
+ CEntity* m_pBombRigger;
int16 m_doingBurnout;
float m_fTireTemperature;
float m_fBrakeDestabilization;
diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp
index 5da8e1cc..cf46f37b 100644
--- a/src/vehicles/Boat.cpp
+++ b/src/vehicles/Boat.cpp
@@ -72,7 +72,7 @@ CBoat::CBoat(int mi, uint8 owner) : CVehicle(owner)
m_fMass = pHandling->fMass;
m_fTurnMass = pHandling->fTurnMass / 2.0f;
m_vecCentreOfMass = pHandling->CentreOfMass;
- m_fAirResistance = pHandling->Dimension.x * pHandling->Dimension.z / m_fMass;
+ m_fAirResistance = pHandling->fDragMult > 0.01f ? pHandling->fDragMult*0.0005f : pHandling->fDragMult;
m_fElasticity = 0.1f;
m_fBuoyancy = pHandling->fBuoyancy;
m_fSteerAngle = 0.0f;
@@ -682,6 +682,7 @@ CBoat::ProcessControl(void)
}
// Spray waterdrops on screen
+ /*
if(TheCamera.GetLookingForwardFirstPerson() && FindPlayerVehicle() && FindPlayerVehicle()->IsBoat() &&
m_nDeltaVolumeUnderWater > 0 && numWaterDropOnScreen < 20){
CVector dropPos;
@@ -712,7 +713,7 @@ CBoat::ProcessControl(void)
if(CParticle::AddParticle(PARTICLE_WATERDROP, dropPos, dropDir, nil,
CGeneral::GetRandomNumberInRange(0.1f, 0.15f), dropColor, 0, 0, frm))
numWaterDropOnScreen++;
- }
+ }*/
if(m_fPrevVolumeUnderWater == 0.0f && m_fVolumeUnderWater > 0.0f && GetModelIndex() == MI_SKIMMER){
CVector splashDir(0.0f, 0.0f, 0.25f*speed);
diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp
index 934ccb08..d4b58f05 100644
--- a/src/vehicles/Cranes.cpp
+++ b/src/vehicles/Cranes.cpp
@@ -13,7 +13,7 @@
#include "World.h"
#include "SaveBuf.h"
-#define MAX_DISTANCE_TO_FIND_CRANE (10.0f)
+#define MAX_DISTANCE_TO_FIND_CRANE (100.0f)
#define CRANE_UPDATE_RADIUS (300.0f)
#define CRANE_MOVEMENT_PROCESSING_RADIUS (150.0f)
#define CRUSHER_Z (-0.951f)
@@ -67,7 +67,8 @@ void CCranes::InitCranes(void)
}
}
}
- for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_MAINLAND).first; pNode; pNode = pNode->next) {
+ // TODO(LCS)
+ for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_INDUSTRIAL).first; pNode; pNode = pNode->next) {
CEntity* pEntity = (CEntity*)pNode->item;
if (MODELID_CRANE_1 == pEntity->GetModelIndex() ||
MODELID_CRANE_2 == pEntity->GetModelIndex() ||
@@ -77,6 +78,7 @@ void CCranes::InitCranes(void)
MODELID_CRANE_6 == pEntity->GetModelIndex())
AddThisOneCrane(pEntity);
}
+
}
void CCranes::AddThisOneCrane(CEntity* pEntity)
@@ -469,7 +471,7 @@ bool CCranes::DoesMilitaryCraneHaveThisOneAlready(uint32 mi)
case MI_FIRETRUCK: return (CarsCollectedMilitaryCrane & 1);
case MI_AMBULAN: return (CarsCollectedMilitaryCrane & 2);
case MI_ENFORCER: return (CarsCollectedMilitaryCrane & 4);
- case MI_FBIRANCH: return (CarsCollectedMilitaryCrane & 8);
+ case (uint32)MI_FBIRANCH: return (CarsCollectedMilitaryCrane & 8);
case MI_RHINO: return (CarsCollectedMilitaryCrane & 0x10);
case MI_BARRACKS: return (CarsCollectedMilitaryCrane & 0x20);
case MI_POLICE: return (CarsCollectedMilitaryCrane & 0x40);
@@ -484,7 +486,7 @@ void CCranes::RegisterCarForMilitaryCrane(uint32 mi)
case MI_FIRETRUCK: CarsCollectedMilitaryCrane |= 1; break;
case MI_AMBULAN: CarsCollectedMilitaryCrane |= 2; break;
case MI_ENFORCER: CarsCollectedMilitaryCrane |= 4; break;
- case MI_FBIRANCH: CarsCollectedMilitaryCrane |= 8; break;
+ case (uint32)MI_FBIRANCH: CarsCollectedMilitaryCrane |= 8; break;
case MI_RHINO: CarsCollectedMilitaryCrane |= 0x10; break;
case MI_BARRACKS: CarsCollectedMilitaryCrane |= 0x20; break;
case MI_POLICE: CarsCollectedMilitaryCrane |= 0x40; break;
diff --git a/src/vehicles/DamageManager.cpp b/src/vehicles/DamageManager.cpp
index 8ba235b7..b74e7086 100644
--- a/src/vehicles/DamageManager.cpp
+++ b/src/vehicles/DamageManager.cpp
@@ -10,7 +10,8 @@ float G_aComponentDamage[] = { 2.5f, 1.25f, 3.2f, 1.4f, 2.5f, 2.8f, 0.5f };
CDamageManager::CDamageManager(void)
{
ResetDamageStatus();
- m_fWheelDamageEffect = 0.5f;
+ m_fWheelDamageEffect = 0.65f;
+ m_bSmashedDoorDoesntClose = false;
field_18 = 1;
}
@@ -136,6 +137,8 @@ void
CDamageManager::SetDoorStatus(int32 door, uint32 status)
{
m_doorStatus[door] = status;
+ if(m_bSmashedDoorDoesntClose && door != DOOR_BONNET && status == DOOR_STATUS_SMASHED)
+ m_doorStatus[door] = DOOR_STATUS_SWINGING;
}
int32
diff --git a/src/vehicles/DamageManager.h b/src/vehicles/DamageManager.h
index 312006e3..1f836429 100644
--- a/src/vehicles/DamageManager.h
+++ b/src/vehicles/DamageManager.h
@@ -81,6 +81,7 @@ class CDamageManager
public:
float m_fWheelDamageEffect;
+ bool m_bSmashedDoorDoesntClose;
uint8 m_engineStatus;
uint8 m_wheelStatus[4];
uint8 m_doorStatus[6];
diff --git a/src/vehicles/Door.cpp b/src/vehicles/Door.cpp
index 1b3f9e8f..6e35c951 100644
--- a/src/vehicles/Door.cpp
+++ b/src/vehicles/Door.cpp
@@ -168,3 +168,58 @@ CTrainDoor::IsClosed(void)
{
return m_fPosn == RetTranslationWhenClosed();
}
+
+bool
+CFerryDoor::IsInUse(void)
+{
+ float translationDifference = m_fPrevPosn - m_fPosn;
+ m_fPrevPosn = m_fPosn;
+ return Abs(translationDifference) > 0.002f;
+}
+
+float
+CFerryDoor::RetTranslationWhenClosed(void)
+{
+ if(Abs(m_fClosedPosn) < Abs(m_fOpenPosn))
+ return m_fClosedPosn;
+ else
+ return m_fOpenPosn;
+}
+
+bool
+CFerryDoor::IsClosed(void)
+{
+ return m_fPosn == RetTranslationWhenClosed();
+}
+
+float
+CFerryDoor::RetTranslationWhenOpen(void)
+{
+ if(Abs(m_fClosedPosn) < Abs(m_fOpenPosn))
+ return m_fOpenPosn;
+ else
+ return m_fClosedPosn;
+}
+
+bool
+CFerryDoor::IsFullyOpen(void)
+{
+ if(Abs(m_fPosn) < Abs(RetTranslationWhenOpen()) - 0.5f)
+ return false;
+ return true;
+}
+
+void
+CFerryDoor::Open(float ratio)
+{
+ float open;
+
+ m_fPrevPosn = m_fPosn;
+ open = RetTranslationWhenOpen();
+ if(ratio < 1.0f){
+ m_fPosn = open*ratio;
+ }else{
+ m_nDoorState = DOORST_OPEN;
+ m_fPosn = open;
+ }
+} \ No newline at end of file
diff --git a/src/vehicles/Door.h b/src/vehicles/Door.h
index 567d3263..da5a3de0 100644
--- a/src/vehicles/Door.h
+++ b/src/vehicles/Door.h
@@ -67,3 +67,22 @@ public:
float RetTranslationWhenOpen(void);
void Open(float ratio);
};
+
+
+class CFerryDoor {
+private:
+ float m_fClosedPosn;
+ float m_fOpenPosn;
+ int8 m_nDirn;
+ int8 m_nAxis;
+ int8 m_nDoorState;
+ float m_fPosn;
+ float m_fPrevPosn;
+public:
+ bool IsInUse(void);
+ float RetTranslationWhenClosed(void);
+ float RetTranslationWhenOpen(void);
+ bool IsClosed(void);
+ bool IsFullyOpen(void);
+ void Open(float ratio);
+}; \ No newline at end of file
diff --git a/src/vehicles/Ferry.cpp b/src/vehicles/Ferry.cpp
new file mode 100644
index 00000000..339c2819
--- /dev/null
+++ b/src/vehicles/Ferry.cpp
@@ -0,0 +1,833 @@
+#include "common.h"
+#include "main.h"
+#include "Ferry.h"
+
+#include "AudioManager.h"
+#include "Camera.h"
+#include "Coronas.h"
+#include "FileMgr.h"
+#include "General.h"
+#include "Leeds.h"
+#include "Particle.h"
+#include "PlayerPed.h"
+#include "Streaming.h"
+#include "TempColModels.h"
+#include "WaterLevel.h"
+#include "World.h"
+#include "sampman.h"
+
+CFerryInst* CFerry::mspInst;
+
+#define FERRY_SPEED (0.1f)
+#define FERRY_SLOWDOWN_DISTANCE (50.0f)
+#define FERRY_TIME_STOPPED_AT_STATION (10.0f)
+
+CFerry::CFerry(int32 id, uint8 owner) : CVehicle(owner)
+{
+ m_bPlayerArrivedHorn = false;
+ m_nTimeAlongPath = 0;
+ m_vehType = VEHICLE_TYPE_FERRY;
+ CVehicleModelInfo* mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(id);
+ pHandling = mod_HandlingManager.GetHandlingData((tVehicleType)mi->m_handlingId);
+ SetModelIndex(id);
+ m_doors[0].Init(DEGTORAD(90.0f), 0.0f, 1, 0);
+ m_doors[1].Init(DEGTORAD(-95.0f), 0.0f, 1, 0);
+ m_doors[2].Init(DEGTORAD(-90.0f), 0.0f, 1, 0);
+ m_doors[3].Init(DEGTORAD(95.0f), 0.0f, 1, 0);
+ m_fTurnMass = 100000000.0f;
+ m_fAirResistance = 0.9994f;
+ m_fElasticity = 0.05f;
+ m_nNumMaxPassengers = 1;
+ m_fMass = 100000000.0f;
+ bInfiniteMass = true;
+ m_phy_flagA08 = true;
+ m_bFerryDocked = false;
+ SetStatus(STATUS_FERRY_MOVING);
+ bUsesCollision = true;
+ m_nDoorTimer = CTimer::GetTimeInMilliseconds();
+ m_nDoorState = FERRY_DOOR_CLOSED;
+ m_bApproachingDock = false;
+ m_nSkipFerryStatus = 0;
+ m_nCollision = 0;
+ m_pDefaultColModel = mi->GetColModel();
+ m_level = LEVEL_GENERIC;
+}
+
+void CFerry::Init(void* pInstancePtr)
+{
+ mspInst = (CFerryInst*)pInstancePtr;
+ if (mspInst)
+ return;
+ // the following code should be wrapped in a define
+ mspInst = new CFerryInst();
+ memset(mspInst, 0, sizeof(CFerryInst));
+ for (int k = 0; k < NUM_FERRY_PATHS; k++) {
+ mspInst->pPathData[k] = new CFerryPath();
+ mspInst->pPathData[k]->aLineBits = new CFerryInterpolationLine[NUM_FERRY_STATIONS * 4 + 2];
+
+ const char* filename = "Data\\PATHS\\FERRY1.DAT"; // actually base::cStringT<char> filename; filename += k+1; filename += ".DAT"
+
+ bool readingFile = false;
+ int bp, lp;
+ int i, tmp;
+ CFerryPath* pPath = mspInst->pPathData[k];
+
+ if (pPath->aTrackNodes == nil) {
+ readingFile = true;
+
+ CFileMgr::LoadFile(filename, work_buff, sizeof(work_buff), "r");
+ *gString = '\0';
+ for (bp = 0, lp = 0; work_buff[bp] != '\n'; bp++, lp++)
+ gString[lp] = work_buff[bp];
+ bp++;
+#ifdef FIX_BUGS
+ gString[lp] = '\0';
+#endif
+ sscanf(gString, "%d", &tmp);
+ pPath->NumTrackNodes = tmp;
+ pPath->aTrackNodes = new CFerryNode[tmp];
+
+ for (i = 0; i < pPath->NumTrackNodes; i++) {
+ *gString = '\0';
+ for (lp = 0; work_buff[bp] != '\n'; bp++, lp++)
+ gString[lp] = work_buff[bp];
+ bp++;
+#ifdef FIX_BUGS
+ gString[lp] = '\0';
+#endif
+ sscanf(gString, "%f %f %f", &pPath->aTrackNodes[i].x, &pPath->aTrackNodes[i].y, &pPath->aTrackNodes[i].z);
+ pPath->aTrackNodes[i].z = 0.0f;
+ }
+ }
+
+ // Calculate length of segments and track
+ float t = 0.0f;
+ for (i = 0; i < pPath->NumTrackNodes; i++) {
+ pPath->aTrackNodes[i].t = t;
+ t += Sqrt(SQR(pPath->aTrackNodes[(i + 1) % pPath->NumTrackNodes].x - pPath->aTrackNodes[i].x) +
+ (SQR(pPath->aTrackNodes[(i + 1) % pPath->NumTrackNodes].y - pPath->aTrackNodes[i].y)));
+ }
+ pPath->TotalLengthOfTrack = t;
+
+ // Find correct z values
+ if (readingFile) {
+ CColPoint colpoint;
+ CEntity* entity;
+ for (i = 0; i < pPath->NumTrackNodes; i++) {
+ CVector p(pPath->aTrackNodes[i].x, pPath->aTrackNodes[i].y, pPath->aTrackNodes[i].z + 1.0f);
+ if (CWorld::ProcessVerticalLine(p, p.z - 0.5f, colpoint, entity, true, false, false, false, true, false, nil))
+ pPath->aTrackNodes[i].z = colpoint.point.z;
+ pPath->aTrackNodes[i].z += 0.2f;
+ }
+ }
+
+ int nStationIndices[NUM_FERRY_STATIONS];
+ for (int i = 0; i < NUM_FERRY_STATIONS; i++)
+ nStationIndices[i] = 0;
+ int nCurrentStation = 0;
+
+ for (i = 0; i < pPath->NumTrackNodes; i++) {
+ CFerryNode* pCurNode = &pPath->aTrackNodes[i];
+ CFerryNode* pNextNode = (i + 1 < pPath->NumTrackNodes) ? &pPath->aTrackNodes[i + 1] : &pPath->aTrackNodes[0];
+ CFerryNode* pPrevNode = (i - 1 >= 0) ? &pPath->aTrackNodes[i - 1] : &pPath->aTrackNodes[pPath->NumTrackNodes - 1];
+ if (pCurNode->x - pNextNode->x > 0.0f && pPrevNode->x - pCurNode->x < 0.0f)
+ nStationIndices[nCurrentStation++] = i;
+ if (pCurNode->x - pNextNode->x < 0.0f && pPrevNode->x - pCurNode->x > 0.0f)
+ nStationIndices[nCurrentStation++] = i;
+ }
+
+ float stationDists[NUM_FERRY_STATIONS];
+ for (i = 0; i < NUM_FERRY_STATIONS; i++)
+ stationDists[i] = pPath->aTrackNodes[nStationIndices[i]].t;
+
+ // Create animation for stopping at stations
+ float position = 0.0f;
+ float time = 0.0f;
+ int j = 0;
+ for (i = 0; i < NUM_FERRY_STATIONS; i++) {
+ // Start at full speed
+ pPath->aLineBits[j].type = FERRY_CRUISING;
+ pPath->aLineBits[j].time = time;
+ pPath->aLineBits[j].position = position;
+ pPath->aLineBits[j].speed = FERRY_SPEED;
+ pPath->aLineBits[j].acceleration = 0.0f;
+ j++;
+ // distance to next keyframe
+ float dist = (stationDists[i] - FERRY_SLOWDOWN_DISTANCE) - position;
+ time += dist / FERRY_SPEED;
+ position += dist;
+
+ // Now slow down 50 units before stop
+ pPath->aLineBits[j].type = FERRY_SLOWING;
+ pPath->aLineBits[j].time = time;
+ pPath->aLineBits[j].position = position;
+ pPath->aLineBits[j].speed = FERRY_SPEED;
+ pPath->aLineBits[j].acceleration = -(FERRY_SPEED * FERRY_SPEED) / (4 * FERRY_SLOWDOWN_DISTANCE);
+ j++;
+ time += 2 * FERRY_SLOWDOWN_DISTANCE / FERRY_SPEED;
+ position += FERRY_SLOWDOWN_DISTANCE; // at station
+
+ // stopping
+ pPath->aLineBits[j].type = FERRY_STOPPED;
+ pPath->aLineBits[j].time = time;
+ pPath->aLineBits[j].position = position;
+ pPath->aLineBits[j].speed = 0.0f;
+ pPath->aLineBits[j].acceleration = 0.0f;
+ j++;
+ time += FERRY_TIME_STOPPED_AT_STATION;
+
+ // accelerate again
+ pPath->aLineBits[j].type = FERRY_ACCELERATING;
+ pPath->aLineBits[j].time = time;
+ pPath->aLineBits[j].position = position;
+ pPath->aLineBits[j].speed = 0.0f;
+ pPath->aLineBits[j].acceleration = (FERRY_SPEED * FERRY_SPEED) / (4 * FERRY_SLOWDOWN_DISTANCE);
+ j++;
+ time += 2 * FERRY_SLOWDOWN_DISTANCE / FERRY_SPEED;
+ position += FERRY_SLOWDOWN_DISTANCE; // after station
+ }
+ // last keyframe
+ pPath->aLineBits[j].type = FERRY_CRUISING;
+ pPath->aLineBits[j].time = time;
+ pPath->aLineBits[j].position = position;
+ pPath->aLineBits[j].speed = FERRY_SPEED;
+ pPath->aLineBits[j].acceleration = 0.0f;
+ j++;
+ pPath->TotalDurationOfTrack = time + (pPath->TotalLengthOfTrack - position) / FERRY_SPEED;
+
+ // end
+ pPath->aLineBits[j].time = pPath->TotalDurationOfTrack;
+ }
+}
+
+void CFerry::InitFerrys(void)
+{
+ printf("init ferrys\n");
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame)
+ SetupForMultiplayer();
+#endif
+ if (!mspInst)
+ Init(nil);
+ for (int i = 0; i < NUM_FERRIES; i++)
+ mspInst->m_apFerries[i] = nil;
+ CStreaming::LoadAllRequestedModels(false);
+ CStreaming::RequestModel(MI_FERRY, 0);
+ CStreaming::LoadAllRequestedModels(false);
+}
+
+void CFerry::SwitchFerryCollision(int type)
+{
+ for (int i = 0; i < NUM_FERRIES; i++) {
+ CFerry* pFerry = GetFerry(i);
+ if (pFerry && pFerry->m_nCollision != type) {
+ pFerry->m_nCollision = type;
+ CVehicleModelInfo* mi = pFerry->GetModelInfo();
+ if (type == 1)
+ mi->SetColModel(&CTempColModels::ms_colModelFerryDocked);
+ else
+ mi->SetColModel(pFerry->m_pDefaultColModel, true);
+ }
+ }
+}
+
+void CFerry::UpdateFerrys(void)
+{
+ int i, j;
+ float t, deltaT;
+ if (mspInst->m_bFerriesDisabled)
+ return;
+ for (i = 0; i < NUM_FERRIES; i++) {
+ CFerry* pFerry = GetFerry(i);
+ if (pFerry) {
+ pFerry->m_nTimeAlongPath += CTimer::GetTimeStepInMilliseconds();
+ t = mspInst->pPathData[i/2]->TotalDurationOfTrack * (float)((pFerry->m_nTimeAlongPath + (i & 1) * 0x20000) & 0x3FFFF) / 0x40000;
+ // find current frame
+ for (j = 0; t > mspInst->pPathData[i / 2]->aLineBits[j + 1].time; j++);
+
+ deltaT = t - mspInst->pPathData[i / 2]->aLineBits[j].time;
+ if (pFerry->m_bFerryDocked) {
+ if (mspInst->pPathData[i / 2]->aLineBits[j].type == FERRY_SLOWING) {
+ pFerry->m_nTimeAlongPath += (mspInst->pPathData[i / 2]->aLineBits[j + 1].time - mspInst->pPathData[i / 2]->aLineBits[j].time);
+ j++;
+ if (j > NUM_FERRY_STATIONS * 4 + 1)
+ j = 0;
+ pFerry->m_bApproachingDock = true;
+ if ((i & 1) == 0) {
+ GetFerry(i + 1)->m_bApproachingDock = true;
+ GetFerry(i + 1)->m_nTimeAlongPath += (mspInst->pPathData[i / 2]->aLineBits[j + 1].time - mspInst->pPathData[i / 2]->aLineBits[j].time);
+ }
+ else {
+ GetFerry(i - 1)->m_bApproachingDock = true;
+ GetFerry(i - 1)->m_nTimeAlongPath += (mspInst->pPathData[i / 2]->aLineBits[j + 1].time - mspInst->pPathData[i / 2]->aLineBits[j].time);
+ }
+ }
+ }
+ if (pFerry->m_nSkipFerryStatus == 1) {
+ float fDelta = 0.0f;
+ pFerry->m_nSkipFerryStatus = 2;
+ while (mspInst->pPathData[i / 2]->aLineBits[j].type != FERRY_STOPPED) {
+ fDelta += (mspInst->pPathData[i / 2]->aLineBits[j + 1].time - mspInst->pPathData[i / 2]->aLineBits[j].time);
+ j++;
+ if (j > NUM_FERRY_STATIONS * 4)
+ j = 0;
+ }
+ pFerry->m_nTimeAlongPath += fDelta;
+ pFerry->m_bApproachingDock = true;
+ if ((i & 1) == 0) {
+ GetFerry(i + 1)->m_bApproachingDock = true;
+ GetFerry(i + 1)->m_nTimeAlongPath += fDelta;
+ }
+ else {
+ GetFerry(i - 1)->m_bApproachingDock = true;
+ GetFerry(i - 1)->m_nTimeAlongPath += fDelta;
+ }
+ }
+ switch (mspInst->pPathData[i / 2]->aLineBits[j].type) {
+ case FERRY_STOPPED:
+ mspInst->m_afPositions[i] = mspInst->pPathData[i / 2]->aLineBits[j].position;
+ mspInst->m_afSpeeds[i] = 0.0f;
+ break;
+ case FERRY_CRUISING:
+ mspInst->m_afPositions[i] = mspInst->pPathData[i / 2]->aLineBits[j].position + mspInst->pPathData[i / 2]->aLineBits[j].speed * deltaT;
+ mspInst->m_afSpeeds[i] = (mspInst->pPathData[i / 2]->TotalDurationOfTrack * 1000.0f / 0x40000) * mspInst->pPathData[i / 2]->aLineBits[j].speed;
+ break;
+ case FERRY_SLOWING:
+ case FERRY_ACCELERATING:
+ pFerry->m_bApproachingDock = (mspInst->pPathData[i / 2]->aLineBits[j].type == FERRY_SLOWING);
+ mspInst->m_afPositions[i] = mspInst->pPathData[i / 2]->aLineBits[j].position + (mspInst->pPathData[i / 2]->aLineBits[j].speed + mspInst->pPathData[i / 2]->aLineBits[j].acceleration * deltaT) * deltaT;
+ mspInst->m_afSpeeds[i] = (mspInst->pPathData[i / 2]->TotalDurationOfTrack * 1000.0f / 0x40000) * (mspInst->pPathData[i / 2]->aLineBits[j].speed + 2 * mspInst->pPathData[i / 2]->aLineBits[j].acceleration * deltaT);
+ break;
+ }
+ }
+ }
+}
+
+void CFerry::SetModelIndex(uint32 mi)
+{
+ CVehicle::SetModelIndex(mi);
+ for (int i = 0; i < NUM_FERRY_NODES; i++)
+ m_aFerryNodes[i] = nil;
+ CClumpModelInfo::FillFrameArray(GetClump(), m_aFerryNodes);
+}
+
+void CFerry::PreRender(void)
+{
+ CVehicleModelInfo* mi = GetModelInfo();
+ if (CGeneral::GetRandomTrueFalse())
+ CParticle::AddParticle(PARTICLE_FERRY_CHIM_SMOKE, GetMatrix() * mi->m_positions[FERRY_POS_CHIM_LEFT], CVector(0.0f, 0.0f, 0.2f));
+ CVector vVectorToCamera = GetPosition() - TheCamera.GetPosition();
+ CVector vDirectionToCamera;
+ float fDistanceToCamera = vVectorToCamera.Magnitude();
+ if (fDistanceToCamera == 0.0f)
+ vVectorToCamera = vDirectionToCamera = CVector(1.0f, 0.0f, 0.0f);
+ else
+ vDirectionToCamera = vVectorToCamera / fDistanceToCamera;
+ float dp = DotProduct(GetForward(), vDirectionToCamera);
+ if (dp < 0.0f) {
+ CVector vFrontLightPosition = GetMatrix() * mi->m_positions[FERRY_POS_LIGHT_FRONT];
+ CVector vFrontLightPosition2 = vFrontLightPosition - 2 * mi->m_positions[FERRY_POS_LIGHT_FRONT].x * GetRight();
+ float size = -dp + 1.0f;
+ float fIntensity = -dp * 0.4f + 0.2f;
+ if (dp < -0.9f && fDistanceToCamera < 35.0f) {
+ uint8 intensity = fIntensity * 255.0f;
+ CCoronas::RegisterCorona((uint32)(uintptr)this + 26, intensity, intensity, intensity, 255, vFrontLightPosition2, size, 80.0f, CCoronas::TYPE_NORMAL, CCoronas::FLARE_HEADLIGHTS, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
+ CCoronas::RegisterCorona((uint32)(uintptr)this + 27, intensity, intensity, intensity, 255, vFrontLightPosition, size, 80.0f, CCoronas::TYPE_NORMAL, CCoronas::FLARE_HEADLIGHTS, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
+ }
+ else {
+ uint8 intensity = fIntensity * 255.0f;
+ CCoronas::RegisterCorona((uint32)(uintptr)this + 26, intensity, intensity, intensity, 255, vFrontLightPosition2, size, 80.0f, CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
+ CCoronas::RegisterCorona((uint32)(uintptr)this + 27, intensity, intensity, intensity, 255, vFrontLightPosition, size, 80.0f, CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
+ }
+ }
+ CVector vRearLightPosition = GetMatrix() * mi->m_positions[FERRY_POS_LIGHT_REAR];
+ CVector vRearLightPosition2 = vRearLightPosition - 2 * mi->m_positions[FERRY_POS_LIGHT_REAR].x * GetRight();
+ CCoronas::RegisterCorona((uint32)(uintptr)this + 28, 255, 0, 0, 255, vRearLightPosition2, 1.0f, 80.0f, CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
+ CCoronas::RegisterCorona((uint32)(uintptr)this + 29, 255, 0, 0, 255, vRearLightPosition, 1.0f, 80.0f, CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
+}
+
+void CFerry::Render(void)
+{
+ m_bAlreadyRendered = true;
+ CEntity::Render();
+}
+
+void CFerry::RenderAllRemaning(void)
+{
+#ifdef GTA_NETWORK
+ if (gIsMultiplayerGame)
+ return;
+#endif
+ for (int i = 0; i < NUM_FERRIES; i++) {
+ CFerry* pFerry = GetFerry(i);
+ if (pFerry) {
+ if (!pFerry->m_bAlreadyRendered)
+ pFerry->Render();
+ pFerry->m_bAlreadyRendered = false;
+ }
+ }
+}
+
+void CFerry::FerryHitStuff(CPtrList& lst)
+{
+ for (CPtrNode* pNode = lst.first; pNode != nil; pNode = pNode->next) {
+ CPhysical* pEntity = (CPhysical*)pNode->item;
+ if (pEntity != this && Abs(GetPosition().x - pEntity->GetPosition().z) < 1.5f)
+ pEntity->bHitByTrain = true;
+ }
+}
+
+void CFerry::ProcessControl(void)
+{
+ if (gbModelViewer)
+ return;
+ PruneWakeTrail();
+ if (m_isFarAway && (m_nFerryId + CTimer::GetFrameCounter() & 0xF) != 0)
+ return;
+ CFerryPath* pPath = mspInst->pPathData[m_nFerryId / 2];
+ float fPosition = mspInst->m_afPositions[m_nFerryId];
+ float fSpeed = mspInst->m_afSpeeds[m_nFerryId];
+ if (fPosition < 0.0f)
+ fPosition += pPath->TotalLengthOfTrack;
+
+ CFerryNode* trackNodes = mspInst->pPathData[m_nFerryId / 2]->aTrackNodes;
+ int16 numTrackNodes = mspInst->pPathData[m_nFerryId / 2]->NumTrackNodes;
+ float totalLengthOfTrack = mspInst->pPathData[m_nFerryId / 2]->TotalLengthOfTrack;
+ float trackPosition = mspInst->m_afPositions[m_nFerryId];
+ float trackSpeed = mspInst->m_afSpeeds[m_nFerryId];
+
+ float trackPositionRear = trackPosition;
+ if (trackPositionRear < 0.0f)
+ trackPositionRear += totalLengthOfTrack;
+
+ // Advance current node to appropriate position
+ float pos1, pos2;
+ int nextTrackNode = m_nCurTrackNode + 1;
+ pos1 = trackNodes[m_nCurTrackNode].t;
+ if (nextTrackNode < numTrackNodes)
+ pos2 = trackNodes[nextTrackNode].t;
+ else {
+ nextTrackNode = 0;
+ pos2 = totalLengthOfTrack;
+ }
+ while (trackPositionRear < pos1 || trackPositionRear > pos2) {
+ m_nCurTrackNode = (m_nCurTrackNode + 1) % numTrackNodes;
+ nextTrackNode = m_nCurTrackNode + 1;
+ pos1 = trackNodes[m_nCurTrackNode].t;
+ if (nextTrackNode < numTrackNodes)
+ pos2 = trackNodes[nextTrackNode].t;
+ else {
+ nextTrackNode = 0;
+ pos2 = totalLengthOfTrack;
+ }
+ }
+ float dist = trackNodes[nextTrackNode].t - trackNodes[m_nCurTrackNode].t;
+ if (dist < 0.0f)
+ dist += totalLengthOfTrack;
+ float f = (trackPositionRear - trackNodes[m_nCurTrackNode].t) / dist;
+ CVector posRear = (1.0f - f) * CVector(trackNodes[m_nCurTrackNode].x, trackNodes[m_nCurTrackNode].y, trackNodes[m_nCurTrackNode].z) +
+ f * CVector(trackNodes[nextTrackNode].x, trackNodes[nextTrackNode].y, trackNodes[nextTrackNode].z);
+
+ // Now same again for the front
+ float trackPositionFront = trackPositionRear + 20.0f;
+ if (trackPositionFront > totalLengthOfTrack)
+ trackPositionFront -= totalLengthOfTrack;
+ int curTrackNodeFront = m_nCurTrackNode;
+ int nextTrackNodeFront = curTrackNodeFront + 1;
+ pos1 = trackNodes[curTrackNodeFront].t;
+ if (nextTrackNodeFront < numTrackNodes)
+ pos2 = trackNodes[nextTrackNodeFront].t;
+ else {
+ nextTrackNodeFront = 0;
+ pos2 = totalLengthOfTrack;
+ }
+ while (trackPositionFront < pos1 || trackPositionFront > pos2) {
+ curTrackNodeFront = (curTrackNodeFront + 1) % numTrackNodes;
+ nextTrackNodeFront = curTrackNodeFront + 1;
+ pos1 = trackNodes[curTrackNodeFront].t;
+ if (nextTrackNodeFront < numTrackNodes)
+ pos2 = trackNodes[nextTrackNodeFront].t;
+ else {
+ nextTrackNodeFront = 0;
+ pos2 = totalLengthOfTrack;
+ }
+ }
+ dist = trackNodes[nextTrackNodeFront].t - trackNodes[curTrackNodeFront].t;
+ if (dist < 0.0f)
+ dist += totalLengthOfTrack;
+ f = (trackPositionFront - trackNodes[curTrackNodeFront].t) / dist;
+ CVector posFront = (1.0f - f) * CVector(trackNodes[curTrackNodeFront].x, trackNodes[curTrackNodeFront].y, trackNodes[curTrackNodeFront].z) +
+ f * CVector(trackNodes[nextTrackNodeFront].x, trackNodes[nextTrackNodeFront].y, trackNodes[nextTrackNodeFront].z);
+
+ // Now set matrix
+ SetPosition((posRear + posFront) / 2.0f);
+ CVector fwd = posFront - posRear;
+ m_vecForwardSpeed = fwd;
+ fwd.Normalise();
+ float dp = DotProduct(fwd, GetForward());
+ if (Abs(dp) > 1.001f || Abs(dp) < 0.999f) {
+ CVector df = CrossProduct(fwd, GetForward());
+ CMatrix tmp;
+ float angle;
+ if (m_nSkipFerryStatus == 2) {
+ m_nSkipFerryStatus = 0;
+ angle = (fwd.x < 0.0f && GetForward().x < 0.0f) ? PI - Acos(dp) : Acos(dp);
+ }
+ else {
+ angle = 0.001f;
+ }
+ if (dp > 0.0f && df.z < 0.0f || dp <= 0.0f && df.z > 0.0f)
+ angle = -angle;
+ tmp.SetRotateZ(angle);
+ fwd = Multiply3x3(GetForward(), tmp);
+ }
+ else
+ fwd = GetForward();
+ CVector right = CrossProduct(fwd, CVector(0.0f, 0.0f, 1.0f));
+ right.Normalise();
+ CVector up = CrossProduct(right, fwd);
+ GetRight() = right;
+ GetUp() = up;
+ GetForward() = fwd;
+
+ // Set speed
+ m_vecMoveSpeed = fwd * trackSpeed / 60.0f;
+ m_fSpeed = trackSpeed / 60.0f;
+ m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f);
+
+ if (m_vecMoveSpeed.MagnitudeSqr() > 0.001f || !m_bApproachingDock) {
+ SetStatus(STATUS_FERRY_MOVING);
+ m_bFerryDocked = false;
+ m_bPlayerArrivedHorn = false;
+ m_nTimeLeftStation = CTimer::GetTimeInMilliseconds();
+ }
+ else {
+ SetStatus(STATUS_FERRY_NOT_MOVING);
+ PlayArrivedHorn();
+ m_bFerryDocked = true;
+ }
+
+ m_isFarAway = !((posFront - TheCamera.GetPosition()).Magnitude2D() < sq(1000.0f));
+
+ switch (m_nDoorState) {
+ case FERRY_DOOR_CLOSED:
+ break;
+ case FERRY_DOOR_OPENING:
+ if (CTimer::GetTimeInMilliseconds() < m_nDoorTimer) {
+ OpenFerryDoor(1.0f - (m_nDoorTimer - CTimer::GetTimeInMilliseconds()) / 1000.0f);
+ }
+ else {
+ OpenFerryDoor(1.0f);
+ m_nDoorState = FERRY_DOOR_OPEN;
+ }
+ break;
+
+ case FERRY_DOOR_OPEN:
+ break;
+
+ case FERRY_DOOR_CLOSING:
+ if (CTimer::GetTimeInMilliseconds() < m_nDoorTimer) {
+ OpenFerryDoor((m_nDoorTimer - CTimer::GetTimeInMilliseconds()) / 1000.0f);
+ }
+ else {
+ OpenFerryDoor(0.0f);
+ m_nDoorState = FERRY_DOOR_CLOSED;
+ }
+ break;
+ }
+
+ CVector wn = CWaterLevel::GetWaterNormal(GetPosition().x, GetPosition().y);
+ float fRollAngle = wn.x - GetUp().x;
+ if (fRollAngle < 0.0f)
+ fRollAngle = Max(-0.05f, fRollAngle);
+ else
+ fRollAngle = Min(0.05f, fRollAngle);
+
+ CVector oldPos = GetPosition();
+ SetPosition(-GetPosition());
+ CMatrix tmp2;
+ tmp2.SetRotateX(fRollAngle);
+ tmp2 = tmp2 * GetMatrix();
+ tmp2.SetTranslateOnly(oldPos);
+ GetMatrix() = tmp2;
+
+ GetMatrix().UpdateRW();
+ UpdateRwFrame();
+ RemoveAndAdd();
+
+ bIsStuck = false;
+ bIsInSafePosition = true;
+ bWasPostponed = false;
+
+ // request/remove model
+ if (m_isFarAway) {
+ if (m_rwObject)
+ DeleteRwObject();
+ }
+ else if (CStreaming::HasModelLoaded(MI_FERRY)) {
+ if (m_rwObject == nil) {
+ m_modelIndex = -1;
+ SetModelIndex(MI_FERRY);
+ }
+ }
+ else {
+ if (FindPlayerCoors().z * GetPosition().z >= 0.0f)
+ CStreaming::RequestModel(MI_FERRY, STREAMFLAGS_DEPENDENCY);
+ }
+
+ // Hit stuff
+ if (GetStatus() == STATUS_TRAIN_MOVING) {
+ CVector nfwd = GetForward() * GetColModel()->boundingBox.max.y;
+ if (m_vecForwardSpeed.x > 0.0f)
+ nfwd = -nfwd;
+ if ((m_nFerryId & 1) == 0)
+ nfwd = -nfwd;
+
+ int x, xmin, xmax;
+ int y, ymin, ymax;
+
+ CVector front = GetPosition() + nfwd + m_vecMoveSpeed * CTimer::GetTimeStep();
+ if (!m_isFarAway && m_vecMoveSpeed.Magnitude2D() > 0.05f)
+ AddWakePoint(nfwd * 0.85f + GetPosition());
+
+ xmin = CWorld::GetSectorIndexX(front.x - 3.0f);
+ if (xmin < 0) xmin = 0;
+ xmax = CWorld::GetSectorIndexX(front.x + 3.0f);
+ if (xmax > NUMSECTORS_X - 1) xmax = NUMSECTORS_X - 1;
+ ymin = CWorld::GetSectorIndexY(front.y - 3.0f);
+ if (ymin < 0) ymin = 0;
+ ymax = CWorld::GetSectorIndexY(front.y + 3.0f);
+ if (ymax > NUMSECTORS_Y - 1) ymax = NUMSECTORS_X - 1;
+
+ CWorld::AdvanceCurrentScanCode();
+
+ for (y = ymin; y <= ymax; y++)
+ for (x = xmin; x <= xmax; x++) {
+ CSector* s = CWorld::GetSector(x, y);
+ FerryHitStuff(s->m_lists[ENTITYLIST_VEHICLES]);
+ FerryHitStuff(s->m_lists[ENTITYLIST_VEHICLES_OVERLAP]);
+ FerryHitStuff(s->m_lists[ENTITYLIST_PEDS]);
+ FerryHitStuff(s->m_lists[ENTITYLIST_PEDS_OVERLAP]);
+ }
+ }
+}
+
+void CFerry::OpenFerryDoor(float ratio)
+{
+ if (!m_rwObject)
+ return;
+
+ int door1 = 0;
+ int door2 = 1;
+ if (!m_bUseFrontDoor) {
+ door1 = 2;
+ door2 = 3;
+ }
+ int node1 = m_bUseFrontDoor ? FERRY_DOOR_FRONT : FERRY_DOOR_BACK;
+ int node2 = m_bUseFrontDoor ? FERRY_RAMP_FRONT : FERRY_RAMP_BACK;
+ CMatrix doorL(RwFrameGetMatrix(m_aFerryNodes[node1]));
+ CMatrix doorR(RwFrameGetMatrix(m_aFerryNodes[node2]));
+ CVector posL = doorL.GetPosition();
+ CVector posR = doorR.GetPosition();
+
+ bool isClosed = m_doors[0].IsClosed(); // useless
+
+ m_doors[door1].Open(ratio);
+ m_doors[door2].Open(ratio);
+
+ doorL.SetRotateXOnly(m_doors[door1].m_fAngle);
+ doorR.SetRotateXOnly(m_doors[door2].m_fAngle);
+
+ doorL.UpdateRW();
+ doorR.UpdateRW();
+}
+
+CVector CFerry::GetBoardingSpace(CFerry::eSpaceUse use, CFerry::eSpaceStyle style, uint8 position)
+{
+ CVehicleModelInfo* pModelInfo = GetModelInfo();
+ CVector space;
+ if (m_nFerryId & 1) {
+ if (style == FERRY_SPACE_STYLE_0)
+ style = FERRY_SPACE_STYLE_1;
+ else
+ style = FERRY_SPACE_STYLE_0;
+ }
+ switch (use) {
+ case FERRY_SPACE_PED:
+ space = pModelInfo->m_positions[FERRY_POS_PED_POINT];
+ break;
+ case FERRY_SPACE_CAR:
+ space = pModelInfo->m_positions[FERRY_POS_CAR1 + position];
+ break;
+ }
+ switch (style) {
+ case FERRY_SPACE_STYLE_0:
+ space = GetMatrix() * space;
+ break;
+ case FERRY_SPACE_STYLE_1:
+ space = GetMatrix() * space - (2 * space.x) * GetRight() - (2 * space.y) * GetForward();
+ break;
+ }
+ return space;
+}
+
+CFerry* CFerry::GetClosestFerry(float x, float y)
+{
+ int closest = -1;
+ float mindist = 9999.9f;
+ for (int i = 0; i < NUM_FERRIES; i++) {
+ CFerry* pFerry = GetFerry(i);
+ if (pFerry) {
+ float dist = ((CVector2D)pFerry->GetPosition() - CVector2D(x, y)).Magnitude();
+ if (dist < 300.0f && dist < mindist) {
+ mindist = dist;
+ closest = i;
+ }
+ }
+ }
+ if (closest == -1)
+ return nil;
+ return GetFerry(closest);
+}
+
+bool CFerry::IsDocked(void)
+{
+ return m_bFerryDocked;
+}
+
+void CFerry::OpenDoor(void)
+{
+ printf("opening the ferry door\n");
+ m_nDoorState = FERRY_DOOR_OPENING;
+ m_nDoorTimer = CTimer::GetTimeInMilliseconds() + 10000;
+ CVehicleModelInfo* pModelInfo = GetModelInfo();
+ CVector2D vPlayerPos = FindPlayerPed()->GetPosition();
+ float fDistToCar4 = (vPlayerPos - GetMatrix() * pModelInfo->m_positions[FERRY_POS_CAR4]).Magnitude();
+ float fDistToCar1 = (vPlayerPos - GetMatrix() * pModelInfo->m_positions[FERRY_POS_CAR1]).Magnitude();
+ m_bUseFrontDoor = true;
+ if (fDistToCar4 < fDistToCar1)
+ m_bUseFrontDoor = false;
+ AudioManager.DirectlyEnqueueSample(SFX_GATE_START_CLU, SFX_BANK_0, 0, 1, 22050, 127, 20);
+}
+
+void CFerry::CloseDoor(void)
+{
+ printf("closing the ferry door\n");
+ m_nDoorState = FERRY_DOOR_CLOSING;
+ m_nDoorTimer = CTimer::GetTimeInMilliseconds() + 10000;
+ AudioManager.DirectlyEnqueueSample(SFX_GATE_START_CLU, SFX_BANK_0, 0, 1, 22050, 127, 20); // shouldn't this be SFX_GATE_STOP_CLU?
+}
+
+bool CFerry::IsDoorOpen(void)
+{
+ return m_nDoorState == FERRY_DOOR_OPEN;
+}
+
+bool CFerry::IsDoorClosed(void)
+{
+ return m_nDoorState == FERRY_DOOR_CLOSED;
+}
+
+void CFerry::CompleteDorrMovement(void)
+{
+ m_nDoorTimer = 0;
+}
+
+void CFerry::DissableFerryPath(int)
+{
+}
+
+void CFerry::EnableFerryPath(int path)
+{
+ CStreaming::LoadAllRequestedModels(false);
+ CStreaming::RequestModel(MI_FERRY, 0);
+ CStreaming::LoadAllRequestedModels(false);
+ for (int i = path * 2; i < path * 2 + 2; i++) {
+ CFerry* pFerry = new CFerry(MI_FERRY, PERMANENT_VEHICLE);
+ bool bDirect = i & 1;
+ mspInst->m_apFerries[i] = pFerry;
+ pFerry->SetPosition(0.0f, 0.0f, 0.0f);
+ pFerry->SetStatus(STATUS_ABANDONED);
+ pFerry->bIsLocked = true;
+ pFerry->SetHeading(bDirect ? HALFPI : 3 * HALFPI);
+ pFerry->m_nFerryId = i;
+ pFerry->m_nCurTrackNode = 0;
+ CWorld::Add(pFerry);
+ }
+}
+
+void CFerry::SkipFerryToNextDock(void)
+{
+ m_nSkipFerryStatus = 1;
+}
+
+void CFerry::PruneWakeTrail(void)
+{
+ int16 num_remaining = 0;
+ for (int i = 0; i < NUM_WAKE_POINTS; i++) {
+ if (mspInst->m_afWakePointTimer[m_nFerryId][i] <= 0.0f)
+ break;
+ if (mspInst->m_afWakePointTimer[m_nFerryId][i] <= CTimer::GetTimeStep()) {
+ mspInst->m_afWakePointTimer[m_nFerryId][i] = 0.0f;
+ break;
+ }
+ mspInst->m_afWakePointTimer[m_nFerryId][i] -= CTimer::GetTimeStep();
+ num_remaining++;
+ }
+ mspInst->m_anNumWakePoints[m_nFerryId] = num_remaining;
+}
+
+void CFerry::AddWakePoint(CVector point)
+{
+ if (mspInst->m_afWakePointTimer[m_nFerryId][0] > 0.0f) {
+ int nNewWakePoints = Min(NUM_WAKE_POINTS - 1, mspInst->m_anNumWakePoints[m_nFerryId]);
+ for (int i = 0; i < nNewWakePoints; i++) {
+ mspInst->m_avWakePoints[m_nFerryId][i + 1] = mspInst->m_avWakePoints[m_nFerryId][i];
+ mspInst->m_afWakePointTimer[m_nFerryId][i + 1] = mspInst->m_afWakePointTimer[m_nFerryId][i];
+ }
+ }
+ mspInst->m_avWakePoints[m_nFerryId][0] = point;
+ mspInst->m_afWakePointTimer[m_nFerryId][0] = 900.0f; // TODO: define
+ mspInst->m_anNumWakePoints[m_nFerryId] += 1;
+}
+
+void CFerry::PlayArrivedHorn(void)
+{
+ if (m_bPlayerArrivedHorn)
+ return;
+ m_bPlayerArrivedHorn = true;
+ float fDistToCamera = (GetPosition() - TheCamera.GetPosition()).Magnitude();
+ if (fDistToCamera < 200.0f) {
+ uint8 volume = (200.0f - fDistToCamera) / 200.0f * 127;
+ AudioManager.DirectlyEnqueueSample(SFX_CAR_HORN_TRUCK, SFX_BANK_0, 0, 1, 18000, volume, 50);
+ }
+}
+
+CVector CFerry::GetNearestDoor(CVector)
+{
+ return CVector(0.0f, 0.0f, 1.0f);
+}
+
+void CFerry::SetupForMultiplayer(void)
+{
+ for (int i = 0; i < NUM_FERRIES; i++)
+ mspInst->m_apFerries[i] = nil;
+ printf("setting up the ferrys for multiplayer\n");
+ CStreaming::SetModelIsDeletable(MI_FERRY);
+}
+
+void CFerry::Write(base::cRelocatableChunkWriter& writer)
+{
+ writer.AllocateRaw(mspInst, sizeof(*mspInst), 4);
+ if (!mspInst)
+ return;
+ for (int i = 0; i < NUM_FERRY_PATHS; i++) {
+ writer.AllocateRaw(mspInst->pPathData[i], sizeof(*mspInst->pPathData[i]), 4);
+ writer.AddPatch(&mspInst->pPathData[i]);
+ writer.AllocateRaw(mspInst->pPathData[i]->aTrackNodes, mspInst->pPathData[i]->NumTrackNodes * sizeof(CFerryNode), 4);
+ writer.AddPatch(&mspInst->pPathData[i]->aTrackNodes);
+ writer.AllocateRaw(mspInst->pPathData[i]->aLineBits, (NUM_FERRY_STATIONS * 4 + 2) * sizeof(CFerryInterpolationLine), 4);
+ writer.AddPatch(&mspInst->pPathData[i]->aTrackNodes);
+ }
+}
+
diff --git a/src/vehicles/Ferry.h b/src/vehicles/Ferry.h
new file mode 100644
index 00000000..f7936da9
--- /dev/null
+++ b/src/vehicles/Ferry.h
@@ -0,0 +1,143 @@
+#pragma once
+
+#include "Vehicle.h"
+#include "Door.h"
+
+enum eFerryNodes
+{
+ FERRY_DOOR_FRONT = 1,
+ FERRY_RAMP_FRONT,
+ FERRY_DOOR_BACK,
+ FERRY_RAMP_BACK,
+ NUM_FERRY_NODES
+};
+
+enum {
+ NUM_FERRY_STATIONS = 2,
+ NUM_FERRIES = NUM_FERRY_PATHS * 2,
+ NUM_WAKE_POINTS = 64
+};
+
+enum {
+ FERRY_STOPPED = 0,
+ FERRY_CRUISING,
+ FERRY_SLOWING,
+ FERRY_ACCELERATING
+};
+
+enum
+{
+ FERRY_DOOR_CLOSED = 0,
+ FERRY_DOOR_OPENING,
+ FERRY_DOOR_OPEN,
+ FERRY_DOOR_CLOSING
+};
+
+struct CFerryNode
+{
+ float x;
+ float y;
+ float z;
+ float t;
+};
+
+struct CFerryInterpolationLine
+{
+ uint8 type;
+ float time; // when does this keyframe start
+ // initial values at start of frame
+ float position;
+ float speed;
+ float acceleration;
+};
+
+struct CFerryPath
+{
+ float TotalLengthOfTrack;
+ float TotalDurationOfTrack;
+ int16 NumTrackNodes;
+ CFerryNode* aTrackNodes;
+ CFerryInterpolationLine* aLineBits;
+};
+
+class CFerry;
+
+class CFerryInst
+{
+public:
+ CFerryPath* pPathData[NUM_FERRY_PATHS];
+ float m_afPositions[NUM_FERRIES];
+ float m_afSpeeds[NUM_FERRIES];
+ CFerry* m_apFerries[NUM_FERRIES];
+ bool m_bFerriesDisabled;
+ uint16 m_anNumWakePoints[NUM_FERRIES];
+ CVector2D m_avWakePoints[NUM_FERRIES][NUM_WAKE_POINTS];
+ float m_afWakePointTimer[NUM_FERRIES][NUM_WAKE_POINTS];
+};
+
+class CFerry : public CVehicle
+{
+public:
+ int16 m_nFerryId;
+ uint16 m_isFarAway;
+ uint16 m_nCurTrackNode;
+ float m_fSpeed;
+ bool m_bFerryDocked;
+ uint32 m_nDoorTimer;
+ uint32 m_nTimeLeftStation;
+ int16 m_nDoorState;
+ bool m_bApproachingDock;
+ uint8 m_nSkipFerryStatus;
+ uint32 m_nTimeAlongPath;
+ bool m_bUseFrontDoor;
+ CVector m_vecForwardSpeed;
+ CColModel* m_pDefaultColModel;
+ uint8 m_nCollision;
+ CDoor m_doors[4];
+ RwFrame* m_aFerryNodes[NUM_FERRY_NODES];
+ bool m_bAlreadyRendered;
+ bool m_bPlayerArrivedHorn;
+
+ static CFerryInst* mspInst;
+
+ enum eSpaceUse {
+ FERRY_SPACE_PED = 0,
+ FERRY_SPACE_CAR
+ };
+ enum eSpaceStyle {
+ FERRY_SPACE_STYLE_0 = 0,
+ FERRY_SPACE_STYLE_1
+ };
+ void Render(void);
+ static void EnableFerryPath(int);
+ CFerry(int32, uint8);
+ void SetModelIndex(uint32);
+ static void InitFerrys(void);
+ static void Init(void*);
+ void ProcessControl(void);
+ void PlayArrivedHorn(void);
+ void AddWakePoint(CVector);
+ void PruneWakeTrail(void);
+ void SkipFerryToNextDock(void);
+ static void DissableFerryPath(int);
+ void CompleteDorrMovement(void);
+ bool IsDoorOpen(void);
+ void CloseDoor(void);
+ bool IsDocked(void);
+ static CFerry* GetClosestFerry(float, float);
+ CVector GetBoardingSpace(CFerry::eSpaceUse, CFerry::eSpaceStyle, uint8);
+ CVector GetNearestDoor(CVector);
+ void OpenFerryDoor(float);
+ void FerryHitStuff(CPtrList&);
+ static void RenderAllRemaning(void);
+ static void UpdateFerrys(void);
+ static void SwitchFerryCollision(int);
+ void SetupForMultiplayer(void);
+ void Write(base::cRelocatableChunkWriter&);
+ virtual void OpenDoor(void);
+ void PreRender(void);
+ virtual bool IsDoorClosed(void);
+
+ static CFerry* GetFerry(int i) { return mspInst ? mspInst->m_apFerries[i] : nil; }
+ static void SetFerriesDisabled(bool disabled) { mspInst->m_bFerriesDisabled = disabled; }
+};
diff --git a/src/vehicles/HandlingMgr.cpp b/src/vehicles/HandlingMgr.cpp
index 8438c5c9..b5dc7658 100644
--- a/src/vehicles/HandlingMgr.cpp
+++ b/src/vehicles/HandlingMgr.cpp
@@ -42,6 +42,7 @@ const char VehicleNames[NUMHANDLINGS][14] = {
"RHINO",
"BARRACKS",
"TRAIN",
+ "FERRY",
"HELI",
"DODO",
"COACH",
@@ -54,66 +55,40 @@ const char VehicleNames[NUMHANDLINGS][14] = {
"DEADDODO",
"FLATBED",
"YANKEE",
- "GOLFCART",
- "VOODOO",
- "WASHING",
- "CUBAN",
- "ROMERO",
- "PACKER",
- "ADMIRAL",
- "GANGBUR",
- "ZEBRA",
- "TOPFUN",
- "GLENDALE",
- "OCEANIC",
- "HERMES",
- "SABRE1",
- "SABRETUR",
- "PHEONIX",
- "WALTON",
- "REGINA",
- "COMET",
- "DELUXO",
- "BURRITO",
- "SPAND",
- "BAGGAGE",
- "KAUFMAN",
- "RANCHER",
- "FBIRANCH",
- "VIRGO",
- "GREENWOO",
- "HOTRING",
- "SANDKING",
- "BLISTAC",
- "BOXVILLE",
- "BENSON",
- "DESPERAD",
- "LOVEFIST",
- "BLOODRA",
- "BLOODRB",
+ "BLISTA",
+ "BELLYUP",
+ "MRWONGS",
+ "YARDIE",
+ "YAKUZA",
+ "DIABLOS",
+ "COLUMB",
+ "HOODS",
+ "PANLANT",
+ "BORGNINE",
+ "CAMPVAN",
+ "BALLOT",
+ "SPIDER",
+ "SHELBY",
+ "PONTIAC",
+ "ESPRIT",
+ "MINI",
+ "HOTROD",
+ "SINDACCO",
+ "FORELLI",
"BIKE",
"MOPED",
"DIRTBIKE",
"ANGEL",
+ "DIRTBIK2",
+ "ANGE2",
"FREEWAY",
"PREDATOR",
"SPEEDER",
"REEFER",
- "RIO",
- "SQUALO",
- "TROPIC",
- "COASTGRD",
- "DINGHY",
- "MARQUIS",
- "CUPBOAT",
- "SEAPLANE",
- "SPARROW",
- "SEASPAR",
"MAVERICK",
"COASTMAV",
"POLMAV",
"HUNTER",
- "RCBARON",
"RCGOBLIN",
"RCCOPTER"
};
@@ -138,18 +113,17 @@ void
cHandlingDataMgr::LoadHandlingData(void)
{
char *start, *end;
- char line[201]; // weird value
+ char line[300];
char delim[4]; // not sure
char *word;
int field, handlingId;
- int keepGoing;
tHandlingData *handling;
tFlyingHandlingData *flyingHandling;
tBoatHandlingData *boatHandling;
tBikeHandlingData *bikeHandling;
CFileMgr::SetDir("DATA");
- CFileMgr::LoadFile(HandlingFilename, work_buff, sizeof(work_buff), "r");
+ ssize_t filesz = CFileMgr::LoadFile(HandlingFilename, work_buff, sizeof(work_buff), "r");
CFileMgr::SetDir("");
start = (char*)work_buff;
@@ -158,21 +132,18 @@ cHandlingDataMgr::LoadHandlingData(void)
flyingHandling = nil;
boatHandling = nil;
bikeHandling = nil;
- keepGoing = 1;
- while(keepGoing){
+ while(start < (char*)&work_buff[filesz]){
// find end of line
while(*end != '\n') end++;
// get line
strncpy(line, start, end - start);
line[end - start] = '\0';
- start = end+1;
- end = start+1;
// yeah, this is kinda crappy
if(strcmp(line, ";the end") == 0)
- keepGoing = 0;
+ break;
else if(line[0] != ';'){
if(line[0] == '!'){
// Bike data
@@ -286,19 +257,19 @@ cHandlingDataMgr::LoadHandlingData(void)
handling->nIdentifier = (tVehicleType)handlingId;
break;
case 1: handling->fMass = atof(word); break;
- case 2: handling->Dimension.x = atof(word); break;
- case 3: handling->Dimension.y = atof(word); break;
- case 4: handling->Dimension.z = atof(word); break;
- case 5: handling->CentreOfMass.x = atof(word); break;
- case 6: handling->CentreOfMass.y = atof(word); break;
- case 7: handling->CentreOfMass.z = atof(word); break;
- case 8: handling->nPercentSubmerged = atoi(word); break;
- case 9: handling->fTractionMultiplier = atof(word); break;
- case 10: handling->fTractionLoss = atof(word); break;
- case 11: handling->fTractionBias = atof(word); break;
- case 12: handling->Transmission.nNumberOfGears = atoi(word); break;
- case 13: handling->Transmission.fMaxVelocity = atof(word); break;
- case 14: handling->Transmission.fEngineAcceleration = atof(word) * 0.4; break;
+ case 2: handling->fTurnMass = atof(word); break;
+ case 3: handling->fDragMult = atof(word); break;
+ case 4: handling->CentreOfMass.x = atof(word); break;
+ case 5: handling->CentreOfMass.y = atof(word); break;
+ case 6: handling->CentreOfMass.z = atof(word); break;
+ case 7: handling->nPercentSubmerged = atoi(word); break;
+ case 8: handling->fTractionMultiplier = atof(word); break;
+ case 9: handling->fTractionLoss = atof(word); break;
+ case 10: handling->fTractionBias = atof(word); break;
+ case 11: handling->Transmission.nNumberOfGears = atoi(word); break;
+ case 12: handling->Transmission.fMaxVelocity = atof(word); break;
+ case 13: handling->Transmission.fEngineAcceleration = atof(word) * 0.4; break;
+ case 14: handling->Transmission.fEngineInertia = atof(word); break;
case 15: handling->Transmission.nDriveType = word[0]; break;
case 16: handling->Transmission.nEngineType = word[0]; break;
case 17: handling->fBrakeDeceleration = atof(word); break;
@@ -307,25 +278,28 @@ cHandlingDataMgr::LoadHandlingData(void)
case 20: handling->fSteeringLock = atof(word); break;
case 21: handling->fSuspensionForceLevel = atof(word); break;
case 22: handling->fSuspensionDampingLevel = atof(word); break;
- case 23: handling->fSeatOffsetDistance = atof(word); break;
- case 24: handling->fCollisionDamageMultiplier = atof(word); break;
- case 25: handling->nMonetaryValue = atoi(word); break;
- case 26: handling->fSuspensionUpperLimit = atof(word); break;
- case 27: handling->fSuspensionLowerLimit = atof(word); break;
- case 28: handling->fSuspensionBias = atof(word); break;
- case 29: handling->fSuspensionAntidiveMultiplier = atof(word); break;
- case 30:
+ // case 23: // fSuspensionHighSpdComDamp unused
+ case 24: handling->fSuspensionUpperLimit = atof(word); break;
+ case 25: handling->fSuspensionLowerLimit = atof(word); break;
+ case 26: handling->fSuspensionBias = atof(word); break;
+ case 27: handling->fSuspensionAntidiveMultiplier = atof(word); break;
+ case 28: handling->fSeatOffsetDistance = atof(word); break;
+ case 29: handling->fCollisionDamageMultiplier = atof(word); break;
+ case 30: handling->nMonetaryValue = atoi(word); break;
+ case 31:
sscanf(word, "%x", &handling->Flags);
- handling->Transmission.Flags = handling->Flags;
+ // handling->Transmission.Flags = handling->Flags;
break;
- case 31: handling->FrontLights = atoi(word); break;
- case 32: handling->RearLights = atoi(word); break;
+ case 32: handling->FrontLights = atoi(word); break;
+ case 33: handling->RearLights = atoi(word); break;
}
field++;
}
ConvertDataToGameUnits(handling);
}
}
+ start = end+1;
+ end = start+1;
}
}
@@ -353,12 +327,9 @@ cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling)
handling->Transmission.fEngineAcceleration *= 1.0f/(50.0f*50.0f);
handling->Transmission.fMaxVelocity *= 1000.0f/(60.0f*60.0f * 50.0f);
handling->fBrakeDeceleration *= 1.0f/(50.0f*50.0f);
- handling->fTurnMass = (sq(handling->Dimension.x) + sq(handling->Dimension.y)) * handling->fMass / 12.0f;
- if(handling->fTurnMass < 10.0f)
- handling->fTurnMass *= 5.0f;
- handling->fInvMass = 1.0f/handling->fMass;
- handling->fCollisionDamageMultiplier *= 2000.0f/handling->fMass;
- handling->fBuoyancy = 100.0f/handling->nPercentSubmerged * GRAVITY*handling->fMass;
+ handling->fInvMass = 1.0f/handling->GetMass();
+ handling->fCollisionDamageMultiplier = handling->GetCollisionDamageMultiplier() * 2000.0f/handling->GetMass();
+ handling->fBuoyancy = 100.0f/handling->nPercentSubmerged * GRAVITY*handling->GetMass();
// Don't quite understand this. What seems to be going on is that
// we calculate a drag (air resistance) deceleration for a given velocity and
@@ -371,10 +342,13 @@ cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling)
velocity -= 0.01f;
// what's the 1/6?
a = handling->Transmission.fEngineAcceleration/6.0f;
- // no density or drag coefficient here...
- float a_drag = 0.5f*SQR(velocity) * handling->Dimension.x*handling->Dimension.z / handling->fMass;
- // can't make sense of this... maybe v - v/(drag + 1) ? but that doesn't make so much sense either
- b = -velocity * (1.0f/(a_drag + 1.0f) - 1.0f);
+ // no idea what's happening here
+ float drag;
+ if(handling->fDragMult < 0.01f)
+ drag = 1.0f - 1.0f/(SQR(velocity)*handling->fDragMult + 1.0f);
+ else
+ drag = 0.0005f*handling->fDragMult * velocity;
+ b = velocity * drag;
}
if(handling->nIdentifier == HANDLING_RCBANDIT){
@@ -420,15 +394,15 @@ cHandlingDataMgr::GetHandlingId(const char *name)
tFlyingHandlingData*
cHandlingDataMgr::GetFlyingPointer(uint8 id)
{
- if(id >= HANDLING_SEAPLANE && id <= HANDLING_RCCOPTER)
- return &FlyingHandlingData[id-HANDLING_SEAPLANE];
+ if(id >= HANDLING_MAVERICK && id <= HANDLING_RCCOPTER)
+ return &FlyingHandlingData[id-HANDLING_MAVERICK];
return &FlyingHandlingData[0];
}
tBoatHandlingData*
cHandlingDataMgr::GetBoatPointer(uint8 id)
{
- if(id >= HANDLING_PREDATOR && id <= HANDLING_SEAPLANE)
+ if(id >= HANDLING_PREDATOR && id <= HANDLING_MAVERICK)
return &BoatHandlingData[id-HANDLING_PREDATOR];
return &BoatHandlingData[0];
}
diff --git a/src/vehicles/HandlingMgr.h b/src/vehicles/HandlingMgr.h
index 8d290f7d..2d49761c 100644
--- a/src/vehicles/HandlingMgr.h
+++ b/src/vehicles/HandlingMgr.h
@@ -36,6 +36,7 @@ enum tVehicleType
HANDLING_RHINO,
HANDLING_BARRACKS,
HANDLING_TRAIN,
+ HANDLING_FERRY,
HANDLING_HELI,
HANDLING_DODO,
HANDLING_COACH,
@@ -48,76 +49,51 @@ enum tVehicleType
HANDLING_DEADDODO,
HANDLING_FLATBED,
HANDLING_YANKEE,
- HANDLING_GOLFCART,
- HANDLING_VOODOO,
- HANDLING_WASHING,
- HANDLING_CUBAN,
- HANDLING_ROMERO,
- HANDLING_PACKER,
- HANDLING_ADMIRAL,
- HANDLING_GANGBUR,
- HANDLING_ZEBRA,
- HANDLING_TOPFUN,
- HANDLING_GLENDALE,
- HANDLING_OCEANIC,
- HANDLING_HERMES,
- HANDLING_SABRE1,
- HANDLING_SABRETUR,
- HANDLING_PHEONIX,
- HANDLING_WALTON,
- HANDLING_REGINA,
- HANDLING_COMET,
- HANDLING_DELUXO,
- HANDLING_BURRITO,
- HANDLING_SPAND,
- HANDLING_BAGGAGE,
- HANDLING_KAUFMAN,
- HANDLING_RANCHER,
- HANDLING_FBIRANCH,
- HANDLING_VIRGO,
- HANDLING_GREENWOO,
- HANDLING_HOTRING,
- HANDLING_SANDKING,
- HANDLING_BLISTAC,
- HANDLING_BOXVILLE,
- HANDLING_BENSON,
- HANDLING_DESPERAD,
- HANDLING_LOVEFIST,
- HANDLING_BLOODRA,
- HANDLING_BLOODRB,
+ HANDLING_BLISTA,
+ HANDLING_BELLYUP,
+ HANDLING_MRWONGS,
+ HANDLING_YARDIE,
+ HANDLING_YAKUZA,
+ HANDLING_DIABLOS,
+ HANDLING_COLUMB,
+ HANDLING_HOODS,
+ HANDLING_PANLANT,
+ HANDLING_BORGNINE,
+ HANDLING_CAMPVAN,
+ HANDLING_BALLOT,
+ HANDLING_SPIDER,
+ HANDLING_SHELBY,
+ HANDLING_PONTIAC,
+ HANDLING_ESPRIT,
+ HANDLING_MINI,
+ HANDLING_HOTROD,
+ HANDLING_SINDACCO,
+ HANDLING_FORELLI,
HANDLING_BIKE,
HANDLING_MOPED,
HANDLING_DIRTBIKE,
HANDLING_ANGEL,
+ HANDLING_DIRTBIK2,
+ HANDLING_ANGE2,
HANDLING_FREEWAY,
HANDLING_PREDATOR,
HANDLING_SPEEDER,
HANDLING_REEFER,
- HANDLING_RIO,
- HANDLING_SQUALO,
- HANDLING_TROPIC,
- HANDLING_COASTGRD,
- HANDLING_DINGHY,
- HANDLING_MARQUIS,
- HANDLING_CUPBOAT,
- HANDLING_SEAPLANE, // both boat and plane!
- HANDLING_SPARROW,
- HANDLING_SEASPAR,
+
HANDLING_MAVERICK,
HANDLING_COASTMAV,
HANDLING_POLMAV,
HANDLING_HUNTER,
- HANDLING_RCBARON,
HANDLING_RCGOBLIN,
HANDLING_RCCOPTER,
NUMHANDLINGS,
NUMBIKEHANDLINGS = HANDLING_FREEWAY+1 - HANDLING_BIKE,
- NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_SEAPLANE,
- NUMBOATHANDLINGS = HANDLING_SEAPLANE+1 - HANDLING_PREDATOR,
+ NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_MAVERICK,
+ NUMBOATHANDLINGS = HANDLING_REEFER+1 - HANDLING_PREDATOR,
};
enum tField // most likely a handling field enum, never used so :shrug:
@@ -155,19 +131,21 @@ enum
HANDLING_NARROW_FRONTW = 0x2000000,
HANDLING_GOOD_INSAND = 0x4000000,
HANDLING_UNKNOWN = 0x8000000, // something for helis and planes
+ HANDLING_FORCE_GRND_CLR = 0x10000000
};
struct tHandlingData
{
- tVehicleType nIdentifier;
float fMass;
- float fInvMass;
float fTurnMass;
- CVector Dimension;
+ float fTractionMultiplier;
+ float fCollisionDamageMultiplier;
+ tVehicleType nIdentifier;
+ float fInvMass;
+ float fDragMult;
CVector CentreOfMass;
int8 nPercentSubmerged;
float fBuoyancy;
- float fTractionMultiplier;
cTransmission Transmission;
float fBrakeDeceleration;
float fBrakeBias;
@@ -182,12 +160,17 @@ struct tHandlingData
float fSuspensionLowerLimit;
float fSuspensionBias;
float fSuspensionAntidiveMultiplier;
- float fCollisionDamageMultiplier;
uint32 Flags;
float fSeatOffsetDistance;
int32 nMonetaryValue;
int8 FrontLights;
int8 RearLights;
+ int unk[4];
+
+ float GetMass(void) const { return fMass; }
+ float GetTurnMass(void) const { return fTurnMass; }
+ float GetTractionMultiplier(void) const { return fTractionMultiplier; }
+ float GetCollisionDamageMultiplier(void) const { return fCollisionDamageMultiplier; }
};
struct tBikeHandlingData
diff --git a/src/vehicles/Heli.cpp b/src/vehicles/Heli.cpp
index f51c8481..a8423855 100644
--- a/src/vehicles/Heli.cpp
+++ b/src/vehicles/Heli.cpp
@@ -756,7 +756,7 @@ CHeli::InitHelis(void)
for(i = 0; i < NUM_HELIS; i++)
pHelis[i] = nil;
- ((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_CHOPPER))->SetColModel(&CTempColModels::ms_colModelPed1);
+ ((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_CHOPPER))->SetColModel(&gpTempColModels->ms_colModelPed1);
}
CHeli*
diff --git a/src/vehicles/Plane.cpp b/src/vehicles/Plane.cpp
index 0b40ca7e..7684d7dd 100644
--- a/src/vehicles/Plane.cpp
+++ b/src/vehicles/Plane.cpp
@@ -681,6 +681,12 @@ CPlane::Render(void)
CEntity::Render();
}
+void
+CPlane::RenderAllRemaning(void)
+{
+ // TODO(LCS)
+}
+
#define CRUISE_SPEED (50.0f)
#define TAXI_SPEED (5.0f)
diff --git a/src/vehicles/Plane.h b/src/vehicles/Plane.h
index c8f02048..ee65913b 100644
--- a/src/vehicles/Plane.h
+++ b/src/vehicles/Plane.h
@@ -59,6 +59,7 @@ public:
void Render(void);
void FlagToDestroyWhenNextProcessed() { bRemoveFromWorld = true; }
+ static void RenderAllRemaning(void);
static void InitPlanes(void);
static void Shutdown(void);
static CPlaneNode *LoadPath(char const *filename, int32 &numNodes, float &totalLength, bool loop);
diff --git a/src/vehicles/Train.cpp b/src/vehicles/Train.cpp
index 3a04b614..57337459 100644
--- a/src/vehicles/Train.cpp
+++ b/src/vehicles/Train.cpp
@@ -15,6 +15,10 @@
#include "Train.h"
#include "AudioScriptObject.h"
+#define TRAIN_SPEED (15.0f)
+#define TRAIN_SLOWDOWN_DISTANCE (40.0f)
+#define TRAIN_TIME_STOPPED_AT_STATION (25.0f)
+
static CTrainNode* pTrackNodes;
static int16 NumTrackNodes;
static float StationDist[3] = { 873.0f, 1522.0f, 2481.0f };
@@ -459,11 +463,11 @@ CTrain::InitTrains(void)
CStreaming::LoadAllRequestedModels(false);
// El-Train wagons
- float wagonPositions[] = { 0.0f, 20.0f, 40.0f, 0.0f, 20.0f };
- int8 firstWagon[] = { 1, 0, 0, 1, 0 };
- int8 lastWagon[] = { 0, 0, 1, 0, 1 };
- int16 wagonGroup[] = { 0, 0, 0, 1, 1 };
- for(i = 0; i < 5; i++){
+ float wagonPositions[] = { 0.0f, 20.0f, 0.0f, 20.0f };
+ int8 firstWagon[] = { 1, 0, 1, 0 };
+ int8 lastWagon[] = { 0, 1, 0, 1 };
+ int16 wagonGroup[] = { 0, 0, 1, 1 };
+ for(i = 0; i < 4; i++){
train = new CTrain(MI_TRAIN, PERMANENT_VEHICLE);
train->GetMatrix().SetTranslate(0.0f, 0.0f, 0.0f);
train->SetStatus(STATUS_ABANDONED);
@@ -598,23 +602,23 @@ CTrain::ReadAndInterpretTrackFile(Const char *filename, CTrainNode **nodes, int1
interpLines[j].type = 1;
interpLines[j].time = time;
interpLines[j].position = position;
- interpLines[j].speed = 15.0f;
+ interpLines[j].speed = TRAIN_SPEED;
interpLines[j].acceleration = 0.0f;
j++;
// distance to next keyframe
- float dist = (stationDists[i]-40.0f) - position;
- time += dist/15.0f;
+ float dist = (stationDists[i]-TRAIN_SLOWDOWN_DISTANCE) - position;
+ time += dist/TRAIN_SPEED;
position += dist;
// Now slow down 40 units before stop
interpLines[j].type = 2;
interpLines[j].time = time;
interpLines[j].position = position;
- interpLines[j].speed = 15.0f;
- interpLines[j].acceleration = -45.0f/32.0f;
+ interpLines[j].speed = TRAIN_SPEED;
+ interpLines[j].acceleration = -(TRAIN_SPEED * TRAIN_SPEED) / (4 * TRAIN_SLOWDOWN_DISTANCE);
j++;
- time += 80.0f/15.0f;
- position += 40.0f; // at station
+ time += 2*TRAIN_SLOWDOWN_DISTANCE/TRAIN_SPEED;
+ position += TRAIN_SLOWDOWN_DISTANCE; // at station
// stopping
interpLines[j].type = 0;
@@ -623,26 +627,26 @@ CTrain::ReadAndInterpretTrackFile(Const char *filename, CTrainNode **nodes, int1
interpLines[j].speed = 0.0f;
interpLines[j].acceleration = 0.0f;
j++;
- time += 25.0f;
+ time += TRAIN_TIME_STOPPED_AT_STATION;
// accelerate again
interpLines[j].type = 2;
interpLines[j].time = time;
interpLines[j].position = position;
interpLines[j].speed = 0.0f;
- interpLines[j].acceleration = 45.0f/32.0f;
+ interpLines[j].acceleration = (TRAIN_SPEED * TRAIN_SPEED) / (4 * TRAIN_SLOWDOWN_DISTANCE);
j++;
- time += 80.0f/15.0f;
- position += 40.0f; // after station
+ time += 2*TRAIN_SLOWDOWN_DISTANCE /TRAIN_SPEED;
+ position += TRAIN_SLOWDOWN_DISTANCE; // after station
}
// last keyframe
interpLines[j].type = 1;
interpLines[j].time = time;
interpLines[j].position = position;
- interpLines[j].speed = 15.0f;
+ interpLines[j].speed = TRAIN_SPEED;
interpLines[j].acceleration = 0.0f;
j++;
- *totalDuration = time + (*totalLength - position)/15.0f;
+ *totalDuration = time + (*totalLength - position)/ TRAIN_SPEED;
// end
interpLines[j].time = *totalDuration;
@@ -650,52 +654,6 @@ CTrain::ReadAndInterpretTrackFile(Const char *filename, CTrainNode **nodes, int1
}
void
-PlayAnnouncement(uint8 sound, uint8 station)
-{
- // this was gone in a PC version but inlined on PS2
- cAudioScriptObject *obj = new cAudioScriptObject;
- obj->AudioId = sound;
- obj->Posn = CTrain::aStationCoors[station];
- obj->AudioEntity = AEHANDLE_NONE;
- DMAudio.CreateOneShotScriptObject(obj);
-}
-
-void
-ProcessTrainAnnouncements(void)
-{
-#ifdef GTA_TRAIN
- for (int i = 0; i < ARRAY_SIZE(StationDist); i++) {
- for (int j = 0; j < ARRAY_SIZE(EngineTrackPosition); j++) {
- if (!bTrainArrivalAnnounced[i]) {
- float preDist = StationDist[i] - 100.0f;
- if (preDist < 0.0f)
- preDist += TotalLengthOfTrack;
- if (EngineTrackPosition[j] > preDist && EngineTrackPosition[j] < StationDist[i]) {
- bTrainArrivalAnnounced[i] = true;
- PlayAnnouncement(SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_1, i);
- break;
- }
- } else {
- float postDist = StationDist[i] + 10.0f;
-#ifdef FIX_BUGS
- if (postDist > TotalLengthOfTrack)
- postDist -= TotalLengthOfTrack;
-#else
- if (postDist < 0.0f) // does this even make sense here?
- postDist += TotalLengthOfTrack;
-#endif
- if (EngineTrackPosition[j] > StationDist[i] && EngineTrackPosition[j] < postDist) {
- bTrainArrivalAnnounced[i] = false;
- PlayAnnouncement(SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_2, i);
- break;
- }
- }
- }
- }
-#endif
-}
-
-void
CTrain::UpdateTrains(void)
{
#ifdef GTA_TRAIN
@@ -732,8 +690,6 @@ CTrain::UpdateTrains(void)
// time offset for each train
time += 0x20000/2;
}
-
- ProcessTrainAnnouncements();
}
// Update Subway
diff --git a/src/vehicles/Transmission.cpp b/src/vehicles/Transmission.cpp
index 1aeabfe0..18e5fa98 100644
--- a/src/vehicles/Transmission.cpp
+++ b/src/vehicles/Transmission.cpp
@@ -4,6 +4,7 @@
#include "HandlingMgr.h"
#include "Transmission.h"
+//--LCS: file done
void
cTransmission::InitGearRatios(void)
{
@@ -14,11 +15,14 @@ cTransmission::InitGearRatios(void)
memset(Gears, 0, sizeof(Gears));
+ float baseVelocity = 0.5f*fMaxVelocity / nNumberOfGears;
+ float step = (fMaxVelocity - baseVelocity) / nNumberOfGears;
+
for(i = 1; i <= nNumberOfGears; i++){
pGearRatio0 = &Gears[i-1];
pGearRatio1 = &Gears[i];
- pGearRatio1->fMaxVelocity = (float)i / nNumberOfGears * fMaxVelocity;
+ pGearRatio1->fMaxVelocity = baseVelocity + i*step;
velocityDiff = pGearRatio1->fMaxVelocity - pGearRatio0->fMaxVelocity;
@@ -45,9 +49,12 @@ cTransmission::CalculateGearForSimpleCar(float speed, uint8 &gear)
pGearRatio = &Gears[gear];
fCurVelocity = speed;
- if(speed > pGearRatio->fShiftUpVelocity)
- gear++;
- else if(speed < pGearRatio->fShiftDownVelocity){
+ if(speed > pGearRatio->fShiftUpVelocity){
+ if(gear + 1 > nNumberOfGears)
+ gear = nNumberOfGears;
+ else
+ gear++;
+ }else if(speed < pGearRatio->fShiftDownVelocity){
if(gear - 1 < 0)
gear = 0;
else
@@ -55,6 +62,109 @@ cTransmission::CalculateGearForSimpleCar(float speed, uint8 &gear)
}
}
+float TRANSMISSION_NITROS_INERTIA_MULT = 0.5f;
+float TRANSMISSION_AI_CHEAT_INERTIA_MULT = 0.75f;
+float TRANSMISSION_NITROS_MULT = 2.0f;
+float TRANSMISSION_AI_CHEAT_MULT = 1.2f;
+float TRANSMISSION_SMOOTHER_FRAC = 0.85f;
+float TRANSMISSION_FREE_ACCELERATION = 0.1f;
+
+float
+cTransmission::CalculateDriveAcceleration(const float &gasPedal, uint8 &gear, float &time, const float &velocity, float *inertiaVar1, float *inertiaVar2, uint8 nDriveWheels, uint8 cheat)
+{
+ static float fAcceleration = 0.0f;
+ static float fVelocity;
+ static float fCheat;
+ static tGear *pGearRatio;
+
+ fVelocity = velocity;
+ if(fVelocity < fMaxReverseVelocity)
+ return 0.0f;
+ if(fVelocity > fMaxVelocity)
+ return 0.0f;
+ fCurVelocity = fVelocity;
+
+ assert(gear <= nNumberOfGears);
+
+ pGearRatio = &Gears[gear];
+ if(fVelocity > pGearRatio->fShiftUpVelocity){
+ if(gear != 0 || gasPedal > 0.0f){
+ gear++;
+ return CalculateDriveAcceleration(gasPedal, gear, time, fVelocity, nil, nil, 0, false);
+ }
+ }else if(fVelocity < pGearRatio->fShiftDownVelocity && gear != 0){
+ if(gear != 1 || gasPedal < 0.0f){
+ gear--;
+ return CalculateDriveAcceleration(gasPedal, gear, time, fVelocity, nil, nil, 0, false);
+ }
+ }
+
+ float accelMul;
+
+ if(nNumberOfGears == 1){
+ accelMul = 1.0f;
+ }else if(gear == 0){
+ accelMul = 4.5f;
+ }else{
+ float f = 1.0f - (gear-1.0f)/(nNumberOfGears-1.0f);
+ if(Flags & HANDLING_1G_BOOST)
+ accelMul = SQR(f)*5.0f + 1.0f;
+ else if(Flags & HANDLING_2G_BOOST)
+ accelMul = SQR(f)*4.0f + 1.0f;
+ else
+ accelMul = SQR(f)*3.0f + 1.0f;
+ }
+
+ fCheat = 1.0f;
+ float nitroMult = 1.0f;
+ if(cheat == 1)
+ fCheat = TRANSMISSION_AI_CHEAT_MULT;
+ else if(cheat == 2)
+ nitroMult = TRANSMISSION_NITROS_MULT;
+
+ fAcceleration = fEngineAcceleration*CTimer::GetTimeStep()*0.4f*accelMul*gasPedal*fCheat*nitroMult;
+
+ if(inertiaVar1 != nil && inertiaVar2 != nil){
+ if(nDriveWheels == 0){
+ float f = TRANSMISSION_FREE_ACCELERATION*CTimer::GetTimeStep()*Abs(gasPedal)/fEngineInertia;
+ *inertiaVar1 = Min(*inertiaVar1 + f, 1.0f);
+ *inertiaVar2 = 0.1f;
+ }else{
+ float var1;
+ // What is being calculated here?
+ // TODO: find better names for the inertia vars
+ if(gear == 0){
+ var1 = ((fMaxVelocity/nNumberOfGears)*(1.0f-0.6667f) - fVelocity) /
+ ((fMaxVelocity/nNumberOfGears)*(1.0f-0.6667f) - Gears[gear].fShiftDownVelocity);
+ }else if(gear == 1){
+ var1 = ((fMaxVelocity/nNumberOfGears)*(1.0f-0.6667f) + fVelocity) /
+ ((fMaxVelocity/nNumberOfGears)*(1.0f-0.6667f) + Gears[gear].fShiftUpVelocity);
+ }else{
+ var1 = (fVelocity - Gears[gear].fShiftDownVelocity) /
+ (Gears[gear].fShiftUpVelocity - Gears[gear].fShiftDownVelocity);
+ }
+ float inertiaMult = var1 - *inertiaVar1;
+ if(cheat == 1)
+ inertiaMult *= TRANSMISSION_AI_CHEAT_INERTIA_MULT;
+ else if(cheat == 2)
+ inertiaMult *= TRANSMISSION_NITROS_INERTIA_MULT;
+ float var2target = 1.0f - inertiaMult*fEngineInertia;
+ var2target = Clamp(var2target, 0.1f, 1.0f);
+ *inertiaVar2 = (1.0f-TRANSMISSION_SMOOTHER_FRAC)*var2target + TRANSMISSION_SMOOTHER_FRAC*(*inertiaVar2);
+ *inertiaVar1 = var1;
+ fAcceleration *= *inertiaVar2;
+ }
+ }
+
+ float targetVelocity = Gears[gear].fMaxVelocity*fCheat;
+ if(Gears[gear].fMaxVelocity < 0.0f && targetVelocity > fVelocity)
+ fAcceleration *= 1.0f - Min((targetVelocity - fVelocity)/0.05f, 1.0f);
+ else if(Gears[gear].fMaxVelocity > 0.0f && targetVelocity < fVelocity)
+ fAcceleration *= 1.0f - Min((fVelocity - targetVelocity)/0.05f, 1.0f);
+ return fAcceleration;
+}
+
+// TEMP old VC code until we have bikes
float
cTransmission::CalculateDriveAcceleration(const float &gasPedal, uint8 &gear, float &time, const float &velocity, bool cheat)
{
diff --git a/src/vehicles/Transmission.h b/src/vehicles/Transmission.h
index a3d15513..8aea7b02 100644
--- a/src/vehicles/Transmission.h
+++ b/src/vehicles/Transmission.h
@@ -17,6 +17,7 @@ public:
int8 nNumberOfGears;
uint8 Flags;
float fEngineAcceleration;
+ float fEngineInertia;
float fMaxVelocity;
float fMaxCruiseVelocity;
float fMaxReverseVelocity;
@@ -24,5 +25,6 @@ public:
void InitGearRatios(void);
void CalculateGearForSimpleCar(float speed, uint8 &gear);
+ float CalculateDriveAcceleration(const float &gasPedal, uint8 &gear, float &time, const float &velocity, float *inertiaVar1, float *inertiaVar2, uint8 nDriveWheels, uint8 cheat);
float CalculateDriveAcceleration(const float &gasPedal, uint8 &gear, float &time, const float &velocity, bool cheat);
};
diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp
index d1054191..308a517e 100644
--- a/src/vehicles/Vehicle.cpp
+++ b/src/vehicles/Vehicle.cpp
@@ -34,6 +34,8 @@
#include "Coronas.h"
#include "SaveBuf.h"
+// LCS: done except trivial stuff
+
bool CVehicle::bWheelsOnlyCheat;
bool CVehicle::bAllDodosCheat;
bool CVehicle::bCheat3;
@@ -50,6 +52,12 @@ bool CVehicle::bDisableRemoteDetonationOnContact;
#ifndef MASTER
bool CVehicle::m_bDisplayHandlingInfo;
#endif
+float CVehicle::rcHeliHeightLimit = 60.0f;
+float CVehicle::WHEELSPIN_FALL_RATE = 0.7f;
+float CVehicle::WHEELSPIN_RISE_RATE = 0.95f;
+float CVehicle::WHEELSPIN_INAIR_TARGET_RATE = 10.0f;
+float CVehicle::WHEELSPIN_TARGET_RATE = 1.0f;
+
void *CVehicle::operator new(size_t sz) throw() { return CPools::GetVehiclePool()->New(); }
void *CVehicle::operator new(size_t sz, int handle) throw() { return CPools::GetVehiclePool()->New(handle); }
@@ -72,6 +80,17 @@ CVehicle::CVehicle(uint8 CreatedBy)
{
int i;
+ m_fGasPedal = 0.0f;
+ m_fBrakePedal = 0.0f;
+ m_fWheelSpin = 0.0f;
+#if defined FIX_BUGS || !defined GTA_PSP
+ bRewardVehicle = false;
+#endif
+ m_vehLCS_29E = 0;
+ m_vehLCS_29C = 0;
+ m_vehLCS_2A3 = -1;
+ m_bSuperBrake = false; // probably for multiplayer
+
m_nCurrentGear = 1;
m_fChangeGearTime = 0.0f;
m_fSteerInput = 0.0f;
@@ -82,9 +101,7 @@ CVehicle::CVehicle(uint8 CreatedBy)
bIsLawEnforcer = false;
bIsAmbulanceOnDuty = false;
bIsFireTruckOnDuty = false;
-#ifdef FIX_BUGS
bIsHandbrakeOn = false;
-#endif
CCarCtrl::UpdateCarCount(this, false);
m_fHealth = 1000.0f;
bEngineOn = true;
@@ -134,16 +151,14 @@ CVehicle::CVehicle(uint8 CreatedBy)
bCreatedAsPoliceVehicle = false;
bRestingOnPhysical = false;
bParking = false;
+ m_bGarageTurnedLightsOff = false;
+ m_vehLCS_259 = -1;
bCanPark = CGeneral::GetRandomNumberInRange(0.0f, 1.0f) < 0.0f; // never true. probably doesn't work very well
bIsVan = false;
bIsBus = false;
bIsBig = false;
bLowVehicle = false;
- m_bombType = CARBOMB_NONE;
- bDriverLastFrame = false;
- m_pBombRigger = nil;
-
m_nSetPieceExtendedRangeTime = 0;
m_nAlarmState = 0;
m_nDoorLock = CARLOCK_UNLOCKED;
@@ -157,6 +172,7 @@ CVehicle::CVehicle(uint8 CreatedBy)
switch(GetModelIndex()){
case MI_HUNTER:
case MI_ANGEL:
+ case MI_ANGEL2:
case MI_FREEWAY:
m_nRadioStation = V_ROCK;
break;
@@ -189,6 +205,8 @@ CVehicle::CVehicle(uint8 CreatedBy)
CVehicle::~CVehicle()
{
+ //TODO(LCS): clear something in music manager (?)
+
m_nAlarmState = 0;
if (m_audioEntityId >= 0){
DMAudio.DestroyEntity(m_audioEntityId);
@@ -218,8 +236,8 @@ void
CVehicle::SetModelIndex(uint32 id)
{
CEntity::SetModelIndex(id);
- m_aExtras[0] = CVehicleModelInfo::ms_compsUsed[0];
- m_aExtras[1] = CVehicleModelInfo::ms_compsUsed[1];
+ m_aExtras[0] = CVehicleModelInfo::mspInfo->ms_compsUsed[0];
+ m_aExtras[1] = CVehicleModelInfo::mspInfo->ms_compsUsed[1];
m_nNumMaxPassengers = CVehicleModelInfo::GetMaximumNumberOfPassengersFromNumberOfDoors(id);
}
@@ -247,6 +265,8 @@ void
CVehicle::RemoveLighting(bool reset)
{
CRenderer::RemoveVehiclePedLights(this, reset);
+ SetAmbientColours();
+ DeActivateDirectional();
}
bool
@@ -332,14 +352,16 @@ CVehicle::FlyingControl(eFlightModel flightModel)
{
float fSteerLR = CPad::GetPad(0)->GetSteeringLeftRight() / 128.0f;
float fSteerUD = CPad::GetPad(0)->GetSteeringUpDown() / 128.0f;
+/*
float fGunUD = Abs(CPad::GetPad(0)->GetCarGunUpDown());
#ifdef FREE_CAM
if(!CCamera::bFreeCam || (CCamera::bFreeCam && !CPad::IsAffectedByController))
#endif
if(fGunUD > 1.0f)
fSteerUD = -CPad::GetPad(0)->GetCarGunUpDown() / 128.0f;
+*/
- float fSteerAngle = Atan2(fSteerUD, fSteerLR);
+ float fSteerAngle = fSteerUD != 0.0f && fSteerLR != 0.0f ? Atan2(fSteerUD, fSteerLR) : 0.0f;
float fSteerMult = 1.0f;
if(fSteerAngle > -PI/4.0f && fSteerAngle <= PI/4.0f)
fSteerMult = 1.0f/Cos(fSteerAngle);
@@ -440,7 +462,7 @@ CVehicle::FlyingControl(eFlightModel flightModel)
m_vecTurnSpeed = Multiply3x3(GetMatrix(), vecTurnSpeed);
ApplyTurnForce(-GetUp() * fResistance * m_fTurnMass, GetRight() + Multiply3x3(GetMatrix(), m_vecCentreOfMass));
-
+/*
float fMoveSpeed = m_vecMoveSpeed.MagnitudeSqr();
if(fMoveSpeed > SQR(1.5f))
m_vecMoveSpeed *= 1.5f/Sqrt(fMoveSpeed);
@@ -448,6 +470,7 @@ CVehicle::FlyingControl(eFlightModel flightModel)
float fTurnSpeed = m_vecTurnSpeed.MagnitudeSqr();
if(fTurnSpeed > SQR(0.2f))
m_vecTurnSpeed *= 0.2f/Sqrt(fTurnSpeed);
+*/
break;
}
case FLIGHT_MODEL_RCHELI:
@@ -464,6 +487,11 @@ CVehicle::FlyingControl(eFlightModel flightModel)
return;
float fUpSpeed = DotProduct(m_vecMoveSpeed, GetUp());
float fThrust = (CPad::GetPad(0)->GetAccelerate() - CPad::GetPad(0)->GetBrake()) / 255.0f;
+#ifdef FREE_CAM
+ if(!CCamera::bFreeCam || (CCamera::bFreeCam && !CPad::IsAffectedByController))
+#endif
+ if(Abs(CPad::GetPad(0)->GetCarGunUpDown()) > 1.0f)
+ fThrust = CPad::GetPad(0)->GetCarGunUpDown() / 128.0f;
if(fThrust < 0.0f)
fThrust *= 2.0f;
if(flightModel == FLIGHT_MODEL_RCHELI){
@@ -472,7 +500,7 @@ CVehicle::FlyingControl(eFlightModel flightModel)
}else
fThrust = flyingHandling->fThrust * fThrust + 0.95f;
fThrust -= flyingHandling->fThrustFallOff * fUpSpeed;
- if(flightModel == FLIGHT_MODEL_RCHELI && GetPosition().z > 40.0f)
+ if(flightModel == FLIGHT_MODEL_RCHELI && GetPosition().z > rcHeliHeightLimit)
fThrust *= 10.0f/(GetPosition().z - 30.0f);
else if(GetPosition().z > 80.0f)
fThrust *= 10.0f/(GetPosition().z - 70.0f);
@@ -515,11 +543,13 @@ CVehicle::FlyingControl(eFlightModel flightModel)
if(Abs(CPad::GetPad(0)->GetCarGunLeftRight()) > 1.0f)
fYaw = CPad::GetPad(0)->GetCarGunLeftRight() / 128.0f;
}
+/*
#ifdef FREE_CAM
if(!CCamera::bFreeCam || (CCamera::bFreeCam && !CPad::IsAffectedByController))
#endif
if(Abs(CPad::GetPad(0)->GetCarGunUpDown()) > 1.0f)
fPitch = -CPad::GetPad(0)->GetCarGunUpDown() / 128.0f;
+*/
if (CPad::GetPad(0)->GetHorn()) {
fYaw = 0.0f;
fPitch = Clamp(flyingHandling->fPitchStab * DotProduct(m_vecMoveSpeed, GetForward()), -200.0f, 1.3f);
@@ -713,7 +743,7 @@ CVehicle::BladeColSectorList(CPtrList &list, CColModel &rotorColModel, CMatrix &
}
ped->InflictDamage(this, WEAPONTYPE_RUNOVERBYCAR, 1000.0f, PEDPIECE_TORSO, localDir);
- if(CGame::nastyGame && ped->GetIsOnScreen()){
+ if(ped->GetIsOnScreen()){
for(i = 0; i < 16; i++)
CParticle::AddParticle(PARTICLE_BLOOD_SMALL, ped->GetPosition(), CVector(dirToRotor.x, dirToRotor.y, 1.0f) * 0.01f);
CParticle::AddParticle(PARTICLE_TEST, ped->GetPosition(), CVector(0.0f, 0.0f, 0.02f), nil, 0.1f);
@@ -772,7 +802,9 @@ CVehicle::BladeColSectorList(CPtrList &list, CColModel &rotorColModel, CMatrix &
}
-float fBurstSpeedMax = 0.3f;
+float WS_ALREADY_SPINNING_LOSS = 0.2f;
+float WS_TRAC_FRAC_LIMIT = 0.3f;
+float fBurstSpeedMax = 0.2f;
float fBurstTyreMod = 0.13f;
void
@@ -800,13 +832,15 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
float contactSpeedFwd = DotProduct(wheelContactSpeed, wheelFwd);
float contactSpeedRight = DotProduct(wheelContactSpeed, wheelRight);
- if(*wheelState != WHEEL_STATE_NORMAL)
+ adhesion *= CTimer::GetTimeStep();
+ if(*wheelState != WHEEL_STATE_NORMAL){
bAlreadySkidding = true;
+ adhesion *= pHandling->fTractionLoss;
+ if(*wheelState == WHEEL_STATE_SPINNING && (GetStatus() == STATUS_PLAYER || GetStatus() == STATUS_PLAYER_REMOTE))
+ adhesion *= 1.0f - Abs(m_fGasPedal) * WS_ALREADY_SPINNING_LOSS;
+ }
*wheelState = WHEEL_STATE_NORMAL;
- adhesion *= CTimer::GetTimeStep();
- if(bAlreadySkidding)
- adhesion *= pHandling->fTractionLoss;
// moving sideways
if(contactSpeedRight != 0.0f){
@@ -848,13 +882,15 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
if(!bBraking){
if(m_fGasPedal < 0.01f){
if(IsBike())
- brake = 0.6f * mod_HandlingManager.fWheelFriction / (pHandling->fMass + 200.0f);
- else if(pHandling->fMass < 500.0f)
- brake = 0.2f * mod_HandlingManager.fWheelFriction / pHandling->fMass;
+ brake = 0.6f * mod_HandlingManager.fWheelFriction / (pHandling->GetMass() + 200.0f);
+ else if(IsPlane())
+ brake = 0.0f;
+ else if(pHandling->GetMass() < 500.0f)
+ brake = 0.1f * mod_HandlingManager.fWheelFriction / pHandling->GetMass();
else if(GetModelIndex() == MI_RCBANDIT)
- brake = 0.2f * mod_HandlingManager.fWheelFriction / pHandling->fMass;
+ brake = 0.2f * mod_HandlingManager.fWheelFriction / pHandling->GetMass();
else
- brake = mod_HandlingManager.fWheelFriction / pHandling->fMass;
+ brake = mod_HandlingManager.fWheelFriction / pHandling->GetMass();
#ifdef FIX_BUGS
brake *= CTimer::GetTimeStepFix();
#endif
@@ -878,7 +914,10 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
float speedSq = sq(right) + sq(fwd);
if(sq(adhesion) < speedSq){
if(*wheelState != WHEEL_STATE_FIXED){
- if(bDriving && contactSpeedFwd < 0.2f)
+ float tractionLimit = WS_TRAC_FRAC_LIMIT;
+ if(contactSpeedFwd > 0.15f && (wheelId == CARWHEEL_FRONT_LEFT || wheelId == CARWHEEL_FRONT_RIGHT))
+ tractionLimit *= 2.0f;
+ if(bDriving && tractionLimit*adhesion < Abs(fwd))
*wheelState = WHEEL_STATE_SPINNING;
else
*wheelState = WHEEL_STATE_SKIDDING;
@@ -886,6 +925,8 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
float l = Sqrt(speedSq);
float tractionLoss = bAlreadySkidding ? 1.0f : pHandling->fTractionLoss;
+ if(*wheelState == WHEEL_STATE_SPINNING && (GetStatus() == STATUS_PLAYER || GetStatus() == STATUS_PLAYER_REMOTE))
+ tractionLoss *= 1.0f - Abs(m_fGasPedal) * WS_ALREADY_SPINNING_LOSS;
right *= adhesion * tractionLoss / l;
fwd *= adhesion * tractionLoss / l;
}
@@ -894,7 +935,7 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
CVector totalSpeed = fwd*wheelFwd + right*wheelRight;
CVector turnDirection = totalSpeed;
- bool separateTurnForce = false; // BUG: not initialized on PC
+ bool separateTurnForce = false;
if(pHandling->fSuspensionAntidiveMultiplier > 0.0f){
if(bBraking){
separateTurnForce = true;
@@ -920,14 +961,14 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon
turnDirection = direction;
float impulse = speed*m_fMass;
- float turnImpulse = turnSpeed*GetMass(wheelContactPoint, turnDirection);
+ float turnImpulse = turnSpeed*GetMass(wheelContactPoint - Multiply3x3(GetMatrix(), m_vecCentreOfMass), turnDirection);
ApplyMoveForce(impulse * direction);
ApplyTurnForce(turnImpulse * turnDirection, wheelContactPoint);
}
}
-float fBurstBikeSpeedMax = 0.12f;
+float fBurstBikeSpeedMax = 0.08f;
float fBurstBikeTyreMod = 0.05f;
float fTweakBikeWheelTurnForce = 2.0f;
@@ -1122,6 +1163,84 @@ CVehicle::FindTyreNearestPoint(float x, float y)
return piece - CAR_PIECE_WHEEL_LF;
}
+bool
+CVehicle::PedsShouldScreamOnDisembarking(void)
+{
+ switch(GetModelIndex()){
+ case MI_AMBULAN:
+ case MI_TAXI:
+ case MI_CABBIE:
+ return false;
+ default:
+ return true;
+ }
+}
+
+void
+CVehicle::OccupantsReactToDamage(CEntity *damagedBy)
+{
+ if (VehicleCreatedBy == RANDOM_VEHICLE && !IsBoat()){
+ switch (GetStatus()) {
+ case STATUS_SIMPLE:
+ case STATUS_PHYSICS:
+ if(bIsLawEnforcer &&
+ (GetModelIndex() == MI_POLICE || GetModelIndex() == MI_ENFORCER ||
+ GetModelIndex() == MI_CHOPPER || GetModelIndex() == MI_PREDATOR) &&
+ damagedBy == FindPlayerPed()){
+ // Police gets angry
+ FindPlayerPed()->SetWantedLevelNoDrop(1);
+ }else if(pDriver && pDriver->CharCreatedBy != MISSION_CHAR &&
+ pDriver->m_nPedType >= PEDTYPE_GANG1 && pDriver->m_nPedType <= PEDTYPE_GANG9 &&
+ damagedBy == FindPlayerPed()){
+ // Gang gets angry
+ SetStatus(STATUS_ABANDONED);
+ pDriver->SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, damagedBy);
+ int time = 200;
+ for (int i = 0; i < m_nNumMaxPassengers; i++) {
+ if (pPassengers[i] &&
+ pPassengers[i]->m_objective != OBJECTIVE_KILL_CHAR_ON_FOOT &&
+ pPassengers[i]->CharCreatedBy != MISSION_CHAR) {
+ pPassengers[i]->SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, damagedBy);
+ pPassengers[i]->m_objectiveTimer = CTimer::GetTimeInMilliseconds() + time;
+ time += 200;
+ }
+ }
+ }else if(AutoPilot.m_nDrivingStyle == DRIVINGSTYLE_PLOUGH_THROUGH ||
+ CGeneral::GetRandomNumberInRange(0.0f, 1.0f) > 0.5f && AutoPilot.m_nCarMission == MISSION_CRUISE){
+ // Drive away like a maniac
+ if(pDriver && pDriver->m_objective != OBJECTIVE_LEAVE_CAR){
+ if(AutoPilot.m_nDrivingStyle != DRIVINGSTYLE_PLOUGH_THROUGH)
+ AutoPilot.m_nCruiseSpeed *= 1.5f;
+ AutoPilot.m_nDrivingStyle = DRIVINGSTYLE_PLOUGH_THROUGH;
+ }
+ }else{
+ // Leave vehicle
+ if (pDriver && pDriver->CharCreatedBy != MISSION_CHAR) {
+ SetStatus(STATUS_ABANDONED);
+ pDriver->bFleeAfterExitingCar = true;
+ pDriver->SetObjective(OBJECTIVE_LEAVE_CAR, this);
+ pDriver->Say(SOUND_PED_FLEE_SPRINT);
+ }
+ int time = 200;
+ for (int i = 0; i < m_nNumMaxPassengers; i++) {
+ if (pPassengers[i] &&
+ pPassengers[i]->m_objective != OBJECTIVE_LEAVE_CAR &&
+ pPassengers[i]->CharCreatedBy != MISSION_CHAR) {
+ pPassengers[i]->bFleeAfterExitingCar = true;
+ pPassengers[i]->SetObjective(OBJECTIVE_LEAVE_CAR, this);
+ pPassengers[i]->m_objectiveTimer = CTimer::GetTimeInMilliseconds() + time;
+ pPassengers[i]->Say(SOUND_PED_FLEE_SPRINT);
+ time += 200;
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
+
void
CVehicle::InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage, CVector pos)
{
@@ -1207,7 +1326,7 @@ CVehicle::InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage
accuracy = 10;
break;
case WEAPONTYPE_PYTHON:
- if(!((CPed*)damagedBy)->IsPlayer())
+// if(!((CPed*)damagedBy)->IsPlayer())
accuracy = 64;
break;
case WEAPONTYPE_SHOTGUN:
@@ -1230,14 +1349,16 @@ CVehicle::InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage
break;
}
+ // not in LCS (ifdef?)
if(((CPed*)damagedBy)->IsPlayer() && (CCamera::m_bUseMouse3rdPerson || TheCamera.Using1stPersonWeaponMode()))
accuracy = 0;
- if(accuracy != 0 && !bTyresDontBurst && (CGeneral::GetRandomNumber()&0x7F) < accuracy){
+ int difficulty = damagedBy == FindPlayerPed() ? 0x7F : 0xFF;
+ if(accuracy != 0 && !bTyresDontBurst && (CGeneral::GetRandomNumber()&difficulty) < accuracy){
if(IsBike())
BurstTyre(FindTyreNearestPoint(pos.x, pos.y) + CAR_PIECE_WHEEL_LF, false);
- else if(GetVehicleAppearance() == VEHICLE_APPEARANCE_CAR)
- BurstTyre(FindTyreNearestPoint(pos.x, pos.y) + CAR_PIECE_WHEEL_LF, true);
+ else// if(GetVehicleAppearance() == VEHICLE_APPEARANCE_CAR)
+ BurstTyre(FindTyreNearestPoint(pos.x, pos.y) + CAR_PIECE_WHEEL_LF, false); //true);
}
}
@@ -1257,44 +1378,7 @@ CVehicle::InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage
float oldHealth = m_fHealth;
if (m_fHealth > damage) {
m_fHealth -= damage;
- if (VehicleCreatedBy == RANDOM_VEHICLE && !IsBoat()){
- switch (GetStatus()) {
- case STATUS_SIMPLE:
- case STATUS_PHYSICS:
- if(AutoPilot.m_nDrivingStyle == DRIVINGSTYLE_PLOUGH_THROUGH ||
- CGeneral::GetRandomNumberInRange(0.0f, 1.0f) > 0.5f && AutoPilot.m_nCarMission == MISSION_CRUISE){
- // Drive away like a maniac
- if(pDriver && pDriver->m_objective != OBJECTIVE_LEAVE_CAR){
- if(AutoPilot.m_nDrivingStyle != DRIVINGSTYLE_PLOUGH_THROUGH)
- AutoPilot.m_nCruiseSpeed *= 1.5f;
- AutoPilot.m_nDrivingStyle = DRIVINGSTYLE_PLOUGH_THROUGH;
- }
- }else{
- // Leave vehicle
- if (pDriver && pDriver->CharCreatedBy != MISSION_CHAR) {
- SetStatus(STATUS_ABANDONED);
- pDriver->bFleeAfterExitingCar = true;
- pDriver->SetObjective(OBJECTIVE_LEAVE_CAR, this);
- pDriver->Say(SOUND_PED_FLEE_SPRINT);
- }
- int time = 200;
- for (int i = 0; i < m_nNumMaxPassengers; i++) {
- if (pPassengers[i] &&
- pPassengers[i]->m_objective != OBJECTIVE_LEAVE_CAR &&
- pPassengers[i]->CharCreatedBy != MISSION_CHAR) {
- pPassengers[i]->bFleeAfterExitingCar = true;
- pPassengers[i]->SetObjective(OBJECTIVE_LEAVE_CAR, this);
- pPassengers[i]->m_objectiveTimer = CTimer::GetTimeInMilliseconds() + time;
- pPassengers[i]->Say(SOUND_PED_FLEE_SPRINT);
- time += 200;
- }
- }
- }
- break;
- default:
- break;
- }
- }
+ OccupantsReactToDamage(damagedBy);
if (oldHealth >= DAMAGE_HEALTH_TO_CATCH_FIRE && m_fHealth < DAMAGE_HEALTH_TO_CATCH_FIRE) {
if (IsCar()) {
CAutomobile* pThisCar = (CAutomobile*)this;
@@ -1318,12 +1402,6 @@ CVehicle::InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage
BlowUpCar(damagedBy);
}
}
-#ifdef FIX_BUGS // removing dumb case when shooting police car in player's own garage gives wanted level
- if (GetModelIndex() == MI_POLICE && damagedBy == FindPlayerPed() && damagedBy != nil && !bHasBeenOwnedByPlayer)
-#else
- if (GetModelIndex() == MI_POLICE && damagedBy == FindPlayerPed())
-#endif
- FindPlayerPed()->SetWantedLevelNoDrop(1);
}
void
@@ -1356,7 +1434,7 @@ CVehicle::FireFixedMachineGuns(void)
m_nGunFiringTime = CTimer::GetTimeInMilliseconds();
- source = GetMatrix() * CVector(2.0f, 2.5f, 1.0f);
+ source = GetMatrix() * CVector(0.95f, 9.3f, 0.85f);
target = source + CVector(dx, dy, 0.0f) * 60.0f;
target += CVector(
((CGeneral::GetRandomNumber() & 0xFF) - 128) * 0.015f,
@@ -1365,7 +1443,7 @@ CVehicle::FireFixedMachineGuns(void)
CWeapon::DoTankDoomAiming(this, pDriver, &source, &target);
FireOneInstantHitRound(&source, &target, 15);
- source = GetMatrix() * CVector(-2.0f, 2.5f, 1.0f);
+ source = GetMatrix() * CVector(-0.95f, 9.3f, 0.85f);
target = source + CVector(dx, dy, 0.0f) * 60.0f;
target += CVector(
((CGeneral::GetRandomNumber() & 0xFF) - 128) * 0.015f,
@@ -1384,42 +1462,10 @@ CVehicle::FireFixedMachineGuns(void)
}
void
-CVehicle::ActivateBomb(void)
-{
- if(m_bombType == CARBOMB_TIMED){
- m_bombType = CARBOMB_TIMEDACTIVE;
- m_nBombTimer = 7000;
- m_pBlowUpEntity = FindPlayerPed();
- CGarages::TriggerMessage("GA_12", -1, 3000, -1);
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TIMED_ACTIVATED, 1.0f);
- }else if(m_bombType == CARBOMB_ONIGNITION){
- m_bombType = CARBOMB_ONIGNITIONACTIVE;
- CGarages::TriggerMessage("GA_12", -1, 3000, -1);
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_ONIGNITION_ACTIVATED, 1.0f);
- }
-}
-
-void
-CVehicle::ActivateBombWhenEntered(void)
-{
- if(pDriver){
- if(!bDriverLastFrame && m_bombType == CARBOMB_ONIGNITIONACTIVE){
- // If someone enters the car and there is a bomb, detonate
- m_nBombTimer = 1000;
- m_pBlowUpEntity = m_pBombRigger;
- if(m_pBlowUpEntity)
- m_pBlowUpEntity->RegisterReference((CEntity**)&m_pBlowUpEntity);
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TICK, 1.0f);
- }
- bDriverLastFrame = true;
- }else
- bDriverLastFrame = false;
-}
-
-void
CVehicle::ExtinguishCarFire(void)
{
- if(GetStatus() != STATUS_WRECKED)
+//TODO(LCS): check if this line was added in PC VC
+// if(GetStatus() != STATUS_WRECKED)
m_fHealth = Max(m_fHealth, 300.0f);
if(m_pCarFire)
m_pCarFire->Extinguish();
@@ -1438,6 +1484,7 @@ CVehicle::ShufflePassengersToMakeSpace(void)
return false;
if (pPassengers[1] &&
!(m_nGettingInFlags & CAR_DOOR_FLAG_LR) &&
+ !(m_nGettingOutFlags & CAR_DOOR_FLAG_LR) &&
IsRoomForPedToLeaveCar(CAR_DOOR_LR, nil)) {
if (!pPassengers[2] && !(m_nGettingInFlags & CAR_DOOR_FLAG_RR)) {
pPassengers[2] = pPassengers[1];
@@ -1445,7 +1492,7 @@ CVehicle::ShufflePassengersToMakeSpace(void)
pPassengers[2]->m_vehDoor = CAR_DOOR_RR;
return true;
}
- if (!pPassengers[0] && !(m_nGettingInFlags & CAR_DOOR_FLAG_RF)) {
+ if (!pPassengers[0] && !pPassengers[1]->bOnlyAllowedToSitBehind && !(m_nGettingInFlags & CAR_DOOR_FLAG_RF)) {
pPassengers[0] = pPassengers[1];
pPassengers[1] = nil;
pPassengers[0]->m_vehDoor = CAR_DOOR_RF;
@@ -1455,6 +1502,7 @@ CVehicle::ShufflePassengersToMakeSpace(void)
}
if (pPassengers[2] &&
!(m_nGettingInFlags & CAR_DOOR_FLAG_RR) &&
+ !(m_nGettingOutFlags & CAR_DOOR_FLAG_RR) &&
IsRoomForPedToLeaveCar(CAR_DOOR_RR, nil)) {
if (!pPassengers[1] && !(m_nGettingInFlags & CAR_DOOR_FLAG_LR)) {
pPassengers[1] = pPassengers[2];
@@ -1462,7 +1510,7 @@ CVehicle::ShufflePassengersToMakeSpace(void)
pPassengers[1]->m_vehDoor = CAR_DOOR_LR;
return true;
}
- if (!pPassengers[0] && !(m_nGettingInFlags & CAR_DOOR_FLAG_RF)) {
+ if (!pPassengers[0] && !pPassengers[2]->bOnlyAllowedToSitBehind && !(m_nGettingInFlags & CAR_DOOR_FLAG_RF)) {
pPassengers[0] = pPassengers[2];
pPassengers[2] = nil;
pPassengers[0]->m_vehDoor = CAR_DOOR_RF;
@@ -1472,8 +1520,9 @@ CVehicle::ShufflePassengersToMakeSpace(void)
}
if (pPassengers[0] &&
!(m_nGettingInFlags & CAR_DOOR_FLAG_RF) &&
+ !(m_nGettingOutFlags & CAR_DOOR_FLAG_RF) &&
IsRoomForPedToLeaveCar(CAR_DOOR_RF, nil)) {
- if (!pPassengers[1] && !(m_nGettingInFlags & CAR_DOOR_FLAG_LR)) {
+ if (!pPassengers[1] && !pPassengers[0]->bOnlyAllowedToSitInFront && !(m_nGettingInFlags & CAR_DOOR_FLAG_LR)) {
pPassengers[1] = pPassengers[0];
pPassengers[0] = nil;
pPassengers[1]->m_vehDoor = CAR_DOOR_LR;
@@ -1547,7 +1596,8 @@ CVehicle::MakeNonDraggedPedsLeaveVehicle(CPed *ped1, CPed *ped2, CPlayerPed *&pl
for(i = 0; i < numPeds2; i++)
if(peds2[i]->IsFemale() || CGeneral::GetRandomTrueFalse()){
peds2[i]->m_leaveCarTimer = CTimer::GetTimeInMilliseconds() + 10000;
- peds2[i]->bHeldHostageInCar = true;
+ if(peds2[i]->b1A4_2)
+ peds2[i]->bHeldHostageInCar = true;
peds2[i]->bFleeAfterExitingCar = true;
}
}
@@ -1576,12 +1626,13 @@ bool
CVehicle::IsLawEnforcementVehicle(void)
{
switch(GetModelIndex()){
+ case MI_FBICAR:
case MI_POLICE:
case MI_ENFORCER:
case MI_PREDATOR:
case MI_RHINO:
case MI_BARRACKS:
- case MI_FBIRANCH:
+// case MI_FBIRANCH:
case MI_VICECHEE:
return true;
default:
@@ -1692,8 +1743,8 @@ CVehicle::CanPedOpenLocks(CPed *ped)
m_nDoorLock == CARLOCK_LOCKED_PLAYER_INSIDE ||
m_nDoorLock == CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED)
return false;
- if(ped->IsPlayer() && m_nDoorLock == CARLOCK_LOCKOUT_PLAYER_ONLY)
- return false;
+// if(ped->IsPlayer() && m_nDoorLock == CARLOCK_LOCKOUT_PLAYER_ONLY)
+// return false;
return true;
}
@@ -1838,6 +1889,9 @@ CVehicle::SetupPassenger(int n)
void
CVehicle::SetDriver(CPed *driver)
{
+ m_vehLCS_258 = false;
+ bCraneMessageDone = false;
+
pDriver = driver;
pDriver->RegisterReference((CEntity**)&pDriver);
@@ -1850,8 +1904,7 @@ CVehicle::SetDriver(CPed *driver)
case MI_TAXI:
case MI_CABBIE:
- case MI_ZEBRA:
- case MI_KAUFMAN:
+ case MI_BORGNINE:
CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 12;
break;
@@ -1927,6 +1980,7 @@ CVehicle::AddPassenger(CPed *passenger, uint8 n)
void
CVehicle::RemoveDriver(void)
{
+ m_vehLCS_259 = -1;
#ifdef FIX_BUGS
if (GetStatus() != STATUS_WRECKED)
#endif
@@ -2021,6 +2075,16 @@ CVehicle::UpdatePassengerList(void)
m_nNumPassengers = 0;
}
+bool
+CVehicle::AreThereAnyPassengers(void)
+{
+ int i;
+ for(i = 0; i < m_nNumMaxPassengers; i++)
+ if(pPassengers[i])
+ return true;
+ return false;
+}
+
void
CVehicle::ProcessCarAlarm(void)
{
@@ -2213,6 +2277,7 @@ CVehicle::HeliDustGenerate(CEntity *heli, float radius, float ground, int rnd)
}
}
+/*
#define GLARE_MIN_DIST (13.0f)
#define GLARE_FULL_DIST (30.0f)
#define GLARE_MIN_ANGLE (0.99f)
@@ -2315,6 +2380,7 @@ CVehicle::DoSunGlare(void)
}
}
}
+*/
void
CVehicle::KillPedsInVehicle(void)
@@ -2390,10 +2456,10 @@ CVehicle::Save(uint8*& buf)
ZeroSaveBuf(buf, 42);
WriteSaveBuf(buf, m_nNumMaxPassengers);
ZeroSaveBuf(buf, 3);
- WriteSaveBuf(buf, field_1D0[0]);
- WriteSaveBuf(buf, field_1D0[1]);
- WriteSaveBuf(buf, field_1D0[2]);
- WriteSaveBuf(buf, field_1D0[3]);
+ WriteSaveBuf(buf, m_vehLCS_230.x);
+ WriteSaveBuf(buf, m_vehLCS_230.y);
+ WriteSaveBuf(buf, m_vehLCS_230.z);
+ WriteSaveBuf(buf, m_vehLCS_230.w);
ZeroSaveBuf(buf, 8);
WriteSaveBuf(buf, m_fSteerAngle);
WriteSaveBuf(buf, m_fGasPedal);
@@ -2453,10 +2519,10 @@ CVehicle::Load(uint8*& buf)
SkipSaveBuf(buf, 42);
ReadSaveBuf(&m_nNumMaxPassengers, buf);
SkipSaveBuf(buf, 3);
- ReadSaveBuf(&field_1D0[0], buf);
- ReadSaveBuf(&field_1D0[1], buf);
- ReadSaveBuf(&field_1D0[2], buf);
- ReadSaveBuf(&field_1D0[3], buf);
+ ReadSaveBuf(&m_vehLCS_230.x, buf);
+ ReadSaveBuf(&m_vehLCS_230.y, buf);
+ ReadSaveBuf(&m_vehLCS_230.z, buf);
+ ReadSaveBuf(&m_vehLCS_230.w, buf);
SkipSaveBuf(buf, 8);
ReadSaveBuf(&m_fSteerAngle, buf);
ReadSaveBuf(&m_fGasPedal, buf);
diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h
index f83e1bb0..7be4e563 100644
--- a/src/vehicles/Vehicle.h
+++ b/src/vehicles/Vehicle.h
@@ -60,6 +60,8 @@ enum eCarLock {
CARLOCK_LOCKED_PLAYER_INSIDE,
CARLOCK_LOCKED_INITIALLY,
CARLOCK_FORCE_SHUT_DOORS,
+ CARLOCK_7,
+ CARLOCK_8,
CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED
};
@@ -189,7 +191,7 @@ public:
int8 m_nGettingInFlags;
int8 m_nGettingOutFlags;
uint8 m_nNumMaxPassengers;
- float field_1D0[4];
+ CVector m_vehLCS_230;
CEntity *m_pCurGroundEntity;
CFire *m_pCarFire;
float m_fSteerAngle;
@@ -225,6 +227,9 @@ public:
uint8 bCanBeDamaged : 1; // Set to FALSE during cut scenes to avoid explosions
uint8 bUsingSpecialColModel : 1;// Is player vehicle using special collision model, stored in player strucure
+ uint8 m_vehLCS_258 : 1;
+ int8 m_vehLCS_259;
+
uint8 bOccupantsHaveBeenGenerated : 1; // Is true if the occupants have already been generated. (Shouldn't happen again)
uint8 bGunSwitchedOff : 1; // Level designers can use this to switch off guns on boats
uint8 bVehicleColProcessed : 1;// Has ProcessEntityCollision been processed for this car?
@@ -240,21 +245,18 @@ public:
uint8 bRestingOnPhysical : 1; // Dont go static cause car is sitting on a physical object that might get removed
uint8 bParking : 1;
uint8 bCanPark : 1;
-#if (!defined GTA_PS2 || defined FIX_BUGS)
- uint8 m_bombType : 3;
-#endif
- uint8 bDriverLastFrame : 1;
+ uint8 bRewardVehicle : 1; // 25B_40
int8 m_numPedsUseItAsCover;
uint8 m_nAmmoInClip; // Used to make the guns on boat do a reload (20 by default)
int8 m_nPacManPickupsCarried;
uint8 m_nRoadblockType;
+ uint8 m_bGarageTurnedLightsOff;
+ float m_fWheelSpin;
float m_fHealth; // 1000.0f = full health. 250.0f = fire. 0 -> explode
+ float m_fEngineEnergy; // TODO(LCS): better name. it adds up acceleration force, so possibly kinetic energy??
uint8 m_nCurrentGear;
float m_fChangeGearTime;
-#if (!defined GTA_PS2 || defined FIX_BUGS)
- CEntity* m_pBombRigger;
-#endif
uint32 m_nSetPieceExtendedRangeTime;
uint32 m_nGunFiringTime; // last time when gun on vehicle was fired (used on boats)
uint32 m_nTimeOfDeath;
@@ -264,19 +266,26 @@ public:
float m_fMapObjectHeightAhead; // front Z?
float m_fMapObjectHeightBehind; // rear Z?
eCarLock m_nDoorLock;
- int8 m_nLastWeaponDamage; // see eWeaponType, -1 if no damage
CEntity *m_pLastDamageEntity;
+ int16 m_vehLCS_29C;
+ int8 m_vehLCS_29E;
+ int8 m_nLastWeaponDamage; // see eWeaponType, -1 if no damage
uint8 m_nRadioStation;
uint8 m_bRainAudioCounter;
uint8 m_bRainSamplesCounter;
+ int8 m_vehLCS_2A3; // enables 2A4
+ uint8 m_vehLCS_2A4; // some timer
uint32 m_nCarHornTimer;
uint8 m_nCarHornPattern;
bool m_bSirenOrAlarm;
uint8 m_nCarHornDelay;
int8 m_comedyControlState;
+ int32 m_vehLCS_2B0;
+ int32 m_vehLCS_2B4;
CStoredCollPoly m_aCollPolys[2]; // poly which is under front/rear part of car
float m_fSteerInput;
eVehicleType m_vehType;
+ bool m_bSuperBrake;
static void *operator new(size_t) throw();
static void *operator new(size_t sz, int slot) throw();
@@ -288,6 +297,7 @@ public:
~CVehicle(void);
// from CEntity
void SetModelIndex(uint32 id);
+ void PreRender(void) {}
bool SetupLighting(void);
void RemoveLighting(bool);
void FlagToDestroyWhenNextProcessed(void) {}
@@ -330,6 +340,9 @@ public:
bool DoBladeCollision(CVector pos, CMatrix &matrix, int16 rotorType, float radius, float damageMult);
bool BladeColSectorList(CPtrList &list, CColModel &rotorColModel, CMatrix &matrix, int16 rotorType, float damageMult);
+ // TODO(LCS)?
+ // CVehicle::ApplyCollisionMultiplayer
+
void ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelContactSpeed, CVector &wheelContactPoint,
int32 wheelsOnGround, float thrust, float brake, float adhesion, int8 wheelId, float *wheelSpeed, tWheelState *wheelState, uint16 wheelStatus);
void ProcessBikeWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelContactSpeed, CVector &wheelContactPoint,
@@ -365,15 +378,16 @@ public:
bool IsPassenger(CPed *ped);
bool IsPassenger(int32 model);
void UpdatePassengerList(void);
+ bool AreThereAnyPassengers(void);
void ProcessCarAlarm(void);
bool IsSphereTouchingVehicle(float sx, float sy, float sz, float radius);
bool ShufflePassengersToMakeSpace(void);
void MakeNonDraggedPedsLeaveVehicle(CPed *ped1, CPed *ped2, CPlayerPed *&player, CCopPed *&cop);
+ bool PedsShouldScreamOnDisembarking(void);
+ void OccupantsReactToDamage(CEntity *damagedBy);
void InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage, CVector pos = CVector(0.0f, 0.0f, 0.0f));
void DoFixedMachineGuns(void);
void FireFixedMachineGuns(void);
- void ActivateBomb(void);
- void ActivateBombWhenEntered(void);
void KillPedsInVehicle(void);
void SetComponentAtomicAlpha(RpAtomic *atomic, int32 alpha);
@@ -384,8 +398,8 @@ public:
bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1 && GetStatus() != STATUS_WRECKED; }
CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); }
- bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_ZEBRA || GetModelIndex() == MI_KAUFMAN; }
- bool IsLimo(void) { return GetModelIndex() == MI_STRETCH || GetModelIndex() == MI_LOVEFIST; }
+ bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE || GetModelIndex() == MI_KAUFMAN; }
+ bool IsLimo(void) { return GetModelIndex() == MI_STRETCH; }
bool IsRealHeli(void) { return !!(pHandling->Flags & HANDLING_IS_HELI); }
bool IsRealPlane(void) { return !!(pHandling->Flags & HANDLING_IS_PLANE); }
@@ -405,6 +419,11 @@ public:
#ifndef MASTER
static bool m_bDisplayHandlingInfo;
#endif
+ static float rcHeliHeightLimit;
+ static float WHEELSPIN_FALL_RATE;
+ static float WHEELSPIN_RISE_RATE;
+ static float WHEELSPIN_INAIR_TARGET_RATE;
+ static float WHEELSPIN_TARGET_RATE;
};
void DestroyVehicleAndDriverAndPassengers(CVehicle* pVehicle);
diff --git a/src/weapons/ShotInfo.cpp b/src/weapons/ShotInfo.cpp
index 788bcbe1..b98eaf7a 100644
--- a/src/weapons/ShotInfo.cpp
+++ b/src/weapons/ShotInfo.cpp
@@ -143,7 +143,9 @@ CShotInfo::Update()
}
}
}
- if (!((CTimer::GetFrameCounter() + slot) & 3))
- CWorld::SetCarsOnFire(shot.m_startPos.x, shot.m_startPos.y, shot.m_startPos.z, 4.0f, shot.m_sourceEntity);
+ if (!((CTimer::GetFrameCounter() + slot) & 3)) {
+ CWorld::SetCarsOnFire(shot.m_startPos.x, shot.m_startPos.y, shot.m_startPos.z, 2.0f, shot.m_sourceEntity);
+ CWorld::CheckObjectsEffectedByFire(shot.m_startPos.x, shot.m_startPos.y, shot.m_startPos.z, 2.0f, shot.m_sourceEntity);
+ }
}
}
diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp
index 2d219e2d..31738dbc 100644
--- a/src/weapons/Weapon.cpp
+++ b/src/weapons/Weapon.cpp
@@ -537,7 +537,7 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
if ( SQR(victimPedRadius) > (victimPedPos-fireSource).MagnitudeSqr() )
{
CVector collisionDist;
- CColModel* victimPedCol = &CTempColModels::ms_colModelPed1;
+ CColModel* victimPedCol = &gpTempColModels->ms_colModelPed1;
bool useLocalPos = false;
if (victimPed->m_nPedState == PED_FALL
|| victimPed->m_nPedState == PED_DIE && victimPed->bIsPedDieAnimPlaying
@@ -673,9 +673,9 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
CVector dropDir(CGeneral::GetRandomNumberInRange(-0.15f, 0.15f), CGeneral::GetRandomNumberInRange(0.1f, 0.35f), 0.f);
CVector dropPos(CGeneral::GetRandomNumberInRange(SCREEN_STRETCH_X(50.0f), SCREEN_STRETCH_FROM_RIGHT(50.0f)),
CGeneral::GetRandomNumberInRange(SCREEN_STRETCH_Y(50.0f), SCREEN_STRETCH_FROM_BOTTOM(50.0f)), 1.f);
- CParticle::AddParticle(PARTICLE_BLOODDROP, dropPos, dropDir, nil, CGeneral::GetRandomNumberInRange(0.1f, 0.15f),
+ /*CParticle::AddParticle(PARTICLE_BLOODDROP, dropPos, dropDir, nil, CGeneral::GetRandomNumberInRange(0.1f, 0.15f),
CRGBA(0, 0, 0, 0), 0, 0, CGeneral::GetRandomNumber() & 1, 0);
-
+ */
}
if (info->m_AnimToPlay == ASSOCGRP_KNIFE)
{
@@ -765,7 +765,7 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
{
nearCar->VehicleDamage(info->m_nDamage * (0.00075f * nearCar->pHandling->fMass), gaTempSphereColPoints[0].pieceB);
- CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0);
+ //CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0);
}
else
{
@@ -842,7 +842,7 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
CParticle::AddParticle(PARTICLE_SPARK, gaTempSphereColPoints[0].point, 0.1f * gaTempSphereColPoints[0].normal, 0, 0.0f, 0, 0, 0, 0);
}
- CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0);
+ //CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0);
if (!damageEntityRegistered)
{
diff --git a/utils/gxt/ENGLISH.txt b/utils/gxt/ENGLISH.txt
new file mode 100644
index 00000000..88a80904
--- /dev/null
+++ b/utils/gxt/ENGLISH.txt
@@ -0,0 +1,18260 @@
+[LETTER1]
+abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"$,.'-?!!SDBF
+
+[DEFNAM]
+Claude----------------------
+
+[IN_VEH]
+~w~Hey! Get back in the ~b~vehicle!
+
+[IN_VEH2]
+~w~You need some wheels for this job!
+
+[IN_BOAT]
+~w~You need a boat for this job!
+
+[HEY]
+~w~Don't go solo, keep your posse together!
+
+[HEY2]
+~w~Don't split up, keep the group together!
+
+[HEY3]
+~w~You've dropped your main man, go back and get 8-Ball!
+
+[HEY6]
+~w~You left your honor with the Yakuza Kanbu. You must protect him!
+
+[HEY7]
+~w~An extra gun could be useful. Go back and pick up your contact!
+
+[HEY9]
+~w~You want the word on the street? Go see the contact!
+
+[GATE_1]
+~w~The Sindaccos will only open the gates for Sindacco cars.
+
+[HELPA]
+~w~This is your ~h~Safe House.
+
+[HELPB]
+~w~While not on a mission you can save your progress by collecting the ~h~Save Icon~w~ - time will advance by 6 hours.
+
+[HELPC]
+~w~Vehicles left in the ~h~garage next door~w~ will be stored when you save the game.
+
+[HELPD]
+To exit the Safe House, walk into the ~h~marker.
+
+[HELP0]
+~w~Press~h~ ~k~ ~VEEE~ ~w~to enter or exit a vehicle.
+
+[HELP1]
+~w~Stop in the center of the ~h~yellow marker.
+
+[HELP3]
+~w~You can only sprint for a short time before tiring.
+
+[HELP4]
+~w~Press~h~ ~k~ ~VEACC~ ~w~to ~h~accelerate,~h~ ~k~ ~VESTR~ ~w~to steer.
+
+[HELP5]
+~w~Press~h~ ~k~ ~VEBRK~ ~w~to ~h~brake~w~, or to ~h~reverse~w~ if the vehicle has stopped.
+
+[HELP6]
+~w~Press~h~ ~k~ ~VEHB~ ~w~to use the vehicle's ~h~handbrake.
+
+[HELP7]
+~w~Hold~h~ ~k~ ~PDLT~ ~w~to target with a sniper rifle.
+
+[HELP8]
+~w~Use~h~ ~k~ ~SNZI~ ~w~and~h~ ~k~ ~SNZO~ ~w~to ~h~zoom in and out~w~ when targeting.
+
+[HELP10]
+~w~The ~h~yellow badge~w~ indicates you are a ~h~wanted man~w~ - police officers will try to arrest you.
+
+[HELP11]
+~w~As more badges are displayed the Law will try harder to stop you.
+
+[HELP12]
+~w~Walk into the ~h~yellow marker~w~ to initiate a mission.
+
+[HELP13]
+~w~Look out for pathways not shown on the ~h~radar,~w~ and use them to your advantage!
+
+[HELP14]
+~w~Use the ~h~Radar~w~ to find your way around the city - follow the ~h~yellow blip~w~ to find the ~h~Safe House.
+
+[HELP16]
+~w~Use~h~ ~k~ ~VESTR~ ~w~to steer.
+
+[HELP17]
+~w~Phil Cassidy's - for a higher caliber of merchandise: New stock coming soon!
+
+[HELP18]
+~w~New stock has been delivered to Phil Cassidy's Fully Cocked Gun Shop!
+
+[HELP18B]
+~w~Phil Cassidy's now has the ~h~Minigun~w~ in stock!
+
+[HELP19A]
+~w~To perform a ~h~drive-by~w~, hold~h~ ~k~ ~VELL~ ~w~or~h~ ~k~ ~VELR~ ~w~and fire using~h~ ~k~ ~VEWEP~.
+
+[HELP19C]
+~w~You can only do a drive-by if you have a ~h~sub-machine gun.
+
+[HELP19D]
+~h~Motorbikes ~w~allow you to ~h~shoot forwards~w~ by pressing~h~ ~k~ ~VEWEP~.
+
+[HELP19F]
+~w~You can only shoot forwards if you have a ~h~sub-machine gun.
+
+[HELP20]
+~w~You found a ~h~police bribe!~w~ Collecting them reduces your ~h~wanted level~w~ by one star!
+
+[HELP21]
+~w~Use~h~ ~k~ ~PDCWE~ ~w~to change weapons when on foot.
+
+[HELP22]
+~w~To find ~h~Vincenzo's warehouse~w~, follow the ~h~V blip~w~ on the radar.
+
+[HELP23]
+~w~The blip is a ~h~triangle pointing down~w~, this shows that the ~h~target is lower down~w~ than you are.
+
+[HELP24]
+~w~Hold~h~ ~k~ ~VELL~ ~w~or~h~ ~k~ ~VELR~ ~w~to look ~h~left or right~w~ in a vehicle. Hold both to look ~h~behind.
+
+[HELP25]
+~w~Press~h~ ~k~ ~CVEIW~ ~w~to change ~h~camera modes.
+
+[HELP26]
+~w~Jump into a boat and press~h~ ~k~ ~VEEE~ ~w~to get in.
+
+[HELP27]
+~w~If you are near a boat press~h~ ~k~ ~VEEE~ ~w~to board it.
+
+[HELP29]
+~w~Press~h~ ~k~ ~VEHN~ ~w~to sound the vehicle's ~h~horn.
+
+[HELP30]
+~w~Use~h~ ~k~ ~VECRS~ ~w~to select different ~h~radio stations.
+
+[HELP33]
+~w~Now the hitmen have been paid they'll see the job through, no matter how long it takes.
+
+[HELP34]
+~w~Hold~h~ ~k~ ~VELB~ ~w~to look behind you when in a car.
+
+[HELP38]
+~w~If you kill someone who has a weapon, they will drop it.
+
+[HELP40]
+~w~When on foot use~h~ ~k~ ~PDLOO~ ~w~to look around.
+
+[HELP58]
+~w~Hold~h~ ~k~ ~PDLT~ ~w~to ~h~lock on to a target~w~, and press~h~ ~k~ ~PDFW~ ~w~to fire!
+
+[HELP59]
+~w~While locked on, press~h~ ~k~ ~PDCTL~ ~w~to change targets.
+
+[HELP60]
+~w~Some barrels will explode if you shoot them - but remember to keep your distance!
+
+[TANK]
+~w~Use~h~ ~k~ ~VEWEA~ ~w~to aim the Rhino's cannon, and~h~ ~k~ ~VEWEP~ ~w~to fire.
+
+[ANSWER]
+~w~Press~h~ ~k~ ~ANS~ ~w~to answer your cell phone and~h~ ~k~ ~VEEE~ ~w~to hang up.
+
+[BOMB]
+~w~If you drive a car into the bomb shop 8-Ball will charge you ~h~$500~w~ to attach a ~h~bomb~w~.
+
+[BRIDGE1]
+~w~Callahan Bridge: Under construction. Expected completion date: May 1998
+
+[STRIK_1]
+~w~You will be able to ride the ~h~ferry~w~ over to Staunton Island, once the strike is over.
+
+[SPRAY]
+~w~Driving your vehicle into ~h~Pay 'n' Spray~w~ will clear your ~h~wanted level~w~ and ~h~repair ~w~and ~h~respray ~w~your vehicle for ~h~$100.
+
+[S_TRN_1]
+~w~You can use the ~h~subway trains~w~ to travel around Liberty City. Press~h~ ~k~ ~VEEE~ ~w~to ~h~enter ~w~or ~h~exit~w~ a train.
+
+[TUBE1]
+~w~When the station opens you will be able to catch a ~h~subway train~w~ to Staunton Island.
+
+[TUBE2]
+~w~You will be able to reach ~h~Francis International Airport ~w~once this station opens.
+
+[TUBE_2]
+~w~To get on a ~h~subway train~w~, press~h~ ~k~ ~VEEE~.
+
+[SPRAY1]
+~w~Parking in the ~h~Pay 'n' Spray~w~ will clear your ~h~wanted level~w~, and ~h~repair ~w~and ~h~respray ~w~your vehicle. The charge is usually ~h~$100~w~ but this time it's free.
+
+[HELPE31]
+~w~New outfits become available to the player during the game, and must be collected from Mr. Benz.
+
+[HELPE32]
+~w~During the game the player will have the opportunity to buy more powerful weapons from Ammu-Nation.
+
+[HELPCOM]
+~w~New outfits unlocked at safehouse!
+
+[HELP41]
+~w~Park in the ~h~Pay 'n' Spray~w~ to respray and repair your car. Follow the ~h~Spray Can blip~w~ on the radar to find the ~h~Pay 'n' Spray.
+
+[PAGEB1]
+~w~The ~h~Pistol~w~ is now available at your safehouse!
+
+[PAGEB10]
+~w~You found all of the hidden packages! Have a ~h~$50,000 cash bonus!
+
+[EXPO_W]
+~w~Love Media need one of these!
+
+[FERRY_2]
+~w~Come back when a ferry is docked.
+
+[FERRY_3]
+~w~Your vehicle won't fit on the ferry!
+
+[FERRY_4]
+~w~Wanted criminals are not allowed on the ferry!
+
+[FERRY_5]
+~w~You need ~h~$25~w~ for a ferry ticket. Come back when you have enough money!
+
+[FERRY_6]
+~w~You can't use a ferry whilst on a mission.
+
+[FERR_SK]
+~w~Press~h~ ~k~ ~TRSK~ ~w~to skip to the end of the trip.
+
+[FERR_C1]
+~w~Ferry to Staunton. Cost: ~h~$25~w~. Press~h~ ~k~ ~TGSUB~ ~w~to buy a ticket.
+
+[FERR_C2]
+~w~Ferry to Portland. Cost: ~h~$25~w~. Press~h~ ~k~ ~TGSUB~ ~w~to buy a ticket.
+
+[A_H1]
+~w~~k~ ~AMBUY~ ~w~to buy. ~n~~k~ ~AMEXI~ ~w~to exit.
+
+[A_UZI_A]
+~w~Ammu-Nation now stock Micro SMGs!
+
+[AMMU]
+~w~Weapons will be available at ~h~Ammu-Nation~w~ once new stock arrives. Sorry for any inconvenience.
+
+[WANT_A]
+~w~When you get ~h~'busted'~w~ you are taken to the nearest police station.
+
+[WANT_B]
+~w~Any mission you were on will be failed, and the cops will take all your weapons and a cash bribe.
+
+[WANT_C]
+~w~You will only be ~h~'busted'~w~ if you have a ~h~wanted level~w~ - represented by a row of stars in the top corner of the screen.
+
+[WANT_D]
+~w~The more stars you have, the harder the Law will try to take you down.
+
+[WANT_E]
+~w~There are ways of reducing your wanted level - keep your eyes open for them.
+
+[WANT_F]
+~w~While driving a vehicle, call in at a ~h~Pay 'n' Spray~w~ to clear your wanted level.
+
+[HEAL_A]
+~w~When you get ~h~'wasted'~w~ you will be taken to the nearest hospital.
+
+[HEAL_B]
+~w~You will lose all your weapons and fail any mission you were on. You will also be charged for health care.
+
+[HEAL_C]
+~w~Your ~h~health~w~ is represented by the red bar in the top right of the screen.
+
+[HEAL_D]
+~w~There are ways of healing or protecting yourself - keep your eyes open for them.
+
+[H_WE_01]
+~w~Walk over weapons to pick them up. They can only be collected when you're on foot.
+
+[H_WE_02]
+~w~If you already have a weapon of that type press~h~ ~k~ ~PUCF~ ~w~to replace your weapon with the new one.
+
+[PU_CF]
+~w~Press~h~ ~k~ ~PUCF~ ~w~to take this weapon. Any weapon of the same type will be lost.
+
+[CLOTHA]
+~h~~k~ ~AMMOV~ ~w~to view outfits. ~h~~k~ ~AMBUY~ ~w~to change into outfit. ~h~~k~ ~AMEXI~ ~w~to cancel.
+
+[CLOTHB]
+~w~You can change clothes here at any time.
+
+[SIREN_1]
+~w~To toggle an ~h~emergency vehicle's sirens~w~ on or off tap~h~ ~k~ ~VEHN~.
+
+[FHOSE_1]
+~w~Hold~h~ ~k~ ~VEWEP~ ~w~to use the water cannon.
+
+[PHOTO1]
+~w~Hold~h~ ~k~ ~PDLT~ ~w~to target with the camera.
+
+[PHOTO2]
+~w~While targeting with the camera, use~h~ ~k~ ~SNZI~ ~w~and~h~ ~k~ ~SNZO~ ~w~to ~h~zoom~w~ in and out.
+
+[PHOTO3]
+~w~Press~h~ ~k~ ~PDFW~ ~w~to take a picture while targeting with the camera.
+
+[BENZ_H1]
+~w~Follow the ~h~Shirt blip~w~ on the radar to find ~h~Mr. Benz clothes shop.
+
+[BENZ_LE]
+~w~The ~h~Leone suit~w~ is now available at the safehouse.
+
+[BENZ_GU]
+~w~The ~h~Avenging Angel outfit~w~ is now available at the safehouse.
+
+[BENZ_CH]
+~w~The ~h~Chauffeur outfit~w~ is now available at the safehouse.
+
+[BENZ_TU]
+~w~The ~h~Tuxedo~w~ is now available at the safehouse.
+
+[ATUTOR]
+~w~Paramedic missions can be toggled on or off by pressing~h~ ~k~ ~TGSUB~.
+
+[CTUTOR]
+~w~Vigilante missions can be toggled on or off by pressing~h~ ~k~ ~TGSUB~.
+
+[FTUTOR]
+~w~Firefighter missions can be toggled on or off by pressing~h~ ~k~ ~TGSUB~.
+
+[TRATUT1]
+~w~Trash Dash missions can be toggled on or off by pressing~h~ ~k~ ~TGSUB~.
+
+[TTUTOR]
+~w~Taxi Driver missions can be toggled on or off by pressing~h~ ~k~ ~TGSUB~.
+
+[A_COMP2]
+~w~Paramedic mission: level 12 complete! Running will never tire you!
+
+[FIREPRO]
+~w~Firefighter mission: level 12 complete! You're now flame retardant!
+
+[RCHELP]
+~w~To ~h~detonate~w~ your RC Car press~h~ ~k~ ~VEWEP~.
+
+[TAXIH1]
+~w~Stop near a ~h~highlighted pedestrian~w~ to pick them up, then drive them to their destination quickly.
+
+[TIPHLP]
+~w~The ~h~tip bar~w~ decreases over ~h~time~w~, and when your taxi gets ~h~damaged.
+
+[ANG_E3]
+~w~Go and look for other Avenging Angels in Chinatown.
+
+[ANGOUT]
+~w~Come back when you're wearing an ~h~Avenging Angel ~w~outfit.
+
+[ANGCOM2]
+~w~Avenging Angel missions Staunton: level 15 complete! Now you won't lose any money if you get busted!
+
+[ANGCOM3]
+~w~Avenging Angel missions Shoreside: level 15 complete! You get a 'special' vehicle at your safehouse!
+
+[TVOHELP]
+~w~Try returning when you're wearing the ~h~Hockey Mask.
+
+[TIMER]
+This is a timed mission, you must complete it before the timer counts down to zero.
+
+[GARAGE]
+Drive the vehicle into the garage, then walk outside.
+
+[TRASH]
+~g~You've junked your wheels real bad! Get your vehicle repaired!
+
+[WRECKED]
+~r~The vehicle is wrecked!
+
+[SPOOK]
+SPOOKOMETER
+
+[SPOTTED]
+~r~They're on to you!
+
+[REWARD]
+~w~Reward: $~1~
+
+[GAMEOVR]
+GAME OVER
+
+[Z]
+Z-axis value: ~1~
+
+[DEAD]
+WASTED!
+
+[BUSTED]
+BUSTED!
+
+[GOODBOY]
+~w~$50 Good Citizen Bonus!
+
+[NUMBER]
+~1~
+
+[SCORE]
+$~1~
+
+[LOADCAR]
+LOADING VEHICLE... (PRESS L button TO CANCEL)
+
+[CARSOFF]
+Cars turned off.
+
+[CARS_ON]
+Cars turned on.
+
+[TEXTXYZ]
+Writing coordinates to file...
+
+[CHEATON]
+Cheat mode ON
+
+[CHEATOF]
+Cheat mode OFF
+
+[IMPORT1]
+Go outside and wait for your vehicle.
+
+[KE_PLYR]
+Player
+
+[KE_CTCS]
+Contacts
+
+[KE_WEPS]
+Weapons
+
+[KE_ADR]
+Adrenaline
+
+[KE_BRIB]
+Bribe
+
+[KE_HLTH]
+Health
+
+[KE_KILF]
+Kill Frenzy
+
+[KE_ARM]
+Armor
+
+[KE_USJ]
+USJ
+
+[KE_PKG]
+Hidden Package
+
+[KE_INFO]
+Information
+
+[DAM]
+Damage
+
+[KILLS]
+Kills
+
+[TIME]
+Timer
+
+[STOPS]
+Stops
+
+[BULL]
+Bullion
+
+[EVID]
+Evidence
+
+[HEALTH]
+Car Health
+
+[COLLECT]
+Collected
+
+[LEVEL]
+Level
+
+[SALES]
+Sales
+
+[CITYZON]
+Liberty City
+
+[VICE_C]
+Liberty City
+
+[IND_ZON]
+Portland
+
+[PORT_W]
+Callahan Point
+
+[PORT_S]
+Atlantic Quays
+
+[PORT_E]
+Portland Harbor
+
+[PORT_I]
+Trenton
+
+[S_VIEW]
+Portland View
+
+[CHINA]
+Chinatown
+
+[EASTBAY]
+Portland Beach
+
+[LITTLEI]
+Saint Mark's
+
+[REDLIGH]
+Red Light District
+
+[TOWERS]
+Hepburn Heights
+
+[HARWOOD]
+Harwood
+
+[ROADBR1]
+Callahan Bridge
+
+[ROADBR2]
+Callahan Bridge
+
+[TUNNELP]
+Porter Tunnel
+
+[BOMB1]
+8-Ball's Garage
+
+[COM_ZON]
+Staunton Island
+
+[STADIUM]
+Aspatria
+
+[STADIU2]
+Aspatria
+
+[STADIU3]
+Aspatria
+
+[HOSPI_2]
+Rockford
+
+[UNIVERS]
+Liberty Campus
+
+[CONSTRU]
+Fort Staunton
+
+[PARK]
+Belleville Park
+
+[COM_EAS]
+Newport
+
+[SHOPING]
+Bedford Point
+
+[SHOP2]
+Bedford Point
+
+[SHOP3]
+Bedford Point
+
+[YAKUSA]
+Torrington
+
+[SUB_ZON]
+Shoreside Vale
+
+[AIRPORT]
+Francis Intl. Airport
+
+[PROJECT]
+Wichita Gardens
+
+[SUB_IND]
+Pike Creek
+
+[SWANKS]
+Cedar Grove
+
+[BIG_DAM]
+Cochrane Dam
+
+[SUB_ZO2]
+Shoreside Vale
+
+[SUB_ZO3]
+Shoreside Vale
+
+[CAR_1]
+Ambulance
+
+[CAR_2]
+Firetruck
+
+[CAR_3]
+Police
+
+[CAR_4]
+Enforcer
+
+[CAR_5]
+Barracks
+
+[CAR_6]
+Rhino
+
+[CAR_7]
+FBI Cruiser
+
+[CAR_8]
+Securicar
+
+[CAR_9]
+Moonbeam
+
+[CAR_10]
+Coach
+
+[CAR_11]
+Flatbed
+
+[CAR_12]
+Linerunner
+
+[CAR_13]
+Trashmaster
+
+[CAR_14]
+Patriot
+
+[CAR_15]
+Mr Whoopee
+
+[CAR_16]
+Mule
+
+[CAR_17]
+Yankee
+
+[CAR_18]
+Pony
+
+[CAR_19]
+Bobcat
+
+[CAR_20]
+Rumpo
+
+[CAR_21]
+Blista
+
+[CAR_22]
+Dodo
+
+[CAR_23]
+Bus
+
+[CAR_24]
+Sentinel
+
+[CAR_25]
+Cheetah
+
+[CAR_26]
+Banshee
+
+[CAR_27]
+Stinger
+
+[CAR_28]
+Infernus
+
+[CAR_29]
+Esperanto
+
+[CAR_30]
+Kuruma
+
+[CAR_31]
+Stretch
+
+[CAR_32]
+Perennial
+
+[CAR_33]
+Landstalker
+
+[CAR_34]
+Manana
+
+[CAR_35]
+Idaho
+
+[CAR_36]
+Stallion
+
+[CAR_37]
+Taxi
+
+[CAR_38]
+Cabbie
+
+[CAR_39]
+Buggy
+
+[SINDACO]
+Sindacco Argento
+
+[HEARSE]
+Hearse
+
+[LANDSTK]
+Landstalker
+
+[IDAHO]
+Idaho
+
+[STINGER]
+Stinger
+
+[LINERUN]
+Linerunner
+
+[PEREN]
+Perennial
+
+[SENTINL]
+Sentinel
+
+[PATRIOT]
+Patriot
+
+[FIRETRK]
+Firetruck
+
+[TRASHM]
+Trashmaster
+
+[STRETCH]
+Stretch
+
+[MANANA]
+Manana
+
+[INFERNS]
+Infernus
+
+[BLISTA]
+Blista
+
+[PONY]
+Pony
+
+[MULE]
+Mule
+
+[CHEETAH]
+Cheetah
+
+[AMBULAN]
+Ambulance
+
+[FBICAR]
+FBI Cruiser
+
+[MOONBM]
+Moonbeam
+
+[ESPERAN]
+Esperanto
+
+[TAXI]
+Taxi
+
+[KURUMA]
+Kuruma
+
+[BOBCAT]
+Bobcat
+
+[WHOOPEE]
+Mr Whoopee
+
+[BFINJC]
+BF Injection
+
+[POLICAR]
+Police
+
+[ENFORCR]
+Enforcer
+
+[SECURI]
+Securicar
+
+[BANSHEE]
+Banshee
+
+[PREDATR]
+Predator
+
+[BUS]
+Bus
+
+[RHINO]
+Rhino
+
+[BARRCKS]
+Barracks OL
+
+[BARRACK]
+Barracks OL
+
+[TRAIN]
+Train
+
+[HELI]
+Helicopter
+
+[DODO]
+Dodo
+
+[COACH]
+Coach
+
+[CABBIE]
+Cabbie
+
+[STALION]
+Stallion
+
+[RUMPO]
+Rumpo
+
+[RCBANDT]
+RC Bandit
+
+[BELLYUP]
+Triad Fish Van
+
+[MRWONGS]
+Mr Wongs
+
+[MAFIACR]
+Leone Sentinel
+
+[YARDICR]
+Yardie Lobo
+
+[YAKUZCR]
+Yakuza Stinger
+
+[DIABLCR]
+Diablo Stallion
+
+[COLOMCR]
+Cartel Cruiser
+
+[HOODSCR]
+Hoods Rumpo XL
+
+[AEROPL]
+Aeroplane
+
+[SPEEDER]
+Speeder
+
+[REEFER]
+Reefer
+
+[PANLANT]
+Panlantic
+
+[FLATBED]
+Flatbed
+
+[YANKEE]
+Yankee
+
+[BORGNIN]
+Bickle'76
+
+[TOYZ]
+TOYZ
+
+[MCLARN]
+Lancer MF1
+
+[SHELBY]
+Hellenbach GT
+
+[SUBARU]
+Impreza WRX
+
+[SUPRA]
+Supra
+
+[SKYLINE]
+Skoiloine
+
+[CYCLONE]
+Cyclone GT
+
+[ESPRIT]
+V8 Ghost
+
+[MINI]
+Tommy
+
+[HOTROD]
+Thunder-Rodd
+
+[CAMPVAN]
+Campaign Rumpo
+
+[BALLOT]
+Ballot Van
+
+[GHOST]
+Ghost
+
+[ANGEL]
+Angel
+
+[ANGEL2]
+Avenger
+
+[PIZZABO]
+Pizzaboy
+
+[NOODLBO]
+Noodleboy
+
+[FAGGIO]
+Faggio
+
+[FREEWAY]
+Freeway
+
+[SANCHEZ]
+Sanchez
+
+[SANCH2]
+Manchez
+
+[F_PASS1]
+~w~Fire extinguished! Reward $~1~
+
+[F_RANGE]
+~r~The fire truck radio is out of range, get closer to a fire station!
+
+[C0TGSUB]
+R3 button
+
+[C0VESTR]
+left analog stick, or left and right directional buttons
+
+[C1VESTR]
+left analog stick
+
+[C2VESTR]
+left analog stick, or left and right directional buttons
+
+[C3VESTR]
+left analog stick
+
+[C2VEHB]
+~T~
+
+[C3VEHB]
+L1 button
+
+[C0VEHN]
+L3 button
+
+[C0VELL]
+L2 button
+
+[C1VELL]
+L2 button
+
+[C2VELL]
+L2 button
+
+[C3VELL]
+L2 button
+
+[C0VELR]
+R2 button
+
+[C1VELR]
+R2 button
+
+[C2VELR]
+R2 button
+
+[C3VELR]
+R2 button
+
+[C0VELB]
+L2 button + R2 button
+
+[C1VELB]
+L2 button + R2 button
+
+[C2VELB]
+L2 button + R2 button
+
+[C3VELB]
+L2 button + R2 button
+
+[C0VECRS]
+L1 button
+
+[C1VECRS]
+SELECT button
+
+[C0VEWEI]
+left analog stick up and down, or up and down directional buttons
+
+[C1VEWEI]
+left analog stick up and down
+
+[C2VEWEI]
+left analog stick up and down, or up and down directional buttons
+
+[C3VEWEI]
+left analog stick up and down
+
+[C0PDCWE]
+L2 and R2 buttons
+
+[C1PDCWE]
+L2 and R2 buttons
+
+[C0PUCF]
+L1 button
+
+[C1PUCF]
+L1 button
+
+[C2PUCF]
+~T~
+
+[C3PUCF]
+~O~
+
+[C0PDLT]
+R1 button
+
+[C1PDLT]
+R1 button
+
+[C2PDLT]
+R1 button
+
+[C3PDLT]
+L1 button
+
+[C0PDCTL]
+L2 and R2 buttons
+
+[C1PDCTL]
+L2 and R2 buttons
+
+[C2PDCTL]
+L2 and R2 buttons
+
+[C3PDCTL]
+L2 and R2 buttons
+
+[C0CVEIW]
+SELECT button
+
+[C1CVEIW]
+up and down directional buttons
+
+[C2CVEIW]
+SELECT button
+
+[C3CVEIW]
+SELECT button
+
+[C0PDBAK]
+R3 button
+
+[C1PDBAK]
+R3 button
+
+[C2PDBAK]
+R3 button
+
+[C3PDBAK]
+R3 button
+
+[C0PDLO1]
+L button
+
+[C1PDLO1]
+L button
+
+[C2PDLO1]
+L button
+
+[C3PDLO1]
+L button
+
+[C0PDLO2]
+analog stick
+
+[C2PDLO2]
+analog stick
+
+[C0ANS]
+L1 button
+
+[C1ANS]
+L1 button
+
+[C2ANS]
+L1 button
+
+[C3ANS]
+L1 button
+
+[WEATHER]
+FORCE WEATHER
+
+[WEATHE2]
+WEATHER NORMAL
+
+[GA_4]
+~w~Car bombs are $500 each
+
+[GA_5]
+~w~Your vehicle is already fitted with a bomb.
+
+[GA_6]
+~w~Park it, prime it by pressing~h~ ~k~ ~PED_FIREWEAPON~ ~w~and LEG IT!
+
+[GA_7]
+~w~Arm with ~h~ ~k~ ~PED_FIREWEAPON~ button~w~. Bomb will go off when engine is started.
+
+[GA_8]
+~w~Use the detonator to activate the bomb.
+
+[GA_9]
+You collected ~1~ out of 10 special cars
+
+[GA_10]
+Nice one. Here's your $~1~
+
+[GA_11]
+We got these wheels already. It's worthless to us!
+
+[GA_12]
+Bomb armed
+
+[GA_13]
+Delivered like a pro. Complete the list and there'll be a bonus for you.
+
+[GA_14]
+All the cars. NICE! Here's a little something.
+
+[GA_15]
+~w~Hope you like the new color.
+
+[GA_17]
+~w~New engine and paint job!
+
+[GA_19]
+We're not interested in that model.
+
+[GA_20]
+We got more of these than we can shift. Sorry man, no deal.
+
+[GA_22]
+~w~You cannot fit a bomb to a bike.
+
+[GA_23]
+~w~Car bomb fitted - parts and labor: $500
+
+[GA_24]
+~w~Car bomb fitted - this one's on the house!
+
+[CR_1]
+~w~The crane cannot lift this vehicle.
+
+[PU_MONY]
+~w~You don't have enough cash.
+
+[PAUSED]
+GAME PAUSED
+
+[FEB_STA]
+Stats
+
+[FEB_MAP]
+Map
+
+[FEB_BRI]
+Briefs
+
+[FEB_CON]
+Controls
+
+[FEB_AUD]
+Audio
+
+[FEB_DIS]
+Display
+
+[FEB_LAN]
+Language
+
+[FEP_MAP]
+MAP
+
+[FEP_BRI]
+BRIEFS
+
+[FEP_CON]
+CONTROLS
+
+[FEP_AUD]
+AUDIO
+
+[FEP_DIS]
+DISPLAY
+
+[FEP_LAN]
+LANGUAGE:
+
+[FEF_ST1]
+Who's the bad man?
+
+[FEF_ST2]
+How much havoc have you caused
+
+[FEF_BR1]
+Lost the plot?
+
+[FEF_CO1]
+Need more control, freak?
+
+[FEF_SA1]
+Keep your place in the pile!
+
+[FEF_SA2]
+Save and load your games
+
+[FEF_AU1]
+Pump up the volume!
+
+[FEF_AU2]
+Select a radio station and sound effect
+
+[FEF_DI1]
+Change the game!
+
+[FEF_DI2]
+Customize the game for your TV
+
+[FEF_LA1]
+What you talking about willis?
+
+[FEF_LA2]
+Choose your preferred parlance
+
+[FEM_ON]
+ON
+
+[FEM_OFF]
+OFF
+
+[FEM_YES]
+Yes
+
+[FEM_NO]
+No
+
+[FEM_NON]
+None
+
+[FEI_SEL]
+Select
+
+[FEI_TAR]
+Target On/Off
+
+[FEI_BAC]
+Back
+
+[FEI_RES]
+Resume
+
+[FEI_NAV]
+Move
+
+[FEI_BTX]
+/
+
+[FEI_BTT]
+"
+
+[FEI_STA]
+START
+
+[FEI_BTD]
+analog
+
+[FEI_BTU]
+;=
+
+[FEI_R1B]
+L \ R
+
+[FEI_SCR]
+Scroll
+
+[FEI_ZOO]
+Zoom
+
+[FEH_CON]
+CONTROLS
+
+[FEH_AUD]
+AUDIO
+
+[FEH_LAN]
+LANGUAGE
+
+[FET_SG]
+SAVE GAME
+
+[FEH_DIS]
+DISPLAY
+
+[FEM_OK]
+OK
+
+[FEC_CRO]
+Crouch
+
+[FE_MLG]
+MAP LEGEND
+
+[MAP_LEG]
+LEGEND:
+
+[LG_01]
+Player position
+
+[LG_13]
+Ammu-Nation
+
+[LG_16]
+Safe House
+
+[LG_22]
+Pay 'n' Spray
+
+[LG_23]
+Mr. Benz
+
+[LG_25]
+Telephone
+
+[LG_26]
+Wildstyle Radio Station
+
+[LG_27]
+Flash FM Radio Station
+
+[LG_28]
+KChat Radio Station
+
+[LG_29]
+Fever 105 Radio Station
+
+[LG_30]
+VROck Radio Station
+
+[LG_31]
+VCPR Radio Station
+
+[LG_32]
+Espantoso Radio Station
+
+[LG_33]
+Emotion 98.3 Radio Station
+
+[LG_34]
+Wave 103 Radio Station
+
+[LG_35]
+Destination
+
+[LG_36]
+Sun Yard
+
+[LG_37]
+Strip Club
+
+[LG_38]
+EightBall
+
+[LG_39]
+Church Confessional
+
+[LG_40]
+Ma Cipriani
+
+[LG_41]
+Donald Love
+
+[LG_42]
+JD O'Toole
+
+[LG_43]
+Salvatore Leone
+
+[LG_44]
+Maria
+
+[LG_45]
+McAffrey
+
+[LG_46]
+Toshiko Kasen
+
+[LG_47]
+Vincenzo Cilli
+
+[LG_48]
+Bomb Shop
+
+[LG_49]
+Clothes Shop
+
+[LG_50]
+Phil Cassidy's
+
+[LG_51]
+Threat
+
+[LG_52]
+Friend
+
+[LG_53]
+Pick up
+
+[LG_54]
+Player Target
+
+[FEO_CON]
+Controller Setup
+
+[FEO_AUD]
+Audio Setup
+
+[FEO_DIS]
+Display Setup
+
+[FEO_LAN]
+Language Setup
+
+[FEO_PLA]
+Player Setup
+
+[FEB_PMB]
+Previous Mission Briefs:
+
+[FEC_NA]
+NA
+
+[FEC_CWL]
+Cycle Weapon left
+
+[FEC_CWR]
+Cycle Weapon right
+
+[FEC_CW]
+Cycle Weapons
+
+[FEC_CT]
+Cycle Targets
+
+[FEC_TAR]
+Target
+
+[FEC_MOV]
+Movement
+
+[FEC_CAM]
+Camera modes
+
+[FEC_PAU]
+Pause
+
+[FEC_ENV]
+Enter vehicle
+
+[FEC_JUM]
+Jump
+
+[FEC_ATT]
+Attack/Fire weapon
+
+[FEC_RUN]
+Run
+
+[FEC_FPC]
+Look
+
+[FEC_LL]
+Look left
+
+[FEC_LB1]
+Look
+
+[FEC_LB2]
+behind
+
+[FEC_LB]
+Look behind
+
+[FEC_LR]
+Look right
+
+[FEC_HOR]
+Horn
+
+[FEC_VES]
+Vehicle control
+
+[FEC_RSC]
+Radio station cycle
+
+[FEC_BRA]
+Brake or Reverse
+
+[FEC_HAB]
+Hand brake
+
+[FEC_CAW]
+Car weapon
+
+[FEC_ACC]
+Accelerate
+
+[FEC_SMT]
+Special mission
+
+[FEC_CCF]
+CONFIGURATION:
+
+[FEC_CF1]
+SETUP 1
+
+[FEC_CF2]
+SETUP 2
+
+[FEC_CF3]
+SETUP 3
+
+[FEC_CF4]
+SETUP 4
+
+[FEC_CDP]
+TYPE:
+
+[FEC_ONF]
+ON FOOT
+
+[FEC_INC]
+IN CAR
+
+[FEC_VIB]
+VIBRATION:
+
+[FEC_ILU]
+INVERT LOOK:
+
+[FEC_SWP]
+PLAYER MOVEMENT:
+
+[FEC_AS]
+analog stick
+
+[FEC_DP]
+directional buttons
+
+[FEA_SFX]
+SFX VOLUME:
+
+[FEA_OUT]
+Output:
+
+[FEA_ST]
+Stereo
+
+[FEA_MNO]
+Mono
+
+[FEA_CTD]
+Warning! This feature requires DTS compatible hardware to be connected. Proceed?
+
+[FEA_DTS]
+DTS
+
+[FEA_RSS]
+RADIO STATION:
+
+[FEA_NON]
+Radio Off
+
+[FED_BRI]
+BRIGHTNESS:
+
+[FED_TRA]
+TRAILS:
+
+[FED_RDR]
+RADAR MODE:
+
+[FED_HUD]
+HUD MODE:
+
+[FED_RDM]
+MAP & BLIPS
+
+[FED_RDB]
+BLIPS ONLY
+
+[FED_DBG]
+Menu Debug
+
+[FED_RID]
+Reload IDE
+
+[FED_RIP]
+Reload IPL
+
+[FED_PAH]
+Parse Heap
+
+[FED_RCD]
+CCullZones::RecalculateCullZoneData
+
+[FED_DFL]
+CTheScripts::DbgFlag
+
+[FED_DLS]
+Big White Debug Light Switched
+
+[FED_SPR]
+Show Ped Road Groups
+
+[FED_SCR]
+Show Car Road Grups
+
+[FED_SCZ]
+Show Cull Zones
+
+[FED_DSR]
+Debug Streaming Requests
+
+[FED_SCP]
+gbShowCollisionPolys
+
+[FEM_MCM]
+Memory Card Menu
+
+[FEM_RMC]
+Register MemCard One
+
+[FEM_TFM]
+Test Format MemCard One
+
+[FEM_TUM]
+Test UnFormat MemCard One
+
+[FEM_CRD]
+Create Root Dir
+
+[FEM_CLI]
+Create And Load Icons
+
+[FEM_FFF]
+Fill First File with Guff
+
+[FEM_SOG]
+Save Only The Game
+
+[FEM_CES]
+Check Every 0kB4 Save
+
+[FEM_STG]
+Save The Game
+
+[FEM_STS]
+Save The Game under GTA3 name
+
+[FEM_CPD]
+Create copy protected mag directory
+
+[FEM_MC2]
+Memory Card Menu 2
+
+[FEM_TS]
+Test Save:
+
+[FEM_TL]
+Test Load:
+
+[FEM_TD]
+Test Delete:
+
+[FEM_SL0]
+Slot0
+
+[FEM_SL1]
+Save File 1 Not Present
+
+[FEM_SL2]
+Save File 2 Not Present
+
+[FEM_SL3]
+Save File 3 Not Present
+
+[FEM_SL4]
+Save File 4 Not Present
+
+[FEM_SL5]
+Save File 5 Not Present
+
+[FEM_SL6]
+Save File 6 Not Present
+
+[FEM_SL7]
+Save File 7 Not Present
+
+[ST_TIME]
+Current playing time
+
+[ST_OVTI]
+Total playing time
+
+[NUMSHV]
+Number of saves
+
+[PL_STAT]
+Player stats
+
+[PE_WAST]
+People you've wasted
+
+[PE_WSOT]
+People wasted by others
+
+[CAR_EXP]
+Cars exploded
+
+[BOA_EXP]
+Boats destroyed
+
+[TM_BUST]
+Times busted
+
+[M_WASTE]
+Civilian males wasted
+
+[F_WASTE]
+Civilian females wasted
+
+[PIG_WST]
+Cops wasted
+
+[GNG_WST]
+Gang members wasted
+
+[MED_WST]
+Medics wasted
+
+[FIRE_WS]
+Firemen wasted
+
+[DED_CRI]
+Criminals wasted
+
+[DED_DED]
+Deadbeats wasted
+
+[DED_HOK]
+Hookers wasted
+
+[HEL_DST]
+Helicopters destroyed
+
+[PER_COM]
+Percentage completed
+
+[KGS_EXP]
+Kgs of explosives used
+
+[ACCURA]
+Accuracy
+
+[ELBURRO]
+Best 'Turismo' time in secs
+
+[CAR_CRU]
+Cars crushed
+
+[HED_EX]
+Heads exploded
+
+[ST_HEAD]
+Number of headshots
+
+[BUL_FIR]
+Bullets fired
+
+[BUL_HIT]
+Bullets that hit
+
+[SPRAYIN]
+Sprayings
+
+[TM_DED]
+Hospital visits
+
+[ST_GANG]
+Least favorite gang
+
+[ST_GNG1]
+Leones
+
+[ST_GNG2]
+Triads
+
+[ST_GNG3]
+Diablos
+
+[ST_GNG4]
+Yakuza
+
+[ST_GNG5]
+Yardies
+
+[ST_GNG6]
+Colombians
+
+[ST_GNG7]
+Hoods
+
+[ST_GNG8]
+Forellis
+
+[ST_GNG9]
+Sindaccos
+
+[DAYSPS]
+Days passed in game
+
+[MMRAIN]
+Mm rain fallen
+
+[ST_STAR]
+Total number of wanted stars attained
+
+[ST_STGN]
+Total number of wanted stars evaded
+
+[TOT_DIS]
+Total distance travelled (miles)
+
+[TOTDISM]
+Total distance travelled (m)
+
+[DISTBIK]
+Dist. travelled by bike (miles)
+
+[DISTBIM]
+Distance travelled by bike (m)
+
+[DISTHEL]
+Dist. travelled by helicopter (miles)
+
+[DISTHEM]
+Distance travelled by helicopter (m)
+
+[DISTBOA]
+Dist. travelled by boat (miles)
+
+[DISTBOM]
+Distance travelled by boat (m)
+
+[ST_WHEE]
+Longest wheelie time (secs)
+
+[ST_STOP]
+Longest stoppie time (secs)
+
+[ST_2WHE]
+Longest 2 wheels time (secs)
+
+[ST_WHED]
+Longest wheelie distance (m)
+
+[ST_STOD]
+Longest stoppie distance (m)
+
+[ST_2WHD]
+Longest 2 wheels distance (m)
+
+[ST_FAPD]
+Longest face plant distance (m)
+
+[FEST_HV]
+Highest 'Vigilante' level
+
+[FIRELVL]
+Highest 'Firefighter' level
+
+[ST_STOR]
+Stores knocked off
+
+[ST_ASSI]
+Assassination contracts completed
+
+[ST_FTIM]
+Flight hours
+
+[ST_FASH]
+Fashion budget
+
+[ST_WEAP]
+Weapon budget
+
+[ST_PROP]
+Property budget
+
+[ST_DAMA]
+Property destroyed
+
+[ST_AUTO]
+Auto repair and painting budget
+
+[MXCARD]
+Max. insane jump dist. (ft)
+
+[MXCARJ]
+Max. insane jump height (ft)
+
+[MXCARDM]
+Max. insane jump dist. (m)
+
+[MXCARJM]
+Max. insane jump height (m)
+
+[MXFLIP]
+Max. insane jump flips
+
+[MXJUMP]
+Max. insane jump rotation
+
+[FST_MFR]
+Most favorite radio station
+
+[FST_LFR]
+Least favorite radio station
+
+[BSTSTU]
+Best insane stunt so far:
+
+[INSTUN]
+Insane stunt
+
+[PRINST]
+Perfect insane stunt
+
+[DBINST]
+Double insane stunt
+
+[DBPINS]
+Perfect double insane stunt
+
+[TRINST]
+Triple insane stunt
+
+[PRTRST]
+Perfect triple insane stunt
+
+[QUINST]
+Quadruple insane stunt
+
+[PQUINS]
+Perfect quadruple insane stunt
+
+[NOSTUC]
+No insane stunts completed
+
+[NOUNIF]
+Unique jumps completed
+
+[NOUNGM]
+Total unique Jumps
+
+[NMISON]
+Mission attempts
+
+[NMMISP]
+Missions passed
+
+[PASDRO]
+Passengers dropped off
+
+[MONTAX]
+Cash made in taxi
+
+[CARSLD]
+Cars sold
+
+[MONCAR]
+Cash made selling cars
+
+[BIKESLD]
+Bikes sold
+
+[MONBIKE]
+Cash made selling bikes
+
+[CARSEXP]
+Cars found for 'Love Media'
+
+[SLTVLVL]
+Highest 'Slash TV' level
+
+[SLTVKIL]
+Opponents killed in 'Slash TV'
+
+[MONTRS]
+Cash made collecting trash
+
+[HTMKLD]
+Hitmen wasted
+
+[GDAMSP]
+Number of 'Avenging Angel' missions passed
+
+[HGAJD]
+Total 'Avenging Angel' justice dished out
+
+[BNDRACE]
+RC Races
+
+[FSTTRT]
+Most time left on 'Wong Side of the Track'
+
+[HGHTRC]
+Most cash on 'Wong Side of the Track'
+
+[FSTHRT]
+Fastest helicopter race time
+
+[BHLPOS]
+Best helicopter race position
+
+[TMSOUT]
+Outfit changes
+
+[BSRPS0]
+'Low Rider Rumble'
+
+[BSRPS1]
+'Deimos Dash'
+
+[BSRPS2]
+'Wi-Cheetah Run'
+
+[BSRPS3]
+'Red Light Racing'
+
+[BSRPS4]
+'Torrington TT'
+
+[BSRPS5]
+'Gangsta GP'
+
+[DBIKE0]
+Course 1
+
+[DBIKE1]
+Course 2
+
+[DBIKE2]
+Course 3
+
+[DBIKE3]
+Course 4
+
+[DBIKE4]
+Course 5
+
+[DBIKE5]
+Course 6
+
+[DBIKE6]
+Course 7
+
+[DBIKE7]
+Course 8
+
+[DBIKE8]
+Course 9
+
+[DBIKE9]
+Course 10
+
+[DBIKEHE]
+'Bump & Grinds'
+
+[DBIKEBP]
+Best position
+
+[DBIKEFL]
+Fastest lap
+
+[DBIKEFT]
+Fastest time
+
+[ST_PHOT]
+Photos taken
+
+[ST_PIZZ]
+Pizzas delivered
+
+[ST_NOOD]
+Noodles delivered
+
+[MO_TOUR]
+Cash made from tourists
+
+[TA_TOUR]
+Tourists taken to tourist spots
+
+[SC_SCRA]
+Highest score in 'Scrapyard Challenge'
+
+[SC_9MM]
+Highest score in '9mm Mayhem'
+
+[SC_SCOO]
+Highest score in 'Scooter Shooter'
+
+[DAYPLC]
+Daily police spending
+
+[SEAGULL]
+Seagulls sniped
+
+[CRIMRA]
+CRIMINAL RATING
+
+[CHASE]
+Highest media attention
+
+[CHASE1]
+Ignored
+
+[CHASE2]
+Boring
+
+[CHASE3]
+Vaguely interesting
+
+[CHASE4]
+Local paper Page 7
+
+[CHASE5]
+Front page of local paper
+
+[CHASE8]
+Local TV 3am
+
+[CHASE9]
+Local TV news
+
+[CHASE10]
+Local TV Live coverage
+
+[CHASE11]
+UFA Today page 12
+
+[CHASE12]
+UFA Today page 4
+
+[CHASE13]
+Picture in UFA Today
+
+[CHASE14]
+National TV 4am
+
+[CHASE15]
+National TV news
+
+[CHASE16]
+National TV live coverage
+
+[CHASE17]
+International news
+
+[CHASE18]
+National crisis
+
+[CHASE19]
+International crisis
+
+[CHASE20]
+World event
+
+[CHASE21]
+Stuff of legends
+
+[WHEEL01]
+~w~TWO WHEELS BONUS: $~1~ Distance: ~1~.~1~m Time: ~1~ seconds
+
+[WHEEL02]
+~w~TWO WHEELS BONUS: $~1~ Distance: ~1~ feet Time: ~1~ seconds
+
+[WHEEL06]
+~w~WHEELIE BONUS: $~1~ Distance: ~1~.~1~m Time: ~1~ seconds
+
+[WHEEL07]
+~w~WHEELIE BONUS: $~1~ Distance: ~1~ feet Time: ~1~ seconds
+
+[WHEEL11]
+~w~STOPPIE BONUS: $~1~ Distance: ~1~.~1~m Time: ~1~ seconds
+
+[WHEEL12]
+~w~STOPPIE BONUS: $~1~ Distance: ~1~ feet Time: ~1~ seconds
+
+[GMSTOR]
+Game Store
+
+[PREBRF]
+Previous Briefs
+
+[CNTLS]
+Controls
+
+[MUSMEN]
+Music/SFX
+
+[GAMSET]
+Game Settings
+
+[LANGUA]
+Language
+
+[DSPLAY]
+Display
+
+[DEBUGM]
+Debug Menu
+
+[QUITOP]
+Quit Options
+
+[CONTRL]
+Control Configuration
+
+[SET1EN]
+SetUp 1. Enabled
+
+[SET1]
+SetUp 1.
+
+[SET2EN]
+SetUp 2. Enabled
+
+[SET2]
+SetUp 2
+
+[SET3EN]
+SetUp 3. Enabled
+
+[SET3]
+SetUp 3
+
+[SET4EN]
+SetUp 4. Enabled
+
+[SET4]
+SetUp 4
+
+[GOBACK]
+GoBack
+
+[SOUND]
+SOUND
+
+[MUSVOL]
+Music Volume
+
+[SFXVOL]
+SFX Volume
+
+[SCROPT]
+SCREEN OPTIONS
+
+[CTRSCR]
+Center Screen
+
+[SCRFOR]
+Screen format
+
+[GMSVLQ]
+GAME SAVE-LOAD-QUIT
+
+[GMREST]
+Restart Game
+
+[GMLOAD]
+Load Game
+
+[GMSAVE]
+Save Game
+
+[NOGMSV]
+Can save only at your hideout.
+
+[DLFILE]
+Delete Grand Theft Auto Files
+
+[CHFILE]
+CHOOSE FILE TO LOAD
+
+[CHFIDL]
+CHOOSE FILE TO DELETE
+
+[SVCONF]
+SAVE CONFIRMATION
+
+[SVFNAM]
+Your saved file name is
+
+[LANGSL]
+LANGUAGE SELECTION
+
+[ENGLIS]
+English
+
+[GERMAN]
+German
+
+[ITALIA]
+Italian
+
+[FRENCH]
+French
+
+[SPAIN]
+Spanish
+
+[RELIDE]
+ReLoadIde
+
+[RELIPE]
+ReLoadIpl
+
+[PARSHP]
+Parse Heap
+
+[DBGFON]
+CTheScripts::DbgFlag On
+
+[DBFOFF]
+CTheScripts::DbgFlag Off
+
+[BGWHON]
+Big White Debug Light Switched On
+
+[BGWOFF]
+Big White Debug Light Switched Off
+
+[DSTRON]
+Debug Streaming Requests On
+
+[DSTROFF]
+Debug Streaming Requests Off
+
+[PDRGON]
+ShowPedRoadGroups On
+
+[PRGOFF]
+ShowPedRoadGroups Off
+
+[CRRGON]
+ShowCarRoadGroups On
+
+[CRGOFF]
+ShowCarRoadGroups Off
+
+[CLZOON]
+Show Cull Zones On
+
+[CLZOOF]
+Show Cull Zones Off
+
+[SHPLON]
+gbShowCollisionPolys On
+
+[SHPLOF]
+gbShowCollisionPolys Off
+
+[CULREC]
+CCullZones::RecalculateCullZoneData()
+
+[FORMM1]
+FormatMemCard 1 (teststuff)
+
+[UNFRM1]
+UnFormatMemCard 1 (teststuff)
+
+[GORLEV]
+Gore Level
+
+[SICASS]
+Sick Fuck
+
+[SICSIC]
+Sick Fucker
+
+[SCASSL]
+Sick Fuck Selected
+
+[SCSCSL]
+Sick Fucker Selected
+
+[PRVMEN]
+Previous Mission Briefs
+
+[FORMEN]
+Format Menu
+
+[MEMTST]
+MemoryCardTest screen
+
+[REGCAR]
+Register MemoryCard One
+
+[TEFONE]
+Test Format MemCard One
+
+[TEUFON]
+Test UnFormat MemCard One
+
+[CRROOT]
+CreateRootDir
+
+[CRLDIC]
+Create and Load Icons
+
+[FLFSGF]
+Fill First File With Guff
+
+[PUSAVE]
+Save Only the game
+
+[CHEVOK]
+CheckEveryOkB4Save
+
+[SVGMON]
+SaveTheGame
+
+[CNTSAV]
+Can't save the game. On a mission.
+
+[CNCSAV]
+Can't save the game. You're in a car.
+
+[CRMGSV]
+Create copy protected magazine directory
+
+[MGSVCN]
+MagazineDirectory Created
+
+[MGSVNC]
+MagazineDirectory Not Created
+
+[YES]
+Yes
+
+[NO]
+No
+
+[X]
+x
+
+[LAST]
+Last message.
+
+[GS_STYL]
+GAME STYLE:
+
+[GS_FFAL]
+FREE FOR ALL
+
+[GS_LOC]
+GAME LOCATION:
+
+[GS_SLMT]
+SCORE LIMIT:
+
+[GS_KLMT]
+KILL LIMIT:
+
+[GS_TLMT]
+TIME LIMIT:
+
+[GS_ULMT]
+UNLIMITED
+
+[GS_PRUP]
+POWERUPS:
+
+[GS_RACE]
+RACE:
+
+[GS_LAPS]
+LAPS:
+
+[GS_OK]
+OK
+
+[FEH_MP]
+MULTIPLAYER
+
+[FEMP_J]
+Join
+
+[FEMP_CS]
+CHARACTER:
+
+[FEMP_PS]
+PLAYER SETTINGS
+
+[FEMP_GS]
+GAME SELECT
+
+[FEMP_NG]
+START A NEW GAME
+
+[SVRLIST]
+HOST LIST
+
+[SVRINFO]
+HOST DETAILS
+
+[SVRNAME]
+NAME:
+
+[NO_SVRS]
+LOOKING FOR HOSTS
+
+[NO_PLRS]
+LOOKING FOR PLAYERS
+
+[NO_NAME]
+NO NAME
+
+[NO_WIFI]
+In order to play the multiplayer games you must first set the WLAN switch to ON.
+
+[FEMP_SG]
+START GAME
+
+[FEMP_S]
+Start
+
+[FEMP_WS]
+Waiting for host to start game...
+
+[SVRLOST]
+Communication with the host machine has been lost.
+
+[NOSVRS]
+A host machine could not be found.
+
+[MP_WARN]
+Starting a multiplayer game will cause all progress since the last save game to be lost.
+
+[FEDS_XB]
+Select
+
+[FEDS_TB]
+Back
+
+[FEDS_ST]
+START button - RESUME
+
+[FEST_OO]
+out of
+
+[FED_SUB]
+SUBTITLES:
+
+[FEC_TUC]
+Turret control
+
+[FEC_SM3]
+Special mission trigger (R3 button)
+
+[FEC_RS3]
+Radio station cycle (L3 button)
+
+[FEC_HO3]
+Horn (L3 button)
+
+[FIRST]
+~g~1st
+
+[SECOND]
+~g~2nd
+
+[THIRD]
+~g~3rd
+
+[FOURTH]
+~g~4th
+
+[NOCONTE]
+Please connect an analog controller (DUALSHOCK®) or analog controller (DUALSHOCK®2) to controller port 1 to continue.
+
+[WRCONT]
+The controller connected to controller port 1 is an unsupported controller. GTA: Liberty City Stories requires an analog controller (DUALSHOCK®) or analog controller (DUALSHOCK®2).
+
+[WRCONTE]
+The controller connected to controller port 1 is an unsupported controller. GTA: Liberty City Stories requires an analog controller (DUALSHOCK®) or analog controller (DUALSHOCK®2).
+
+[WRONGCD]
+Incorrect disc. Please insert the GTA:Liberty City Stories disc.
+
+[NOCD]
+The disc tray is empty. Please insert the GTA:Liberty City Stories disc.
+
+[OPENCD]
+The disc tray is open. Please close the disc tray.
+
+[RESTART]
+Starting new game.
+
+[GA_3]
+~w~$100 to respray!
+
+[GA_1A]
+~w~Come back when you're not so busy...
+
+[AWAY]
+~r~He's clean out of here!
+
+[GA_6B]
+~w~Park it, prime it by pressing~h~ ~k~ ~PDFW~ ~w~and LEG IT!
+
+[GA_7B]
+~w~Arm with~h~ ~k~ ~PDFW~~w~. Bomb will go off when engine is started.
+
+[FESZ_CA]
+Cancel
+
+[FESZ_QU]
+Quit
+
+[FESZ_L1]
+Game saved successfully!
+
+[FESZ_L2]
+Your saved filename is:
+
+[FESZ_OK]
+OK
+
+[FES_LGA]
+Load Game
+
+[FES_DGA]
+DELETE SAVE DATA
+
+[FES_CAN]
+Cancel
+
+[FESZ_QL]
+All unsaved progress in your current game will be lost. Proceed with loading?
+
+[FESZ_QD]
+Proceed with deleting this saved game?
+
+[FESZ_QO]
+Proceed with overwriting this saved game?
+
+[FESZ_QR]
+Are you sure you want to start a new game? All progress since the last save game will be lost. Proceed?
+
+[FESZ_QS]
+PROCEED WITH SAVE ?
+
+[T4X4_2A]
+~g~You have ~y~2 minutes~g~ to collect ~y~12~g~ checkpoints! ~g~You may collect them in ~y~ANY ORDER.
+
+[T4X4_2B]
+~1~ of 12!
+
+[T4X4_2C]
+~y~PASS THROUGH~g~ the first checkpoint to start the timer. ~g~Each checkpoint will credit you with ~y~10 SECONDS~g~.
+
+[T4X4_F]
+~r~You bailed! Too tough for you?!
+
+[UPSIDE]
+~r~You flipped your wheels!
+
+[FEST_DF]
+Dist. travelled on foot (miles)
+
+[FEST_DC]
+Dist. travelled by car (miles)
+
+[FESTDFM]
+Distance travelled on foot (m)
+
+[FESTDCM]
+Distance travelled by car (m)
+
+[FEST_LS]
+People saved in an Ambulance
+
+[FEST_CC]
+Criminals killed on Vigilante Mission
+
+[FEST_FE]
+Total fires extinguished
+
+[FEST_LF]
+Longest flight in Dodo
+
+[FEST_BD]
+Best time for bomb defusal
+
+[FEST_RP]
+Rampages passed
+
+[FEST_CN]
+Most time left in 'Karmageddon'
+
+[FEST_TR]
+Most kills in 'RC Triad Take-Down'
+
+[FEST_MP]
+Missions passed
+
+[FEST_H0]
+Most checkpoints
+
+[FEST_GC]
+Gang Cars Totalled:
+
+[USJ]
+~w~UNIQUE STUNT BONUS!
+
+[USJ_FAL]
+~w~UNIQUE STUNT FAILED!
+
+[HM1_1]
+~g~Ice 20 Purple Nines in 2 minutes 30 seconds.
+
+[KM1_8A]
+Press the~h~ ~k~ ~PDFW~ ~w~to ~h~activate the bomb,~w~ remember to get out of the way.
+
+[KM1_8D]
+Press the~h~ ~k~ ~PDFW~ ~w~to ~h~activate the bomb,~w~ remember to get out of the way.
+
+[RATNG1]
+UPSTANDING CITIZEN
+
+[RATNG2]
+NOBODY SPECIAL
+
+[RATNG3]
+LITTERER
+
+[RATNG4]
+SHOPLIFTER
+
+[RATNG5]
+VANDAL
+
+[RATNG6]
+DO BOY
+
+[RATNG7]
+PICKPOCKET
+
+[RATNG8]
+KLEPTO
+
+[RATNG9]
+SNITCH
+
+[RATNG10]
+RAT
+
+[RATNG12]
+SCAM ARTIST
+
+[RATNG13]
+TRICKSTER
+
+[RATNG14]
+NUMBERS RUNNER
+
+[RATNG15]
+HUSTLER
+
+[RATNG16]
+BULLY
+
+[RATNG17]
+RIFF-RAFF
+
+[RATNG18]
+SCALAWAG
+
+[RATNG19]
+RUFFIAN
+
+[RATNG20]
+OUTLAW
+
+[RATNG21]
+THUG
+
+[RATNG22]
+DROP MAN
+
+[RATNG23]
+SA GOON
+
+[RATNG24]
+GOON
+
+[RATNG25]
+JAILBIRD
+
+[RATNG26]
+EX-CON
+
+[RATNG27]
+FELON
+
+[RATNG28]
+BAG MAN
+
+[RATNG29]
+WISEGUY
+
+[RATNG30]
+WHEELMAN
+
+[RATNG31]
+HIRED MUSCLE
+
+[RATNG32]
+HATCHETMAN
+
+[RATNG33]
+HEADHUNTER
+
+[RATNG34]
+ENFORCER
+
+[RATNG35]
+RONIN
+
+[RATNG36]
+FIXER
+
+[RATNG37]
+HITMAN
+
+[RATNG38]
+ASSOCIATE
+
+[RATNG39]
+BUTCHER
+
+[RATNG40]
+CLEANER
+
+[RATNG41]
+ASSASSIN
+
+[RATNG42]
+CONSIGLIERE
+
+[RATNG43]
+MADE MAN
+
+[RATNG44]
+RIGHT-HAND MAN
+
+[RATNG45]
+EXECUTIONER
+
+[RATNG46]
+LIEUTENANT
+
+[RATNG47]
+UNDERBOSS
+
+[RATNG48]
+CAPO
+
+[RATNG49]
+BOSS
+
+[RATNG50]
+KINGPIN
+
+[RATNG51]
+DON
+
+[RATNG52]
+GODFATHER
+
+[TRAIN_1]
+Kurowski Station
+
+[TRAIN_2]
+Rothwell Station
+
+[TRAIN_3]
+Baillie Station
+
+[SUBWAY1]
+Portland Station
+
+[SUBWAY2]
+Rockford Station
+
+[SUBWAY3]
+Staunton South Station
+
+[SUBWAY4]
+Shoreside Terminal
+
+[DETON]
+DETONATION
+
+[RCBOMB1]
+RC Triad Take-Down
+
+[RECORD]
+~w~New record - ~1~ kills!
+
+[NRECORD]
+~r~You didn't beat the previous record of ~1~ kills!
+
+[RCBOMBF]
+~r~You got out of the van!
+
+[RC_2]
+You have 2 minutes to blow up as many Mafia Gang Cars as possible!
+
+[RC_3]
+You have 2 minutes to blow up as many Yakuza Gang Cars as possible!
+
+[RC_4]
+You have 2 minutes to blow up as many Yardie Gang Cars as possible!
+
+[RC_5]
+You have 2 minutes to blow up as many Hood Gang Cars as possible!
+
+[RC_6]
+You have 2 minutes to blow up as many Cartel Gang Cars as possible!
+
+[RAMPKA]
+~w~You need a vehicle for this rampage.
+
+[PAGE_00]
+.
+
+[TURTXT]
+Mobile Massacre!
+
+[TURPASS]
+~w~Massacre Passed!
+
+[TUR3D]
+~w~Car Health
+
+[FTFRENZ]
+Firetruck Frenzy
+
+[WELCOME]
+WELCOME TO
+
+[TSCORE]
+~w~TOTAL EARNINGS: $~1~
+
+[PBOAT_1]
+Press~h~ ~k~ ~VEWEP~ ~w~to fire the boat cannons.
+
+[HM2_1]
+Use the RC buggies to destroy the armored cars. Press~h~ ~k~ ~VEWEP~ ~w~to detonate.
+
+[HM2_1A]
+Use the RC buggies to destroy the armored cars. Press~h~ ~k~ ~VEWEP~ ~w~to detonate.
+
+[HM2_2]
+~r~You failed to destroy all the armored cars!
+
+[HM2_6]
+~g~Armored Car destroyed!
+
+[FESZ_UC]
+CANCEL
+
+[FEDS_SM]
+L1,R1-CHANGE MENU
+
+[FEDS_AS]
+;=-CHANGE SELECTION
+
+[FEDSAS2]
+<>-CHANGE SELECTION
+
+[FEDS_SS]
+L1,R1-CHANGE SELECTION
+
+[FEDSSC1]
+;-FASTER SCROLLING
+
+[FEDSSC2]
+=-STOP SCROLLING
+
+[FES_LOF]
+Load Failed.
+
+[FES_SLO]
+SAVE FILE
+
+[FES_ISC]
+IS CORRUPTED
+
+[FESZ_TI]
+SAVE Z1
+
+[FESZ_SA]
+Save game
+
+[MC_LDFL]
+Load Failed!
+
+[MC_NWRE]
+Now Restarting Game.
+
+[BIFP_1]
+~w~Ouch! Face plant distance: ~1~.~1~m
+
+[BIFP_1F]
+~w~Ouch! Face plant distance: ~1~ft
+
+[DIAB1_5]
+RACE TIME:
+
+[F_FAIL1]
+~r~Firefighter mission ended.
+
+[F_CANC]
+~r~Firefighter mission cancelled!
+
+[F_FAIL3]
+~r~You're too late!
+
+[F_FAIL4]
+~r~One of the passengers has died!
+
+[F_FAIL5]
+~r~One of the cars has been destroyed!
+
+[F_FAIL6]
+~r~The car has been destroyed!
+
+[F_EXTIN]
+Fires
+
+[A_CANC]
+~r~Paramedic mission cancelled!
+
+[ALEVEL]
+~w~Paramedic Mission Level ~1~
+
+[A_FAIL1]
+~r~Paramedic mission ended.
+
+[FEST_HA]
+Highest 'Paramedic' level
+
+[A_SAVES]
+~w~PEOPLE SAVED: ~1~
+
+[C_KILLS]
+~w~CRIMINALS KILLED: ~1~
+
+[F_START]
+~b~Burning vehicle ~w~reported in the ~a~ area. Go and extinguish the fire.
+
+[F_STAR1]
+~b~Burning vehicles ~w~reported in the ~a~ area. Go and extinguish the fires.
+
+[F_REWAR]
+~w~FIRE EXTINGUISHED! Level ~1~ completed! Reward: $~1~
+
+[CINCAM]
+Cinematic Camera
+
+[FEDS_AM]
+<>-CHANGE MENU
+
+[KABOOM]
+KABOOOM!
+
+[SPLAT]
+SPLAT!
+
+[PANCAK]
+PANCAKED!
+
+[SOAKED]
+SOAKED!
+
+[HEAD]
+Head Radio
+
+[DBL_CLF]
+Double Clef FM
+
+[FLASHB]
+Flashback FM
+
+[RISE]
+Rise FM
+
+[LIPS]
+Lips 106
+
+[CHAT]
+Chatterbox FM
+
+[K_JAH]
+K-Jah Radio
+
+[GAM_FM]
+Game Radio FM
+
+[MSX_FM]
+MSX FM
+
+[GA_2]
+~w~New engine and paint job: $100
+
+[PERPIC]
+Hidden Packages found
+
+[GA_21]
+~w~You cannot store any more vehicles in this garage.
+
+[CHEAT1]
+Cheat activated
+
+[CHEAT2]
+Weapon cheat
+
+[CHEAT3]
+Health cheat
+
+[CHEAT4]
+Armor cheat
+
+[CHEAT5]
+Wanted level cheat
+
+[CHEAT6]
+Money cheat
+
+[CHEAT7]
+Weather cheat
+
+[FEDS_BA]
+" button - BACK
+
+[FED_WIS]
+WIDE SCREEN:
+
+[USJ_ALL]
+~w~ALL UNIQUE STUNTS COMPLETED!
+
+[JAN]
+Jan
+
+[FEB]
+Feb
+
+[MAR]
+Mar
+
+[APR]
+Apr
+
+[MAY]
+May
+
+[JUN]
+Jun
+
+[JUL]
+Jul
+
+[AUG]
+Aug
+
+[SEP]
+Sept
+
+[OCT]
+Oct
+
+[NOV]
+Nov
+
+[DEC]
+Dec
+
+[DEFDT]
+--:---:---- --:--:--
+
+[BONUS]
+~g~BONUS $~1~
+
+[TAXI_M]
+'Taxi Driver'
+
+[COP_M]
+'Vigilante'
+
+[FIRE_M]
+'Firefighter'
+
+[AMBUL_M]
+'Paramedic'
+
+[HJ_IS]
+~w~INSANE STUNT BONUS: $~1~
+
+[HJ_PIS]
+~w~PERFECT INSANE STUNT BONUS: $~1~
+
+[HJ_DIS]
+~w~DOUBLE INSANE STUNT BONUS: $~1~
+
+[HJ_PDIS]
+~w~PERFECT DOUBLE INSANE STUNT BONUS: $~1~
+
+[HJ_TIS]
+~w~TRIPLE INSANE STUNT BONUS: $~1~
+
+[HJ_PTIS]
+~w~PERFECT TRIPLE INSANE STUNT BONUS: $~1~
+
+[HJ_QIS]
+~w~QUADRUPLE INSANE STUNT BONUS: $~1~
+
+[HJ_PQIS]
+~w~PERFECT QUADRUPLE INSANE STUNT BONUS: $~1~
+
+[HJBAD]
+~w~Terrible landing - you almost won $~1~!
+
+[HJUP]
+Takeoff health: ~1~
+
+[HJDOWN]
+Landing health: ~1~
+
+[FESZ_LS]
+Load Successful.
+
+[CEDBUG1]
+!!Debug Event!!
+
+[CEDBUG2]
+!!Player is dead or not playing!!
+
+[CEDBUG3]
+!!Player is in INDUSTRIAL level!!
+
+[CEDBUG4]
+Trying to make COLLECTIVE with ~1~
+
+[CEDBUG5]
+Debug Value: ~1~
+
+[CEDBUG6]
+Debug Values: A: ~1~ B: ~1~
+
+[CEDBUG7]
+Debug Values: A: ~1~ B: ~1~ C: ~1~
+
+[LINE]
+This is Line ~1~
+
+[MRACE08]
+~w~Come back when you've got some wheels!
+
+[MRACE01]
+~w~Wait for some rivals and then sound your horn to start the race!
+
+[MRACE02]
+~w~The race will start when the first player toots his horn
+
+[MRACE05]
+~r~YOU LOSE!
+
+[MRACE07]
+~r~You're dead! You loser!
+
+[MRACE06]
+~r~You wimp! You retired!
+
+[MRACE09]
+~w~Get back in the race!
+
+[MRACE10]
+~w~You've won (a one horse race)!
+
+[MRACEPO]
+Position
+
+[MRCPU03]
+YOU SET EVERYONE ON FIRE!
+
+[MRCPU04]
+YOU ARE ON FIRE!
+
+[TRASH1]
+Trash Dash
+
+[TRASH1A]
+~w~Collect the dumpsters and get the trash back to the junk yard.
+
+[TRASH1C]
+~w~The timer will start when you collect a dumpster. You may collect them in ANY ORDER.
+
+[TRASH1G]
+~r~Too tough for you? You're garbage!
+
+[TRASH1H]
+~r~You've run out of time!
+
+[TRASH1J]
+~r~You've strayed too far from your route!
+
+[TRASH1K]
+~w~Collect the ~g~dumpsters!
+
+[TRASH1L]
+~w~Get back to the ~y~junk yard!
+
+[TRASH1M]
+~w~Trash collected! +~1~ seconds
+
+[PCJINFO]
+~w~Hit all 25 ~y~Checkpoints~w~ within ~1~ seconds.
+
+[PCJFAIL]
+~r~You Failed to beat the time of ~1~ seconds!
+
+[PCJPROM]
+~w~You have ~1~ seconds to get back on the ~b~bike!
+
+[PCJPRO1]
+~w~You have ~1~ second to get back on the ~b~bike!
+
+[PCJDEST]
+~r~Bike destroyed!
+
+[PCJRET]
+~r~You failed to return to your bike.
+
+[PCJTIME]
+~r~You ran out of time!
+
+[PCJCHEC]
+~w~Checkpoint ~1~ out of ~1~
+
+[TRRACE1]
+~w~Get a time extension for each checkpoint you pass through...
+
+[TRRACE3]
+~w~You finished with ~1~ seconds to spare!
+
+[TRRACE4]
+~w~You reached ~1~ checkpoints out of ~1~ checkpoints first.
+
+[TRRACE5]
+~w~That gives you $~1~!
+
+[TRRACE6]
+~w~WELL DONE! You hit all checkpoints first! You get a bonus $1000!
+
+[TRRACE7]
+~r~You've left the track!
+
+[TRRACE8]
+~r~Your bike was destroyed!
+
+[TRRACE9]
+~r~You failed to return to your bike in time!
+
+[TRRAC10]
+~r~You lost your bike!
+
+[TRRAC11]
+~r~You ran out of time!
+
+[ANG]
+Avenging Angels
+
+[ANG_1]
+~w~Hey, friend! We're gonna clean up crime in this city!
+
+[ANG_2A]
+Press~h~ ~k~ ~TGSUB~ ~w~to join the Avenging Angels.
+
+[ANG_3]
+~w~You and I could take this town apart on our own. But, er... let's get some help, just in case.
+
+[ANG_3A]
+~w~Stop near other Avenging Angels to have them join your gang.
+
+[ANG_4]
+~w~Yo! I joined this chicken shit outfit to kick ass. So let's go!
+
+[ANG_5]
+~w~I'm your man...
+
+[ANG_6]
+~w~Let's burn down some scum!
+
+[ANG_7]
+~w~Kicking ass rocks!
+
+[ANG_7A]
+~w~Can you dig it?
+
+[ANG_7B]
+~w~We don't want no bully-boy gangs on our streets!
+
+[ANG_7C]
+~w~Not in my backyard!
+
+[ANG_7D]
+~w~It's time we fought back!
+
+[ANG_7E]
+~w~We're the law in this town!
+
+[ANG_8]
+Time Remaining
+
+[ANG_9]
+~w~Time Extended!
+
+[ANG_10]
+~r~You ran out of time!
+
+[ANG_11]
+~w~There's a group of 'undesirables', loitering nearby... let's teach 'em a lesson.
+
+[ANG_12]
+~w~There's a lynch mob raising hell in the streets. Let's pacify these idiots!
+
+[ANG_13]
+~w~What's this city coming to? People think they have a right to free assembly? We'll show them!
+
+[ANG_13A]
+~w~A nasty looking gang have been spotted bullying people in the streets...
+
+[ANG_14]
+~w~Another crime's been reported... let's roll!
+
+[ANG_16]
+~w~Some people have been spotted parking illegally. COME ON!
+
+[ANG_16A]
+~w~There's some guys I know, who're always up to no good. It's about time we gave them a whipping.
+
+[ANG_OBJ]
+~w~Take out the troublesome ~r~gang.
+
+[ANG_17]
+~w~Good work, friend! Thanks to you, this neighborhood is crime free. At least for now...
+
+[ANG_18]
+~w~They're bailing out!
+
+[ANG_19]
+~w~Find an Avenging Angel and stop near them to get your next mission.
+
+[ANG_20]
+~w~They're making a run for it!
+
+[ANG_21]
+~w~Don't let them get away!
+
+[VIC1]
+Home Sweet Home
+
+[VIC2]
+Slacker
+
+[VIC3]
+Dealing Revenge
+
+[VIC4]
+Snuff
+
+[VIC5]
+Smash and Grab
+
+[VIC6]
+Hot Wheels
+
+[VIC7]
+The Portland Chainsaw Masquerade
+
+[MAR1]
+Shop 'til you Strop
+
+[MAR2]
+Taken for a Ride
+
+[MAR3]
+Booby Prize
+
+[MAR4]
+Biker Heat
+
+[MAR5]
+Overdose of Trouble
+
+[SAL1]
+The Offer
+
+[SAL2]
+Ho Selecta!
+
+[SAL3]
+Frighteners
+
+[SAL4]
+Rollercoaster Ride
+
+[SAL5]
+Contra-Banned
+
+[SAL6]
+Sindacco Sabotage
+
+[SAL7]
+The Trouble with Triads
+
+[SAL8]
+Driving Mr Leone
+
+[JDT1]
+Bone Voyeur!
+
+[JDT2]
+Don in 60 Seconds
+
+[JDT3]
+A Volatile Situation
+
+[JDT4]
+Blow up 'Dolls'
+
+[JDT5]
+Salvatore's Salvation
+
+[JDT6]
+The Guns of Leone
+
+[JDT7]
+Calm before the Storm
+
+[JDT8]
+The Made Man
+
+[MAC1]
+Snappy Dresser
+
+[MAC2]
+Big Rumble in Little China
+
+[MAC3]
+Grease Sucho
+
+[MAC4]
+Dead Meat
+
+[MAC4_0]
+Casa
+
+[MAC5]
+No Son of Mine
+
+[SALH1]
+Rough Justice
+
+[SALH2]
+Dead Reckoning
+
+[SALH3]
+Shogun Showdown
+
+[SALH4]
+The Shoreside Redemption
+
+[SALH4_V]
+~r~v1.1
+
+[SALH5]
+The Sicilian Gambit
+
+[SALH5_V]
+~r~v1.1
+
+[DONH1]
+Panlantic Land Grab
+
+[DONH2]
+Stop the Press
+
+[DONH3]
+Morgue Party Resurrection
+
+[DONH4]
+No Money, Mo' Problems
+
+[DONH5]
+Bringing the House Down
+
+[DONH6]
+Love on the Run
+
+[TOSH1]
+More Deadly than the Male
+
+[TOSH2]
+Cash Clash
+
+[TOSH2F0]
+~r~A van reached the Yakuza compound!
+
+[TOSH2F1]
+~r~The convoy reached the Yakuza compound!
+
+[TOSH2F2]
+~r~You didn't destroy the security vans!
+
+[TOSH2M0]
+~w~That's one down!
+
+[TOSH2M1]
+~w~Another one down!
+
+[TOSH3]
+A Date with Death
+
+[TOSH4]
+Cash in Kazuki's Chips
+
+[PO_MOB1]
+~w~Toni? It's your Ma!
+
+[POMOB1A]
+~w~How long have you been back in town?
+
+[POMOB1B]
+~w~How come you don't come and see me?
+
+[POMOB1C]
+~w~What's wrong with you?
+
+[POMOB1D]
+~w~I'm your mother for her holiness'-sake! Come on.
+
+[PO_MOB2]
+~w~Hello fido! It's Maria.
+
+[PO_MOB3]
+~w~Hey Toni! It's JD.
+
+[POMOB3A]
+~w~I hear it all over: you're headed for big things.
+
+[POMOB3B]
+~w~I just hope you don't go forgetting your old pal JD when you get to the top. Right?
+
+[POMOB4A]
+~w~What the hell do you want?
+
+[POMOB4B]
+~w~Someone to pick up your laundry? Or wipe your ass?
+
+[POMOB4C]
+~w~Don't be like that. Listen, I feel bad about everything...
+
+[POMOB4F]
+~w~A nice slice of arsenic pie?
+
+[POMOB4G]
+~w~Forget about it.
+
+[POMOB4I]
+~w~Salvatore heard about it, and told me we both need to grow up.
+
+[POMOB4J]
+~w~This is me growing up. I'm sorry. Come on.
+
+[PO_MOB5]
+~w~Toni? It's Salvatore.
+
+[POMOB5A]
+~w~We've got big trouble! Get your ass over here pronto!
+
+[PO_MOB6]
+~w~Anthony? It's Salvatore.
+
+[POMOB6A]
+~w~Have you seen Maria?
+
+[ST_MOB8]
+~w~Yep?
+
+[STMOB8A]
+~w~Toni? It's Sal.
+
+[STMOB8B]
+~w~I need to talk. But I don't trust these cell phones for shit.
+
+[STMOB8C]
+~w~I'll call you on the public phone outside the Court House.
+
+[ST_MOB1]
+~w~Toni. It's Donald.
+
+[STMOB1A]
+~w~I have rather a pressing matter that requires your... particular skills.
+
+[STMOB1B]
+~w~Please call at my office as soon as you can.
+
+[ST_MOB2]
+~w~Yeah?
+
+[STMOB2A]
+~w~Cipriani? It's me, McAffrey.
+
+[STMOB2B]
+~w~I've got some news that Salvatore might appreciate.
+
+[STMOB2C]
+~w~Come and see me up at the usual place.
+
+[ST_MOB3]
+~w~Yeah?
+
+[STMOB3A]
+~w~It's Sal.
+
+[STMOB3B]
+~w~Listen, the Forellis had Mayor Hole in their pocket.
+
+[STMOB3D]
+~w~I know a big shot businessman who'd do anything to get into office.
+
+[STMOB3E]
+~w~He's a complete asshole, so he's qualified for the position.
+
+[STMOB3F]
+~w~I told him you'd make sure he wins the election... for us!
+
+[ST_MOB4]
+~w~Hello.
+
+[STMOB4A]
+~w~Toni. It's me, Sal.
+
+[STMOB4B]
+~w~I can smell those Forellis behind all this shit I'm in.
+
+[STMOB4C]
+~w~What I wanna know is: Why'd they get the mayor to light a fire under my ass?
+
+[STMOB4D]
+~w~Listen, meet me down at the jetty.
+
+[STMOB4E]
+~w~We're gonna do a little fact finding.
+
+[ST_MOB5]
+~w~Yo!
+
+[STMOB5B]
+~w~Head over to the public phone booth in Torrington.
+
+[STMOB5C]
+~w~I need to talk.
+
+[STMOB5D]
+~w~On the way, I want you to see an associate of mine in Aspatria.
+
+[STMOB5E]
+~w~He's gonna help us pile the pressure on the Sindaccos and Forellis.
+
+[ST_MOB6]
+~w~Yep?
+
+[STMOB6A]
+~w~Toni? It's Sal.
+
+[STMOB6B]
+~w~Get to the public phone booth at the Liberty Campus.
+
+[STMOB6C]
+~w~This is important.
+
+[ST_MOB7]
+~w~Yeah?
+
+[STMOB7A]
+~w~Toni? Sal here.
+
+[STMOB7B]
+~w~Get over to Belleville and find the public phone booth.
+
+[STMOB7C]
+~w~I got something urgent needs doing.
+
+[ST_MOB9]
+~w~Toni Cipriani here.
+
+[STMOB9A]
+~w~Toni? It's your Ma.
+
+[STMOB9B]
+~w~I just heard, you've been Made!
+
+[STMOB9C]
+~w~...I never doubted you for a second, son!
+
+[STMOB9D]
+~w~...and seeing as how you've finally proven yourself,
+
+[STMOB9E]
+~w~I'm calling off that contract I put on you.
+
+[STMOB9F]
+~w~Let's just put it behind us.
+
+[STMOB9G]
+~w~After all, I only did it with your best interests at heart.
+
+[STMOB9H]
+~w~Ah, what kind of a son makes his Ma go to such lengths?
+
+[STMOB9I]
+~w~See you soon, son. Don't forget about your old Ma.
+
+[STMO10]
+~w~Yeah?
+
+[STMO10A]
+~w~Hey tough guy. It's McAffrey.
+
+[STMO10B]
+~w~The Feds have caught up with your boss, Salvatore.
+
+[STMO10C]
+~w~And they're real pissed.
+
+[STMO10D]
+~w~He's gonna take the heat for every crime in this city.
+
+[STMO10E]
+~w~So, we never met. Understood?
+
+[SH_MOB1]
+~w~Toni...?
+
+[SHMOB1A]
+~w~Sal? Is that you?
+
+[SHMOB1B]
+~w~Ay, shut up! I'm speaking to my lawyer here!
+
+[SHMOB1C]
+~w~Toni? ...I mean er ...Lionel?
+
+[SHMOB1D]
+~w~Listen. They got me. Can you believe it?
+
+[SHMOB1E]
+~w~I'm up shit creek without a paddle.
+
+[SHMOB1F]
+~w~So get your ass over here, there's stuff I need you to take care of.
+
+[SHMOB1G]
+~w~...Lionel?
+
+[SH_MOB2]
+~w~Yeah?
+
+[SHMOB2A]
+~w~Toni? It's Donald.
+
+[SHMOB2B]
+~w~No wait, don't hang up!
+
+[SHMOB2C]
+~w~I've got a very exciting proposition for you...
+
+[SHMOB2D]
+~w~please call round at my current... um... residence, and I'll fill you in.
+
+[SHMOB2E]
+~w~Toni...?
+
+[SHMOB2F]
+~w~Please, Toni, have a heart. I'm calling you with my last di...
+
+[SH_MOB3]
+~w~Is this Mr. Cipriani?
+
+[SHMOB3A]
+~w~Who's this? How'd you get my number?
+
+[SHMOB3B]
+~w~If one puts their mind to it, one can achieve much.
+
+[SHMOB3C]
+~w~I shouldn't have to tell you that, Mr. Cipriani.
+
+[SHMOB3D]
+~w~I need your help in a delicate matter.
+
+[SHMOB3E]
+~w~For this help you will be richly rewarded.
+
+[SHMOB3F]
+~w~I will explain when you arrive at my apartment in Torrington.
+
+[SH_MOB4]
+~w~Toni! This is Sal!
+
+[SHMOB4A]
+~w~You did it! I can hardly believe it kid!
+
+[SHMOB4B]
+~w~We're nearly home free!
+
+[SHMOB4C]
+~w~Come and see me. We just got a few loose ends to tie up.
+
+[SH_MOB5]
+~w~Toni? Donald here.
+
+[SHMOB5A]
+~w~If the Panlantic deal is to come to fruition we're going to need to, um...
+
+[SHMOB5B]
+~w~how can I put this delicately...
+
+[SHMOB5C]
+~w~'clear' a small section of land in Fort Staunton.
+
+[SHMOB5D]
+~w~When you say 'we', you mean 'me' right?
+
+[SHMOB5E]
+~w~Toni, you see right through me.
+
+[SHMOB5F]
+~w~Go and see 8-Ball. I'm sure he can provide us with the necessary hardware.
+
+[SHMOB5G]
+~w~I'm sure he can provide us with the necessary hardware.
+
+[SH_MOB6]
+~w~My man? This is 8-Ball.
+
+[SHMOB6A]
+~w~Your hardware is ready to ship out.
+
+[AHIT_H0]
+~w~Is that all you've got, asshead!
+
+[AHIT_H1]
+~w~For crying out loud! When will these morons give up?
+
+[AHIT_H2]
+~w~Kiss my ass, dickhead!
+
+[AHIT_H3]
+~w~You guys are starting to piss me off!
+
+[AHIT_BI]
+~w~Keep your wits about you! One of Ma's hitmen is close by!
+
+[AHIT_TA]
+~w~Keep your eyes peeled! One of Ma's hired guns is nearby!
+
+[AHIT_BU]
+~w~Look out! One of Ma's hitmen is coming for you!
+
+[AHIT_AM]
+~w~Watch out! One of Ma's hired killers has seen you!
+
+[AHIT_VA]
+~w~Stay alert! One of Ma's paid killers is in the area!
+
+[AHIT_PO]
+~w~Stay sharp! One of Ma's hitmen is moving in for the kill!
+
+[AHIT_CA]
+~w~Look out! One of Ma's assassins is closing on you!
+
+[K_TKT]
+Scrapyard Challenge
+
+[K_TK2]
+~w~Ride through the coronas to score points.
+
+[K_TK4]
+~w~Score as many points as you can before the time runs out!
+
+[K_CD]
+~w~You have ~1~ seconds to return to your ~b~bike!
+
+[K_TKP1]
+~w~1 point!
+
+[K_TKP2]
+~w~2 points!
+
+[K_TKP3]
+~W~3 points!
+
+[K_SC]
+Score
+
+[K_SCX]
+~w~You scored ~1~ points!
+
+[K_SCX1]
+~w~You scored 1 point!
+
+[K_HSC1]
+~w~New high score of ~1~ points!
+
+[K_HSC2]
+~r~You failed to beat the high score of ~1~ points.
+
+[KRUSH]
+You now get four times as much cash for using the car crusher!
+
+[KRUSH2]
+You now get eight times as much cash for using the car crusher!
+
+[TURFAIL]
+~r~ODDJOB OVER!
+
+[TKR1]
+9mm Mayhem
+
+[TKR2]
+Scooter Shooter
+
+[TCKILL]
+Kills
+
+[TCHEAL]
+Damage
+
+[TC2_1]
+~r~You killed your driver!
+
+[TC2_2]
+~r~Vehicle destroyed!
+
+[TC2_3]
+~r~Out of time!
+
+[TC_T_E]
+~w~Target Eliminated! $~1~
+
+[TUP_BR]
+~w~Eliminate as many ~r~targets ~w~as you can within the time limit.
+
+[TUP_BR2]
+~w~Eliminate more than ~1~ ~r~targets ~w~for a new high score!
+
+[TUP_AD]
+~w~You have 3 adrenaline pills, Press R1 button to use one.
+
+[TUPSC1]
+~w~New high score of ~1~ kills!
+
+[TUPSC2]
+~r~You failed to beat the high score of ~1~ kills.
+
+[MPWCS1]
+The Wedding List
+
+[MPWCS2]
+Hey, how ya been?
+
+[MPWCS3]
+Listen, my son Joey's getting hitched!
+
+[MPWCS4]
+I found him this real classy girl, just like my Maria... I can't wait to get them together!
+
+[MPWCS5]
+Only, I don't want her seeing him driving one of those junk-heaps he's fixing up in his shop.
+
+[MPWCS6]
+So, you're gonna scour this town for some decent wheels.
+
+[MPWCS7]
+I'll make sure it's worth your while.
+
+[MPTCS1]
+Tanks for the Memories
+
+[MPTCS2]
+It's Sal. I need some heat diverting and you're gonna help me out.
+
+[MPTCS3]
+I got a tank parked across town. Take it and wreak havoc! Don't pull no punches!
+
+[MPTCS4]
+I want people thinking they must've pissed on Patton's grave.
+
+[MPTCS5]
+Listen, this diversion's real important, so I've got other wise-guys showing up looking to take a ride.
+
+[MPTCS6]
+...And, I'm only gonna pay the one that sits behind the wheel the longest
+
+[MPRCS1]
+Street Rage
+
+[MPRCS2]
+This is Salvatore Leone! Your dedicated public benefactor.
+
+[MPRCS3]
+...don't listen to what the Attorney General says!
+
+[MPRCS4]
+I am a good and generous friend of Liberty City. That's why I'm sponsoring this great race today.
+
+[MPRCS5]
+How much is this shit costing me?
+
+[MPRCS6]
+WHAT?! Get me to the E.R. My chest feels tight!
+
+[MPHPCS2]
+It's Sal... the feds are tapping my phone so I'll be subtle.
+
+[MPHPCS3]
+There's a briefcase full of Benjamin's under the phone, and a list of names. Guess what I want...
+
+[MPHPCS4]
+...wait! It ain't to share this money with those fucks.
+
+[MPHPCS5]
+You know... take them out.
+
+[MPHPCS6]
+Wait. I don't mean 'Take them out - for a good time'. I mean... um...
+
+[MPHPCS7]
+Look, just kill the fucks on the list will ya!
+
+[DEB0]
+DEBUG 0
+
+[DEB1]
+DEBUG 1
+
+[DEB2]
+DEBUG 2
+
+[DEB3]
+DEBUG 3
+
+[DEB4]
+DEBUG 4
+
+[NUM0]
+DEBUG 0 (~1~)
+
+[NUM1]
+DEBUG 1 (~1~)
+
+[NUM2]
+DEBUG 2 (~1~)
+
+[NUM3]
+DEBUG 3 (~1~)
+
+[NUM4]
+DEBUG 4 (~1~)
+
+[CARS]
+'Car Salesman'
+
+[BIKE]
+'Bike Salesman'
+
+[RACE_0]
+Position
+
+[RACE_FL]
+~w~FINAL LAP
+
+[RACE_X0]
+~w~Get a car and head for the ~y~start line!
+
+[RACE_X1]
+~w~Get a bike and head for the ~y~start line!
+
+[RACE_X2]
+~w~You need a car to be in this race!
+
+[RACE_X3]
+~w~You need a bike to be in this race!
+
+[RACE_X4]
+~w~You have ~1~ seconds to find a car.
+
+[RACE_X5]
+~w~You have ~1~ seconds to find a bike.
+
+[RACE_X6]
+~w~You have 1 second to find a car.
+
+[RACE_X7]
+~w~You have 1 second to find a bike.
+
+[RACE_T0]
+~r~You didn't come first!
+
+[RACE_T1]
+~r~You have been disqualified for leaving your car.
+
+[RACE_T2]
+~r~One of the racers has died - the race has been called off!
+
+[RACE_T3]
+~r~You have been disqualified for leaving your bike.
+
+[RACE_Y3]
+~w~3
+
+[RACE_Y2]
+~w~2
+
+[RACE_Y1]
+~w~1
+
+[RACE_Y]
+~w~GO!
+
+[RACE_Z1]
+~w~1ST PLACE!
+
+[RACE_Z2]
+~w~2ND PLACE!
+
+[RACE_Z3]
+~w~3RD PLACE!
+
+[RACE_Z4]
+~w~LAST PLACE!
+
+[RACE_R1]
+~w~RECORD: ~1~:~1~~1~ NEW RECORD!
+
+[RACE_R2]
+~w~NEW RECORD!
+
+[RACE_S0]
+~w~TIME: ~1~:~1~~1~
+
+[RACE_S1]
+~w~BEST LAP: ~1~:~1~~1~
+
+[RAC1]
+Low-Rider Rumble
+
+[RAC2]
+Deimos Dash
+
+[RAC3]
+Wi-Cheetah Run
+
+[BIK1]
+Red Light Racing
+
+[BIK2]
+Torrington TT
+
+[BIK3]
+Gangsta GP
+
+[TT1]
+'Bumps & Grinds'
+
+[TT1_A1]
+~w~< COURSE ~1~ >
+
+[TT1_B1]
+~w~Course Target: ~1~:~1~
+
+[TT1_B1A]
+~w~Course Target: ~1~:0~1~
+
+[TT1_B2]
+~w~Best Course Time: ~1~:~1~
+
+[TT1_B2A]
+~w~Best Course Time: ~1~:0~1~
+
+[TT1_B3]
+~w~Best Lap Time: ~1~:~1~
+
+[TT1_B3A]
+~w~Best Lap Time: ~1~:0~1~
+
+[TT1_B4]
+~w~~1~:~1~
+
+[TT1_B4A]
+~w~~1~:0~1~
+
+[TT1_B5]
+~w~New Course Record! ~1~:~1~
+
+[TT1_B5A]
+~w~New Course Record! ~1~:0~1~
+
+[TT1_L]
+~r~ Locked.
+
+[A_PISTO]
+~w~< Pistol >
+
+[A_UZI]
+~w~< Micro SMG >
+
+[A_AK]
+~w~< AK >
+
+[A_SNIPE]
+~w~< Sniper Rifle >
+
+[A_GRENA]
+~w~< Grenades >
+
+[A_ARMOU]
+~w~< Body Armor >
+
+[A_ROCKE]
+~w~< Rocket Launcher >
+
+[A_SHOTG]
+~w~< Shotgun >
+
+[A_M4]
+~w~< M4 >
+
+[A_FLAME]
+~w~< Flame-Thrower >
+
+[A_MINIG]
+~w~< Minigun >
+
+[A_COST]
+~w~Cost: ~h~$~1~
+
+[A_COST2]
+~w~Cost: ~h~$~1~ ~n~ ~r~This will replace your current weapon.
+
+[A_COST3]
+~w~Cost: ~h~$~1~ ~n~ ~r~Your Body Armor is in good condition.
+
+[A_COST4]
+~w~Cost: ~h~$~1~ ~n~ ~r~You cannot afford this.
+
+[A_STOCK]
+~r~Out of stock.
+
+[A_VIC4]
+~w~A pistol usually costs $240, but this one's on Vincenzo.
+
+[A_DONS4]
+~w~Donald Love's already paid for this.
+
+[A_NEDS4]
+~w~Some church guy reserved one of these for you.
+
+[A_TALK1]
+~w~I got all your home defense needs.
+
+[A_TALK2]
+~w~You want a license too?
+
+[A_TALK3]
+~w~I don't need to see any I.D. you look trustworthy.
+
+[A_TALK4]
+~w~You're welcome to try out the range round the back.
+
+[BENZ_GO]
+~w~Get a change of outfit!
+
+[PIZ_B01]
+~w~You have ~1~ second to get back on the Pizza ~b~bike!
+
+[PIZ_B02]
+~w~You have ~1~ seconds to get back on the Pizza ~b~bike!
+
+[PIZ_F04]
+~r~You failed to return to the Pizza bike!
+
+[NDL_B01]
+~w~You have ~1~ second to get back on the Noodle ~b~bike!
+
+[NDL_B02]
+~w~You have ~1~ seconds to get back on the Noodle ~b~bike!
+
+[NDL_F04]
+~r~You failed to return to the Noodle bike!
+
+[EXPO_D]
+~w~Here's a finder's fee: $~1~! Finish the list for a bonus!
+
+[PUPSPN]
+~w~POWERUP SPAWNED!
+
+[PUPMEGA]
+~y~MEGA DAMAGE!
+
+[PUPREGN]
+~y~HEALTH BOOST!
+
+[PUPINVS]
+~y~INVISIBILITY!
+
+[PUPFREZ]
+~y~FRENZY!
+
+[MPK]
+killed
+
+[MPKHEAD]
+with a headshot!
+
+[MPNEED]
+only needs
+
+[MPNAME]
+Name
+
+[MPSCORE]
+Score
+
+[MPPING]
+Ping
+
+[MPCPS]
+Checkpoints
+
+[MPTIME]
+Time
+
+[MPBONUS]
+Bonus
+
+[MPQG]
+Quit Game?
+
+[MPQUIT]
+Quit
+
+[MPCONT]
+Continue
+
+[MPHIGH]
+Highest Time
+
+[MPBY]
+by
+
+[MPOVER]
+Game Over
+
+[MPFIRST]
+finished first
+
+[MPWITH]
+wins with $
+
+[MPHP05]
+~w~5 seconds until next target.
+
+[MPHP04]
+~w~4 seconds until next target.
+
+[MPHP03]
+~w~3 seconds until next target.
+
+[MPHP02]
+~w~2 seconds until next target.
+
+[MPHP01]
+~w~1 second until next target.
+
+[RCRANGE]
+~w~Out of range!
+
+[CAD5_AA]
+Sal here.
+
+[CAD5_AB]
+These Forelli's have got me pissed! So they're gonna pay!
+
+[CAD5_AC]
+I want you to take their classiest cars...
+
+[CAD5_AD]
+...and run them over to their main competitors at the Sindacco auto yard.
+
+[CAD5_AE]
+Just make sure the Forellis don't steal any Sindacco cars in retaliation.
+
+[CAD5_AF]
+Capiche?
+
+[CAD4_AA]
+It's me, Sal.
+
+[CAD4_AB]
+I owe Franco Forelli, and you're gonna help me pay.
+
+[CAD4_AC]
+Down at the Sindacco auto yard they've got some real classy cars.
+
+[CAD4_AD]
+I want you to grab them all and take them to the Forelli car lot.
+
+[CAD4_AE]
+Make sure that no Forelli vehicles get stolen while you're down there.
+
+[CAD4_AF]
+Hey, don't screw this up.
+
+[MPC_000]
+Toni
+
+[MPC_001]
+'Lionel'
+
+[MPC_002]
+Cipriani
+
+[MPC_003]
+Chauffeur
+
+[MPC_004]
+13th
+
+[MPC_005]
+Toni the Tux
+
+[MPC_006]
+Fury
+
+[MPC_007]
+The King
+
+[MPC_008]
+Cocks
+
+[MPC_009]
+Streak
+
+[MPC_010]
+'T'
+
+[MPC_011]
+Dragon
+
+[MPC_012]
+JD
+
+[MPC_013]
+The Gimp
+
+[MPC_014]
+Avery
+
+[MPC_015]
+Choc-Choc
+
+[MPC_016]
+8-Ball
+
+[MPC_017]
+Maria
+
+[MPC_018]
+'Hamfists'
+
+[MPC_021]
+No.1
+
+[MPC_023]
+Hung Lo
+
+[MPC_025]
+Yamazaki
+
+[MPC_031]
+Officer '69'
+
+[MPC_032]
+The Specialist
+
+[MPC_034]
+G.I. Jones
+
+[MPC_035]
+Sam
+
+[FEA_FM0]
+HEAD RADIO
+
+[FEA_FM1]
+DOUBLE CLEF FM
+
+[FEA_FM2]
+K-JAH
+
+[FEA_FM3]
+RISE FM
+
+[FEA_FM4]
+LIPS 106
+
+[FEA_FM5]
+RADIO DEL MUNDO
+
+[FEA_FM6]
+MSX 98
+
+[FEA_FM7]
+FLASHBACK FM
+
+[FEA_FM8]
+THE LIBERTY JAM
+
+[FEA_FM9]
+LCFR
+
+[MRACELA]
+Lap
+
+[DTB_01]
+~w~Defend your base against enemy attackers.
+
+[DTB_02]
+~w~Protect your cars at all costs.
+
+[CAD2_AB]
+~w~Good news, the Forellis and Sindaccos are at each other's throats again.
+
+[CAD2_AC]
+~w~They both want ownership of all the car dealers in Liberty.
+
+[CAD2_AD]
+~w~Seeing as we 'assisted' the Forellis last week...
+
+[CAD2_AE]
+~w~...it's time to even the balance.
+
+[CAD2_AF]
+~w~Help the Sindaccos cream the Forelli car lot.
+
+[POMOB6B]
+~w~I swear I can only find that bitch when she needs money!
+
+[POMOB2A]
+~w~Salvatore gave me your number... well I found it in his address book. But, whatever!
+
+[POMOB2B]
+~w~You're his new doggy, right? Well, I want to go walkies.
+
+[POMOB2C]
+~w~I'll expect you over soon.
+
+[GS_RGUN]
+START WITH GUNS:
+
+[TUSHTK]
+AWOL Angel
+
+[SC_WICH]
+Highest score in 'AWOL Angel'
+
+[NE_WIFI]
+A network error occurred. The WLAN switch is OFF. Please turn the WLAN switch ON to play the multiplayer games.
+
+[BNDRAC0]
+Thrashin' RC
+
+[BNDRAC1]
+Ragin' RC
+
+[BNDRAC2]
+Chasin' RC
+
+[GS_G1]
+LIBERTY CITY SURVIVOR
+
+[GS_G2]
+STREET RAGE
+
+[GS_G3]
+PROTECTION RACKET
+
+[GS_G4]
+GET STRETCH
+
+[GS_G5]
+TANKS FOR THE MEMORIES
+
+[GS_G6]
+THE HIT LIST
+
+[GS_G7]
+THE WEDDING LIST
+
+[TRCR1]
+~w~1
+
+[TRCR2]
+~w~2
+
+[TRCR3]
+~w~3
+
+[TRCRGO]
+~w~GO!
+
+[GA_16]
+~w~Respray is complimentary.
+
+[NEW_TAX]
+~w~Taxi Driver mission complete! Mean Street Taxis have taken delivery of a new vehicle at their Trenton depot!
+
+[EXPO_2]
+~w~If you supply them with the vehicles they need in good condition, you'll be well rewarded.
+
+[FEMP_NC]
+Establishing network connections...Please Wait
+
+[C1TGSUB]
+R3 button
+
+[C2TGSUB]
+R3 button
+
+[C3TGSUB]
+~S~
+
+[C2VEHN]
+R1 button
+
+[C2VECRS]
+L3 button
+
+[C3VECRS]
+~O~
+
+[C2PDCWE]
+L2 and R2 buttons
+
+[C3PDCWE]
+L2 and R2 buttons
+
+[BENZ_LA]
+~w~The ~h~Lawyer's outfit~w~ is now available at the safehouse.
+
+[BENZ_TR]
+~w~Your ~h~Casual clothes~w~ are now available at the safehouse.
+
+[SLH1_OU]
+~w~You'll need a ~h~lawyer's outfit~w~ to get in to see Sal.
+
+[SLH1_OR]
+~w~You need to be in a lawyer's outfit to see Sal.
+
+[L_TRN_1]
+~w~You can use the ~h~El-train~w~ to travel around Portland. Press~h~ ~k~ ~VEEE~ ~w~to enter or exit the train.
+
+[HELP2]
+~w~Press~h~ ~k~ ~PDSPR~ ~w~while running to ~h~start sprinting.
+
+[STMOB5A]
+~w~Toni, Sal.
+
+[SCH_TK7]
+~r~You left the junkyard.
+
+[STMOB3C]
+~w~But, we're gonna take control of City Hall.
+
+[SALH3A]
+~w~Get some transport for Donald.
+
+[MPCASH]
+Cash
+
+[MPCARS]
+Cars
+
+[CRUSHED]
+Junk value $~1~
+
+[BENZ_BO]
+~w~Pick up a change of ~h~underwear~w~ from the safehouse.
+
+[BENZ_EL]
+~w~The ~h~King jumpsuit~w~ is now available at the safehouse.
+
+[BENZ_CO]
+~w~A ~h~Cox mascot suit~w~ is now available at the safehouse.
+
+[BENZ_HE]
+~w~Avenging Angel mission: Shoreside - level 15 complete! The ~h~Hero costume~w~ is now available at the safehouse.
+
+[BENZ_DR]
+~w~The ~h~Dragon outfit~w~ is now available at the safehouse.
+
+[TRTIT]
+Wong Side Of The Tracks
+
+[TRRACE2]
+~w~Watch out! The Wong Brothers look mean...
+
+[MPTOTAL]
+Total Time
+
+[TOUR_W6]
+~w~Exclusive Armored Landstalker delivered to your safehouse. Keep it safe in your garage!
+
+[OUTFITS]
+Unlocked Costumes
+
+[MPHPMAR]
+has been marked for death.
+
+[FEC_CWT]
+Cycle Weapons\Targets
+
+[EXPO_1]
+~w~Love Media need prizes to give away in their 'Car-razy Car Give Away' competitions!
+
+[PCJLAP]
+~w~New Lap Record of ~1~ seconds!
+
+[MPBLCAR]
+Blue Car:
+
+[MPRDCAR]
+Red Car:
+
+[RAMP_A]
+~w~ALL RAMPAGES COMPLETED! $~1~
+
+[FET_SAV]
+Save Game
+
+[FET_WRN]
+Warning! One or more cheats have been activated. This may affect your save game. It is recommended that you do not save this game.
+
+[HELP39]
+~w~Use~h~ ~k~ ~VEWEI~ ~w~to shift your weight while on a bike.
+
+[FEC_EXV]
+Exit vehicle
+
+[MPCOLL]
+CARS TO COLLECT:
+
+[FEMP_HG]
+HOST GAME
+
+[FEMP_JG]
+JOIN GAME
+
+[K_TK3]
+~w~1 point for ~g~green~w~, 2 points for ~y~amber~w~, and 3 points for ~r~red.
+
+[FEMP_GJ]
+SELECT GAME TO JOIN
+
+[FEMP_H]
+HOST:
+
+[FEMP_P]
+PLAYERS:
+
+[FEMP_HN]
+HOST A NEW GAME
+
+[PO_MOB4]
+~w~Hey, it's me, Vincenzo.
+
+[POMOB4D]
+~w~Come on. Drop by my place, I've got something for you.
+
+[POMOB4E]
+~w~Yeah? What's that? A pair of concrete boots?
+
+[POMOB4H]
+~w~No. Come on, Toni, I feel bad about what went down.
+
+[FEMP_F]
+FULL
+
+[FEMP_R]
+RESET TO DEFAULTS
+
+[YOU]
+YOU
+
+[NE_POW]
+A network error occurred. The power/hold switch was turned OFF.
+
+[FEMP_SQ]
+Are you sure you want to start a multiplayer game?
+
+[BIKETXT]
+~w~Hogs & Cogs is only open between the hours of 08:00 and 18:00. Come back then!
+
+[RACE_2]
+Time
+
+[FEF_CO2]
+Choose the best controller set-up for your playing style
+
+[TYREPOP]
+Tires popped with gunfire
+
+[FE_INIP]
+Initializing and loading Pause Menu... Please wait.
+
+[DON4EX3]
+~w~You take a check?
+
+[CRUSH]
+~w~Earn money from junk! Certain types of vehicle will be crushed if left in the area marked by tires.
+
+[ANG_15]
+~w~A group of idiots just stole some poor guy's car... let's take 'em down!
+
+[CDERROR]
+Please wait...
+
+[FEC_LOF]
+Look Forward
+
+[FEC_LFA]
+Look\Fine Aim
+
+[MPHELP]
+HELP
+
+[C1VEHN]
+L1 button
+
+[C3VEHN]
+L3 button
+
+[MPOBJ]
+OBJECTIVE:
+
+[MPLEG]
+RADAR LEGEND:
+
+[GS_O1]
+Every man for themselves! Kill the other players!
+
+[GS_O2]
+Drive through the checkpoints to reach the finish line first.
+
+[GS_OD3]
+Defend the four limos at your base from incoming attackers.
+
+[GS_O6]
+Kill the 'Marked' player as quickly as possible. But, if you are the 'Mark' survive as long as you can.
+
+[GS_O7]
+Collect cars scattered around the city, then drive them into the waiting containers.
+
+[FHOSE_2]
+~h~~k~ ~VEWEA~ ~w~will adjust the cannon's aim.
+
+[MPI01]
+POWERUP
+
+[MPI02]
+HEALTH
+
+[MPI03]
+ARMOUR
+
+[MPI04]
+WEAPON
+
+[SPIDER]
+Deimos SP
+
+[PONTIAC]
+Phobos Vt
+
+[FORELLI]
+Forelli ExSess
+
+[AHIT_LO]
+You may have lost him for now, but he'll be back to finish the job.
+
+[FEM_ROF]
+Radio Off
+
+[GA_1]
+~w~You gotta be kiddin'! I ain't touchin' that!
+
+[TRA_NEX]
+Next Stop:
+
+[TRA_CUR]
+Current Stop:
+
+[PAGEB2]
+~w~The ~h~Shotgun~w~ is now available at your safehouse!
+
+[PAGEB3]
+~h~Body Armor~w~ is now available at your safehouse!
+
+[PAGEB4]
+~w~The ~h~SMG~w~ is now available at your safehouse!
+
+[PAGEB5]
+~w~The ~h~.357~w~ is now available at your safehouse!
+
+[PAGEB6]
+~w~The ~h~M4~w~ is now available at your safehouse!
+
+[PAGEB7]
+~w~The ~h~Laser Sighted Sniper Rifle~w~ is now available at your safehouse!
+
+[PAGEB8]
+~w~The ~h~Flame-Thrower~w~ is now available at your safehouse!
+
+[PAGEB9]
+~w~The ~h~Rocket Launcher~w~ is now available at your safehouse!
+
+[PAGE_01]
+Gun down ~1~ Triads in 2 minutes!
+
+[PAGE_02]
+Blow up ~1~ vehicles in 2 minutes!
+
+[PAGE_03]
+Incinerate ~1~ Diablos in 2 minutes!
+
+[PAGE_04]
+Kill ~1~ Leone mafia in 2 minutes!
+
+[PAGE_05]
+Burn ~1~ vehicles in 2 minutes!
+
+[PAGE_06]
+Run over ~1~ pedestrians in 2 minutes!
+
+[PAGE_07]
+Destroy ~1~ vehicles in 2 minutes!
+
+[PAGE_08]
+Massacre ~1~ pedestrians in 2 minutes!
+
+[PAGE_09]
+Burn ~1~ Yakuza in 2 minutes!
+
+[PAGE_10]
+Assassinate ~1~ Forellis in 2 minutes!
+
+[PAGE_11]
+Run over ~1~ pedestrians in 2 minutes!
+
+[PAGE_12]
+Murder ~1~ pedestrians in 2 minutes!
+
+[PAGE_13]
+Kill ~1~ Yakuza in 2 minutes!
+
+[PAGE_15]
+Massacre ~1~ pedestrians in 2 minutes!
+
+[PAGE_16]
+Destroy ~1~ vehicles in 2 minutes!
+
+[PAGE_17]
+Snipe ~1~ pedestrians in 2 minutes!
+
+[PAGE_18]
+Destroy ~1~ vehicles in 2 minutes!
+
+[PAGE_20]
+Burn ~1~ pedestrians in 2 minutes!
+
+[MPI05]
+ENEMY
+
+[MPI07]
+CHECKPOINT
+
+[MPI08]
+NEXT
+
+[MPI09]
+FINISH LINE
+
+[MPI10]
+RACER
+
+[MPI11]
+BASE
+
+[MPI12]
+ENEMY BASE
+
+[MPI13]
+TANK
+
+[MPI14]
+THE MARK
+
+[MPI15]
+CAR
+
+[MPI16]
+CONTAINER
+
+[FEI_LEG]
+Legend On\Off
+
+[SR_ON]
+Now you've made a name for yourself on the street racing circuit, look out for challengers trying to contact you.
+
+[FEC_FRA]
+Free Aim
+
+[KAR_ON]
+Return to the firetruck whenever you want to try and beat your best time!
+
+[DON2EX5]
+~w~8-ball won't budge unless you pay him $20000
+
+[PCJTIT]
+GO GO Faggio
+
+[FEA_MUS]
+RADIO VOLUME:
+
+[FEST_GO]
+Best time for Go Go Faggio
+
+[RC_1]
+~w~Kill more than ~1~ Triads - each kill awards a time bonus!
+
+[EXPO_C]
+~w~Thanks! That's all of them! We've left a cool bonus waiting outside your Newport apartment!
+
+[TRRACE0]
+~w~Race through the ~y~checkpoints~w~ and reach the end of the course alive!
+
+[RACE_P1]
+~w~1st
+
+[RACE_P2]
+~w~2nd
+
+[RACE_P3]
+~w~3rd
+
+[RACE_P4]
+~w~4th
+
+[OUTF_00]
+~w~Casual clothes
+
+[OUTF_01]
+~w~Leone's suit
+
+[OUTF_03]
+~w~Avenging Angel's fatigues
+
+[OUTF_04]
+~w~Chauffeur's clothes
+
+[OUTF_05]
+~w~Lawyer's suit
+
+[OUTF_06]
+~w~Tuxedo
+
+[OUTF_07]
+~w~'The King' jumpsuit
+
+[OUTF_08]
+~w~Cox Mascot suit
+
+[OUTF_09]
+~w~Underwear
+
+[OUTF_10]
+~w~Hero garb
+
+[OUTF_11]
+~w~'Dragon' jumpsuit
+
+[SLTVMON]
+Total Cash made on 'Slash TV'
+
+[DBIKEAI]
+Most air achieved (m)
+
+[MPC_039]
+Vincenzo
+
+[MPC_040]
+Salvatore
+
+[MPC_041]
+Toshi
+
+[MPC_042]
+Toshiko
+
+[MPC_043]
+Ophelia Lardaz
+
+[MPC_044]
+Ed Banger
+
+[MPC_045]
+Robin Emblind
+
+[MPC_046]
+Mrs. Menalot
+
+[MPC_047]
+Hugh Jazz
+
+[MPC_048]
+Wayne
+
+[MPC_049]
+Paulie
+
+[MPC_050]
+Anne Job
+
+[MPC_051]
+Randy Boner
+
+[MPC_052]
+Owen Monie
+
+[MPC_053]
+Ekant Sing
+
+[MPC_054]
+M.T.Head
+
+[MPC_055]
+Rick O'Shea
+
+[MPC_056]
+Arden Long
+
+[MPC_057]
+Ann Thrax
+
+[MPC_058]
+Fay Slift
+
+[MPC_059]
+Mona Lott
+
+[C0VEACC]
+~X~
+
+[C1VEACC]
+~X~
+
+[C2VEACC]
+~X~
+
+[C3VEACC]
+right analog stick up
+
+[C0VEBRK]
+~S~
+
+[C1VEBRK]
+~S~
+
+[C2VEBRK]
+~S~
+
+[C3VEBRK]
+right analog stick down
+
+[C0VEHB]
+R1 button
+
+[C1VEHB]
+R1 button
+
+[C0VEEE]
+~T~
+
+[C1VEEE]
+~T~
+
+[C2VEEE]
+L1 button
+
+[C3VEEE]
+~T~
+
+[C0VEWEP]
+~O~
+
+[C1VEWEP]
+~O~
+
+[C2VEWEP]
+~O~
+
+[C3VEWEP]
+R1 button
+
+[C0PDSPR]
+~X~
+
+[C1PDSPR]
+~X~
+
+[C0SNZI]
+~S~
+
+[C1SNZI]
+~S~
+
+[C0SNZO]
+~X~
+
+[C1SNZO]
+~X~
+
+[C0PDFW]
+~O~
+
+[C1PDFW]
+~O~
+
+[C0TRSK]
+~X~
+
+[C1TRSK]
+~X~
+
+[C2TRSK]
+~X~
+
+[C3TRSK]
+~X~
+
+[C0AMBUY]
+~X~
+
+[C1AMBUY]
+~X~
+
+[C2AMBUY]
+~X~
+
+[C3AMBUY]
+~X~
+
+[C0AMEXI]
+~T~
+
+[C1AMEXI]
+~T~
+
+[C2AMEXI]
+~T~
+
+[C3AMEXI]
+~T~
+
+[C2PDSPR]
+~O~
+
+[C3PDSPR]
+~X~
+
+[C2SNZI]
+~T~
+
+[C3SNZI]
+~S~
+
+[C2SNZO]
+~S~
+
+[C3SNZO]
+~X~
+
+[C2PDFW]
+~X~
+
+[C3PDFW]
+R1 button
+
+[MPC_020]
+Rico Garlik
+
+[MPC_022]
+Lou Scannon
+
+[MPC_024]
+Cruz Vormen
+
+[MPC_026]
+Busta Moves
+
+[MPC_027]
+Juan Kerr
+
+[MPC_028]
+Nick Yakar
+
+[MPC_029]
+Lou Bricant
+
+[MPC_030]
+Lance Urwell
+
+[MPC_033]
+Agent Ochre
+
+[MPC_036]
+Papi Love
+
+[MPC_037]
+Lucy Lastic
+
+[MPC_038]
+Bill Durzbum
+
+[MPISCOL]
+Pickup Collected
+
+[MPSTART]
+Starting game...
+
+[MRACEC1]
+~w~1...
+
+[MRACEC2]
+~w~2...
+
+[MRACEC3]
+~w~3...
+
+[MPC_019]
+Phil DeGirth
+
+[GDA_HL]
+Highest 'Avenging Angel' level
+
+[MP_SNEW]
+Please load or start a new single player or multiplayer game.
+
+[DON2EX9]
+~r~Ned's~w~ getting away! Don't lose him!
+
+[FEI_CHA]
+Change Team
+
+[FES_RES]
+RESET GAME SETTINGS
+
+[FESZ_QT]
+Are you sure you want to reset all settings for controls, audio and the display? Proceed?
+
+[FEH_LOA]
+GAME
+
+[MPEMPTY]
+Vacant
+
+[FEMP_SN]
+START GAME (2 or more players required)
+
+[JD_SUIT]
+~w~JD can't give you work when you're dressed as a Leone!
+
+[SAVD_SH]
+safehouse.
+
+[SAVD_DY]
+Day
+
+[SAVD_CO]
+complete.
+
+[SAVD_AL]
+Portland safehouse. Day 71, $57640. 17% complete.
+
+[SAV_SLT]
+New Save
+
+[POMOB6C]
+~w~Come over and see me soon. I got some work for you.
+
+[ANG_2]
+~w~Press~h~ ~k~ ~TGSUB~ ~w~to toggle Avenging Angels missions on or off.
+
+[TVHELP]
+~w~Press~h~ ~k~ ~TGSUB~ ~w~to toggle SLASH TV missions on or off.
+
+[PAGERA]
+~w~The ~h~M60~w~ is now available at your safehouse!
+
+[CO_ALL]
+~w~All Hidden Packages collected!
+
+[CO_ONE]
+~w~Hidden Package ~1~ of ~1~ collected!
+
+[PAGE_14]
+Blow away ~1~ Colombian gangsters in 2 minutes!
+
+[PAGE_19]
+Run over ~1~ Colombian gang bangers in 2 minutes!
+
+[ANG_22]
+~r~Avenging Angel missions cancelled.
+
+[SLATVQO]
+~r~SlashTV mission cancelled.
+
+[C0FREE1]
+L3 button
+
+[C1FREE1]
+L3 button
+
+[C2FREE1]
+L3 button
+
+[C3FREE1]
+L3 button
+
+[C0FREE2]
+left analog stick
+
+[C2FREE2]
+left analog stick
+
+[ANGCOM1]
+~w~Avenging Angel mission: Portland - level 15 complete! The unique 'Avenger' motorcycle has been delivered to your safehouse!
+
+[K_CE]
+~w~You have ~1~ second to return to your ~b~bike!
+
+[HELP31]
+~w~If you are ~h~'busted'~w~ or ~h~'wasted'~w~ while on a mission, this ~h~Taxi~w~ will appear.
+
+[LOSER]
+~y~LOSER!
+
+[RCRHELP]
+~w~Press~h~ ~k~ ~TGSUB~ ~w~to ~h~quit the race~w~.~h~ ~k~ ~VEWEP~ ~w~to reset your RC Car to the last checkpoint.
+
+[SRC_ON]
+Now that you've made a name for yourself on the underground car-racing circuit, challengers will try to contact you.
+
+[SRB_ON]
+Now that you've made a name for yourself on the underground bike-racing circuit, challengers will try to contact you.
+
+[RACE_R0]
+~w~PREVIOUS RECORD: ~1~:~1~~1~
+
+[POMOB3C]
+~w~Hey, drop by some time okay buddy.
+
+[MPHPCS1]
+The Hit List
+
+[MPWLGOC]
+Get out of the car.
+
+[MPWLLTC]
+Leave the crate.
+
+[MPWLDTC]
+Deliver the car.
+
+[MPWLCD]
+Car delivered.
+
+[MPWLNGC]
+Now grab the cars.
+
+[MPAUTO]
+PLAY ONCE
+
+[MRACEGO]
+~w~GO
+
+[MRACE04]
+YOU'RE THE WINNER
+
+[MRACEWI]
+has won the race
+
+[MRCPU01]
+~y~INSTANT REPAIR
+
+[DTB01]
+defend the cars
+
+[DTB02]
+destroy the cars
+
+[DTB03]
+lost a car
+
+[DTB04]
+destroyed a car
+
+[MPWIN]
+wins
+
+[MPKSELF]
+was killed
+
+[MPMORE]
+more kills
+
+[MP1MORE]
+more kill
+
+[MPSTRT]
+Started
+
+[MPTANK]
+has the tank
+
+[MPONE]
+only has one car to get
+
+[MPDEL]
+has delivered a car
+
+[MPGOCAR]
+Go find the car
+
+[MPGOGAR]
+Deliver the car
+
+[MPDEST]
+Target vehicle destroyed
+
+[MPLEFT]
+left the game
+
+[MPHPGO2]
+~w~You have been marked for death
+
+[MPHPKI]
+~w~You killed an assassin
+
+[LOCKON]
+Lock On
+
+[MPHPGO]
+~w~Eliminate the mark
+
+[MPTNK]
+Get The Tank
+
+[MRCPU02]
+YOU POPPED EVERYONE'S TIRES
+
+[MRCPU05]
+YOUR TIRES ARE POPPED
+
+[MRCPU06]
+~y~Sticky Tires
+
+[WINNER]
+~Y~WINNER
+
+[MPDRAW]
+~w~DRAW
+
+[MPDADDY]
+YOU'RE THE DADDY NOW.
+
+[MPRUN]
+RUN THIS TOWN NOW.
+
+[MPBITCH]
+WHO'S YOUR DADDY NOW, BITCH?
+
+[FEMP_SM]
+Play Grand Theft Auto with friends or creepy strangers standing nearby.
+
+[MPYL]
+YOU LOSER!
+
+[MPTMWIN]
+ARE THE TOP DOGS
+
+[GS_SCAR]
+VEHICLE:
+
+[GS_MIN]
+minute
+
+[GS_MINS]
+minutes
+
+[MPTNKGA]
+You got the tank, tough guy.
+
+[MPTNKGB]
+Now keep it.
+
+[GS_TYPE]
+SCENARIO:
+
+[CLILOST]
+Communication with other players has been lost.
+
+[ONEHPC]
+100 percent completed! There's a little present waiting for you in Fort Staunton.
+
+[MPBLTM]
+sindaccos
+
+[MPRDTM]
+forellis
+
+[MTN_1]
+Sindaccos
+
+[MTN_2]
+Forellis
+
+[MPRDCAP]
+car has been captured
+
+[MPBLCAP]
+car has been captured
+
+[MPRDST]
+car has been stolen
+
+[MPBLST]
+car has been stolen
+
+[MPBLEST]
+car has been stolen
+
+[MPRDRET]
+car has been returned
+
+[MPBLRET]
+car has been returned
+
+[MPRDPOS]
+car is out of position
+
+[MPBLPOS]
+car is out of position
+
+[GS_TEAM]
+JOIN GANG:
+
+[FEMP_TS]
+JOIN GANG:
+
+[MPTEAM]
+Gang
+
+[GS_OA3]
+Destroy four limos at the rival gang's base.
+
+[GS_O4]
+Steal the rival gang's car and return it to your base. Simultaneously, protect your gang's car.
+
+[MPI06]
+GANG MEMBER
+
+[FEMP_ST]
+START GAME (1 or more players per gang required)
+
+[HELP32]
+~w~For a small fee (or free if you have no cash) it will transport you to the ~h~contact location~w~ of your last mission.
+
+[BENZ_HO]
+~h~Overalls~w~ are now available at the safehouse. Come back here at night wearing them to play SlashTV.
+
+[SLATXT]
+~w~Come back here dressed in the 'Overalls' between the hours of 18:00 and 05:00 to play SlashTV.
+
+[OUTF_02]
+~w~Overalls
+
+[CAN_CON]
+~w~Press~h~ ~k~ ~TGSUB~ ~w~again to cancel the mission.
+
+[GNG1]
+LEONES
+
+[GNG2]
+TRIADS
+
+[GNG3]
+DIABLOS
+
+[GNG4]
+YAKUZA
+
+[GNG5]
+YARDIES
+
+[GNG6]
+COLOMBIANS
+
+[GNG7]
+HOODS
+
+[GNG8]
+SINDACCOS
+
+[GNG9]
+FORELLIS
+
+[GNG0]
+SICILIANS
+
+[MP_GNG1]
+SELECTED GANG 1:
+
+[MP_GNG2]
+SELECTED GANG 2:
+
+[GS_TEMS]
+GANG WAR
+
+[CARS_O]
+~w~Capital Autos in Harwood is looking for new salesmen, if you want to make some extra money.
+
+[CARTXT]
+~w~Capital Autos is only open between the hours of 08:00 and 18:00. Come back then!
+
+[GS_TO1]
+Kill the rival gang!
+
+[MPTNEED]
+only need
+
+[MPTWIN]
+win
+
+[BADTEAM]
+One of the gangs had no players left.
+
+[RACELAP]
+Lap
+
+[GS_D1]
+RE-LIVE THE CLASSIC GAME SHOW! URBAN DARWINISM IS BACK.
+
+[GS_D2]
+WHO’S THE BEST AT DRIVING (OR CHEATING)?
+
+[GS_D3]
+PROTECT YOUR CARS FROM SCUMBAGS AND VANDALS.
+
+[GS_D4]
+STEAL THE ENEMY GANG’S CAR. LAUGH AT THEM.
+
+[GS_D5]
+WHO WANTS THAT TANK THE MOST?
+
+[GS_D6]
+THE MARKED MAN MUST BE WHACKED.
+
+[GS_D7]
+DEAL CARS FOR CASH.
+
+[HELP61]
+~w~When the ~h~triangular blip points up~w~ the ~h~target is above you~w~. A ~h~square blip~w~ indicates the ~h~target is level with you.
+
+[ST_DRWN]
+Fish fed
+
+[RACE_T4]
+~r~You have been disqualified for failing to find a car.
+
+[RACE_T5]
+~r~You have been disqualified for failing to find a bike.
+
+[PCJ600]
+PCJ-600
+
+[FEC_HBB]
+Hand brake~h~ ~k~ ~VEACC~ ~w~and~h~ ~k~ ~VEBRK~
+
+[HJSTAT]
+~w~Distance: ~1~.~1~m Height: ~1~.~1~m Flips: ~1~ Rotation: ~1~°
+
+[HJSTATW]
+~w~Distance: ~1~.~1~m Height: ~1~.~1~m Flips: ~1~ Rotation: ~1~° And what a great landing!
+
+[HJSTATF]
+~w~Distance: ~1~ft Height: ~1~ft Flips: ~1~ Rotation: ~1~°
+
+[HJSTAWF]
+~w~Distance: ~1~ft Height: ~1~ft Flips: ~1~ Rotation: ~1~° And what a great landing!
+
+[MPUNLK]
+New multiplayer content unlocked. Shame other players with all the stuff you've unlocked!
+
+[MPUNLKA]
+All multiplayer content unlocked. Shame other players with all the stuff you've unlocked!
+
+[TOUR]
+See the Sight Before your Flight
+
+[NDL1_A]
+Noodle Punk
+
+[PIZ1_A]
+Well Snacked Pizza
+
+[GS_SCUT]
+PLAY CUTSCENE:
+
+[TR_00]
+RACE ONE
+
+[TR_01]
+RACE TWO
+
+[TR_02]
+RACE THREE
+
+[TR_03]
+RACE FOUR
+
+[TR_04]
+RACE FIVE
+
+[TR_05]
+RACE SIX
+
+[TR_06]
+RACE SEVEN
+
+[TR_07]
+RACE EIGHT
+
+[CHSE]
+CHASE
+
+[NOCHANG]
+You can't change outfits while on this mission.
+
+[OUTF_12]
+Antonio
+
+[OUTF_13]
+Sweats
+
+[OUTF_14]
+Goodfella
+
+[OUTF_15]
+Wiseguy
+
+[BENZ_AN]
+~w~The ~h~Antonio outfit~w~ is now available at the safehouse.
+
+[BENZ_SW]
+~w~The ~h~Sweats outfit~w~ is now available at the safehouse.
+
+[BENZ_GD]
+~w~The ~h~Goodfella outfit~w~ is now available at the safehouse.
+
+[BENZ_WI]
+~w~The ~h~Wiseguy outfit~w~ is now available at the safehouse.
+
+[RAMPAGE]
+RAMPAGE
+
+[GS_TTGT]
+TANK TIME:
+
+[GS_O5]
+Survive the longest while in the Tank to win. Damage the Tank to steal it from another player.
+
+[HELP28]
+~w~To throw an ~h~explosive weapon~w~ press~h~ ~k~ ~PDFW~. ~w~The longer you hold~h~ ~k~ ~PDFW~ ~w~the further the weapon will go.
+
+[RATNG53]
+Dishonorable
+
+[RATNG54]
+Cheating Rat
+
+[RATNG55]
+Shark
+
+[RATNG56]
+Con Artist
+
+[RATNG57]
+The Don of all Liars
+
+[RATNG11]
+LEECH
+
+[CHASE6]
+Liberty Tree Page 2
+
+[CHASE7]
+Liberty Tree Front page
+
+[AUTOLD]
+Loading from Memory Stick™, do not remove Memory Stick™ or switch off the power.
+
+[LDFAIL]
+Load failed. Save data is corrupted.
+
+[MEMCHKA]
+Memory Stick™ is not found. At least
+
+[MEMCHKB]
+is needed to save this game data.
+
+[MEMCHKC]
+There is insufficient space on the Memory Stick™. At least
+
+[MEMCHKD]
+is needed to save this game data.
+
+[M_FAIL]
+MISSION FAILED!
+
+[M_OVER]
+MISSION OVER!
+
+[M_PASS]
+~Y~MISSION PASSED! ~n~$~1~
+
+[M_PASSN]
+~Y~MISSION PASSED!
+
+[MRACE11]
+~w~Get back in a vehicle to finish the race
+
+[FEI_LE1]
+Legend On
+
+[FEI_LE2]
+Legend Off
+
+[FEI_TA1]
+Target On
+
+[FEI_TA2]
+Target Off
+
+[C1FREE2]
+left analog stick
+
+[C3FREE2]
+left analog stick
+
+[FEA_MP3]
+CUSTOM TRACKS:
+
+[FEA_NA]
+UNAVAILABLE
+
+[MPC_060]
+Antonio
+
+[MPC_061]
+Sweats
+
+[MPC_062]
+Goodfella
+
+[MPC_063]
+Wiseguy
+
+[MPC_064]
+Kazuki
+
+[NUMDBL1]
+DEBUG 1 (~1~) (~1~)
+
+[SVRMBRS]
+PLAYER LIST:
+
+[RAMP_P]
+RAMPAGE PASSED!
+
+[RAMP_F]
+RAMPAGE FAILED!
+
+[MPWLPAC]
+picked up a target car.
+
+[MPWLDAC]
+delivered a target car.
+
+[LDWAIT]
+Press ~X~ to continue.
+
+[LOADING]
+Loading... Please wait
+
+[RACEP1]
+1st
+
+[RACEP2]
+2nd
+
+[RACEP3]
+3rd
+
+[RACEP4]
+4th
+
+[RACEP5]
+5th
+
+[RACEP6]
+6th
+
+[FEA_UT]
+UNKNOWN TRACK
+
+[LOADIN2]
+Loading...
+
+[DNH5_X2]
+~r~You didn't set all the bombs.
+
+[MRACE12]
+YOU HAVE
+
+[MRACE13]
+SECONDS TO FIND SOME WHEELS
+
+[MRACE14]
+SECOND TO FIND SOME WHEELS
+
+[DTB_03]
+~w~The team who defends their cars the longest, wins.
+
+[PUPCOL]
+collected a powerup
+
+[TNKCSE]
+Damage the Tank to steal it from another player.
+
+[TNKTM]
+Stay alive the longest in the Tank to win.
+
+[MPFAIL]
+FAILED
+
+[GS_LOC2]
+LOCATION:
+
+[DTBSWPA]
+You held off the Sindaccos for
+
+[DTBSWPB]
+Now trash their cars in less time.
+
+[DTBSWPC]
+You trashed the Forelli cars in
+
+[DTBSWPD]
+Now protect your cars for longer.
+
+[CHANOP]
+Change Option
+
+[MPSSCT]
+CASH TARGET:
+
+[F_RANG2]
+~r~The fire truck radio doesn't work in the subway!
+
+[T_RANG2]
+~r~There's no trash to collect in the subway!
+
+[T_RANGE]
+~r~There's no trash to collect here!
+
+[FEU_YES]
+YES
+
+[FEU_NO]
+NO
+
+[HELP43]
+~w~Using the handbrake will allow you to turn the boat more quickly.
+
+[RACE_T6]
+~r~One of the cars was wrecked - the race has been called off!
+
+[FED_POS]
+SCREEN POSITION
+
+[FES_DSS]
+Select save game to delete:
+
+[FES_LSS]
+Select save game to load:
+
+[FES_DSC]
+Delete Successful. Select OK to continue.
+
+[FES_DEL]
+Delete game
+
+[FES_DGM]
+DELETE GAME
+
+[ITBEG]
+In the beginning...
+
+[FET_LG]
+LOAD GAME
+
+[FES_SCG]
+Save the current game?
+
+[FESZ_QZ]
+Are you sure you want to save this game?
+
+[FES_SSC]
+Save Successful. Select OK to continue.
+
+[FEM_NTF]
+The memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 is unformatted.
+
+[FES_CFM]
+Formatting memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1. Do not remove memory card (8MB)(for PlayStation®2), controller, or reset/switch off the console.
+
+[FES_LOQ]
+Load failed! The save game on the memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 is not compatible with the game. Please try loading a different save game. Now restarting game.
+
+[FEM_NTH]
+No memory card (8MB)(for PlayStation®2) inserted in MEMORY CARD slot 1.
+
+[FES_CMP]
+Save failed! Check the memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 and please try again.
+
+[FESZ_FO]
+The memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 is unformatted. Do you wish to format it now?
+
+[FES_NOC]
+No memory card (8MB)(for PlayStation®2) inserted in MEMORY CARD slot 1.
+
+[FES_LOE]
+Load failed! Check memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 and please try again. Now restarting game.
+
+[FES_DEE]
+Delete failed! Please check memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 and try again.
+
+[SLONFM]
+Format failed! Please check memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 and try again.
+
+[SLONDR]
+Insufficient free space on memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1. Please insert a memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 with at least 330KB of free space in order to save this game data.
+
+[SLNSP]
+Insufficient free space on memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1. At least an additional 101KB of free space is needed on the memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 to save this game data.
+
+[SLONNF]
+The memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 is unformatted. Do you wish to format it now?
+
+[FESZ_FF]
+Format failed! Please check memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 and try again.
+
+[MCDNSP]
+No memory card (8MB)(for PlayStation®2) inserted in MEMORY CARD slot 1. If you wish to save your game data, insert a memory card (8MB)(for PlayStation®2) with at least 330KB of free space. Do you wish to start the game anyway?
+
+[MCGNDP]
+There is insufficient free space on the memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1. At least 330KB of free space is needed to save this game data. Do you wish to start the game anyway?
+
+[MCGNSP]
+There is insufficient free space on the memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1. At least an additional 101KB of free space is needed on the memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 to save this game data. Do you wish to start the game anyway?
+
+[FESZ_WR]
+Saving data. Do not remove memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1, controller, or reset/switch off the console.
+
+[FELD_WR]
+Loading data. Do not remove memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1, controller, or reset/switch off the console.
+
+[FEDL_WR]
+Deleting data. Do not remove memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1, controller, or reset/switch off the console.
+
+[C0VEWEA]
+right analog stick
+
+[C1VEWEA]
+right analog stick
+
+[C2VEWEA]
+right analog stick
+
+[C3VEWEA]
+directional buttons
+
+[C0PDLOO]
+right analog stick
+
+[C1PDLOO]
+right analog stick
+
+[C2PDLOO]
+right analog stick
+
+[C3PDLOO]
+right analog stick
+
+[C0AMMOV]
+left analog stick, or directional buttons
+
+[C1AMMOV]
+left analog stick, or directional buttons
+
+[C2AMMOV]
+left analog stick, or directional buttons
+
+[C3AMMOV]
+left analog stick, or directional buttons
+
+[FEC_ACB]
+Accelerate/Brake
+
+[FEM_SL8]
+Save File 8 Not Present
+
+[FES_SAV]
+SAVE GAME
+
+[FES_FMS]
+Format Successful.
+
+[MCDNCK]
+Checking Memory Card (8MB)(for PlayStation®2) in MEMORY CARD slot 1. Do not remove memory card (8MB)(for PlayStation®2), controller, or reset/switch off the console.
+
+[FESZ_QC]
+Proceed with overwriting this corrupted save game?
+
+[NOCONT]
+Please connect a DUALSHOCK® analog controller or DUALSHOCK®2 analog controller to controller port 1 to continue.
+
+[FES_LCF]
+Load failed! Check memory card (8MB)(for PlayStation®2) in MEMORY CARD slot 1 and please try again.
+
+[DBGHELP]
+~h~DEBUG MENU~w~ Select Item with ~h~left button & right button. ~w~Press ~h~X button ~w~to launch. Press ~h~TRIANGLE button ~w~to quit menu.
+
+[DBGSEL1]
+Level Skip Menu
+
+[DBGSEL2]
+Car Viewer
+
+[DBGSEL3]
+Character Viewer
+
+[DBGSEL4]
+Building Viewer
+
+[DBGSEL5]
+Weapon Cheat
+
+[DBGSEL6]
+Player Cheat
+
+[DBGSEL7]
+Weather and Time Changer
+
+[DBGSEL8]
+Marketing Camera
+
+[DBGSEL9]
+MoCap Menu
+
+[DBGSE10]
+USJ Editor
+
+[DBGSE11]
+Toggle Player Coordinates
+
+[DBGFIL0]
+Ped Selector
+
+[DBGFIL1]
+Car Selector
+
+[PLCHLD]
+Placeholder: mission will complete in 5 seconds
+
+[PLCHLD2]
+Placeholder Cutscene
+
+[PLCHLD3]
+Placeholder (MOCAP) Cutscene
+
+[LS_MAC]
+Ma Cipriani stream
+
+[LS_JDT]
+J.D. O'Toole stream
+
+[LS_SAL]
+Salvatore stream
+
+[LS_COMP]
+Completed all Missions in this stream
+
+[TEMP1]
+Number: ~1~
+
+[LS2_H1]
+Use ~h~analog up & down ~w~to select story stream. Use ~h~analog left & right ~w~to select mission. Use ~h~L button & R button ~w~to select an island. Press ~h~X button ~w~to start mission. Press ~h~TRIANGLE button ~w~to exit.
+
+[LS2_H2]
+You cannot use levelskip when you are ~h~on a mission.
+
+[LS2_VIC]
+~y~Vincenzo Cilli -~g~ ~a~
+
+[LS2_MAC]
+~y~Ma Cipriani -~g~ ~a~
+
+[LS2_JDT]
+~y~J.D. O'Toole -~g~ ~a~
+
+[LS2_SAL]
+~y~Salvatore -~g~ ~a~
+
+[LS2_MAR]
+~y~Maria -~g~ ~a~
+
+[LS2_NED]
+~y~Ned Burner -~g~ ~a~
+
+[LS2_DON]
+~y~Donald Love -~g~ ~a~
+
+[LS2_RAY]
+~y~Ray Machowski -~g~ ~a~
+
+[LS2_TOS]
+~y~Toshiko Kasen -~g~ ~a~
+
+[FREEON]
+Time Frozen
+
+[FREEOFF]
+Time Unfrozen
+
+[WTC_INS]
+Use ~h~analog up & down ~w~to change weather. Use ~h~analog left & right ~w~to change hour. Press ~h~TRIANGLE button ~w~to exit. Press ~h~SQUARE button ~w~to freeze time.
+
+[WTC_TIM]
+TIME: ~1~:00
+
+[WTC_WE0]
+WEATHER: CLOUDY
+
+[WTC_WE1]
+WEATHER: EXTRA COLOURS
+
+[WTC_WE2]
+WEATHER: EXTRA SUNNY
+
+[WTC_WE3]
+WEATHER: FOGGY
+
+[WTC_WE4]
+WEATHER: HURRICANE
+
+[WTC_WE5]
+WEATHER: RAINY
+
+[WTC_WE6]
+WEATHER: SNOW
+
+[WTC_WE7]
+WEATHER: SUNNY
+
+[CVHELP]
+Use ~h~up button and down button ~w~to change character. Use ~h~left button and right button ~w~to rotate camera. HOLD ~h~SQUARE ~w~to zoom in (toggles upper and lower body). Press ~h~TRIANGLE ~w~to quit character viewer.
+
+[VMENU1]
+--------- Select a Viewer --------- --- ~h~Car~w~ - Character - Building --
+
+[VMENU2]
+--------- Select a Viewer --------- --- Car - ~h~Character~w~ - Building --
+
+[VMENU3]
+--------- Select a Viewer --------- --- Car - Character - ~h~Building~w~ --
+
+[CV_C]
+COMPARISON MODEL
+
+[CV_0]
+ROW: -- MODEL: player
+
+[CV_1]
+ROW: 114 MODEL: cop
+
+[CV_2]
+ROW: 115 MODEL: swat
+
+[CV_3]
+ROW: 116 MODEL: fbi
+
+[CV_4]
+ROW: 117 MODEL: army
+
+[CV_5]
+ROW: 118 MODEL: medic
+
+[CV_6]
+ROW: 119 MODEL: fireman
+
+[CV_7]
+ROW: 71 MODEL: male01
+
+[CV_9]
+ROW: 120 MODEL: taxi_d
+
+[CV_10]
+ROW: 2 MODEL: pimp
+
+[CV_11]
+ROW: 13 MODEL: criminal01
+
+[CV_12]
+ROW: 14 MODEL: criminal02
+
+[CV_13]
+ROW: 15 MODEL: male02
+
+[CV_14]
+ROW: 16 MODEL: male03
+
+[CV_15]
+ROW: 121 MODEL: fatmale01
+
+[CV_16]
+ROW: 17 MODEL: fatmale02
+
+[CV_17]
+ROW: 18 MODEL: female01
+
+[CV_18]
+ROW: 19 MODEL: female02
+
+[CV_19]
+ROW: 20 MODEL: female03
+
+[CV_20]
+ROW: 21 MODEL: fatfemale01
+
+[CV_21]
+ROW: 22 MODEL: fatfemale02
+
+[CV_22]
+ROW: 23 MODEL: prostitute
+
+[CV_23]
+ROW: 24 MODEL: prostitute2
+
+[CV_24]
+ROW: 25 MODEL: p_man1
+
+[CV_25]
+ROW: 26 MODEL: p_man2
+
+[CV_26]
+ROW: 27 MODEL: p_wom1
+
+[CV_27]
+ROW: 28 MODEL: p_wom2
+
+[CV_28]
+ROW: 29 MODEL: ct_man1
+
+[CV_29]
+ROW: 30 MODEL: ct_man2
+
+[CV_30]
+ROW: 31 MODEL: ct_wom1
+
+[CV_31]
+ROW: 32 MODEL: ct_wom2
+
+[CV_32]
+ROW: 33 MODEL: li_man1
+
+[CV_33]
+ROW: 34 MODEL: li_man2
+
+[CV_34]
+ROW: 35 MODEL: li_wom1
+
+[CV_35]
+ROW: 36 MODEL: li_wom2
+
+[CV_36]
+ROW: 37 MODEL: docker1
+
+[CV_37]
+ROW: 38 MODEL: docker2
+
+[CV_38]
+ROW: 39 MODEL: scum_man
+
+[CV_39]
+ROW: 40 MODEL: scum_wom
+
+[CV_40]
+ROW: 41 MODEL: worker1
+
+[CV_41]
+ROW: 42 MODEL: worker2
+
+[CV_42]
+ROW: 43 MODEL: b_man1
+
+[CV_43]
+ROW: 44 MODEL: b_man2
+
+[CV_44]
+ROW: 67 MODEL: b_man3
+
+[CV_45]
+ROW: 45 MODEL: b_wom1
+
+[CV_46]
+ROW: 46 MODEL: b_wom2
+
+[CV_47]
+ROW: 70 MODEL: b_wom3
+
+[CV_48]
+ROW: 47 MODEL: mod_man
+
+[CV_49]
+ROW: 48 MODEL: mod_wom
+
+[CV_50]
+ROW: 49 MODEL: st_man
+
+[CV_51]
+ROW: 50 MODEL: st_wom
+
+[CV_52]
+ROW: 51 MODEL: fan_man1
+
+[CV_53]
+ROW: 52 MODEL: fan_man2
+
+[CV_54]
+ROW: 53 MODEL: fan_wom
+
+[CV_55]
+ROW: 54 MODEL: hos_man
+
+[CV_56]
+ROW: 55 MODEL: hos_wom
+
+[CV_57]
+ROW: 56 MODEL: const1
+
+[CV_58]
+ROW: 57 MODEL: const2
+
+[CV_59]
+ROW: 58 MODEL: shopper1
+
+[CV_60]
+ROW: 59 MODEL: shopper2
+
+[CV_61]
+ROW: 60 MODEL: shopper3
+
+[CV_62]
+ROW: 61 MODEL: stud_man
+
+[CV_63]
+ROW: 62 MODEL: stud_wom
+
+[CV_64]
+ROW: 63 MODEL: cas_man
+
+[CV_65]
+ROW: 64 MODEL: cas_wom
+
+[CV_79]
+ROW: 123 MODEL: gang01 LEONE_A
+
+[CV_80]
+ROW: 124 MODEL: gang02 LEONE_B
+
+[CV_81]
+ROW: 69 MODEL: gang03 TRIAD_A
+
+[CV_82]
+ROW: 3 MODEL: gang04 TRIAD_B
+
+[CV_83]
+ROW: 4 MODEL: gang05 DIABLO_A
+
+[CV_84]
+ROW: 5 MODEL: gang06 DIABLO_B
+
+[CV_85]
+ROW: 68 MODEL: gang07 YAKUZA_A
+
+[CV_86]
+ROW: 6 MODEL: gang08 YAKUZA_B
+
+[CV_87]
+ROW: 7 MODEL: gang09 YARDIE_A
+
+[CV_88]
+ROW: 8 MODEL: gang10 YARDIE_B
+
+[CV_89]
+ROW: 9 MODEL: gang11 COLOMBIAN_A
+
+[CV_90]
+ROW: 10 MODEL: gang12 COLOMBIAN_B
+
+[CV_91]
+ROW: 11 MODEL: gang13 HOOD_A
+
+[CV_92]
+ROW: 12 MODEL: gang14 HOOD_B
+
+[CV_93]
+ROW: 89 MODEL: gang15 Forelli thug1
+
+[CV_94]
+ROW: 90 MODEL: gang16 Forelli thug2
+
+[CV_95]
+ROW: 88 MODEL: gang17 Sindacco thug1
+
+[CV_96]
+ROW: 89 MODEL: gang18 Sindacco thug2
+
+[CV_109]
+ROW: 65 MODEL: SAL_01 Salvatore (Mob Don)
+
+[CV_110]
+ROW: 66 MODEL: RAY_01 Ray (Bad Cop)
+
+[CV_111]
+ROW: 72 MODEL: VINC_01 Vincenzo Cilli
+
+[CV_112]
+ROW: 73 MODEL: GRDANG1 Avenging Angel
+
+[CV_113]
+ROW: 74 MODEL: NED_01 Ned Burner (Reporter)
+
+[CV_114]
+ROW: 75 MODEL: MASTOR Massimo Torrini (Assassin)
+
+[CV_115]
+ROW: 76 MODEL: TOOL_01 JD O'Toole
+
+[CV_116]
+ROW: 77 MODEL: Not used Fthr Kenny
+
+[CV_117]
+ROW: 78 MODEL: GRDANG2 Avenging Angel 2
+
+[CV_118]
+ROW: 79 MODEL: M_HOLE Mayor RC Hole
+
+[CV_119]
+ROW: 80 MODEL: FRANFOR Franco Forelli
+
+[CV_120]
+ROW: 81 MODEL: KAZUKI Kazuki Kasen
+
+[CV_121]
+ROW: 82 MODEL: PAULIE Paulie Sindacco
+
+[CV_122]
+ROW: 83 MODEL: HOPPER Jane Hopper
+
+[CV_123]
+ROW: 84 MODEL: AVERY Avery Carrington
+
+[CV_124]
+ROW: 85 MODEL: CASA Giovanni Casa
+
+[CV_125]
+ROW: 86 MODEL: BABY Giovanni Casa (baby)
+
+[CV_126]
+ROW: 87 MODEL: MCAFFRY Det. Leon McAffrey
+
+[CV_127]
+ROW: 92 MODEL: EIGHT 8Ball
+
+[CV_128]
+ROW: 93 MODEL: MAR_01 Maria
+
+[CV_129]
+ROW: 94 MODEL: LOVE_01 Donald Love
+
+[CV_130]
+ROW: 95 MODEL: MICKEYH Mickey H
+
+[CV_131]
+ROW: 96 MODEL: WAYNE Wayne (Biker Dude)
+
+[CV_132]
+ROW: 97 MODEL: BIKER1 Biker Dude 1
+
+[CV_133]
+ROW: 98 MODEL: BIKER2 Biker Dude 2
+
+[CV_134]
+ROW: 99 MODEL: DONOVAN O'Donovan
+
+[CV_135]
+ROW: 100 MODEL: KAS_01 Toshiko Kasen (kimono)
+
+[CV_136]
+ROW: 101 MODEL: WKAS_01 Toshiko Kasen (western)
+
+[CV_137]
+ROW: 104 MODEL: JDMADE JD O'Toole - Made Man
+
+[CV_138]
+ROW: 106 MODEL: THUG_01 Sicilian Thug 1
+
+[CV_139]
+ROW: 107 MODEL: THUG_02 Sicilian Thug 2
+
+[CV_140]
+ROW: 109 MODEL: CAMP_MAN Campaign Worker
+
+[CV_141]
+ROW: 110 MODEL: CAMP_WOM Campaign Worker 2
+
+[CV_142]
+ROW: 111 MODEL: MIGUEL Miguel
+
+[CV_143]
+ROW: 112 MODEL: DELIASS Deli Assistant
+
+[CV_144]
+ROW: 113 MODEL: HOBO_01 Donald Love 2
+
+[CV_68]
+ROW: 122 MODEL: HITMAN Hitman
+
+[CV_146]
+ROW: 125 MODEL: HOLEJOG Mayor RC Hole (Jogging outfit)
+
+[CV_147]
+ROW: 126 MODEL: Chauff Chauffeur
+
+[CV_148]
+ROW: 128 MODEL: plr2 (Lawyer)
+
+[CV_149]
+ROW: 129 MODEL: plr3 (Travel clothes)
+
+[CV_150]
+ROW: 130 MODEL: plr4 (Chauffeur)
+
+[CV_151]
+ROW: 131 MODEL: plr5 (Hockey mask)
+
+[CV_152]
+ROW: 132 MODEL: plr6 (Tuxedo)
+
+[CV_153]
+ROW: 133 MODEL: plr7 (Avenging Angel)
+
+[CV_154]
+ROW: 134 MODEL: plr8 (The King of Rock'n Roll)
+
+[CV_155]
+ROW: 135 MODEL: plr9 (Cock's Mascot)
+
+[CV_156]
+ROW: 136 MODEL: plr10 (Boxer Shorts)
+
+[CV_157]
+ROW: 137 MODEL: plr11 (Bad Super Hero)
+
+[CV_158]
+ROW: 138 MODEL: plr12 (Dragon)
+
+[CV_159]
+ROW: 139 MODEL: PHILC Phil Cassidy
+
+[CV_160]
+ROW: 140 MODEL: GREASE Grease Zuko
+
+[CV_161]
+ROW: 141 MODEL: GUN_ASS Gun assistant
+
+[CV_162]
+ROW: -- MODEL: JD_shot JD shot dead
+
+[CV_163]
+ROW: -- MODEL: BODYBAG bodybag
+
+[CV_164]
+ROW: 142 MODEL: SAL_CON Sal Convict
+
+[VV_131]
+ID:131 MODEL: Landstalker (TBC)
+
+[VV_135]
+ID:135 MODEL: Perenial (TBC)
+
+[VV_138]
+ID:138 MODEL: Firetruck
+
+[VV_141]
+ID:141 MODEL: Manana (TBC)
+
+[VV_148]
+ID:148 MODEL: FBI Car (TBC)
+
+[VV_152]
+ID:152 MODEL: Kuruma (TBC)
+
+[VV_164]
+ID:164 MODEL: Dodo (TBC)
+
+[VV_169]
+ID:169 MODELL: Rc Bandit
+
+[VV_170]
+ID:170 MODEL: BellyUp (Triad) (TBC)
+
+[VV_172]
+ID:172 MODEL: Leone Sentinel (TBC)
+
+[VV_174]
+ID: 174 MODEL: Yakuza (TBC)
+
+[VV_179]
+ID:179 MODEL: Flatbed (TBC)
+
+[VV_181]
+ID:181 MODEL: Borgnine Taxi (TBC)
+
+[VV_188]
+ID: 188 MODEL: Sindacco Argento (TBC)
+
+[VV_189]
+ID: 189 MODEL: Forelli Lexcess (TBC)
+
+[VV_192]
+ID:192 MODEL: Speeder (TBC)
+
+[BV_H1]
+Press CIRCLE to swap building model.
+
+[BV_0A]
+ROW: 2 - Portland. Safehouse Exterior. Press CIRCLE to swap.
+
+[BV_0B]
+ROW:24 - Portland. Safehouse Interior. Press CIRCLE to swap.
+
+[BV_1]
+ROW: 3 - Portland. Ferry Terminal.
+
+[BV_2A]
+ROW: 4 - Portland. Callahan Bridge 1. Press CIRCLE to swap.
+
+[BV_2B]
+ROW: 4 - Portland. Callahan Bridge 2. Press CIRCLE to swap.
+
+[BV_3]
+ROW: 5 - Portland. Les Cargo Freighter.
+
+[BV_4A]
+ROW: 6 - Portland. Doll's House Brothel 1. Press CIRCLE to swap.
+
+[BV_4B]
+ROW: 6 - Portland. Doll's House Brothel 2. Press CIRCLE to swap.
+
+[BV_5]
+ROW: 7 - Portland. Tower Block.
+
+[BV_6]
+ROW: 8 - Portland. Eddie's Garage.
+
+[BV_7]
+ROW: 9 - Portland. Bowler's Fist Pub.
+
+[BV_8]
+ROW:10 - Portland. Hepburn Heights.
+
+[BV_9]
+ROW:11 - Portland. Short Stay Hotel.
+
+[BV_10]
+ROW:12 - Portland. Car Dealership.
+
+[BV_11]
+ROW:13 - Portland. Bus Graveyard.
+
+[BV_12A]
+ROW:14 - Portland. Drugs Warehouse 1 (awaiting approval). Press CIRCLE to swap.
+
+[BV_12B]
+ROW:14 - Portland. Drugs Warehouse 2 (awaiting approval). Press CIRCLE to swap.
+
+[BV_13]
+ROW:15 - Portland. Ma Cipriani's Restaurant.
+
+[BV_14]
+ROW:17 - Portland. Basketball Court, Callahan.
+
+[BV_15]
+ROW:18 - Portland. Bike Shop.
+
+[BV_16]
+ROW:19 - Portland. Building near Basketball Court.
+
+[BV_17A]
+ROW:20 - Portland. Luigi's Nightclub 1.
+
+[BV_17B]
+ROW:20 - Portland. Luigi's Nightclub 2.
+
+[BV_17C]
+ROW:20 - Portland. Luigi's Nightclub 3.
+
+[BV_18]
+ROW:21 - Portland. Casa's Gourmet Deli.
+
+[BV_19]
+ROW:22 - Portland. Rusty Ship.
+
+[BV_20]
+ROW:23 - Portland. Door for Shopfront.
+
+[BV_21]
+ROW:25 - Staunton. Casino.
+
+[BV_22]
+ROW:26 - Staunton. Phil Cassidy's Store.
+
+[BV_23]
+ROW:27 - Staunton. Zip store.
+
+[BV_24]
+ROW:28 - Staunton. Container Park.
+
+[BV_25]
+ROW:29 - Staunton. Ferry Terminal.
+
+[BV_26A]
+ROW:30 - Staunton. Fort Staunton 1 NORTH.
+
+[BV_26B]
+ROW:30 - Staunton. Fort Staunton 2 NORTH.
+
+[BV_27A]
+ROW:30 - Staunton. Fort Staunton 1 SOUTH.
+
+[BV_27B]
+ROW:30 - Staunton. Fort Staunton 2 SOUTH.
+
+[BV_28]
+ROW:31 - Ferry - Not Visible At Present.
+
+[BV_29A]
+ROW:32 - Staunton. Safehouse Exterior (unchanged). Press CIRCLE to swap.
+
+[BV_29B]
+ROW:32 - Staunton. Safehouse Interior. Press CIRCLE to swap.
+
+[BV_30]
+ROW:33 - Staunton. Steps Added To Building.
+
+[BV_31]
+ROW:34 - Portland. Outbuilding.
+
+[BV_32A]
+ROW:34 - Shoreside. Safehouse Exterior (unchanged). Press CIRCLE to swap.
+
+[BV_32B]
+ROW:34 - Shoreside. Safehouse Interior. Press CIRCLE to swap.
+
+[BV_33]
+Not in Doc - Staunton - Warehouse Interior (not internally approved).
+
+[BV_34A]
+Not in Doc - Staunton - Church Exterior. Press CIRCLE to swap.
+
+[BV_34B]
+Not in Doc - Staunton - Church Interior for scripted cutscene. Press CIRCLE to swap.
+
+[MODWOR]
+Modify World Speed
+
+[MODTIT]
+Changing World Speed
+
+[NEDS2]
+The Passion Of The Heist
+
+[NEDS3]
+Karmageddon
+
+[NEDS4]
+False Idols
+
+[DONS1]
+The Morgue Party Candidate
+
+[GAR_WIL]
+Drive the car into the garage.
+
+[DONS2]
+Steering The Vote
+
+[DONS3]
+Cam-Pain
+
+[DONS4]
+Friggin' The Riggin'
+
+[DONS5]
+Love & Bullets
+
+[DONS6]
+Counterfeit Count
+
+[DONS7]
+Love On The Rocks
+
+[DONS7AA]
+Toni, you gotta help me!
+
+[DONS7AB]
+O'Donovan's got evidence linking me to Salvatore, we're sunk!
+
+[DONS7AC]
+Calm down, evidence goes missing every day.
+
+[DONS7AD]
+Not to mention judges, witnesses, jurors...
+
+[DONS7AE]
+I'd hoped you'd see it that way.
+
+[DONS7AF]
+One of my men has been following the guy with the evidence.
+
+[DONS7AG]
+He'll meet you under the overpass in Newport.
+
+[SALS1]
+A Walk In The Park
+
+[SALS2]
+Making Toni
+
+[SALS3]
+Caught In The Act
+
+[SALS4]
+Search And Rescue
+
+[SALS5]
+Taking The Peace
+
+[SALS6]
+Shoot The Messenger
+
+[RAYS1]
+Sayonara Sindaccos
+
+[RAYS2]
+The Whole 9 Yardies
+
+[RAYS3]
+Crazy '69'
+
+[RAYS4]
+Night Of The Livid Dreads
+
+[RAYS5]
+Munitions Dump
+
+[MC_01]
+MOCAP Scenes
+
+[MC_02]
+You cannot be on a mission when using the cutscene selector.
+
+[MC_04]
+Select the scene you want and press CROSS. Press TRIANGLE to exit.
+
+[MC_03]
+~g~scene name - script name~w~
+
+[MC_S01]
+1. Biker - mar4
+
+[MC_S02]
+2. Bonevoy - jdt1
+
+[MC_S03]
+3. Campain - dons3
+
+[MC_S04]
+4. Cashchp - tosh4
+
+[MC_S05]
+5. Contban - sal5
+
+[MC_S06]
+6. Crazy69 - rays3
+
+[MC_S07]
+7. Cuttest - none
+
+[MC_S08]
+8. Deadly - tosh1
+
+[MC_S09]
+9. Donprob - donh6
+
+[MC_S10]
+10. Drivnmr - sal8
+
+[MC_S11]
+11. Electon - dons7
+
+[MC_S12]
+12. Homswet - vic1
+
+[MC_S13]
+13. Hotwhel - vic6
+
+[MC_S14]
+14. Kidnapp - jdt5
+
+[MC_S15]
+15. Landgrb - donh1
+
+[MC_S16]
+16. Morgue - dons1
+
+[MC_S17]
+17. Overdos - mar5
+
+[MC_S18]
+18. Rufjust - salh1
+
+[MC_S19]
+19. Sayonar - rays1
+
+[MC_S20]
+20. sicilan - salh5
+
+[MC_S21]
+21. Theofer - sal1
+
+[MC_S22]
+22. Intro
+
+[MC_S23]
+23. Final
+
+[MC_S24]
+24. Final_2
+
+[NEDS1]
+L.C. Confidential
+
+[WILGAR2]
+Leave the car and get outside.
+
+{=================================== MISSION TABLE SAL1 ===================================}
+
+[SAL1_M1:SAL1]
+~w~Salvatore wants to talk.
+
+[SAL1_M2:SAL1]
+~w~I'm not playing Salvatore's game.
+
+[SAL1_M3:SAL1]
+~w~Thanks for the donation, kid... see you around.
+
+[SAL1_M5:SAL1]
+~w~Hey!
+
+[SAL1_D1:SAL1]
+~w~Hey! Strike breaker!
+
+[SAL1_D2:SAL1]
+~w~Get him!
+
+[SAL1_D3:SAL1]
+~w~There he is!
+
+[SAL1_D4:SAL1]
+~w~He's over there!
+
+[SAL1_E1:SAL1]
+~w~Escape from the docks!
+
+[SAL1_A1:SAL1]
+~w~Meet the Union boss, Jane Hopper, at ~y~Portland Docks.
+
+[THEO_01:SAL1]
+Eh, boss, you okay?
+
+[THEO_02:SAL1]
+Do I look okay?
+
+[THEO_03:SAL1]
+No.
+
+[THEO_04:SAL1]
+Then what are you? A fuckin' moron?
+
+[THEO_05:SAL1]
+You're always saying the obvious.
+
+[THEO_06:SAL1]
+I can't believe I'm surrounded by people like you.
+
+[THEO_07:SAL1]
+Sorry.
+
+[THEO_08:SAL1]
+Listen, I'm sorry. Toni, you're one of my most trusted allies.
+
+[THEO_09:SAL1]
+After what you did, you're like a son to me - better than my son,
+
+[THEO_10:SAL1]
+better than any son.
+
+[THEO_11:SAL1]
+Your mother's a lucky woman.
+
+[THEO_12:SAL1]
+So I hear.
+
+[THEO_13:SAL1]
+Anthony, its over for guys like us.
+
+[THEO_14:SAL1]
+We're dinosaurs. Or dodos. Or dildos. Or something.
+
+[THEO_15:SAL1]
+I tell you, even in my own family I feel like Jesus surrounded by twelve Judases.
+
+[THEO_16:SAL1]
+I mean, listen to this;
+
+[THEO_17:SAL1]
+I got a union boss - a broad no less - that I need to do me a favor,
+
+[THEO_18:SAL1]
+and she asks me for money?
+
+[THEO_19:SAL1]
+All I wanted was 24 hour access to the docks, while the strike was going on,
+
+[THEO_20:SAL1]
+strikes that I helped organize, so my boys could offload some drugs,
+
+[THEO_21:SAL1]
+and now I get this horse shit!
+
+[THEO_22:SAL1]
+I mean these are people that I personally fought for,
+
+[THEO_23:SAL1]
+people I've killed for, honest people.
+
+[THEO_26:SAL1]
+It's a disgrace. We're finished, men of honor like you and me.
+
+[THEO_27:SAL1]
+Listen, Toni, I want you to take something to her.
+
+[THEO_28:SAL1]
+You're gonna take this crap off a broad?
+
+[THEO_29:SAL1]
+For now what choice do I have?
+
+[THEO_30:SAL1]
+Look, go down there, pay her off - and tell her I'd like to have a word with her.
+
+[THEO_31:SAL1]
+Go.
+
+[THEO_24:SAL1]
+- And this is how they repay me? ~n~ - It's insulting.
+
+{=================================== MISSION TABLE SAL2 ===================================}
+
+[SAL2_N:SAL2]
+Girls
+
+[SAL2_A0:SAL2]
+~w~Is this one of your new doggies, Sal?
+
+[SAL2_A1:SAL2]
+~w~Mr. Leone?
+
+[SAL2_A2:SAL2]
+~w~Toni! Come sta?
+
+[SAL2_A3:SAL2]
+~w~I'm glad you showed up. I want you to do something for me...
+
+[SAL2_A4:SAL2]
+~w~If I can't get that bitch of a union boss on my side, I can sure as shit get her guys to play along. You capiche?
+
+[SAL2_A:SAL2]
+~w~Collect six ~b~hookers~w~ and take them to the picket line at Portland Docks.
+
+[SAL2_B0:SAL2]
+~w~Honey! I don't dig on that two girl - one guy shit!
+
+[SAL2_B1:SAL2]
+~w~When you get more room, we'll get a room! I ain't traveling on no roof rack, Sugar!
+
+[SAL2_D0:SAL2]
+~w~Are you all alone, Sweetie?
+
+[SAL2_D1:SAL2]
+~w~Hey, good-lookin'! You wanna have some fun?
+
+[SAL2_D2:SAL2]
+~w~Honey... you and me are gonna party!
+
+[SAL2_D3:SAL2]
+~w~So, where's the party, Sugar?
+
+[SAL2_D4:SAL2]
+~w~Hey, baby! Looking for a good time?
+
+[SAL2_D5:SAL2]
+~w~Hi, Sugar! ...I'm Candy!
+
+[SAL2_F0:SAL2]
+~w~Hey! I'm coming too!
+
+[SAL2_F1:SAL2]
+~w~So it's just you and me now huh?
+
+[SAL2_F2:SAL2]
+~w~Are we gonna get it on or what?
+
+[SAL2_F3:SAL2]
+~w~So, where's the party?
+
+[SAL2_F4:SAL2]
+~w~Aw, gee! Don't be like that.
+
+[SAL2_F5:SAL2]
+~w~I just wanna party with ya!
+
+[SAL2_G0:SAL2]
+~w~Take her to the ~y~picket line!
+
+[SAL2_G1:SAL2]
+~w~Take the girls to the ~y~picket line!
+
+[SAL2_G2:SAL2]
+~w~Deal with the ~r~client!
+
+[SAL2_G3:SAL2]
+~w~Deal with the ~r~clients!
+
+[SAL2_G4:SAL2]
+~w~Pick up more ~b~girls!
+
+[SAL2_H:SAL2]
+~w~So, where's the party, Sugar?
+
+[SAL2_P:SAL2]
+~w~Have fun guys! Compliments of Salvatore Leone!
+
+[SAL2_I0:SAL2]
+~w~Get your own girl! Butt-head! This one's mine!
+
+[SAL2_I1:SAL2]
+~w~Hey! What are you, some kind of peeping tom!
+
+[SAL2_I3:SAL2]
+~w~Hey! Who the Hell is that! Let's get him!
+
+[SAL2_I5:SAL2]
+~w~Hey, Buddy! Get in line! We were here first.
+
+[SAL2_I7:SAL2]
+~w~You're the best! Don't stop... oh yeah, daddy!
+
+[SAL2_I9:SAL2]
+~w~So get busy...
+
+[SAL2_K0:SAL2]
+~w~Never mess with Toni Cipriani!
+
+[SAL2_K1:SAL2]
+~w~Come on! Let's go!
+
+[SAL2_K2:SAL2]
+~w~Let's go girl! Move your ass!
+
+[SAL2_C0:SAL2]
+~w~Hey! Come back, Baby! ...I ain't gonna bite!
+
+[SAL2_C1:SAL2]
+~w~Hey! Baby! Where you goin'?
+
+[SAL2_L0:SAL2]
+~w~I ain't waiting around here all day asshole!
+
+[SAL2_L1:SAL2]
+~w~Honey, I'm running a meter here!
+
+[SAL2_X0:SAL2]
+~r~Out of time!
+
+[SAL2_X1:SAL2]
+~r~You've killed too many hookers!
+
+[SAL2_X2:SAL2]
+~r~You attacked the dockers. They'll never trust you now!
+
+[SAL2_X3:SAL2]
+~r~You attacked the dockers' girls. They'll never trust you now!
+
+[SAL2_G5:SAL2]
+~w~Looks like you've got an admirer.
+
+[SAL2_I8:SAL2]
+~w~Honey, you don't want to go to jail do you?
+
+[SAL2_I6:SAL2]
+~w~Yes! Yes! ...
+
+[SAL2_M:SAL2]
+~w~Try not to kill them! Find another ~b~girl.
+
+[SAL2_W1:SAL2]
+~w~You only have until 0~1~:~1~ before the picket line changes shift!
+
+[SAL2_W2:SAL2]
+~w~You only have until ~1~:~1~ before the picket line changes shift!
+
+[SAL2_G6:SAL2]
+~w~Stop in the ~y~yellow marker~w~ to drop the girls off.
+
+[SAL2_G7:SAL2]
+~w~Disturb the client to get the ~b~girl~w~ out of the car.
+
+[SAL2_B:SAL2]
+~w~You can't fit any more girls in your car.
+
+{=================================== MISSION TABLE SAL3 ===================================}
+
+[SAL3_A0:SAL3]
+~w~Toni! How are you my boy?
+
+[SAL3_A1:SAL3]
+~w~You look a little thin. Isn't your mamma feeding you right?
+
+[SAL3_A2:SAL3]
+~w~I'm good Mr. Leone.
+
+[SAL3_A3:SAL3]
+~w~Listen, these union guys - they're getting me pissed.
+
+[SAL3_A5:SAL3]
+~w~...but we just need to turn up the heat on some of the 'less than receptive' union big shots.
+
+[SAL3_B0:SAL3]
+~w~Scare the ~r~union big shots.~w~ Make sure they get the picture!
+
+[SAL3_B3:SAL3]
+~w~They should do as they're told from now on.
+
+[SAL3_BA:SAL3]
+~w~You're crazy man! I don't want no more trouble!
+
+[SAL3_CA:SAL3]
+~w~What are you doing? Are you crazy?!
+
+[SAL3_DA:SAL3]
+~w~I only had two more payments on that car! You son of a bitch!
+
+[SAL3_BB:SAL3]
+~w~From now on you do as you're told!
+
+[SAL3_CB:SAL3]
+~w~Stay out of Leone business!
+
+[SAL3_A4:SAL3]
+~w~It looks like some of them are starting to see things my way
+
+[SAL3_A6:SAL3]
+~w~You know what I'm talking about?
+
+[SAL3_B1:SAL3]
+~w~You can't make your point if they're all dead. Don't kill any more ~r~union bosses!
+
+[SAL3_B2:SAL3]
+~r~You're supposed to scare 'em, not kill 'em!
+
+[SAL3_B4:SAL3]
+~w~Find another ~r~union boss~w~ to set straight.
+
+{=================================== MISSION TABLE SAL5 ===================================}
+
+[SAL5_D3:SAL5]
+~w~Drive the ~h~vehicle ~w~into the garage.
+
+[SAL5_D4:SAL5]
+~w~Get out of the vehicle and leave the ~h~garage.
+
+[SAL5_B:SAL5]
+~w~Get a vehicle with four seats and pick up some ~b~backup.
+
+[SAL5_C:SAL5]
+~w~You'll need a vehicle with four seats.
+
+[SAL5_C0:SAL5]
+~w~Pick up your ~b~backup.
+
+[SAL5_C1:SAL5]
+~w~You will need a vehicle with more seats to carry more ~b~backup.
+
+[SAL5_C2:SAL5]
+~w~Head down to ~y~Portland Docks.
+
+[SAL5_AA:SAL5]
+~w~Heeey... Ese... you were supposed to be here hours ago!
+
+[SAL5_AB:SAL5]
+~w~Quit whining Miguel. You got the stuff?
+
+[SAL5_AG:SAL5]
+~w~...you got our money?
+
+[SAL5_AH:SAL5]
+~w~Sure...
+
+[SAL5_AI:SAL5]
+~w~What?
+
+[SAL5_AJ:SAL5]
+~w~You greaseball fuck!
+
+[SAL5_C8:SAL5]
+~w~Get in the drugs ~b~vehicle~w~ and get the hell out of there!
+
+[SAL5_C9:SAL5]
+~w~Take the vehicle to ~y~Salvatore's lockup.
+
+[SAL5_D1:SAL5]
+~w~Get back into the ~b~vehicle!
+
+[SAL5_D2:SAL5]
+~r~The drugs were destroyed!
+
+[SAL5_AF:SAL5]
+~w~Heh heh ha! I like you Toni. You got big balls - like a bull!
+
+[SAL5_C3:SAL5]
+~w~Lose the cops!
+
+[SAL5_D5:SAL5]
+~r~The drugs have been seized!
+
+[SAL5_AD:SAL5]
+~w~Hey, I'm a busy man Toni. Next time I'll find another buyer!
+
+[SAL5_AE:SAL5]
+~w~Yeah, I doubt you'd find anyone else who pays what we do.
+
+[SAL5_D6:SAL5]
+~w~Take out the ~r~drug dealers.
+
+[CONT_01:SAL5]
+Shut up, you ungrateful bitch.
+
+[CONT_06:SAL5]
+That's the only time you touch me these days.
+
+[CONT_07:SAL5]
+Why the fuck would I wanna touch you?
+
+[CONT_08:SAL5]
+I don't like used goods.
+
+[CONT_09:SAL5]
+You revolt me.
+
+[CONT_12:SAL5]
+Oh please. You know what?
+
+[CONT_15:SAL5]
+Hi, Toni...
+
+[CONT_16:SAL5]
+I want my money, old man!
+
+[CONT_17:SAL5]
+Get outta here, you tramp.
+
+[CONT_18:SAL5]
+Hey, Anthony, you're an angel of mercy.
+
+[CONT_19:SAL5]
+Women, what are you gonna do about them, huh?
+
+[CONT_20:SAL5]
+Luckily, I can trust someone in my life - you, Toni.
+
+[CONT_21:SAL5]
+You're very important to me. Did I ever tell you that?
+
+[CONT_22:SAL5]
+You can't even get it up you old bastard.
+
+[CONT_23:SAL5]
+Not for you. I don't like using public toilets, you slut!
+
+[CONT_24:SAL5]
+Very important. So listen - it's you and me now. We're in charge.
+
+[CONT_25:SAL5]
+We've got those fools on the run.
+
+[CONT_26:SAL5]
+How would you know? You're more interested in hanging out with men!
+
+[CONT_27:SAL5]
+And you're only happy when you've got your drawers around your ankles
+
+[CONT_28:SAL5]
+and your back against a wall!
+
+[CONT_29:SAL5]
+Christ - I've met rabbits who like to fuck less than you!
+
+[CONT_33:SAL5]
+Anyway, I got a shipment of you know what coming in.
+
+[CONT_34:SAL5]
+This is going to put us - you and me - on the map big time.
+
+[CONT_35:SAL5]
+Everything should run smooth.
+
+[CONT_36:SAL5]
+I just need someone - someone I trust - to take care of things for me.
+
+[CONT_37:SAL5]
+Alright Toni, I'll talk to you later.
+
+[CONT_38:SAL5]
+And another thing - I never met a girl with hydraulic underwear.
+
+[CONT_39:SAL5]
+It amazes me! Christ! Why did I marry her?
+
+[CONT_40:SAL5]
+I was looking for a tramp, I married a slut!
+
+[CONT_41:SAL5]
+I must have really pissed someone off in my past life,
+
+[CONT_42:SAL5]
+I'll tell you that much.
+
+[CONT_02:SAL5]
+- I'll knock you into next week if I hear another word from you. ~n~ - Oh, that's right, big dick.
+
+[CONT_04:SAL5]
+- What are you gonna do? Hit me? ~n~ - Why I oughta...
+
+[CONT_10:SAL5]
+- Me? Revolt you? What? ~n~ - Yeah! Revolt!
+
+[CONT_13:SAL5]
+- My daddy was right when he said you were nothing but a fat slob... ~n~ - Yeah yeah yeah yeah...
+
+[CONT_43:SAL5]
+- So listen, this is important... ~n~ - Fuck you, Salvatore Leone,
+
+[CONT_31:SAL5]
+- you no dick bullying wife beating piece of Italian shit. ~n~ - Fuck me? Fuck you! In fact, everyone has!
+
+{=================================== MISSION TABLE SAL4 ===================================}
+
+[SAL4_I1:SAL4]
+~w~This strike will continue until I get some assurances from this city!
+
+[SAL4_I2:SAL4]
+~w~Mafiosi, thinking they can run the union, can think again!
+
+[SAL4_I3:SAL4]
+~w~They don't scare me!
+
+[SAL4_I4:SAL4]
+~w~I've got bigger balls than all of them!
+
+[SAL4_I5:SAL4]
+~w~Listen to this shit.
+
+[SAL4_I6:SAL4]
+~w~I should call a hit on this bitch. She's taking me for a ride!
+
+[SAL4_I7:SAL4]
+~w~...well two can play at that game.
+
+[SAL4_I8:SAL4]
+~w~Toni, you're gonna deliver a message for me!
+
+[SAL4_A2:SAL4]
+~w~Now remove the ~r~Chauffeur~w~ from the equation.
+
+[SAL4_A3:SAL4]
+~w~Hey!
+
+[SAL4_A4:SAL4]
+~w~Get in the ~b~Limo.
+
+[SAL4_A5:SAL4]
+~w~Get the Limo back to the ~y~Radio Station!
+
+[SAL4_A6:SAL4]
+~w~Now, wait for Hopper.
+
+[SAL4_A7:SAL4]
+~w~Put the Limo back in the correct position. Hopper must not suspect anything is wrong.
+
+[SAL4_B1:SAL4]
+~w~Harwood Ferry Station, and step on it!
+
+[SAL4_B2:SAL4]
+~w~You said it!
+
+[SAL4_C1:SAL4]
+~w~Scare the hell out of Hopper!
+
+[SAL4_C2:SAL4]
+Scare
+
+[SAL4S1:SAL4]
+~w~Hey, take it easy, we're not in a race!
+
+[SAL4S2:SAL4]
+~w~Are we going the right way?
+
+[SAL4S3:SAL4]
+~w~Hey, you're not my regular driver!
+
+[SAL4S4:SAL4]
+~w~Who the hell are you?!
+
+[SAL4S5:SAL4]
+~w~Shut up!
+
+[SAL4S6:SAL4]
+~w~From now on you do exactly what Salvatore Leone tells you to!
+
+[SAL4S7:SAL4]
+~w~Capiche?
+
+[SAL4S8:SAL4]
+~w~I... I refuse to be scared by this!
+
+[SAL4S9:SAL4]
+~w~We'll see!
+
+[SAL4S10:SAL4]
+~w~Let me out right now!
+
+[SAL4S11:SAL4]
+~w~Please! You'll kill us both!
+
+[SAL4S12:SAL4]
+~w~Noooooo!
+
+[SAL4S13:SAL4]
+~w~What did I do to deserve this?
+
+[SAL4_F1:SAL4]
+~w~Where's my limo?
+
+[SAL4_F2:SAL4]
+~w~You're not my driver, I'm calling the police!
+
+[SAL4_F3:SAL4]
+~r~Too late, Hopper is on to you!
+
+[SAL4_F4:SAL4]
+~w~Salvatore can get screwed!
+
+[SAL4_F5:SAL4]
+~r~The Limo's been destroyed!
+
+[SAL4_F6:SAL4]
+~r~Hopper is dead!
+
+[SAL4_F7:SAL4]
+~r~Hopper got away!
+
+[SAL4_F8:SAL4]
+~r~The beat up Limo spooked Hopper.
+
+[SAL4_F9:SAL4]
+~r~Hopper was spooked.
+
+[SAL4_P1:SAL4]
+~w~OK! OK! I've had enough!
+
+[SAL4P1A:SAL4]
+~w~I'll do whatever you want.
+
+[SAL4_P2:SAL4]
+~w~Take Hopper to the ~y~ferry station picket line.
+
+[SAL4_P3:SAL4]
+~w~And don't forget our little agreement, Lady!
+
+[SAL4_H1:SAL4]
+~w~A variety of speed, collisions, and stunt jumps should scare Hopper into submission.
+
+[SAL4_F0:SAL4]
+~r~Too late! Hopper has left the radio station!
+
+[SAL4_A:SAL4]
+~w~Make it to the ~y~Radio Station~w~ before Hopper leaves at 0~1~:00.
+
+[SAL4_A1:SAL4]
+~w~Make it to the ~y~Radio Station~w~ before Hopper leaves at ~1~:00.
+
+{=================================== MISSION TABLE SAL6 ===================================}
+
+[SAL6_A0:SAL6]
+~w~Toni, we got trouble. Big trouble!
+
+[SAL6_A1:SAL6]
+~w~What is it Sal?
+
+[SAL6_A3:SAL6]
+~w~They're kicking our asses!
+
+[SAL6_A4:SAL6]
+~w~We just finish one God-damn war and BANG! We're right in the middle of another!
+
+[SAL6_A5:SAL6]
+~w~I swear - just when things were looking up - I'm cursed! I'm fucking cursed!
+
+[SAL6_A6:SAL6]
+~w~Hey! Don't worry about a thing boss! I'll deal with this.
+
+[SAL6_AA:SAL6]
+~w~Sal has left the weapons you'll need in the garage.
+
+[SAL6_B:SAL6]
+~w~Stop the ~r~Diablo~w~ onslaught before all the Leone wise-guys are killed!
+
+[SAL6_1:SAL6]
+~w~Only ~1~ Leones are left alive!
+
+[SAL6_2:SAL6]
+~w~Only 1 Leone is left alive!
+
+[SAL6_C1:SAL6]
+~w~We're getting massacred here, Toni!
+
+[SAL6_C2:SAL6]
+~w~I don't get paid enough for this shit, man!
+
+[SAL6_C3:SAL6]
+~w~You're crazy Toni! We're all gonna die!
+
+[SAL6_E1:SAL6]
+~w~Sal?
+
+[SAL6_E2:SAL6]
+~w~Toni! Is it over? How'd it go?
+
+[SAL6_E3:SAL6]
+~w~It's not good Sal.
+
+[SAL6_E4:SAL6]
+~w~I saved a few guys, but we'd lost too many before I got here.
+
+[SAL6_E5:SAL6]
+~w~I think we're gonna lose this part of town.
+
+[SAL6_E6:SAL6]
+~w~Over my dead body! This ain't done yet!
+
+[SAL6_E7:SAL6]
+~w~I ain't losing shit! The Leones don't retreat from nothing!
+
+[SAL6_E8:SAL6]
+~w~Are you hearing me, Toni?
+
+[SAL6_E9:SAL6]
+~w~You said it Sal.
+
+[SAL6_G0:SAL6]
+~r~All of the Leone men are dead.
+
+[SAL6_Z1:SAL6]
+Leones
+
+[SAL6_Z2:SAL6]
+Diablos
+
+[SAL6_X0:SAL6]
+Got threat
+
+[SAL6_X1:SAL6]
+Had threat
+
+[SAL6_X2:SAL6]
+Find threat
+
+[SAL6_X3:SAL6]
+Complain
+
+[SAL6_C0:SAL6]
+~w~Screw them! Let's get the fuck outta here!
+
+[SAL6_A2:SAL6]
+~w~What's the world coming to? We got the Diablos crawling all over us in Hepburn!
+
+{=================================== MISSION TABLE SAL7 ===================================}
+
+[SAL7_01:SAL7]
+~w~Hey, Sal!
+
+[SAL7_02:SAL7]
+~w~Toni! What do you think of the new car?
+
+[SAL7_05:SAL7]
+~w~She's a beauty, huh? Fully loaded, top of the line.
+
+[SAL7_A6:SAL7]
+~w~...oh, yeah, Mid-Life Crisis!
+
+[SAL7_07:SAL7]
+~w~Shut up! Toni listen.
+
+[SAL7_08:SAL7]
+~w~I got a shit load of money that needs to be picked up from my warehouse down at Callahan Point.
+
+[SAL7_10:SAL7]
+~w~I don't trust anyone else to do this.
+
+[SAL7_11:SAL7]
+~w~Are you girls gonna talk all day, or are we driving?
+
+[SAL7_12:SAL7]
+~w~God-damn it woman! Did I tell you you could speak?
+
+[SAL7_20:SAL7]
+~w~Come on! Hurry up!
+
+[SAL7_21:SAL7]
+~w~Okay...
+
+[SAL7_22:SAL7]
+~w~Let's go!
+
+[SAL7_23:SAL7]
+~w~Hey, Toni! Come sta?
+
+[SAL7_30:SAL7]
+~w~Go to the ~y~warehouse.
+
+[SAL7_40:SAL7]
+~w~Collect all of Salvatore's money before it goes up in flames!
+
+[SAL7_50:SAL7]
+~w~Take the loot back to ~y~Salvatore's.
+
+[SAL7_NM:SAL7]
+~w~Get back in there! You haven't got all of the ~g~money.
+
+[SAL7_E1:SAL7]
+~w~Kill him!
+
+[SAL7_E2:SAL7]
+~w~Die!
+
+[SAL7_E3:SAL7]
+~w~There's one!
+
+[SAL7_E4:SAL7]
+~w~I can see him!
+
+[SAL7_T1:SAL7]
+~w~Back off!
+
+[SAL7_T2:SAL7]
+~w~How you feeling now!
+
+[SAL7_T3:SAL7]
+~w~Come on!
+
+[SAL7_T4:SAL7]
+~w~Eat this!
+
+[SAL7_F1:SAL7]
+~r~You didn't collect Salvatore's money in time!
+
+[SAL7_06:SAL7]
+~w~What's that smell?
+
+[SAL7_42:SAL7]
+~w~Collect the ~g~money~w~ before it goes up in flames!
+
+{=================================== MISSION TABLE SAL8 ===================================}
+
+[SAL8_VE:SAL8]
+~r~v1.2
+
+[SAL8_11:SAL8]
+~w~Get a car Toni and let's get moving...
+
+[SAL8_12:SAL8]
+~w~Head towards the ferry terminal.
+
+[SAL812A:SAL8]
+~w~But the strike's still on... there won't be any ferries.
+
+[SAL812B:SAL8]
+~w~Just drive. I'll do the thinking.
+
+[SAL8_14:SAL8]
+~w~Jesus Christ! The cops are crawling all over this place! Get us the fuck out of here!
+
+[SAL8_15:SAL8]
+~w~Where're we going?
+
+[SAL8_16:SAL8]
+~w~Callahan Bridge!
+
+[SAL816A:SAL8]
+~w~...Callahan Bridge ain't finished yet!
+
+[SAL816B:SAL8]
+~w~We're both gonna be finished if you don't drive! Now move it!
+
+[SAL816C:SAL8]
+~w~Head for ~y~Callahan Bridge.
+
+[SAL8_17:SAL8]
+~w~What the Hell are you doing?
+
+[SAL8_18:SAL8]
+~w~Toni! We're gonna need a car!
+
+[SAL818A:SAL8]
+~w~I ain't planning on walking outta here!
+
+[SAL8_19:SAL8]
+~w~You left ~b~Salvatore~w~ behind. Go back and get him!
+
+[SAL8_20:SAL8]
+~w~Get us out of here!
+
+[SAL8_22:SAL8]
+~w~Toni, you did it! I knew I could trust you!
+
+[SAL822B:SAL8]
+Now listen, I know a safe place where we can both lie low for a while.
+
+[SAL822C:SAL8]
+Come on let's go.
+
+[SAL8_25:SAL8]
+~w~We're gonna need everything this piece of shit's got! Punch it Toni!
+
+[SAL825A:SAL8]
+~w~OH, SHIIIIIIIIIIIIIT!
+
+[SAL8_26:SAL8]
+Jump Speed
+
+[SAL8_27:SAL8]
+~w~Yeah. This is the place.
+
+[SAL8_28:SAL8]
+~w~I'm gonna take a look around. See what's what.
+
+[SAL828A:SAL8]
+~w~I might see you here later.
+
+[SAL8_29:SAL8]
+~r~Sal was killed!
+
+[SAL829A:SAL8]
+~w~The cops have spotted you!
+
+[SAL831:SAL8]
+~w~Staunton safehouse now available!
+
+[SAL833:SAL8]
+~w~Get away from the cops!
+
+[SAL823A:SAL8]
+~w~Or has it?
+
+[SAL8_24:SAL8]
+~w~Although all the Subway and Ferry routes are now officially open,
+
+[SAL824A:SAL8]
+~w~militant workers are continuing with their blockade in parts of the city.
+
+[SAL824B:SAL8]
+~w~The Elevator Bridge connecting Staunton Island and Shoreside Vale has been shut down.
+
+[SAL824C:SAL8]
+~w~The strikers refuse to believe assurances made by city officials over the future of the ferries.
+
+[SAL824D:SAL8]
+~w~On a more positive note, the new Callahan bridge is nearing completion.
+
+[SAL824E:SAL8]
+~w~But, this Liberty City commuter couldn't face further delays.
+
+[SAL8_23:SAL8]
+~w~The industrial action that had cut off Portland from the rest of the city has finally come to an end.
+
+[SAL812C:SAL8]
+~w~Get to the ~y~ferry terminal.
+
+[SAL8WAN:SAL8]
+The cops REALLY want Salvatore! Re-spraying the vehicle will only put them off the scent for a short time.
+
+[SAL8_21:SAL8]
+~w~Head for the ~y~Bridge!
+
+[SAL830:SAL8]
+~w~Head over to the ~y~Safe House.
+
+[SAL822A:SAL8]
+~w~I could kiss you if you'd shaved!
+
+[SAL832:SAL8]
+~w~You need to get some wheels!
+
+[DRIV_01:SAL8]
+Well?
+
+[DRIV_02:SAL8]
+Well what?
+
+[DRIV_03:SAL8]
+Don't play dumb with me, kid.
+
+[DRIV_06:SAL8]
+I know what you've been saying about me.
+
+[DRIV_07:SAL8]
+You think I'm an idiot? Huh?
+
+[DRIV_08:SAL8]
+Is that what you think?
+
+[DRIV_09:SAL8]
+Boss, I ain't been saying nothin' about you.
+
+[DRIV_10:SAL8]
+What the fuck. I don't know what's happening to me.
+
+[DRIV_11:SAL8]
+Jesus.
+
+[DRIV_12:SAL8]
+I'm getting paranoid Toni. Really fucking paranoid.
+
+[DRIV_13:SAL8]
+Just because I think everyone hates me doesn't mean they don't, know what I mean?
+
+[DRIV_14:SAL8]
+Someone is out to get me. It's that fucking mayor!
+
+[DRIV_15:SAL8]
+He's gonna blame me for all the shit that's been going down in the neighborhood.
+
+[DRIV_16:SAL8]
+All of it! Not just the crap that I did but all of it.
+
+[DRIV_17:SAL8]
+Come on, let's go take care of this.
+
+[DRIV_04:SAL8]
+- I was playing dumb when your mother was still turning tricks. ~n~ - What's your problem?
+
+{=================================== MISSION TABLE JDT1 ===================================}
+
+[JDT1_CA:JDT1]
+~w~I'm sure the girls are ripping me off.
+
+[JDT1_CB:JDT1]
+~w~We'd better trawl the neighborhood and see what's up.
+
+[JDT1_DA:JDT1]
+~w~That's one of my girls!
+
+[JDT1_DB:JDT1]
+~w~Hey! I recognize that girl.
+
+[JDT1_DC:JDT1]
+~w~She's one of my girls.
+
+[JDT1_DD:JDT1]
+~w~That girl's one of ours.
+
+[JDT1_DE:JDT1]
+~w~That girl right there...
+
+[JDT1_DF:JDT1]
+~w~Stop near her.
+
+[JDT1_DG:JDT1]
+~w~Pull up next to her.
+
+[JDT1_DH:JDT1]
+~w~Let's pick her up.
+
+[JDT1_DI:JDT1]
+~w~Park right by her.
+
+[JDT1_DJ:JDT1]
+~w~Drive over to her.
+
+[JDT1_MA:JDT1]
+~w~Hi JD. I was just about to bring this to you, honest!
+
+[JDT1_MB:JDT1]
+~w~Jeez! Don't you trust me no-more JD?
+
+[JDT1_MC:JDT1]
+~w~Hey JD. It's been a slow day... this is all I got.
+
+[JDT1_MD:JDT1]
+~w~Talk about big brother! Here's your stinking money!
+
+[JDT1_ME:JDT1]
+~w~Hey JD. I got your money right here.
+
+[JDT1_MF:JDT1]
+~w~Did you think I wasn't gonna bring this to you or something?
+
+[JDT1_MG:JDT1]
+~w~Are you checking up on us girls JD.
+
+[JDT1_MH:JDT1]
+~w~It's all there... count it if you want!
+
+[JDT1_EA:JDT1]
+~w~Hey! That pimp is ripping off one of my girls!
+
+[JDT1_EB:JDT1]
+~w~Get the money back Toni!
+
+[JDT1_EC:JDT1]
+~w~What the hell is that pimp doing?
+
+[JDT1_ED:JDT1]
+~w~He's taking my money!
+
+[JDT1_EE:JDT1]
+~w~Get him Toni!
+
+[JDT1_45:JDT1]
+~w~Get the pimp's ~g~money.
+
+[JDT1_46:JDT1]
+~w~The pimp got away!
+
+[JDT1_FA:JDT1]
+~w~That's one of my girls in that car!
+
+[JDT1_FB:JDT1]
+~w~Reverse up to the ~b~car~w~, nice and close so I can get a look-see.
+
+[JDT1_FC:JDT1]
+~w~...nice and easy now, we don't want to disturb them!
+
+[JDT1_FD:JDT1]
+~w~Closer...
+
+[JDT1_FE:JDT1]
+~w~Closer...
+
+[JDT1_FF:JDT1]
+~w~Easy...
+
+[JDT1_IA:JDT1]
+~w~For crying out loud, Toni! You scared 'em off!
+
+[JDT1_GA:JDT1]
+~w~Jeez Toni! I can't see a God-damn thing!
+
+[JDT1_75:JDT1]
+~w~Wait for the ~b~girl~w~ to give JD her money!
+
+[JDT1_HA:JDT1]
+~w~...oh yeah!
+
+[JDT1_HB:JDT1]
+~w~Go on baby!
+
+[JDT1_HC:JDT1]
+~w~That's it. That's it.
+
+[JDT1_HD:JDT1]
+~w~...oh YEAH!
+
+[JDT1_HE:JDT1]
+~w~This is just beautiful!
+
+[JDT1_HF:JDT1]
+~w~Are we done here yet?
+
+[JDT1_JA:JDT1]
+~w~Nice work Toni!
+
+[JDT1_JB:JDT1]
+~w~I don't think the girls are gonna give me any more trouble on this shift.
+
+[JDT1_LA:JDT1]
+~w~Toni! You screwed this up big time!
+
+[JDT1_LB:JDT1]
+~w~I'm going back to the club!
+
+[JDT1_ML:JDT1]
+~w~$~1~ left to collect!
+
+[JDT1O01:JDT1]
+~w~Get in JD's ~b~van.
+
+[JDT1O02:JDT1]
+~w~You've left ~b~JD~w~ behind. Go back and get him!
+
+[JDT1O03:JDT1]
+~w~Wait for ~b~JD~w~ to get in.
+
+[JDT1O04:JDT1]
+~w~Search for JD's girls in the Red Light District.
+
+[JDT1O05:JDT1]
+~w~Go back to ~y~JD's club.
+
+[JDT1O07:JDT1]
+~w~Stop near the ~b~girl.
+
+[JDT1O08:JDT1]
+~w~Kill the ~r~pimp.
+
+[JDT1O09:JDT1]
+~w~Collect money from one of JD's ~b~girls.
+
+[JDT1_F1:JDT1]
+~r~JD's van has been destroyed!
+
+[JDT1_F2:JDT1]
+~r~JD's dead!
+
+[JDT1_F3:JDT1]
+~r~You didn't collect enough money during the shift!
+
+[JDT1_D1:JDT1]
+~w~JD's girls work in the ~y~Red Light District.~w~ Get back there!
+
+[JDT1_F4:JDT1]
+~r~Too many of JD's girls died!
+
+[JDT1_KA:JDT1]
+~w~What the hell was that?
+
+[JDT1_KB:JDT1]
+~w~Did we hit something?
+
+[JDT1_KC:JDT1]
+~w~Careful with the ride, Toni!
+
+[JDT1_81:JDT1]
+~w~You scared the John! He doesn't want an audience!
+
+[JDT1O10:JDT1]
+~w~Approach the ~b~car~w~ in the alleyway.
+
+[JDT1O11:JDT1]
+~w~Honk your horn to get their attention!
+
+[JDT1O12:JDT1]
+~w~The longer you leave the girl working, the more money she will make.
+
+[JDT1_MO:JDT1]
+Owed
+
+[JDT1_H1:JDT1]
+~w~Use the ~k~ ~VEHN~ to honk your horn.
+
+[JDT1_WA:JDT1]
+~w~Hurry up!~b~The girls'~w~ shift finishes at ~1~:~1~!
+
+[JDT1_WB:JDT1]
+~w~Hurry up! The girls' shift finishes at ~1~:~1~!
+
+[JDT1O06:JDT1]
+~w~Collect JD's money from his hookers. Be quick, their shift finishes at ~1~:~1~.
+
+[JDT1_WC:JDT1]
+~w~Hurry up!~b~The girls'~w~ shift finishes at ~1~:0~1~!
+
+[JDT1_WD:JDT1]
+~w~Hurry up! The girls' shift finishes at ~1~:0~1~!
+
+[JDT1P06:JDT1]
+~w~Collect JD's money from his hookers. Be quick, their shift finishes at ~1~:0~1~.
+
+[BONE_01:JDT1]
+Hey! JD get out here!
+
+[BONE_02:JDT1]
+Hey JD, you little sicko, get the fuck out here,
+
+[BONE_03:JDT1]
+before I come in there and break your legs!
+
+[BONE_04:JDT1]
+I'm coming... but not like that, ha ha ha!
+
+[BONE_05:JDT1]
+Hey, Toni, que pasa? Give us a hug.
+
+[BONE_06:JDT1]
+Woah, you're sticky!
+
+[BONE_07:JDT1]
+Oh, it's the stripper stuff they put all over me, you know.
+
+[BONE_08:JDT1]
+They like it, you know. They put it anywhere and uh... so, how you doing?
+
+[BONE_09:JDT1]
+What the fuck are you wearing?
+
+[BONE_10:JDT1]
+What, this? I'm an adventurous lover.
+
+[BONE_11:JDT1]
+You know I like... an experimental side, y'know?
+
+[BONE_16:JDT1]
+See, that's the problem. We are getting ripped off.
+
+[BONE_17:JDT1]
+Alright, now you wait here.
+
+[BONE_18:JDT1]
+I gotta go change out of, uh... this thing, you know.
+
+[BONE_19:JDT1]
+Hey Raven - time to put away the double ender.
+
+[BONE_20:JDT1]
+Hey Toni, let's you and me go for a drive.
+
+[BONE_21:JDT1]
+We got some things we gotta check out... Okay! Okay!
+
+[BONE_12:JDT1]
+- Nothing wrong with that, huh? You can watch if you like. ~n~- Oh, you're sick. You better shut the fuck up, right now.
+
+[BONE_14:JDT1]
+- Okay, relax Toni... ~n~ - Where's my money?
+
+{=================================== MISSION TABLE JDT2 ===================================}
+
+[JDT2_I1:JDT2]
+~w~Thank God you're here Toni!
+
+[JDT2_I2:JDT2]
+~w~I just had a tip off that the cops are gonna raid us!
+
+[JDT2_I3:JDT2]
+~w~So? You've got a license.
+
+[JDT2_I4:JDT2]
+~w~Not for some of the shit that goes on here!
+
+[JDT2_I5:JDT2]
+~w~Salvatore is here, paying my girls a... 'Special' visit... you know?
+
+[JDT2_I6:JDT2]
+~w~We gotta get him out of here before the cops arrive!
+
+[JDT2_I7:JDT2]
+~w~Meet him out front!
+
+[JDT2_I8:JDT2]
+~w~Never a dull moment.
+
+[JDT2_05:JDT2]
+~w~Get me the hell out of here!
+
+[JDT2_06:JDT2]
+~w~Toni? Lose the cops! I ain't taking these idiots home with me!
+
+[JDT2_A1:JDT2]
+~w~Get in the ~b~car.
+
+[JDT2_A2:JDT2]
+~w~Don't lose ~b~Salvatore!~w~ Go back and get him!
+
+[JDT2_A3:JDT2]
+~w~Take Salvatore ~y~home.
+
+[JDT2_A5:JDT2]
+~r~Salvatore is dead!
+
+[JDT2_C1:JDT2]
+~w~You did well today son. I like your style. I always have.
+
+[JDT2_C2:JDT2]
+~w~Thank you Mr. Leone.
+
+[JDT2_C3:JDT2]
+~w~You know, I think Vincenzo is taking up too much of your time.
+
+[JDT2_C4:JDT2]
+~w~I could use a good fella like you.
+
+[JDT2_C5:JDT2]
+~w~Gimme a call some time. Uncle Sal will take care of you.
+
+[JDT2_A9:JDT2]
+~r~Salvatore got busted!
+
+[JDT2_B2:JDT2]
+~w~Lose the cops!
+
+[JDT2_A6:JDT2]
+~w~Return to Salvatore's ~b~car~w~ before the cops bust him!
+
+[JDT2_F1:JDT2]
+~r~You lost Salvatore!
+
+[JDT2_A4:JDT2]
+~w~Drive Salvatore away from the club and lose the cops!
+
+{=================================== MISSION TABLE JDT3 ===================================}
+
+[JDT3_AA:JDT3]
+~w~Hey Toni, I can't come out right now, I'm busy... you know?
+
+[JDT3_AB:JDT3]
+~w~Why? What's going on in there? ...and what the hell is that smell?
+
+[JDT3_AC:JDT3]
+~w~Look, Toni, we're catering for some real ah... specialists today.
+
+[JDT3_AD:JDT3]
+~w~This stuff is internet gold-dust!
+
+[JDT3_AE:JDT3]
+~w~What you should be concerning yourself with is that Leone gaming house, up in Saint Mark's.
+
+[JDT3_AG:JDT3]
+~w~The Sindaccos are going nuts about it.
+
+[JDT3_AH:JDT3]
+~w~I heard they're gonna blow the place off the map.
+
+[JDT3_B:JDT3]
+~w~Take out the ~r~Sindacco saboteurs!
+
+[JDT3_C:JDT3]
+~r~They've~w~ planted a bomb outside the ~y~casino!
+
+[JDT3_D:JDT3]
+Bomb Explodes
+
+[JDT3_E:JDT3]
+~w~Another couple like that and the ~y~Casino's~w~ out of business!
+
+[JDT3_F:JDT3]
+~w~One more and the ~y~Casino's~w~ gone!
+
+[JDT3_H:JDT3]
+~w~More ~r~Sindaccos~w~ are on the way! Stop them!
+
+[JDT3_I:JDT3]
+~w~The truck-bomb's armed!
+
+[JDT3_J:JDT3]
+~w~The ~y~Casino~w~ is safe. Get out of there!
+
+[JDT3_K:JDT3]
+~w~They must have crippled the truck - it's stuck in low gear!
+
+[JDT3_L:JDT3]
+~r~Sindacco reinforcements~w~ are heading for the ~y~Casino!
+
+[JDT3_M:JDT3]
+~w~The ~r~Sindaccos~w~ haven't given up yet, more on the way!
+
+[JDT3_N:JDT3]
+~w~They're getting out. Don't let any ~r~Sindaccos~w~ escape!
+
+[JDT3_O:JDT3]
+Safe Distance
+
+[JDT3_P:JDT3]
+~w~The Sindaccos have rigged a huge truck bomb! They're going to take out the Casino in one go!
+
+[JDT3_Q:JDT3]
+~w~Defend the ~y~Casino.
+
+[JDT3_R:JDT3]
+~w~Check out the ~y~Casino.
+
+[JDT3_S:JDT3]
+~w~Stop the ~r~truck-bomb~w~ destroying the ~y~Casino!
+
+[JDT3_T:JDT3]
+~w~Get the ~r~truck~w~ away from the ~y~Casino~w~ before it blows!
+
+[JDT3_BA:JDT3]
+~w~Toni? It's JD.
+
+[JDT3_BB:JDT3]
+~w~Look, I just heard there's a bunch of Sindacco goons coming your way.
+
+[JDT3_BC:JDT3]
+~w~And they're packing, big-time!
+
+[JDT3_BD:JDT3]
+~w~Watch yourself!
+
+[JDT3_BE:JDT3]
+~w~Thanks JD!
+
+[JDT3_BF:JDT3]
+~w~Appreciate it.
+
+[JDT3_G:JDT3]
+~r~The Casino was destroyed!
+
+{=================================== MISSION TABLE JDT4 ===================================}
+
+[JDT4_3:JDT4]
+~w~The Sindaccos guarding the Doll's House will only trust ~h~Sindacco cars.
+
+[JDT4_A1:JDT4]
+~w~Classy, so you might lose at the tables, but you can bank on the ass!
+
+[JDT4_B0:JDT4]
+~w~Get a suitable vehicle and fit it with a bomb.
+
+[JDT4_B1:JDT4]
+~w~Get back in the ~b~vehicle~w~ with the bomb.
+
+[JDT4_B3:JDT4]
+~w~Now, leave the vehicle and get out of there.
+
+[JDT4_B4:JDT4]
+~w~Detonate the bomb!
+
+[JDT4_B5:JDT4]
+~w~Take the vehicle to the ~h~Bomb Shop~w~ and have it fitted with a bomb.
+
+[JDT4_B6:JDT4]
+~w~Don't get too close!
+
+[JDT4_C0:JDT4]
+~r~You were too close to the explosion.
+
+[JDT4_C1:JDT4]
+~w~This one is on JD!
+
+[JDT4_D0:JDT4]
+~w~Who is that?
+
+[JDT4_D2:JDT4]
+~w~Must be a new guy.
+
+[JDT4_0:JDT4]
+COUNTDOWN
+
+[JDT4_1:JDT4]
+~w~You can't fit a bomb to that!
+
+[JDT4_2:JDT4]
+~w~Follow the ~h~Bomb blip~w~ on the radar to find ~h~8-Ball's Bomb Shop.
+
+[JDT4_A0:JDT4]
+~w~So Toni, the Sindaccos' got this place - 'The Dolls House'.
+
+[JDT4_AA:JDT4]
+~w~It's a casino AND bordello in one.
+
+[JDT4_A2:JDT4]
+~w~Heh heh! Well, the place is key to their setup over here.
+
+[JDT4_A3:JDT4]
+~w~If you were to, uh... put it out of business, you know, uh... blow it up or something.
+
+[JDT4_A4:JDT4]
+~w~I'm telling you, we'll be golden with Salvatore!
+
+[JDT4_D1:JDT4]
+~w~I don't recognize him...
+
+[JDT4_B2:JDT4]
+~w~Take the vehicle and park it in the ~y~garage~w~ at 'The Doll's House'.
+
+[JDT4_B7:JDT4]
+~w~Drive carefully, if it gets too damaged it will explode!
+
+[JDT4_B8:JDT4]
+~w~Park the vehicle in the 'The Doll's House' ~y~garage.
+
+[JDT4_4:JDT4]
+~w~Press~h~ ~k~ ~PDFW~ ~w~to ~h~detonate~w~ the bomb.
+
+[JDT4_B9:JDT4]
+~w~The Sindaccos have defused the bomb!
+
+{=================================== MISSION TABLE JDT5 ===================================}
+
+[JDT5_B0:JDT5]
+~w~That's one of the guys that took Salvatore!
+
+[JDT5_D0:JDT5]
+~w~Where is he? In the trunk?
+
+[JDT5_D1:JDT5]
+~w~Good. We're taking him to the crusher. The boss wants him flatter than pizza.
+
+[JDT5_E0:JDT5]
+~w~They're onto you!
+
+[JDT5_E1:JDT5]
+~w~The ~b~car~w~ is unattended! Take it!
+
+[JDT5_E2:JDT5]
+~w~Take the car to ~y~Salvatore's.
+
+[JDT5_E3:JDT5]
+~w~Get back in the ~b~car.
+
+[JDT5_F0:JDT5]
+~w~Mmmphhh - mmmphhh - mpphh
+
+[JDT5_F3:JDT5]
+~w~Mmpphh - arrgghh - mmpphh
+
+[JDT5_F4:JDT5]
+~w~Mmpphh - arrgghh - arrggghh - arrg
+
+[JDT5_F5:JDT5]
+~w~Yarrgghh - yarragh - mmpphh
+
+[JDT5_G0:JDT5]
+~w~What kind of driving was that? You trying to kill me?
+
+[JDT5_G1:JDT5]
+~w~Mr. Leone. Boss. I'm sorry.
+
+[JDT5_G2:JDT5]
+~w~What can I tell ya?
+
+[JDT5_G4:JDT5]
+~w~I'll tear their fucking hearts out! This doesn't end here!
+
+[JDT5_G5:JDT5]
+~w~...for Christ sake Toni - you saved my ass - call me Sal!
+
+[JDT5_X0:JDT5]
+~r~It's hard to follow a dead man.
+
+[JDT5_X1:JDT5]
+~r~You lost him!
+
+[JDT5_F1:JDT5]
+~w~Is that you Mr. Leone? It's me, Toni.
+
+[JDT5_F2:JDT5]
+~w~Don't worry about a thing. I'm getting you out of there!
+
+[JDT5_G3:JDT5]
+~w~Sons of Bitches! They think they can do that to me!
+
+[JDT5_X2:JDT5]
+~r~Sal didn't make it!
+
+[JDT5_X4:JDT5]
+~r~He's onto you. You'll never find Sal now!
+
+[JDT5_X3:JDT5]
+~r~Salvatore was crushed!
+
+[JDT5_C:JDT5]
+~w~Follow the ~r~car~w~, but keep a low profile.
+
+[JDT5_E:JDT5]
+~w~Rescue Salvatore from the ~b~car~w~ before they crush it!
+
+[JDT5_0:JDT5]
+~w~If you shoot at the car you might hit Salvatore!
+
+[JDT5_H0:JDT5]
+~w~Follow the ~r~car,~w~ but don't get too close.
+
+[JDT5_H1:JDT5]
+~w~You're too close!
+
+[JDT5_H2:JDT5]
+~w~Don't get too far away and lose the ~r~car.
+
+[JDT5_H3:JDT5]
+~w~You're too far behind!
+
+[KIDN_01:JDT5]
+JD!
+
+[KIDN_02:JDT5]
+Toni, thank god you're here.
+
+[KIDN_03:JDT5]
+I'm sweating like my uncle in a school yard - my mind's going crazy.
+
+[KIDN_06:JDT5]
+Oh God I can't believe it, he is gonna cut my balls off.
+
+[KIDN_07:JDT5]
+He's gonna put them in a vice! Not necessarily in that order.
+
+[KIDN_08:JDT5]
+Oh God! I feel like the day the FBI searched my hard drive!
+
+[KIDN_13:JDT5]
+Oh God I can't believe this...
+
+[KIDN_14:JDT5]
+Why am I to blame?! It's not my fault.
+
+[KIDN_15:JDT5]
+But you know Salvatore, he's gonna get the vice squad on my ass.
+
+[KIDN_16:JDT5]
+Oh my God, it's gonna be like those statutory rape charges.
+
+[KIDN_17:JDT5]
+Have you ever been in prison on statutory rape charges, man?
+
+[KIDN_18:JDT5]
+They come in at you at the showers!
+
+[KIDN_19:JDT5]
+Oh God, and she was 18! Oh my God! This is gonna be worse!
+
+[KIDN_20:JDT5]
+Listen you babbling cock sucker. What in god's name is wrong?
+
+[KIDN_04:JDT5]
+- What are we gonna do? ~n~ - About what?
+
+[KIDN_11:JDT5]
+- No, no... See I got too many of those... ~n~ - What's going on?
+
+[KIDN_09:JDT5]
+Oh, my heart's racing. Have you got any vallion?
+
+[KIDN_10:JDT5]
+Or rohapnin? What about...
+
+[KIDN_21:JDT5]
+It's Salvatore. He was kidnapped while leaving the club.
+
+[KIDN_23:JDT5]
+Well why didn't you say so? Instead of making me listen to that crap. Come on.
+
+{=================================== MISSION TABLE JDT6 ===================================}
+
+[JDT6_A0:JDT6]
+~w~Thank God! Toni.
+
+[JDT6_A1:JDT6]
+~w~JD? Hey, I'm at the back of...
+
+[JDT6_A2:JDT6]
+~w~I know. I saw you go in. I've been praying you'd turn up!
+
+[JDT6_A3:JDT6]
+~w~Salvatore's gone ape-shit!
+
+[JDT6_A6:JDT6]
+~w~Make sure no harm comes to Salvatore.
+
+[JDT6_0:JDT6]
+Sal's Health
+
+[JDT6_1:JDT6]
+~r~Salvatore didn't make it.
+
+[JDT6_3:JDT6]
+~w~Salvatore will be here in ~1~ seconds.
+
+[JDT6_5:JDT6]
+~w~Protect ~b~Salvatore~w~ from the ~r~Sindaccos.
+
+[JDT6_6:JDT6]
+~w~One of ~b~Salvatore's guards~w~ is dead!
+
+[JDT6_7:JDT6]
+~w~Both of ~b~Salvatore's guards~w~ have been killed!
+
+[JDT6_8:JDT6]
+~w~It's the cops!
+
+[JDT6_10:JDT6]
+~w~Find a good vantage point before Salvatore gets here.
+
+[JDT6_11:JDT6]
+~w~Where are you going? Salvatore needs protection in the Red Light District.
+
+[JDT6_12:JDT6]
+Salvatore arrives
+
+[JDT6_D1:JDT6]
+~w~Hey...
+
+[JDT6_D4:JDT6]
+~w~Someone dropped a dollar!
+
+[JDT6_C0:JDT6]
+~w~Is that the best you got?
+
+[JDT6_C1:JDT6]
+~w~Come on!
+
+[JDT6_C2:JDT6]
+~w~You fight like pussies!
+
+[JDT6_C3:JDT6]
+~w~Oh, you want some!
+
+[JDT6_C4:JDT6]
+~w~Eat this!
+
+[JDT6_C5:JDT6]
+~w~You dirty rat bastards!
+
+[JDT6_C6:JDT6]
+~w~Top of the world Ma!
+
+[JDT6_A4:JDT6]
+~w~He's coming down here personally, to kill every Sindacco he can find...
+
+[JDT6_A5:JDT6]
+~w~...so I took a hike. Look, I've put a rifle on the roof across the street.
+
+[JDT6_9:JDT6]
+~w~Collect the ~g~sniper rifle~w~ on the roof.
+
+{=================================== MISSION TABLE JDT7 ===================================}
+
+[JDT7_VE:JDT7]
+~r~v1.00
+
+[JDT7_02:JDT7]
+~w~So, Salvatore cleaned house, huh... and now he's fixing up yours!
+
+[JDT7_03:JDT7]
+~w~It's all mine now, Toni!
+
+[JDT703A:JDT7]
+~w~Those cock-sucking Sindaccos all been kicked out.
+
+[JDT7_04:JDT7]
+~w~Listen, I hear the Sicilians are trying to broker peace between the families.
+
+[JDT7_4A:JDT7]
+~w~Sal's got some heavy up at his place right now.
+
+[JDT7_4B:JDT7]
+~w~The thing is; he smells a rat.
+
+[JDT7_4C:JDT7]
+~w~He wants someone to get up there and follow this guy, see where he goes.
+
+[JDT7_06:JDT7]
+~r~You failed to reach the helicopter in time, Massimo's already left!
+
+[JDT7_07:JDT7]
+~w~Follow ~r~Massimo.~w~ Don't lose him!
+
+[JDT7_08:JDT7]
+~r~He's~w~ going to get away!
+
+[JDT7_09:JDT7]
+~r~You let Massimo get away!
+
+[JDT7_10:JDT7]
+~w~The helicopter appears to be landing - don't get too close or you'll spook them..
+
+[JDT7_11:JDT7]
+~r~You got too close. You've been spotted!
+
+[JDT7_14:JDT7]
+~r~He's~w~ moving off... follow ~r~him~w~ again...
+
+[JDT7_15:JDT7]
+~w~Massimo~w~ looks to be landing up there...
+
+[JDT7_16:JDT7]
+~w~You'll need to get in ~y~closer...
+
+[JDT7_17:JDT7]
+~r~You've blown your cover!
+
+[JDT7_21:JDT7]
+~w~You've been spotted! Take out the ~r~Triads!
+
+[JDT7_12:JDT7]
+~w~Come siamo rimasti d'accordo,
+
+[JDT712A:JDT7]
+~w~if you do my associates work for them, you'll be well rewarded.
+
+[JDT7_13:JDT7]
+~w~...Hepburn Heights will belong to the Diablos.
+
+[JDT7_18:JDT7]
+~w~...so, keep quei bastardi dei Leone tied down in Portland,
+
+[JDT718A:JDT7]
+and when my associates control this city, you'll be taken care of.
+
+[JDT718B:JDT7]
+Ci pensiamo noi.
+
+[JDT7_20:JDT7]
+~w~Over there! It's a Leone!
+
+[JDT7_22:JDT7]
+Distance
+
+[JD_FIN:JDT7]
+~w~Finish off the ~r~Triads!
+
+[JDT7_05:JDT7]
+~w~Reach ~y~Salvatore's mansion~w~ before Massimo leaves!
+
+[JDT7O07:JDT7]
+~w~Reach ~y~Salvatore's mansion.~w~ Massimo is leaving at ~1~:~1~.
+
+[JDT7O08:JDT7]
+~w~It's nearly ~1~:~1~. Massimo is about leave!
+
+{=================================== MISSION TABLE JDT8 ===================================}
+
+[JDT8_A0:JDT8]
+~w~Toni... it's all happening today! I'm gonna be a 'Made Man', me!
+
+[JDT8_A1:JDT8]
+~w~JD the untouchable? God help us all!
+
+[JDT8_A2:JDT8]
+~w~I've waited a long time for this... it never woulda' happened without you Toni.
+
+[JDT8_A3:JDT8]
+~w~Hey! I'm crying over here! Come on!
+
+[JDT8_A4:JDT8]
+~w~Hey Mickey! How you doing?
+
+[JDT8_A5:JDT8]
+~w~I'm getting in the back... okay.
+
+[JDT8_C:JDT8]
+~w~Get in the ~b~car~w~ and drive JD to be 'Made'.
+
+[JDT8_C2:JDT8]
+~w~Get back in the ~b~car.
+
+[JDT8_C3:JDT8]
+~w~Drive to the ~y~ceremony.
+
+[JDT8_B0:JDT8]
+~w~Ah, Toni, I tell ya! I can't believe this is happening.
+
+[JDT8_B1:JDT8]
+~w~I've waited so long.
+
+[JDT8_B2:JDT8]
+~w~I slaved for the Sindaccos for years and nothing!
+
+[JDT8_B3:JDT8]
+~w~Those bastards kept me down
+
+[JDT8_B5:JDT8]
+~w~But Salvatore, god bless him, he don't let a little thing like that get in the way.
+
+[JDT8_B6:JDT8]
+~w~I tell ya!
+
+[JDT8_B7:JDT8]
+~w~This is great!
+
+[JDT8_B8:JDT8]
+~w~Toni, I'm so excited!
+
+[JDT8_B9:JDT8]
+~w~Toni, I don't even know what do to with myself I'm so excited!
+
+[JDT8_BA:JDT8]
+~w~Look at me, I can't believe this is happening!
+
+[JDT8_BB:JDT8]
+~w~Finally, huh Toni? To be a 'made man'!
+
+[JDT8_D1:JDT8]
+~w~Where's Salvatore?
+
+[JDT8_D2:JDT8]
+~w~Toni, the first drink's on me...
+
+[JDT8_D3:JDT8]
+~w~(PLACEHOLDER SFX) BANG!
+
+[JDT8_H0:JDT8]
+~w~Hey, the guy was a fucking rat.
+
+[JDT8_H1:JDT8]
+~w~He screwed over his own boss! Disgrazia'.
+
+[JDT8_H2:JDT8]
+~w~Salvatore could never have trusted that mother fucker.
+
+[JDT8_H3:JDT8]
+~w~Dump the fucking car in the river.
+
+[JDT8_H4:JDT8]
+~w~You can drop me off on the way.
+
+[JDT8_J:JDT8]
+~w~Get in the ~b~car~w~ and drive Mickey home.
+
+[JDT8_J1:JDT8]
+~w~The cops have spotted you with the car!
+
+[JDT8_J2:JDT8]
+~w~The cops have spotted you with the ~b~car!
+
+[JDT8_J3:JDT8]
+~w~Get back in the ~b~car!
+
+[JDT8_J4:JDT8]
+~w~Drop Mickey back at his ~y~place.
+
+[JDT8_K0:JDT8]
+~w~I'm getting the hell outta here!
+
+[JDT8_K1:JDT8]
+~w~Remember. Dump the car in the river.
+
+[JDT8_F:JDT8]
+~w~Dump the car in the river.
+
+[JDT8_F1:JDT8]
+~w~Dump the ~b~car~w~ in the river.
+
+[JDT8_G5:JDT8]
+~r~JD's dead!
+
+[JDT8_G6:JDT8]
+~r~Mickey's dead!
+
+[JDT8_G8:JDT8]
+~r~You were supposed to drive the car into the river.
+
+[JDT8_X0:JDT8]
+~w~Where are you going Toni?
+
+[JDT8_X3:JDT8]
+~w~We're gonna be late.
+
+[JDT8_X1:JDT8]
+~w~If the cops see the car like this, they'll pull us over for sure!
+
+[JDT8_X2:JDT8]
+~w~The ceremony's in Harwood.
+
+[JDT8_A6:JDT8]
+~w~Toni... it's all happening today!
+
+[JDT8_A7:JDT8]
+~w~I'm gonna be a 'Made Man', me!
+
+[JDT8_A8:JDT8]
+~w~JD the untouchable?
+
+[JDT8__1:JDT8]
+~w~I've waited a long time for this...
+
+[JDT8__2:JDT8]
+~w~It never woulda' happened without you Toni.
+
+[JDT8_A9:JDT8]
+~w~God help us all!
+
+[JDT8_D0:JDT8]
+~w~Hey, are we there?
+
+[JDT8_B4:JDT8]
+~w~just 'cause of a little Irish blood in my veins.
+
+[JDT8_G7:JDT8]
+~r~Your passengers are dead!
+
+[JDT8_C4:JDT8]
+~w~Take out the ~r~Sindacco hitmen~w~ before they whack JD!
+
+[JDT8_0:JDT8]
+~w~Re-spraying the car will buy you some time, but as soon as the cops see the stiff in the passenger seat, they'll be back on your tail.
+
+[JDT8_K:JDT8]
+~w~Oh daddy, no!
+
+[JDT8_BC:JDT8]
+~w~Toni, man, you've got to chill out.
+
+[JDT8_C5:JDT8]
+~w~Finish off the ~r~Sindacco hitmen.
+
+{=================================== MISSION TABLE MAC1 ===================================}
+
+[MAC1_AA:MAC1]
+~w~Ma?
+
+[MAC1_AB:MAC1]
+~w~It's me! I'm back!
+
+[MAC1_AC:MAC1]
+~w~Toni?... Where the hell have you been?
+
+[MAC1_AM:MAC1]
+~w~Not one phone call all the time you were away!
+
+[MAC1_AD:MAC1]
+~w~They don't have phones where you were?
+
+[MAC1_AE:MAC1]
+~w~Aw! Come on Ma! You know I couldn't call!
+
+[MAC1_AF:MAC1]
+~w~A real man would have called his mother.
+
+[MAC1_AG:MAC1]
+~w~You could learn a thing or two from Giovanni Casa.
+
+[MAC1_AN:MAC1]
+~w~He calls his mother every day,
+
+[MAC1_AH:MAC1]
+~w~Now, he's a good man.
+
+[MAC1_AO:MAC1]
+~w~and his Sicilian sausage is the best in town!
+
+[MAC1_AI:MAC1]
+~w~Casa! But Ma, Casa ain't no good man. He's a pervert!
+
+[MAC1_AJ:MAC1]
+~w~That's just a foul mouthed rumor! What kind of man are you, Toni?
+
+[MAC1_AK:MAC1]
+~w~Alright Ma, whatever you say.
+
+[MAC1_AL:MAC1]
+~w~Maybe I'll go give Giovanni a call... see what he's up to.
+
+[MAC1_HA:MAC1]
+~w~I think I'm in the mood for some luvin'
+
+[MAC1_17:MAC1]
+~w~Prove to your Ma that Giovanni Casa is no damn good!
+
+[MAC1_B:MAC1]
+~w~Head for your ~y~apartment ~w~to pick up your camera.
+
+[MAC1_B0:MAC1]
+~w~Go to ~y~Casa's deli.
+
+[MAC1B2:MAC1]
+~w~Nice shot! Now take the photo to ~y~Ma's place.
+
+[MAC1_B3:MAC1]
+~w~Sneak-up on ~r~Casa, ~w~then take the photo that will shame him!
+
+[MAC1_B5:MAC1]
+~w~Don't spook ~r~him.
+
+[MAC1_B6:MAC1]
+~r~You ran out of film! You didn't even get the shameful photo of Casa to take back to your Ma.
+
+[MAC1_B7:MAC1]
+~w~Pick up your ~g~camera.
+
+[MAC1_C0:MAC1]
+~w~Don't get too close or ~r~Casa~w~ will suspect something!
+
+[MAC1_C1:MAC1]
+~r~You've spooked him! Now you'll never get that photo!
+
+[MAC1_C2:MAC1]
+~r~Something's spooked Casa!
+
+[MAC1_C3:MAC1]
+~r~You've lost Casa!
+
+[MAC1_C4:MAC1]
+~r~Casa got wasted!
+
+[MAC1_C5:MAC1]
+~w~You're too close to ~r~Casa!
+
+[MAC1_C6:MAC1]
+~w~Don't lose ~r~Casa!
+
+[MAC1_D0:MAC1]
+~w~Looks like Casa's found some action.
+
+[MAC1_JA:MAC1]
+~w~Okay ladies! It's milk time!
+
+[MAC1_JB:MAC1]
+~w~Who's gonna be momma?
+
+[MAC1_JC:MAC1]
+~w~Oh my!
+
+[MAC1_IA:MAC1]
+~w~Okay ladies. Give me a minute here will ya.
+
+[MAC1_IB:MAC1]
+~w~I'm gonna change into something that's a little more... me.
+
+[MAC1_CA:MAC1]
+~w~Baby needs hug!
+
+[MAC1_CB:MAC1]
+~w~I made choc-choc!
+
+[MAC1_DA:MAC1]
+~w~Suck my dummy! Suck it!
+
+[MAC1_EA:MAC1]
+~w~Aw, come on girls! Get with the program!
+
+[MAC1_FA:MAC1]
+~w~SHIT! Someone's here!
+
+[MAC1_FB:MAC1]
+~w~Quick! Get in the van!
+
+[MAC1_GA:MAC1]
+~w~Oh God! Oh God!
+
+[MAC1_GB:MAC1]
+~w~DON'T - LOOK - AT - ME!
+
+[MAC1_BA:MAC1]
+~w~Hey Ma!
+
+[MAC1_BB:MAC1]
+~w~Take a look at my photo! It's of your 'good man' Giovanni Casa... wearing a goddamn diaper!
+
+[MAC1_BC:MAC1]
+~w~Is this how you spend your time?
+
+[MAC1_BD:MAC1]
+~w~Sneaking around in the woods taking pictures of men?
+
+[MAC1_BE:MAC1]
+~w~What's wrong with you Antonio? You shame me!
+
+[MAC1_BF:MAC1]
+~w~But!
+
+[MAC1_BG:MAC1]
+~w~And, diaper or no diaper, he's still a better man than you!
+
+[MAC1_B8:MAC1]
+~w~Now head outside.
+
+[MAC1_B1:MAC1]
+~w~Tail ~r~Casa~w~, but don't get too close.
+
+[MAC1_C7:MAC1]
+~w~Zoom in on ~r~Casa ~w~to take the photograph that will shame ~r~him.
+
+[MAC1_D1:MAC1]
+~w~Stay on ~r~Casa's~w~ tail. This could be a great photo opportunity.
+
+{=================================== MISSION TABLE MAC2 ===================================}
+
+[MAC2_AA:MAC2]
+~w~Ma!... Ma!... come on Ma... speak to me.
+
+[MAC2_AB:MAC2]
+~w~There's no 'Ma' here for you no more, you coward!
+
+[MAC2_AC:MAC2]
+~w~You can't fool me... I know why you don't move back in here.
+
+[MAC2_AD:MAC2]
+~w~You're running scared of some Triads!
+
+[MAC2_AE:MAC2]
+~w~Your father, God rest his soul, wouldn't let no one run him out of his own home.
+
+[MAC2_AF:MAC2]
+~w~But Ma!
+
+[MAC2_AG:MAC2]
+~w~But unlike you, your father wasn't yellow!
+
+[MAC2_AH:MAC2]
+~w~Until the Triads show you some respect, you're no son of mine!
+
+[MAC2_AI:MAC2]
+~w~A daughter maybe, but not a son.
+
+[MAC2_B1:MAC2]
+~w~Show Ma you're not scared of the Triads. Deal with the ~r~two Triad gangs~w~ in Chinatown!
+
+[MAC2_I1:MAC2]
+~w~A Triad gang leader's in that bulletproof ~r~fish van.~w~ Ram him off the road!
+
+[MAC2_I2:MAC2]
+~w~The ~r~van's ~w~running - and shedding its load! Watch out!
+
+[MAC2_I3:MAC2]
+~w~They're getting out! Take down the ~r~Triad ~w~scum!
+
+[MAC2_I4:MAC2]
+~w~You've been spotted! Waste all the ~r~Triad gang members!
+
+[MAC2_I5:MAC2]
+~w~You're in ~r~Triad~w~ territory. Be careful!
+
+[MAC2_I6:MAC2]
+~w~One down, one more to go. Take out the other ~r~gang!
+
+[MAC2_BA:MAC2]
+~w~Yeah! Are you watchin' Ma!
+
+[MAC2_BB:MAC2]
+~w~This is Toni Cipriani kicking your asses!
+
+[MAC2_BC:MAC2]
+~w~Remember that name fish heads!
+
+{=================================== MISSION TABLE MAC3 ===================================}
+
+[MAC3_A0:MAC3]
+~w~Ma? I'm back...
+
+[MAC3_A1:MAC3]
+~w~Look at you! You look so thin!
+
+[MAC3_A2:MAC3]
+~w~If you were still living here, with your mother, like a son should, you'd be eating right!
+
+[MAC3_A3:MAC3]
+~w~And look at those cars you drive!
+
+[MAC3_A4:MAC3]
+~w~You shame me, Antonio, really you do.
+
+[MAC3_A5:MAC3]
+~w~People will think I brought you up wrong!
+
+[MAC3_A6:MAC3]
+~w~What can I do Ma? You know I'd do anything for you.
+
+[MAC3_A7:MAC3]
+~w~That Sucho boy's racing downtown today.
+
+[MAC3_A8:MAC3]
+~w~If only you were more like him!
+
+[MAC3_A9:MAC3]
+~w~He treats his mother with real respect.
+
+[MAC3_AA:MAC3]
+~w~Of course, if your father was here, he'd win the race,
+
+[MAC3_AB:MAC3]
+~w~AND take the smug grin off that Sucho boy's face!
+
+[MAC3_AC:MAC3]
+~w~Yeah, he'd make him eat lead!
+
+[MAC3_AD:MAC3]
+~w~Ah! Your father was a real man! Big balls!
+
+[MAC3_B0:MAC3]
+~w~Prove you're more than a match for Sucho. Win the race, then take him out.
+
+[MAC3_C0:MAC3]
+~w~You beat ~r~Sucho~w~, now take him out!
+
+[MAC3_C1:MAC3]
+~r~He's~w~ making a run for it!
+
+[MAC3_X0:MAC3]
+~r~You let Sucho get away!
+
+[MAC3_C2:MAC3]
+~r~Sucho's~w~ getting away!
+
+{=================================== MISSION TABLE MAC4 ===================================}
+
+[MAC4_A0:MAC4]
+~w~Ma!... Ma!... are you there?
+
+[MAC4_A1:MAC4]
+~w~I ain't talking to you no more, Toni!
+
+[MAC4_A2:MAC4]
+~w~You shame your Sicilian roots!
+
+[MAC4_A3:MAC4]
+~w~After you took that photo of Casa, he stopped paying his protection money.
+
+[MAC4_A4:MAC4]
+~w~And what are you doing about it?
+
+[MAC4_A5:MAC4]
+~w~NOTHING!
+
+[MAC4_A6:MAC4]
+~w~Your father would have turned him into meatballs by now!
+
+[MAC4_A8:MAC4]
+~w~but it takes guts to snub a Cipriani!
+
+[MAC4_A9:MAC4]
+~w~I only wish you had his guts!
+
+[MAC4_AA:MAC4]
+~w~You wish I had Casa's guts?
+
+[MAC4_AB:MAC4]
+~w~Okay, Ma! You asked for 'em!
+
+[MAC4_B:MAC4]
+~w~Swing by ~y~Giovanni Casa's deli~w~ and 'persuade' him to take a little road trip with you.
+
+[MAC4_B0:MAC4]
+~w~Hi, Toni... how you doing?
+
+[MAC4_B1:MAC4]
+~w~What's up?
+
+[MAC4_B2:MAC4]
+~w~Cat got your tongue?
+
+[MAC4_B3:MAC4]
+~w~You and me are gonna talk, Casa...
+
+[MAC4_B4:MAC4]
+~w~Just somewhere more private.
+
+[MAC4_C:MAC4]
+~w~Don't let ~r~Casa~w~ get out alive.
+
+[MAC4_C1:MAC4]
+~w~I'll pay the protection money, Toni! I swear I will!
+
+[MAC4_C2:MAC4]
+~w~Aw! Come on, Toni! I'll give you anything you want!
+
+[MAC4_C3:MAC4]
+~w~I'll do anything Toni! Anything! Just don't hurt me!
+
+[MAC4_D1:MAC4]
+~w~Okay! Okay! You got me!
+
+[MAC4_D2:MAC4]
+~w~Okay! Okay! I give! I give! Just don't hurt me no more!
+
+[MAC4_D3:MAC4]
+~w~Come with me, ass-Head!
+
+[MAC4_E0:MAC4]
+~w~Take Casa to the ~y~sawmill.
+
+[MAC4_E1:MAC4]
+~w~Don't leave ~b~Casa!
+
+[MAC4_F0:MAC4]
+~w~So... er... where are we going?
+
+[MAC4_F1:MAC4]
+~w~We're still cool ain't we, Toni?
+
+[MAC4_F2:MAC4]
+~w~...I'll get you the money I owe... honest!
+
+[MAC4_F3:MAC4]
+I just need some time!
+
+[MAC4_F4:MAC4]
+~w~Does your Ma still like a spicy sausage?
+
+[MAC4_F5:MAC4]
+I can get her some, no problem!
+
+[MAC4_G0:MAC4]
+~w~So... erm... what do you wanna talk about, Toni?
+
+[MAC4_G1:MAC4]
+~w~Is it the protection money?
+
+[MAC4_G2:MAC4]
+~w~It is isn't it?
+
+[MAC4_G3:MAC4]
+~w~...Toni?
+
+[MAC4_G4:MAC4]
+~w~We can talk about this. Right, Toni?
+
+[MAC4_G6:MAC4]
+~w~People just don't talk enough these days, Toni.
+
+[MAC4_G7:MAC4]
+~w~Stand there and shut your yap, Casa.
+
+[MAC4_G8:MAC4]
+~w~Okay Toni! But I... I... don't feel comfortable.
+
+[MAC4_G9:MAC4]
+~w~Hey! Easy with that Toni! It's the on switch for the...
+
+[MAC4_GA:MAC4]
+~w~AAARRRGGGHHHHHHHH!
+
+[MAC4_GB:MAC4]
+~w~Get the hell out of here!
+
+[MAC4_H:MAC4]
+~w~Sicilian style 'Sausage meat a la Casa' is in the ~b~van~w~ waiting to be delivered back to Casa's own deli.
+
+[MAC4_H1:MAC4]
+~w~Take the delivery to ~y~Casa's deli.
+
+[MAC4_H2:MAC4]
+~w~Don't leave the ~b~van~w~ there!
+
+[MAC4_H3:MAC4]
+~w~Lose the cops!
+
+[MAC4_I0:MAC4]
+~w~Special sausage meat delivery?
+
+[MAC4_I1:MAC4]
+~w~No one told me about this!
+
+[MAC4_I2:MAC4]
+~w~Woah! Which zoo did we knock-off this time?
+
+[MAC4_I3:MAC4]
+~w~There's loads of meat back here!
+
+[MAC4_I4:MAC4]
+~w~...Mmmm! Tasty! Okay, I'll take them.
+
+[MAC4_I6:MAC4]
+~w~If he finds out about this, he'll go crazy!
+
+[MAC4_I7:MAC4]
+~w~Then I'd be screwed!
+
+[MAC4_X0:MAC4]
+~r~That was too quick and painless to be a Sicilian hit!
+
+[MAC4_X1:MAC4]
+~r~You were supposed to deliver the van!
+
+[MAC4_X2:MAC4]
+~r~You lost Casa!
+
+[MAC4_E2:MAC4]
+~w~Don't leave the ~y~sawmill!
+
+[MAC4_I5:MAC4]
+~w~It's a good thing Casa ain't here.
+
+[MAC4_G5:MAC4]
+~w~Yeah! Yeah! Talking is good.
+
+[MAC4_CN:MAC4]
+~w~Call the cops!
+
+[MAC4_CO:MAC4]
+~w~Get help!
+
+[MAC4_CP:MAC4]
+~w~Someone get help!
+
+[MAC4_CQ:MAC4]
+~w~Help!
+
+[MAC4_CR:MAC4]
+~w~Someone help me!
+
+[MAC4_CS:MAC4]
+~w~Get me outta here!
+
+[MAC4_A7:MAC4]
+~w~Casa might be a bit funny,
+
+[MAC4_C0:MAC4]
+~w~Can't we be civilized about this, Toni?
+
+[MAC4_1:MAC4]
+~w~Get closer to ~r~Casa ~w~by sneaking up behind ~r~him.
+
+{=================================== MISSION TABLE MAC5 ===================================}
+
+[MAC5_AA:MAC5]
+~w~Ma? You there?
+
+[MAC5_AB:MAC5]
+~w~Toni? ...I'm just on the phone...
+
+[MAC5_AC:MAC5]
+~w~...yeah he's here now... ok... ok... I'll stall him... bye.
+
+[MAC5_AD:MAC5]
+~w~Toni? Come to upset your mother again, huh?
+
+[MAC5_AE:MAC5]
+~w~You spend all day playing the tough guy.
+
+[MAC5_AF:MAC5]
+~w~You never come see me, or bring home any nice girls.
+
+[MAC5_AG:MAC5]
+~w~But, who'd want you anyway? You look so pasty and thin!
+
+[MAC5_AH:MAC5]
+~w~You're trying to kill me with the shame and the worry. ~w~Well no more.
+
+[MAC5_AI:MAC5]
+~w~From this point on... we're through.
+
+[MAC5_AJ:MAC5]
+~w~I've called a hit on you. It's really the only way, Antonio...
+
+[MAC5_AK:MAC5]
+~w~...you were always a disobedient boy.
+
+[MAC5_AL:MAC5]
+~w~What!? Ma!
+
+[MAC5_AM:MAC5]
+~w~It's for the best son... at least try to die like a real man!
+
+[MAC5_AN:MAC5]
+~w~Try to stop shaming me!
+
+[MAC5_B1:MAC5]
+~w~Ma's hitmen are here!
+
+[MAC5_B2:MAC5]
+~w~Show Ma you're more than a match for her ~r~hitmen.~w~ Kill them all!
+
+[MAC5_B3:MAC5]
+~w~They're really mad now! Eliminate ~r~them.
+
+[MAC5_B4:MAC5]
+~w~The ~r~hitmen~w~ know you're here. You must get far away from Saint Mark's!
+
+[MAC4_B6:MAC5]
+~w~More ~r~hitmen~w~ incoming! Get away from Saint Mark's. They know where you are!
+
+[MAC4_B7:MAC5]
+~w~GRENADE! RUN!
+
+[MAC5_C1:MAC5]
+~w~That's got rid of them... but now they've been paid, they'll see the job through, no matter how long it takes.
+
+[MAC5_C2:MAC5]
+~w~Be warned... they WILL be back!
+
+[HM1:MAC5]
+~w~They're not giving up! More ~r~hitmen~w~ are heading your way. Wipe them out!
+
+[HM2:MAC5]
+~w~Look out! ~r~Hitmen~w~ are closing on you. Waste them!
+
+[HM3:MAC5]
+~w~More ~r~hitmen~w~ are approaching. Blow them away!
+
+[HM4:MAC5]
+~w~More ~r~hitmen~w~ are on the way! Take them out!
+
+[MAC5_B5:MAC5]
+~w~Deal with the remaining ~r~hitmen~w~, but stay out of Saint Mark's!
+
+{=================================== MISSION TABLE MAR1 ===================================}
+
+[MAR1M1:MAR1]
+~w~You're late! Typical man.
+
+[MAR1M2:MAR1]
+~w~I want to go shopping, and you're driving.
+
+[MAR1M3:MAR1]
+~w~So help me, I'm gonna have some fun today. Even if it kills you!
+
+[MAR1M4:MAR1]
+~w~I just need to finish getting ready.
+
+[MAR1M5:MAR1]
+~w~Ah screw it! I'm gorgeous. Come on Toni!
+
+[MAR1_B:MAR1]
+~w~Take Maria to the ~y~shop.
+
+[MAR1_D:MAR1]
+~w~Wait here sexy, I won't be long...
+
+[MAR1_D2:MAR1]
+~w~But I just wanted to see what it looked like in the daylight!
+
+[MAR1_E:MAR1]
+~w~Let's get out of here!
+
+[MAR1_E3:MAR1]
+~w~Go back and get ~b~Maria.
+
+[MAR1_F:MAR1]
+~W~That was fun! But, I'm gonna need to pick up some more stuff.
+
+[MAR1_G:MAR1]
+~w~Keep the engine running...
+
+[MAR1_GB:MAR1]
+~w~Come on Maria! No more stealing!
+
+[MAR1_GC:MAR1]
+~w~Aw, hush Toni baby! That was all a misunderstanding back there!
+
+[MAR1_G2:MAR1]
+~w~I'm telling you, I don't have anything hidden up there!
+
+[MAR1_H:MAR1]
+~w~Get me back to my place!
+
+[MAR1_I:MAR1]
+~w~If you leave me here, I'll have Salvatore cut your balls off!
+
+[MAR1_J:MAR1]
+~r~Maria's dead! Oh, the humanity!
+
+[MAR1_K:MAR1]
+~w~Toni, honey, I had a great time today.
+
+[MAR1_K2:MAR1]
+~w~Maybe you can drop by later and we can have some more fun.
+
+[MAR1_K3:MAR1]
+~w~See ya later handsome!
+
+[MAR1_L:MAR1]
+~w~The cops are onto us! You'd better lose them!
+
+[MAR1_L2:MAR1]
+~w~I think you lost them! Lets go shopping!
+
+[MAR1_M:MAR1]
+~w~STOP THIEF!
+
+[MAR1EXT:MAR1]
+~w~Take Maria back to her ~y~apartment.
+
+[MAR1_1:MAR1]
+NONE
+
+[MAR1_D3:MAR1]
+~w~Take your God-damn hands off me!
+
+[MAR1_G3:MAR1]
+~w~Get the hell off me!
+
+[MAR1_E2:MAR1]
+~w~Lose the heat!
+
+{=================================== MISSION TABLE MAR2 ===================================}
+
+[MAR2_AA:MAR2]
+~w~Stop it! One of Salvatore's dogs is bringing me right over...
+
+[MAR2_AB:MAR2]
+~w~...oh, he's a charmer
+
+[MAR2_AC:MAR2]
+~w~Maybe too thin though.
+
+[MAR2_AE:MAR2]
+~w~So, listen, I wanna party, but the cupboard is bare.
+
+[MAR2_AF:MAR2]
+~w~You got some sugar? Pure cane huh?
+
+[MAR2_AG:MAR2]
+~w~Great. Ciao!
+
+[MAR2_AH:MAR2]
+~w~Come on Toni. I've got places I need to be.
+
+[MAR2_BA:MAR2]
+~w~Don't you have any wheels?
+
+[MAR2_BB:MAR2]
+~w~Let's move it. My dealer won't hang around all day.
+
+[MAR2_3F:MAR2]
+~w~Take Maria to see her ~y~dealer.
+
+[MAR2_BC:MAR2]
+~w~There they are. Just pull in behind them, there's a good boy.
+
+[MAR2_GA:MAR2]
+~w~You just wait here.
+
+[MAR2_GB:MAR2]
+~w~I'm not sure I like this.
+
+[MAR2_GC:MAR2]
+~w~It's sweet you're worried. But, I'm Salvatore's girl, I'll be fine.
+
+[MAR2_GE:MAR2]
+~w~I ain't going anywhere with you! Who the hell do you think you are?
+
+[MAR2_GF:MAR2]
+~w~Drive!
+
+[MAR2_GG:MAR2]
+~w~Toni!
+
+[MAR2_GH:MAR2]
+~w~Oh shit!
+
+[MAR2_19:MAR2]
+~w~Kill the ~r~Sindaccos!
+
+[MAR2_EA:MAR2]
+~w~Happy now?
+
+[MAR2_EB:MAR2]
+~w~Toni Cipriani. My Hero!
+
+[MAR2_EC:MAR2]
+~w~You know what? I'm all partied out. Take me home stud.
+
+[MAR2_HA:MAR2]
+~w~So uh, you wanna come up... for a... uh... coffee or somethin'?
+
+[MAR2_HB:MAR2]
+~w~I'll pass.
+
+[MAR2_HC:MAR2]
+~w~You sure? Well, call me.
+
+[MAR2_O2:MAR2]
+~w~Take Maria back to her ~y~apartment.
+
+[MAR2_CA:MAR2]
+~w~Come on, Toni!
+
+[MAR2_CB:MAR2]
+~w~For Christ-sake Toni, come on!
+
+[MAR2_CC:MAR2]
+~w~Save me, Toni!
+
+[MAR2_CD:MAR2]
+~w~Help!
+
+[MAR2_CE:MAR2]
+~w~Come ooonnnnnnn!
+
+[MAR2_FA:MAR2]
+~w~Who am I supposed to get my shit from now?
+
+[MAR2_FB:MAR2]
+~w~You suck, Toni!
+
+[MAR2_LM:MAR2]
+~w~You left ~b~Maria~w~ behind. Go back for her.
+
+[MAR2_MD:MAR2]
+~r~Maria died.
+
+[MAR2_WA:MAR2]
+~w~The ~r~dealers~w~ are getting away!
+
+[MAR2_DM:MAR2]
+~r~You lost the dealers!
+
+[MAR2_DA:MAR2]
+~w~Some hero you are!
+
+[MAR2_DF:MAR2]
+~r~You scared off Maria's dealers!
+
+[MAR2_18:MAR2]
+~w~Ram the ~r~Sindacco car~w~ to rescue Maria!
+
+[MAR2_AD:MAR2]
+~w~...yeah.
+
+{=================================== MISSION TABLE MAR3 ===================================}
+
+[MAR3_A0:MAR3]
+~w~Dear Toni, I've put myself up as the first prize in a street-race.
+
+[MAR3_A1:MAR3]
+~w~If Salvatore finds out about this we're both going to be in big trouble.
+
+[MAR3_A2:MAR3]
+~w~So you'd better come and save my ass... then maybe it'll belong to you!
+
+[MAR3_A3:MAR3]
+~w~Forever yours, Maria.
+
+[MAR3_E0:MAR3]
+~w~Come on Maria. Let's go.
+
+[MAR3_E1:MAR3]
+~w~Well, finally! Mr. Tough guy makes his move.
+
+[MAR3_E2:MAR3]
+~w~Look Maria. You're Salvatore's girl...
+
+[MAR3_E3:MAR3]
+~w~I'm my own girl!
+
+[MAR3_E4:MAR3]
+~w~...you're such a God-damn square!
+
+[MAR3_E5:MAR3]
+~w~Come on Wayne! Let's party!
+
+{=================================== MISSION TABLE MAR4 ===================================}
+
+[MAR4_B1:MAR4]
+~w~Wayne can be found with his gang in ~y~Chinatown.
+
+[MAR4_B2:MAR4]
+~w~Get over there and rub him out!
+
+[MAR4_C1:MAR4]
+~r~Wayne's~w~ escaping! Grab a bike and kill him!
+
+[MAR4_C3:MAR4]
+~w~You're losing him! Don't let ~r~Wayne ~w~get away!
+
+[MAR4_D1:MAR4]
+~w~Are you Wayne?
+
+[MAR4_D2:MAR4]
+~w~Who wants to know?
+
+[MAR4_D3:MAR4]
+~w~I'm a friend of Maria's.
+
+[MAR4_D4:MAR4]
+~w~...beating up on women get your motor running, huh?
+
+[MAR4_D5:MAR4]
+~w~That bitch had it coming!
+
+[MAR4_D6:MAR4]
+~w~Yeah? Well, now so do you!
+
+[MAR4_D7:MAR4]
+~w~Get him!
+
+[MAR4_T1:MAR4]
+~w~Come on tough guy!
+
+[MAR4_T2:MAR4]
+~w~You ain't got nothin'!
+
+[MAR4_T3:MAR4]
+~w~You can't ride a bike for shit!
+
+[MAR4_T4:MAR4]
+~w~If you ride close enough, you can kiss my ass!
+
+[MAR4_F1:MAR4]
+~r~You let Wayne get away!
+
+[MAR4_P1:MAR4]
+~w~You got the deadbeat!
+
+[MAR4_H1:MAR4]
+Wayne's Health
+
+[MAR4_C4:MAR4]
+~w~Don't lose ~r~Wayne. ~w~Chase him down and waste him!
+
+[BIK_01:MAR4]
+What have you taken now?
+
+[BIK_02:MAR4]
+Nothing.
+
+[BIK_03:MAR4]
+What was it this time, huh?
+
+[BIK_04:MAR4]
+Smack? Downers? Ludes? A little too much trumpet?
+
+[BIK_08:MAR4]
+Who did this to you?
+
+[BIK_09:MAR4]
+No one.
+
+[BIK_10:MAR4]
+Who was it?
+
+[BIK_11:MAR4]
+This guy I'm seeing, Wayne.
+
+[BIK_12:MAR4]
+Some guy you're seeing, you're my boss's girl!
+
+[BIK_13:MAR4]
+C'mon Toni, don't be so square, besides, he gets me this great speed, you know?
+
+[BIK_14:MAR4]
+A girl needs a lift.
+
+[BIK_15:MAR4]
+Plus it makes you really wild in bed.
+
+[BIK_16:MAR4]
+Shut up. Why did he do this to you,
+
+[BIK_17:MAR4]
+this dead prick Wayne?
+
+[BIK_18:MAR4]
+I told him I was in love with somebody else.
+
+[BIK_19:MAR4]
+I told him about me and you, Toni.
+
+[BIK_22:MAR4]
+Where is this Wayne?
+
+[BIK_23:MAR4]
+He deals at a bar down in Chinatown.
+
+[BIK_24:MAR4]
+I love you, Toni Cipriani.
+
+[BIK_06:MAR4]
+- A little too much sideways not enough up? ~n~ - Shut up Toni!
+
+[BIK_05:MAR4]
+Not enough Diceypam?
+
+[BIK_20:MAR4]
+- And then he hit me! ~n~ - There is no you and me! Christ, you're killing me.
+
+{=================================== MISSION TABLE MAR5 ===================================}
+
+[MAR5_EA:MAR5]
+~w~Why have you brought me here?
+
+[MAR5_EB:MAR5]
+~w~My stuff isn't here... this is where Wayne used to hang out.
+
+[MAR5_EC:MAR5]
+~w~... I remember! I've got some zap stashed in Hepburn Heights!
+
+[MAR5_ED:MAR5]
+~w~Hey, it's that bitch Maria! And that's the fuck who killed Wayne!
+
+[MAR5_AA:MAR5]
+~w~I hid the zap behind the trashcan!
+
+[MAR5_AB:MAR5]
+~w~Shit! The trash's been taken!
+
+[MAR5_AC:MAR5]
+~w~Wait! I remember! I've still got a stash at my apartment!
+
+[MAR5_AD:MAR5]
+~w~You're sure this time?
+
+[MAR5_AE:MAR5]
+~w~Of course I'm sure!
+
+[MAR5_BA:MAR5]
+~w~I meant Salvatore's place! I meant Salvatore's!
+
+[MAR5_BB:MAR5]
+~w~For crying out loud, Maria!
+
+[MAR5_FA:MAR5]
+~w~What kind of driver are you? That took ages! I could have OD'ed!
+
+[MAR5_FB:MAR5]
+~w~I'm a mess! I'm gonna need a new wardrobe, a little nip-and-tuck, the works!
+
+[MAR5_FC:MAR5]
+~w~Honey ...have you got some money?
+
+[MAR5_FD:MAR5]
+~w~Er... not really...
+
+[MAR5_FE:MAR5]
+~w~Well, what the hell have you been coming onto me for? I'm Salvatore's girl!
+
+[MAR5_FF:MAR5]
+~w~He's loaded! Don't you ever hit on me again!
+
+[MAR5_CA:MAR5]
+~w~(groan)
+
+[MAR5_CB:MAR5]
+~w~Oh shit, I think I'm gonna puke.
+
+[MAR5_CC:MAR5]
+~w~I'm really fucking high, Toni!
+
+[MAR5_CD:MAR5]
+~w~I don't feel too good.
+
+[MAR5_CE:MAR5]
+~w~You're driving too fast! And too slow!
+
+[MAR5_NC:MAR5]
+~b~Maria~w~ can barely walk. Get a ride!
+
+[MAR5_ND:MAR5]
+~w~Maria can barely walk. Get a ride!
+
+[MAR5_DA:MAR5]
+~w~We'll fuckin' kill you man!
+
+[MAR5_DB:MAR5]
+~w~You and the bitch die tonight!
+
+[MAR5_DC:MAR5]
+~w~You made a big mistake screwing with us!
+
+[MAR5_LM:MAR5]
+~w~You left ~b~Maria~w~ behind. Go back for her.
+
+[MAR5_O1:MAR5]
+~w~Take Maria to the diner at ~y~Callahan Point.
+
+[MAR5_O2:MAR5]
+~w~Take Maria to ~y~Hepburn Heights.
+
+[MAR5_O3:MAR5]
+~w~Take Maria to ~y~her apartment.
+
+[MAR5_O4:MAR5]
+~w~Take Maria to ~y~Salvatore's mansion.
+
+[MAR5_O5:MAR5]
+~w~Go back for ~b~Maria.
+
+[MAR5_MD:MAR5]
+~r~Maria died!
+
+[MAR5_O6:MAR5]
+~w~Pick ~b~Maria~w~ up.
+
+[OVER_01:MAR5]
+Oh hey baby... Oh I thought you'd never make it.
+
+[OVER_02:MAR5]
+What is wrong with you?
+
+[OVER_03:MAR5]
+Oops! Nothing, baby it's all good.
+
+[OVER_04:MAR5]
+Get up you crazy bitch. What have you taken now?
+
+[OVER_05:MAR5]
+Taken now? Nothing much.
+
+[OVER_06:MAR5]
+You know, a couple of, a couple of greens, a couple of heavy reds.
+
+[OVER_07:MAR5]
+Oh and these great pills I'm getting from Holland now.
+
+[OVER_08:MAR5]
+Pure as hell! I feel great.
+
+[OVER_09:MAR5]
+No, I don't.
+
+[OVER_10:MAR5]
+I need a zap, and I'll be fine!
+
+[OVER_11:MAR5]
+They're here somewhere.
+
+[OVER_12:MAR5]
+What's a zap?
+
+[OVER_13:MAR5]
+A zap? You don't know what a zap is?
+
+[OVER_14:MAR5]
+Ah, Toni, you are so square!
+
+[OVER_17:MAR5]
+I need a zap Toni! I'm gonna die!
+
+[OVER_18:MAR5]
+I felt like this before, I've OD'd.
+
+[OVER_19:MAR5]
+Get me a zap, Toni!
+
+[OVER_20:MAR5]
+I left them at the diner at Callahan Point.
+
+[OVER_21:MAR5]
+Don't just sit there then come on!
+
+[OVER_15:MAR5]
+- Toni, I love you. ~n~ - Come on, make sense.
+
+{=================================== MISSION TABLE VIC1 ===================================}
+
+[VIC1I11:VIC1]
+~w~I've got you a nice little place to stay, Toni.
+
+[VIC1I12:VIC1]
+~w~It's got you written all over it.
+
+[VIC1I13:VIC1]
+~w~We'll head there first.
+
+[VIC1I14:VIC1]
+~w~You're all heart.
+
+[VIC1_3:VIC1]
+~w~Drive Vincenzo to his ~y~warehouse.
+
+[VIC1_4:VIC1]
+~w~Get back in the ~b~car.
+
+[VIC1_5:VIC1]
+~w~Drive Vincenzo to the ~y~safehouse.
+
+[VIC1_6:VIC1]
+~w~Walk into the yellow marker in the ~y~doorway.
+
+[VIC1_7:VIC1]
+~w~Walk into the clothes icon to get a change of clothes.
+
+[VIC1_8:VIC1]
+~w~Rejoin Vincenzo outside.
+
+[VIC1_9:VIC1]
+~w~Take Vincenzo to ~y~Atlantic Quays.
+
+[VIC1_9A:VIC1]
+~w~Now take me to my place.
+
+[VIC1_10:VIC1]
+~w~Get in the ~b~car.
+
+[VIC1_D1:VIC1]
+~w~Jeezus Toni! You drive like a bitch!
+
+[VIC1_D2:VIC1]
+~w~Watch the God damn car!
+
+[VIC1_D3:VIC1]
+~w~Toni, stop disrespecting me, and drive like a man, marron!
+
+[VIC1_C1:VIC1]
+~w~This is it, Toni. 'Home sweet home'. Beautiful, ain't she?
+
+[VIC1_C2:VIC1]
+~w~This shit hole is supposed to be my home?
+
+[VIC1_C3:VIC1]
+~w~Oh! I think it's very you.
+
+[VIC1_C4:VIC1]
+~w~Now you're disrespecting old Vincenzo.
+
+[VIC1_C5:VIC1]
+~w~Now, tough guy, get your ass upstairs and go put on some decent clothes.
+
+[VIC1_C6:VIC1]
+~w~ I don't got all day, so move.
+
+[VIC1_C7:VIC1]
+~w~Hey, apartments cost money Toni.
+
+[VIC1_C8:VIC1]
+~w~Just you remember who pays the bills around here.
+
+[VIC1_C9:VIC1]
+~w~ME! Daddy Vincenzo over here.
+
+[VIC1C10:VIC1]
+~w~So, from now on, you work for me.
+
+[VIC1C11:VIC1]
+~w~So, I better see you back here real soon.
+
+[VIC1_F:VIC1]
+~r~Vincenzo is dead.
+
+[HOMS_01:VIC1]
+Hey... so there he is, huh?
+
+[HOMS_02:VIC1]
+So listen, Toni, I know you did a good thing for us,
+
+[HOMS_03:VIC1]
+and I know you've been lying low for a long time,
+
+[HOMS_04:VIC1]
+so I want you to take it easy for a while, huh?
+
+[HOMS_05:VIC1]
+Vincenzo will look after you.
+
+[HOMS_06:VIC1]
+You need some money, ask him.
+
+[HOMS_07:VIC1]
+You need a job - Lucky'll take care of you.
+
+[HOMS_08:VIC1]
+What more could a family guy ask for?
+
+[HOMS_09:VIC1]
+Even my son don't got it so good.
+
+[HOMS_10:VIC1]
+But, Mr. Leone, I thought we got history,
+
+[HOMS_11:VIC1]
+I mean I've done a lot for this family.
+
+[HOMS_12:VIC1]
+And now, you're expecting me to take orders from this... this... this...
+
+[HOMS_13:VIC1]
+Well it just doesn't seem... right.
+
+[HOMS_14:VIC1]
+Toni, I know what you did, and no one is more grateful than me, honestly,
+
+[HOMS_15:VIC1]
+but the idea that you walk in here
+
+[HOMS_16:VIC1]
+and start to question my leadership right away is, quite frankly,
+
+[HOMS_17:VIC1]
+out of order. Capiche?
+
+[HOMS_18:VIC1]
+I understand, boss.
+
+[HOMS_19:VIC1]
+So, when you need something, give Vincenzo a call down at Atlantic Quay.
+
+[HOMS_20:VIC1]
+He'll take care of you. Won't you, Lucky?
+
+[HOMS_21:VIC1]
+Of course, boss. Anything you say.
+
+[HOMS_22:VIC1]
+Tell you what; we can go there now.
+
+{=================================== MISSION TABLE VIC2 ===================================}
+
+[VIC2M2:VIC2]
+The lazy bastard ain't brought any cash in, in days.
+
+[VIC2M3:VIC2]
+Maybe he needs some encouragement to get off his ass and do some work.
+
+[VIC2M4:VIC2]
+Acting like a bitch... he kinda reminds me of you.
+
+[VIC2M5:VIC2]
+~w~What are you trying to say?
+
+[VIC2M6:VIC2]
+I ain't TRYING to say nothing!
+
+[VIC2M7:VIC2]
+I'm telling you to get over there and make sure this asshole starts bringing in some god damn money!
+
+[VIC2_B:VIC2]
+~W~Get some wheels.
+
+[VIC2OB1:VIC2]
+~w~Take the dealer to ~y~work.
+
+[VIC2_C:VIC2]
+~w~You're going to need wheels to get him to his regular patch!
+
+[VIC2_D:VIC2]
+~w~Pick up Vincenzo's dealer from ~y~St. Mark's district.
+
+[VIC2_E:VIC2]
+~w~So, Vincenzo tells me you're too chicken-shit to work your patch?
+
+[VIC2_E2:VIC2]
+~w~Hey man! I'm no chicken-shit!
+
+[VIC2_EX:VIC2]
+~w~I... er... I've been ill is all!
+
+[VIC2_E3:VIC2]
+~w~I'll go back to work tomorrow... or, maybe, the day after.
+
+[VIC2_E4:VIC2]
+~w~Oh, I think you're going to work today... like it or not!
+
+[VIC2_F:VIC2]
+~w~Hey! Don't leave me here! This is a bad neighborhood dude!
+
+[VIC2_F2:VIC2]
+~w~You left ~b~Vincenzo's dealer ~w~behind, go back and get him.
+
+[VIC2_G:VIC2]
+~w~Listen man! I told Vinnie already... Chinatown's no go for the Leones now!
+
+[VIC2_G2:VIC2]
+~w~The Sindaccos are moving in! If I go back there, I'm a dead man!
+
+[VIC2_G3:VIC2]
+~w~Sure... sure...
+
+[VIC2_G4:VIC2]
+~w~I'm telling you man! The Sindaccos are dealing.
+
+[VIC2_G5:VIC2]
+~w~I don't feel too good... I think I might have a fever or something.
+
+[VIC2_H:VIC2]
+~w~Stop near ~b~the dealer.
+
+[VIC2_I:VIC2]
+~w~Oh, man...
+
+[VIC2_J:VIC2]
+~r~Vincenzo's dealer got wasted!
+
+[VIC2_K:VIC2]
+~w~Take Vincenzo's dealer to ~y~Chinatown.
+
+[VIC2_1:VIC2]
+NONE
+
+[VIC2M1:VIC2]
+We've got a dealer, working our North Chinatown patch.
+
+{=================================== MISSION TABLE VIC3 ===================================}
+
+[VIC3_H1:VIC3]
+~w~Hold~h~ ~k~ ~PDLT~ ~w~to ~h~lock on to a target~w~, and press~h~ ~k~ ~PDFW~ ~w~to attack!
+
+[VIC3_H2:VIC3]
+~w~Press~h~ ~k~ ~PDFW~ ~w~to attack the ~h~dealer.
+
+[VIC3O2:VIC3]
+~w~Head over to ~y~Chinatown.
+
+[VIC3O3:VIC3]
+~w~Take out the ~r~dealer.
+
+[VIC3_1:VIC3]
+~w~Vincenzo's left you a present that might help.
+
+[VIC3_BA:VIC3]
+~w~Stay off Leone turf asshole!
+
+[VIC3_BB:VIC3]
+~w~You want some more, ass-head?
+
+[VIC3_BC:VIC3]
+~w~The Leone's deal in this city! Nobody else! You hear me, you Sindacco fucks?
+
+[VIC3_6:VIC3]
+~w~Sindaccos are dealing all over Chinatown.
+
+[VIC3_AA:VIC3]
+~w~Vinnie?
+
+[VIC3_AB:VIC3]
+~w~For crying out loud, Toni! Don't I get any peace?
+
+[VIC3_AD:VIC3]
+~w~I'm already all blocked up, last thing I need is you on my case
+
+[VIC3_AE:VIC3]
+~w~but as you're still here, you know, I'm still not seeing any money
+
+[VIC3_AF:VIC3]
+~w~coming in from that dealer. You know why?
+
+[VIC3_AG:VIC3]
+~w~Enlighten me.
+
+[VIC3_AJ:VIC3]
+~w~The Sindaccos have started dealing, and on Leone turf too!
+
+[VIC3_AK:VIC3]
+~w~You gonna accept that Toni?
+
+[VIC3_AL:VIC3]
+~w~I want you to get over to Chinatown!
+
+[VIC3_AM:VIC3]
+~w~Alright, 'Boss', I'm on it.
+
+[VIC3_AN:VIC3]
+~w~Aw God! Why's there never any God-damn paper in here?
+
+[VIC3_AH:VIC3]
+~w~'Cause he's dead, Idiot! Some chump whacked him.
+
+[VIC3O4:VIC3]
+~r~Sindaccos~w~ are dealing all over Chinatown. Teach them a lesson they won't forget!
+
+{=================================== MISSION TABLE VIC4 ===================================}
+
+[VIC4_H2:VIC4]
+~w~Follow the ~h~Spray Can blip~w~ on the radar to find the ~h~Pay 'n' Spray.
+
+[VIC4_A2:VIC4]
+~w~Stand in the ~h~marker~w~ to view the available weapons.
+
+[VIC4_A3:VIC4]
+~w~Select different weapons by using~h~ ~k~ ~AMMOV~.
+
+[VIC4_A4:VIC4]
+~w~Buy the current weapon by pressing~h~ ~k~ ~AMBUY~ ~w~- but only if you have enough cash!
+
+[VIC4_A6:VIC4]
+~w~There are eight types of weapon that you can use.
+
+[VIC4_A7:VIC4]
+~w~You can only carry one of each type at a time: one type of pistol, one type of shotgun, etc.
+
+[VIC4_H1:VIC4]
+~w~Follow the ~h~Gun blip~w~ on the radar to find ~h~Ammu-Nation.
+
+[VIC4_H3:VIC4]
+~w~Follow the ~h~Gun blip~w~ on the radar to find ~h~Ammu-Nation~w~ again.
+
+[VIC4_AB:VIC4]
+~w~Difficult to forget...
+
+[VIC4_AD:VIC4]
+~w~The interesting thing is, he wants to be a Leone now.
+
+[VIC4_AE:VIC4]
+~w~Fuck him! He made his choice.
+
+[VIC4_AG:VIC4]
+~w~Hello Brain-cell! Jeez, Toni, Sal said you was dumb muscle,
+
+[VIC4_AH:VIC4]
+~w~but I didn't think anyone was that dumb.
+
+[VIC4_AJ:VIC4]
+~w~He's gonna be our boy on the inside.
+
+[VIC4_AK:VIC4]
+~w~There's just one thing.
+
+[VIC4_AL:VIC4]
+~w~He's being sat on by some Sindacco ape.
+
+[VIC4_AM:VIC4]
+~w~I want you to remove this little obstacle
+
+[VIC4_AN:VIC4]
+~w~and get JD on our side. Capiche?
+
+[VIC4_2:VIC4]
+~w~Take the ~g~cell phone~w~ as proof you've done the job.
+
+[VIC4_BA:VIC4]
+~w~Toni... oh you just gave me some great snuff footage!
+
+[VIC4_BB:VIC4]
+~w~JD? You saw that? YOU'RE FILMING ME?!
+
+[VIC4_BC:VIC4]
+~w~Aw, I was just... it's for my own use!
+
+[VIC4_BD:VIC4]
+~w~I can't wait 'till we're on the same team!
+
+[VIC4_BE:VIC4]
+~w~Don't get too excited. You still owe me money.
+
+[VIC4_BF:VIC4]
+~w~Take that Sindacco chump's car as a deposit, uh?
+
+[VIC4_BG:VIC4]
+~w~Just re-spray it so no one recognizes it.
+
+[VIC4_BH:VIC4]
+~w~I'll take care of his body.
+
+[VIC4_CA:VIC4]
+~w~Hey! Get outta here!
+
+[VIC4_CB:VIC4]
+~w~You ain't got no business here!
+
+[VIC4_61:VIC4]
+~w~Get in the ~b~car.
+
+[VIC4_62:VIC4]
+~w~Drive to the Pay 'n' Spray.
+
+[VIC4_DC:VIC4]
+~r~JD told you to have the car resprayed!
+
+[VIC4_PR:VIC4]
+--ring ring--
+
+[VIC4O1A:VIC4]
+~w~Go ~y~inside.
+
+[VIC4_O2:VIC4]
+~w~Buy a pistol.
+
+[VIC4_O4:VIC4]
+~w~Kill the ~r~Sindacco ape.
+
+[VIC4_FA:VIC4]
+~r~He isn't going to sell you a gun now!
+
+[VIC4_O3:VIC4]
+~w~Head for the ~y~construction site.
+
+[VIC4_AC:VIC4]
+~w~He's currently running a Sindacco-controlled titty-bar, I mean gentleman's club.
+
+[VIC4_AA:VIC4]
+~w~Hey, remember JD O'Toole?
+
+[VIC4_AI:VIC4]
+~w~We can use JD to get the drop on Sindacco plans.
+
+[HELP42:VIC4]
+~w~While targeting, tap~h~ ~k~ ~FREE1~ ~w~to enter ~h~Free Aim mode~w~, then use the~h~ ~k~ ~FREE2~ ~w~to adjust your aim.
+
+[VIC4_A1:VIC4]
+~w~Go to the local ~y~Ammu-Nation~w~ to get a gun.
+
+[VIC4_O1:VIC4]
+~w~Go back to ~y~Ammu-Nation~w~ and get a gun.
+
+[VIC4_1:VIC4]
+~w~The ~r~Sindacco heavy~w~ is at the rear of the construction site. Kill him!
+
+{=================================== MISSION TABLE VIC5 ===================================}
+
+[VIC5_H:VIC5]
+Leone
+
+[VIC5_I0:VIC5]
+~w~Oh, it's you.
+
+[VIC5_I1:VIC5]
+~w~Yeah, how 'bout that. It's me. What-do-ya-know!
+
+[VIC5_I2:VIC5]
+~w~I'll tell you what I know tough guy.
+
+[VIC5_I3:VIC5]
+~w~Some of our boys have screwed up a simple, no brain, fucking job.
+
+[VIC5_I4:VIC5]
+~w~Lousy bastards can't even pull off a simple raid.
+
+[VIC5_I5:VIC5]
+~w~Now the cops have got them pinned down in Chinatown.
+
+[VIC5_I6:VIC5]
+~w~Marron! Why am I surrounded by so many fucking idiots?
+
+[VIC5_I7:VIC5]
+~w~I don't know... 'birds of a feather'?
+
+[VIC5_I8:VIC5]
+~w~Oh, you're a fucking comedian!
+
+[VIC5_I9:VIC5]
+~w~Well laugh this off wise-guy.
+
+[VIC5I10:VIC5]
+~w~You're the one who's gonna clean this shit up for me!
+
+[VIC5I11:VIC5]
+~w~Now, get over there and drag those morons back here!
+
+[VIC5_F1:VIC5]
+~r~One of the gang is dead.
+
+[VIC5_G0:VIC5]
+~w~Get a four seater car.
+
+[VIC5_O1:VIC5]
+~w~Go and rescue ~b~Vincenzo's men.
+
+[VIC5_O2:VIC5]
+~w~Get ~b~the gang~w~ out of there!
+
+[VIC5_O3:VIC5]
+~w~Lose the cops!
+
+[VIC5_O4:VIC5]
+~w~Take the gang to ~y~Vincenzo's.
+
+[VIC5_O5:VIC5]
+~w~Keep ~b~the gang~w~ together!
+
+[VIC5_O6:VIC5]
+~w~You need a vehicle with more room!
+
+[VIC5_G1:VIC5]
+~w~What are we gonna do?
+
+[VIC5_G2:VIC5]
+~w~We're screwed!
+
+[VIC5_G3:VIC5]
+~w~I ain't doing time for that bastard Vincenzo!
+
+[VIC5_G4:VIC5]
+~w~Let's get the fuck out of here!
+
+[VIC5_G5:VIC5]
+~w~Wait for me!
+
+[VIC5_G6:VIC5]
+~w~Floor it Toni!
+
+[VIC5_E1:VIC5]
+~w~So, did you get the money?
+
+[VIC5_E2:VIC5]
+~w~We got it all boss...
+
+[VIC5_E3:VIC5]
+~w~Hey, listen, there was nothing we could do...
+
+[VIC5_E4:VIC5]
+~w~...there was nothing you could do.
+
+[VIC5_E5:VIC5]
+~w~Things got fucked up... it couldn't have been worse.
+
+[VIC5_E6:VIC5]
+~w~What do you think... are things better now, or worse?
+
+[VIC5_E7:VIC5]
+~w~If you fuck it up for me, ever again, things will get worse for you too!
+
+[VIC5_E8:VIC5]
+~w~Now clear that shit up, and get outta my sight.
+
+[VIC5_E9:VIC5]
+~w~I've got a call to make.
+
+[VIC5E10:VIC5]
+~w~I swear to God Toni, the day you came back my luck turned to shit.
+
+[VIC5E11:VIC5]
+~w~You're like a bad fucking penny.
+
+{=================================== MISSION TABLE VIC6 ===================================}
+
+[VIC6_BA:VIC6]
+~w~Freeze!
+
+[VIC6_BB:VIC6]
+~w~Don't move asshole!
+
+[VIC6_P0:VIC6]
+~w~Collect Vincenzo's ~b~car.
+
+[VIC6_P1:VIC6]
+~w~It's a police trap! Get the car out of there!
+
+[VIC6_P2:VIC6]
+~w~Lose the cops!
+
+[VIC6_P3:VIC6]
+~w~You lost the cops! Now ~w~deliver the car to Vincenzo's ~y~lock-up.
+
+[VIC6_P4:VIC6]
+~w~Teach Vincenzo never to mess around with you again - crush his ~b~car!
+
+[VIC6_P5:VIC6]
+~w~Get back in Vincenzo's ~b~car!
+
+[VIC6_P6:VIC6]
+~w~Deliver the car to Vincenzo's ~y~lock-up.
+
+[VIC6_PA:VIC6]
+~r~You destroyed the car!
+
+[VIC6_D1:VIC6]
+~w~Get in the ~b~car.
+
+[VIC6_D3:VIC6]
+~w~Drive to the ~y~car crusher.
+
+[VIC6_D4:VIC6]
+~w~Get out and wait for the crusher to do its thing.
+
+[VIC6_D5:VIC6]
+~r~You should have crushed the car!
+
+[VIC6_AA:VIC6]
+~w~Hey! Toni, how's the car?
+
+[VIC6_AB:VIC6]
+~w~You son of a bitch, Vinnie! You set me up!
+
+[VIC6_AC:VIC6]
+~w~Set you up? SET YOU UP?
+
+[VIC6_AD:VIC6]
+~w~When you came back to the city you had nothing! NOTHING!
+
+[VIC6_AE:VIC6]
+~w~I set you up alright, you ungrateful bastard!
+
+[VIC6_AF:VIC6]
+~w~With an apartment and a job!
+
+[VIC6_AG:VIC6]
+~w~And for that generosity I expect you to take a few risks now and then.
+
+[VIC6_AH:VIC6]
+~w~I ain't a charity, pal, okay? And I ain't your sugar daddy.
+
+[VIC6_AI:VIC6]
+~w~So the police were watching the car! Screw the police!
+
+[VIC6_AJ:VIC6]
+~w~When I tell you to do something, you do it. Capiche?
+
+[VIC6_AK:VIC6]
+~w~Oh, yeah, I understand Vinnie.
+
+[VIC6_AL:VIC6]
+~w~I understand that as long as I work for you, I get treated like a bitch.
+
+[VIC6_AM:VIC6]
+~w~I was making scores while you were looking up girl's skirts.
+
+[VIC6_AN:VIC6]
+~w~Have your bitch job back, 'boss'. I quit.
+
+[VIC6_AO:VIC6]
+~w~Toni, you're making a big...
+
+[VIC6_D2:VIC6]
+~w~Stop in the ~y~marker.
+
+[HOTW_01:VIC6]
+Sure, momma. I'll call you later.
+
+[HOTW_28:VIC6]
+Vincenzo!
+
+[HOTW_02:VIC6]
+Yeah of course, of course I'm being a good boy.
+
+[HOTW_03:VIC6]
+Love you.
+
+[HOTW_04:VIC6]
+Hey, Cheryl, hey sweetheart, give it a rest now.
+
+[HOTW_05:VIC6]
+Here now get out of here.
+
+[HOTW_06:VIC6]
+A little trumpetto for you.
+
+[HOTW_11:VIC6]
+You're disgusting. Where's your respect?
+
+[HOTW_12:VIC6]
+Respect? I call it multi tasking, Antonio.
+
+[HOTW_15:VIC6]
+Cause if it's a problem, I can get Ray to help you out.
+
+[HOTW_16:VIC6]
+Fuck you.
+
+[HOTW_17:VIC6]
+I'm just busting your balls, relax.
+
+[HOTW_18:VIC6]
+Listen, tough guy - I need you to do me a favor.
+
+[HOTW_19:VIC6]
+I got girls crazy for blow; I got a car full of it parked in Trenton.
+
+[HOTW_20:VIC6]
+Go pick it up... give me a call.
+
+[HOTW_21:VIC6]
+What am I? Your driver? Screw you.
+
+[HOTW_22:VIC6]
+Listen, listen, listen, listen....
+
+[HOTW_23:VIC6]
+I'd do it myself, but I'm being watched by the feds.
+
+[HOTW_24:VIC6]
+You know I'll look out for you. Trust me.
+
+[HOTW_25:VIC6]
+Besides, remember there's a hierarchy here, Capiche? Now be a good kid!
+
+[HOTW_07:VIC6]
+- Hey who loves you, angel? ~n~ - You do, Vinnie.
+
+[HOTW_09:VIC6]
+- Was that your mother on the phone? ~n~ - Sure.
+
+[HOTW_13:VIC6]
+- What, don't you like getting a hot broad to suck you off? ~n~ - What?
+
+{=================================== MISSION TABLE VIC7 ===================================}
+
+[VIC7_VE:VIC7]
+~r~v1.01
+
+[VIC7_1:VIC7]
+~w~Vinnie, I'm here! Where the hell are you? What is this?
+
+[VIC7_2:VIC7]
+~w~Toni? Com esta? ....I knew you'd call.
+
+[VIC7_3:VIC7]
+~w~Listen, I'm down at the Portland docks
+
+[VIC7_3A:VIC7]
+~w~We got a big shipment just come in. Get yourself down here. I'm onboard the big freighter.
+
+[VIC7_3B:VIC7]
+~w~I don't know Vinnie... I got stuff to do.
+
+[VIC7_3D:VIC7]
+~w~But, from now on we'll be like partners.. okay. Better than partners... brothers!
+
+[VIC7_3E:VIC7]
+~w~So, come on. What do you say? It's what Salvatore wants.
+
+[VIC7_3F:VIC7]
+~w~Okay. For Salvatore.
+
+[VIC7_3G:VIC7]
+~w~But if you pull any of that daddy bullshit, you're a dead man.
+
+[VIC7_4:VIC7]
+~w~Wahaahha! I'm gonna cut you up little man!
+
+[VIC7_4A:VIC7]
+~w~Meet Vincenzo at the ~y~Freighter.
+
+[VIC7_5:VIC7]
+~w~Diiiiiiiiieee!
+
+[VIC7_6:VIC7]
+~w~Hahahahahaha!
+
+[VIC7_7:VIC7]
+~w~Is that dumb-ass gimp dead yet?
+
+[VIC7_8:VIC7]
+~w~Hate to disappoint you Vinnie.
+
+[VIC7_9:VIC7]
+~w~You son of a bitch! Why can't you just die already?
+
+[VIC7_10:VIC7]
+~w~You should have never come back Toni.
+
+[VIC710A:VIC7]
+~w~I've worked my fingers to the bone for Salvatore.
+
+[VIC710B:VIC7]
+~w~And you just come wandering back to town and he's all, Toni this, and Toni that!
+
+[VIC7_11:VIC7]
+~w~This is my town Toni! MY TOWN!
+
+[VIC711A:VIC7]
+~w~You ain't taking it away from me!
+
+[VIC7_12:VIC7]
+~w~I'm gonna enjoy this.
+
+[VIC7_4B:VIC7]
+~w~The place looks deserted. Board the ~y~ship.
+
+[VIC7_13:VIC7]
+~w~Head for the ~y~exit.
+
+[VIC7_3C:VIC7]
+~w~Look, I know I've been an asshole to you Toni. And for that, I'm truly sorry.
+
+[VIC7HUL:VIC7]
+~w~Head down to the ~y~hull.
+
+{=================================== MISSION TABLE SALS1 ===================================}
+
+[SALS1_1:SALS1]
+NONE
+
+[SALS1_6:SALS1]
+Kill ~r~Mayor R.C. Hole!
+
+[SALS1_7:SALS1]
+Retrieve the mayor's ~g~mobile phone!
+
+[SALS1_8:SALS1]
+~r~The mayor has finished his run.
+
+[SALS1_9:SALS1]
+~r~The mayor has escaped.
+
+[SALS110:SALS1]
+Take the phone to ~y~Salvatore.
+
+[SALS111:SALS1]
+Drop the weapon or I'll shoot!
+
+[SALS112:SALS1]
+They're on to you! The ~r~mayor~w~ is making a run for it!
+
+[SS1_AA:SALS1]
+Yeah, its Toni.
+
+[SS1_AB:SALS1]
+That bastard mayor is screwing with me and I don't take that kinda shit!
+
+[SS1_AC:SALS1]
+Calm down, Sal. I'll see if I can take him out of the equation for you.
+
+[SS1_AD:SALS1]
+You're a good boy, Toni, you do your father's memory proud.
+
+[SS1_AE:SALS1]
+Listen, that fat fuck mayor should be taking his daily run in the park.
+
+[SS1_AF:SALS1]
+You make sure he's out of breath... permanently!
+
+[SS1_AG:SALS1]
+And get his phone!
+
+[SS1_AH:SALS1]
+We can see who he's been talking to
+
+[SALS1AA:SALS1]
+Yeah, it's Toni
+
+[SALS1AB:SALS1]
+That bastard mayor is fucking with me.
+
+[SALS1AC:SALS1]
+I don't take that shit!
+
+[SALS1AD:SALS1]
+Relax. I'll take him out of the equation.
+
+[SALS1AE:SALS1]
+You're a good boy, Toni.
+
+[SALS1AF:SALS1]
+That fat fuck should be taking his daily run in the park.
+
+[SALS1AG:SALS1]
+Make sure he's out of breath. Permanently!
+
+[SALS1AH:SALS1]
+Oh yeah, get his phone!
+
+[SALS1AI:SALS1]
+We can see who he's been talking to...
+
+[SALS1C1:SALS1]
+Put down the weapon, sir!
+
+[SALS1C2:SALS1]
+Stop or I'll shoot!
+
+[SALS1C3:SALS1]
+Freeze!
+
+[SALS1C4:SALS1]
+Don't be a fool!
+
+[SALS113:SALS1]
+~r~The mayor's phone has been destroyed.
+
+[SALS114:SALS1]
+Watch out! They'll shoot you if you enter the park armed.
+
+{=================================== MISSION TABLE SALS2 ===================================}
+
+[SALS2_1:SALS2]
+~w~Get to the ~b~car.
+
+[SALS2_2:SALS2]
+~w~Drive to the ~y~meeting place.
+
+[SALS2_3:SALS2]
+~w~Get back in the ~b~car.
+
+[SALS2_4:SALS2]
+~r~Mickey has been killed!
+
+[SALS2_5:SALS2]
+~r~One of Salvatore's men has been killed!
+
+[SALS2AA:SALS2]
+Toni,
+
+[SALS2AB:SALS2]
+A few of the guys will be calling you later.
+
+[SALS2AC:SALS2]
+Make sure you're around when they arrive.
+
+[SALS2AD:SALS2]
+Ciao, Salvatore.
+
+[SALS2CA:SALS2]
+Hey Toni?
+
+[SALS2CC:SALS2]
+C'mon, get in, you're driving.
+
+[SALS2CD:SALS2]
+Mickey, what, eerr, what's up?
+
+[SALS2CE:SALS2]
+C'mon, Cipriani, what, you think I'm here to whack you?
+
+[SALS2BA:SALS2]
+Salvatore's just down there...
+
+[SALS2BC:SALS2]
+Toni, my boy,
+
+[SALS2BD:SALS2]
+today's the day you're being made!
+
+[SALS2BE:SALS2]
+Oh, Salvatore. Mr. Leone.
+
+[SALS2BF:SALS2]
+Momma has been waiting for this day.
+
+[SALS2CB:SALS2]
+Get in, c'mon we're going for a ride.
+
+[SALS2BB:SALS2]
+Madonn' mia, what are you waiting for?
+
+[SALS2AF:SALS2]
+Hey Toni thanks, I'll be in touch.
+
+{=================================== MISSION TABLE SALS3 ===================================}
+
+[SALS3_1:SALS3]
+NONE
+
+[SALS3_2:SALS3]
+Damage
+
+[SALS313:SALS3]
+~r~The mayor's advisor is history!
+
+[SALS314:SALS3]
+~r~Salvatore is history!
+
+[SALS3AA:SALS3]
+Toni, hop in!
+
+[SALS3AB:SALS3]
+Where we going?
+
+[SALS3AC:SALS3]
+We're going to have a little chat with the mayor's assistant about Franco Forelli.
+
+[SALS3BA:SALS3]
+Hey, get off my boat!
+
+[SALS3BB:SALS3]
+You're coming with me.
+
+[SALS3BC:SALS3]
+You can't do this!
+
+[SALS3BD:SALS3]
+Hurry it up, the secret service will be watching!
+
+[SALS3CA:SALS3]
+Toni, look out, gun men on those rocks!
+
+[SALS3CB:SALS3]
+Gunmen up ahead!
+
+[SALS3CC:SALS3]
+Watch the right, Toni!
+
+[SALS3CD:SALS3]
+On the left, Toni, left!
+
+[SALS3CE:SALS3]
+Gunmen on that jetty!
+
+[SALS3CF:SALS3]
+Holy shit, secret service coming in by helicopter!
+
+[SALS3DA:SALS3]
+The mayor wouldn't take a shit without Franco's say so!
+
+[SALS3DB:SALS3]
+Nobody owned the mayor!
+
+[SALS3DC:SALS3]
+Aargh! Wait, wait, you're right!
+
+[SALS3DE:SALS3]
+The Sicilians? Why?
+
+[SALS3DF:SALS3]
+They own Franco and they want a war between the Liberty Families.
+
+[SALS3DG:SALS3]
+When the dust settles they're coming to take over.
+
+[SALS3DH:SALS3]
+Toni, I'll call you later.
+
+[SALS3DI:SALS3]
+Right now, I'm gonna flush this turd into the bay!
+
+[SALS3DD:SALS3]
+It's those Sicilians... they pushed Franco into it.
+
+{=================================== MISSION TABLE SALS4 ===================================}
+
+[SALS4_1:SALS4]
+NONE
+
+[SALS4BA:SALS4]
+Yeah.
+
+[SALS4BB:SALS4]
+Thank God you picked up!
+
+[SALS4BC:SALS4]
+What's up, Sal?
+
+[SALS4BD:SALS4]
+I went spying on the Forellis in Fort Staunton when all hell broke loose!
+
+[SALS4BE:SALS4]
+The Sindaccos have gone to war with the Forellis,
+
+[SALS4BF:SALS4]
+and I'm stuck here in the middle of a hit!
+
+[SALS4BG:SALS4]
+I'll be right there.
+
+[SALS4BH:SALS4]
+Bring my limo, it's bullet proof. We're gonna need it!
+
+[SALS4AA:SALS4]
+Toni, let's get outta here!
+
+[SALS4AB:SALS4]
+Get me back to the limo!
+
+[SALS4AE:SALS4]
+OK, I got a place in Newport. Take me there!
+
+[SALS4AF:SALS4]
+Hey Toni thanks, I'll be in touch.
+
+[SAL4_1:SALS4]
+Go and pick up Mr. Leone's ~b~limo.
+
+[SAL4_2:SALS4]
+~r~You have destroyed the car!
+
+[SAL4_3:SALS4]
+Take the car to ~y~Fort Staunton.
+
+[SAL4_4:SALS4]
+~r~You let Salvatore die!
+
+[SAL4_6:SALS4]
+~b~Salvatore~w~ is down the alleyway.
+
+[SAL4_9:SALS4]
+Get to the ~y~garage.
+
+[SAL4_11:SALS4]
+You have left ~b~Salvatore ~w~behind!
+
+[SAL4_12:SALS4]
+It's blocked, leave the limo here and go in on foot.
+
+[SAL4_13:SALS4]
+Get back in the ~b~limo.
+
+[SAL4_14:SALS4]
+Take Salvatore and the limo to the ~y~garage~w~ in Newport.
+
+[SAL4_15:SALS4]
+Find ~b~Salvatore!
+
+[SAL4_16:SALS4]
+Get Salvatore to the ~b~limo.
+
+[SAL4_17:SALS4]
+Wait for ~b~Salvatore~w~ to get in the limo!
+
+{=================================== MISSION TABLE SALS5 ===================================}
+
+[SALS5_1:SALS5]
+~w~Press~h~ ~k~ ~VEACC~ ~w~to take control of Paul Sindacco's car.
+
+[SALS5_2:SALS5]
+~w~Take out the ~r~Forellis~w~ at the meet before Sindacco finds the control system.
+
+[SALS5_3:SALS5]
+~r~Paul Sindacco has been killed!
+
+[SALS5_4:SALS5]
+~r~Salvatore's van has been destroyed!
+
+[SALS5_5:SALS5]
+~r~Sindacco has reached the meet!
+
+[SALS5_6:SALS5]
+~w~Get to the ~b~van.
+
+[SALS5_7:SALS5]
+~w~Time Left
+
+[SALS5_8:SALS5]
+~r~Sindacco found the control system!
+
+[SALS5_9:SALS5]
+~w~The satellite controls for Sindacco's car will be slow to respond to you.
+
+[SALS510:SALS5]
+Damage
+
+[SALS5AA:SALS5]
+Hey!
+
+[SALS5AB:SALS5]
+Toni, it's me, I got something for you -
+
+[SALS5AC:SALS5]
+You're gonna love it, it should be fun.
+
+[SALS5AD:SALS5]
+What do you want done, Sal?
+
+[SALS5AE:SALS5]
+There's a van nearby.
+
+[SALS5AF:SALS5]
+Gimme a call when you find it.
+
+[SALS5BA:SALS5]
+Ok Sal, I'm in the van.
+
+[SALS5BB:SALS5]
+Good. We've messed around with Paulie Sindacco's car.
+
+[SALS5BC:SALS5]
+So what do you want me to do?
+
+[SALS5BD:SALS5]
+Paulie's going to a meet with the Forellis -
+
+[SALS5BE:SALS5]
+he's trying to broker a truce.
+
+[SALS5BF:SALS5]
+Use the gear in the van to take control of Paulie's car.
+
+[SALS5BG:SALS5]
+and mess up the meet.
+
+[SALS5CA:SALS5]
+What the-?
+
+[SALS5CC:SALS5]
+Oh god, help!
+
+[SALS5CD:SALS5]
+Get out of the way!
+
+[SALS5CF:SALS5]
+Somebody help me!
+
+[SALS5CG:SALS5]
+My car's possessed!
+
+[SALS5CE:SALS5]
+This car's trying to kill me!
+
+[SALS5CB:SALS5]
+Hey, what's happening here?
+
+{=================================== MISSION TABLE SALS6 ===================================}
+
+[SALS601:SALS6]
+~w~Sal has left you a ~b~boat ~w~at the south west pier, stop the wise-guy.
+
+[SALS602:SALS6]
+~w~He's heading along the coast. Go get ~r~him!
+
+[SALS603:SALS6]
+~r~He's ~w~heading back to Franco Forelli!
+
+[SALS604:SALS6]
+~r~The wise-guy made it back to Fort Staunton.
+
+[SALS605:SALS6]
+~r~He got away!
+
+[SALS606:SALS6]
+~r~He's ~w~getting away on foot!
+
+[SALS607:SALS6]
+~w~He's getting away in a ~r~stolen car!
+
+[SALS608:SALS6]
+~r~You can't chase him if you don't have a boat!
+
+[SALS6AA:SALS6]
+Hello.
+
+[SALS6AC:SALS6]
+Forelli-Sindacco feud.
+
+[SALS6AD:SALS6]
+He's headed over to meet Franco Forelli right now.
+
+[SALS6AE:SALS6]
+It works very much to our advantage that Franco knows nothing,
+
+[SALS6AF:SALS6]
+and this war keeps on going.
+
+[SALS6AG:SALS6]
+Take that blabbermouth out.
+
+[SALS6AH:SALS6]
+You got it, Sal.
+
+[SALS6AB:SALS6]
+Toni, some wiseguy's found out that the Sicilian Mob are behind the Forelli-Sindacco feud.
+
+[SLS6_20:SALS6]
+~w~He's heading back to Franco Forelli, take ~r~him ~w~out!
+
+[SLS6_21:SALS6]
+~w~Take ~r~him ~w~out!
+
+{=================================== MISSION TABLE NEDS1 ===================================}
+
+[NEDS1_1:NEDS1]
+The FBI are on their way to pick up a corrupt report concerning today's sports stars.
+
+[NEDS1_2:NEDS1]
+If the report is delivered to the FBI, innocent people will get prosecuted.
+
+[NEDS1_3:NEDS1]
+I want you to intercept this report and deliver it to me, and I'll keep it safe.
+
+[NEDS1_4:NEDS1]
+You will need an FBI vehicle.
+
+[NEDS1_5:NEDS1]
+There was a botched armed robbery on the highway. The FBI are at the crime scene.
+
+[NEDS1_6:NEDS1]
+Steal their car and get to the meeting place before it's too late.
+
+[NEDS1_8:NEDS1]
+Get back in the ~b~FBI car!
+
+[NEDS1_9:NEDS1]
+Go to the ~y~meeting place.
+
+[NEDS111:NEDS1]
+Lose the cops!
+
+[NEDS113:NEDS1]
+I have the report I promised here...
+
+[NEDS114:NEDS1]
+What the... There's already an agent here!?
+
+[NEDS115:NEDS1]
+Another FBI car? Wait! You're an impostor!
+
+[NEDS116:NEDS1]
+Stop the ~r~informant!
+
+[NEDS117:NEDS1]
+Retrieve the ~g~report.
+
+[NEDS118:NEDS1]
+Deliver the report to ~y~Liberty Tree.
+
+[NEDS119:NEDS1]
+~r~The FBI car you needed is history.
+
+[NEDS120:NEDS1]
+~r~You were too late! The informant has delivered the report to the FBI!
+
+[NEDS121:NEDS1]
+Good job Toni, God will be very happy with you.
+
+[NEDS122:NEDS1]
+I'll make sure this stays in safe hands.
+
+[NEDS123:NEDS1]
+Cheerio.
+
+[NEDS124:NEDS1]
+~r~The report is ruined!
+
+[NEDS1AA:NEDS1]
+Forgive me, Father, for I have sinned...
+
+[NEDS1AB:NEDS1]
+Shit, the Devil's hit pay dirt with you, Antonio.
+
+[NEDS1AE:NEDS1]
+Some poor sinner confessed to fabricating a report on doping our country's finest athletes.
+
+[NEDS1AF:NEDS1]
+If you were to stop him giving this to the FBI, innocent careers would be saved.
+
+[NEDS1AG:NEDS1]
+Consider it done, Father.
+
+[NEDS1BA:NEDS1]
+You're early.
+
+[NEDS1BB:NEDS1]
+Hey, I don't know you, where's John-O?
+
+[NEDS1BC:NEDS1]
+John-O? He couldn't make it.
+
+[NEDS1BD:NEDS1]
+Hey, that's John-O!
+
+[NEDS1BE:NEDS1]
+Gimme that!
+
+[NEDS1BF:NEDS1]
+Screw this!
+
+[NEDS1AD:NEDS1]
+Ah, the second option's more my bag...
+
+[NEDS1AC:NEDS1]
+Now either you can go off and say Hail Marys, or you can do the Lord's dirty work.
+
+[NEDS1_7:NEDS1]
+Go to the crime scene and steal an ~b~FBI car~w~, then get to the meeting point before ~1~:~1~ hours.
+
+[NEDS125:NEDS1]
+Go to the crime scene and steal an ~b~FBI car~w~, then get to the meeting point before 0~1~:~1~ hours.
+
+[NEDS126:NEDS1]
+Go to the crime scene and steal an ~b~FBI car~w~, then get to the meeting point before 0~1~:0~1~ hours.
+
+[NEDS127:NEDS1]
+Go to the crime scene and steal an ~b~FBI car~w~, then get to the meeting point before ~1~:0~1~ hours.
+
+{=================================== MISSION TABLE NEDS2 ===================================}
+
+[NEDS2_1:NEDS2]
+NONE
+
+[NEDS2AA:NEDS2]
+Forgive me, Father, for I have sinned...
+
+[NEDS2AB:NEDS2]
+Holy crap Toni, what have you done now?
+
+[NEDS2AC:NEDS2]
+Whoa! Language, Father.
+
+[NEDS2AD:NEDS2]
+Oh yeah, Hail Mary full of whatever.
+
+[NEDS2AE:NEDS2]
+A wayward soul has confessed to fencing diamonds.
+
+[NEDS2AF:NEDS2]
+Help this pilgrim on the path to redemption, take the loot and I'll see the diamonds are returned...
+
+[NB2_2:NEDS2]
+Get the ~g~briefcase~w~ and kill all the gang members.
+
+[NB2_3:NEDS2]
+Take the case to the ~y~Liberty Tree offices.
+
+[NB2_4:NEDS2]
+Get the ~g~briefcase!
+
+[NB2_1:NEDS2]
+This is a setup!
+
+[NB2_6:NEDS2]
+Kill all of the ~r~guards!
+
+[NB2_7:NEDS2]
+Destroy the ~r~helicopter!
+
+[NB2_5:NEDS2]
+Take out the ~r~helicopter~w~, the ~r~guards~w~ and get the ~g~briefcase.
+
+{=================================== MISSION TABLE NEDS3 ===================================}
+
+[NEDS3AA:NEDS3]
+Forgive me, Father, for I have sinned...
+
+[NEDS3AB:NEDS3]
+Toni, my son, compared to the degenerates in this town you're a saint!
+
+[NEDS3AC:NEDS3]
+Their cars pump the Devil's bum gas into our children's lungs! They are defiling Eden!
+
+[NEDS3AD:NEDS3]
+Go and show these sinners the error of their ways!
+
+[NEDS3_1:NEDS3]
+Drive the firetruck around town causing as many pile-ups, crashes and acts of mayhem as possible.
+
+[NEDS3_2:NEDS3]
+~w~Steal the ~b~Firetruck.
+
+[NEDS3_3:NEDS3]
+~w~You have ~1~ seconds to return to the ~b~Firetruck.
+
+[NEDS3_4:NEDS3]
+Rating
+
+[NEDS3_5:NEDS3]
+Now go and cause as many pile-ups, crashes and as much general mayhem as possible!
+
+[NEDS3_6:NEDS3]
+Pedestrian Splatted!
+
+[NEDS3_7:NEDS3]
+Vehicle Sunk!
+
+[NEDS3_8:NEDS3]
+Vehicle Destroyed!
+
+[NEDS3_9:NEDS3]
+Vehicle Flipped!
+
+[NEDS310:NEDS3]
+~r~The Firetruck has been destroyed.
+
+[NEDS311:NEDS3]
+360° Spin Out!
+
+[NEDS312:NEDS3]
+720° Spin Out!
+
+[NEDS313:NEDS3]
+1080° Spin Out!
+
+[NEDS314:NEDS3]
+~r~You left the Firetruck.
+
+[NEDS315:NEDS3]
+Rolled Vehicle!
+
+[NEDS316:NEDS3]
+Three smashes in a row!
+
+[NEDS317:NEDS3]
+Four smashes in a row!
+
+[NEDS318:NEDS3]
+Five smashes in a row!
+
+[NEDS319:NEDS3]
+Massive pileup bonus!
+
+[NEDS320:NEDS3]
+~r~You didn't get a high enough rating in time.
+
+[NEDS321:NEDS3]
+Dismount Bonus!
+
+[NEDS322:NEDS3]
+Dismount & Splat Bonus!
+
+[NEDS323:NEDS3]
+Highflier Bonus!
+
+[NEDS324:NEDS3]
+Massive Highflier Bonus!
+
+[NEDS325:NEDS3]
+~w~You have less than 1 second to return to the ~b~Firetruck.
+
+[NEDS326:NEDS3]
+Congratulations! You did it with ~1~ seconds left.
+
+[NEDS327:NEDS3]
+~w~Now destroy the ~r~Firetruck.~w~ Don't leave any evidence.
+
+[NEDS328:NEDS3]
+Bonus points are awarded for causing spectacular crashes, spinning, flipping or destroying vehicles.
+
+[NEDS329:NEDS3]
+Flipped Vehicle x ~1~
+
+[NEDS330:NEDS3]
+Rolled Vehicle x ~1~
+
+[NEDS332:NEDS3]
+~w~You have 1 second to return to the ~b~Firetruck.
+
+[NEDS333:NEDS3]
+Congratulations! NEW BEST TIME with ~1~ seconds left.
+
+[NEDS334:NEDS3]
+~w~Now destroy the Firetruck. Don't leave any evidence.
+
+[NEDS335:NEDS3]
+180° Spin Out!
+
+[NEDS337:NEDS3]
+Drive the firetruck around town causing as many pile-ups, crashes and acts of mayhem as possible before ~1~:~1~
+
+[NEDS338:NEDS3]
+Drive the firetruck around town causing as many pile-ups, crashes and acts of mayhem as possible before ~1~:0~1~
+
+[NEDS339:NEDS3]
+Drive the firetruck around town causing as many pile-ups, crashes and acts of mayhem as possible before 0~1~:~1~
+
+[NEDS340:NEDS3]
+Drive the firetruck around town causing as many pile-ups, crashes and acts of mayhem as possible before 0~1~:0~1~
+
+[NEDS341:NEDS3]
+Cause as many pile-ups, crashes and acts of mayhem as possible before ~1~:~1~
+
+[NEDS342:NEDS3]
+Cause as many pile-ups, crashes and acts of mayhem as possible before ~1~:0~1~
+
+[NEDS343:NEDS3]
+Cause as many pile-ups, crashes and acts of mayhem as possible before 0~1~:~1~
+
+[NEDS344:NEDS3]
+Cause as many pile-ups, crashes and acts of mayhem as possible before 0~1~:0~1~
+
+[NEDS331:NEDS3]
+Cause as many pile-ups, crashes and acts of mayhem as possible!
+
+{=================================== MISSION TABLE NEDS4 ===================================}
+
+[NEDS4_1:NEDS4]
+NONE
+
+[NEDS4_2:NEDS4]
+~w~The three celebrities are heading to a radio station downtown for an interview before tonight's premiere.
+
+[NEDS4_3:NEDS4]
+~w~The actress, Faith W, is flying in from Francis Airport in her private helicopter.
+
+[NEDS4_4:NEDS4]
+~w~The gangster turned actor, DB-P, is coming by boat from Portland.
+
+[NEDS4_5:NEDS4]
+~w~The aging alcoholic actor, Black Lightman, will be checking out from rehab and arriving in a limo.
+
+[NEDS4_8:NEDS4]
+~w~Faith is down.
+
+[NEDS4_9:NEDS4]
+~w~DB-P is down.
+
+[NEDS410:NEDS4]
+~w~Black Lightman is down.
+
+[NEDS411:NEDS4]
+~w~All three celebrities have been taken out. Get back to the ~y~church~w~ and let Father know.
+
+[NEDS412:NEDS4]
+~r~Faith has arrived at the radio station!
+
+[NEDS413:NEDS4]
+~r~DB-P has arrived at the radio station!
+
+[NEDS414:NEDS4]
+~r~Black Lightman has arrived at the radio station!
+
+[NEDS415:NEDS4]
+~w~He will switch to a bullet-proof patriot.
+
+[NEDS417:NEDS4]
+~w~The patriot is bullet-proof.
+
+[NEDS418:NEDS4]
+~w~Watch for the shooter.
+
+[NEDS421:NEDS4]
+~w~Phil Cassidy's gun shop is represented by a flag icon on the radar.
+
+[NEDS4AA:NEDS4]
+Forgive me, Father, for I have sinned again.
+
+[NEDS4AB:NEDS4]
+And you shall be redeemed once more, my son.
+
+[NEDS4AC:NEDS4]
+The cult of celebrity has gone too far!
+
+[NEDS4AD:NEDS4]
+What kind of whore gives a radio interview instead of giving a hardworking newspaper journalist an exclusive?
+
+[NEDS4AF:NEDS4]
+Destroy these false idols!
+
+[NEDS4BA:NEDS4]
+I have done what you asked, father.
+
+[NEDS4BB:NEDS4]
+Great! The paper's circulation has tripled since you found your soul.
+
+[NEDS4BC:NEDS4]
+What?
+
+[NEDS4BD:NEDS4]
+Thanks again for all your help, Toni!
+
+[NEDS4BE:NEDS4]
+Hey, what the fuck?
+
+[NEDS4BF:NEDS4]
+WHO ARE YOU?
+
+[NEDS422:NEDS4]
+Get a Rocket Launcher from Phil Cassidy's Fully Cocked Gun Shop.
+
+[NEDS4_7:NEDS4]
+~w~Don't allow any of the ~r~celebrities~w~ to reach the LCFR radio station!
+
+[NEDS416:NEDS4]
+~w~Don't allow any of the ~r~celebrities~w~ to reach the LCFR radio station!
+
+[NEDS419:NEDS4]
+~w~You will find heavy weaponry at Phil Cassidy's Fully Cocked Gun Shop.
+
+[NEDS420:NEDS4]
+~w~Father Ned has paid for a Rocket Launcher. Pick it up at Phil Cassidy's gun shop.
+
+[NEDS4_6:NEDS4]
+~w~If you need heavy weapons, get over to Phil Cassidy's gun shop.
+
+{=================================== MISSION TABLE DONS1 ===================================}
+
+[MORG_01:DONS1]
+2-2-3, 3-2-3, 4-2-3, 5-2-3-...
+
+[MORG_02:DONS1]
+Antonio! How wonderful to see you!
+
+[MORG_03:DONS1]
+What's going on?
+
+[MORG_04:DONS1]
+We're having a party, dear boy, a party.
+
+[MORG_05:DONS1]
+Yes, a morgue party!
+
+[MORG_08:DONS1]
+What the fuck you talking about, a morgue party?
+
+[MORG_09:DONS1]
+We're going have quite a night tonight.
+
+[MORG_10:DONS1]
+But first, we need to go and pick up the guests...
+
+[MORG_11:DONS1]
+Come, before our guests get bored to death.
+
+[MORG_12:DONS1]
+No pun intended!
+
+[MORG_13:DONS1]
+'Cuz they're dead, you know...
+
+[MORG_14:DONS1]
+Our guest of honor is taking a little trip to the pathology labs.
+
+[MORG_15:DONS1]
+Let's not keep him waiting.
+
+[MORG_06:DONS1]
+- The first of the season! ~n~ - Woah, woah, woah, woah...
+
+[DONS1_1:DONS1]
+None
+
+[DL1_A:DONS1]
+I am holding a morgue party and I want you to collect the 'guests'.
+
+[DL1_2:DONS1]
+~r~You destroyed the car.
+
+[DL1_3:DONS1]
+The cops have been alerted, lose your wanted level!
+
+[DL1_4:DONS1]
+Take the car to Donald's ~y~garage.
+
+[DL1_6:DONS1]
+~r~The hearse made it to the police station.
+
+[DL1_9:DONS1]
+Drive the car into the respray shop.
+
+[DL1_5:DONS1]
+Steal the ~b~hearse~w~ before it reaches it's destination.
+
+{=================================== MISSION TABLE DONS2 ===================================}
+
+[DONS2AA:DONS2]
+DL?
+
+[DONS2AB:DONS2]
+Toni!
+
+[DONS2AC:DONS2]
+How's the campaign?
+
+[DONS2AD:DONS2]
+It's down to the wire and every last vote's gonna count!
+
+[DONS2AE:DONS2]
+O'Donovan's campaigners are working those marginal seats hard.
+
+[DONS2AF:DONS2]
+Well we've got our own bandwagon, so get out there and spread the word!
+
+[DONS2BA:DONS2]
+Vote O'Donovan for mayor!
+
+[DONS2BB:DONS2]
+Vote O'Donovan for an end to corruption!
+
+[DONS2BC:DONS2]
+Put your trust in O'Donovan as mayor!
+
+[DONS2BD:DONS2]
+An end to crime! Vote O'Donovan!
+
+[DONS2BE:DONS2]
+Vote for justice! Vote O'Donovan!
+
+[DONS2CA:DONS2]
+O'Donovan has three wives!
+
+[DONS2CB:DONS2]
+Who ate all the pies? O'Donovan!
+
+[DONS2CC:DONS2]
+O'Donovan is a junky!
+
+[DONS2CD:DONS2]
+O'Donovan believes in compulsory buggery!
+
+[DONS2CE:DONS2]
+O'Donovan's a Communist!
+
+[DONS2CF:DONS2]
+O'Donovan dresses in his daughter's underwear!
+
+[DONS2CG:DONS2]
+O'Donovan gets naked with hogs!
+
+[DONS2CH:DONS2]
+O'Donovan hates America!
+
+[DONS2CI:DONS2]
+Love won't tax the wealthy!
+
+[DONS2CJ:DONS2]
+Vote Love for pathology classes in schools!
+
+[DONS2CK:DONS2]
+Donald Love believes in morgue access for all!
+
+[DONS2CL:DONS2]
+Donald Love is a war hero!
+
+[DONS2CM:DONS2]
+A vote for Love is a vote for happiness!
+
+[DONS2CN:DONS2]
+Donald Love: tough on vegetarians!
+
+[DONS2_1:DONS2]
+~w~Get in the ~b~van.
+
+[DONS2_3:DONS2]
+~w~O'Donovan has put his ~r~vans~w~ out to win back the votes!
+
+[DONS2_4:DONS2]
+~r~You failed to win enough votes!
+
+[DONS2_6:DONS2]
+~w~Time Left
+
+[DONS2_7:DONS2]
+~w~Get back in the ~b~van~w~ and continue with the mission.
+
+[DONS2_9:DONS2]
+~w~O'Donovan has put another ~r~van~w~ out!
+
+[DONS210:DONS2]
+~w~Areas Held
+
+[DONS211:DONS2]
+~r~You lost all the voting areas!
+
+[DONS212:DONS2]
+~r~You failed to take out the opposition!
+
+[DONS2_2:DONS2]
+~w~Drive through the ~y~marginal voting area checkpoints~w~ to win their vote.
+
+[DONS215:DONS2]
+~w~You lost an ~y~area~w~ to O'Donovan!
+
+[DONS216:DONS2]
+~w~Don't let O'Donovan get all the ~y~areas~w~ back!
+
+[DONS213:DONS2]
+~w~Now you have enough areas, take out the ~r~opposition vans~w~ to stop O'Donovan getting any more.
+
+[DONS2_8:DONS2]
+~w~Get at least 5 of the ~y~voting areas.
+
+[DONS214:DONS2]
+~w~You have less than 5 ~y~areas~w~, get them back!
+
+[DONS217:DONS2]
+~w~Take extra areas to increase your completion bonus.
+
+[DONS2_5:DONS2]
+~r~The Public Address Van has been destroyed.
+
+[DONS218:DONS2]
+~w~Get at least 5 of the ~y~voting areas~w~ before ~1~:~1~ hours.
+
+[DONS219:DONS2]
+~w~Get at least 5 of the ~y~voting areas~w~ before 0~1~:~1~ hours.
+
+[DONS220:DONS2]
+~w~Get at least 5 of the ~y~voting areas~w~ before 0~1~:0~1~ hours.
+
+[DONS221:DONS2]
+~w~Get at least 5 of the ~y~voting areas~w~ before ~1~:0~1~ hours.
+
+[DONS230:DONS2]
+~w~Now you have enough areas, take out the ~r~opposition van~w~ to stop O'Donovan getting any more.
+
+{=================================== MISSION TABLE DONS3 ===================================}
+
+[CAMP_01:DONS3]
+Antonio! Que pasa, amigo?
+
+[CAMP_02:DONS3]
+You do know I'm Italian, don't you, Don, not Spanish.
+
+[CAMP_03:DONS3]
+Of course, how silly of me - I just love all the romance languages.
+
+[CAMP_04:DONS3]
+My God, this is good.
+
+[CAMP_05:DONS3]
+It tastes just like chicken, but some how, more, err, sentient.
+
+[CAMP_06:DONS3]
+You want some?
+
+[CAMP_07:DONS3]
+I already ate, thanks.
+
+[CAMP_08:DONS3]
+Too bad. It's fantastic.
+
+[CAMP_09:DONS3]
+I have some more delicacies about to be served...
+
+[CAMP_10:DONS3]
+the liberals would have a field day, of course,
+
+[CAMP_11:DONS3]
+but how little they know of life's real pleasures!
+
+[CAMP_12:DONS3]
+Sophistication and democracy have always been such uneasy bedfellows.
+
+[CAMP_13:DONS3]
+Listen, Don, we need to win this election.
+
+[CAMP_14:DONS3]
+Okay, we need to make sure that there's no skeletons in the closet,
+
+[CAMP_15:DONS3]
+if you know what I mean...
+
+[CAMP_16:DONS3]
+Right.
+
+[CAMP_17:DONS3]
+What I mean is...
+
+[CAMP_18:DONS3]
+how do we take care of this O'Donovan guy who is covering for...
+
+[CAMP_19:DONS3]
+standing in for the Forelli's?
+
+[CAMP_20:DONS3]
+The guy has a lot of people canvassing for him,
+
+[CAMP_21:DONS3]
+all kinds of deluded 'people' people, if you know what I mean.
+
+[CAMP_22:DONS3]
+I think we need to have their faith in democracy shaken, if you understand me.
+
+[CAMP_23:DONS3]
+What you mean is that I gotta go beat the crap out of them?
+
+[CAMP_24:DONS3]
+Oh, your passion, Antonio, it's it's... magnificent.
+
+[CAMP_25:DONS3]
+It's so um... um...um... Wagnerian! You know?! Arriverdici, amigo.
+
+[CAMP_26:DONS3]
+Humphries, bring out the offal!
+
+[DONS3_1:DONS3]
+Toni must get rid of the opposition's campaign workers, thereby weakening the Forelli candidate, O'Donovan's, electoral campaign efficiency.
+
+[DONS3_2:DONS3]
+~w~Kill the opposition's ~r~campaign workers.
+
+[DONS3_3:DONS3]
+~r~You have run out of time.
+
+[DONS3_4:DONS3]
+These ~r~campaigners ~w~are dealt with. Take out the next set.
+
+[DONS3_5:DONS3]
+~w~Kill the opposition's ~r~campaign workers ~w~before ~1~:~1~
+
+[DONS3_6:DONS3]
+~w~Kill the opposition's ~r~campaign workers ~w~before ~1~:0~1~
+
+[DONS3_7:DONS3]
+~w~Kill the opposition's ~r~campaign workers ~w~before 0~1~:~1~
+
+[DONS3_8:DONS3]
+~w~Kill the opposition's ~r~campaign workers ~w~before 0~1~:0~1~
+
+{=================================== MISSION TABLE DONS4 ===================================}
+
+[DONS410:DONS4]
+Go to the ~y~Forelli Warehouse~w~ and torch their ballot papers!
+
+[DONS411:DONS4]
+Torch the ~r~ballot papers~w~ and destroy the ~r~printing machines!
+
+[DONS412:DONS4]
+Destroy the ~r~printing machine!
+
+[DONS413:DONS4]
+Torch ALL the ~r~ballot papers!
+
+[DONS414:DONS4]
+Destroy the remaining ~r~Forelli vans!
+
+[DONS416:DONS4]
+~r~You lost a Forelli van! The Forellis can now rig the election!
+
+[DONS418:DONS4]
+There are ~r~~1~ pallets~w~ of fake ballots remaining.
+
+[DONS419:DONS4]
+There is only ~r~1 pallet~w~ of fake ballots remaining.
+
+[DONS420:DONS4]
+Destroy the remaining ~r~Forelli van!
+
+[DONS421:DONS4]
+The printing machine is destroyed! Now destroy the other ~r~printing machine!
+
+[DONS422:DONS4]
+The printing machine is destroyed!
+
+[DONS423:DONS4]
+Now get out of here!
+
+[DONS424:DONS4]
+Destroy the ~r~printing machines!
+
+[DS4_AA:DONS4]
+So many people, so much money, just waiting to be taken.
+
+[DS4_AB:DONS4]
+I don't pretend to understand politics.
+
+[DS4_AC:DONS4]
+Nobody really does. It's all bluff and corruption.
+
+[DS4_AD:DONS4]
+The Forellis own a silent share of the company making the new voting machines.
+
+[DS4_AE:DONS4]
+That's bad, right?
+
+[DS4_AF:DONS4]
+Well, we certainly can't trust them.
+
+[DS4_AG:DONS4]
+No, it's best if they all have a MAJOR malfunction, if you catch my drift.
+
+[DONS4H1:DONS4]
+You will find heavy weaponry at Phil Cassidy's Fully Cocked Gun Shop.
+
+[DONS4AA:DONS4]
+Antonio, good to see you!
+
+[DONS4AB:DONS4]
+Now, I'm no Democrat, but even I draw the line at vote rigging.
+
+[DONS4AC:DONS4]
+Did you know the Forellis own a silent share in a company making the new voting machines?
+
+[DONS4AD:DONS4]
+That's bad, right?
+
+[DONS4AE:DONS4]
+Well, we certainly can't trust them.
+
+[DONS4AF:DONS4]
+No, it's best if they all have a MAJOR malfunction, if you catch my drift.
+
+[DONS4_8:DONS4]
+Go to Phil Cassidy's Fully Cocked Gun Shop.
+
+[DONS4H2:DONS4]
+Phil Cassidy's Fully Cocked Gun Shop is represented by a flag icon on the radar.
+
+[DONS427:DONS4]
+Now get out of Fort Staunton!
+
+[DONS4_9:DONS4]
+Phil Cassidy's gun shop will provide you with equipment to disrupt the Forelli campaign.
+
+[DONS417:DONS4]
+There is another flamethrower at Phil Cassidy's gun shop.
+
+[DONS425:DONS4]
+Get the flamethrower from Phil Cassidy's gun shop.
+
+[DONS426:DONS4]
+~r~The shop worker is history!
+
+[DONS4H3:DONS4]
+Donald Love has paid for a flamethrower. Go to the counter to pick it up.
+
+{=================================== MISSION TABLE DONS5 ===================================}
+
+[DONS5_7:DONS5]
+Protect Donald's Limo!
+
+[DONS5_9:DONS5]
+~r~Donald Love is history!
+
+[DONS513:DONS5]
+Limo Damage
+
+[DONS516:DONS5]
+Get in the ~b~Limo.
+
+[DONS517:DONS5]
+You've left ~b~Donald Love~w~ behind!
+
+[DONS519:DONS5]
+Get Donald to the ~y~safe house!
+
+[DONS520:DONS5]
+Kill the ~r~attackers!
+
+[DONS521:DONS5]
+Get in the ~b~limo!
+
+[DS5_AA:DONS5]
+How I hate publicity, but its all part of the game, right?
+
+[DS5_AB:DONS5]
+'Fraid so.
+
+[DS5_AC:DONS5]
+The Forellis are going to try and take me out, aren't they?
+
+[DS5_AD:DONS5]
+Don't worry, I'm going to be riding shotgun.
+
+[DS5_AE:DONS5]
+Oh well, here goes everything.
+
+[DS5_BA:DONS5]
+Shit! This is ridiculous!
+
+[DS5_BB:DONS5]
+Don't panic, I'll deal with these assholes!
+
+[DS5_BC:DONS5]
+There's a rifle in the trunk!
+
+[DS5_BD:DONS5]
+Lock the doors - this won't take long!
+
+[DS5_CA:DONS5]
+Ok, we're good to go.
+
+[DS5_CB:DONS5]
+There's another hitman after us!
+
+[DS5_DA:DONS5]
+I can't fight an election as a virtual recluse.
+
+[DS5_DB:DONS5]
+We'll have to think about using different tactics.
+
+[DONS522:DONS5]
+Take Donald back to his ~y~building!
+
+{=================================== MISSION TABLE DONS6 ===================================}
+
+[DONS6_1:DONS6]
+NONE
+
+[DS6_00:DONS6]
+Go and follow the ~b~ballot van.
+
+[DS6_01:DONS6]
+Wait until the ~b~courier ~w~makes the exchange.
+
+[DS6_02:DONS6]
+Get the ballots from the ~r~courier.
+
+[DS6_03:DONS6]
+Kill the ~r~courier.
+
+[DS6_04:DONS6]
+Take the ~g~package.
+
+[DS6_05:DONS6]
+Go and follow the ~b~ballot van~w~ again.
+
+[DS6_06:DONS6]
+~r~You killed a courier before the exchange!
+
+[DS6_07:DONS6]
+You've missed one of the exchanges, you can't miss another!
+
+[DS6_08:DONS6]
+~r~You missed two exchanges, the vote can't be fixed!
+
+[DS6_09:DONS6]
+~r~You spooked him!
+
+[DS6_10:DONS6]
+~r~The van was destroyed!
+
+[DS6_11:DONS6]
+You ran out of time!
+
+[DS6_12:DONS6]
+~r~You didn't catch the van!
+
+[DS6_13:DONS6]
+~r~The van can't run without its driver!
+
+[DS6_15:DONS6]
+~r~You've spooked the driver, you'll never catch him now!
+
+[DS6_16:DONS6]
+~1~
+
+[DS6_17:DONS6]
+~w~The chase driver is dead, take the van to ~y~Donald's garage.
+
+[DONS6AA:DONS6]
+Bad news Toni!
+
+[DONS6AB:DONS6]
+What?
+
+[DONS6AC:DONS6]
+The exit polls are neck and neck.
+
+[DONS6AD:DONS6]
+Time for plan B.
+
+[DONS6AE:DONS6]
+We steal some of the uncounted votes, and replace them with some of our own.
+
+[DONS6AF:DONS6]
+What was that you said about vote rigging?
+
+[DONS6AG:DONS6]
+Oh, shut up!
+
+[DS6_14:DONS6]
+Go back for the ~g~ballots~w~, you can't leave them behind!
+
+[DS6_66:DONS6]
+~r~You destroyed a courier's car before the exchange!
+
+[DS6_18:DONS6]
+You killed a courier before the exchange! Don’t kill any more!
+
+[DS6_21:DONS6]
+Hurry! There is another exchange taking place!
+
+[DS6_22:DONS6]
+You missed the first exchange, you can't miss another!
+
+[DS6_23:DONS6]
+You missed the second exchange, you can't miss another!
+
+[DS6_24:DONS6]
+You missed the third exchange, you can't miss another!
+
+[DS6_25:DONS6]
+You missed the fourth exchange, you can't miss another!
+
+[DS6_26:DONS6]
+You scared off a courier before the exchange! Don’t scare off any more!
+
+[DS6_28:DONS6]
+~r~You messed up! The vote can no longer be fixed!
+
+{=================================== MISSION TABLE DONS7 ===================================}
+
+[ELEC_01:DONS7]
+Hey Don - I took care of that mess for you.
+
+[ELEC_02:DONS7]
+Everything should be cool now.
+
+[ELEC_03:DONS7]
+Really.
+
+[ELEC_04:DONS7]
+You got no more links to organized crime.
+
+[ELEC_05:DONS7]
+You're whiter than white. You could be the pope.
+
+[ELEC_07:DONS7]
+Although no links can be proved between Donald Love
+
+[ELEC_08:DONS7]
+and Liberty City's organized crime,
+
+[ELEC_09:DONS7]
+it seems his friendship with mobsters including Toni Cipriani,
+
+[ELEC_11:DONS7]
+have counted heavily against him in voters' eyes.
+
+[ELEC_12:DONS7]
+The past few hours have seen his popularity plummet.
+
+[ELEC_13:DONS7]
+He is deemed, it seems, unfit for office...
+
+[ELEC_14:DONS7]
+Unfit! Because of you...
+
+[ELEC_15:DONS7]
+Yeah. And it's all your fault.
+
+[ELEC_16:DONS7]
+My fault?
+
+[ELEC_17:DONS7]
+Oh yeah.
+
+[ELEC_18:DONS7]
+My fault?
+
+[ELEC_19:DONS7]
+I can't believe the sacrifices I've made for this town,
+
+[ELEC_20:DONS7]
+and do you know what my weakness has been the entire time...?
+
+[ELEC_21:DONS7]
+Humility! And now I'm ruined.
+
+[ELEC_22:DONS7]
+BANKRUPT! $20 million in the hole.
+
+[ELEC_23:DONS7]
+Gone... bankrupt... done... Arriverderci! BANKRUPT!
+
+[ELEC_06:DONS7]
+The Pope! watch this.
+
+[DONS7_1:DONS7]
+O'Donovan links Donald Love to Salvatore Leone. Donald Love's political career stands on a knife's edge. Toni must destroy the evidence.
+
+[DONS7_2:DONS7]
+~w~Go and steal the ~b~van~w~ containing the evidence.
+
+[DONS7_3:DONS7]
+~r~You killed the contact.
+
+[DONS7_4:DONS7]
+~w~Take the van to the ~y~drop off point.
+
+[DONS7_5:DONS7]
+~w~Get back into the ~b~van.
+
+[DONS7_7:DONS7]
+Get into the ~b~contact's car.
+
+[DONS7CA:DONS7]
+Ah, Toni.
+
+[DONS7CB:DONS7]
+The evidence is in that van up ahead.
+
+[DONS7CC:DONS7]
+You'll have to fight your way in.
+
+[DONS7CD:DONS7]
+Get the van back to DL's.
+
+[DONS7CE:DONS7]
+Good luck!
+
+[DONS713:DONS7]
+~w~Park the van inside the ~y~garage.
+
+[DONS714:DONS7]
+~r~You destroyed the van!
+
+[RMN_AA:DONS7]
+There'll be much celebrating tonight as the industrial action that brought Liberty City to a stand-still,
+
+[RMN_AB:DONS7]
+has finally come to a close.
+
+[RMN_AC:DONS7]
+Normal service has been resumed on all subway and ferry routes.
+
+[RMN_AD:DONS7]
+Even the Elevator Bridge linking Staunton Island to Shoreside Vale has reopened for business.
+
+[RMN_AE:DONS7]
+Militant strikers have finally dropped their placards and taken up their usual posts of employment
+
+[RMN_AF:DONS7]
+after the freshly inaugurated Mayor O'Donovan made them this promise at a local rally.
+
+[RMN_AG:DONS7]
+As your mayor I can guarantee there will ALWAYS be a ferry service in Liberty City.
+
+[RMN_AH:DONS7]
+But, some may find his promise has a somewhat hollow ring,
+
+[RMN_AI:DONS7]
+as work on the new Porter Road Tunnel continues unabated.
+
+[DONS7_6:DONS7]
+~w~Meet Donald Love's ~b~man ~w~under the overpass in Newport.
+
+{=================================== MISSION TABLE RAYS1 ===================================}
+
+[SAYO_01:RAYS1]
+So you're the pain in the neck, huh?
+
+[SAYO_02:RAYS1]
+Excuse me?
+
+[SAYO_03:RAYS1]
+Got all kinds of important people very pissed off at you.
+
+[SAYO_04:RAYS1]
+Leon McAffrey, LCPD.
+
+[SAYO_05:RAYS1]
+I don't know what you're talking about.
+
+[SAYO_06:RAYS1]
+I'm in the restaurant business.
+
+[SAYO_07:RAYS1]
+Whatever you say tough guy.
+
+[SAYO_08:RAYS1]
+You greaseballs wanna put holes in each other, I don't give a shit.
+
+[SAYO_09:RAYS1]
+All I care about is my cut.
+
+[SAYO_12:RAYS1]
+My cut! Where is it?
+
+[SAYO_13:RAYS1]
+Up your ass, buddy. Don't make me laugh.
+
+[SAYO_14:RAYS1]
+You keep fucking with me, I'll put you, your friends, your friend's families,
+
+[SAYO_15:RAYS1]
+your whole fucking home town under the sword.
+
+[SAYO_16:RAYS1]
+Relax. Go get laid or something.
+
+[SAYO_17:RAYS1]
+This is business - a partnership - equals.
+
+[SAYO_18:RAYS1]
+I keep the law off your back - the feds, Rico -
+
+[SAYO_19:RAYS1]
+and you keep me in the shit that I like.
+
+[SAYO_20:RAYS1]
+Well how do I know I ain't about to be shaken down
+
+[SAYO_21:RAYS1]
+by every dirty cop from here to Vice City?
+
+[SAYO_22:RAYS1]
+I'm gonna help you take over this town.
+
+[SAYO_23:RAYS1]
+In return I want some cash and a few favors.
+
+[SAYO_24:RAYS1]
+Now c'mon, Toni, take a drive with me...
+
+[SAYO_25:RAYS1]
+we're gonna meet your old friends, the Sindaccos.
+
+[SAYO_10:RAYS1]
+- I love a man of principle. ~n~ - Well me too. I go to all their memorial services in fast cars with hot broads.
+
+[RS1_YK:RAYS1]
+Damage
+
+[RS1_01:RAYS1]
+Wipe out the ~r~Sindaccos.
+
+[RS1_02:RAYS1]
+~r~The car was destroyed!
+
+[RS1_03:RAYS1]
+~r~The Yakuza were massacred!
+
+[RS1_04:RAYS1]
+~w~Kill some ~r~Sindaccos ~w~to get their attention.
+
+[RS1_05:RAYS1]
+~w~Get in Leon's ~b~car.
+
+[RS1_06:RAYS1]
+~w~Head out to ~y~Sindacco territory.
+
+[RS1_07:RAYS1]
+~w~Head back to the ~b~car.
+
+[RS1_10:RAYS1]
+~r~You killed Leon!
+
+[RAYS1AA:RAYS1]
+Okay, I'll take the wheel, you start blasting!
+
+[RAYS1AB:RAYS1]
+I thought you said Yakuza would do the heavy work!
+
+[RAYS1AC:RAYS1]
+Adapt and survive, Cipriani. Adapt and survive.
+
+[RAYS1BA:RAYS1]
+Shit, this is getting too high profile.
+
+[RAYS1BB:RAYS1]
+I gotta make myself scarce, see you around Toni.
+
+[RAYS1CA:RAYS1]
+Eyes front, Toni!
+
+[RAYS1CB:RAYS1]
+Behind us Toni, behind us!
+
+[RAYS1CC:RAYS1]
+Watch out on the left!
+
+[RAYS1CD:RAYS1]
+On the right, Toni, the right!
+
+[RAYS1CE:RAYS1]
+Get back in the car!
+
+[RAYS1CF:RAYS1]
+Watch what you're doing!
+
+[RAYS1OS:RAYS1]
+Oh shit!
+
+{=================================== MISSION TABLE RAYS2 ===================================}
+
+[RS2_02:RAYS2]
+~w~Quickly, get on a ~b~bike!
+
+[RS2_03:RAYS2]
+~w~Lure the bikers to the ~y~kill zone!
+
+[RS2_04:RAYS2]
+~w~Go back, you can't leave any ~r~Forellis ~w~behind!
+
+[RS2_05:RAYS2]
+~w~Get back on the ~b~bike!
+
+[RS2_06:RAYS2]
+~r~You need a bike to lure the Forellis.
+
+[RS2_07:RAYS2]
+~r~The Yardies want to spill Forelli blood themselves.
+
+[RS2_08:RAYS2]
+~r~None of the Yardies survived!
+
+[RS2_09:RAYS2]
+~1~
+
+[RS2_10:RAYS2]
+~r~They can't chase you if they don't have any bikes!
+
+[RAYS2AA:RAYS2]
+You took your time, Toni.
+
+[RAYS2AB:RAYS2]
+You say jump, I say screw you.
+
+[RAYS2AD:RAYS2]
+Cute. Now listen.
+
+[RAYS2AE:RAYS2]
+The Yardies have their greedy eyes on Forelli turf in Newport.
+
+[RAYS2AF:RAYS2]
+Get over there and lure the Forelli soldiers down to the hospital in Rockford.
+
+[RAYS2AG:RAYS2]
+The Yardies will be waiting for them.
+
+[RAYS2AH:RAYS2]
+What's in this for you?
+
+[RAYS2AI:RAYS2]
+I owe them. Catch you later.
+
+[RS2_11:RAYS2]
+Don't kill any of the Forellis!
+
+[RS2_12:RAYS2]
+Take ~r~them ~w~out!
+
+[RS2_01:RAYS2]
+~w~Go and steal one of the Forellis' ~b~bikes~w~, but don't kill any of them.
+
+[RAYS2DB:RAYS2]
+Yeah. C'mon, let's take it to 'em!
+
+[RS2_13:RAYS2]
+~r~Too many Yardies were killed!
+
+{=================================== MISSION TABLE RAYS3 ===================================}
+
+[CRAZ_01:RAYS3]
+I don't know what I did wrong in my past life to deserve you.
+
+[CRAZ_02:RAYS3]
+Ray, you're 40 years old, and you have no idea what's really going on.
+
+[CRAZ_03:RAYS3]
+I don't know how you've gotten this far.
+
+[CRAZ_04:RAYS3]
+I don't know how somebody hasn't put a bullet in your mother Theresa head yet.
+
+[CRAZ_05:RAYS3]
+Hey watch your mouth, Leon.
+
+[CRAZ_06:RAYS3]
+I can't believe we're having this fucking conversation.
+
+[CRAZ_07:RAYS3]
+What, are you gonna run to mommy?
+
+[CRAZ_08:RAYS3]
+Are you gonna jump on daddy's knee?
+
+[CRAZ_09:RAYS3]
+Ask for a wet kiss?
+
+[CRAZ_10:RAYS3]
+Hey Toni!
+
+[CRAZ_14:RAYS3]
+He's gonna make sure I do everything by the book!
+
+[CRAZ_15:RAYS3]
+Toni Cipriani, Ray Machowski.
+
+[CRAZ_16:RAYS3]
+He's with us. Hey we're gonna go fight organized crime now.
+
+[CRAZ_17:RAYS3]
+You run along to the precinct, fill out a report.
+
+[CRAZ_18:RAYS3]
+You're a good kid... Let's go, Toni.
+
+[CRAZ_19:RAYS3]
+You piece of shit, Leon.
+
+[CRAZ_11:RAYS3]
+- Freeze, asshole. ~n~ - WOAH! Woah! Woah! Easy! Meet my new partner. Mr. Hip!
+
+[RAYS3_1:RAYS3]
+Help the Yakuza take over the Forelli held territory of Belleville Park. The player must kill ~1~ Forellis using only a katana.
+
+[RAYS3_2:RAYS3]
+~w~Kill ~1~ ~r~Forellis~w~ using only the supplied katana.
+
+[RAYS3_3:RAYS3]
+Kills
+
+[RAYS3_4:RAYS3]
+~w~You have to kill the ~r~Forellis~w~ using the katana.
+
+[RAYS3_5:RAYS3]
+~w~You don't have a katana. Collect a ~g~replacement.
+
+[RAYS3_6:RAYS3]
+~r~You ran out of time.
+
+[RAYS3_7:RAYS3]
+~w~Kill ~1~ ~r~Forellis~w~ using only the supplied katana before ~1~:~1~
+
+[RAYS3_8:RAYS3]
+~w~Kill ~1~ ~r~Forellis~w~ using only the supplied katana before ~1~:0~1~
+
+[RAYS3_9:RAYS3]
+~w~Kill ~1~ ~r~Forellis~w~ using only the supplied katana before 0~1~:~1~
+
+[RAYS310:RAYS3]
+~w~Kill ~1~ ~r~Forellis~w~ using only the supplied katana before 0~1~:0~1~
+
+{=================================== MISSION TABLE RAYS4 ===================================}
+
+[RAYS4_1:RAYS4]
+~w~The Yardies are under attack in Newport. Take out the attacking ~r~Sindaccos.
+
+[RAYS4_2:RAYS4]
+~w~Go speak to the ~b~Yardie Gang Leader.
+
+[RAYS4_3:RAYS4]
+~w~Follow the ~b~Yardie Gang Leader.
+
+[RAYS4_4:RAYS4]
+~r~One of the Yardies has been killed!
+
+[RAYS4_5:RAYS4]
+~w~Protect the Yardies until the ambulance arrives.
+
+[RAYS4_6:RAYS4]
+~w~Get back and protect the Yardies.
+
+[RAYS4_7:RAYS4]
+~w~Clear a path for the Yardies to reach the ambulance.
+
+[RAYS4_8:RAYS4]
+~w~Go and meet the ~y~ambulance.
+
+[RAYS4AA:RAYS4]
+Cipriani, we must stop meeting like this.
+
+[RAYS4AB:RAYS4]
+Fine by me.
+
+[RAYS4AC:RAYS4]
+C'mon, lighten up a little.
+
+[RAYS4AD:RAYS4]
+What you got for me, McAffrey?
+
+[RAYS4AE:RAYS4]
+Those Yardie boys are having a little trouble holding onto their newly acquired turf in Newport.
+
+[RAYS4AF:RAYS4]
+Seems now the Sindaccos want it back.
+
+[RAYS4BA:RAYS4]
+Me Boy Rudyard got himsel' capped!
+
+[RAYS4BB:RAYS4]
+Come on, we got to get him a bone wagon!
+
+[RAYS4BC:RAYS4]
+Shit, more Sindacco boo boos!
+
+[RAYS4BD:RAYS4]
+I'll get the ambulance, you go help my boys!
+
+[RAYS4BE:RAYS4]
+Let's get out of here!
+
+[RAYS4BF:RAYS4]
+Here comes the ambulance!
+
+[RAYS4BG:RAYS4]
+Thanks, Mr. Cipriani, we owe you one!
+
+{=================================== MISSION TABLE RAYS5 ===================================}
+
+[RAYS5_1:RAYS5]
+NONE
+
+[RAYS5AA:RAYS5]
+What, no flowers?
+
+[RAYS5AB:RAYS5]
+I didn't know it was your funeral.
+
+[RAYS5AC:RAYS5]
+You're a regular comedian, Toni, real funny guy.
+
+[RAYS5AD:RAYS5]
+The Forellis are getting serious.
+
+[RAYS5AE:RAYS5]
+They're running arms and taking a cut of the merchandise themselves,
+
+[RAYS5AF:RAYS5]
+tooling up for trouble.
+
+[RAYS5AG:RAYS5]
+They're moving the guns to Fort Staunton in trucks.
+
+[RAYS5AH:RAYS5]
+It's been a gas.
+
+[RAYS5AI:RAYS5]
+Likewise.
+
+[RAY5_2:RAYS5]
+They've called in backup.
+
+[RAY5_3:RAYS5]
+~r~The Forellis got the munitions!
+
+[RAY5_4:RAYS5]
+Hey, it's Cipriani!
+
+[RAY5_5:RAYS5]
+Waste him!
+
+[RAY5_6:RAYS5]
+That's one down, now destroy the other ~r~truck.
+
+[RAY5_1:RAYS5]
+Destroy the ~r~trucks~w~ before they reach their destination!
+
+[RAY5_7:RAYS5]
+Destroy the ~r~truck~w~ before they get enough ammo from it.
+
+[RAY5_8:RAYS5]
+~r~You did not destroy the truck in time!
+
+{=================================== MISSION TABLE SALH1 ===================================}
+
+[SLH1_F1:SALH1]
+~r~You killed one of the Hoods.
+
+[SLH1_F2:SALH1]
+~w~Lure out the Forellis by smashing up their ~r~cars.
+
+[SLH1_F3:SALH1]
+~w~Exact revenge on the ~r~Forellis.
+
+[SLH1_F4:SALH1]
+~w~Lure out more Forellis by smashing up another ~r~car.
+
+[SLH1_F5:SALH1]
+~w~Don't leave the ~b~Hoods~w~ behind.
+
+[SLH1_B0:SALH1]
+~w~Ok, Cuz. Let's smoke this town.
+
+[SLH1_B1:SALH1]
+~w~Hey! Get back here, fool!
+
+[SLH1_B2:SALH1]
+~w~Come on, you cracker! I ain't never gonna fit my ass in there!
+
+[SLH1_B3:SALH1]
+~w~Damn right! You don't wanna go nowhere without me.
+
+[SLH1_B4:SALH1]
+~w~Damn! That was intense, man!
+
+[SLH1_B6:SALH1]
+~w~...no offence Toni.
+
+[SLH1_B7:SALH1]
+~w~It's time for Hoods to rise up and do the right thing!
+
+[SLH1_B8:SALH1]
+~w~Come on! Let's smoke 'em!
+
+[SLH1_C0:SALH1]
+~w~My brother!
+
+[SLH1_C1:SALH1]
+~w~Yo! Fool! Where you goin'?
+
+[SLH1_C2:SALH1]
+~w~Just where in the hell am I supposed to sit my ass?
+
+[SLH1_C3:SALH1]
+~w~Damn right! You don't wanna go nowhere without me.
+
+[SLH1_C4:SALH1]
+~w~Sheee-it! I seen some shit right there!
+
+[SLH1_D0:SALH1]
+~w~Hey! That's my car!
+
+[SLH1_D1:SALH1]
+~w~I like it better this way!
+
+[SLH1_E0:SALH1]
+~w~What the hell's going on?
+
+[SLH1_E1:SALH1]
+~w~We're kicking your asses outta here! That's what's going on!
+
+[SLH1_X0:SALH1]
+Got threat
+
+[SLH1_X1:SALH1]
+Had threat
+
+[SLH1_X2:SALH1]
+Find threat
+
+[SLH1_F0:SALH1]
+~w~Pick up the ~b~Hoods~w~ then get the ~r~Forellis~w~ attention.
+
+[RUFJ_01:SALH1]
+Here's your lawyer, Mr. Leone.
+
+[RUFJ_02:SALH1]
+I know who the hell he is, pal...
+
+[RUFJ_03:SALH1]
+Come on, gimme a break here.
+
+[RUFJ_04:SALH1]
+Go on, kid, run along, and say hello to your mother for me, capiche?
+
+[RUFJ_05:SALH1]
+Alright... You got five minutes.
+
+[RUFJ_06:SALH1]
+Listen, uh, Lionel, you're looking good.
+
+[RUFJ_07:SALH1]
+Look at me!
+
+[RUFJ_08:SALH1]
+A fine member of the community, and suddenly I'm banged up.
+
+[RUFJ_09:SALH1]
+It really challenges my philanthropic nature!
+
+[RUFJ_10:SALH1]
+Of course, Mr. Leone.
+
+[RUFJ_11:SALH1]
+We're doing everything we can to get you out of here and uh...
+
+[RUFJ_12:SALH1]
+back to helping your community as soon as possible.
+
+[RUFJ_13:SALH1]
+Of course.
+
+[RUFJ_14:SALH1]
+I hope we can sue someone for this outrage.
+
+[RUFJ_15:SALH1]
+Those cunts the Sindaccos, or those cocksuckers, the Forellis - who was it?
+
+[RUFJ_16:SALH1]
+Who ratted me out?
+
+[RUFJ_18:SALH1]
+Let's hit 'em both hard.
+
+[RUFJ_19:SALH1]
+Way I see it, they both could use a good beating for this outrage.
+
+[RUFJ_22:SALH1]
+Thank you - Toni - you really mean a lot to me, - you know that.
+
+[RUFJ_23:SALH1]
+Listen, you might need some back up.
+
+[RUFJ_24:SALH1]
+Use the hoods. Okay?
+
+[RUFJ_25:SALH1]
+Whatever you think is best, Mr. Leone.
+
+[RUFJ_26:SALH1]
+Alright... Get outta here... Lionel.
+
+[RUFJ_20:SALH1]
+- Motherfuckers. ~n~ - It will be my pleasure.
+
+{=================================== MISSION TABLE SALH2 ===================================}
+
+[SALH2AA:SALH2]
+~w~Hey Sal! It's me... Toni.
+
+[SALH2AB:SALH2]
+~w~Toni! It's good to hear your voice kid.
+
+[SALH2AC:SALH2]
+~w~These chumps won't let me see nobody!
+
+[SALH2AD:SALH2]
+~w~Listen, I got plenty of business to take care of.
+
+[SALH2AE:SALH2]
+~w~Take Paulie Sindacco. His family's finished in this town.
+
+[SALH2AF:SALH2]
+~w~But he thinks he can just run away, like he's got no dues to pay.
+
+[SALH2AG:SALH2]
+~w~I'm in jail because of that bastard!
+
+[SALH2AH:SALH2]
+~w~Make that son of a bitch pay.
+
+[SALH2O1:SALH2]
+~w~Intercept Paulie Sindacco at the ~y~Cochrane Dam Power House.
+
+[SALH2F1:SALH2]
+~r~He got away! Salvatore will not be happy!
+
+[SALH2CA:SALH2]
+~w~You idiots! That's Toni Cipriani! Get him!
+
+[SALH2BA:SALH2]
+~w~Hey Toni! Why don't you swim over here and kiss my ass!
+
+[SALH2BB:SALH2]
+~w~Hey over here, asshole!
+
+[SALH2BI:SALH2]
+~w~Give my regards to Salvatore. I'll send him a postcard!
+
+[SALH2BC:SALH2]
+~w~What you gonna do now jerk?
+
+[SALH2BE:SALH2]
+~w~You're dead meat!
+
+[SALH2BF:SALH2]
+~w~You ain't nothing!
+
+[SALH2BG:SALH2]
+~w~Surprise! Dirtbag!
+
+[SALH2BH:SALH2]
+~w~Ladies and gentlemen, Paulie Sindacco has left the building!
+
+[SALH2BD:SALH2]
+~w~You ain't got a chance of catching me, asshead!
+
+[SALH2O2:SALH2]
+~w~Kill ~r~Paulie Sindacco~w~. Don't let him get away!
+
+[SALH2O3:SALH2]
+Get some wheels and ambush ~r~Paulie~w~ from the shore.
+
+{=================================== MISSION TABLE SALH3 ===================================}
+
+[SALH3_1:SALH3]
+~w~Sal? How's it going?
+
+[SALH3_2:SALH3]
+~w~Fuckin' bene! Just great!
+
+[SALH3_3:SALH3]
+~w~Number one, the new mayor is fixing it so I don't get bail.
+
+[SALH3_4:SALH3]
+~w~Number two, we're stuck fighting the God-damn Triads and Diablos.
+
+[SALH3_5:SALH3]
+~w~Number three, I hear that the fuckin' Yakuza are gonna make a play to take over the city.
+
+[SALH3_6:SALH3]
+~w~Other than that, everything is just peachy!
+
+[SALH3_7:SALH3]
+~w~After all these years of mob control, we've finally flushed it all down the crapper!
+
+[SALH38:SALH3]
+~w~Boss, I can take care of everything.
+
+[SALH39:SALH3]
+~w~The Yakuza have got a load of weapons in Aspatria.
+
+[SALH310:SALH3]
+~w~Nothing can stop them now!
+
+[SALH311:SALH3]
+~w~We'll see about that.
+
+[SALH3_A:SALH3]
+~w~Check out the ~y~Yakuza Compound.
+
+[SALH3C1:SALH3]
+~w~Find a way inside the ~y~Compound.
+
+[SALH3C2:SALH3]
+~w~Holy Shit! I don't fucking believe it!
+
+[SALH3C3:SALH3]
+~w~Destroy the ~r~Tank!
+
+[SALH3C4:SALH3]
+~w~What the fuck?!
+
+[SALH3C5:SALH3]
+~w~Kill him!
+
+[SALH3C6:SALH3]
+~w~The ~r~Tank ~w~is well armored. Normal weapons won't wreck this heavy piece of hardware!
+
+[SALH3G1:SALH3]
+~w~Hey 'buddy', there is nothing in there for you!
+
+[SALH3G2:SALH3]
+~w~Seems like this yard is for Yakuza only.
+
+[SALH3G3:SALH3]
+~w~Move your ass away from there!
+
+[SALH3_B:SALH3]
+~w~The Yakuza car fooled them!
+
+[SALH3_C:SALH3]
+~w~Drive into the ~y~Compound~w~ and take a look around.
+
+{=================================== MISSION TABLE SALH4 ===================================}
+
+[SALH4_1:SALH4]
+~w~Sal? You there?
+
+[SALH4_2:SALH4]
+~w~Anthony! I'm getting out!
+
+[SALH42A:SALH4]
+~w~My arraignment's today!
+
+[SALH4_3:SALH4]
+~w~Great!
+
+[SALH44C:SALH4]
+~w~Yeah, Toni. Whatever.
+
+[SALH44E:SALH4]
+~w~Hey, the guards are coming now... I'll see you round the front.
+
+[SALH4_5:SALH4]
+~w~Go get a police car!
+
+[SALH45A:SALH4]
+~w~You need a cop car or you'll spook the convoy!
+
+[SALH4_6:SALH4]
+~w~Get into position at the ~y~station.
+
+[SALH4_7:SALH4]
+~w~Holy Shit!
+
+[SALH4_8:SALH4]
+~w~Protect the ~b~transport van~w~ and make sure it arrives in one piece!
+
+[SALH4_9:SALH4]
+~w~Don't get too far from the ~b~transport van!
+
+[SALH410:SALH4]
+~w~You're going to lose the ~b~transport van!
+
+[SALH411:SALH4]
+~r~You lost the transport van! Sal has been executed!
+
+[SALH412:SALH4]
+~r~The transport van was destroyed!
+
+[SALH413:SALH4]
+~w~Don't piss the cops off - you'll ruin Sal's plans for bail!
+
+[SALH416:SALH4]
+~w~Escort the ~b~convoy~w~ to its destination.
+
+[SALH417:SALH4]
+~r~You blew it! The cops have called off the court hearing!
+
+[SALH420:SALH4]
+~r~Sal was killed!
+
+[SALH421:SALH4]
+~r~You lost the transport van!
+
+[SALH422:SALH4]
+~w~Lose the heat or you'll draw too much attention to the convoy!
+
+[SALH424:SALH4]
+~w~Take out the ~y~blockade!
+
+[SALH415:SALH4]
+~w~It's good to be a free man again.
+
+[SALH418:SALH4]
+~w~But listen. I'm gonna head up to the house and get out of these stinking rags, okay?
+
+[SALH419:SALH4]
+~w~I'll meet you up there.
+
+[SALH414:SALH4]
+~w~Illegal roadblock reported in the area...
+
+[SALH44A:SALH4]
+~w~With me in here, who's stopping them from taking over?
+
+[SALH4_4:SALH4]
+~w~Yeah, but I got this notion that the Sicilians don't want me to make it to court.
+
+[SALH44B:SALH4]
+~w~Hey, they'd have to get by me first Sal.
+
+[SALH44D:SALH4]
+~w~Just make sure I get my day in court!
+
+{=================================== MISSION TABLE SALH5 ===================================}
+
+[SALH51A:SALH5]
+~w~Step on it, Toni.
+
+[SALH51B:SALH5]
+~w~If I'm right, then the Sicilians will be going after the mayor.
+
+[SALH51C:SALH5]
+~w~We gotta get to him before they do.
+
+[SALH511:SALH5]
+~w~This don't look good.
+
+[SALH554:SALH5]
+~w~Step on it Toni!
+
+[SALH512:SALH5]
+~w~You left ~b~Sal~w~ behind - go back and get him.
+
+[SALH513:SALH5]
+~w~God-damnit! They're here already!
+
+[SALH560:SALH5]
+~w~Burn 'em down Toni!
+
+[SALH561:SALH5]
+~w~I'm gonna get the mayor!
+
+[SALH514:SALH5]
+~w~Lousy bastards have taken him already!
+
+[SALH555:SALH5]
+~w~Come on Toni! This way!
+
+[SALH515:SALH5]
+~w~There they are!
+
+[SALH517:SALH5]
+~w~Where did those bastards come from?
+
+[SALH556:SALH5]
+~w~Behind us Toni!
+
+[SALH562:SALH5]
+~w~Toni, up ahead!
+
+[SALH519:SALH5]
+~w~Toni! Take out the chopper!
+
+[SALH522:SALH5]
+~w~They think they can hide at the lighthouse!
+
+[SALH557:SALH5]
+~w~Take those bastards out!
+
+[SALH558:SALH5]
+~w~Great shooting Toni!
+
+[SALH559:SALH5]
+~w~Now let's put this thing to bed.
+
+[SALH526:SALH5]
+~w~I'll drive! You keep us covered!
+
+[SALH527:SALH5]
+~w~Okay Toni... this is it.
+
+[SALH528:SALH5]
+~w~How many bastards are on this rock?
+
+[SALH553:SALH5]
+~w~Shoot one bastard, and another one bites you on the ass!
+
+[SALH523:SALH5]
+~r~You left Salvatore to be murdered by the Sicilians!
+
+[SALH524:SALH5]
+~r~Salvatore was killed!
+
+[SALH552:SALH5]
+~r~The mayor was killed!
+
+[SALH573:SALH5]
+~r~You destroyed your boat! You lost them!
+
+[SALH516:SALH5]
+<NOT USED>~w~Take out the guards and then let's get after them in that boat!
+
+[SALH518:SALH5]
+<NOT USED>~w~Another ~r~boat~w~ incoming...
+
+[SALH525:SALH5]
+<NOT USED>~w~Ha! They've left a rocket launcher on this thing!
+
+[SALH520:SALH5]
+<NOT USED>~y~I'll move closer to shore so we're more protected... Take it down!
+
+[SALH521:SALH5]
+<NOT USED>~w~Good work! Let's move out!
+
+[SALH53A:SALH5]
+~w~Torini... it figures.
+
+[SALH53B:SALH5]
+~w~Give him up!
+
+[SALH53C:SALH5]
+~w~The mayor is mine!
+
+[SALH53D:SALH5]
+~w~THIS CITY is mine!
+
+[SALH53E:SALH5]
+~w~Salvatore...
+
+[SALH53F:SALH5]
+~w~Sicily never wanted questo schifo di citta.
+
+[SALH53G:SALH5]
+~w~But, when tribute dried up, what could we do...?
+
+[SALH53H:SALH5]
+~w~It was nothing personal.
+
+[SALH53I:SALH5]
+~w~Nothing personal?
+
+[SALH53J:SALH5]
+~w~After what you put me through!
+
+[SALH53K:SALH5]
+~w~I'm gonna tear your fuckin' heart out!
+
+[SALH5TD:SALH5]
+~w~Take down ~r~Massimo's helicopter!
+
+[SALH5MO:SALH5]
+~r~Massimo~w~ is moving off!
+
+[SALH5GO:SALH5]
+~r~Massimo got away!
+
+[SALH571:SALH5]
+~w~Head for the ~y~Pier.
+
+[SALH570:SALH5]
+~w~Take out those ~r~Sicilian mobsters!
+
+[SALH572:SALH5]
+~w~Take out that ~r~Sicilian wise guy!
+
+[SALH510:SALH5]
+~w~Head over to ~y~City Hall.~w~ Watch out for any Sicilian wise guys!
+
+[SICI_01:SALH5]
+No, I'll talk to you later...
+
+[SICI_04:SALH5]
+Hey we're both back. You and me!
+
+[SICI_05:SALH5]
+We did it, huh?
+
+[SICI_06:SALH5]
+You know it.
+
+[SICI_07:SALH5]
+We cleaned it up with the Forellis.
+
+[SICI_08:SALH5]
+The Sindaccos we sent into the fucking sea.
+
+[SICI_09:SALH5]
+Now, I got the Sicilians on the phone, wanting peace.
+
+[SICI_10:SALH5]
+We all want peace! But my peace, not their fucking peace.
+
+[SICI_11:SALH5]
+I'm the big man now.
+
+[SICI_12:SALH5]
+No chump from the old country is gonna tell me what to do.
+
+[SICI_13:SALH5]
+I told them to go fuck themselves.
+
+[SICI_14:SALH5]
+You did? Was that wise?
+
+[SICI_15:SALH5]
+Hey, I'm the boss now. ME!
+
+[SICI_16:SALH5]
+Now let's go see the mayor about getting my charges dropped...
+
+[FIN1_01:SALH5]
+Hey! Mr. Mayor!
+
+[FIN1_03:SALH5]
+Yeah, thanks.
+
+[FIN1_04:SALH5]
+And that means...
+
+[FIN1_05:SALH5]
+Uh... the city is grateful to you?
+
+[FIN1_06:SALH5]
+Try again.
+
+[FIN1_07:SALH5]
+That you work for me, right?
+
+[FIN1_08:SALH5]
+Oh yeah, that I work for you.
+
+[FIN1_09:SALH5]
+Good. Now, don't call us. We'll call you.
+
+[FIN1_10:SALH5]
+Get outta here, prick.
+
+[FIN1_11:SALH5]
+Thank you, Mr. Leone.
+
+[FIN1_12:SALH5]
+Toni. We did it. We run things now. You and me.
+
+[FIN1_13:SALH5]
+We're a team, huh?
+
+[FIN1_14:SALH5]
+Now, I just need you to do one small thing for me;
+
+[FIN1_15:SALH5]
+I got some problems that I been dealing with...
+
+[FIN2_01:SALH5]
+Hey Uncle! How ya doin' huh?
+
+[FIN2_02:SALH5]
+You look good.
+
+[FIN2_03:SALH5]
+Ahhhh Salvatore, all we really wanted was clarity.
+
+[FIN2_04:SALH5]
+Yes, uncle. I appreciate that.
+
+[FIN2_07:SALH5]
+Good, very good.
+
+[FIN2_08:SALH5]
+Sneaky little bastard.
+
+[FIN2_09:SALH5]
+I wouldn't trust him a fucking inch.
+
+[FIN2_23:SALH5]
+Every dog has his day...
+
+[FIN2_10:SALH5]
+Yeah, but we did it.
+
+[FIN2_11:SALH5]
+Yeah. We cleaned up. You did good, Toni. You did real good.
+
+[FIN2_12:SALH5]
+I always knew you was a good kid. You saved my ass a few times.
+
+[FIN2_13:SALH5]
+And I appreciate that kind of loyalty.
+
+[FIN2_14:SALH5]
+Thank you.
+
+[FIN2_15:SALH5]
+A good worker. I like that. Respectful.
+
+[FIN2_19:SALH5]
+You can put a price on friendship?
+
+[FIN2_20:SALH5]
+The kind of friendship you and me have?
+
+[FIN2_21:SALH5]
+Shame on you! Come here.
+
+[FIN2_22:SALH5]
+You're a good kid, but shame on you.
+
+[SICI_02:SALH5]
+- Hey Toni! ~n~ - Sal! You're back where you belong.
+
+[FIN2_05:SALH5]
+- So, we are at peace now - you and the old country? ~n~ - Of course. Me and all my people.
+
+[FIN2_16:SALH5]
+- So I got you that half million I promised you. ~n~ - Half? Woah! I thought you, uh, said a couple?
+
+[FIN2_18:SALH5]
+I said one million dollars! But what?
+
+[FIN1_02:SALH5]
+We just saved you from that bunch of crazed Sicilians.
+
+{=================================== MISSION TABLE DONH1 ===================================}
+
+[DONH1JA:DONH1]
+~w~Toni, my ex-mentor, Avery Carrington, is flying into town today...
+
+[DONH1JB:DONH1]
+~w~It's come to my attention that he's working for the Panlantic Corporation.
+
+[DONH1JC:DONH1]
+~w~They'll do anything to get prime real estate.
+
+[DONH1JD:DONH1]
+~w~We HAVE to get hold of his plans to acquire land.
+
+[DONH1JE:DONH1]
+~w~Come on Toni! Get after him!
+
+[DONH1CA:DONH1]
+~w~Uh Toni, transportation would be a boon.
+
+[DONH1DA:DONH1]
+~w~Head for the Airport, Toni.
+
+[DONH1DB:DONH1]
+~w~We don't have a minute to lose.
+
+[DONH1EA:DONH1]
+~w~Oh yes. This is one of my better plans, for sure...
+
+[DONH1EB:DONH1]
+~w~I never knew I had it in me...
+
+[DONH1EC:DONH1]
+~w~This is going to make me a fortune...
+
+[DONH1ED:DONH1]
+~w~Yes sir, a fortune...
+
+[DONH1EE:DONH1]
+~w~Even Avery would be proud.
+
+[DONH1GA:DONH1]
+~w~There he is!
+
+[DONH1GB:DONH1]
+~w~Kill him Toni!
+
+[DONH1GC:DONH1]
+~w~I need those plans!
+
+[DONH1HA:DONH1]
+~w~Please, Toni... he's getting away!
+
+[DONH1IA:DONH1]
+~w~Oh, capital, Toni! ...quite literally!
+
+[DONH1IB:DONH1]
+~w~Now lets get this back to the safety of my, erm, 'place of abode'.
+
+[DONH1O0:DONH1]
+~w~Take Donald Love to the ~y~Airport.
+
+[DONH1O1:DONH1]
+~w~Kill ~r~Avery Carrington~w~ and get his plans!
+
+[DONH1O2:DONH1]
+~r~Avery~w~ is making a run for it! Stop him!
+
+[DONH1O3:DONH1]
+~r~Avery~w~ has got another ride. Don't let him get away!
+
+[DONH1O4:DONH1]
+~r~Avery~w~ is making a run for it! Get him!
+
+[DONH1O5:DONH1]
+~w~Pick up ~b~Donald Love.
+
+[DONH1O6:DONH1]
+~w~Good job! Pick up the ~g~plans.
+
+[DONH1O7:DONH1]
+~w~Take Donald and the plans back to the ~y~Flop-House.
+
+[DONH1O8:DONH1]
+~w~You've dropped the ~g~plans~w~! Go back and pick them up.
+
+[DONH1OA:DONH1]
+~w~They're on to you! ~r~Avery's~w~ making a run for it! Kill him!
+
+[DONH1OB:DONH1]
+~w~You need a vehicle.
+
+[DONH1OC:DONH1]
+~w~Don't lose ~b~Donald!
+
+[DONH1OD:DONH1]
+~w~Be careful! The plans will be lost if ~r~Avery's car~w~ is destroyed while he's in it!
+
+[DONH1OE:DONH1]
+~r~Avery Carrington~w~ is escaping. Get after him!
+
+[DONH1F0:DONH1]
+~r~The plans were destroyed!
+
+[DONH1F1:DONH1]
+~r~Avery Carrington escaped!
+
+[DONH1F2:DONH1]
+~r~Donald was killed!
+
+[DONH1OF:DONH1]
+~r~Avery Carrington~w~ is nearly at his destination. Stop him!
+
+[DONH1O9:DONH1]
+~w~Don't leave ~b~Donald~w~ behind! Those Colombians will kill him!
+
+[DONH1FA:DONH1]
+~w~Hmmm, Panlantic must have employed the Cartel to protect Avery.
+
+[LAND_01:DONH1]
+I know what you're thinking, Toni - how the mighty have fallen,
+
+[LAND_02:DONH1]
+but this is just a temporary blip, my man.
+
+[LAND_03:DONH1]
+Okay.
+
+[LAND_04:DONH1]
+Oh, don't be all touchy.
+
+[LAND_05:DONH1]
+I know I said some nasty things about this being your fault and all,
+
+[LAND_06:DONH1]
+but hubris is a nasty, nasty bedfellow - almost as nasty as termites.
+
+[LAND_07:DONH1]
+And trust me I've tried both recently.
+
+[LAND_08:DONH1]
+Wait, you and me... are on our way back!
+
+[LAND_09:DONH1]
+I never went away...
+
+[LAND_10:DONH1]
+We're in this together, amigo.
+
+[LAND_11:DONH1]
+No, we're not.
+
+[LAND_12:DONH1]
+Please!
+
+[LAND_13:DONH1]
+Please... please - forget about it, buddy.
+
+[LAND_18:DONH1]
+Come - I'll tell you about it on the drive.
+
+[LAND_19:DONH1]
+I hope you have your car. Mine's in the, err, shop... Yeah!
+
+[LAND_16:DONH1]
+- 10% of what? This? Oh you're too kind. ~n~ - Not of this... of something really big.
+
+[LAND_14:DONH1]
+- 'It's all your fault.' Pathetic. ~n~ - 10%?
+
+{=================================== MISSION TABLE DONH2 ===================================}
+
+[DONH2_1:DONH2]
+~w~Go to the ~y~church~w~ on Staunton Island.
+
+[DONH2_2:DONH2]
+~w~Beat up the ~r~reporter ~w~or target him with a gun to make him give you the photos.
+
+[DONH2_3:DONH2]
+~w~You got some photos of me. Where are they?
+
+[DONH2_4:DONH2]
+~w~Don't hurt me!
+
+[DONH2_5:DONH2]
+~w~Where are the God-damn photos?
+
+[DONH2_6:DONH2]
+~w~I don't know what you're talking about!
+
+[DONH2_7:DONH2]
+~w~Where are they?
+
+[DONH2_8:DONH2]
+~w~Please, no!
+
+[DONH2_9:DONH2]
+~w~Come on you little pussy! Give 'em up!
+
+[DONH210:DONH2]
+~w~Okay! Okay!
+
+[DONH2EX:DONH2]
+~w~I'll get you the photos!
+
+[DONH211:DONH2]
+~w~...I stashed the film in my lock-up!
+
+[DONH212:DONH2]
+~w~Go to the ~y~reporter's lock-up.
+
+[DONH213:DONH2]
+~w~Help! Help! I'm being kidnapped!
+
+[DONH214:DONH2]
+~w~Help! He's going to kill me!
+
+[DONH215:DONH2]
+~w~...I'm too gifted to die!
+
+[DONH216:DONH2]
+~w~...I can't die, I'm still working on my novel!
+
+[DONH217:DONH2]
+~w~My editor never said anything about this shit!
+
+[DONH218:DONH2]
+~w~Don't move a muscle, assweed!
+
+[DONH219:DONH2]
+~w~Stop right there, dickhead!
+
+[DONH220:DONH2]
+~w~For crying out loud, will you stop running away!
+
+[DONH221:DONH2]
+~w~Toni! At last!
+
+[DONH222:DONH2]
+~w~A reporter witnessed us killing Avery!
+
+[DONH223:DONH2]
+~w~He has photos! Oh, God! I'm finished!
+
+[DONH224:DONH2]
+~w~Calm down will you! Where is this reporter?
+
+[DONH225:DONH2]
+~w~Oh, Toni, you're wonderful!
+
+[DONH226:DONH2]
+~w~Apparently he's been working on an undercover job at the church on Staunton Island.
+
+[DONH227:DONH2]
+~w~Get the photos and bury him!
+
+[DONH228:DONH2]
+~r~Ned escaped!
+
+[DONH230:DONH2]
+~w~Kill ~r~Ned Burner.
+
+[DONH231:DONH2]
+~r~Ned died before you got the photos!
+
+[DONH229:DONH2]
+BULLSHIT
+
+[DONCUTA:DONH2]
+~w~Here they are... take them! I didn't get them processed yet.
+
+[DONCUTB:DONH2]
+~w~You piece of shit!
+
+[DONH2SM:DONH2]
+Scare
+
+[DONH233:DONH2]
+Keep intimidating the reporter. If his scare meter gets too low, he may try to escape.
+
+[DONH2LB:DONH2]
+~w~You left ~b~the reporter ~w~behind. Go back and get him.
+
+[DONH2LC:DONH2]
+~r~You lost the reporter.
+
+{=================================== MISSION TABLE DONH3 ===================================}
+
+[DONH3I1:DONH3]
+~w~I'm back!
+
+[DONH3I2:DONH3]
+~w~Back from the dead, Toni! Risen anew, like a phoenix from the ashes.
+
+[DONH3I3:DONH3]
+~w~Like Lazarus... yes... Lazarus Love!
+
+[DONH3I4:DONH3]
+~w~Ah, I'm going to be rich again!
+
+[DONH3I5:DONH3]
+~w~Panlantic are going to pay me a fortune to see this deal through!
+
+[DONH3I6:DONH3]
+~w~We did it Toni!
+
+[DONH3I7:DONH3]
+~w~Whatever.
+
+[DONH3I8:DONH3]
+~w~It's time for a little soiree with a very exclusive guest list.
+
+[DONH3I9:DONH3]
+~w~Come on!
+
+[DONH3C1:DONH3]
+~w~We're going to need some transportation, Toni. We don't have much time.
+
+[DONH3L1:DONH3]
+~w~You need ~b~Donald.~w~ Go back and get him!
+
+[DONH3L2:DONH3]
+~w~Come on Toni! We haven't got long!
+
+[DONH3L3:DONH3]
+~w~Put the corpse back!
+
+[DONH3_5:DONH3]
+~w~Toni, I've been dying for this party.
+
+[DONH35D:DONH3]
+~w~Just like my guests.
+
+[DONH35A:DONH3]
+~w~Find a ~b~corpse.
+
+[DONH35B:DONH3]
+~w~Get ~b~Avery's corpse.
+
+[DONH35C:DONH3]
+~w~Get ~b~Ned's corpse.
+
+[DONH3_6:DONH3]
+~w~Take Donald and Avery to the ~y~Airport.
+
+[DONH36A:DONH3]
+~w~Hey! Bring that ambulance back!
+
+[DONH36B:DONH3]
+~w~Avery.
+
+[DONH36C:DONH3]
+~w~Oh, Avery! How you've aged since we last met.
+
+[DONH36D:DONH3]
+~w~...you used to feed me such pearls of wisdom.
+
+[DONH36E:DONH3]
+~w~...and soon I shall dine again!
+
+[DONH36F:DONH3]
+~w~...My God! He's wearing a wig!
+
+[DONH36G:DONH3]
+~w~Toni. Take me and Avery over to his private jet at the airport.
+
+[DONH3_7:DONH3]
+~w~Take Donald and Ned to the ~y~Airport.
+
+[DONH37F:DONH3]
+~w~Toni. Take me and Ned here to the Airport.
+
+[DONH37A:DONH3]
+~w~Hey! That guy's stealing the stiff!
+
+[DONH37B:DONH3]
+~w~Ah, Ned Burner, ace reporter.
+
+[DONH37C:DONH3]
+~w~Ah, Ned. I'm going to give you exclusive rights to
+
+[DONH37D:DONH3]
+~w~cover my wonderful party.
+
+[DONH37E:DONH3]
+~w~I wouldn't invite just anyone to my little bash you know.
+
+[DONH37G:DONH3]
+~w~Invitations are to die for.
+
+[DONH3_8:DONH3]
+~w~Take Avery's body to the ~y~Airport.
+
+[DONH3_9:DONH3]
+~w~Take Ned's body to the ~y~Airport.
+
+[DONH3A1:DONH3]
+~w~Be sure to get Avery's gamey old remains here before security discovers us.
+
+[DONH3A2:DONH3]
+~w~His autopsy is scheduled anytime now.
+
+[DONH3N1:DONH3]
+~w~Be sure to get Ned Burner's corpse here before security discover us. They'll be interring him anytime now.
+
+[DONH3F1:DONH3]
+~r~Love is dead.
+
+[DONH3F2:DONH3]
+~r~You lost Avery's body!
+
+[DONH3F3:DONH3]
+~r~You lost Ned's body!
+
+[DONH3C2:DONH3]
+~w~Airport Security will lock Avery Carrington's Hangar at 22:00.
+
+[DONH3F4:DONH3]
+~r~Too late - airport security have locked the hanger!
+
+[DONH3F5:DONH3]
+~r~Too late - airport security have found Donald with Avery's corpse!
+
+[DONH3W1:DONH3]
+~w~Hurry up! Airport Security will lock Avery Carrington's Hangar at 22:00.
+
+[DONH3F6:DONH3]
+~r~Too late - airport security have found Donald with Ned's corpse!
+
+{=================================== MISSION TABLE DONH4 ===================================}
+
+[DONH4A:DONH4]
+~w~Donald sent me to pick up some... er... hardware.
+
+[DONH4B:DONH4]
+~w~A'ight.
+
+[DON4EX1:DONH4]
+~w~I got what you boys need. But it's gonna cost.
+
+[DON4EX2:DONH4]
+~w~Don said you'd pay me up front and he'd 'reimburse' you later.
+
+[DONH4C:DONH4]
+~w~...I bet he did.
+
+[DONH4D:DONH4]
+~w~Yeah, yeah right! Why don't you make it out to, 'Kiss My Ass'?
+
+[DONH4E:DONH4]
+~w~Now, where's the hardware?
+
+[DONH4F:DONH4]
+~w~Shit son! Hardware like this takes time to put together.
+
+[DON4EX4:DONH4]
+~w~I'll be in touch.
+
+[DONH4G:DONH4]
+Mission Passed!
+
+[DONH4_1:DONH4]
+NONE
+
+[DONH4PS:DONH4]
+~w~8-ball will let you know when the hardware is ready.
+
+{=================================== MISSION TABLE DONH5 ===================================}
+
+[DONH5_0:DONH5]
+Van
+
+[DNH5_A0:DONH5]
+~w~Look man, this truck is loaded. Know what I'm saying? Drive cool.
+
+[DNH5_A1:DONH5]
+~w~Yeah? It's all good.
+
+[DNH5_A2:DONH5]
+~w~Sure. I'll put him on.
+
+[DNH5_A3:DONH5]
+~w~Toni, we're one little job away from being fabulously rich.
+
+[DNH5_A4:DONH5]
+~w~We've scoured plans of Fort Staunton. Its weakest points are along the old subway that runs underneath the area.
+
+[DNH5_A5:DONH5]
+~w~Great Don! All I gotta do is dodge a hundred wacko Italians.
+
+[DNH5_A6:DONH5]
+~w~Just head along the Porter Tunnel and you'll find your way in just fine.
+
+[DNH5_B0:DONH5]
+~w~Hey! You're not supposed to be down here!
+
+[DNH5_B1:DONH5]
+~w~Get the hell out of here!
+
+[DNH5_C0:DONH5]
+~w~Get in the ~b~van.
+
+[DNH5_C4:DONH5]
+~w~Place the ~y~explosives!
+
+[DNH5_C5:DONH5]
+~w~Place the remaining ~y~explosives!
+
+[DNH5_C6:DONH5]
+~w~Escape through the ~y~subway entrance!
+
+[DNH5_D0:DONH5]
+~w~The Forellis? What are they doing here?
+
+[DNH5_D1:DONH5]
+~w~Don't let the Forellis wreck the van!
+
+[DNH5_1:DONH5]
+~w~Use a vehicle to smash through the gates
+
+[DONH5_2:DONH5]
+~w~Ram the gates harder!
+
+[DNH5_X0:DONH5]
+~r~You wrecked the van!
+
+[DNH5_C1:DONH5]
+~w~Get back in the ~b~van.
+
+[DNH5_C2:DONH5]
+~w~Head for one of the Porter Road Tunnel ~y~entrances.
+
+[DNH5_C3:DONH5]
+~w~Follow the ~y~tunnel.
+
+[DNH5_E0:DONH5]
+~w~Kill those ~r~construction workers.
+
+[DNH5_E1:DONH5]
+~w~Kill that ~r~construction worker.
+
+[DNH5_E2:DONH5]
+~w~The Forellis have blocked the way back. Find another ~y~exit.
+
+[DNH5_E3:DONH5]
+~w~Use a vehicle to smash through the gates and reach the ~y~exit.
+
+[DNH5_X1:DONH5]
+~r~The Forellis wrecked the van!
+
+[DNH5_W1:DONH5]
+~w~Don't get too far from the ~b~van!
+
+[DNH5_E4:DONH5]
+~w~Don't leave any ~r~witnesses.
+
+{=================================== MISSION TABLE DONH6 ===================================}
+
+[DONH6_V:DONH6]
+~r~v1.00
+
+[DONH6_1:DONH6]
+~w~Head up to the ~y~house.
+
+[DONH6_5:DONH6]
+~w~Oh, my God! Toni! Do something!
+
+[DONH6_6:DONH6]
+~w~You have ~1~ seconds to return to the grounds!
+
+[DONH6_7:DONH6]
+Return Time
+
+[DONH6_8:DONH6]
+~r~You failed to return to the mansion... Donald has been executed!
+
+[DONH610:DONH6]
+~w~Get a car!
+
+[DONH611:DONH6]
+~w~Oh good lord! There's more of them!
+
+[DONH624:DONH6]
+~W~Floor it Toni!
+
+[DONH612:DONH6]
+~w~We made it!
+
+[DONH623:DONH6]
+~w~Take me to Avery's jet. He and Ned are still onboard, so I won't be travelling alone.
+
+[DONH622:DONH6]
+~w~Head to ~y~Avery's jet.
+
+[DONH613:DONH6]
+~w~Let's get to the airport.
+
+[DONH625:DONH6]
+~w~Head to the ~y~airport.
+
+[DONH615:DONH6]
+~w~You left ~b~Donald~w~ behind! Go back and get him!
+
+[DONH619:DONH6]
+~r~Donald was killed!
+
+[DONH6_9:DONH6]
+~w~D? Come on! Let's go!
+
+[DONH614:DONH6]
+~w~Are you sure it's safe, Toni?
+
+[DONH616:DONH6]
+~w~Oh... my... GARDEN!
+
+[DOH616A:DONH6]
+~w~Look what you've done to my beautiful garden!
+
+[DONH617:DONH6]
+~w~D... we can do some landscaping or escaping. It's up to you.
+
+[DONH618:DONH6]
+~w~Get me to the airport!
+
+[DONH620:DONH6]
+~w~I do so hate goodbyes my friend.
+
+[DOH620A:DONH6]
+~w~Let's just say 'adieu'.
+
+[DONH621:DONH6]
+~w~D... it's been an education.
+
+[DONH66S:DONH6]
+~w~You have ~1~ second to return to the grounds!
+
+[DONH66A:DONH6]
+~w~Take out those ~r~Colombian gangsters!
+
+[DONP_01:DONH6]
+Caterpillars... cater... cater... cater... cat... No that's no good.
+
+[DONP_02:DONH6]
+Ohmmmmmmmm. Dammit.
+
+[DONP_03:DONH6]
+It's just so... Oh, shit if I just had something cold to cuddle up to,
+
+[DONP_06:DONH6]
+Antonio! Oh, I'm just seeking spiritual enlightenment,
+
+[DONP_07:DONH6]
+if you must ask, but not today.
+
+[DONP_08:DONH6]
+Maybe tomorrow.
+
+[DONP_09:DONH6]
+Your message seemed kinda anxious.
+
+[DONP_10:DONH6]
+Anxious? I'm meditating. Anxious, moi?
+
+[DONP_11:DONH6]
+I'm at one with the universe. That's just impossible.
+
+[DONP_12:DONH6]
+Oh, shit, that's right.
+
+[DONP_13:DONH6]
+Um, there is a load of Colombians coming up here
+
+[DONP_14:DONH6]
+to potentially kill me if I don't keep my mouth shut and pay them all off.
+
+[DONP_15:DONH6]
+Oh! I guess that would explain all the Colombians hovering around outside.
+
+[DONP_16:DONH6]
+Oh shit! Please, Antonio, you have to get me out of here!
+
+[DONP_17:DONH6]
+I don't want to... Please! I don't wanna die! I don't...
+
+[DONP_18:DONH6]
+So much for being at one with the universe, huh?
+
+[DONP_19:DONH6]
+Thank you, Toni! I'll make it... I'll make it worth your while, I promise.
+
+[DONP_04:DONH6]
+- it'd be so easy... ~n~ - What's going on, D?
+
+{=================================== MISSION TABLE TOSH1 ===================================}
+
+[TOSH1AB:TOSH1]
+~w~Stop him!
+
+[TOSH1AC:TOSH1]
+~w~Get him!
+
+[TOSH1AD:TOSH1]
+~w~Shoot him!
+
+[TOSH1AA:TOSH1]
+~w~There he is!
+
+[TOSH120:TOSH1]
+~w~Steal the Yakuza ~b~arms shipment~w~ from Bedford Point.
+
+[TOSH121:TOSH1]
+~w~You'll have to get past the ~r~Yakuza guards.
+
+[TOSH122:TOSH1]
+~w~Look out for more ~r~Yakuza boats.
+
+[TOSH130:TOSH1]
+~w~Take the weapons to ~y~Toshiko's contact.
+
+[TOSH131:TOSH1]
+~w~Get back to the ~b~arms shipment.
+
+[TOSH1BA:TOSH1]
+~w~That's some damn fine artillery you've got there boy!
+
+[TOSH1BB:TOSH1]
+~w~You know, I do so much business at these docks I should've set myself up here,
+
+[TOSH1BC:TOSH1]
+~w~not half way down the God-damn island!
+
+[TOSH1BD:TOSH1]
+~w~Well, it's been a blast!
+
+[TOSH1DB:TOSH1]
+~r~The weapons have been destroyed!
+
+[TOSH1PH:TOSH1]
+~w~The Yakuza will be guarding their shipment. You may need to call in at Phil Cassidy's on the way.
+
+[DEAD_01:TOSH1]
+So this is the big tough gangster?
+
+[DEAD_02:TOSH1]
+You don't look so tough.
+
+[DEAD_03:TOSH1]
+... Thanks.
+
+[DEAD_04:TOSH1]
+Do you know what it is to live without love, Mr Toni?
+
+[DEAD_05:TOSH1]
+It is to live with hate...
+
+[DEAD_06:TOSH1]
+I'll take your word for it.
+
+[DEAD_07:TOSH1]
+It is my earnest wish to destroy a man, Mr. Cipriani.
+
+[DEAD_08:TOSH1]
+Destroy... not merely kill.
+
+[DEAD_09:TOSH1]
+I want him, and his whole organization, weakened and humiliated before he dies.
+
+[DEAD_10:TOSH1]
+I want him to suffer.
+
+[DEAD_11:TOSH1]
+Okay.
+
+[DEAD_12:TOSH1]
+This man I want you to destroy is my husband: Kazuki Kasen.
+
+[DEAD_13:TOSH1]
+Don't worry.
+
+[DEAD_14:TOSH1]
+For your services you will be handsomely rewarded.
+
+[DEAD_15:TOSH1]
+Well what if I say no?
+
+[DEAD_16:TOSH1]
+You won't... because while I merely want him dead, you need him dead.
+
+[DEAD_17:TOSH1]
+In truth, you have already dealt him a severe blow, Mr. Cipriani.
+
+[DEAD_18:TOSH1]
+However, he is taking delivery of more munitions today.
+
+[DEAD_19:TOSH1]
+I want you to steal those weapons from right under his ignorant nose.
+
+{=================================== MISSION TABLE TOSH2 ===================================}
+
+[TOSH2AA:TOSH2]
+~w~Mr. Toni.
+
+[TOSH2AL:TOSH2]
+~w~My husband was greatly infuriated by your actions.
+
+[TOSH2AB:TOSH2]
+~w~You have made him, and his men,
+
+[TOSH2AM:TOSH2]
+~w~look like the fools they are.
+
+[TOSH2AC:TOSH2]
+~w~I aim to please. What's next princess?
+
+[TOSH2AE:TOSH2]
+~w~My husband is moving a great quantity of cash from his Casino.
+
+[TOSH2AF:TOSH2]
+~w~I want you to destroy all of that money.
+
+[TOSH2AG:TOSH2]
+~w~I can find a damn good use for that money, sweetheart.
+
+[TOSH2AH:TOSH2]
+~w~I want his money burning in the street for all to see.
+
+[TOSH2AI:TOSH2]
+~w~Okay... okay... when's this move gonna happen?
+
+[TOSH2AJ:TOSH2]
+~w~It has already begun.
+
+[TOSH2AK:TOSH2]
+~w~They're leaving the casino right now, so please, you don't have much time.
+
+[TOSH2O0:TOSH2]
+~w~Destroy ALL the ~r~security vans.~w~ Don't let any reach the ~y~Yakuza compound!
+
+[TOSH2O1:TOSH2]
+~w~They're running! Don't let any ~r~vans~w~ escape!
+
+[TOSH2O2:TOSH2]
+~w~You've spooked them! Don't let the ~r~vans ~w~escape!
+
+[TOSH2E1:TOSH2]
+~w~The ~r~convoy~w~ is getting near the ~y~Yakuza compound!
+
+[TOSH2E2:TOSH2]
+~w~A ~r~van~w~ is nearly at the ~y~Yakuza compound!
+
+{=================================== MISSION TABLE TOSH3 ===================================}
+
+[TOSH3M1:TOSH3]
+~w~Anyone home?
+
+[TOSH3M2:TOSH3]
+~w~Mr. Toni? A moment please...
+
+[TOSH3M3:TOSH3]
+~w~My husband is furious.
+
+[TOSH3EA:TOSH3]
+~w~He wonders how you come to know when and where to attack him so precisely.
+
+[TOSH3M4:TOSH3]
+~w~Unless he's a fool, he'll work it out soon enough.
+
+[TOSH3M5:TOSH3]
+~w~Perhaps, we should help him. His men gossip like old women.
+
+[TOSH3EB:TOSH3]
+~w~Let's give them something to talk about.
+
+[TOSH3M6:TOSH3]
+~w~Where are we going?
+
+[TOSH3M7:TOSH3]
+~w~The opera.
+
+[TOSH3M8:TOSH3]
+~w~The opera? Me? You kidding?
+
+[TOSH3M9:TOSH3]
+~w~Don't be ridiculous Mr. Toni. Everyone loves the opera.
+
+[TOSH3A:TOSH3]
+~w~If you bring my car around we can collect your tuxedo.
+
+[TOSH3EC:TOSH3]
+~w~We don't have long, the show starts very soon.
+
+[TOSH3B:TOSH3]
+~w~Bring ~b~Toshiko's car~w~ round.
+
+[TOSH3C:TOSH3]
+~w~Pick up ~b~Toshiko.
+
+[TOSH3C2:TOSH3]
+~w~Get a Tuxedo from ~y~Mr. Benz.
+
+[TOSH3B3:TOSH3]
+~w~Take Toshiko back to her ~y~apartment.
+
+[TOSH3B4:TOSH3]
+~r~You left Toshiko behind.
+
+[TOSH3B2:TOSH3]
+Get back in ~b~Toshiko's car.
+
+[TOSH3C3:TOSH3]
+~w~Go to the ~y~Opera.
+
+[TOSH3D:TOSH3]
+~w~Where are you going? We're going to be late!
+
+[TOSH3D2:TOSH3]
+~w~Please don't leave me here Toni san!
+
+[TOSH3Z1:TOSH3]
+~w~Do you think I am a bad person Mr. Toni?
+
+[TOSH3Z2:TOSH3]
+~w~Well, princess, I ain't exactly a saint.
+
+[TOSH3Z3:TOSH3]
+~w~No... A saint wouldn't be much use to me.
+
+[TOSH3Z4:TOSH3]
+~w~My husband is Samurai, Mr. Toni.
+
+[TOSH3Z5:TOSH3]
+~w~He is very strong... but very, very bad.
+
+[TOSH3Z6:TOSH3]
+~w~He only married me to become waka-gashira in Liberty City.
+
+[TOSH3Z7:TOSH3]
+~w~He has never loved me... he prefers the company of his men.
+
+[TOSH3Z8:TOSH3]
+~w~Do you understand?
+
+[TOSH3Z9:TOSH3]
+~w~When he finds out what you're doing, you know he's going to kill you.
+
+[TOSH3Z0:TOSH3]
+~w~I do not care for life or death anymore, only freedom.
+
+[TOSH3ZB:TOSH3]
+~w~What a relaxing world view.
+
+[TOSH3E:TOSH3]
+~w~Italian blood don't mix with no Japo blood.
+
+[TOSH3F:TOSH3]
+~w~But, it'll mix just fine on the sidewalk!
+
+[TOSH3G:TOSH3]
+~w~Protect Toshiko and escape in ~b~her car.
+
+[TOSH3H:TOSH3]
+~w~Protect ~b~Toshiko~w~ and take her back to her ~y~apartment.
+
+[TOSH3S1:TOSH3]
+~w~My car!
+
+[TOSH3S2:TOSH3]
+~w~Save us Toni!
+
+[TOSH3S3:TOSH3]
+~w~Come on Toni!
+
+[TOSH3S4:TOSH3]
+~w~Get us out of here!
+
+[TOSH3S5:TOSH3]
+~w~SAVE ME!
+
+[TOSH3S6:TOSH3]
+~w~HELP!
+
+[TOSH3S7:TOSH3]
+~w~We're not going to make it!
+
+[TOSH3S8:TOSH3]
+~w~HELP!
+
+[TOSH3S9:TOSH3]
+~r~Toshiko is dead!
+
+[TOSH310:TOSH3]
+~r~Toshiko's car has been destroyed!
+
+[TOSH311:TOSH3]
+~r~You ran out of time!
+
+[TOSH3_1:TOSH3]
+NONE
+
+[TOS3NE1:TOSH3]
+~w~Protect Toshiko and kill the ~r~Forelli gangsters.
+
+[TOS3NE2:TOSH3]
+~w~Escape in ~b~Toshiko's car.
+
+[TOSH3EI:TOSH3]
+~w~The opera begins at 20:00. Don't be late!
+
+{=================================== MISSION TABLE TOSH4 ===================================}
+
+[TOSH4O2:TOSH4]
+~w~Kazuki's chopper is heading for the ~y~Casino!
+
+[TOSH4O4:TOSH4]
+~w~Kill ~r~Kazuki!
+
+[TOSH4O5:TOSH4]
+~w~Go to ~y~Toshiko's apartment.
+
+[TOSH4_3:TOSH4]
+~w~Kazuki is arriving in that chopper! Make your way to the helipad and kill him.
+
+[TOSH4Y1:TOSH4]
+~w~Get him!
+
+[TOSH4Y2:TOSH4]
+~w~Kill him!
+
+[TOSH4CA:TOSH4]
+~w~My men dishonor me...
+
+[TOSH4CB:TOSH4]
+~w~but it is fitting that I kill you myself.
+
+[TOSH4CC:TOSH4]
+~w~You two! Leave us!
+
+[TOSH4CD:TOSH4]
+~w~I am going to enjoy thrusting my sword into you.
+
+[TOSH4CE:TOSH4]
+~w~Yeah, I heard that about you.
+
+[TOSH4K1:TOSH4]
+~w~Shoot him!
+
+[TOSH4K2:TOSH4]
+~w~Kill him!
+
+[TOSH4_7:TOSH4]
+~w~Take Kazuki's sword to Toshiko as proof that he is dead.
+
+[TOSH4_8:TOSH4]
+~w~You spooked Kazuki! He's escaping! ...you've lost your chance to kill him!
+
+[TOSH4_C:TOSH4]
+Kazuki
+
+[TOSH4AA:TOSH4]
+~w~Hello?
+
+[TOSH4AB:TOSH4]
+~w~I'm bathing, Toni san.
+
+[TOSH4AC:TOSH4]
+~w~We have little time left.
+
+[TOSH4AD:TOSH4]
+~w~My husband knows now who is truly behind his losses.
+
+[TOSH4AE:TOSH4]
+~w~He's coming to kill me... and you.
+
+[TOSH4AF:TOSH4]
+~w~Well, I ain't waiting here for him. Where is he?
+
+[TOSH4AG:TOSH4]
+~w~He's in Belleville, gathering his men.
+
+[TOSH4AJ:TOSH4]
+~w~But soon, he will come here.
+
+[TOSH4AH:TOSH4]
+~w~Sayonara, sweetheart.
+
+[TOSH4AI:TOSH4]
+~w~My prayers go with you, Toni san. Good luck.
+
+[TOSH4F1:TOSH4]
+~r~Kazuki is laughing at you!
+
+[TOSH4OA:TOSH4]
+~w~Kill Kazuki's ~r~Guards!
+
+[TOSH4OB:TOSH4]
+~w~Get back to ~y~Kazuki's!
+
+[TOSH4OC:TOSH4]
+~w~Look out - here come more ~r~Yakuza!
+
+[TOSH4DA:TOSH4]
+~w~Shoot him!
+
+[TOSH4DB:TOSH4]
+~w~Kill him!
+
+[TOSH4DC:TOSH4]
+~w~Kill him, you assholes!
+
+[TOSH4O1:TOSH4]
+~w~Head over to ~y~Kazuki's place~w~ and kill him!
+
+[TOSH4O3:TOSH4]
+~w~Head for the ~y~helipad!
+
+[CASH_01:TOSH4]
+So, uh... Toshiko. It's over now.
+
+[CASH_02:TOSH4]
+Yes, yes, I knew that... hello, Mister Toni.
+
+[CASH_03:TOSH4]
+Hey. So, uuuh... you won.
+
+[CASH_04:TOSH4]
+You got what you wanted. Everything worked out great.
+
+[CASH_06:TOSH4]
+Great, yes, great. Really great.
+
+[CASH_07:TOSH4]
+So... its payment time sweetheart...
+
+[CASH_08:TOSH4]
+We're both of us fools and killers, Mister Toni.
+
+[CASH_09:TOSH4]
+I guess we are.
+
+[CASH_10:TOSH4]
+The world takes such a terrible toll on your spirit wouldn't you agree, Mister Toni?
+
+[CASH_11:TOSH4]
+I guess.
+
+[CASH_12:TOSH4]
+But you're free now. I mean you can go to Costa Rica, or Aruba or some-shit.
+
+[CASH_13:TOSH4]
+Start over new, that's what you always wanted.
+
+[CASH_14:TOSH4]
+I don't think I'm ready for a beach holiday, Mister Toni.
+
+[CASH_15:TOSH4]
+I've lost everything, and I have done so deliberately.
+
+[CASH_16:TOSH4]
+I've been granted everything I asked for.
+
+[CASH_17:TOSH4]
+Now, I just ask to be truly free.
+
+[CASH_18:TOSH4]
+Good bye, Toni-san.
+
+{=================================== MISSION TABLE COPCAR ===================================}
+
+[C_COMP1:COPCAR]
+~w~Vigilante mission: level 12 complete! Body Armor gives increased protection!
+
+[C_BREIF:COPCAR]
+~r~Suspect~w~ last seen in the ~a~ area.
+
+[C_BREIG:COPCAR]
+~r~Suspects~w~ last seen in the ~a~ area.
+
+[C_RANGE:COPCAR]
+~r~The police radio is out of range, get closer to a police station!
+
+[C_TIMEA:COPCAR]
+~w~Time bonus! +~1~ seconds
+
+[COPCART:COPCAR]
+~w~You have ~1~ seconds to return to a police vehicle before the mission ends.
+
+[COPCARU:COPCAR]
+~w~You have ~1~ second to return to a police vehicle before the mission ends.
+
+[C_CANC:COPCAR]
+~r~Vigilante mission cancelled!
+
+[C_TIME:COPCAR]
+~r~Your time as a law enforcer is over!
+
+[C_PASS3:COPCAR]
+~w~THREAT ELIMINATED! Reward: $~1~
+
+[C_LEVEL:COPCAR]
+~r~You let the criminals get away!
+
+[C_RANG2:COPCAR]
+~r~The police radio doesn't work in the subway!
+
+{=================================== MISSION TABLE CARS ===================================}
+
+[CARS_10:CARS]
+~w~Step into a car to start the test drive, or leave the lot to cancel the mission.
+
+[CARS_12:CARS]
+~w~If you leave the car you will fail the mission.
+
+[CARS_1:CARS]
+~w~Take one of the customers on a test drive.
+
+[CARS_2:CARS]
+~w~You'll have to work out what each customer is looking for in car performance.
+
+[CARS_3:CARS]
+~w~Then, use your driving skills to show them that the car delivers exactly what they want.
+
+[CARS_5:CARS]
+~w~Impress the customer.
+
+[CARS_6:CARS]
+~w~Customer down! Choose a different car!
+
+[CARS_30:CARS]
+~w~Get back to the ~y~car lot~w~ to close the deal!
+
+[CARS_C1:CARS]
+~w~Alright man, you're shaking the cops huh?
+
+[CARS_C2:CARS]
+~w~Yeah! That punk was asking for it!
+
+[CARS_P1:CARS]
+~w~Woah! This ride is supersonic!
+
+[CARS_P2:CARS]
+~w~Woohoo!
+
+[CARS_P3:CARS]
+~w~My aunt drives this speed!
+
+[CARS_P4:CARS]
+~w~Does this thing have airbags?
+
+[CARS_M1:CARS]
+~w~Ah, a nice relaxing drive.
+
+[CARS_M2:CARS]
+~w~Do you know what the speed limit is here?
+
+[CARS_M3:CARS]
+~w~Oh my God! You're going to kill us!
+
+[CARS_O1:CARS]
+~w~Oh yeah! No asphalt to contain us!
+
+[CARS_O2:CARS]
+~w~Reach for the sky, dude!
+
+[CARS_O3:CARS]
+~w~Radical flip, man!
+
+[CARS_SC:CARS]
+~w~Sale completed. Commission: $~1~ Time bonus: ~1~ seconds.
+
+[CARS_SD:CARS]
+~w~Level ~1~ completed. Commission: $~1~ Time bonus: ~1~ seconds.
+
+[CARS_IR:CARS]
+~1~ IN A ROW! Bonus! $~1~.
+
+[CARS_RE:CARS]
+~w~A little perk for our top salesman!
+
+[CARSIC1:CARS]
+~w~I need something that's tough to chase, man.
+
+[CARSIC2:CARS]
+~w~I need a ride that takes it to those sidewalk suckers.
+
+[CARSIP1:CARS]
+~w~This baby looks fast!
+
+[CARSIP2:CARS]
+~w~Oh man! I bet this bad-boy can fly!
+
+[CARSIM1:CARS]
+~w~I heard these things give a nice steady ride.
+
+[CARSIM2:CARS]
+~w~Ever since my operation I need a slower car.
+
+[CARSIO1:CARS]
+~w~It's gripped! Let's offroad!
+
+[CARSIO2:CARS]
+~w~My buddy can do gnarly rolls in his ride - I love that shit!
+
+[CARS_N1:CARS]
+~w~I ain't buying this trash!
+
+[CARS_N2:CARS]
+~w~I can't believe you thought I'd buy this wreck!
+
+[CARS_N3:CARS]
+~w~You used car salesmen are all the same!
+
+[CARS_Y1:CARS]
+~w~I'll take it!
+
+[CARS_Y2:CARS]
+~w~This is the perfect car for me!
+
+[CARS_Y3:CARS]
+~w~You've got yourself a deal!
+
+[CARS_R1:CARS]
+~w~I like the car, but I don't like the color.
+
+[CARS_R2:CARS]
+~w~Get the car resprayed!
+
+[CARS_D1:CARS]
+~w~I like it, but it's pretty beaten up!
+
+[CARS_D2:CARS]
+~w~Get the car repaired!
+
+[CARS_F1:CARS]
+~r~You destroyed the car!
+
+[CARS_F2:CARS]
+~r~You killed the customer!
+
+[CARS_F3:CARS]
+~r~You took too long! The customer got bored!
+
+[CARS_F4:CARS]
+~r~The customer hates the car!
+
+[CARS_F5:CARS]
+~r~Your time as a car salesman is over.
+
+[CARS_F6:CARS]
+~r~The customer hates the car - you crashed it!
+
+[CARS_F7:CARS]
+~r~The customer hates the car - you went too fast!
+
+[CARS_F8:CARS]
+~r~The customer hates the car - you went too slow!
+
+[CARS_SA:CARS]
+Sale
+
+[CARS_7:CARS]
+~w~Get into a ~b~car!
+
+[CARS_RF:CARS]
+~w~Capital Autos is now under your 'protection'. Make sure you collect their payments regularly.
+
+{=================================== MISSION TABLE BIKE ===================================}
+
+[BIKE_10:BIKE]
+~w~Get onto a bike to start the test ride, or leave the alley to cancel the mission.
+
+[BIKE_12:BIKE]
+~w~If you leave the bike you will fail the mission.
+
+[BIKE_1:BIKE]
+~w~Take one of the customers on a test ride.
+
+[BIKE_2:BIKE]
+~w~You'll have to work out what each customer is looking for in bike performance.
+
+[BIKE_3:BIKE]
+~w~Then, use your riding skills to show them that the bike delivers exactly what they want.
+
+[BIKE_5:BIKE]
+~w~Impress the customer.
+
+[BIKE_30:BIKE]
+~w~Get back to the ~y~bike shop~w~ to close the deal!
+
+[BIKE_C1:BIKE]
+~w~Alright man, you're shaking the cops huh?
+
+[BIKE_C2:BIKE]
+~w~Yeah! That punk was asking for it!
+
+[BIKE_P1:BIKE]
+~w~Yes! This bike is amazing!
+
+[BIKE_P2:BIKE]
+~w~Alright!
+
+[BIKE_P3:BIKE]
+~w~Come on, can't you go faster than this?
+
+[BIKE_P4:BIKE]
+~w~Look out!
+
+[BIKE_M1:BIKE]
+~w~Ah, a nice relaxing ride.
+
+[BIKE_M2:BIKE]
+~w~Do you know what the speed limit is here?
+
+[BIKE_M3:BIKE]
+~w~Oh my God! You're going to kill us!
+
+[BIKE_O1:BIKE]
+~w~Oh yeah! No asphalt to contain us!
+
+[BIKE_O2:BIKE]
+~w~Reach for the sky, dude!
+
+[BIKE_O3:BIKE]
+~w~Wicked stunts, dude!
+
+[BIKE_SC:BIKE]
+~w~Sale completed. Commission: $~1~ Time bonus: ~1~ seconds.
+
+[BIKE_IR:BIKE]
+~1~ IN A ROW! Bonus! $~1~.
+
+[BIKE_RE:BIKE]
+~w~A little perk for our top salesman!
+
+[BIKE_RF:BIKE]
+~w~Hogs & Cogs is now under your 'protection'. Make sure you collect their payments regularly.
+
+[BIKEIC1:BIKE]
+~w~I need something that's tough to chase, man.
+
+[BIKEIC2:BIKE]
+~w~I need a ride that takes it to those sidewalk suckers.
+
+[BIKEIP1:BIKE]
+~w~This crotch-rocket looks fast!
+
+[BIKEIP2:BIKE]
+~w~I want something that'll impress the chicks!
+
+[BIKEIM1:BIKE]
+~w~I heard these things give a nice steady ride.
+
+[BIKEIM2:BIKE]
+~w~I'm still a bit wobbly, so I need a slower bike.
+
+[BIKEIO1:BIKE]
+~w~It's gripped! Let's offroad!
+
+[BIKEIO2:BIKE]
+~w~These things can do cool stunts, right?
+
+[BIKE_N1:BIKE]
+~w~I ain't buying this trash!
+
+[BIKE_N2:BIKE]
+~w~I can't believe you thought I'd buy this wreck!
+
+[BIKE_N3:BIKE]
+~w~You used bike salesmen are all the same!
+
+[BIKE_Y1:BIKE]
+~w~I'll take it!
+
+[BIKE_Y2:BIKE]
+~w~This is the perfect bike for me!
+
+[BIKE_Y3:BIKE]
+~w~You've got yourself a deal!
+
+[BIKE_R1:BIKE]
+~w~I like the bike, but I don't like the color.
+
+[BIKE_R2:BIKE]
+~w~Get the bike resprayed!
+
+[BIKE_D1:BIKE]
+~w~I like it, but it's pretty beaten up!
+
+[BIKE_D2:BIKE]
+~w~Get the bike repaired!
+
+[BIKE_F1:BIKE]
+~r~You destroyed the bike!
+
+[BIKE_F2:BIKE]
+~r~You killed the customer!
+
+[BIKE_F3:BIKE]
+~r~You took too long! The customer got bored!
+
+[BIKE_F4:BIKE]
+~r~The customer hates the bike!
+
+[BIKE_F5:BIKE]
+~r~Your time as a bike salesman is over.
+
+[BIKE_F6:BIKE]
+~r~The customer hates the bike - you crashed it!
+
+[BIKE_F7:BIKE]
+~r~The customer hates the bike - you went too fast!
+
+[BIKE_F8:BIKE]
+~r~The customer hates the bike - you went too slow!
+
+[BIKE_B1:BIKE]
+~w~You have ~1~ seconds to get back on the ~b~bike!
+
+[BIKE_B2:BIKE]
+~w~Get the ~b~customer~w~ back on the bike!
+
+[BIKE_B3:BIKE]
+~w~Let the ~b~customer~w~ get on the bike!
+
+[BIKE_SA:BIKE]
+Sale
+
+[BIKE_7:BIKE]
+~w~Get onto a ~b~bike!
+
+[BIKE_S1:BIKE]
+~w~You've sold every Freeway we have in stock!
+
+[BIKE_S2:BIKE]
+~w~You've sold every PCJ 600 we have in stock!
+
+[BIKE_S3:BIKE]
+~w~You've sold every Faggio we have in stock!
+
+[BIKE_S4:BIKE]
+~w~You've sold every Sanchez we have in stock!
+
+[BIKE_SN:BIKE]
+~w~New stock has been delivered!
+
+{=================================== MISSION TABLE RAC1 ===================================}
+
+[RAC1_A0:RAC1]
+~w~If you wanna prove your ride ain't no bitch, get down the start line of the next street race.
+
+{=================================== MISSION TABLE RAC2 ===================================}
+
+[RAC2_A0:RAC2]
+~w~Hey, words out, there's gonna be a street race. Get your wheels over to the start line.
+
+{=================================== MISSION TABLE RAC3 ===================================}
+
+[RAC3_A0:RAC3]
+~w~Ain't no car faster. Ain't no driver sharper.
+
+[RAC3_A1:RAC3]
+~w~I'll see you at the next street race... in my rear view mirror.
+
+{=================================== MISSION TABLE BIK1 ===================================}
+
+[BIK1_A0:BIK1]
+~w~Think you can out ride me? I own your ass!
+
+[BIK1_A1:BIK1]
+~w~Bring your bike to the starting grid and let's get it on!
+
+{=================================== MISSION TABLE BIK2 ===================================}
+
+[BIK2_A0:BIK2]
+~w~If you think you can take me in a race, let your wheels do the talking!
+
+[BIK2_A1:BIK2]
+~w~I'll see you at the start line.
+
+{=================================== MISSION TABLE BIK3 ===================================}
+
+[BIK3_A0:BIK3]
+~w~It's this simple. On two wheels, I can't be beat. Let's take it to the street.
+
+{=================================== MISSION TABLE TT1 ===================================}
+
+[TT1_A0:TT1]
+~w~~k~ ~AMBUY~ ~w~to race. ~n~~k~ ~AMEXI~ ~w~to exit.
+
+[TT1_0:TT1]
+Time
+
+[TT1_1:TT1]
+~w~New Lap Record: ~1~:~1~
+
+[TT1_1A:TT1]
+~w~New Lap Record: ~1~:0~1~
+
+[TT1_C1:TT1]
+~w~3
+
+[TT1_C2:TT1]
+~w~2
+
+[TT1_C3:TT1]
+~w~1
+
+[TT1_C4:TT1]
+~w~GO!
+
+[TT1_D1A:TT1]
+~w~Air: ~1~ Feet
+
+[TT1_D2:TT1]
+~w~Lap ~1~ Time ~1~:~1~
+
+[TT1_D3:TT1]
+~w~Lap ~1~ Time ~1~:0~1~
+
+[TT1_D4:TT1]
+~w~Lap
+
+[TT1_F2:TT1]
+~r~You left the course!
+
+[TT1_F3:TT1]
+~r~You destroyed the bike!
+
+[TT1_D5A:TT1]
+~w~Air: ~1~ Feet - $10 bonus!
+
+[TT1_D1:TT1]
+~w~Air: ~1~ Meters
+
+[TT1_D5:TT1]
+~w~Air: ~1~ Meters - $10 bonus!
+
+[TT1_2:TT1]
+~w~You beat the target time! Next course unlocked - $100 bonus!
+
+[TT1_3:TT1]
+~w~You beat the target time - $100 bonus!
+
+[TTDONE:TT1]
+~w~All courses completed! You have unlocked the 'Manchez'.
+
+[TT1_2A:TT1]
+~r~You failed to beat the target time.
+
+[TT1_2B:TT1]
+~r~You failed to beat the Course Record.
+
+{=================================== MISSION TABLE RCR ===================================}
+
+[RCRACE3:RCR]
+~w~Beat the other RC vehicles in a ~1~ lap race around the park!
+
+[RCRACE4:RCR]
+~w~Beat the other RC vehicles in a ~1~ lap race around the airport!
+
+[RCRACE7:RCR]
+~w~Get ready...
+
+[RCRLAP5:RCR]
+~w~New Lap Record of ~1~ seconds!
+
+[RCRLAP6:RCR]
+~w~~1~ laps to go!
+
+[RCRLAP7:RCR]
+~w~Final lap!
+
+[RCRLTME:RCR]
+Lap Time
+
+[RCRLOSE:RCR]
+~r~You lost! You'll always be small-time!
+
+[RCRLOS2:RCR]
+~r~You'll never win a race if you can't keep to the course!
+
+[RCRTIME:RCR]
+~w~You have ~h~~1~ ~w~seconds to return to the course!
+
+[RCRWIN1:RCR]
+~w~Congratulations you WON! But you did not beat the lap record.
+
+[RCRWIN2:RCR]
+~w~Your next race will be ~1~ laps!
+
+[RCRWIN3:RCR]
+~w~RC Race in Belleville Park, Staunton is now available.
+
+[RCRWIN4:RCR]
+~w~RC Race in Shoreside Airport is now available.
+
+[RCRWIN5:RCR]
+~w~You have beaten all the levels! Now go back and beat your best lap times!
+
+[RCR1:RCR]
+~w~1
+
+[RCR2:RCR]
+~w~2
+
+[RCR3:RCR]
+~w~3
+
+[RCRGO:RCR]
+~w~GO!
+
+[RCBLAP:RCR]
+Best lap time so far is ~1~:~1~
+
+[RCBLAP1:RCR]
+Best lap time so far ~1~:0~1~
+
+[RCBLA2:RCR]
+Record Lap Time of ~1~:~1~
+
+[RCBLA3:RCR]
+Record Lap Time of ~1~:0~1~
+
+[RCRRLA1:RCR]
+~w~New Lap Record of ~1~:~1~
+
+[RCRRLA2:RCR]
+~w~New Lap Record of ~1~:0~1~
+
+[RCRACEA:RCR]
+Thrashin' RC
+
+[RCRACEB:RCR]
+Ragin' RC
+
+[RCRACEC:RCR]
+Chasin' RC
+
+[RCLE11:RCR]
+Thrashin' RC LEVEL ONE
+
+[RCLE12:RCR]
+Thrashin' RC LEVEL TWO
+
+[RCLE13:RCR]
+Thrashin' RC LEVEL THREE
+
+[RCLE21:RCR]
+Ragin' RC LEVEL ONE
+
+[RCLE22:RCR]
+Ragin' RC LEVEL TWO
+
+[RCLE23:RCR]
+Ragin' RC LEVEL THREE
+
+[RCLE31:RCR]
+Chasin' RC LEVEL ONE
+
+[RCLE32:RCR]
+Chasin' RC LEVEL TWO
+
+[RCLE33:RCR]
+Chasin' RC LEVEL THREE
+
+[RCRACE2:RCR]
+~w~Beat the other RC vehicles in a ~1~ lap race around the construction site!
+
+[RCRWIN6:RCR]
+~w~Race again to try and beat your best lap time!
+
+[RCQUIT:RCR]
+~r~Batteries running low?
+
+[RCRFAIL:RCR]
+~r~You failed to come first!
+
+[RCRLAP1:RCR]
+~c~1ST ~w~LAP
+
+[RCRLAP2:RCR]
+~c~2ND ~w~- LAP
+
+[RCRLAP3:RCR]
+~c~3RD ~w~LAP
+
+[RCRLAP4:RCR]
+~c~4TH ~w~LAP
+
+[RCRWIN:RCR]
+~w~Congratulations you WON with a best lap time of ~1~:~1~! $500 Bonus!
+
+[RCRWINB:RCR]
+~w~Congratulations you WON with a best lap time of ~1~:0~1~! $500 Bonus!
+
+{=================================== MISSION TABLE TOUR ===================================}
+
+[TOUR_H1:TOUR]
+~w~Photo Tips: stand ~h~in front~w~ of the tourist, ~h~not too far away.~w~ Make sure both the ~h~tourist and background scenery~w~ are in the picture.
+
+[TOUR_I2:TOUR]
+~w~Extra cash bonuses are awarded for high quality photos!
+
+[TOUR_S0:TOUR]
+~w~You have ~h~~1~~w~ shots remaining.
+
+[TOUR_S1:TOUR]
+~w~You only have one shot left. Make sure it's a good one!
+
+[TOUR_S2:TOUR]
+~w~Don't waste your shots! You have ~h~~1~~w~ shots remaining.
+
+[TOUR_S4:TOUR]
+~w~You must frame the ~b~tourist~w~ properly in the picture! You have ~h~~1~~w~ shots remaining.
+
+[TOUR_F1:TOUR]
+~r~The tourist is dead!
+
+[TOUR_F2:TOUR]
+~r~You lost the tourist!
+
+[TOUR_F3:TOUR]
+~r~You didn't get a photo of the tourist!
+
+[TOUR_F4:TOUR]
+~r~You ran out of time!
+
+[TOUR_F5:TOUR]
+~r~Tourist mission cancelled.
+
+[TOUR_F6:TOUR]
+~r~The mugger got away with the tourist's camera!
+
+[TOUR_O1:TOUR]
+~w~Take the tourist to the ~y~tourist spot.
+
+[TOUR_O2:TOUR]
+~w~Don't leave the ~b~tourist~w~ behind!
+
+[TOUR_O3:TOUR]
+~w~Follow the ~b~tourist~w~ on foot to the photo location.
+
+[TOUR_O4:TOUR]
+~w~Use the ~b~tourist's~w~ own camera to take the photo.
+
+[TOUR_O5:TOUR]
+~w~Take the tourist back to the ~y~airport.
+
+[TOUR_O6:TOUR]
+~w~Quickly! Time is running out!
+
+[TOUR_O7:TOUR]
+~w~Pick up the ~b~tourist.
+
+[TOUR_O8:TOUR]
+~w~Pick up the next ~b~tourist~w~ before the time expires.
+
+[TOUR_O9:TOUR]
+~w~You really should be following the ~b~tourist!~w~ You're wasting time.
+
+[TOUR_OA:TOUR]
+~w~The ~b~tourist~w~ is waiting for you to take a photo. Get a move on, time is running out!
+
+[TOUR_W1:TOUR]
+~w~Fee awarded: ~h~$~1~~w~ Sorry, No bonus this time.
+
+[TOUR_W2:TOUR]
+~w~Fee awarded: ~h~$~1~~w~ plus ~h~$~1~~w~ bonus for a good photo!
+
+[TOUR_W3:TOUR]
+~w~Fee awarded: ~h~$~1~~w~ plus ~h~$~1~~w~ bonus for a great photo!
+
+[TOUR_W4:TOUR]
+~w~Fee awarded: ~h~$~1~~w~ plus ~h~$~1~~w~ bonus for an excellent photo!
+
+[TOUR_W5:TOUR]
+~w~Well done! All 'Sights before Flights' missions completed. $~1~ completion bonus awarded!
+
+[TOURDAM:TOUR]
+~w~SIGHT ~1~: ~w~Take this tourist to the Cochrane Dam and take a photo to prove he's been there!
+
+[TOURBRI:TOUR]
+~w~SIGHT ~1~: ~w~This lady wants to see the Callahan Bridge, from the Portland side.
+
+[TOURDRK:TOUR]
+~w~SIGHT ~1~: ~w~Take a picture of this film fan outside, the actor, Black Lightman's House, on Cedar Grove, Shoreside Vale.
+
+[TOURSTA:TOUR]
+~w~SIGHT ~1~: ~w~Take a photo of this sports fanatic outside the Liberty Memorial Coliseum on Staunton.
+
+[TOURCHU:TOUR]
+~w~SIGHT ~1~: ~w~Shepherd this pilgrim to historic Liberty Cathedral on Staunton.
+
+[TOURBCH:TOUR]
+~w~SIGHT ~1~: ~w~Show this tourist the beautiful view of Portland Rock and Lighthouse, from Portland beach.
+
+[TOURCHI:TOUR]
+~w~SIGHT ~1~: ~w~The oriental ambience of Chinatown Plaza in Portland is the exotic destination for this tourist.
+
+[TOURSHO:TOUR]
+~w~SIGHT ~1~: ~w~This tourist wants her friends to think she shopped at the exclusive Staunton Shopping Mall. Take her there and snap her picture.
+
+[TOURCAS:TOUR]
+~w~SIGHT ~1~: ~w~Here's a gambler who wants his photo taken outside the world famous Casino in Staunton.
+
+[TOURMUS:TOUR]
+~w~SIGHT ~1~: ~w~This scholar wants to visit the Liberty City Museum on Staunton and get a photo that shows the impressive scale of the building.
+
+[TOURHAL:TOUR]
+~w~SIGHT ~1~: ~w~This tourist wants to visit City Hall on Staunton, one more time before he leaves.
+
+[TOURRED:TOUR]
+~w~SIGHT ~1~: ~w~This guy's friends say he isn't man enough to visit a Strip Club in Portland's Red Light district. Show them otherwise!
+
+[TOURMU0:TOUR]
+~w~The ~r~mugger~w~ stole the tourist's camera! Get it back!
+
+[TOURMU1:TOUR]
+~w~That's one less criminal to worry about! Pick up the ~g~camera.
+
+[TOUR00:TOUR]
+~w~Take the tourist to the ~y~Cochrane Dam~w~ in Shoreside Vale.
+
+[TOUR01:TOUR]
+~w~Take the tourist to the ~y~Liberty Memorial Coliseum~w~ on Staunton.
+
+[TOUR02:TOUR]
+~w~Take the tourist to ~y~Chinatown Plaza~w~ in Portland.
+
+[TOUR03:TOUR]
+~w~Take the tourist to ~y~Liberty Cathedral~w~ on Staunton.
+
+[TOUR06:TOUR]
+~w~Take the tourist to the ~y~Strip Club~w~ in Portland's Red Light district.
+
+[TOUR07:TOUR]
+~w~Take the tourist to the ~y~Liberty City Museum~w~ on Staunton.
+
+[TOUR08:TOUR]
+~w~Take the tourist to the ~y~Casino~w~ on Staunton.
+
+[TOUR10:TOUR]
+~w~Take the tourist to the ~y~City Hall~w~ on Staunton.
+
+[TOUR11:TOUR]
+~w~Take the tourist to ~y~Portland beach.
+
+[TOUR04:TOUR]
+~w~Take the tourist to the ~y~Callahan Bridge~w~, Portland side.
+
+[TOUR09:TOUR]
+~w~Take the tourist to the actor, ~y~Black Lightman's House~w~, on Cedar Grove, Shoreside Vale.
+
+[TOUR_I1:TOUR]
+~w~Escort tourists to famous Liberty City Landmarks.
+
+[TOUR_IA:TOUR]
+~w~Take souvenir photographs of them when you get there.
+
+[TOUR_IB:TOUR]
+~w~Then bring them back before their plane departs.
+
+[TOURMEM:TOUR]
+~w~SIGHT ~1~: ~w~This veteran wants to pay homage to his lost comrades at the Liberty City War Memorial in Belleville Park, Staunton.
+
+[TOUR05:TOUR]
+~w~Take the tourist to the ~y~Liberty City War Memorial~w~ in Belleville Park, Staunton.
+
+{=================================== MISSION TABLE PIZZA ===================================}
+
+[PIZ1_06:PIZZA]
+~w~Press~h~ ~k~ ~TGSUB~ ~w~when on the bike to cancel the mission.
+
+[PIZ1_02:PIZZA]
+~w~You're out of pizza! Return to ~y~Joe's Pizza Restaurant~w~ to get some more.
+
+[PIZ1_07:PIZZA]
+~r~You killed the customer! You're fired!
+
+[PIZ1_08:PIZZA]
+~r~You're out of time and out of a job!
+
+[PIZ1_09:PIZZA]
+~r~You wrecked our bike! Get out of here!
+
+[PIZ1_11:PIZZA]
+~w~You need the Pizza ~b~bike~w~ to deliver the orders!
+
+[PIZ1_12:PIZZA]
+Pizzas
+
+[PIZ1_13:PIZZA]
+~w~Pizza! Hot and ready to go! I love 'em!
+
+[PIZ1_14:PIZZA]
+~w~These are to go! ...So go!
+
+[PIZ1_15:PIZZA]
+~w~This one's extra spicy!
+
+[PIZ1_16:PIZZA]
+~w~Get your finger out of your ass and deliver these, pronto!
+
+[PIZ1_17:PIZZA]
+~w~These pizzas need delivering today, not next year!
+
+[PIZ1_18:PIZZA]
+~w~Pizza delivery beneath you? Well, excuse me professor!
+
+[PIZ1_19:PIZZA]
+~w~Are you gonna drop these off or what?
+
+[PIZ1_20:PIZZA]
+~w~You're fired! ...only joking. But I won't be if these aren't delivered on time!
+
+[PIZ1_21:PIZZA]
+~w~Pizzas! Come on! We got fat people waiting!
+
+[PIZ1_22:PIZZA]
+~w~Have you been spitting on the pizzas? ...you should! It all adds to the taste!
+
+[PIZ1_23:PIZZA]
+~w~Do you think these are gonna deliver themselves?
+
+[PIZ1_24:PIZZA]
+~w~If these are cold when you drop them off, there'll be hell to pay!
+
+[PIZ1_25:PIZZA]
+~w~Move your ass this time!
+
+[PIZ1_26:PIZZA]
+~w~Hey, get these delivered!
+
+[PIZ1_27:PIZZA]
+~w~Okay, drop these off and come back for some more.
+
+[PIZ1_28:PIZZA]
+~w~Our pizzas kick ass! Drop these off on time or I'll kick yours!
+
+[PIZ1_29:PIZZA]
+~w~Back for more? I'm fresh out of abuse for you buddy.
+
+[PIZ1_30:PIZZA]
+~w~I think I sneezed on one of those! But never mind. Take 'em anyway!
+
+[PIZ1_31:PIZZA]
+~w~I hate this job! But, at least I get to push you around.
+
+[PIZ1_3A:PIZZA]
+~w~If these don't make it on time, pizza dough's the only dough you'll see today!
+
+[PIZ1_32:PIZZA]
+~r~Can't stomach our pizzas?
+
+[PIZ1_33:PIZZA]
+~w~Go back to ~y~Joe's Pizza Restaurant~w~ for fresh orders.
+
+[PIZ1_34:PIZZA]
+~w~Delivery made, money paid!
+
+[PIZ_WON:PIZZA]
+~w~Pizza odd-job completed, well done! Your maximum health has been increased!
+
+[PIZ_WO1:PIZZA]
+~w~Joe's Pizza Restaurant is now under your 'protection'. Make sure you collect their payments regularly.
+
+[PIZ1_01:PIZZA]
+~w~Deliver these pizzas to our ~b~customers~w~ as quick as you can.
+
+[PIZ1_05:PIZZA]
+~w~Perform a drive-by to toss the pizza to a customer.
+
+{=================================== MISSION TABLE TAXI ===================================}
+
+[TAXI1:TAXI]
+~w~Look for a ~b~fare.
+
+[TAXI1A:TAXI]
+~w~There aren't any fares around here - keep looking!
+
+[TAXI2:TAXI]
+~r~You're out of time!
+
+[TAXI3:TAXI]
+~w~Your passenger fled in terror!
+
+[TAXI4:TAXI]
+~w~Fare complete: $~1~
+
+[TAXI4A:TAXI]
+~w~Fare complete: $~1~ + ~1~ IN A ROW bonus! $~1~
+
+[TAXI5:TAXI]
+~w~SPEED BONUS: $~1~
+
+[TAXI5A:TAXI]
+~w~SPEED BONUS: $~1~ + ~1~ IN A ROW bonus! $~1~
+
+[TAXI7:TAXI]
+~w~Your car is trashed, get it repaired!
+
+[TAXI8:TAXI]
+~r~Taxi mission cancelled.
+
+[TAXI9:TAXI]
+~r~Your taxi has been destroyed!
+
+[FARES:TAXI]
+Fares
+
+[TIP:TAXI]
+Tip
+
+[FARE9:TAXI]
+~w~Destination ~y~'Portland docks'.
+
+[FARE20:TAXI]
+~w~Destination ~y~'The Park' ~w~in Belleville.
+
+[FARE22:TAXI]
+~w~Destination ~y~'Cochrane Dam'.
+
+[FARE2:TAXI]
+~w~Destination ~y~'Head Radio'~w~, Harwood.
+
+[FARE3:TAXI]
+~w~Destination ~y~'The Ferry Port'~w~, Harwood.
+
+[FARE4:TAXI]
+~w~Destination ~y~'The Hospital'~w~, Portland View.
+
+[FARE7:TAXI]
+~w~Destination ~y~'The Construction Site'~w~, Hepburn Heights.
+
+[FARE8:TAXI]
+~w~Destination ~y~'Cipriani Restaurant'~w~, Saint Mark's.
+
+[FARE10:TAXI]
+~w~Destination ~y~'Punk Noodles'~w~, Chinatown.
+
+[FARE12:TAXI]
+~w~Destination ~y~'The Ferry Port'~w~, Rockford.
+
+[FARE13:TAXI]
+~w~Destination ~y~'The Church'~w~, Bedford Point.
+
+[FARE14:TAXI]
+~w~Destination ~y~'Liberty Tree Offices'~w~, Bedford Point.
+
+[FARE15:TAXI]
+~w~Destination ~y~'Liberty University'~w~, Liberty Campus.
+
+[FARE16:TAXI]
+~w~Destination ~y~'Hogs 'n' Cogs'~w~, Belleville Park Area.
+
+[FARE17:TAXI]
+~w~Destination ~y~'Courthouse'~w~, Belleville Park Area.
+
+[FARE18:TAXI]
+~w~Destination ~y~'Mr. Benz'~w~, Bedford Point.
+
+[FARE19:TAXI]
+~w~Destination ~y~'Joe's Pizza'~w~, Bedford Point.
+
+[FARE21:TAXI]
+~w~Destination ~y~'Terminal A'~w~, Francis International Airport.
+
+[FARE23:TAXI]
+~w~Destination ~y~'The Mansion'~w~, Cedar Grove.
+
+[FARE24:TAXI]
+~w~Destination ~y~'The Hospital'~w~, Pike Creek.
+
+[FARE25:TAXI]
+~w~Destination ~y~'The Park'~w~, Shoreside Vale.
+
+[FARE26:TAXI]
+~w~Destination ~y~'North West Towers'~w~, Wichita Gardens.
+
+[FARE27:TAXI]
+~w~Destination ~y~'The Coach Depot'~w~, Trenton.
+
+[FARE28:TAXI]
+~w~Destination ~y~'Mr. Benz'~w~, Chinatown.
+
+[FARE29:TAXI]
+~w~Destination ~y~'Mr. Benz'~w~, Pike Creek.
+
+[FARE30:TAXI]
+~w~Destination ~y~'Terminal C'~w~, Francis International Airport.
+
+[FARE31:TAXI]
+~w~Destination ~y~'AM Petroleum'~w~, Pike Creek.
+
+[FARE32:TAXI]
+~w~Destination ~y~'Liberty Pharmaceuticals'~w~, Pike Creek.
+
+[FARE11:TAXI]
+~w~Destination ~y~'Phil Cassidy's Fully Cocked Gun Shop'~w~, Bedford Point.
+
+[FARE1A:TAXI]
+~w~Destination ~y~'Paulie's Revue Bar'~w~, Red Light District.
+
+[FARE1C:TAXI]
+~w~Destination ~y~'Sex Club Seven'~w~, Red Light District.
+
+[FARE5:TAXI]
+~w~Destination ~y~'Ammu-Nation'~w~, Red Light District.
+
+[FARE6:TAXI]
+~w~Destination ~y~'Capital Autos'~w~, Saint Mark's.
+
+{=================================== MISSION TABLE AMBU ===================================}
+
+[A_FAIL2:AMBU]
+~r~Your lack of urgency has been fatal to the patient!
+
+[A_FAIL3:AMBU]
+~r~The patient is dead!
+
+[ATUTOR4:AMBU]
+~w~Each bump reduces the chances of patient survival!
+
+[A_TIME:AMBU]
+~w~Pickup! +~1~ seconds
+
+[A_TIME2:AMBU]
+~w~Bonus! +~1~ seconds
+
+[AREWARD:AMBU]
+~w~Level ~1~ completed! Reward: $~1~
+
+[A_RANGE:AMBU]
+~r~The ambulance radio is out of range, get closer to a hospital!
+
+[ATUTOR5:AMBU]
+~w~Pick up a ~b~patient.
+
+[ATUTOR6:AMBU]
+~w~Take them to the ~y~hospital!
+
+[ATUTOR7:AMBU]
+~w~Pick up more ~b~patients~w~, or take this one to the ~y~hospital.
+
+[A_FULL:AMBU]
+~w~Your ambulance is full! Drop your patients off at the ~y~hospital.
+
+[A_RANG2:AMBU]
+~r~The ambulance radio doesn't work in the subway!
+
+{=================================== MISSION TABLE TV ===================================}
+
+[TV_01:TV]
+Slash TV
+
+[TV_02:TV]
+~w~Kill all the deranged psychopaths... they just keep on coming!
+
+[TV_03:TV]
+~w~Each level gets harder with more enemies to dispatch... and more prizes to be won!
+
+[TV_04:TV]
+~w~LEVEL ~1~
+
+[TV_10:TV]
+~w~You won an extra prize!
+
+[TV_09:TV]
+Total prize money won this game: $~1~!
+
+[TV_05:TV]
+~w~LEVEL CLEAR!
+
+[TV_06:TV]
+~w~You won $~1~ in prize money!
+
+[TV_07:TV]
+~w~GET READY...
+
+[TV_08:TV]
+~w~GO!
+
+{=================================== MISSION TABLE NOODLE ===================================}
+
+[NDL1_02:NOODLE]
+~w~Uh-oh - no more noodles! Go back to ~y~Punk Noodles~w~ and get some more.
+
+[NDL1_06:NOODLE]
+~w~Press~h~ ~k~ ~TGSUB~ ~w~when on the bike to cancel the mission.
+
+[NDL1_07:NOODLE]
+~r~You killed the customer! You're fired!
+
+[NDL1_08:NOODLE]
+~r~You ran out of time. You're fired!
+
+[NDL1_09:NOODLE]
+~r~You wrecked our moped! You're fired!
+
+[NDL1_11:NOODLE]
+~w~Get back on the ~b~bike!
+
+[NDL1_12:NOODLE]
+Noodles
+
+[NDL1_13:NOODLE]
+~w~Noodles! Kaboodles of noodles for delivery!
+
+[NDL1_14:NOODLE]
+~w~Our customers can't get enough of my noodles.
+
+[NDL1_15:NOODLE]
+~w~I got noodles need delivering!
+
+[NDL1_16:NOODLE]
+~w~Let's try to get these noodles delivered on time!
+
+[NDL1_17:NOODLE]
+~w~Hey punk! These noodles are to go!
+
+[NDL1_18:NOODLE]
+~w~Get these noodles delivered, chop-chop!
+
+[NDL1_19:NOODLE]
+~w~Our customers want hot noodles, not cold noodles!
+
+[NDL1_20:NOODLE]
+~w~Can't stand heat in the kitchen? Confucius say - turn down cooker.
+
+[NDL1_21:NOODLE]
+~w~Drop these noodles off will you?
+
+[NDL1_22:NOODLE]
+~w~More noodles for delivery.
+
+[NDL1_23:NOODLE]
+~w~Noodles, noodles, noodles! Ship 'em out good and hot!
+
+[NDL1_24:NOODLE]
+~w~We have people waiting! ...Oh the humanity!
+
+[NDL1_25:NOODLE]
+~w~Hasn't this order been taken out already?
+
+[NDL1_26:NOODLE]
+~w~What are you waiting for? Chinese New Year?
+
+[NDL1_27:NOODLE]
+~w~These noodles are getting cold. Hurry it up!
+
+[NDL1_28:NOODLE]
+~w~I wanted to be an astronaut. But my dad owns this place, so what could I do?
+
+[NDL1_29:NOODLE]
+~w~If you want to keep your job, move your butt and deliver these.
+
+[NDL1_30:NOODLE]
+~w~Crispy fried noodles... I don't understand 'em, but I love 'em.
+
+[NDL1_31:NOODLE]
+~w~I'd have thought delivering pizza was more your style.
+
+[NDL1_3A:NOODLE]
+~w~They always want more. So come back when you're done.
+
+[NDL1_32:NOODLE]
+~r~What's the matter? Don't you like noodles?
+
+[NDL1_33:NOODLE]
+~w~Return to ~y~Punk Noodles~w~ for more orders.
+
+[NDL1_34:NOODLE]
+~w~Noodles delivered, cash paid!
+
+[NDL_WON:NOODLE]
+~w~Congratulations, Noodle odd-job completed! Your maximum health has been increased!
+
+[NDL_WO1:NOODLE]
+~w~Punk Noodles is now under your 'protection'. Make sure you collect their payments regularly.
+
+[NDL1_01:NOODLE]
+~w~Deliver these noodles to our ~b~customers~w~ - chop-chop!
+
+[NDL1_05:NOODLE]
+~w~Perform a drive-by to toss the noodles to a customer.
+
+{=================================== MISSION TABLE MPSURV ===================================}
+
+[SAL01:MPSURV]
+~w~Maria, I'm going up to the hospital to get 'you-know-what' fixed.
+
+[SAL02:MPSURV]
+~w~When I get out, the pork stallion will be galloping just like it used to...
+
+[SAL04:MPSURV]
+~w~PS: Get ready to saddle up when I get out, baby!
+
+[SAL05:MPSURV]
+~w~PPS: ...Don't leave this note just lying around!
+
+[SAL03:MPSURV]
+~w~You just stay out of trouble while I'm in 'cause there's gonna be wise-guys dying to take over.
+
+[SAL03A:MPSURV]
+~w~Literally!
+
+{=================================== MISSION TABLE JDREF ===================================}
+
+[JDT1_BA:JDREF]
+~w~I ain't got no work for no Leone!
+
+[JDT1_BB:JDREF]
+~w~...hey Toni, come back when you're less conspicuous.
+
+[CHNGOUT:JDREF]
+~w~Change out of your Leone suit. JD can't be seen speaking to you otherwise.
+
+{=================================== MISSION TABLE CRED01 ===================================}
+
+[CR01_01:CRED01]
+~n~ ~n~ ~n~ ~n~CREDITS
+
+[CR01_02:CRED01]
+~n~ ~n~ ~n~ ~n~ROCKSTAR NORTH
+
+[CR01_03:CRED01]
+~n~ ~n~ ~n~ ~n~Producer ~n~Leslie Benzies
+
+[CR01_04:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Aaron Garbut
+
+[CR01_05:CRED01]
+~n~ ~n~ ~n~ ~n~Technical Direction ~n~Obbe Vermeij, Adam Fowler
+
+[CR01_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~Written By ~n~Dan Houser, James Worrall ~n~ & David Bland
+
+[CR01_07:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Alexander Roger, Alexander Illes, ~n~Andrzej Madajczyk, Barane Chan, ~n~Derek Payne, Derek Ward,
+
+[CR01_08:CRED01]
+~n~ ~n~Gordon Yeoman, Graeme Williamson, ~n~Greg Smith, James Broad, ~n~John Gurney, John Whyte,
+
+[CR01_09:CRED01]
+~n~ ~n~Keith McLeman, Mark Nicholson, ~n~Shaun McKillop
+
+[CR01_10:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Programmer ~n~Matthew Smith
+
+[CR01_11:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Design and Mastering ~n~Allan Walker
+
+[CR01_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Cut Scene Animator ~n~Mondo Ghulam
+
+[CR01_13:CRED01]
+~n~ ~n~ ~n~ ~n~Cut Scene Animator ~n~Dermot Bailie
+
+[CR01_14:CRED01]
+~n~ ~n~ ~n~ ~n~Character Animator ~n~Felipe Busquets
+
+[CR01_15:CRED01]
+~n~ ~n~ ~n~ ~n~In-Game Animation ~n~Gus Braid, Terry Kenny
+
+[CR01_16:CRED01]
+~n~ ~n~ ~n~ ~n~Characters Artist ~n~Ian McQue
+
+[CR01_17:CRED01]
+~n~ ~n~ ~n~ ~n~Vehicle Artist ~n~Joylon Orme
+
+[CR01_18:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Art ~n~Rick Stirling, Alisdair Wood
+
+[CR01_19:CRED01]
+~n~ ~n~ ~n~ ~n~Music Producer ~n~Craig Conner
+
+[CR01_20:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Design and Dialogue Editor ~n~Will Morton
+
+[CR01_21:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Dialogue Editor ~n~Jon McCavish
+
+[CR01_22:CRED01]
+~n~ ~n~ ~n~ ~n~Development Support ~n~Milly Cottam
+
+[CR01_23:CRED01]
+~n~ ~n~ ~n~ ~n~Graphic Designers ~n~Stuart Petri, Steve Walsh
+
+[CR01_24:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~William Mills
+
+[CR01_25:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Chris Rothwell, Andy Duthie, ~n~Chris McMahon, Neil Ferguson
+
+[CR01_26:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Craig Arbuthnott
+
+[CR01_27:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Test ~n~Neil Corbett
+
+[CR01_28:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Test ~n~David Murdoch, Neil Meikle, ~n~Alex Bazlinton, Brenda Carey
+
+[CR01_29:CRED01]
+~n~ ~n~ ~n~ ~n~Build Engineer / Lead Test ~n~Neil Walker
+
+[CR01_30:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Test ~n~George Williamson
+
+[CR01_31:CRED01]
+~n~ ~n~ ~n~ ~n~Test ~n~Brian Kelly, Lindsay Robertson, ~n~Sundram Soosay, Eugene Kuczerepa, ~n~Christopher Soosay, Ben Abbott,
+
+[CR01_32:CRED01]
+~n~ ~n~Oliver Elliott, Louis Dinan, ~n~Bobby Wright, Thomas Philips, ~n~Nick Rees, Ivor Williams
+
+[CR01_33:CRED01]
+~n~ ~n~ ~n~ ~n~Test Tools Programming ~n~James Whitcroft, Alex Carter
+
+[CR01_34:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Lorraine Roy
+
+[CR01_35:CRED01]
+~n~ ~n~ ~n~ ~n~IT Support ~n~Christine Chalmers, Dave Bruce
+
+[CR01_36:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Andrew Semple
+
+[CR01_37:CRED01]
+~n~ ~n~ ~n~ ~n~Office Administration ~n~Kim Gurney
+
+[CR01_38:CRED01]
+~n~ ~n~ ~n~ ~n~Administration Support ~n~Charlene Maguire, Kim Wilson
+
+[CR02_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LEEDS
+
+[CR02_02:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Gordon Hall
+
+[CR02_03:CRED01]
+~n~ ~n~ ~n~ ~n~Head of Development ~n~David Box
+
+[CR02_04:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Programming ~n~Andrew Greensmith, Matthew Shepcar ~n~ ~n~ ~n~ ~n~Console Programming ~n~Nigel Conroy, Richard Frankish, ~n~Andrew Greensmith, Robin Mangham, ~n~Damian McKenna, Finlay Munro, ~n~Stuart Roskell, Matthew Shepcar
+
+[CR02_05:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Jon Bellamy, Ross Childs, ~n~Nigel Conroy, Neil Dodwell, ~n~Alastair Dukes, David Huebner,
+
+[CR02_06:CRED01]
+~n~ ~n~Robin Mangham, Jason McGann, ~n~Warren Merrifield, Stephen McGreal
+
+[CR02_07:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Programming ~n~Finlay Munro, Charles Waddington
+
+[CR02_08:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Ian Bowden
+
+[CR02_09:CRED01]
+~n~ ~n~ ~n~ ~n~Art Department Director ~n~Chris Smart
+
+[CR02_10:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Character Artist ~n~Paul Smith
+
+[CR02_11:CRED01]
+~n~ ~n~ ~n~ ~n~Character Artist ~n~Chris Allison
+
+[CR02_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead City Artist ~n~Dan Roberts
+
+[CR02_13:CRED01]
+~n~ ~n~ ~n~ ~n~City Artists ~n~Paul McKee, James McHale, ~n~Siu Lee
+
+[CR02_14:CRED01]
+~n~ ~n~ ~n~ ~n~Cutscene Interiors ~n~Izzy Stewart
+
+[CR02_15:CRED01]
+~n~ ~n~ ~n~ ~n~Concept Artist ~n~John Wigley
+
+[CR02_16:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Character Animation ~n~Alan Bowker
+
+[CR02_17:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Artists ~n~Andy Walker, Jason Gee, ~n~Chris Edwards, Lee Clark
+
+[CR02_18:CRED01]
+~n~ ~n~ ~n~ ~n~Design Director ~n~David Bland
+
+[CR02_19:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~John Li
+
+[CR02_20:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Level Design ~n~Tony Gowland, Martyn Bramall
+
+[CR02_21:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Sam Hackett, Stephen Robertson, ~n~Tom Kingsley, Chris Edwards, ~n~Kris Gormley
+
+[CR02_22:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Designer ~n~Mark McGinley
+
+[CR02_23:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Paul Colls
+
+[CR02_24:CRED01]
+~n~ ~n~ ~n~ ~n~QA ~n~Jody Cobb, ~n~ ~n~Luke Brown, Nick Robey, ~n~Matthew Haven
+
+[CR02_25:CRED01]
+~n~ ~n~ ~n~ ~n~Company Secretary ~n~Naomi Martin
+
+[CR02_26:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Chris Waring
+
+[CR03_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC
+
+[CR03_02:CRED01]
+~n~ ~n~ ~n~ ~n~Executive Producer ~n~Sam Houser
+
+[CR03_03:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Creative ~n~Dan Houser
+
+[CR03_04:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Development ~n~Jamie King
+
+[CR03_05:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Alex Horton
+
+[CR03_06:CRED01]
+~n~ ~n~ ~n~ ~n~Chief Technology Officer ~n~Gary J. Foreman
+
+[CR03_07:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Producer ~n~Rich Rosado
+
+[CR03_08:CRED01]
+~n~ ~n~ ~n~ ~n~Director of Quality Assurance ~n~Jeff Rosa
+
+[CR03_09:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Analyst ~n~Lance Williams
+
+[CR03_10:CRED01]
+~n~ ~n~ ~n~ ~n~Project Lead ~n~Jameel Vega
+
+[CR03_11:CRED01]
+~n~ ~n~ ~n~ ~n~Rockstar Test Team ~n~Ethan Abeles, William Rompf, ~n~Christopher Mansfield, Chris Choi, ~n~Mike Hong, Tamara Carrion,
+
+[CR03_12:CRED01]
+~n~ ~n~Rich Huie, Mike Nathan, ~n~Vance Wallace, Marc Rodriguez, ~n~Adam Tetzloff
+
+[CR03_13:CRED01]
+~n~ ~n~ ~n~ ~n~Business Development Director ~n~Sean Macaluso
+
+[CR03_14:CRED01]
+~n~ ~n~ ~n~ ~n~Soundtrack Supervision ~n~Heinz Henn, Ivan Pavlovich, ~n~Tim Sweeney
+
+[CR04_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUT SCENES & DIALOGUE
+
+[CR04_02:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Director ~n~Navid Khonsari
+
+[CR04_03:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Performed by ~n~Danny Mastrogiorgio, Jeffrey C. Hawkins, ~n~Bruce MacVittie, David Zayas, ~n~Peter Appel, Hannah Moon, ~n~Alyssa Truppelli, Joe Lotruglio
+
+[CR04_04:CRED01]
+~n~ ~n~ ~n~ ~n~Voices Performed by ~n~Salvatore Leone - Frank Vincent ~n~Toni Cipriani - Danny Mastrogiorgio ~n~Donald Love - Will Janowitz
+
+[CR04_05:CRED01]
+~n~ ~n~ Vincenzo Cilli - Joe Lotruglio ~n~Maria Latore - Fiona Gallagher ~n~JD O'Toole - Greg Wilson
+
+[CR04_06:CRED01]
+~n~ ~n~Leon McAffrey - Ron Orbach ~n~Ray Machowski - Peter Appel ~n~Toshiko Kasen - Hannah Moon
+
+[CR04_07:CRED01]
+~n~ ~n~ Ned Burner - Peter Bradbury ~n~Ma Cipriani - Sondra James ~n~Giovanni Casa - Joel Jones
+
+[CR04_08:CRED01]
+~n~ ~n~Kazuki Kasen - Keenan Shimizu, ~n~Massimo Torini - Duccio Faggella ~n~Mickey Hamfists - Chris Tardio
+
+[CR04_09:CRED01]
+~n~ ~n~Jane Hopper - Gordana Rashovich ~n~Mayor O'Donovan - John Braden ~n~8 Ball - Guru
+
+[CR04_10:CRED01]
+~n~ ~n~Radio Newscaster - Sharon Washington ~n~TV Reporter - Brooke Alexander
+
+[CR04_11:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Dialogue ~n~Una Cruickshank, Gregory Johnson, ~n~Sanford Santacroce, Ayana Osada
+
+[CR04_12:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Voices ~n~Jamie Hector, Jackson Loo, ~n~Bruce MacVittie, Jeff Gurner, ~n~Jamie Hector, Andrea Kessler,
+
+[CR04_13:CRED01]
+~n~ ~n~Lynne Horton, Phil Mikkelson, ~n~Koji Nonoyama, Devin Bennett, ~n~Jay Capozello, Mike Nathan,
+
+[CR04_14:CRED01]
+~n~ ~n~Ethan Abeles, Lance Williams, ~n~Natalya Wilson, Jay Gladstone, ~n~Craig Blair, Dave Edwards,
+
+[CR04_15:CRED01]
+~n~ ~n~Gregory Johnson, John Zurhellen, ~n~Blair Sadler, Georgia Sadler, ~n~Nicole Sadler, Judy Henderson,
+
+[CR04_16:CRED01]
+~n~ ~n~Kim Graham, Kerry Shaw, ~n~Tamara Carrion, Franceska Clemens, ~n~Navid Khonsari, Noelle Sadler,
+
+[CR04_17:CRED01]
+~n~ ~n~Nicholas Mongomery, Anthony Macbain, ~n~Ryan Rayhill, Josh Slater, ~n~Carmelo Gaeta, Hikari Yokoyama,
+
+[CR04_18:CRED01]
+~n~ ~n~Chris Jobin, Michael Rothstein, ~n~Stacey Rachels, Jennifer Koontz, ~n~Dan Merrill, Ali Khonsari,
+
+[CR04_19:CRED01]
+~n~ ~n~Ellen Rose, Chris Standal, ~n~Lorie Goodman, Neal Johnston, ~n~Son Garth, James Larsen,
+
+[CR04_20:CRED01]
+~n~ ~n~Karl Weibel, Ramin Khonsari, ~n~Ed. Thomas Jr., Stanton Sargent, ~n~Oswald Greene, Audrey Amey,
+
+[CR04_21:CRED01]
+~n~ ~n~Sanford Santacroce, Jeff Madrick, ~n~Ben Weaver, Andrea Kessler, ~n~CS Lee, Yoshi Amao,
+
+[CR04_22:CRED01]
+~n~ ~n~ Jackson Loo, Martha Morrison, ~n~Sarah Bloodsworth, Adam Deher, ~n~Billy Gonzalez
+
+[CR04_23:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Motion Graphics ~n~Maryam Parwana
+
+[CR04_24:CRED01]
+~n~ ~n~ ~n~ ~n~Dialogue Recording & Mixing ~n~Nicholas Montgomery
+
+[CR04_25:CRED01]
+~n~ ~n~ ~n~ ~n~Foley Recording ~n~Bryan Scibinico
+
+[CR04_26:CRED01]
+~n~ ~n~ ~n~ ~n~Foley recorded at Dig It Studios
+
+[CR04_27:CRED01]
+~n~ ~n~ ~n~ ~n~Production Team ~n~Noelle Sadler, Eli Weissman, ~n~Kerry Shaw, John Zurhellen, ~n~Peter Adler, Anthony Carvalho,
+
+[CR04_28:CRED01]
+~n~ ~n~Phil Poli, Jaesun Celebre, ~n~Franceska Clemens, Anthony Litton
+
+[CR04_29:CRED01]
+~n~ ~n~ ~n~ ~n~Casting ~n~Judy Henderson and Associates
+
+[CR04_30:CRED01]
+~n~Motion Capture recorded at Perspective Studios
+
+[CR05_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO
+
+[CR05_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ Banter, Talk Radio, Commercials and Imaging written by ~n~Dan Houser and Lazlow
+
+[CR05_03:CRED01]
+~n~ ~n~ ~n~ ~n~Production by ~n~Lazlow
+
+[CR05_04:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LCFR
+
+[CR05_05:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Smith Harrison, Karen Saltus
+
+[CR05_06:CRED01]
+~n~ ~n~ ~n~ ~n~Heartland Values with Nurse Bob ~n~Nurse Bob - Chuck Montgomery
+
+[CR05_07:CRED01]
+~n~ ~n~ ~n~ ~n~Guests and Callers ~n~Ayana Osada, Nick Montgomery, ~n~Russell Lewis, Nick Born, ~n~Sean Macaluso, Kerry Shaw,
+
+[CR05_08:CRED01]
+~n~ ~n~Chad Johnson, Craig Conner, ~n~Mary Elizabeth, Rob Cross, ~n~Josh Bitney
+
+[CR05_09:CRED01]
+~n~ ~n~ ~n~ ~n~Electron Zone ~n~Steve - Ptolemy Slocum ~n~Bill - Michael Urichek
+
+[CR05_10:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Alice Saltzman, Jeremy Wheaton, ~n~Ryan Rayhill, Maine Anderson, ~n~Patton Oswalt, Wil Wheaton, ~n~Anthony Cumia, Madena Parwana
+
+[CR05_11:CRED01]
+~n~ ~n~ ~n~ ~n~Breathing World ~n~Lee Chowder - Ashley Albert ~n~Crow - Gregg Martin
+
+[CR05_12:CRED01]
+~n~ ~n~ ~n~ ~n~Coq 'O' Vin ~n~Richard Goblin - Mike Shapiro
+
+[CR05_13:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Ben Krech
+
+[CR05_14:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Franceska Clemins, Sarah Bloodsworth, ~n~Adam Deher, Martha Morrison, ~n~Carmelo Gaeta
+
+[CR05_15:CRED01]
+~n~ ~n~ ~n~ ~n~Chatterbox ~n~Lazlow as himself
+
+[CR05_16:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Susan Lewis, Ben Weaver, ~n~Jacky Bam Bam, Ben Sparks, ~n~Deanna Moyer, Liezl Jacinto,
+
+[CR05_17:CRED01]
+~n~ ~n~Joshua Batista, Gregg Opie Hughes, ~n~Sondra James, Elizabeth Satterwhite
+
+[CR06_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~HEAD RADIO
+
+[CR06_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Michael Hunt - Russ Mottla
+
+[CR06_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jeff Berlin, Katelyn Hutchinson
+
+[CR06_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jeff Berlin
+
+[CR06_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Train" ~n~Conor & Jay ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Guitars by Jon McCavish ~n~Vocals by Julie Wemyss and Craig Conner
+
+[CR06_06:CRED01]
+~n~ ~n~ ~n~ ~n~"The One For Me" ~n~Cloud Nineteen ~n~Written & Produced by ~n~Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Guitars by Allan Walker & Chris Morton ~n~Lead Vocals by Raff ~n~Backing Vocals by Paul Mackie & Raff
+
+[CR06_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Take The Pain" ~n~Purser ~n~Written & Produced by ~n~Will Morton, Chris Morton ~n~Additional Lyrics by Paul Mackie ~n~Lead Vocals by Paul Mackie ~n~Additional Vocals by Will Morton
+
+[CR06_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Free Yourself" ~n~L-Marie featuring Raff ~n~Written & Produced by Craig Conner ~n~Vocals by L-Marie and Raff ~n~Backing Vocals by Craig Conner
+
+[CR06_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Drive" ~n~15 Ways ~n~Written & Produced by Colin Entwistle ~n~Vocals by Paul Mackie
+
+[CR06_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Welcome To The Real World" ~n~Rosco Stow ~n~Written & Produced by Craig Conner ~n~Guitars Written, Produced and Performed by Allan Walker ~n~Lead Vocals by Andy Dorrat ~n~Backing Vocals by Craig Conner, ~n~Anna Stuart and Kim Gurney
+
+[CR06_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Keep Dreaming" ~n~Vanilla Smoothie ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Allan Walker ~n~Vocals by Fiona Stoddart
+
+[CR07_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LIPS 106
+
+[CR07_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJs ~n~Cliff - Ed McMann ~n~Andee - Shelley Miller
+
+[CR07_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jonathan Hanst
+
+[CR07_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jonathan Hanst
+
+[CR07_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Funk In Time" ~n~Rudy La Fontaine ~n~Written & Produced by Jon McCavish ~n~Guitars by Julian Pais ~n~Vocals by Julian Pais
+
+[CR07_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Love Is The Feeling" ~n~Sawarr ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Vocals by Julie Wemyss
+
+[CR07_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Mine Until Monday" ~n~Sunshine Shine ~n~Written & Produced by Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Vocals by Paul Mackie & Raff
+
+[CR07_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Get Down" ~n~Credit Check ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Martyn Livingstone ~n~Bass by Andy Wilson ~n~Vocals by Louise Ferrier
+
+[CR07_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Tonight" ~n~Cool Timers ~n~Written & Produced by Craig Conner ~n~Vocals by Julie Wemyss
+
+[CR07_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Bassmatic" ~n~Nina Barry ~n~Written & Produced by Jon McCavish ~n~Vocals by Riz Maslen
+
+[CR07_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Into Something (C'mon Get Down)" ~n~The Jackstars ~n~Written & Produced By ~n~Craig Conner ~n~Vocals by Lucie Danti-Juan ~n~Backing vocals by ~n~Kevin Stacey & Craig Conner
+
+[CR08_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~DOUBLE CLEF FM
+
+[CR08_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Sergio Boccino - Robert Blumenfeld
+
+[CR08_03:CRED01]
+~n~ ~n~ ~n~ ~n~Caller ~n~Gerald Cosgrove
+
+[CR08_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Anvil Chorus" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~& Munich State Opera Choir ~n~Courtesy of Point Classics, LLC
+
+[CR08_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Tacea la notte placida" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra & ~n~Munich State Opera Choir ~n~(Eva Illes, Soprano) ~n~Courtesy of Point Classics, LLC
+
+[CR08_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Nabucco: Chorus of the Hebrew Slaves" ~n~Composed by Giuseppe Verdi ~n~Performed by Philharmonia Slavonica ~n~Courtesy of Point Classics, LLC
+
+[CR08_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Così fan tutte: È amore un ladroncello" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~Bratislava Opera Soloists, ~n~Choir and Orchestra ~n~(Ida Kirilova "Dorabella") ~n~Courtesy of Point Classics, LLC
+
+[CR08_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Marriage of Figaro: Overture" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~London Philharmonic Orchestra ~n~Courtesy of Point Classics, LLC
+
+[CR08_09:CRED01]
+~n~ ~n~ ~n~ ~n~"I Pagliacci: Vesti la giubba" ~n~Composed by Ruggiero Leoncavallo ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~(José Maria Perez, Tenor) ~n~Courtesy of Point Classics, LLC
+
+[CR09_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RISE FM
+
+[CR09_02:CRED01]
+~n~ ~n~ ~n~ ~n~Engineered by Mike Callaghan
+
+[CR09_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Boy Sanchez - Oliver Vaquer
+
+[CR09_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~DJ Andre, Lupus Thunder, ~n~Andi Hanley, Mat Ckillz, ~n~Couzin Ed, Lazlow,
+
+[CR09_05:CRED01]
+~n~ ~n~Terry Donovan, Bill Brissette, ~n~Juan Aller, Ed Andrews, ~n~Xeni Jardin, Matthew Orr, ~n~Jeff Berlin
+
+[CR09_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Sing It Back ~n~(Boris Musical Mix)" ~n~Moloko ~n~Written by M. Brydon, R. Murphy ~n~Published by Chrysalis Music (ASCAP) ~n~Remix and Additional Production by ~n~Boris Dlugosch ~n~(p) + © 1998 The Echo Label ~n~Courtesy of Chrysalis Music Limited
+
+[CR09_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Free" ~n~Ultra Nate ~n~Written by U. Nate, L. Springsteen, ~n~J. Ciafone ~n~Published by Warner/ Chappell Music/ BMG Music ~n~(p) + © 1997 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
+
+[CR09_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I Believe" ~n~Happy Clappers ~n~Written by C. Scott, G. Ripley, M. Knotts, M. Topham ~n~Published by All Boys Music Ltd ~n~(p) + © 1994 C J Scott Productions ~n~Courtesy of C J Scott Productions
+
+[CR09_09:CRED01]
+~n~ ~n~ ~n~ ~n~"House Music" ~n~Eddie Amador ~n~Written by Eddie Amador ~n~Published by ~n~Deep Dish Music ~n~(p) + © 1998 Yoshitoshi Records ~n~Courtesy of ~n~Deep Dish Recordings, Inc. ~n~by arrangement with ~n~Nasseri Music Business Solutions
+
+[CR09_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Feel What You Want" ~n~Kristine W ~n~Written by R. Dougan, R. Armstrong, ~n~K. Weitz ~n~Published by BMG Music/Weitz House Publishing (ASCAP)/ EMI Music Publishing ~n~(p) + © 1996 RCA/ BMG ~n~Courtesy of Sony BMG Entertainment
+
+[CR09_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Hideaway ~n~(Deep Dish Vocal Remix)" ~n~De'Lacy ~n~Written by K. Hedge, J. Milan ~n~Published by ~n~Warner-Tamerlane Publishing Corp ~n~Remix and Additional Production by ~n~Deep Dish ~n~(p) 1995 Easy Street Recordings Inc ~n~© 1998 Kickin Music Ltd ~n~Courtesy of Easy Street Recordings Inc. and Slip n' Slide Records
+
+[CR09_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Spin Spin Sugar ~n~(Armand's Dark Garage Mix)" ~n~Sneaker Pimps ~n~Written by I. Pickering, L. Coverdale Howe, C. Corner ~n~Remix and Additional Production by ~n~Armand Van Helden ~n~Published by BMG Songs, Inc ~n~(p) + © 1997 Clean Up Records Ltd ~n~Courtesy of EMI Music / ~n~One Little Indian, Ltd
+
+[CR09_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Plastic Dreams" ~n~Jaydee ~n~Written by R. Albers ~n~Published by TBM Holland ~n~(p) 1992 R & S Records ~n~© Robin Albers ~n~Courtesy of Robin "Jaydee" Albers
+
+[CR09_14:CRED01]
+~n~ ~n~ ~n~ ~n~"Altered States" ~n~Ron Trent ~n~Written by R. Trent ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
+
+[CR09_15:CRED01]
+~n~ ~n~ ~n~ ~n~"There Will Come A Day (Half Tab Dub)" ~n~The Absolute featuring Suzanne Palmer ~n~Written by M. Pichiotti, C.J. Snider ~n~Published by Much Noyse Music/ ~n~Hoobini Music (ASCAP) ~n~(p) + © 1995 Mark Productions, Inc ~n~Courtesy of Mark Productions, Inc
+
+[CR09_16:CRED01]
+~n~ ~n~ ~n~ ~n~"Positive Education" ~n~Slam ~n~Written by S. McMillan, O. Meikle, ~n~G. Gibbons, J. Muotone ~n~Published by EMI Music Publishing ~n~(p) + © 1997 Soma Recordings Ltd ~n~Courtesy of Soma Recordings Ltd
+
+[CR09_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Flash" ~n~Green Velvet ~n~Written by C. Jones ~n~Published by Curtis A. Jones Music (ASCAP) ~n~(p) 1995 Relief Records ~n~© 2000 Warner Bros. Records and N.E.W.S. Records and Relief Records ~n~Courtesy of Warner Strategic Marketing, N.E.W.S. Records, Relief Records
+
+[CR09_18:CRED01]
+~n~ ~n~ ~n~ ~n~"Circus Bells (Hardfloor Remix)" ~n~Robert Armani ~n~Written by R. Armani ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse/ ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
+
+[CR09_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Higher State Of Consciousness" ~n~Wink ~n~Written by J. Wink ~n~Published by Strictly Rhythm Publishing, Inc. (ASCAP) / Warner/Chappell Music / Wink Inc. (ASCAP) / EMI Music Publishing ~n~(p) + © 1995 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO DEL MUNDO
+
+[CR10_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Panjit Gavaskar - Hajaz Akram
+
+[CR10_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jessica Wachsman
+
+[CR10_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Raghupati (Folk Tune)" ~n~Ananda Shankar ~n~Arranged by A. Shankar, Lewinson, Hassilev ~n~Published by Warner Chappell Inc ~n~(p) + © 1970 Reprise Records for the U.S. and WEA International Inc ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Dum Maro Dum" ~n~Asha Bhosle ~n~Written by RD Burman, Anand Bakshi ~n~Published by Saregama India Ltd ~n~(p) + © 1971 Saregama India Ltd ~n~Courtesy of Saregama India Ltd
+
+[CR10_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Neeve Nanna (Only You Were Mine)" ~n~Vijaya Anand ~n~Written by Vijaya Anand ~n~Published by Shake Boom! (ASCAP)/ ~n~Luaka Bop Inc ~n~(p) 1988 Lahari/Audiovision ~n~© 1992 Sire Records Company ~n~Courtesy of ~n~Luaka Bop Records
+
+[CR10_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Kidda" ~n~Natacha Atlas ~n~Written by N. Atlas, J. Reynolds, J. Adams ~n~Published by Warner Chappell Music Ltd ~n~(p) + © 1997 Nation Records Ltd/ ~n~Beggars Banquet Records Ltd ~n~Courtesy of Nation Records Ltd/ ~n~Beggars Banquet Records Ltd
+
+[CR10_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Hebeena Hebeena" ~n~Farid El Atrache ~n~Written by Barakat, Atrache ~n~Published by Voices Of Lebanon ~n~(p) + © 1974 Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
+
+[CR10_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Aini Bet Ref" ~n~Ahmed Mneimneh ~n~Written by A. Alishaan ~n~Published by D. Dersahakian (ASCAP) ~n~(p) + © Voice of Stars & ~n~Lys Records ~n~Courtesy of Voice of Stars & ~n~Lys Records
+
+[CR10_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Im Nin'Alu" ~n~Ofra Haza ~n~Traditional, Arranged by I. Ashdot, B. Nagari ~n~Published by Blue Lake Music ~n~ (p) + © 1988 Sire Records Company ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ballaa Tsoubou Hal Kahwa" ~n~Samira Tawfic ~n~Written by R. Al Khylani, J. Al A'ss ~n~Published by Copyright Control ~n~(p) + © Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
+
+[CR11_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~K-JAH
+
+[CR11_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Natalee Walsh Davis - Pascale Armand
+
+[CR11_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Karl Weibel, Pat McKay
+
+[CR11_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
+
+[CR11_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Pick a Sound" ~n~Selah Collins, Ruddy Ranks, Redeye ~n~Written by S. Collins, H. Burke, ~n~E. Donaldson ~n~Published by Copyright Control/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_06:CRED01]
+~n~ ~n~ ~n~ ~n~"What a Wonderful Feeling" ~n~Errol Bellot, Ruddy Ranks, Redeye ~n~Written by E. Bellot, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_07:CRED01]
+~n~ "Watch How the People Dancing" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by K. Wright ~n~Published by Jetstar ~n~Courtesy of Honest Jons Records
+
+[CR11_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Lean Boot" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson ~n~Published by Westbury Music/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Ready For the Dancehall Tonight" ~n~Peter Bouncer, Ruddy Ranks, Redeye ~n~Written by Peter McKenzie, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_10:CRED01]
+~n~ ~n~ ~n~ ~n~"You Ha Fe Cool" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson. ~n~Published by Westbury Music/MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ring My Number" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson. ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Run Come Call Me" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR12_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THE LIBERTY JAM
+
+[CR12_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~DJ Clue as himself
+
+[CR12_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jay Wright, Tom Yankowski, Chris Mercado, Vanessa Grullon
+
+[CR12_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
+
+[CR12_05:CRED01]
+~n~ ~n~ ~n~ ~n~"All I Need" ~n~Method Man ~n~Written by C. Smith, R. Diggs ~n~Published by Sony BMG Music ~n~(p) + © 1994 Def Jam Recordings ~n~Courtesy of Def Jam Recordings/ UME
+
+[CR12_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Shook Ones Pt. II" ~n~Mobb Deep ~n~Written by A. Johnson, K. Muchita ~n~Published by ~n~BMG Songs Inc. (ASCAP) ~n~(p) + © 1995 BMG Music ~n~Courtesy of RCA Records by arrangement with Sony BMG Ent
+
+[CR12_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Incarcerated Scarface" ~n~Raekwon ~n~Written by R. Diggs, C. Woods, A. Tilman ~n~Published by ~n~Careers-BMG Music Publishing Inc./ ~n~Wu Tang Publishing (BMI)/ ~n~Bridgeport Music ~n~(p) + © 1995 BMG Music
+
+[CR12_08:CRED01]
+Courtesy of RCA Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "You're Getting A Little Too Smart" as performed by The Detroit Emeralds. Courtesy of Westbound Records. Used by permission. All rights reserved
+
+[CR12_09:CRED01]
+~n~ ~n~ ~n~ ~n~"N.O.R.E." ~n~Noreaga ~n~Written by V. Santiago, J. Olivier, ~n~S. Barnes ~n~Published by Suite 1202 Music/ Jose Luis Gotcha Music (BMI)/ Slamuwell Productions/ Jelly's Jam LLC (ASCAP)/ ~n~12 & Under Music/
+
+[CR12_10:CRED01]
+Jumping Bean Songs LLC (BMI) ~n~(p) + © 1998 Penalty Recordings ~n~Courtesy of Warner Strategic Marketing
+
+[CR12_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Shut 'Em Down (Remix)" ~n~Onyx featuring Noreaga & Big Pun ~n~Written by F. Scruggs, K. Jones, T. Taylor, E. Hinson, E. Simmons ~n~Published by Universal Music/ ~n~Let Me Show You Music/ ~n~Jelly Jams Music/
+
+[CR12_12:CRED01]
+III Posse Music/ Ill Hill Billy'z Music/ Warner-Tamerlane Music ~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Beware" ~n~Big Pun ~n~Written by C. Rios, J. Tineo ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP), ~n~Administered by Jelly Jams Music (BMI)/ ~n~P.H.D. Music (ASCAP)
+
+[CR12_14:CRED01]
+(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent
+
+[CR12_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Twinz (Deep Cover 98)" ~n~Big Pun ~n~Written by C. Rios, J. Cartegena, ~n~C. Brodus, A. Young, C. Wolfe ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP)/ ~n~Jelly Jams Music (BMI)/ ~n~Sony Tunes Inc. (ASCAP)
+
+[CR12_16:CRED01]
+~n~(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "Deep Cover" as performed by Dr. Dre. Courtesy of Solar Records. Used by permission. All rights reserved
+
+[CR12_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Get At Me Dog" ~n~DMX featuring Sheek of The Lox ~n~Written by E. Simmons, D. Blackman, ~n~A. Fields, S. Taylor ~n~Published by Universal Music Publishing/ EMI April Music/ ~n~Sony ATV Tunes
+
+[CR12_18:CRED01]
+~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Ruff Ryders Anthem (Remix)" ~n~DMX featuring DJ Clue, Jadakiss, Styles, Drag-On & Eve ~n~Written by J. Phillips, M.J. Smalls, E. Shaw, K. Ifill, E. Simmons, K. Dean, E. Jeffers ~n~Published by Universal Music Publishing/ EMI Music Publishing
+
+[CR12_20:CRED01]
+(p) + © 1998 Roc-a-Fella Records ~n~Courtesy of Universal Music Enterprises
+
+[CR12_21:CRED01]
+~n~ ~n~ ~n~ ~n~"Do What You Feel" ~n~Redman featuring Method Man ~n~Written by P. Michael, R. Noble, C. Smith ~n~Published by Careers BMG/ Sony ATV Tunes/ Famous Music ~n~(p) + © 1996 Def Jam ~n~Courtesy of Universal Music Enterprises
+
+[CR12_22:CRED01]
+~n~ ~n~ ~n~ ~n~"Chain Gang Freestyle" ~n~The Lox & Black Rob ~n~Written by Frierson, Phillips, Styles, Jacobs, Ross, Shaw ~n~Published by EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_23:CRED01]
+~n~ ~n~ ~n~ ~n~"Chest2chest Freestyle" ~n~The Lox ~n~Written by Phillips, Styles, Jacobs, Shaw, Barnes, Lemay, Montgomery ~n~Published by Taggie Music (BMI)/ ~n~Universal Polygram Int'l. (ASCAP)/ ~n~EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_24:CRED01]
+This track contains a sample of "Next Level" as performed by Showbiz & AG. Courtesy of Universal Music Enterprises. Used by permission. All rights reserved
+
+[CR13_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~MSX 98
+
+[CR13_02:CRED01]
+~n~ ~n~ ~n~ ~n~MC ~n~Codebreaker as himself
+
+[CR13_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Timecode
+
+[CR13_04:CRED01]
+~n~ ~n~ ~n~ ~n~Station Production ~n~Timecode
+
+[CR13_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Renegade Snares" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Terrorist" ~n~Renegade ~n~Written, Produced & Engineered by ~n~A. Dookith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Finest Illusion (Legal Mix)" ~n~Foul Play ~n~Written, Produced & Engineered by ~n~J. Morrow, S. Bradshaw, ~n~S. Gurley ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future (FBD Project Remix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Stay Calm (Foul Play Remix)" ~n~DJ Pulse ~n~Written, Produced & Engineered by ~n~A. Brown ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Disturbance (Tango Remix)" ~n~Hyper-On Experience ~n~Written, Produced & Engineered by ~n~A. Banks, D. Demierre ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Cold Fresh Air" ~n~Higher Sense ~n~Written, Produced & Engineered by ~n~A. Miles, DJ Rhythm ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Thru The Vibe (2 on 1 Mix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_14:CRED01]
+~n~ ~n~ ~n~ ~n~"The Helicopter Tune" ~n~Deep Blue ~n~Written, Produced & Engineered by ~n~S. O'Keefe ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Dred Bass" ~n~Dead Dred ~n~Written, Produced & Engineered by ~n~W. Smith, L. Smith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR14_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~FLASHBACK FM
+
+[CR14_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Reni Wassulmaier - Barbara Rosenblatt
+
+[CR14_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Mike Shapiro
+
+[CR14_04:CRED01]
+~n~ ~n~ ~n~ ~n~"First Hand Experience ~n~In Second Hand Love" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_05:CRED01]
+~n~ ~n~ ~n~ ~n~"I Wanna Rock You" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~K. Forsey ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_06:CRED01]
+~n~ ~n~ ~n~ ~n~"E=MC2" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Chase" ~n~Giorgio Moroder ~n~Written by G. Moroder ~n~Published by Warner/ Chappell Music ~n~(p) + © 1978 Casablanca Films/ ~n~Columbia Pictures ~n~Courtesy of Sony Pictures Entertainment
+
+[CR14_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I'm Left, You're Right, She's Gone" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_09:CRED01]
+~n~ ~n~ ~n~ ~n~"From Here To Eternity" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Casablanca Records ~n~Courtesy of Universal Music Enterprises
+
+[CR15_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~COMMERCIAL VOICES
+
+[CR15_02:CRED01]
+~n~ ~n~ ~n~ ~n~Alex Anthony, Anouchka Benson, ~n~Audrey Amey, Bill Smith, ~n~Billy Gonzalez, Brian Thomas,
+
+[CR15_03:CRED01]
+~n~ ~n~Chris Jobin, Chris Silvestro, ~n~Craig Blair, Dan Houser, ~n~Dan Merrill, Ed Thomas,
+
+[CR15_04:CRED01]
+~n~ ~n~Ethan Abeles, Garth Johnston, ~n~Gregg Martin, Gregory Johnson, ~n~Hikari Yokoyama, James Ferrante,
+
+[CR15_05:CRED01]
+~n~ ~n~James Larson, Jay Capozello, ~n~Jayson Gladstone, Jeff Berlin, ~n~Jen Sweeney, Jessica Wachsman,
+
+[CR15_06:CRED01]
+~n~ ~n~ JJ Adler, Jonathan Hanst, ~n~Joshua Batista, Karen Saltus, ~n~Koji Nonoyami, Lance Williams,
+
+[CR15_07:CRED01]
+~n~ ~n~Lazlow, Lynne Horton, ~n~Michael Nathan, Mike Ferrante Jr., ~n~Chris Ferrante, Mike Shapiro,
+
+[CR15_08:CRED01]
+~n~ ~n~Natalya Wilson, Noelle Sadler, ~n~Phil Mikkelson, Ron Reeve, ~n~Smith Harrison, Stacy Rachels,
+
+[CR15_09:CRED01]
+~n~ ~n~ Steve Carlesi, Julie Wemyss, ~n~Kim Gurney
+
+[CR16_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUTSCENE MUSIC
+
+[CR16_02:CRED01]
+~n~ ~n~ ~n~ ~n~"Japanese Geisha" ~n~Sonia Slany ~n~Written by Sonia Slany ~n~Published by West One Music ~n~Courtesy of APM Music, LLC
+
+[CR16_03:CRED01]
+~n~ ~n~ ~n~ ~n~"The Heist" ~n~Bugz in the Attic ~n~Written by K. Tatham ~n~Published by Copyright Control ~n~(p) 2005 Bugz In The Attic ~n~Courtesy of Bugz In The Attic ~n~www.bugzintheattic.co.uk
+
+[CR16_04:CRED01]
+~n~ ~n~ ~n~ ~n~"A Dark March" ~n~Danger Mouse ~n~Written by Danger Mouse ~n~Published by ~n~Underground Animals (ASCAP)
+
+[CR17_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC PUBLISHING TEAM
+
+[CR17_02:CRED01]
+~n~ ~n~ ~n~ ~n~Terry Donovan, Jenefer Gross, ~n~Jennifer Kolbe, Devin Winterbottom, ~n~Adam Tedman, Michael Elkind,
+
+[CR17_03:CRED01]
+~n~ ~n~Paul Yeates, Hosi Simon, ~n~Daniel Einzig, Marlene Yamaguchi, ~n~Gauri Khindaria, Stanton Sarjeant,
+
+[CR17_04:CRED01]
+~n~ ~n~Jordan Chew, Ryan Rayhill, ~n~Devin Bennett, Todd Zuniga, ~n~Thomas O'Donnell, Maria Tabia,
+
+[CR17_05:CRED01]
+~n~ ~n~Anthony Carvalho, Lyonel Tollemache, ~n~John Notarfrancesco, Jerry Luna, ~n~Stuart Petri, Stephen Walsh,
+
+[CR17_06:CRED01]
+~n~ ~n~Michael Carnevale, Andrea Borzuku, ~n~John Schuhmann, Alice Chuang, ~n~Mike Torok, Mayumi Kobayashi,
+
+[CR17_07:CRED01]
+~n~ ~n~Elizabeth Satterwhite, Bruce Dugan, ~n~Eli Weissman, Phil Poli, ~n~Jaesun Celebre, Russell Lewis,
+
+[CR17_08:CRED01]
+~n~ ~n~Sean Mackenzie, Megan Henretta, ~n~Angus Wong, Kristine Severson
+
+[CR17_09:CRED01]
+~n~ ~n~ ~n~ ~n~Cover Art ~n~Steven Olds, Stephen Bliss, ~n~Anthony Macbain
+
+[CR17_10:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LONDON PD
+
+[CR17_11:CRED01]
+~n~ ~n~ ~n~ ~n~ Chris Madgwick, Chris Wood, ~n~Daimion Pinnock, David McCarthy, ~n~Graham Ainsley, Jurgen Mol,
+
+[CR17_12:CRED01]
+~n~ ~n~ Laura Battistuzzi, Maike Köhler, ~n~Shino Hori, Lucien King
+
+[CR18_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LINCOLN
+
+[CR18_02:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Mark Lloyd
+
+[CR18_03:CRED01]
+~n~ ~n~ ~n~ ~n~Deputy QA Manager ~n~Tim Bates
+
+[CR18_04:CRED01]
+~n~ ~n~ ~n~ ~n~QA Supervisor ~n~Kevin Hobson
+
+[CR18_05:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Tester ~n~Eddie Gibson ~n~ ~n~ ~n~ ~n~Secondary Lead Tester ~n~Mike Bennett
+
+[CR18_06:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Jonathan Stones, Mike Emeny, ~n~Andy Mason, Lee Johnson, ~n~Carl Young, Matthew Lunnon, ~n~Dan Goddard, Steve McGagh, ~n~Craig Reeve, Joby Luckett
+
+[CR18_07:CRED01]
+~n~ ~n~ ~n~ ~n~Localization Team ~n~ ~n~ ~n~ ~n~Localization Supervisor ~n~Chris Welsh
+
+[CR18_08:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Antoine Cabrol, Dominic Garcia, ~n~Paolo Ceccotti, Ferruccio Cinquemani, ~n~Nicolas Klimoff, Jesús Pérez Rosales ~n~ ~n~ ~n~ ~n~IT Support ~n~Nick McVey
+
+[CR19_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~SPECIAL THANKS
+
+[CR19_02:CRED01]
+~n~ ~n~ ~n~ ~n~Scooter, Ross Wallace, ~n~Steve Taylor, Kevin Wong, ~n~Kevin Bolt, John Haime,
+
+[CR19_03:CRED01]
+~n~ ~n~Dave Watson, Thomas French, ~n~James Arthur, Martin Connor, ~n~Brendon McDonald, Julie Wemyss,
+
+[CR19_04:CRED01]
+~n~ ~n~Raff Crolla, James Duffy, ~n~Kim Gurney, Andrew Ness, ~n~Andy Brooks (Gearbox), Alan Mcgregor,
+
+[CR19_05:CRED01]
+~n~ ~n~Chris McCallum, Fred, Narns, ~n~Alan, Taruki, Red, ~n~Big Foot, Rita Liberator, ~n~Elliot Torres
+
+[CR19_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THANKS
+
+[CR19_07:CRED01]
+~n~ ~n~ ~n~ ~n~Deborah Mannis-Gardner ~n~and Mark Schwartz. ~n~Randy Acker, Karen Adams, ~n~Mark Ainley, Robin Albers,
+
+[CR19_08:CRED01]
+~n~ ~n~Duncan Baker, Armen Boladian, ~n~Tanya Bridges, Richard Brown, ~n~Matt Brookman, Elena Byington,
+
+[CR19_09:CRED01]
+~n~ ~n~Ed Butts, Rob Cairns, ~n~Mike Callaghan, Joseph Carlone, ~n~Kevin Carson, Jason Chin,
+
+[CR19_10:CRED01]
+~n~ ~n~Allison Cipris, Alimah Deen, ~n~James Ellis, Helen English, ~n~Nasko Fejza, Scott Gardner,
+
+[CR19_11:CRED01]
+~n~ ~n~Jochem Gerrits, ~n~Laurie Goldstein Thomas Golubic, ~n~Nick Guarino, Jon Handle, ~n~Millie Hysu, Robert Jo,
+
+[CR19_12:CRED01]
+~n~ ~n~Paul Johannes, Gavin Johnson, ~n~Curtis A. Jones, Jennifer Justice, ~n~Rod Kotler, Diana La Pointe,
+
+[CR19_13:CRED01]
+~n~ ~n~Michael Lau, Jim Long, ~n~Alex De Maegd, John Massa, ~n~Kendall Minter, Steve Morgan,
+
+[CR19_14:CRED01]
+~n~ ~n~Giorgio Moroder, Suzanne Moss, ~n~Melissa Munana, Kirin Murphy, ~n~Kurosh Nasseri,
+
+[CR19_15:CRED01]
+~n~ ~n~Gwen Niles Sean Ogden ~n~aka DJ Nightshade, ~n~Robin Orlowski, Jonathan Palmer, ~n~Tanvi Patel, Jane Peterer,
+
+[CR19_16:CRED01]
+~n~ ~n~Mark Picchiotti, Rob Playford, ~n~Dan Quan, R. Ramnarayan, ~n~Mary Beth Roberts, ~n~Virgil Roberts, Lindsay Rodman,
+
+[CR19_17:CRED01]
+~n~ ~n~Jim Romano, Craig Roseberry, ~n~Gerry Rosenblatt, RZA, ~n~Ali Samii, Alan Scholefield,
+
+[CR19_18:CRED01]
+~n~ ~n~Christopher Scott, Suzi Scott, ~n~Fredro Scruggs, Jennefer Showalter, ~n~Alan Skiena, Saskia Slegers,
+
+[CR19_19:CRED01]
+~n~ ~n~Fran Spero, Lem Springsteen, ~n~David Steel, Jane Ventom, ~n~Christian Wiseman, Debi Wylde,
+
+[CR19_20:CRED01]
+~n~ ~n~Donna Young, Richie Zito
+
+{ reLCS - original but modified (were all CAPS) }
+
+[FEH_SGA]
+Start New Game
+
+[FEH_STA]
+Stats
+
+[FEP_STA]
+Stats
+
+[FEH_BRI]
+Brief
+
+[FEH_MAP]
+Map
+
+[FET_OPT]
+Options
+
+[FEL_ENG]
+English
+
+[FEL_FRE]
+French
+
+[FEL_GER]
+German
+
+[FEL_ITA]
+Italian
+
+[FEL_SPA]
+Spanish
+
+[FES_NGA]
+New game
+
+[FES_LOA]
+Load game
+
+{ reLCS - PC lines }
+[FEC_PED]
+Controls On Foot
+
+[FEC_VEH]
+Controls In Vehicle
+
+[FEC_FPR]
+Controls For First Person
+
+[FEC_CMM]
+Common Controls
+
+[FEC_PWL]
+Go Left
+
+[FEC_PWR]
+Go Right
+
+[FEC_PWF]
+Walk Forward
+
+[FEC_PWT]
+Walk towards camera
+
+[FEC_PLB]
+Look Behind.
+
+[FEC_PFR]
+Fire Weapon
+
+[FEC_CLE]
+Cycle Weapon Left
+
+[FEC_CRI]
+Cycle Weapon Right
+
+[FEC_LKT]
+Lock Target
+
+[FEC_PJP]
+Ped Jump
+
+[FEC_PSP]
+Ped Sprint
+
+[FEC_PSH]
+Ped Shoot
+
+[FEC_TLF]
+Next Target To Left
+
+[FEC_TRG]
+Next Target to Right
+
+[FEC_CCM]
+Center Camera Behind player.
+
+[FEC_SZI]
+Sniper Rifle Zoom In
+
+[FEC_SZO]
+Sniper Rifle Zoom Out
+
+[FEC_LKL]
+First Person Look Left
+
+[FEC_LRT]
+First Person Look Right
+
+[FEC_LUP]
+1st Person Look Up
+
+[FEC_LDN]
+1st Person Look Down
+
+[FEC_LBH]
+Look Behind Vehicle
+
+[FEC_LLF]
+Look Left of Vehicle
+
+[FEC_LRG]
+Look Right of Vehicle
+
+[FEC_HRN]
+Horn
+
+[FEC_HBR]
+Vehicle Handbrake
+
+[FEC_ACL]
+Vehicle Accelerate
+
+[FEC_BRK]
+Vehicle Brake
+
+[FEC_TSM]
+Toggle SubMissions
+
+[FEC_CRD]
+Change Radio Station
+
+[FEC_ENT]
+Enter/Exit Vehicle
+
+[FEC_WPN]
+Fire Weapon
+
+[FEC_PAS]
+Pause
+
+[FEC_FPO]
+1st Person Weapons
+
+[FEC_SMS]
+Show mouse pointer
+
+[FEC_CMS]
+Change camera mode all situations.
+
+[FEC_TSS]
+Take Screen Shot
+
+[FEC_DBG]
+DEBUG MENU
+
+[FEC_TGD]
+Toggle Pad Game/Debug
+
+[FEC_TDO]
+Turn Debug Camera Off
+
+[FEC_IVH]
+Invert Mouse Horizontally:
+
+[FEC_MSL]
+LMB
+
+[FEC_MSM]
+MMB
+
+[FEC_MSR]
+RMB
+
+[FEC_QUE]
+???
+
+[FEC_TWO]
+Only Two Keyboard Keys Allowed
+
+[FEC_UMS]
+Unique Mouse Keys only please.
+
+[FEC_OMS]
+Only One Mouse Keys Allowed
+
+[FEC_UJS]
+Unique Joystick buttons only please.
+
+[FEC_OJS]
+Only One Joystick Buttons per action allowed
+
+[FEC_PTL]
+Use LockTarget with Weapon Switch Left.
+
+[FEC_PTR]
+Use LockTarget with Weapon Switch Right.
+
+[FEC_LBC]
+Use Look Left With Look Right.
+
+[FEC_JBO]
+JOY ~1~
+
+[FEC_WAR]
+Warning
+
+[FEC_OKK]
+O.K.
+
+[FEC_DLF]
+Delete Failed.
+
+[FEC_SVU]
+Save Unsuccessful.
+
+[FEC_LUN]
+Load Unsuccessful. File Corrupted, Please delete.
+
+[FEC_PAD]
+Gamepad
+
+[FEC_JOY]
+Joystick
+
+[FES_CSA]
+Select a skin from the list below:
+
+[FET_HRD]
+DEFAULT SETTINGS RESTORED
+
+[FET_MST]
+MOUSE CONTROLLED STEERING:
+
+[FEC_STR]
+NUM STAR
+
+[FET_MIG]
+LEFT, RIGHT, MOUSEWHEEL TO ADJUST
+
+[FET_CIG]
+BACKSPACE TO CLEAR - LMB, RETURN TO CHANGE
+
+[FET_DSN]
+Default Player Skin.bmp
+
+[FET_RSO]
+ORIGINAL SETTING RESTORED
+
+[FET_RSC]
+HARDWARE NOT AVAILABLE - ORIGINAL SETTING RESTORED
+
+[FEA_3DH]
+AUDIO HARDWARE:
+
+[FEA_SPK]
+SPEAKERS CONFIGURATION:
+
+[FEM_LOD]
+DRAW DISTANCE:
+
+[FEM_VSC]
+FRAME SYNC:
+
+[FEM_FRM]
+FRAME LIMITER:
+
+[FEM_MM]
+MAIN MENU
+
+[FED_RES]
+SCREEN RESOLUTION:
+
+[FET_CTL]
+CONTROLLER SETUP
+
+[FEC_MSH]
+MOUSE SENSITIVITY:
+
+[FEC_IVV]
+INVERT MOUSE VERTICALLY:
+
+[FEC_FNC]
+F~1~
+
+[FEC_IRT]
+INS
+
+[FEC_DLL]
+DEL
+
+[FEC_HME]
+HOME
+
+[FEC_END]
+END
+
+[FEC_PGU]
+PGUP
+
+[FEC_PGD]
+PGDN
+
+[FEC_UPA]
+UP
+
+[FEC_DWA]
+DOWN
+
+[FEC_LFA]
+LEFT
+
+[FEC_RFA]
+RIGHT
+
+[FEC_NUM]
+NUM
+
+[FEC_NMN]
+NUM~1~
+
+[FEC_FWS]
+NUM /
+
+[FEC_PLS]
+NUM +
+
+[FEC_MIN]
+NUM -
+
+[FEC_DOT]
+NUM .
+
+[FEC_NLK]
+NUMLOCK
+
+[FEC_ETR]
+ENT
+
+[FEC_SLK]
+SCROLL LOCK
+
+[FEC_PSB]
+BREAK
+
+[FEC_BSP]
+BSPACE
+
+[FEC_TAB]
+TAB
+
+[FEC_CLK]
+CAPSLOCK
+
+[FEC_RTN]
+RET
+
+[FEC_LSF]
+LSHIFT
+
+[FEC_RSF]
+RSHIFT
+
+[FEC_LCT]
+LCTRL
+
+[FEC_RCT]
+RCTRL
+
+[FEC_LAL]
+LALT
+
+[FEC_RAL]
+RALT
+
+[FEC_LWD]
+LWIN
+
+[FEC_RWD]
+RWIN
+
+[FEC_WRC]
+WINCLICK
+
+[FEC_SPC]
+SPC
+
+[WIN_TTL]
+Grand Theft Auto LCS
+
+[WIN_95]
+Grand Theft Auto LCS cannot run on Windows 95
+
+[WIN_DX]
+Grand Theft Auto LCS requires at least DirectX version 8.1
+
+[FET_EIG]
+CANNOT SET A CONTROL FOR THIS ACTION
+
+[FET_DAM]
+DYNAMIC ACOUSTIC MODELING:
+
+[FEQ_SRE]
+Are you sure you want to quit? All progress since the last save game will be lost. Proceed?
+
+[FEQ_SRW]
+Are you sure you want to quit the game?
+
+[FET_QG]
+QUIT GAME
+
+[FEN_STA]
+START GAME
+
+[FET_PAU]
+PAUSE MENU
+
+[REPLAY]
+REPLAY
+
+[FEC_ANS]
+Action
+
+[CVT_MSG]
+Converting textures to optimal format for your video card
+
+[FEC_SFT]
+SHIFT
+
+[FEH_VMP]
+VIEW MAP
+
+[FES_DEE]
+Delete Failed! Please try again.
+
+[FES_CMP]
+Save failed! Please try again.
+
+[FESZ_WR]
+Saving current game. Please wait...
+
+[FELD_WR]
+Loading game. Please wait...
+
+[FEDL_WR]
+Deleting saved game. Please wait...
+
+[PCRESRT]
+Starting new game. Please wait...
+
+[FET_STI]
+Standard Controls
+
+[FET_CTI]
+Classic Controls
+
+[FET_PS]
+Player Skin Setup
+
+[FEH_NA]
+OPTION NOT AVAILABLE
+
+[FEH_MPH]
+MOUSE, CURSORS TO MOVE - PGUP, PGDN, MSWHEEL TO ZOOM, L - LEGEND
+
+[NO_PCCD]
+Please insert your GTA Liberty City Stories CD, or press ESC to cancel
+
+[FEH_SSA]
+CURSORS TO MOVE - S TO SAVE TO FILE
+
+[FES_CMI]
+LAST MISSION PASSED
+
+[FET_STS]
+STATS SAVED TO 'STATS.HTML' + 'STATS.TXT'
+
+[WIN_VDM]
+Grand Theft Auto LCS cannot find enough available video memory
+
+[FEC_ERI]
+Error! One or more control actions are not bound to a key or button. Please check all control actions are set
+
+[FEC_TFU]
+Turret + Lean Up
+
+[FEC_TFD]
+Turret + Lean Down
+
+[FET_RIG]
+SELECT A NEW CONTROL FOR THIS ACTION
+
+[FEA_NM3]
+NO MP3 FILES FOUND
+
+[FEA_MPB]
+MP3 VOLUME BOOST:
+
+[CVT_ERR]
+You have run out of disk space. Please make some space on your harddisk before continuing. Press ESC to cancel.
+
+[FEA_ADP]
+AUTO-DETECT HARDWARE
+
+[FEP_STG]
+Start Game
+
+[FEP_OPT]
+Options
+
+[FEP_QUI]
+Quit Game
+
+[FEA_2SP]
+2 Speakers
+
+[FEA_4SP]
+More than 2 speakers
+
+[FEA_EAR]
+Headphones
+
+[FEA_NAH]
+NO AUDIO HARDWARE
+
+[FET_APP]
+APPLY
+
+[FES_SKN]
+SKIN NAME
+
+[FES_DAT]
+DATE
+
+[FES_SET]
+Use Skin
+
+[FET_DEF]
+Restore Defaults
+
+[FESZ_QZ]
+Are you sure you want to save this game?
+
+[FES_SCG]
+Save the current game?
+
+[FES_LCG]
+Load the game and continue playing?
+
+[FEC_FIR]
+Fire
+
+[FEC_NWE]
+Next weapon
+
+[FEC_PWE]
+Previous weapon
+
+[FEC_FOR]
+Forward
+
+[FEC_BAC]
+Backwards
+
+[FEC_LEF]
+Left
+
+[FEC_RIG]
+Right
+
+[FEC_ZIN]
+Zoom in
+
+[FEC_ZOT]
+Zoom out
+
+[FEC_EEX]
+Enter+exit
+
+[FEC_RAD]
+Radio
+
+[FEC_SUB]
+Sub-mission
+
+[FEC_CMR]
+Change camera
+
+[FEC_JMP]
+Jump
+
+[FEC_SPN]
+Sprint
+
+[FEC_HND]
+Handbrake
+
+[FEC_LOL]
+Look left
+
+[FEC_LOR]
+Look right
+
+[FEC_NTR]
+Next target
+
+[FEC_PTT]
+Previous target
+
+[FEC_LBA]
+Look behind
+
+[FEC_CEN]
+Center camera
+
+[FET_CFT]
+ON FOOT
+
+[FET_CCR]
+IN CAR
+
+[FET_CAC]
+ACTION
+
+[FEC_IBT]
+-
+
+[FEC_MXO]
+MXB1
+
+[FEC_MXT]
+MXB2
+
+[FEC_UNB]
+UNBOUND
+
+[FEC_TFL]
+Look left+Turret L
+
+[FEC_TFR]
+Look right+Turret R
+
+[FEC_MWF]
+MS WHEEL UP
+
+[FEC_MWB]
+MS WHEEL DN
+
+[FEC_ORR]
+or
+
+[FEC_NUS]
+NOT USED
+
+[FEC_LUD]
+Look Up
+
+[FEC_LDU]
+Look Down
+
+[FEC_CMP]
+COMBO: LOOK L+R
+
+[FEC_RED]
+Redefine Controls
+
+[FEC_MOU]
+Mouse Settings
+
+[FEP_RES]
+Resume
+
+{ reLCS updates }
+{ new languages }
+[FEL_JAP]
+JAPANESE
+
+[FEL_POL]
+POLISH
+
+[FEL_RUS]
+RUSSIAN
+
+{ new display menus }
+[FET_GFX]
+Graphics Setup
+
+[FED_MIP]
+MIP MAPPING:
+
+[FED_AAS]
+ANTI ALIASING:
+
+[FED_FIL]
+TEXTURE FILTERING:
+
+[FED_BIL]
+BILINEAR
+
+[FED_TRL]
+TRILINEAR
+
+[FED_WND]
+WINDOWED
+
+[FED_FLS]
+FULLSCREEN
+
+[FEM_CSB]
+CUTSCENE BORDERS:
+
+[FEM_SCF]
+SCREEN FORMAT:
+
+[FEM_ISL]
+MAP MEMORY USAGE:
+
+[FEM_LOW]
+LOW
+
+[FEM_MED]
+MEDIUM
+
+[FEM_HIG]
+HIGH
+
+[FEM_2PR]
+PS2 ALPHA TEST:
+
+[FEC_FRC]
+FREE CAM:
+
+{ Linux joy detection }
+[FEC_JOD]
+Detect Joystick
+
+[FEC_JPR]
+Press any key on the joystick of your choice that you want to use on the game, and it will be selected.
+
+[FEC_JDE]
+Detected joystick
+
+{ mission restart }
+[FET_RMS]
+REPLAY MISSION
+
+[FESZ_RM]
+RETRY?
+
+[FED_VPL]
+VEHICLE PIPELINE:
+
+[FED_PRM]
+PED RIM LIGHT:
+
+[FED_RGL]
+ROAD GLOSS:
+
+[FED_CLF]
+COLOUR FILTER:
+
+[FED_WLM]
+WORLD LIGHTMAPS:
+
+[FED_MBL]
+MOTION BLUR:
+
+[FEM_SIM]
+SIMPLE
+
+[FEM_NRM]
+NORMAL
+
+[FEM_MOB]
+MOBILE
+
+[FED_MFX]
+MATFX
+
+[FED_NEO]
+NEO
+
+[FEM_PS2]
+PS2
+
+[FEM_XBX]
+XBOX
+
+[FEM_NON]
+NONE
+
+[FEC_IVP]
+INVERT PAD VERTICALLY
+
+[FEC_DS2]
+DUALSHOCK 2
+
+[FEC_DS3]
+DUALSHOCK 3
+
+[FEC_DS4]
+DUALSHOCK 4
+
+[FEC_360]
+XBOX 360 CONTROLLER
+
+[FEC_ONE]
+XBOX ONE CONTROLLER
+
+[FEC_TYP]
+GAMEPAD TYPE
+
+[FET_AGS]
+Gamepad Settings
+
+[FEM_AUT] { aspect ratio related }
+AUTO
+
+[FEM_PED]
+PED DENSITY
+
+[FEM_CAR]
+CAR DENSITY
+
+[DUMMY]
+THIS LABEL NEEDS TO BE HERE !!!
+AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file
diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt
deleted file mode 100644
index 94ea95c4..00000000
--- a/utils/gxt/american.txt
+++ /dev/null
@@ -1,14438 +0,0 @@
-[IN_VEH]
-~g~Hey! Get back in the vehicle!
-
-[HEY]
-~g~Don't go solo, keep your posse together!
-
-[HELP3]
-You can only sprint for short periods before becoming tired.
-
-[HELP4_D]
-Push the right analog stick up to ~h~accelerate.
-
-[HELP5_D]
-Pull the right analog stick back to brake, or to reverse if the vehicle has stopped.
-
-[HELP7_A]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~ button ~w~to ~h~target~w~ with the sniper rifle.
-
-[HELP7_D]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~ button ~w~to ~h~target ~w~with the sniper rifle.
-
-[HELP10]
-This badge indicates you have a police wanted level.
-
-[HELP11]
-The more badges the higher your wanted level.
-
-[HELP13]
-Sometimes you may need to use pathways not shown on the radar.
-
-[TIMER]
-This is a timed mission, you must complete it before the timer counts down to zero.
-
-[HORN]
-~g~Sound the horn.
-
-[NOMONEY]
-~g~You need more cash!
-
-[REWARD]
-REWARD $~1~
-
-[M_FAIL]
-MISSION FAILED!
-
-[M_PASS]
-MISSION PASSED! $~1~
-
-[DEAD]
-WASTED!
-
-[BUSTED]
-BUSTED!
-
-[WEATHE1]
-FORCE WEATHER SUNNY
-
-[WEATHE2]
-FORCE WEATHER EXTRA SUNNY
-
-[WEATHE3]
-FORCE WEATHER CLOUDY
-
-[WEATHE4]
-FORCE WEATHER RAINY
-
-[WEATHE5]
-FORCE WEATHER FOGGY
-
-[WEATHE6]
-WEATHER NORMAL
-
-[NUMBER]
-~1~
-
-[LOADCAR]
-LOADING VEHICLE... (PRESS L1 TO CANCEL)
-
-[CARSOFF]
-Cars turned off.
-
-[CARS_ON]
-Cars turned on.
-
-[TEXTXYZ]
-Writing coordinates to file...
-
-[CHEATON]
-Cheat mode ON
-
-[CHEATOF]
-Cheat mode OFF
-
-[IMPORT1]
-Go outside and wait for your vehicle.
-
-[PAGEB11]
-Flamethrower delivered to hideout.
-
-[WANT_A]
-You will only be arrested if you have a ~h~wanted level.
-
-[WANT_B]
-Your ~h~wanted level~w~ is represented by the row of stars in the top right of the screen.
-
-[WANT_C]
-You now have a ~h~wanted level~w~ of one...
-
-[WANT_D]
-two...
-
-[WANT_E]
-three...
-
-[WANT_F]
-As your ~h~wanted level~w~ increases you will attract more powerful forms of law enforcement.
-
-[WANT_G]
-When you are ~h~'busted'~w~ you are returned to the nearest police station.
-
-[WANT_H]
-The cops will take all your weapons and some of your cash as a bribe.
-
-[WANT_I]
-Any mission you were on will be failed.
-
-[WANT_J]
-You will find ways of reducing your wanted level the more you play.
-
-[WANT_K]
-If you are in a car, ~h~SPRAY SHOPS~w~ will ~h~clear your wanted level.
-
-[HEAL_B]
-When you are ~h~'wasted'~w~ you are returned to the nearest hospital.
-
-[HEAL_C]
-You will lose your weapons and the doctors will take some cash for patching you up.
-
-[HEAL_E]
-You will find ways of healing or protecting yourself the more you play the game.
-
-[SAVE1]
-Walk into the corona to ~h~Save the game~w~. You cannot save during a mission.
-
-[SAVE2]
-Any vehicle left in this garage will be stored when the game is saved.
-
-[AMMU]
-Go inside Ammu-Nation to buy a weapon.
-
-[R_TIME]
-RACE TIME:
-
-[PROP_1]
-You don't have enough cash for this property
-
-[PROP_2]
-You cannot buy property whilst on a mission
-
-[IND_ZON]
-Vice City Beach
-
-[COM_ZON]
-Vice City Mainland
-
-[BEACH1]
-Ocean Beach
-
-[BEACH2]
-Washington Beach
-
-[BEACH3]
-Vice Point
-
-[GOLFC]
-Leaf Links
-
-[STARI]
-Starfish Island
-
-[DOCKS]
-Viceport
-
-[HAVANA]
-Little Havana
-
-[HAITI]
-Little Haiti
-
-[PORNI]
-Prawn Island
-
-[DTOWN]
-Downtown
-
-[VICE_C]
-Vice City
-
-[A_PORT]
-Escobar International
-
-[JUNKY]
-Junk Yard
-
-[PISTOL]
-Pistol
-
-[PYTHON]
-.357
-
-[UZI]
-Uz-1
-
-[TEC9]
-Tec 9
-
-[M4]
-M4
-
-[INGRAM]
-Mac
-
-[MP5]
-MP
-
-[RUGER]
-Kruger
-
-[SNIPE]
-Sniper rifle
-
-[GRENADE]
-Grenades
-
-[SHOTGN1]
-Shotgun
-
-[SHOTGN2]
-S.P.A.S. 12
-
-[SHOTGN3]
-Stubby shotgun
-
-[ARMOUR]
-Body Armor
-
-[LASER]
-.308 Sniper
-
-[BASEBAT]
-Baseball bat
-
-[HAMMER]
-Hammer
-
-[SCREWD]
-Screwdriver
-
-[CLEVER]
-Meat Cleaver
-
-[MACHETE]
-Machete
-
-[KNIFE]
-Knife
-
-[KATANA]
-Katana
-
-[CHAINSA]
-Chainsaw
-
-[G_COST]
-Cost: $~1~
-
-[CAR_1]
-Ambulance
-
-[MALIBU]
-The Malibu Club
-
-[MANSION]
-Diaz's Mansion
-
-[TMANS]
-Vercetti Estate
-
-[STRIP]
-The 'Pole Position Club'
-
-[MALL1]
-North Point Mall
-
-[BANKINT]
-El Banco Corrupto Grande
-
-[RANGE]
-Rifle Range
-
-[POL_HQ]
-VCPD HQ
-
-[INT_B]
-An Old Friend
-
-[INTB_1]
-~g~Go to the Lawyer's office.
-
-[LAW_1]
-The Party
-
-[LAW_2]
-Back Alley Brawl
-
-[LAW_3]
-Jury Fury
-
-[LAW_4]
-Riot
-
-[COL_1]
-Treacherous Swine
-
-[COL_2]
-Mall Shootout
-
-[COL_3]
-Guardian Angels
-
-[COL_4]
-Sir, Yes Sir!
-
-[COL_5]
-All Hands On Deck!
-
-[COK_1]
-The Chase
-
-[COK_2]
-Phnom Penh '86
-
-[COK_3]
-The Fastest Boat
-
-[COK_4]
-Supply & Demand
-
-[KENT_1]
-Death Row
-
-[ASS_1]
-Rub Out
-
-[BUD_1]
-Shakedown
-
-[BUD_2]
-Bar Brawl
-
-[BUD_3]
-Cop Land
-
-[CAP_1]
-Cap the Collector
-
-[FIN_1]
-Keep your Friends Close...
-
-[BANK_1]
-No Escape?
-
-[BANK_2]
-The Shootist
-
-[BANK_3]
-The Driver
-
-[BANK_4]
-The Job
-
-[CNT_1]
-Spilling the Beans
-
-[CNT_2]
-Hit the Courier
-
-[PORN_1]
-Recruitment Drive
-
-[PORN_2]
-Dildo Dodo
-
-[PORN_3]
-Martha's Mug Shot
-
-[PORN_4]
-G-spotlight
-
-[TAX_1]
-Kaufman Cabs
-
-[TAXI_1]
-V.I.P.
-
-[TAXI_2]
-Friendly Rivalry
-
-[TAXI_3]
-Cabmaggedon
-
-[ICE_1]
-Distribution
-
-[TEX_1]
-Four Iron
-
-[TEX_2]
-Two Bit Hit
-
-[TEX_3]
-Demolition Man
-
-[PHIL_1]
-Gun Runner
-
-[PHIL_2]
-Boomshine Saigon
-
-[BIKE_1]
-Alloy Wheels of Steel
-
-[BIKE_2]
-Messing with the Man
-
-[BIKE_3]
-Hog Tied
-
-[ROCK_1]
-Love Juice
-
-[ROCK_2]
-Psycho Killer
-
-[ROCK_3]
-Publicity Tour
-
-[ROCK_4]
-Love Fist!!
-
-[HAT_1]
-Juju Scramble
-
-[HAT_2]
-Bombs Away!
-
-[HAT_3]
-Dirty Lickin's
-
-[CUB_1]
-Stunt Boat Challenge
-
-[CUB_2]
-Cannon Fodder
-
-[CUB_3]
-Naval Engagement
-
-[CUB_4]
-Trojan Voodoo
-
-[JOB_1]
-Road Kill
-
-[JOB_2]
-Waste the Wife
-
-[JOB_3]
-Autocide
-
-[JOB_4]
-Check Out at the Check In
-
-[JOB_5]
-Loose Ends
-
-[ANSWER]
-Press the ~h~~k~~PED_ANSWER_PHONE~~w~ to answer your cell phone.
-
-[MOB_01A]
-Awright me ol'china! It's Paul. I might have a little result for you, but I need to speak to you in person.
-
-[MOB_01B]
-I'm enjoying a little R&R at the Club Malibu.
-
-[MOB_01C]
-Reckon you're gonna owe me a favor or two after this, sunshine. I'll see you later.
-
-[MOB_02A]
-Ssssnniiiiffffff Hey! Hello, Tommy? Tommy!
-
-[MOB_02B]
-We got a situation over at the Print Works. You better go and check it out.
-
-[MOB_02C]
-Some kind of mess or other. Things are messed up. I gotta go.
-
-[MOB_03A]
-Mr. Vercetti? I have here a signed piece of crap stating
-
-[MOB_03B]
-that you have taken on all of BJ's Auto's debts.
-
-[MOB_03C]
-With BJ's sudden disappearance I have no choice
-
-[MOB_03D]
-but to hold you responsible for his financial insecurities.
-
-[MOB_03E]
-Until this account is settled in full
-
-[MOB_03F]
-you should consider Vice City's streets to be very unfriendly.
-
-[MOB_04A]
-How you doin' mate? It's Paulo again.
-
-[MOB_04B]
-Look Tommy, I forgot to mention we're going to need some extra muscle for the concert. A bit of security.
-
-[MOB_04C]
-There's a biker gang led by Mitch Baker, it would be great publicity. Very rock and roll, baby.
-
-[MOB_04D]
-Sort this out for me and I'll get you some back stage passes for the gig, awright?
-
-[MOB_05A]
-Hey, it's Mitch. You did good Tommy, it's good to have the old girl back.
-
-[MOB_05B]
-You tell Kent Paul he'll get his security for the gig.
-
-[MOB_05C]
-You have my word on that.
-
-[MOB_05D]
-Now keep yourself out of trouble.
-
-[MOB_06A]
-Tommy, 'nuf dead man been chattin' about you, my dear.
-
-[MOB_06B]
-Thought you might need something to make you feel better. So Auntie Poulet make you some stew, aye?
-
-[MOB_06C]
-Come by me kitchen some time, ok Tommy?
-
-[MOB_08A]
-Hey Tommy, I thought you might need some business advice.
-
-[MOB_08B]
-Once you got an operation up and running, you'll need to drop by and take the week's cash.
-
-[MOB_08C]
-Let the guys think they got the run of the place and they'll try shaving the profits - ok?
-
-[MOB_08D]
-Hey, I know how to handle business, Ken, ok?
-
-[MOB_08E]
-Ok, ok. I know, you know. I know. I was,
-
-[MOB_08F]
-I was just, you know, telling you I know, that you know, that I know.
-
-[MOB_08G]
-Just keeping it sharp baby!
-
-[MOB_08H]
-Whatever, Ken, whatever...
-
-[MOB_09A]
-Hey Leo! I got some work for you!
-
-[MOB_09B]
-This ain't Leo.
-
-[MOB_09C]
-Hey, if Leo knows you got his phone, he gonna kill you!
-
-[MOB_09E]
-You killed Leo? You must have big cojones - wanna work for me?!
-
-[MOB_09F]
-Drop by my father's cafe in Little Havana and we'll talk mano a mano.
-
-[MOB_10A]
-Tommy! Look, I gotta ask you a favor.
-
-[MOB_10B]
-Steve! How's filming going!
-
-[MOB_10C]
-Fine, fine. I, heh, WE need a car chase scene, but our budget can't stretch to it.
-
-[MOB_10D]
-I've left some wheels around town. You'll know what to do.
-
-[MOB_10E]
-Ok Steve, I'll keep an eye out. Catch you later.
-
-[MOB_11A]
-Howdy son, just thought I'd ring you up and give you some advice.
-
-[MOB_11B]
-Hey, Avery. What's eating you?
-
-[MOB_11C]
-There's a lot of opportunity in this town if you own the right real estate, you catch my drift?
-
-[MOB_11D]
-I reckon so...
-
-[MOB_11E]
-All I'm saying is keep your eyes open and you might find the perfect business opportunity. I'll catch y'later.
-
-[MOB_11F]
-Later, Avery.
-
-[MOB12_A]
-Hey Tommy, it's Avery! Now listen, I got me all tied up at the moment
-
-[MOB12_B]
-and I have a representative of mine needs chaperoning out to the Gator Keys.
-
-[MOB12_C]
-I'm after some land out that way, so I'm sending someone out to sweeten the deal.
-
-[MOB12_D]
-Could you do me a favor and make sure he gets there ok?
-
-[MOB12_E]
-Yeah, sure thing Avery. Where'd you want me to pick him up?
-
-[MOB12_F]
-He's just finishing some business at the building site. I said you'd pick him up from there.
-
-[MOB12_G]
-No problem. See you later, Avery.
-
-[MOB13_A]
-Vercetti? VERCETTI!! Damn you man, you've got to help me!
-
-[MOB13_B]
-Mr. Moffat? How's family life?
-
-[MOB13_C]
-Damn you to hell, HELL, do hear me?!
-
-[MOB13_D]
-Well it was nice chatting...
-
-[MOB13_E]
-WAIT! Wait, Vercetti - Tommy, can I call you Tommy?
-
-[MOB13_F]
-We're both businessmen, yeah? You know a good deal when you hear one, ok?
-
-[MOB13_G]
-I don't have time to chat, get to the point.
-
-[MOB13_H]
-MONEY. Money is the goddamned point.
-
-[MOB13_I]
-I've escaped the coop again, but it's never long before they track me down - they think it's a damned game!
-
-[MOB13_J]
-I'm at a pay phone somewhere in this god forsaken shit hole.
-
-[MOB13_K]
-Get me out of here before they take me back and...and..oh go-o-od...
-
-[MOB13_L]
-Well, I'm busy for the next -
-
-[MOB13_M]
-No! Don't shit with me here, have a heart! No man should have to do such, such things.
-
-[MOB13_N]
-I'm on my knees here Tommy, in the dirt begging you please...
-
-[MOB13_O]
-I guess I could swing by that way, see if I can spot you...
-
-[MOB13_P]
-Oh god, they're coming. For the love of Christ hurry, hurry!
-
-[MOB_14A]
-Hey there Tommy, you're gonna love me mate.
-
-[MOB_14B]
-A little birdy told me that Vice City SWAT Division has a deposit box at a certain rather large banking establishment,
-
-[MOB_14C]
-where they keep all the bribes they've taken over the years,
-
-[MOB_14D]
-like some kind of old boys' retirement fund.
-
-[MOB_14E]
-Of course, if this information should ever help you acquire any of that cash,
-
-[MOB_14F]
-I guess you'd feel obliged to push some of it my way?
-
-[MOB_14G]
-I'll bear that in mind, thanks Kent.
-
-[MOB_14H]
-It's Paul. I'm from Kent, near London, you prat.
-
-[MOB_14I]
-My provincial English geography ain't what it was.
-
-[MOB15_A]
-Tommy, mate, it's Paul, from Kent,
-
-[MOB15_B]
-a couple of proper sorts have your name written all over them, down at the Malibu.
-
-[MOB15_C]
-What are you talking about?
-
-[MOB15_D]
-Sorts. Birds. You know. Girls. Tastey ones, don't think they're brasses or nothing.
-
-[MOB15_E]
-You gotta come check them out.
-
-[MOB16_A]
-Tommy, Paulo here, que pasa amigo?
-
-[MOB16_B]
-What do you want Paul. I don't want any fake label clothes.
-
-[MOB16_C]
-Very funny, mate, but you know I don't touch bent gear.
-
-[MOB16_D]
-Nah, I was just calling to see if I get a part in one your movies,
-
-[MOB16_E]
-back in England I did a lot of blue stuff, mate.
-
-[MOB16_F]
-I'm packing more heat than you, my son.
-
-[MOB16_G]
-Paul, thanks for the offer, I'll bear it in mind.
-
-[MOB16_H]
-Seriously, don't forget about me, after all I done for you.
-
-[MOB16_I]
-That's what I'm trying to forget about.
-
-[MOB19_A]
-Tommy V, It's KP here. Kent Paul. Word on the street is people want to rip you off.
-
-[MOB19_B]
-Keep your eye's peeled, my son. And remember, I didn't say nothing to you about this.
-
-[MOB_20A]
-Alright, Tommy, it's Paul. I just heard from a mush that you've been a real naughty boy.
-
-[MOB_20B]
-Somebody has taken offense to you acting like the big guy all of a sudden, giving it the big shot thing.
-
-[MOB_20C]
-Well, don't say I never warned you or nothing. Boasting is a mug's game, son.
-
-[MOB_20D]
-Anyway, I heard there's some price been put on your head and someone's going to have a crack at you,
-
-[MOB_20E]
-so watch yourself, and remember me, mate.
-
-[MOB21_A]
-Tommy, Thomas, it's Cortez. Que pasa?
-
-[MOB21_B]
-Things are interesting. How are you, my friend?
-
-[MOB21_G]
-I wanted to ask you about Mercedes.
-
-[MOB21_H]
-Ok, what about her?
-
-[MOB21_I]
-Oh Tommy, Tommy. I, I hear these stories, all these stories - I don't know what to think.
-
-[MOB21_K]
-Maybe she thinks she can do what she likes, but Tommy, tell me, is it true?
-
-[MOB21_M]
-Is what true?
-
-[MOB21_N]
-These stories I hear. Is she really going to be a lawyer?
-
-[MOB21_O]
-Oh Tommy, the shame, the shame! You know, we Cortez's are a proud family.
-
-[MOB21_P]
-We would never allow a daughter of ours to become a lawyer. Please tell me it isn't so. I don't think I could take it.
-
-[MOB21_Q]
-Oh Colonel, I can assure you Mercedes is never going to become a lawyer. Don't worry about it.
-
-[MOB21_R]
-Oh thank you, Tommy. Tommy, thank you. The shame would be unbearable. She is a lady, not a parasite, you know.
-
-[MOB21_S]
-I know, colonel.
-
-[MOB21_T]
-Anyway, Tommy, you must excuse me, the new minister of the interior has arrived.
-
-[MOB21_U]
-Many years ago, I killed his father in a failed coup so I must be polite. Good day, amigo.
-
-[MOB21_C]
-Tommy, it is always a struggle here. Excuse the poor line, we have just had another failed coup.
-
-[MOB21_D]
-The people are the most demanding mistress of all.
-
-[MOB21_E]
-So far, we have had three revolutions and four coups since I return from Vice City.
-
-[MOB21_F]
-Luckily, I have been promoted each time.
-
-[MOB21_J]
-Maybe everyone is humiliating me.
-
-[MOB21_L]
-but tell me Tommy, is it true?
-
-[MOB22_A]
-Tommy, you are proving very useful, my friend.
-
-[MOB22_B]
-Thanks, Cortez. What about my deal?
-
-[MOB22_C]
-Tommy, I am working tirelessly on your behalf to ensue we get to the bottom of this trench of stinking lies and deceit,
-
-[MOB22_D]
-you have my word on that, but in the meantime,
-
-[MOB22_E]
-please accept the esteemed thanks of my people for your work on our behalf.
-
-[MOB_25A]
-Tommy, Thomas it's Cortez. Look, the French are giving me all kinds of trouble, amigo.
-
-[MOB_25B]
-Damn hypocrites. They spend a hundred years stealing from poor countries and they call me a thief!
-
-[MOB_25C]
-I am going to need your help as soon as possible, amigo.
-
-[MOB_25D]
-So please hurry, Tommy, I need you, all right? I hate the damn French.
-
-[MOB_26A]
-Hello, Tommy?
-
-[MOB_26B]
-Yeah?
-
-[MOB_26C]
-It's Baker. I just wanted to say I really enjoyed the show.
-
-[MOB_26D]
-Me and the boys want to thank you, and remind you,
-
-[MOB_26E]
-you got our respect. Good day. Keep riding hard, son.
-
-[MOB_29A]
-Hello, is this Mr. Tommy Vercetti?
-
-[MOB_29B]
-Yes.
-
-[MOB_29C]
-Well, I hear through the vine of grapes you the man when someone got a vermin infestation.
-
-[MOB_29D]
-Maybe...
-
-[MOB_29E]
-Well, I got a real vermin infestation. Haitians everywhere.
-
-[MOB_29F]
-My name is Umberto Robina and I want you to meet me at the Cafe Robina as soon as you can,
-
-[MOB_29G]
-'cause I tell you, these damn Haitians gone too far this time.
-
-[MOB_29H]
-Test
-
-[MOB_30A]
-Tommy, is Umberto Robina
-
-[MOB_30B]
-Hey, how's the cafe?
-
-[MOB_30C]
-Oh, wonderful. Incredible. Tommy, incredible. No wimps, Tommy, just real men, and the beautiful women!
-
-[MOB_30D]
-Anyway, I wanted to tell you, me and Papi, to us, you Cuban.
-
-[MOB_30E]
-You have proved yourself, man. You got big cojones.
-
-[MOB_30F]
-Well thank you, Umberto. Nobody's said that to me since I left jail. I'll see you around.
-
-[MOB_33A]
-Tommy, it's Phil, now cut out all the reminiscing crap and listen to me, you hear?
-
-[MOB_33B]
-Good. I got me some extra strength boomshine nearing fermentation time and I was wondering if you'd fancy having a shot.
-
-[MOB_33C]
-Seriously, Tommy, if you like a drink, or if you need to strip paint, this stuff'll make a man out of you.
-
-[MOB_33D]
-Sure did out of me, even though I can't see out of one eye. I'll be waiting for you, y'hear.
-
-[MOB_34A]
-Tommy, I really enjoyed working with you. Ain't had so much fun since the ridge in Nam, pal.
-
-[MOB_34B]
-Anyhows, you need anything, you call on me, you hear?
-
-[MOB_34C]
-I always remember those I served with,
-
-[MOB_34D]
-and I am sure I can help you out, you hear?
-
-[MOB_35A]
-Tommy, the wound is healing well. Funny thing is,
-
-[MOB_35B]
-I have fought in 6 battle zones and always walked away without a scratch, and now this!
-
-[MOB_35C]
-One armed Phil. Still, I got me a healthy selection of one handed fire power so I'll never be unarmed Phil, you hear.
-
-[MOB_35D]
-Any way son, cut out the sentimental crap and go buy yourself a drink, you hear!
-
-[MOB_36A]
-Tommy, it's Phil, I want to thank you for helping me out back there son,
-
-[MOB_36B]
-Damn Charlie, he'll always ambush you somewhere or other,
-
-[MOB_36C]
-Anyway the wound is healing well, and it means I'll no longer be defrauding the government on my disability check.
-
-[MOB_40A]
-Hey Tommy, it's Sonny. How's the sun tan?
-
-[MOB_40B]
-I ain't got no sun tan.
-
-[MOB_40C]
-Well, you ain't got my money, either, so I'm wondering to myself,
-
-[MOB_40D]
-what are you doing? So, tell me, Tommy, what are you doing?
-
-[MOB_40E]
-I'm looking for the money, Sonny. Don't worry.
-
-[MOB_40F]
-I am worrying, Tommy, that's my style,
-
-[MOB_40G]
-because I seem to have this problem in my life with unreliable people.
-
-[MOB_40H]
-Don't be an unreliable person, Tommy, please.
-
-[MOB_40I]
-Do us both a favor. I'm looking forward to hearing from you.
-
-[MOB_41A]
-Tommy, remember me?
-
-[MOB_41B]
-Hello Sonny.
-
-[MOB_41C]
-That's right, Sonny. We're old friends,
-
-[MOB_41D]
-You never write me, you never call. Don't you want to be friends no more?
-
-[MOB_41E]
-I've been busy trying to sort things out. You didn't give me a lot of support down here, Sonny.
-
-[MOB_41F]
-Oh, my fault is it? We'll I've heard you been busy all right.
-
-[MOB_41G]
-Busy killing drugs barons. Busy taking over.
-
-[MOB_41H]
-Don't forget about us, Tommy, 'cause I can assure you, I ain't forgotten about you.
-
-[MOB_42A]
-Tommy.
-
-[MOB_42B]
-Sonny.
-
-[MOB_42C]
-Obviously you are suffering from hearing problems, so I'll try again.
-
-[MOB_42D]
-Where's the goddamned money, where's the goddamned stuff, and where's my cut of your new action?
-
-[MOB_42E]
-You are making an idiot out of me, Tommy, and I'm not laughing yet.
-
-[MOB_43A]
-Tommy, Tommy, Tommy, I had Sonny on the phone, ok, are you with me?.
-
-[MOB_43B]
-I don't know about you, but there's something about a man threatening to murder my family
-
-[MOB_43C]
-which really scares the crap out of me. What are you going to do?
-
-[MOB_43D]
-Ken, take it easy.
-
-[MOB_43E]
-I AM calm, calm as a man can be when he's fearing for his life!
-
-[MOB_43F]
-Stay off the idiot fuel and look after yourself.
-
-[MOB_43G]
-No one's gonna take us out. I'll see you later.
-
-[MOB_43H]
-I am calm. Don't I sound calm? Must be impending death that is doing this to my voice.
-
-[MOB45_A]
-Tommy We gotta talk about stuff.
-
-[MOB45_B]
-What's the problem Lance?
-
-[MOB45_C]
-It's you, my friend, I feel you're not giving me a fair slice.
-
-[MOB45_D]
-And more than that, you been embarrassing me in front of the boys. I can't have that.
-
-[MOB45_E]
-Lance, it ain't like that. You've been making mistakes.
-
-[MOB45_F]
-Tommy, I'm not your message boy. I'm not your running boy.
-
-[MOB45_G]
-Lance, don't screw up, and we won't have any problems. I screw up, you can lay into me any time.
-
-[MOB45_H]
-Tommy, I've done everything for you, you treat me like a fool. Don't do that.
-
-[MOB45_I]
-Lance, I won't rip you off or stab you in the back, okay?
-
-[MOB45_J]
-Just take it easy. This is tough enough without you getting all emotional on me.
-
-[MOB45_K]
-Trust me. Do you hear me, do you hear me?
-
-[MOB45_L]
-I hear you, Tommy, but I can't take this much more.
-
-[MOB45_M]
-Lance, don't be like this. Now I'm warning you.
-
-[MOB45_N]
-Do you hear me? Just relax, take a few days off. Okay? I'll talk to you.
-
-[MOB46_A]
-Yo, Tommy! It's Lance.
-
-[MOB46_B]
-Yeah?
-
-[MOB46_C]
-Oh, nice to hear from you, Lance. Come on, man, be cool, be cool.
-
-[MOB46_D]
-I'm in the middle of something. What do you want?
-
-[MOB46_E]
-Nothing. Just to say, you know. Look Tommy, we can do this thing.
-
-[MOB46_F]
-You and me, no problem. You know what I mean?
-
-[MOB46_G]
-We're going to have to do it, 'cause otherwise, we're going to be dead, Lance.
-
-[MOB46_H]
-We're in too far now. But thanks for the call. I'll speak to you later.
-
-[MOB_47A]
-Tommy, Lance, we got big problems. Come down here. Right away.
-
-[MOB52_A]
-Hey Leo, I think we got a buyer for Diaz's merchandise.
-
-[MOB52_B]
-You gotta give him a ring, man, set up the deal, you know?
-
-[MOB52_C]
-Where are you now?
-
-[MOB52_D]
-You ok Leo? You sound kinda different.
-
-[MOB52_E]
-Just tell me where you are.
-
-[MOB52_F]
-Who the hell is this? Put Leo on, man!
-
-[MOB52_G]
-Leo's gone away for a while, he left me in charge.
-
-[MOB52_H]
-Screw you, man!
-
-[MOB54_A]
-Hiya Tommy!
-
-[MOB54_B]
-Hi Mercedes, howyadoin'?
-
-[MOB54_C]
-I got a new apartment up in Vice Point
-
-[MOB54_D]
-- thought you might want to drop by sometime.
-
-[MOB54_E]
-I'd love to. I'll catch you later.
-
-[MOB55_A]
-Tommy, it's me.
-
-[MOB55_B]
-Hi Mercedes.
-
-[MOB55_C]
-Tommy, I so bored, when we going to have some fun?
-
-[MOB55_D]
-What do you mean?
-
-[MOB55_E]
-Well, I know you're busy fighting and killing and corrupting people,
-
-[MOB55_F]
-but I just want to have some fun. So don't forget about me, you hear?
-
-[MOB56_A]
-Tommy, I hear you kill Ricardo Diaz.
-
-[MOB56_B]
-there was an unfortunate fire at his mansion.
-
-[MOB56_C]
-I think he burnt to death in an acrylic shirt.
-
-[MOB56_D]
-Tommy, I so proud of you. I knew you were a real man.
-
-[MOB56_E]
-He awful trouser stain of a man, you make me so proud to be your friend.
-
-[MOB56_F]
-No, I know you going to be busy trying to take over this town,
-
-[MOB56_G]
-but don't forget about me, you hear?
-
-[MOB57_A]
-It's merceedes. I no longer love you Tommy.
-
-[MOB57_B]
-I no longer do. Honest. 'cause you no longer nice to Mercedes.
-
-[MOB57_C]
-You no longer treat her like a lady. You ignore me and I hate you.
-
-[MOB57_D]
-I insist you come to see me right away!
-
-[MOB58_A]
-Tommy.
-
-[MOB58_B]
-Hey Mercedes.
-
-[MOB58_C]
-Hey indeed Mr. Tough Guy. I real angry with you Tommy.
-
-[MOB58_D]
-Never make me hang out with Jezz Torrent again.
-
-[MOB58_E]
-He is pathetic. Half way through he starts crying about his doggie
-
-[MOB58_F]
-that died when he was 7 years old and that his mommy never loved him.
-
-[MOB58_G]
-And Tommy. He wear a wig and a bra in private.
-
-[MOB58_H]
-I not very happy with you!
-
-[MOB59_A]
-Ooh Tommy, its Mercedes.
-
-[MOB59_B]
-I just want to say, I have so much fun on that film set.
-
-[MOB59_C]
-Anything else you have like that, you let me know.
-
-[MOB59_D]
-I really mean that. I always wanted to be an actress.
-
-[MOB59_E]
-I think I learn a lot about the dramatic process.
-
-[MOB59_F]
-It so enlightening! Thank you. Thank you. I see you real soon. Adios.
-
-[MOB_99]
-Get to the payphone at location.
-
-[MOB_98]
-Get to the payphone at location.
-
-[MOB_97]
-Get to the payphone at location.
-
-[MOB_96]
-Get to the payphone at location.
-
-[MOB_95]
-Get to the payphone at location.
-
-[A_TIME]
-+~1~ seconds
-
-[DODO_FT]
-You flew for ~1~ seconds!
-
-[GA_8]
-Use the detonator to activate the bomb.
-
-[GA_10]
-Nice one. Here's your $~1~
-
-[GA_11]
-We got these wheels already. It's worthless to us!
-
-[GA_12]
-Bomb armed
-
-[GA_13]
-Delivered like a pro. Complete the list and there'll be a bonus for you.
-
-[GA_14]
-All the cars. NICE! Here's a little something.
-
-[GA_15]
-Hope you like the new color.
-
-[GA_16]
-Respray is complementary.
-
-[GA_19]
-We're not interested in that model.
-
-[GA_20]
-We got more of these than we can shift. Sorry man, no deal.
-
-[CHASE]
-Highest media attention
-
-[CHASE1]
-Ignored
-
-[CHASE2]
-Boring
-
-[CHASE3]
-Vaguely interesting
-
-[CHASE4]
-Local paper Page 7
-
-[CHASE5]
-Front page of local paper
-
-[CHASE6]
-Vice Courier Page 2
-
-[CHASE7]
-Vice Courier Front page
-
-[CHASE8]
-Local TV 3am
-
-[CHASE9]
-Local TV news
-
-[CHASE10]
-Local TV Live coverage
-
-[CHASE11]
-UFA Today page 12
-
-[CHASE12]
-UFA Today page 4
-
-[CHASE13]
-Picture in UFA Today
-
-[CHASE14]
-National TV 4am
-
-[CHASE15]
-National TV news
-
-[CHASE16]
-National TV live coverage
-
-[CHASE17]
-International news
-
-[CHASE18]
-National crisis
-
-[CHASE19]
-International crisis
-
-[CHASE20]
-World event
-
-[CHASE21]
-Stuff of legends
-
-[CR_1]
-Crane cannot lift this vehicle.
-
-[PU_MONY]
-You don't have enough cash.
-
-[CO_ALL]
-You got all of them. Here's a little something...
-
-[FEM_ON]
-ON
-
-[FEM_OFF]
-OFF
-
-[FEM_YES]
-Yes
-
-[FEM_NO]
-No
-
-[FEC_NA]
-NA
-
-[FEC_CWL]
-Cycle Weapon left
-
-[FEC_CWR]
-Cycle Weapon right
-
-[FEC_LOF]
-Look forward
-
-[FEC_TAR]
-Target
-
-[FEC_MOV]
-Movement
-
-[FEC_CAM]
-Camera modes
-
-[FEC_PAU]
-Pause
-
-[FEC_ENV]
-Enter vehicle
-
-[FEC_JUM]
-Jump
-
-[FEC_ATT]
-Attack or Fire weapon
-
-[FEC_RUN]
-Run
-
-[FEC_FPC]
-First person camera
-
-[FEC_LL]
-Look left
-
-[FEC_LB]
-Look behind
-
-[FEC_LR]
-Look right
-
-[FEC_HOR]
-Horn
-
-[FEC_VES]
-Vehicle control
-
-[FEC_BRA]
-Brake or Reverse
-
-[FEC_HAB]
-Hand brake
-
-[FEC_CAW]
-Car weapon
-
-[FEC_ACC]
-Accelerate
-
-[FEC_CCF]
-Configuration
-
-[FEC_CF1]
-Setup 1
-
-[FEC_CF2]
-Setup 2
-
-[FEC_CF3]
-Setup 3
-
-[FEC_CF4]
-Setup 4
-
-[FEC_CDP]
-Controller Display
-
-[FEC_ONF]
-On foot
-
-[FEC_INC]
-In car
-
-[FEC_VIB]
-Vibration
-
-[FEL_ENG]
-English
-
-[FEL_FRE]
-French
-
-[FEL_GER]
-German
-
-[FEL_ITA]
-Italian
-
-[FEL_SPA]
-Spanish
-
-[FED_DBG]
-Menu Debug
-
-[FED_RID]
-Reload IDE
-
-[FED_RIP]
-Reload IPL
-
-[FED_PAH]
-Parse Heap
-
-[FED_DFL]
-CTheScripts::DbgFlag
-
-[FED_DLS]
-Big White Debug Light Switched
-
-[FED_SPR]
-Show Ped Road Groups
-
-[FED_SCR]
-Show Car Road Grups
-
-[FED_SCZ]
-Show Cull Zones
-
-[FED_DSR]
-Debug Streaming Requests
-
-[FED_SCP]
-gbShowCollisionPolys
-
-[PL_STAT]
-Player stats
-
-[PE_WAST]
-People you've wasted
-
-[PE_WSOT]
-People wasted by others
-
-[TM_BUST]
-Times busted
-
-[GNG_WST]
-Gang members wasted
-
-[DED_CRI]
-Criminals wasted
-
-[PER_COM]
-Percentage completed
-
-[KGS_EXP]
-Kgs of explosives used
-
-[ACCURA]
-Accuracy
-
-[ST_WEAP]
-Weapon Budget
-
-[ST_PROP]
-Property Budget
-
-[ST_AUTO]
-Auto Repair and Painting Budget
-
-[ST_PHOT]
-Photographs Taken
-
-[ST_LOAN]
-Visits From Loan Sharks
-
-[ST_STOR]
-Stores Knocked Off
-
-[ST_MOVI]
-Movie Stunts
-
-[ST_PIZZ]
-Pizza's Delivered
-
-[ST_GARB]
-Garbage Pickups Made
-
-[TOP_SHO]
-Top Shooting Range Score
-
-[SHO_RAN]
-Shooting Range Rank
-
-[SEAGULL]
-Seagulls Sniped
-
-[PROPOWN]
-Property Owned
-
-[ST_TIME]
-Playing Time
-
-[ST_FTIM]
-Flight hours
-
-[ST_PRAN]
-Pilot Ranking
-
-[ST_RAN0]
-Learner
-
-[ST_RAN1]
-Navigator
-
-[ST_RAN2]
-Co Pilot
-
-[ST_RAN3]
-Junior
-
-[ST_RAN4]
-Competent
-
-[ST_RAN5]
-Senior
-
-[ST_RAN6]
-Ace
-
-[ST_RAN7]
-Red baron
-
-[ST_DRWN]
-Fishes Fed
-
-[ST_FASH]
-Fashion Budget
-
-[ST_DAMA]
-Property Destroyed
-
-[TM_DED]
-Hospital visits
-
-[DAYSPS]
-Days passed in game
-
-[NUMSHV]
-Safehouse visits
-
-[MXCARD]
-Max. INSANE Jump dist. (ft)
-
-[MXCARJ]
-Max. INSANE Jump height (ft)
-
-[MXCARDM]
-Max. INSANE Jump dist. (m)
-
-[MXCARJM]
-Max. INSANE Jump height (m)
-
-[MXFLIP]
-Max. INSANE Jump flips
-
-[MXJUMP]
-Max. INSANE Jump rotation
-
-[BUL_FIR]
-Bullets fired
-
-[BUL_HIT]
-Bullets that hit
-
-[SPRAYIN]
-Sprayings
-
-[BSTSTU]
-Best INSANE stunt so far
-
-[INSTUN]
-Insane stunt
-
-[PRINST]
-Perfect insane stunt
-
-[DBINST]
-Double insane stunt
-
-[DBPINS]
-Perfect double insane stunt
-
-[TRINST]
-Triple insane stunt
-
-[PRTRST]
-Perfect triple insane stunt
-
-[QUINST]
-Quadruple insane stunt
-
-[PQUINS]
-Perfect quadruple insane stunt
-
-[NOSTUC]
-No INSANE stunts completed
-
-[NOUNIF]
-Unique Jumps completed
-
-[NMISON]
-Mission attempts
-
-[PASDRO]
-Passengers dropped off
-
-[MONTAX]
-Cash made in taxi
-
-[DAYPLC]
-Daily police spending
-
-[CRIMRA]
-Criminal rating:
-
-[STPR_1]
-The Malibu
-
-[STPR_2]
-Print Works
-
-[STPR_3]
-Film Studio
-
-[STPR_4]
-Ice Cream Factory
-
-[STPR_5]
-Car Showroom
-
-[STPR_6]
-Taxi Company
-
-[STPR_7]
-Boatyard
-
-[SET1EN]
-SetUp 1. Enabled
-
-[GMSAVE]
-Save Game
-
-[FEDS_TB]
-Back
-
-[FEST_OO]
-out of
-
-[FEC_TUC]
-Turret control
-
-[FEC_RS3]
-Radio station cycle (L3 button)
-
-[FEC_HO3]
-Horn (L3 button)
-
-[C_FAIL]
-Vigilante mission ended!
-
-[C_ESCP]
-~r~The suspect has escaped!
-
-[C_VIGIL]
-VIGILANTE BONUS!!
-
-[HEAL_A]
-Your ~h~health~w~ is displayed in orange in the top right of the screen.
-
-[WRONGCD]
-Incorrect disc. Please insert correct disc.
-
-[NOCD]
-The disc tray is empty. Please insert disc.
-
-[OPENCD]
-The disc tray is open. Please close the disc tray.
-
-[CDERROR]
-Error reading the Grand Theft Auto: Vice City DVD
-
-[RESTART]
-Starting new game
-
-[GA_3]
-No more freebies. $100 to respray!
-
-[GA_1]
-Whoa! I don't touch nothing THAT hot!
-
-[GA_1A]
-Come back when you're not so busy...
-
-[HELP9_C]
-Press the~h~ ~k~~PED_FIREWEAPON~ ~w~button to ~h~fire~w~ the sniper rifle.
-
-[TAXI2]
-~r~You're out of time!
-
-[PAGEB13]
-Health delivered to hideout
-
-[PAGEB14]
-Adrenaline delivered to hideout
-
-[FESZ_CA]
-Cancel
-
-[FES_NGA]
-New Game
-
-[FES_CAN]
-Cancel
-
-[FESZ_QL]
-All unsaved progress in your current game will be lost. Proceed with loading?
-
-[FESZ_QD]
-Proceed with deleting this save game?
-
-[FESZ_QO]
-Proceed with overwriting this save game?
-
-[T4X4_1]
-'PCJ Playground'
-
-[BMX_1]
-'Trial by Dirt'
-
-[BMX_2]
-'Test Track'
-
-[BMXFAIL]
-~r~You failed to set a new record!
-
-[BMX_REC]
-~g~New Record Set:~1~ !!
-
-[T4X4_3]
-'GRIPPED!'
-
-[MM_1]
-'CONE CRAZY'
-
-[T4X4_F]
-~r~You bailed! Too tough for you?!
-
-[LANDSTK]
-Landstalker
-
-[IDAHO]
-Idaho
-
-[STINGER]
-Stinger
-
-[LINERUN]
-Linerunner
-
-[PEREN]
-Perennial
-
-[SENTINL]
-Sentinel
-
-[RIO]
-Rio
-
-[PATRIOT]
-Patriot
-
-[FIRETRK]
-Firetruck
-
-[TRASHM]
-Trashmaster
-
-[STRETCH]
-Stretch
-
-[MANANA]
-Manana
-
-[INFERNS]
-Infernus
-
-[VOODOO]
-Voodoo
-
-[PONY]
-Pony
-
-[MULE]
-Mule
-
-[CHEETAH]
-Cheetah
-
-[AMBULAN]
-Ambulance
-
-[FBICAR]
-FBI Washington
-
-[MOONBM]
-Moonbeam
-
-[ESPERAN]
-Esperanto
-
-[TAXI]
-Taxi
-
-[WASHING]
-Washington
-
-[BOBCAT]
-Bobcat
-
-[WHOOPEE]
-Mr. Whoopee
-
-[BFINJC]
-BF Injection
-
-[HUNTER]
-Hunter
-
-[POLICAR]
-Police
-
-[ENFORCR]
-Enforcer
-
-[SECURI]
-Securicar
-
-[BANSHEE]
-Banshee
-
-[PREDATR]
-Predator
-
-[BUS]
-Bus
-
-[RHINO]
-Rhino
-
-[BARRCKS]
-Barracks OL
-
-[CUBAN]
-Cuban Hermes
-
-[HELI]
-Helicopter
-
-[DODO]
-Dodo
-
-[COACH]
-Coach
-
-[CABBIE]
-Cabbie
-
-[STALION]
-Stallion
-
-[RUMPO]
-Rumpo
-
-[RCBANDT]
-RC Bandit
-
-[ROMERO]
-Romero's Hearse
-
-[PACKER]
-Packer
-
-[ADMIRAL]
-Admiral
-
-[SQUALO]
-Squalo
-
-[SEASPAR]
-Sea Sparrow
-
-[PIZZABO]
-Pizza Boy
-
-[GANGBUR]
-Gang Burrito
-
-[TROPIC]
-Tropic
-
-[SPEEDER]
-Speeder
-
-[REEFER]
-Reefer
-
-[FLATBED]
-Flatbed
-
-[YANKEE]
-Yankee
-
-[CADDY]
-Caddy
-
-[ZEBRA]
-Zebra Cab
-
-[TOPFUN]
-Top Fun
-
-[SKIMMER]
-Skimmer
-
-[PCJ600]
-PCJ 600
-
-[PHOENIX]
-Phoenix
-
-[FAGGIO]
-Faggio
-
-[FREEWAY]
-Freeway
-
-[RCBARON]
-RC Baron
-
-[RCRAIDE]
-RC Raider
-
-[GLENDAL]
-Glendale
-
-[OCEANIC]
-Oceanic
-
-[SANCHEZ]
-Sanchez
-
-[SPARROW]
-Sparrow
-
-[LOVEFIS]
-Love Fist
-
-[COASTG]
-Coast Guard
-
-[DINGHY]
-Dinghy
-
-[HERMES]
-Hermes
-
-[SABRE]
-Sabre
-
-[SABRETU]
-Sabre Turbo
-
-[WALTON]
-Walton
-
-[REGINA]
-Regina
-
-[COMET]
-Comet
-
-[DELUXO]
-Deluxo
-
-[BURRITO]
-Burrito
-
-[SPAND]
-Spand Express
-
-[MARQUIS]
-Marquis
-
-[BAGGAGE]
-Baggage Handler
-
-[KAUFMAN]
-Kaufman Cab
-
-[COASTMA]
-Coastguard Maverick
-
-[MAVERIC]
-Maverick
-
-[RANCHER]
-Rancher
-
-[FBIRANC]
-FBI Rancher
-
-[VIRGO]
-Virgo
-
-[GREENWO]
-Greenwood
-
-[HOTRING]
-Hotring Racer
-
-[BLISTAC]
-Blista Compact
-
-[FEST_DF]
-Dist. traveled on foot (miles)
-
-[FEST_DC]
-Dist. traveled by car (miles)
-
-[FESTDFM]
-Distance traveled on foot (m)
-
-[FESTDCM]
-Distance traveled by car (m)
-
-[TOT_DIS]
-Total distance traveled (miles)
-
-[TOTDISM]
-Total distance traveled (m)
-
-[DISTHEL]
-Dist. traveled by helicopter (miles)
-
-[DISTHEM]
-Distance traveled by helicopter (m)
-
-[DISTBOA]
-Dist. traveled by boat (miles)
-
-[DISTBOM]
-Distance traveled by boat (m)
-
-[FEST_LS]
-People saved in an Ambulance
-
-[FEST_CC]
-Criminals killed on Vigilante Mission
-
-[FEST_FE]
-Total fires extinguished
-
-[FEST_RP]
-Rampages passed
-
-[FEST_MP]
-Missions passed
-
-[FEST_BB]
-Bling-bling Scramble:
-
-[FEST_H0]
-Most checkpoints
-
-[FEST_GC]
-Gang Cars Totaled:
-
-[FEST_H1]
-Diablo destruction
-
-[FEST_H2]
-Mafia Massacre
-
-[FEST_H3]
-Casino Calamity
-
-[FEST_H4]
-Rumpo Wrecker
-
-[USJ]
-UNIQUE STUNT BONUS!
-
-[RATNG1]
-Upstanding Citizen
-
-[RATNG2]
-Nobody Special
-
-[RATNG3]
-Litterer
-
-[RATNG4]
-Shoplifter
-
-[RATNG5]
-Vandal
-
-[RATNG6]
-Do boy
-
-[RATNG7]
-Pickpocket
-
-[RATNG8]
-Clepto
-
-[RATNG9]
-Snitch
-
-[RATNG10]
-Rat
-
-[RATNG11]
-Leece
-
-[RATNG12]
-Scam Artist
-
-[RATNG13]
-Trickster
-
-[RATNG14]
-Numbers Runner
-
-[RATNG15]
-Hustler
-
-[RATNG16]
-Bully
-
-[RATNG17]
-Riff-Raff
-
-[RATNG18]
-Scalawag
-
-[RATNG19]
-Ruffian
-
-[RATNG20]
-Outlaw
-
-[RATNG21]
-Thug
-
-[RATNG22]
-Drop Man
-
-[RATNG23]
-SA Goon
-
-[RATNG24]
-Goon
-
-[RATNG25]
-Jailbird
-
-[RATNG26]
-Ex-Con
-
-[RATNG27]
-Felon
-
-[RATNG28]
-Bag Man
-
-[RATNG29]
-Wiseguy
-
-[RATNG30]
-Wheelman
-
-[RATNG31]
-Hired Muscle
-
-[RATNG32]
-Hatchetman
-
-[RATNG33]
-Headhunter
-
-[RATNG34]
-Enforcer
-
-[RATNG35]
-Ronin
-
-[RATNG36]
-Fixer
-
-[RATNG37]
-Hitman
-
-[RATNG38]
-Associate
-
-[RATNG39]
-Butcher
-
-[RATNG40]
-Cleaner
-
-[RATNG41]
-Assassin
-
-[RATNG42]
-Consigliere
-
-[RATNG43]
-Made Man
-
-[RATNG44]
-Right-Hand Man
-
-[RATNG45]
-Executioner
-
-[RATNG46]
-Lieutenant
-
-[RATNG47]
-Underboss
-
-[RATNG48]
-Capo
-
-[RATNG49]
-Boss
-
-[RATNG50]
-Kingpin
-
-[RATNG51]
-Don
-
-[RATNG52]
-Godfather
-
-[PAGE_00]
-.
-
-[WELCOME]
-WELCOME TO
-
-[TSCORE]
-EARNINGS: $~1~
-
-[PBOAT_2] { reVC update }
-Press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the boat cannons.
-
-[HJSTAT]
-Distance: ~1~.~1~m Height: ~1~.~1~m Flips: ~1~ Rotation: ~1~_
-
-[HJSTATW]
-Distance: ~1~.~1~m Height: ~1~.~1~m Flips: ~1~ Rotation: ~1~_ And what a great landing!
-
-[ATUTOR]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ ~w~button to toggle Paramedic missions on or off.
-
-[FEST_HA]
-Highest Paramedic Mission level
-
-[C_KILLS]
-CRIMINALS KILLED: ~1~
-
-[HJSTATF]
-Distance: ~1~ft Height: ~1~ft Flips: ~1~ Rotation: ~1~_
-
-[HJSTAWF]
-Distance: ~1~ft Height: ~1~ft Flips: ~1~ Rotation: ~1~_ And what a great landing!
-
-[CINCAM]
-Cinematic Camera
-
-[RC4]
-'RUMPO RAMPAGE'
-
-[LEGAL]
-~g~Eliminate the criminal threat!
-
-[GA_2]
-New engine and paint job. The cops won't recognize you!
-
-[HELP15]
-When on foot press the ~h~~k~~PED_LOOKBEHIND~ ~w~button to ~h~look behind~w~.
-
-[FEC_LB4]
-Look behind (R3 button)
-
-[PERPIC]
-Hidden Packages found
-
-[CO_ONE]
-Hidden Package ~1~ of ~1~
-
-[GA_21]
-You cannot store any more cars in this garage.
-
-[CHEAT1]
-Cheat activated
-
-[CHEAT2]
-Weapon cheat
-
-[CHEAT3]
-Health cheat
-
-[CHEAT4]
-Armor cheat
-
-[CHEAT5]
-Wanted level cheat
-
-[CHEAT6]
-Money cheat
-
-[CHEAT7]
-Weather cheat
-
-[USJ_ALL]
-ALL UNIQUE STUNTS COMPLETED!
-
-[JAN]
-Jan
-
-[FEB]
-Feb
-
-[MAR]
-Mar
-
-[APR]
-Apr
-
-[MAY]
-May
-
-[JUN]
-Jun
-
-[JUL]
-Jul
-
-[AUG]
-Aug
-
-[SEP]
-Sept
-
-[OCT]
-Oct
-
-[NOV]
-Nov
-
-[DEC]
-Dec
-
-[DEFDT]
---:---:---- --:--:--
-
-[BONUS]
-~g~BONUS $~1~
-
-[HORN1]
-Press the ~h~~k~~VEHICLE_HORN~ ~w~button to activate the ~h~horn.
-
-[HORN2]
-Press the ~h~~k~~VEHICLE_HORN~ ~w~button to activate the ~h~horn
-
-[HORN3]
-Press the ~h~~k~~VEHICLE_HORN~ ~w~button to activate the ~h~horn
-
-[FEC_EXV]
-Enter and exit vehicle
-
-[TAXI_M]
-'TAXI DRIVER'
-
-[COP_M]
-'VIGILANTE'
-
-[FIRE_M]
-'FIREFIGHTER'
-
-[AMBUL_M]
-'PARAMEDIC'
-
-[HJ_IS]
-INSANE STUNT BONUS: $~1~
-
-[HJ_PIS]
-PERFECT INSANE STUNT BONUS: $~1~
-
-[HJ_DIS]
-DOUBLE INSANE STUNT BONUS: $~1~
-
-[HJ_PDIS]
-PERFECT DOUBLE INSANE STUNT BONUS: $~1~
-
-[HJ_TIS]
-TRIPLE INSANE STUNT BONUS: $~1~
-
-[HJ_PTIS]
-PERFECT TRIPLE INSANE STUNT BONUS: $~1~
-
-[HJ_QIS]
-QUADRUPLE INSANE STUNT BONUS: $~1~
-
-[HJ_PQIS]
-PERFECT QUADRUPLE INSANE STUNT BONUS: $~1~
-
-[FESZ_LS]
-Load Successful.
-
-[HELI_1A]
-Test your skills with the Sparrow, see how quickly you can complete the course.
-
-[HELI_1B]
-Course Complete! $ ~1~
-
-[HELIODD]
-Helicopter odd jobs
-
-[LAW]
-THE LAWYER MISSIONS
-
-[LAW1_1]
-~g~Go get some new threads from Rafael's clothes shop.
-
-[LAW4_6]
-Burn the management!
-
-[LAW4_7]
-Kill the bosses!
-
-[LAW4_8]
-Fight, Fight, Fight, Fight.
-
-[LAW4_9]
-More Holiday, Less Work!
-
-[LAW4_11]
-Fight! Fight! Fight! Fight!
-
-[LAW4_12]
-Viva la revolution!
-
-[GENERAL]
-THE COLONEL MISSIONS
-
-[GEN3_4]
-Tommy Vercetti. Let's go...
-
-[GEN3_13]
-What's the matter with you man?! Get on the roof across the yard before they turn up!
-
-[GEN3_17]
-Sheeit! You trying to kill me?!
-
-[GEN3_21]
-~g~He got Diaz's money! Chase him down and get it back!
-
-[GEN3_24]
-~r~Diaz died! You failed to protect him!
-
-[GEN3_26]
-~r~You shot Diaz!
-
-[GEN3_27]
-~r~You shot Diaz's bodyguards!
-
-[GEN3_31]
-~g~Now go to the drop off and watch over Diaz.
-
-[GEN3_32]
-~g~Get to your vantage point on the roof of the building opposite Lance.
-
-[COKE]
-THE COKE BARON MISSIONS
-
-[COK1_3]
-Hope you fall and break your neck!
-
-[COK1_6]
-I'm sick of these pricks.
-
-[COK2_7]
-See those marker boys? Try taking out the lights!
-
-[COK2_10]
-You sure is better at shooting than talking.
-
-[COK2_11]
-Thanks. You're a real charmer yourself.
-
-[COK2_12]
-I Know, Tommy.
-
-[COK2_18]
-You cool with Kenny Loggins
-
-[COK2_19]
-Hell, I love this record
-
-[COK2_26]
-~r~You killed Lance!
-
-[COK3_1]
-Don't shoot, dude!
-
-[COK3_2]
-What's in this stuff?
-
-[COK3_3]
-He's taking the boat. Bummer.
-
-[COK3_4]
-Help! Some square's stealing the boat, man!
-
-[COK4_W]
-Uugghh! That's the last of them.
-
-[COK4_X]
-I'm going to start her up.
-
-[COK4_Y]
-I think we've got some new friends.
-
-[COK4_2]
-Yeah.
-
-[COK4_6]
-Do you know where we're going?
-
-[COK4_7]
-Are we lost?
-
-[COK4_8]
-We got some competition!
-
-[COK4_9]
-Take 'em out!
-
-[COK4_9A]
-It's time for the Lance Vance Dance!
-
-[COK4_10]
-They're matchwood! And fish food.
-
-[COK4_11]
-We made it! Those other boats ain't VIP class.
-
-[COK4_17]
-They're getting desperate!
-
-[COK4_18]
-My damn feet are wet! WE'RE TAKING ON WATER!
-
-[COK4_21]
-Bridge coming up!
-
-[COK4_22]
-Bail out, she's about to blow!
-
-[COK4_23]
-Good shooting.
-
-[COK4_29]
-~r~You killed Lance!
-
-[ASS1_6]
-Go on Tommy, I'll be ok!
-
-[ASS1_7]
-Eat this, you murdering bastards!!
-
-[ASS1_8]
-I'm pinned down!
-
-[ASS1_9]
-I got you covered Tommy!
-
-[ASS1_10]
-Hey, this is a real nice herbaceous border
-
-[ASS1_11]
-Hey Tommy, can my room have a view of the bay?
-
-[ASS1_12]
-Beautiful high ceilings in here...
-
-[ASS1_3]
-Lance! I need cover!
-
-[ASS1_4]
-Diaz must be inside!
-
-[ASS1_5]
-Lance!
-
-[TAXWAR]
-TAXI WAR MISSIONS
-
-[NOTAXI]
-~g~You need a Kaufman Cab to activate this mission.
-
-[TAXW1_5]
-~g~You need to be in a Kaufman cab!
-
-[TAX2_4]
-Go on, Tommy.
-
-[TAX2_5]
-Beat the hell out of him.
-
-[TAX2_6]
-He hasn't even got a license.
-
-[TAX2_7]
-Damn limo services.
-
-[TAXW3_1]
-~g~Go and pick up Mercedes.
-
-[RACE1]
-~g~3..2..1.. GO GO GO!
-
-[RACE2]
-~g~3
-
-[RACE3]
-~g~2
-
-[RACE4]
-~g~1
-
-[RACE5]
-~g~GO!
-
-[FIRST]
-~b~1st
-
-[SECOND]
-~b~2nd
-
-[THIRD]
-~b~3rd
-
-[FOURTH]
-~b~4th
-
-[RACETM]
-~b~RACE TIME: ~1~:~1~
-
-[RACETM2]
-~b~RACE TIME: ~1~:0~1~
-
-[RACEFA]
-~r~You failed to win the race!
-
-[TEX1_5]
-~r~He got away!
-
-[SEG3_2]
-~g~Get to the van that contains the RC Raider and remote timed bombs.
-
-[SEG3_3]
-~g~You must use the RC RAIDER to transport 4 bombs to 4 target zones on the building site.
-
-[SERG3_5]
-~g~You can only carry one bomb at a time and cannot pick up successfully planted bombs.
-
-[SEG3_7]
-~g~Once you have dropped the FIRST bomb successfully in a target zone the detonation timer will start; you must then drop all the bombs within this time period.
-
-[SEG3_8]
-~g~All 4 bombs must be located at the 4 target zones to pass the mission and demolish the building.
-
-[SEG3_9]
-~g~You hit the target! 3 more to go.
-
-[SEG3_10]
-~g~You hit the target! 2 more to go.
-
-[SEG3_11]
-~g~You hit the target! Just 1 more to go!
-
-[SEG3_12]
-~r~You missed the target! Go get a bomb!
-
-[SEG3_13]
-~g~Drop the bomb at a target zone.
-
-[SEG3_14]
-~r~You ran out of time and failed to demolish the building.
-
-[SEG3_15]
-~r~Your RC Raider has been destroyed! How you gonna transport the bombs now?
-
-[AVERY]
-AVERY MISSIONS
-
-[ASM]
-ASSASSIN MISSIONS
-
-[ASM_1]
-ASSASSIN MISSION 1
-
-[ASM1_1]
-~g~Mr. Teal, your help in eradicating those out-of-towners was invaluable to business. I have more work for you with a more 'hands-on' approach. Your next job is taped under the phone.
-
-[ASM1_2]
-~g~Get to the payphone outside the Mall in Washington.
-
-[ASM1_3]
-~g~Carl Pearson, Pizza Delivery Man. He must not complete his deliveries.
-
-[ASM1_4]
-~g~Kill the Pizza Delivery Man before he completes his deliveries.
-
-[ASM_2]
-ASSASSIN MISSION 2
-
-[ASM_3]
-ASSASSIN MISSION 3
-
-[ASM3_A]
-TEXT NO LONGER NEEDED
-
-[ASM3_B]
-TEXT NO LONGER NEEDED
-
-[ASM3_1]
-~g~Go and get the weapon Mr. Black has left for you.
-
-[ASM3_2]
-~g~Don't get too close to the target or he may spot you!
-
-[ASM3_3]
-~g~For a quick safe kill find a secluded spot nearby with a clear view of your target.
-
-[ASM3_4]
-~g~He's seen you! Better waste him any way you can!
-
-[ASM3_5]
-~g~Marcus Hammond is working on an advertising board in Washington.
-
-[ASM3_6]
-~g~Franco Carter is working for DBP Security off Ocean Drive.
-
-[ASM3_7]
-~g~Dick Tanner is situated near the Jewelry shop in Vice Point.
-
-[ASM3_8]
-~g~Nick Kong is situated near Washington Beach.
-
-[ASM3_9]
-~g~Stuntman Driver is situated in Washington.
-
-[ASM3_10]
-~r~You failed to kill them all.
-
-[ASM_4]
-ASSASSIN MISSION 4
-
-[ASM4_1]
-~g~Go get the rifle left for you in the foliage outside the airport terminal.
-
-[ASM4_2]
-~g~Don't miss your target or you may alert his bodyguards, and remember keep your distance so he does not spot you.
-
-[ASM4_3]
-~g~Watch the woman on the balcony above the check-in desks inside the airport terminal. DO NOT KILL HER.
-
-[ASM4_4]
-~g~Kill the man she hands the briefcase to but only AFTER HE PICKS IT UP. Then retrieve the briefcase and take it to Ammu-Nation in Downtown.
-
-[ASM4_5]
-~g~Get the briefcase!
-
-[ASM4_6]
-~g~Take the briefcase to Ammu-Nation in Downtown.
-
-[ASM4_7]
-~r~You killed the woman, you fool!
-
-[ASM4_8]
-~r~The target heard you firing your weapon! The deal is off!
-
-[ASM4_9]
-~r~The target has boarded his flight!
-
-[ASM4_11]
-~r~The target has seen you! The deal is off!
-
-[ASM4_13]
-~g~He's spotted you and is making a run for it, nail him and get the briefcase!
-
-[ASM4_14]
-~g~The distance bar in the upper right of the screen gives you an indication to how close you are to your target do not let it fill or he will see you.
-
-[ASM_5]
-ASSASSIN MISSION 5
-
-[KICK]
-KICKSTART
-
-[KICK1_3]
-~g~Number of times foot put down: ~1~
-
-[KICK1_4]
-~g~Time penalty: ~1~ seconds
-
-[BANK]
-BANKJOB MISSIONS
-
-[BANK1]
-BANKJOB MISSION 1
-
-[BANK2]
-BANKJOB MISSION 2
-
-[BJM2_21]
-~g~Hit as many targets as you can while your ammo lasts.
-
-[BANK3]
-BANKJOB MISSION 3
-
-[BJM3_1]
-~g~Get a fast car and get to the starting grid.
-
-[BNK4_2A]
-Boys at the car lot did a great job on this baby.
-
-[BNK4_3G]
-Oh crap, now the cops are onto us!
-
-[BNK4_3H]
-- and we're not even there yet.
-
-[BNK4_3K]
-We'll have to lose the cops first...
-
-[BNK4_3L]
-Christ Tommy, you trying to kill us all!?
-
-[BNK4_3N]
-Everything I care about gets trashed!
-
-[BNK4_26]
-Hot damn! Here they come!
-
-[BNK4_32]
-Use explosives to open the deposit boxes!
-
-[BNK4_36]
-Where's Cam?
-
-[BNK4_37]
-History...
-
-[BNK4_38]
-That's the last of them. GO! GO! GO!
-
-[BNK_39]
-Shit! Where's Hilary?
-
-[BK4_40A]
-I'll give him abandonment issues!
-
-[BNK4_42]
-Hey guys! Get in! I got you covered!
-
-[BNK4_43]
-I've got our asses covered, DRIVE!
-
-[BNK4_44]
-We made it! We're rich! RICH!
-
-[BNK4_45]
-Shame Cam didn't make it, he was a good guy!
-
-[BNK4_46]
-Yeah. Still... more for us!
-
-[BNK4_47]
-Damned straight! YEEEEHAAAH!
-
-[BNK4_48]
-Tommy, would you like a massage?
-
-[BNK4_49]
-Well, Hi there, Mercedes! Yeah, I'm a little tense...
-
-[BNK450A]
-What'd I tell you Tommy? What'd I tell you? Bent SWAT better watch out when Kent Paul is in town.
-
-[BNK450B]
-Come on, gimme a bigger slice, mate, c'mon. I gotta get some new threads.
-
-[BNK4_51]
-You look fine to me.
-
-[KENT]
-KENT PAULS MISSIONS
-
-[KENT1]
-KENT PAUL MISSION1
-
-[COUNT]
-COUNTERFEITING MISSIONS
-
-[COUNT1]
-COUNTERFEITING MISSION 1
-
-[COUNT2]
-COUNTERFEITING MISSION 2
-
-[BIKE]
-THE BIKER GANG MISSIONS
-
-[BIKE1]
-BIKER MISSION 1
-
-[BIKE2]
-BIKER MISSION 2
-
-[BIKE3]
-BIKER MISSION 3
-
-[GOAWAY1]
-~g~Come back when you have finished the Haitian gang missions.
-
-[HAIT]
-THE HAITIAN GANG MISSIONS
-
-[HAIT1]
-HAITIAN MISSION 1
-
-[HAIT2]
-HAITIAN MISSION 2
-
-[HAIT3]
-HAITIAN MISSION 3
-
-[HAM3_6]
-~g~Use the sniper rifle I have left to accomplish your task.
-
-[ROCK]
-THE ROCKBAND GANG MISSIONS
-
-[ROK1_4]
-~g~Ok, I think this is what you were after...
-
-[ROK1_1E]
-~g~It'll cost more than you've got!
-
-[ROK1_1F]
-~g~Come back when you got the money.
-
-[RBM2_6]
-~g~Wow! She's a bloke, stop him!
-
-[ROCK3]
-ROCKBAND MISSION 3
-
-[RBM3_5]
-~g~Take Love Fist to the venue.
-
-[CUBANM]
-THE CUBAN GANG MISSIONS
-
-[CUBAN1]
-CUBAN MISSION 1
-
-[CUBAN2]
-CUBAN MISSION 2
-
-[CUB2_10]
-~r~You are supposed to be killing Haitians, not Cubans.
-
-[CUBAN3]
-CUBAN MISSION 3
-
-[CUBAN4]
-CUBAN MISSION 4
-
-[PROT]
-PROTECTION MISSIONS
-
-[PORN]
-PORN MISSIONS
-
-[PORN1]
-PORN MISSION 1
-
-[POR1_03]
-~r~Candy is dead!
-
-[PORN2]
-PORN MISSION 2
-
-[PORN3]
-PORN MISSION 3
-
-[PORN4]
-PORN MISSION 4
-
-[PHIL]
-PHIL MISSIONS
-
-[PHIL1]
-PHIL MISSION 1
-
-[PHIL2]
-PHIL MISSION 2
-
-[PIZ1_A]
-PIZZA BOY MISSION
-
-[CNTBUY1]
-Printworks purchased: $~1~
-
-[CARBUY]
-Car Showroom purchased: $~1~
-
-[PORNBUY]
-Film Studio purchased: $~1~
-
-[ICEBUY]
-Ice Cream Factory purchased: $~1~
-
-[TAXIBUY]
-Taxi Firm purchased: $~1~
-
-[BANKBUY]
-The Malibu purchased: $~1~
-
-[BOATBUY]
-Boatyard purchased: $~1~
-
-[PRNT_NO]
-You cannot buy the Print Works at this time, come back later.
-
-[CAR_NO]
-You cannot buy the Car Showroom at this time, come back later.
-
-[PORN_NO]
-You cannot buy the Film Studio at this time, come back later.
-
-[ICE_NO]
-You cannot buy the Ice Cream Factory at this time, come back later.
-
-[TAXI_NO]
-You cannot buy the Taxi Company at this time, come back later.
-
-[BANK_NO]
-You cannot buy The Malibu at this time, come back later.
-
-[BOAT_NO]
-You cannot buy the Boatyard at this time, come back later.
-
-[COL2_6]
-Freeze, imperialist American pig!
-
-[COL2_6B]
-Zat iz propertay of ze government Francais.
-
-[COL2_6C]
-'And eet over!
-
-[COL3_A]
-Thomas I appreciate you coming
-
-[COL3_B]
-Forgive me for getting straight to business,
-
-[COL3_C]
-Diaz has asked me to oversee a minor business transaction.
-
-[COL3_D]
-Let's hope it goes better than last time.
-
-[COL3_E]
-Which is why I thought of you, my friend.
-
-[COL3_F]
-I've dropped some protection at the multistory carpark.
-
-[COL3_G]
-Pick it up then go and watch over Diaz's men at the drop off.
-
-[COL4_2]
-Don't know Sir!
-
-[COL4_5]
-Sir, Yes Sir!
-
-[COL4_10]
-Lets go eat some doughnuts.
-
-[COL4_16]
-Sir! Moving vehicle Sir!
-
-[COL4_25]
-Vehicle self destruct initiated!
-
-[COL5_6]
-Mercedes, that girl will be the death of me.
-
-[COL5_8]
-Damn cockroach!
-
-[COL5_5]
-Die French peegs!
-
-[CNT2_1]
-Kill him.
-
-[CNT2_2]
-Get the Plates!
-
-[CNT2_3]
-Protect the courier!
-
-[FINKILL]
-Ok boys, kill him!
-
-[FIN_1A]
-Come here you double-crossing piece of shit!
-
-[FIN_1B]
-You're going down, you back stabbing prick!
-
-[FIN_1C]
-This is the last dance for lance vance!
-
-[FIN_2B]
-Oh you think so!
-
-[FIN_2C]
-I said I had enough of that at school!
-
-[FIN_3]
-No one to cover your ass now, eh Tommy?
-
-[FIN_4]
-You're history, Tommy, history
-
-[FIN_5]
-You picked the wrong side, Lance...
-
-[FIN_6]
-Sonny's up with the safe and MY money...
-
-[FIN_10]
-Sonny? SONNY! I'm coming for ya!
-
-[FIN_11A]
-You took fifteen years from me Sonny...
-
-[FIN_11B]
-And now I'm gonna make you pay!
-
-[FIN_12A]
-You still don't get it do you!
-
-[FIN_12B]
-I OWN you, Tommy.
-
-[FIN_12C]
-Those fifteen years were mine to spend!
-
-[FIN_13]
-Get him boys, he never understood a thing.
-
-[RACES_4]
-3
-
-[RACES_5]
-2
-
-[RACES_6]
-1
-
-[RACES_7]
-GO!
-
-[RACES_9]
-Time: ~1~:~1~
-
-[RACES]
-TIME:
-
-[RACES17]
-New best time: ~1~:~1~
-
-[RACES18]
-YOU HAVE WON: $~1~
-
-[RACES20]
-New best time: ~1~:0~1~
-
-[RACES21]
-Time: ~1~:0~1~
-
-[RCH1_1]
-NO LONGER NEEDED NO LONGER NEEDED NO LONGER NEEDED NO LONGER NEEDED NO LONGER NEEDED
-
-[RCH1_2]
-~g~The CHECKPOINTS are scattered throughout the airport.
-
-[RCH1_3]
-NO LONGER NEEDED NO LONGER NEEDED NO LONGER NEEDED NO LONGER NEEDED NO LONGER NEEDED
-
-[RCH1_5]
-Time:
-
-[RCRC1_2]
-~g~Get to the starting grid now!
-
-[RCRC1_4]
-~g~3
-
-[RCRC1_5]
-~g~2
-
-[RCRC1_6]
-~g~1
-
-[RCRC1_7]
-~g~GO!
-
-[RCRC1_8]
-~g~Race time: ~1~ seconds
-
-[RCPL1_1]
-~g~Compete in a CHECKPOINT RACE with 3 other RC Baron's
-
-[RCPL1_2]
-~g~You must go through the ~o~CENTRE CORONA ~g~to successfully pass a checkpoint.
-
-[RCPL1_3]
-~g~Get to the starting grid now!
-
-[ICC1_O]
-What is wrong with you??
-
-[FEA_2SP]
-2 Speakers
-
-[FEA_4SP]
-More than 2 speakers
-
-[FEA_EAR]
-Headphones
-
-[FEA_NAH]
-NO AUDIO HARDWARE
-
-[FET_APP]
-APPLY
-
-[FES_SKN]
-SKIN NAME
-
-[FES_DAT]
-DATE
-
-[FES_SET]
-Use Skin
-
-[FET_DEF]
-Restore Defaults
-
-[FESZ_QZ]
-Are you sure you want to save this game?
-
-[FES_SCG]
-Save the current game?
-
-[FES_LCG]
-Load the game and continue playing?
-
-[FEC_FIR]
-Fire
-
-[FEC_NWE]
-Next weapon
-
-[FEC_PWE]
-Previous weapon
-
-[FEC_FOR]
-Forward
-
-[FEC_BAC]
-Backwards
-
-[FEC_LEF]
-Left
-
-[FEC_RIG]
-Right
-
-[FEC_ZIN]
-Zoom in
-
-[FEC_ZOT]
-Zoom out
-
-[FEC_EEX]
-Enter+exit
-
-[FEC_RAD]
-Radio
-
-[FEC_SUB]
-Sub-mission
-
-[FEC_CMR]
-Change camera
-
-[FEC_JMP]
-Jump
-
-[FEC_SPN]
-Sprint
-
-[FEC_HND]
-Handbrake
-
-[FEC_LOL]
-Look left
-
-[FEC_LOR]
-Look right
-
-[FEC_NTR]
-Next target
-
-[FEC_PTT]
-Previous target
-
-[FEC_LBA]
-Look behind
-
-[FEC_CEN]
-Center camera
-
-[FET_CFT]
-ON FOOT
-
-[FET_CCR]
-IN CAR
-
-[FET_CAC]
-ACTION
-
-[FEC_IBT]
--
-
-[FEC_MXO]
-MXB1
-
-[FEC_MXT]
-MXB2
-
-[FEC_UNB]
-UNBOUND
-
-[FEC_TFL]
-Look left+Turret L
-
-[FEC_TFR]
-Look right+Turret R
-
-[FEC_MWF]
-MS WHEEL UP
-
-[FEC_MWB]
-MS WHEEL DN
-
-[FEC_ORR]
-or
-
-[FEC_NUS]
-NOT USED
-
-[FEC_LUD]
-Look Up
-
-[FEC_LDU]
-Look Down
-
-[FEC_CMP]
-COMBO: LOOK L+R
-
-[LAW_1A]
-law_1a
-
-[LAW_1B]
-law_1b
-
-[LAW_2A]
-law_2a
-
-[LAW_2B]
-law_2b
-
-[FEH_STA]
-STATS
-
-[FEH_LOA]
-LOAD
-
-[FEH_CON]
-CONTROLS
-
-[FEH_AUD]
-AUDIO
-
-[FEH_LAN]
-LANGUAGE
-
-[FEH_SGA]
-START NEW GAME
-
-[FEO_CON]
-Controller Setup
-
-[FEO_AUD]
-Audio Setup
-
-[FEO_DIS]
-Display Setup
-
-[FEO_LAN]
-Language Setup
-
-[FEO_PLA]
-Player Setup
-
-[FEA_OUT]
-Output
-
-[FEA_ST]
-Stereo
-
-[FEA_DTS]
-DTS
-
-[FEA_RSS]
-Radio station
-
-[FEA_NON]
-RADIO OFF
-
-[FEA_FM0]
-WILDSTYLE
-
-[FEA_FM1]
-FLASH FM
-
-[FEA_FM2]
-KCHAT
-
-[FEA_FM3]
-FEVER 105
-
-[FEA_FM4]
-VROCK
-
-[FEA_FM5]
-VCPR
-
-[FEA_FM7]
-EMOTION 98.3
-
-[FEA_FM8]
-WAVE 103
-
-[FED_BRI]
-Brightness
-
-[FED_TRA]
-Trails
-
-[FED_SUB]
-Subtitles
-
-[FED_WIS]
-Wide Screen
-
-[FED_POS]
-Screen Position
-
-[FEP_RES]
-Resume
-
-[FEP_STG]
-Start Game
-
-[FEP_STA]
-Stats
-
-[FEP_BRI]
-Briefs
-
-[FEP_OPT]
-Options
-
-[FEP_QUI]
-Quit Game
-
-[FES_LOA]
-Load game
-
-[FES_DEL]
-Delete game
-
-[FEC_CSU]
-Controller Setup
-
-[FEC_RED]
-Redefine Controls
-
-[FEC_MOU]
-Mouse Settings
-
-[DISTGOL]
-Dist. traveled by golf cart (miles)
-
-[DISTGOM]
-Distance traveled by golf cart (m)
-
-[ST_FAVR]
-Favorite radio station
-
-[ST_WSTR]
-least favorite radio station
-
-[ST_FAVV]
-Favorite vehicle
-
-[ST_STAR]
-Total number of wanted stars attained
-
-[ST_HEAD]
-Number of headshots
-
-[ST_GANG]
-Least favorite gang
-
-[ST_STGN]
-Total number of wanted stars evaded
-
-[TYREPOP]
-Tires popped with gunfire
-
-[TYRESLA]
-Tires slashed with a blade
-
-[ST_BRK]
-Number of bloodring kills
-
-[ST_LTBR]
-Longest time in bloodring (secs)
-
-[ST_GNG1]
-Cubans
-
-[ST_GNG2]
-Haitians
-
-[ST_GNG3]
-Streetwannabe's
-
-[ST_GNG4]
-Diaz's gang
-
-[ST_GNG5]
-Security guards
-
-[ST_GNG6]
-Biker gang
-
-[ST_GNG7]
-Vercetti gang
-
-[ST_GNG8]
-Golfers
-
-[FEA_FM6]
-ESPANTOSO
-
-[ST_ASSI]
-Assassination Contracts Completed
-
-[DISTBIK]
-Dist. traveled by bike (miles)
-
-[DISTBIM]
-Distance traveled by bike (m)
-
-[HOTEL]
-Ocean View
-
-[KICK1_9]
-CHECKPOINTS:
-
-[FIN_B6]
-You do not have enough money to start this mission.
-
-[TEX3_9]
-~g~Pickup a bomb by maneuvering the RC helicopter next to it.
-
-[HELP22]
-Go to the green house blip on the radar.
-
-[FES_FMS]
-Format Successful. Select OK to continue.
-
-[FES_SSC]
-Save Successful. Select OK to continue.
-
-[FES_DSC]
-Delete Successful. Select OK to continue.
-
-[FESZ_QC]
-Proceed with overwriting this corrupted save game?
-
-[FES_CHE]
-Warning! One or more cheats have been activated. This may affect your save game. It is recommended that you do not save this game.
-
-[FET_SG]
-SAVE GAME
-
-[FEH_BRI]
-BRIEF
-
-[FEH_DIS]
-DISPLAY
-
-[FEH_MAP]
-MAP
-
-[FEM_OK]
-OK
-
-[FEC_CRO]
-Crouch
-
-[FEC_CR3]
-Crouch (L3 button)
-
-[FEC_SMT]
-Sub-mission
-
-[FEC_SM3]
-Sub-mission (R3 button)
-
-[FEC_RSC]
-Radio stations
-
-[ST_PR01]
-Flyboy
-
-[ST_PR02]
-Aircraftman
-
-[ST_PR03]
-Pilot Officer
-
-[ST_PR04]
-Corporal
-
-[ST_PR05]
-Lieutenant
-
-[ST_PR06]
-Sergeant
-
-[ST_PR07]
-Captain
-
-[ST_PR08]
-Biggs
-
-[ST_PR09]
-Wedge
-
-[ST_PR10]
-Red Baron
-
-[ST_PR11]
-Goose
-
-[ST_PR12]
-Viper
-
-[ST_PR13]
-Jester
-
-[ST_PR14]
-Chappy
-
-[ST_PR15]
-Iceman
-
-[ST_PR16]
-Maverick
-
-[ST_PR17]
-Noops
-
-[ST_PR18]
-Air Chief Marshal
-
-[ST_PR19]
-Ace
-
-[FET_LG]
-LOAD GAME
-
-[CAR_EXP]
-Road Vehicles destroyed
-
-[BOA_EXP]
-Boats destroyed
-
-[HEL_DST]
-Planes & Helicopters destroyed
-
-[STFT_01]
-Fastest time on 'Alloy Wheels Of Steel'
-
-[STFT_02]
-Fastest time on 'The Driver'
-
-[STFT_03]
-Fastest time in Dirt Ring
-
-[STFT_04]
-Fastest time on RC Plane Race
-
-[STFT_05]
-Fastest time on RC Car Race
-
-[STFT_06]
-Fastest time on RC helicopter Pickup
-
-[STFT_07]
-Fastest time on 'Terminal Velocity'
-
-[STFT_08]
-Fastest time on 'Ocean Drive'
-
-[STFT_09]
-Fastest time on 'Border Run'
-
-[STFT_10]
-Fastest time on 'Capital Cruise'
-
-[STFT_11]
-Fastest time on 'Tour!'
-
-[STFT_12]
-Fastest time on 'V.C. Endurance'
-
-[STHC_01]
-Highest score for Shooter
-
-[STHC_02]
-Best Percentage of hits for Shooter
-
-[STHC_03]
-Number of drug deals made
-
-[HELP24]
-You can now take jobs from the Colonel.
-
-[HELP25]
-You can now take jobs from Avery Carrington.
-
-[HELP29]
-You can visit the clothes store when you're not on a mission.
-
-[HELP30]
-When you buy new clothes your wanted level will be set to zero.
-
-[ASM4_24]
-distance:
-
-[RBM1_6]
-~g~Take Mercedes and the 'Love Juice' to the band at the recording studio.
-
-[RBM1_3]
-NO LONGER NEEDED
-
-[HAM1_5]
-NO LONGER NEEDED
-
-[RBM1_11]
-NO LONGER NEEDED
-
-[HELP31]
-To do a drive-by, first look left or right using the ~h~~k~~VEHICLE_LOOKLEFT~~w~ or the ~h~~k~~VEHICLE_LOOKRIGHT~.
-
-[HELP34]
-You must have a sub machine gun to perform a drive-by.
-
-[STRIP_1]
-~r~Not enough cash, you cheap sleazebag.
-
-[EXIT_1]
-Press the ~h~~k~~PED_SPRINT~ ~w~button to exit.
-
-[ASM1_B]
-Your next job is taped under the phone.
-
-[ASM1_C]
-I have more work for you with a more 'hands-on' approach.
-
-[SCARF]
-Apartment 3c
-
-[LAW4_10]
-Rich management suck!
-
-[RCH1_6]
-~g~Use the RC Helicopter to collect checkpoints scattered throughout the airport.
-
-[RCH1_9]
-~b~TOTAL TIME: ~1~:~1~
-
-[RCH1_10]
-~b~TOTAL TIME: ~1~:0~1~
-
-[WHEEL01]
-TWO WHEELS DOUBLE BONUS: $ ~1~ Distance: ~1~.~1~m Time: ~1~ seconds
-
-[WHEEL02]
-TWO WHEELS DOUBLE BONUS: $ ~1~ Distance: ~1~ feet Time: ~1~ seconds
-
-[WHEEL03]
-TWO WHEELS BONUS: $ ~1~ Time: ~1~ seconds
-
-[WHEEL04]
-TWO WHEELS BONUS: $ ~1~ Distance: ~1~.~1~m
-
-[WHEEL05]
-TWO WHEELS BONUS: $ ~1~ Distance: ~1~ feet
-
-[WHEEL06]
-WHEELIE BONUS: $ ~1~ Distance: ~1~.~1~m Time: ~1~ seconds
-
-[WHEEL07]
-WHEELIE BONUS: $ ~1~ Distance: ~1~ feet Time: ~1~ seconds
-
-[WHEEL08]
-WHEELIE BONUS: $ ~1~ Time: ~1~ seconds
-
-[WHEEL09]
-WHEELIE BONUS: $ ~1~ Distance: ~1~.~1~m
-
-[WHEEL10]
-WHEELIE BONUS: $ ~1~ Distance: ~1~ feet
-
-[WHEEL11]
-STOPPIE BONUS: $ ~1~ Distance: ~1~.~1~m Time: ~1~ seconds
-
-[WHEEL12]
-STOPPIE BONUS: $ ~1~ Distance: ~1~ feet Time: ~1~ seconds
-
-[WHEEL13]
-STOPPIE BONUS: $ ~1~ Time: ~1~ seconds
-
-[WHEEL14]
-STOPPIE BONUS: $ ~1~ Distance: ~1~.~1~m
-
-[WHEEL15]
-STOPPIE BONUS: $ ~1~ Distance: ~1~ feet
-
-[ROK3_72]
-Love Fist!
-
-[POR1_19]
-Hey!
-
-[DESPERA]
-Desperado
-
-[MOB_99A]
-Get to the payphone next to the mall in Washington.
-
-[MOB_98A]
-Get to the pay phone in Vice Point.
-
-[MOB_96A]
-Get to the payphone at the airport terminal.
-
-[MOB_95A]
-Get to the payphone in Little Havana.
-
-[BNK1_1]
-Can I help you, sir?
-
-[BNK1_2]
-There's an imposter!
-
-[BNK1_3]
-He's gone insane!
-
-[BNK1_4]
-Who the hell are you?
-
-[BNK1_5]
-Where's your badge?
-
-[BNK1_6]
-There they are! Shoot to kill!
-
-[MOB_24A]
-Hola, is this Mr. Vercetti?
-
-[MOB_24B]
-Yeah.
-
-[MOB_24C]
-This is Cortez. You were at my party.
-
-[MOB_24D]
-Yeah. I remember.
-
-[MOB_24E]
-Mr. Vercetti, it was a most unfortunate incident that happened with your business deal.
-
-[MOB_24F]
-I know.
-
-[MOB_24G]
-I want you to know me and my people are doing their utmost to get to the bottom of it.
-
-[MOB_24H]
-If you'd like to talk to me more privately, you can find me at the boat, eh? Okay? Good day, senor.
-
-[BNK2_6]
-This guy's a lunatic!
-
-[ANGEL]
-Angel
-
-[CUBJET]
-Cuban Jetmax
-
-[SANDKIN]
-Sandking
-
-[POLMAV]
-Police Maverick
-
-[BOXVILL]
-Boxville
-
-[BENSON]
-Benson
-
-[HOTRINA]
-Hotring Racer
-
-[HOTRINB]
-Hotring Racer
-
-[BLOODRA]
-Bloodring Banger
-
-[BLOODRB]
-Bloodring Banger
-
-[MAFIACR]
-Mafia Cruiser
-
-[COP_M2]
-'VICE SQUAD'
-
-[COP_M3]
-'BROWN THUNDER'
-
-[BNK3_2]
-I'm not driving for you, no way, I'm sharing this at group.
-
-[FEM_SL1]
-Save File 1 Not Present
-
-[FEM_SL2]
-Save File 2 Not Present
-
-[FEM_SL3]
-Save File 3 Not Present
-
-[FEM_SL4]
-Save File 4 Not Present
-
-[FEM_SL5]
-Save File 5 Not Present
-
-[FEM_SL6]
-Save File 6 Not Present
-
-[FEM_SL7]
-Save File 7 Not Present
-
-[FEM_SL8]
-Save File 8 Not Present
-
-[FEA_CHA]
-Changing audio output to STEREO. Please wait...
-
-[FEA_CHD]
-Warning! You are changing from STEREO output to DTS. Please wait...
-
-[FEI_SEL]
-Select
-
-[FEI_BAC]
-Back
-
-[FEI_RES]
-Resume
-
-[FEI_NAV]
-Navigate
-
-[FEI_BTX]
-/ button -
-
-[FEI_BTT]
-" button -
-
-[FEI_STA]
-START button -
-
-[FEI_BTD]
-; = > < -
-
-[FEI_STO]
-Stop
-
-[ST_ICEC]
-'Ice Cream' Sold
-
-[MOB_68A]
-Tommy son, have I got a surprise for you
-
-[MOB_68B]
-I'm down at the recording studios with some major artists
-
-[MOB_68C]
-Why don't you pay us a visit?
-
-[MOB_68D]
-You know it makes sense, dontcha? See ya later.
-
-[OUTFT1]
-Street
-
-[OUTFT2]
-Soiree
-
-[OUTFT3]
-Coveralls
-
-[OUTFT4]
-Country Club
-
-[OUTFT5]
-Havana
-
-[OUTFT6]
-Cop
-
-[OUTFT7]
-Bank Job
-
-[OUTFT8]
-Casual
-
-[OUTFT9]
-Mr Vercetti
-
-[OUTFT10]
-Tracksuit
-
-[OUTFT13]
-MC Tommy
-
-[CAR_AS1]
-CAR SHOWROOM ASSET COMPLETED
-
-[CAR_AS2]
-~g~Sunshine Auto's will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[BUYSAVE]
-~g~You can now save your game here when not on a mission.
-
-[BUYGARG]
-~g~You can also store vehicles in this garage.
-
-[STRPBUY]
-Pole Position Club purchased: $~1~
-
-[GA_4]
-Car bombs are $500 each
-
-[GA_5]
-Your car is already fitted with a bomb.
-
-[GA_6] { reVC update }
-Park it, prime it by pressing the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button and LEG IT!
-
-[GA_7] { reVC update }
-Arm with the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. Bomb will go off when engine is started.
-
-[GA_6B] { reVC update }
-Park it, prime it by pressing the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button and LEG IT!
-
-[GA_7B] { reVC update }
-Arm with the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. Bomb will go off when engine is started.
-
-[MOB_70A]
-Tommy, it's me, Colonel Cortez. Look senor, I believe you are a man who can get things done. So please help me.
-
-[MOB_70B]
-You can find me at the boat.
-
-[PICK2]
-.357 delivered to Ocean View Hotel!
-
-[PICK3]
-Chainsaw delivered to Ocean View Hotel!
-
-[PICK4]
-Flame Thrower delivered to Ocean View Hotel!
-
-[PICK5]
-.308 Sniper delivered to Ocean View Hotel!
-
-[PICK6]
-Minigun delivered to Ocean View Hotel!
-
-[PICK7]
-Rocket Launcher delivered to Ocean View Hotel!
-
-[PICK8]
-Sea Sparrow now available from the Mansion on Starfish Island!
-
-[PICK9]
-Tank now available from the Army Barracks!
-
-[PICK10]
-Hunter now available from the Army Barracks!
-
-[CLOTH1]
-Soiree outfit delivered to Rafael's on Ocean Beach.
-
-[CLOTH2]
-Street outfit delivered to Safehouses.
-
-[CLOTH3]
-Coveralls outfit delivered to Tooled Up in The North Point Mall.
-
-[CLOTH4]
-Country Club outfit delivered to The Golf Club in Leaf Links.
-
-[CLOTH5]
-Havana outfit delivered to Little Havana Streetwear in Little Havana.
-
-[CLOTH6]
-Cop outfit delivered to Police Station on Washington Beach.
-
-[CLOTH7]
-Casual outfit delivered to Gash in The North Point Mall.
-
-[CLOTH8]
-Mr Vercetti outfit delivered to Collar & Cuffs on Ocean Beach.
-
-[CLOTH9]
-Tracksuit outfit delivered to Jocksport in Downtown.
-
-[CLOTH10]
-Bank Job outfit delivered to Malibu Club in Vice Point.
-
-[MOB_62A]
-Tommy, is Ricardo Diaz, I want to thank you for looking out for me my man.
-
-[MOB_62B]
-I ask that prick Cortez, he say you the real deal, my friend, why you not come see me.
-
-[MOB_62C]
-I need a guy like you. All I have now is dickheads,
-
-[MOB_62D]
-dickheads everywhere, yo. I make you real rich.
-
-[GOAWAY2]
-~g~Come back when you have finished the Biker gang missions.
-
-[COL2_9]
-You American idiot! They followed you here!
-
-[LOADCOL]
-Loading...
-
-[STFT_17]
-Fastest time on 'PCJ Playground'
-
-[STFT_18]
-Fastest time on 'Trial By Dirt'
-
-[STFT_19]
-Fastest time on 'Test Track'
-
-[NEW_REC]
-~g~New Record Set!! ~w~~1~ minutes ~g~and ~w~~1~ seconds.
-
-[BMX_HOW]
-~g~Do two laps of the dirt track, ~y~passing through ~g~the ~y~CHECKPOINTS ~g~as you go!
-
-[BMXREW1]
-~g~Each time you beat your previous record for the two laps
-
-[BMXREW2]
-~g~a larger ~y~REWARD ~g~will be awarded!
-
-[BMXRAIN]
-~g~Looks like rain...
-
-[ITBEG]
-In the beginning...
-
-[NBMNBUY]
-El Swanko Casa purchased: $~1~
-
-[LNKVBUY]
-Links View Apartment purchased: $~1~
-
-[HYCOBUY]
-Hyman Condo purchased: $~1~
-
-[BUYGARS]
-~g~You can also store vehicles in these garages.
-
-[OCHEBUY]
-Ocean Heights Apartment purchased: $~1~
-
-[WASHBUY]
-1102 Washington Street purchased: $~1~
-
-[VCPTBUY]
-3321 Vice Point purchased: $~1~
-
-[HELP6_C]
-Press the ~h~~k~~VEHICLE_HANDBRAKE~ ~w~button to apply the vehicle's handbrake.
-
-[HELP2_A]
-Press the ~h~~k~~PED_SPRINT~ ~w~button when running to ~h~sprint
-
-[HELP4_A]
-Press the ~h~~k~~VEHICLE_ACCELERATE~ ~w~button to accelerate.
-
-[HELP5_A]
-Press the ~h~~k~~VEHICLE_BRAKE~ ~w~button to brake, or to reverse if the vehicle has stopped.
-
-[HELP8_A]
-Press the~h~ ~k~~PED_SNIPER_ZOOM_IN~ button ~w~to ~h~zoom in ~w~with the rifle and the~h~ ~k~~PED_SNIPER_ZOOM_OUT~ button ~w~to ~h~zoom out ~w~again.
-
-[PBOAT_1] { reVC update }
-Press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the boat cannons.
-
-[SEG3_4] { reVC update }
-~g~You can pick up bombs by simply piloting your RC Raider adjacent to each one, to drop a bomb press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button.
-
-[RCR1_3] { reVC update }
-~g~If you wish to quit this mission press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button to detonate your RC car.
-
-[HELP32] { reVC update }
-Then fire using the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button.
-
-[HELP33] { reVC update }
-Then fire using the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button.
-
-[TTUTOR]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle taxi missions on or off.
-
-[TTUTOR2]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle taxi missions on or off.
-
-[FTUTOR]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle fire truck missions on or off.
-
-[FTUTOR2]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle fire truck missions on or off.
-
-[CTUTOR]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle Vigilante missions on or off.
-
-[CTUTOR2]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle Vigilante missions on or off.
-
-[HELP8_B]
-Press the ~h~~k~~PED_SNIPER_ZOOM_IN~ button ~w~to ~h~zoom in ~w~with the rifle and the~h~ ~k~~PED_SNIPER_ZOOM_OUT~ button ~w~to ~h~zoom out ~w~again.
-
-[ATUTOR3]
-Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle Paramedic missions on or off.
-
-[GUN_H1]
-~w~Press the~h~ ~k~~PED_SPRINT~ ~w~button to buy. Press the~h~ ~k~~VEHICLE_ENTER_EXIT~ ~w~button to exit.
-
-[PU_CF3] { reVC update }
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to replace current weapon in this slot.
-
-[PU_CF4] { reVC update }
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to replace current weapon in this slot.
-
-[HELP9_B]
-Press the~h~ ~k~~PED_FIREWEAPON~ button ~w~to ~h~fire~w~ the sniper rifle.
-
-[HELP37]
-If you do not want to enter the vehicle while car jacking someone, press the ~h~~k~~PED_SPRINT~ ~w~button.
-
-[HELP6_A]
-Press the~h~ ~k~~VEHICLE_HANDBRAKE~ button ~w~to apply the vehicle's ~h~handbrake.
-
-[HELP6_D]
-Press the~h~ ~k~~VEHICLE_HANDBRAKE~ button ~w~to apply the vehicle's ~h~handbrake.
-
-[HELP26]
-Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to enter or exit a vehicle.
-
-[HELP27]
-Press the ~h~~k~~VEHICLE_TURRETUP~~w~ button and the ~h~~k~~VEHICLE_TURRETDOWN~~w~ button, to shift your weight on a bike.
-
-[HELP28]
-Press the ~h~~k~~VEHICLE_TURRETUP~~w~ button and the ~h~~k~~VEHICLE_TURRETDOWN~~w~ button, to shift your weight on a bike.
-
-[HELP35]
-Press the ~h~~k~~GO_LEFT~~w~, and the ~h~~k~~GO_RIGHT~~w~, to steer the vehicle.
-
-[HELP36]
-Press the ~h~~k~~GO_LEFT~~w~, and the ~h~~k~~GO_RIGHT~~w~, to steer the vehicle.
-
-[HELP42]
-Follow the ~q~pink blip~w~ to find the hotel.
-
-[HELP19]
-Walk into the ~q~pink marker ~w~to continue.
-
-[HELP1]
-Stop in the center of the ~q~pink marker.
-
-[HELP12]
-Walk into the center of the ~q~pink marker~w~ to trigger a mission.
-
-[SEG3_6]
-~g~To successfully hit a target zone, you must drop the bomb in the area represented by the ~q~pink marker~w~. You can drop the bombs in any order.
-
-[S_PROMP]
-When not on a mission you can save your progress by collecting the ~h~cassette tape pickup.
-
-[HELP16]
-Walk through the front door of the ~h~Ocean View~w~ Hotel to enter the building.
-
-[HELP43]
-~g~Goto the ~h~Ocean View~g~ hotel on Ocean Drive.
-
-[HELI_F1]
-~r~Heli Checkpoint mission cancelled!
-
-[AMMUHLP]
-If you need any weapons visit ~h~Ammu-Nation~w~. Follow the ~h~Gun blip~w~ on the radar.
-
-[HELI_1]
-Downtown Chopper Checkpoint
-
-[HELI_2]
-Ocean Beach Chopper Checkpoint
-
-[HELI_3]
-Vice Point Chopper Checkpoint
-
-[HELI_4]
-Little Haiti Chopper Checkpoint
-
-[FST_MFR]
-Most Favorite Radio Station
-
-[FST_LFR]
-Least Favorite Radio Station
-
-[FEI_HOL]
-Hold
-
-[FEI_ZOO]
-Zoom
-
-[FEI_BTR]
-> < -
-
-[FEI_NA]
-N\A
-
-[MESA]
-Mesa Grande
-
-[STRP_NO]
-You cannot buy the Stripclub at this time, come back later.
-
-[CHSE]
-CHASE
-
-[NBMN_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase El Swanko Casa for $~1~
-
-[NBMN_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase El Swanko Casa for $~1~
-
-[NBMN_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase El Swanko Casa for $~1~
-
-[LNKV_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Links View Apartment for $~1~
-
-[LNKV_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Links View Apartment for $~1~
-
-[LNKV_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Links View Apartment for $~1~
-
-[HYCO_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Hyman Condo for $~1~
-
-[HYCO_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Hyman Condo for $~1~
-
-[HYCO_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Hyman Condo for $~1~
-
-[OCHE_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Ocean Heights Apartment for $~1~
-
-[OCHE_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Ocean Heights Apartment for $~1~
-
-[OCHE_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Ocean Heights Apartment for $~1~
-
-[WASH_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase 1102 Washington Street for $~1~
-
-[WASH_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase 1102 Washington Street for $~1~
-
-[WASH_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase 1102 Washington Street for $~1~
-
-[VCPT_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase 3321 Vice Point for $~1~
-
-[VCPT_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase 3321 Vice Point for $~1~
-
-[VCPT_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase 3321 Vice Point for $~1~
-
-[PRNT_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Print Works for $~1~
-
-[PRNT_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Print Works for $~1~
-
-[PRNT_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Print Works for $~1~
-
-[CAR_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Car Showroom for $~1~
-
-[CAR_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Car Showroom for $~1~
-
-[CAR_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Car Showroom for $~1~
-
-[PORN_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Film Studios for $~1~
-
-[PORN_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Film Studios for $~1~
-
-[PORN_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Film Studios for $~1~
-
-[ICE_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Ice Cream Factory for $~1~
-
-[ICE_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Ice Cream Factory for $~1~
-
-[ICE_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Ice Cream Factory for $~1~
-
-[TAXI_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Taxi Company for $~1~
-
-[TAXI_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Taxi Company for $~1~
-
-[TAXI_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Taxi Company for $~1~
-
-[BANK_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase The Malibu for $~1~
-
-[BANK_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase The Malibu for $~1~
-
-[BANK_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase The Malibu for $~1~
-
-[BOAT_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Boatyard for $~1~
-
-[BOAT_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Boatyard for $~1~
-
-[BOAT_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Boatyard for $~1~
-
-[STRP_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Pole Position Club for $~1~
-
-[STRP_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Pole Position Club for $~1~
-
-[STRP_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase the Pole Position Club for $~1~
-
-[STOCK]
-~r~out of stock
-
-[HELP14]
-To find the Lawyer's office, follow the ~h~L blip~w~ on the radar
-
-[RAMPAGE]
-RAMPAGE!!
-
-[RAMP_F]
-RAMPAGE FAILED!!
-
-[RAMP_P]
-RAMPAGE PASSED!!
-
-[RAMP_A]
-ALL RAMPAGES COMPLETED!!
-
-[PAGE_01]
-Kill ~1~ Gang Members in 2 Minutes!
-
-[PAGE_02]
-Destroy ~1~ Vehicles in 2 Minutes!
-
-[PAGE_03]
-Drive-by and Waste ~1~ Gang Members in 2 Minutes!
-
-[PAGE_04]
-Runover and Kill ~1~ Gang Members in 2 Minutes!
-
-[PAGE_05]
-Gun Down ~1~ Gang Members in 2 Minutes!
-
-[SENTXS]
-Sentinel XS
-
-[MAP_LEG]
-Map Legend
-
-[VCNMAV]
-VCN Maverick
-
-[LG_01]
-Player position
-
-[LG_02]
-Avery Carrington
-
-[LG_03]
-Biker Contact
-
-[LG_04]
-Colonel Cortez
-
-[LG_05]
-Ricardo Diaz
-
-[LG_06]
-Kent Paul
-
-[LG_07]
-Lawyer
-
-[LG_08]
-Phil Cassidy
-
-[LG_09]
-Boatyard
-
-[LG_10]
-Malibu Club
-
-[LG_11]
-Cubans
-
-[LG_12]
-Film Studio
-
-[LG_13]
-Ammu-Nation
-
-[LG_14]
-Haitians
-
-[LG_15]
-Hardware Store
-
-[LG_16]
-Safe House
-
-[LG_17]
-Ice Cream
-
-[LG_18]
-Kaufman Cabs
-
-[LG_19]
-Love Fist
-
-[LG_20]
-Print Works
-
-[LG_21]
-Property
-
-[LG_22]
-Pay 'n' Spray
-
-[LG_23]
-Clothes Shop
-
-[LG_24]
-Tommy's Mansion
-
-[LG_25]
-Telephone
-
-[LG_26]
-Wildstyle Radio Station
-
-[LG_27]
-Flash FM Radio Station
-
-[LG_28]
-KChat Radio Station
-
-[LG_29]
-Fever 105 Radio Station
-
-[LG_30]
-VROck Radio Station
-
-[LG_31]
-VCPR Radio Station
-
-[LG_32]
-Espantoso Radio Station
-
-[LG_33]
-Emotion 98.3 Radio Station
-
-[LG_34]
-Wave 103 Radio Station
-
-[LG_36]
-Sun Yard
-
-[LG_37]
-Strip Club
-
-[MAP_YAH]
-YOU ARE HERE
-
-[TAXSHRT]
-~g~You can use this Kaufman Cab to take you to destinations instead of driving. It will cost you $9.
-
-[MOB_09D]
-Maybe Leo's already dead. Maybe I killed Leo and took his phone - you think of that prick?
-
-[FE_MLG]
-MAP LEGEND
-
-[FED_RDR]
-RADAR MODE
-
-[FED_HUD]
-HUD MODE
-
-[FED_RDB]
-BLIPS ONLY
-
-[FEST_HV]
-Highest Vigilante Mission level
-
-[BRIBE1]
-You have just picked up a police bribe, this will reduce your wanted level by one star.
-
-[CLOHELP]
-Clean Clothes!!
-
-[CRED001]
-ROCKSTAR NORTH
-
-[CRD001A]
-STUDIO DIRECTOR
-
-[CRD001B]
-ANDREW SEMPLE
-
-[CRED002]
-PRODUCER
-
-[CRD002A]
-DEVELOPMENT DIRECTOR
-
-[CRED003]
-LESLIE BENZIES
-
-[CRED004]
-ART DIRECTOR
-
-[CRED005]
-AARON GARBUT
-
-[CRED006]
-TECHNICAL DIRECTORS
-
-[CRED007]
-OBBE VERMEIJ
-
-[CRED008]
-ADAM FOWLER
-
-[CRED010]
-ANDREW DUTHIE
-
-[CRED011]
-CRAIG FILSHIE
-
-[CRED012]
-WILLIAM MILLS
-
-[CRED013]
-CHRIS ROTHWELL
-
-[CRD013A]
-IMRAN SARWAR
-
-[CRD013B]
-JAMES WORRALL
-
-[CRD013C]
-JOHN HAIME
-
-[CRED014]
-WRITTEN BY
-
-[CRED015]
-JAMES WORRALL
-
-[CRED016]
-PAUL KUROWSKI
-
-[CRED017]
-DAN HOUSER
-
-[CRED018]
-LEAD CHARACTER DESIGNER
-
-[CRD018A]
-CHARACTER DESIGNER
-
-[CRED019]
-IAN MCQUE
-
-[CRD019A]
-TOKS SOLARIN
-
-[CRD019B]
-ALAN DAVIDSON
-
-[CRED020]
-LEAD ANIMATOR
-
-[CRED021]
-ALEX HORTON
-
-[CRD022A]
-ANIMATORS
-
-[CRED022]
-LEE MONTGOMERY
-
-[CRD022B]
-DUNCAN SHIELDS
-
-[CRD022C]
-GUS BRAID
-
-[CRED023]
-VEHICLE DESIGNERS
-
-[CRD023A]
-JOLYON ORME
-
-[CRD023B]
-ALAN DUNCAN
-
-[CRD024A]
-LEAD VEHICLE DESIGNER
-
-[CRED024]
-PAUL KUROWSKI
-
-[CRED025]
-MAP DESIGNERS
-
-[CRED026]
-ADAM COCHRANE
-
-[CRED027]
-NIK TAYLOR
-
-[CRED028]
-GARY MCADAM
-
-[CRED029]
-KEIRAN BAILLIE
-
-[CRED030]
-ALISDAIR WOOD
-
-[CRED031]
-ANDREW SOOSAY
-
-[CRD031A]
-STEVEN MULHOLLAND
-
-[CRD031B]
-WAYLAND STANDING
-
-[CRD031C]
-CAMPBELL J. DICK
-
-[CRD031D]
-GRAPHIC DESIGNER
-
-[CRD031E]
-STUART PETRI
-
-[CRED032]
-LEAD PROGRAMMER
-
-[CRD032A]
-PROGRAMMERS
-
-[CRED033]
-ALEXANDER ROGER
-
-[CRED034]
-GRAEME WILLIAMSON
-
-[CRED035]
-BARANE CHAN
-
-[CRED036]
-DEREK PAYNE
-
-[CRED037]
-GORDON YEOMAN
-
-[CRD037A]
-ALAN CAMPBELL
-
-[CRD037B]
-MARK HANLON
-
-[CRD037C]
-ANDRZEJ MADAJCZYK
-
-[CRED038]
-LEAD MUSIC PRODUCER
-
-[CRED039]
-CRAIG CONNER
-
-[CRED040]
-STUART ROSS
-
-[CRED041]
-LEAD AUDIO ENGINEER
-
-[CRED042]
-ALLAN WALKER
-
-[CRD041A]
-AUDIO ENGINEER
-
-[CRD041B]
-AUDIO
-
-[CRD042A]
-WILL MORTON
-
-[CRED043]
-AUDIO PROGRAMMER
-
-[CRED044]
-RAYMOND USHER
-
-[CRED045]
-TEST MANAGER
-
-[CRED046]
-CRAIG ARBUTHNOTT
-
-[CRED047]
-LEAD QA
-
-[CRED048]
-NEIL CORBETT
-
-[CRED049]
-KEVIN WONG
-
-[CRED050]
-QA
-
-[CRED051]
-DAVID BEDDOES
-
-[CRED052]
-DAVID WATSON
-
-[CRED053]
-BARRY CLARK
-
-[CRED054]
-ROSS SPARROW
-
-[CRED055]
-JAMES ALLAN
-
-[CRED056]
-NEIL MEIKLE
-
-[CRD056A]
-GEORGE WILLIAMSON
-
-[CRD056B]
-MATT JONES
-
-[CRD056C]
-ROB HARBOUR
-
-[CRD056D]
-TOM WHITTAKER
-
-[CRED057]
-LEAD TECHNICAL SUPPORT
-
-[CRED058]
-LORRAINE ROY
-
-[CRD057A]
-TECHNICAL SUPPORT
-
-[CRED059]
-CHRISTINE CHALMERS
-
-[CRD060A]
-OFFICE SUPPORT
-
-[CRD060B]
-KIM GURNEY
-
-[CRD060C]
-CASSIE OLIVER
-
-[CRED060]
-ROCKSTAR NEW YORK
-
-[CRED061]
-EXECUTIVE PRODUCER
-
-[CRED062]
-SAM HOUSER
-
-[CRED063]
-PRODUCER
-
-[CRED064]
-DAN HOUSER
-
-[CRED065]
-VP OF DEVELOPMENT
-
-[CRED066]
-JAMIE KING
-
-[CRED067]
-CHIEF TECHNOLOGY OFFICER
-
-[CRED068]
-GARY J. FOREMAN
-
-[CRED069]
-ASSOCIATE PRODUCER
-
-[CRED070]
-JEREMY POPE
-
-[CRD071A]
-DIRECTOR OF QUALITY ASSURANCE
-
-[CRD072A]
-JEFF ROSA
-
-[CRED071]
-MUSIC SUPERVISOR
-
-[CRED072]
-TERRY DONOVAN
-
-[CRED073]
-PRODUCTION TEAM
-
-[CRED074]
-TERRY DONOVAN
-
-[CRED075]
-JENNIFER KOLBE
-
-[CRED076]
-JENEFER GROSS
-
-[CRED077]
-LAURA PATERSON
-
-[CRED078]
-JEFF CASTANEDA
-
-[CRED079]
-JERONIMO BARRERA
-
-[CRED080]
-CARLY SLATER
-
-[CRED081]
-JUNG KWAK
-
-[CRED082]
-BRIAN WOOD
-
-[CRED083]
-RENAUD SEBANNE
-
-[CRED084]
-RICHARD KRUGER
-
-[CRD084A]
-DANIEL EINZIG
-
-[CRD084B]
-JACEN BURROWS
-
-[CRD084C]
-LINN PR
-
-[CRD084D]
-COVER ART
-
-[CRD084E]
-STEPHEN BLISS
-
-[CRED085]
-KENT PAUL'S 80 NOSTALGIA ZONE
-
-[CRED086]
-WRITTEN BY DAN HOUSER
-
-[CRD086A]
-PRODUCED BY ADAM TEDMAN
-
-[CRED087]
-WWW.KENTPAUL.COM AND WWW.VICECITY.COM
-
-[CRED088]
-CREATED BY
-
-[CRD088A]
-ADAM TEDMAN
-
-[CRD088B]
-DAVID YU
-
-[CRD088C]
-JERRY LUNA
-
-[CRD088D]
-STUART PETRI
-
-[CRD088E]
-MICHAEL CARNEVALE
-
-[CRD088F]
-GREG LAU
-
-[CRD088G]
-FUTABA HAYASHI
-
-[CRED089]
-QA MANAGER
-
-[CRED090]
-CRAIG ARBUTHNOTT
-
-[CRED091]
-LEAD ANALYST
-
-[CRED092]
-ADAM DAVIDSON
-
-[CRD092A]
-JOE HOWELL
-
-[CRD092B]
-MARC FERNANDEZ
-
-[CRED093]
-GAME ANALYST
-
-[CRED094]
-RICHARD HUIE
-
-[CRED095]
-ROCKSTAR TEST TEAM
-
-[CRED096]
-LANCE WILLIAMS
-
-[CRED097]
-JOE GREENE
-
-[CRED098]
-BRIAN PLANER
-
-[CRD098A]
-ELIZABETH SATTERWHITE
-
-[CRD098B]
-JAMEEL VEGA
-
-[CRD098C]
-MIKE HONG
-
-[CRED099]
-LEE CUMMINGS
-
-[CRED100]
-STORY
-
-[CRED101]
-JAMES WORRALL
-
-[CRED102]
-DAN HOUSER
-
-[CRED103]
-ADAM TEDMAN
-
-[CRED104]
-PAUL YEATES
-
-[CRED105]
-JENEFER GROSS
-
-[CRED106]
-LAURA PATERSON
-
-[CRED107]
-CUT SCENES
-
-[CRED108]
-WRITTEN BY DAN HOUSER AND JAMES WORRALL
-
-[CRED109]
-AUDIO DIRECTED BY DAN HOUSER AND NAVID KHONSARI
-
-[CRED110]
-PRODUCED BY JAMIE KING
-
-[CRD110A]
-TALENT PROCUREMENT: JAMIE KING, SEAN MACALUSO
-
-[CRED111]
-CAST
-
-[CRD111A]
-SUPPORTING CHARACTERS
-
-[CRED112]
-TOMMY VERCETTI - RAY LIOTTA
-
-[CRED113]
-KEN ROSENBERG - WILLIAN FICHTNER
-
-[CRED114]
-SONNY FORELLI - TOM SIZEMORE
-
-[CRED115]
-STEVE SCOTT - DENNIS HOPPER
-
-[CRED116]
-AVERY CARRINGTON - BURT REYNOLDS
-
-[CRED117]
-RICARDO DIAZ - LUIS GUZMAN
-
-[CRED118]
-LANCE VANCE - PHILIP MICHAEL THOMAS
-
-[CRED119]
-COLONEL JUAN CORTEZ - ROBERT DAVI
-
-[CRED120]
-UMBERTO ROBINA - DANNY TREJO
-
-[CRED121]
-PHIL CASSIDY - GARY BUSEY
-
-[CRED122]
-MITCH BAKER - LEE MAJORS
-
-[CRED123]
-MERCEDES CORTEZ - FAIRUZA BALK
-
-[CRED124]
-KENT PAUL - DANNY DYER
-
-[CRED125]
-JEZZ TORRENT - KEVIN MCKIDD
-
-[CRED126]
-TAXI CONTROLLER - DEBORAH HARRY
-
-[CRED127]
-CANDY SUXXX - JENNA JAMESON
-
-[CRED128]
-BJ SMITH - LAWRENCE TAYLOR
-
-[CRED129]
-AUNTIE POULET - YOUREE CLEOMILI HARRIS
-
-[CRED130]
-SUPPLIER - ARMANDO RIESCO
-
-[CRED131]
-COUGAR - BLAYNE PERRY
-
-[CRED132]
-HILARY - CHARLES TUCKER
-
-[CRED133]
-CONGRESSMAN ALEX SHRUB - CHRIS LUCAS
-
-[CRED134]
-OLD MAN KELLY - GEORGE DICENZO
-
-[CRD134A]
-CAM JONES - GREG SIMS
-
-[CRD134B]
-PSYCHO - HUNTER PLATIN
-
-[CRD134C]
-MAUDE THE ICE CREAM LADY - JANE GENNARO
-
-[CRD134D]
-JETHRO - JOHN ZURHELLEN
-
-[CRD134E]
-GONZALES - JORGE PUPO
-
-[CRD134F]
-DWAYNE - NAVID KHONSARI
-
-[CRD134G]
-DICK - PETER MCKAY
-
-[CRD134H]
-MIKE THE GOON & PORN GUY - ROBERT CIHRA
-
-[CRD134I]
-PERCY - RUSSELL FOREMAN
-
-[CRED135]
-MOTION CAPTURE
-
-[CRED136]
-ANIMATED BY
-
-[CRD136A]
-TECHNICAL DIRECTION BY ALEX HORTON
-
-[CRED137]
-DIRECTED BY
-
-[CRD137A]
-DIRECTED BY NAVID KHONSARI
-
-[CRED138]
-PRODUCED BY
-
-[CRD138A]
-PRODUCED BY JAMIE KING
-
-[CRD138B]
-RENAUD SEBBANE
-
-[CRED139]
-RECORDED AT PERSPECTIVE STUDIOS, BROOKLYN
-
-[CRED140]
-MOTION CAPTURE ACTORS
-
-[CRD140A]
-BLAYNE PERRY
-
-[CRD140B]
-JONATHON SALE
-
-[CRD140C]
-CHARLES TUCKER
-
-[CRD140D]
-EDDIE MARRERO
-
-[CRD140E]
-WILLIAM MCCALL
-
-[CRD140F]
-JORGE PUPO
-
-[CRD140G]
-ROBERT JACKSON
-
-[CRD140H]
-TARA RADCLIFFE
-
-[CRD140I]
-JENIFER GAMBETESE
-
-[CRD140J]
-KRIS ACHEVARRIA
-
-[CRD140K]
-ALI ORDOUBADI
-
-[CRD140L]
-KAHLEEM POOLE
-
-[CRED141]
-PEDESTRIAN DIALOGUE
-
-[CRD141A]
-WRITTEN BY DAN HOUSER, MARC FERNANDEZ, GILLIAN TELLING AND NAVID KHONSARI
-
-[CRD141B]
-WITH HELP FROM JEREMY POPE, LANCE WILLIAMS, AND JENNY JEMISON
-
-[CRED142]
-WRITTEN BY
-
-[CRD142A]
-DAN HOUSER AND JAMES WORRALL
-
-[CRED143]
-DIRECTED BY DAN HOUSER, CRAIG CONNER, MARC FERNANDEZ, AND ALLAN WALKER
-
-[CRED144]
-PRODUCED BY RENAUD SEBANNE
-
-[CRED145]
-PEDESTRIANS
-
-[CRED146]
-ADAM DAVIDSON, ADAM WATKINS, ALEJANDRO K. BROWN, ALEX ANTHONY SIOUKAS, ALEX GARCIA,
-
-[CRED147]
-ALICE SALTZMAN, ALISON CIHRA, AMY SALIMA, AMY SALZMAN, ANDREA VIDELA, ANTHONY ATTI,
-
-[CRED148]
-ANTHONY RIVERA, BIJAN SHAMS, BLAYNE PERRY, BRETT BISOGNO, BREYE MATA, BRIAN PANEN,
-
-[CRED149]
-BROCK VODER, CAREY BERTINI, CHARISSE LAMBERT, CHRIS DIFAT, CHRIS REISENBERGER,
-
-[CRED150]
-CHRISTOPHER BRODAY, CHRISTOPHER CARRO, CYNTHIA GREENE, DAMARIES LOPEZ, DAN LEE,
-
-[CRED151]
-DAN SCHNEIDER, DAN TOYAMA, DAVID DEAN CHALTFIELD, JR., DAVID HARRISON, DAVID WILEY,
-
-[CRED152]
-DEBORAH COLLINS, DEBRANDA CHANEY-GILES, DEMETRA KOUKOULAS, DENISE ROSADO,
-
-[CRED153]
-DEVIN BENNETT, DEVIN WINTERBOTTOM, DORIS WOO, DOUGLAS HARRISON, DUNCAN COUTTS,
-
-[CRED154]
-DUPE AJAYI, EDWIN AVELLANEDA, ELIZABETH HOWELL, ELIZABETH SATTERWHITE, ERIC NAGLE,
-
-[CRED155]
-ESTEBAN KARPLUS, F. FONT, FUTABA HAYASHI, GENE HILGREEN, GERALD COSGROVE,
-
-[CRED156]
-GERARD LUNA, GILLIAN TELLING, GREGG CARLUCCI, GREGORY CLERVOIX, GREGORY SCHWEIZER,
-
-[CRED157]
-HADLEY TOMICKI, J. ROSSETT, JAMEEL VEGA, JASON JONES, JEFF ROSA, JENNIFER JEMISON,
-
-[CRED158]
-JEREMY TAGGERT, JESSICA RIDER, JOSEPH GREENE,JOSEPH HOWELL, KATE DUKICH,
-
-[CRED159]
-KEL O'NEILL, KEVIN HOPKINS, LADAWN JAMES, LANCE WILLIAMS, LAURA BUBBLES,
-
-[CRED160]
-LAURA PATTERSON, LEE CUMMINGS, LETICIA L. YOUNG, LINDSAY KENNEDY, LISA ORITZ,
-
-[CRED161]
-LORNA JORDAN, LUCIO AMADIO, MARCO FERNANDEZ, MARIKO TANAKA, MARLON MATTHEWS,
-
-[CRED162]
-MARY TELLING, MASAYOSHI MITSUYAMA, MATTHEW CHUNG, MAX ALLSTADT, MAX BOGDANOV,
-
-[CRED163]
-MELISSA ALVAREZ, MICHAEL MAY, MICHAEL ROTHSTEIN, MIGUEL VIDAL, MIKE FEDERLINE,
-
-[CRED164]
-NATALIE DESCALZO, N'GAI MEMBERS, NICOLAS MALLO, NOELLE SADLER, NORBERT MORIVAN,
-
-[CRED165]
-OSWALD GREENE, JR., PETER MCKAY, PETER APPEL, PRESTON SAVARESE, RAFAEL GONZALES,
-
-[CRED166]
-RANDY JOHNSON, REY CONCEPCION, RICHARD KROGER, ROB TIBBS, ROBERT JACKSON,
-
-[CRED167]
-ROBERT SCHULER, ROSS A. MCINTYRE, RUSSELL FOREMAN, RUTH NUNEZ, SALVADORE SUAZO,
-
-[CRED168]
-SAM WHITE, SANTOS GONZALES, SCOTT SMITH, SEYMOUR FRAILMAN, SPELMAN BRAUMAN,
-
-[CRED169]
-STEPHANIE TELLING, STEVE KNEZEVICH, STEVE ROBERT, SUMIKO YASUDA, SUSAN LEWIS,
-
-[CRED170]
-SYLVIA COLACIOS, TOMOKO MIYAZAKI, TRON, VERDEL HALE, YVES MONDESIR, ZENO LEINFELDER,
-
-[CRED171]
-DAVID BEDDOES, CHRISTINE CHALMERS, BARRY CLARK, NEIL CORBETT, KIM GURNEY, NEIL MEIKLE,
-
-[CRED172]
-CASSIE OLIVER, LORRAINE ROY, DAVID WATSON, KEVIN WONG, WILL MORTON
-
-[CRED175]
-ADAM DAVIDSON
-
-[CRED176]
-LANCE WILLIAMS
-
-[CRED177]
-NEIL MCCAFFREY
-
-[CRED178]
-LAURA PATERSON
-
-[CRED179]
-REY CONCEPCION
-
-[CRED180]
-CHARLES HEROLD
-
-[CRED181]
-ANDREW GREENWALD
-
-[CRED182]
-JAMES MIELKE
-
-[CRED183]
-PETER SUCIU
-
-[CRED184]
-ALEX ODULIO
-
-[CRED185]
-DON NKRUMAH
-
-[CRED186]
-KENDALL PITTMAN
-
-[CRED187]
-SAL SUAZO
-
-[CRED188]
-EREK MATEO
-
-[CRED189]
-CHRIS DIFATE
-
-[CRED190]
-LEILA MILTON
-
-[CRED191]
-DARREN ZOLTOWSKI
-
-[CRED192]
-VIRGINIA SMITH
-
-[CRED193]
-KEVIN CASSIN
-
-[CRED194]
-JASON SHIGEMORI
-
-[CRED195]
-KELLY KINSELLA
-
-[CRED196]
-MOLLIE STICKNEY
-
-[CRED197]
-STANTON SARJEANT
-
-[CRED198]
-LAURA WALSH
-
-[CRED199]
-MARK GARONE
-
-[CRED200]
-JOANNA SLY
-
-[CRED201]
-ELIZABETH HOWELL
-
-[CRED202]
-ANA HERCULES
-
-[CRED203]
-SHIRLEY IRICK
-
-[CRED204]
-KASHONA FIELDS
-
-[CRED205]
-JOEL M. LILJE
-
-[CRED206]
-JOHN DIBENEDETTO
-
-[CRED207]
-NANCY GILES
-
-[CRED208]
-RYAN CROY
-
-[CRED209]
-JENNIFER KOLBE
-
-[CRED210]
-LIAM BURKE
-
-[CRED211]
-SIGRID PREISSL
-
-[CRED212]
-ANITA FITZSIMONS
-
-[CRED213]
-PHILIPPA RASELLI
-
-[CRED214]
-WIL QUESNEL
-
-[CRED215]
-FALKO BURKERT
-
-[CRED216]
-SARA SEWELL
-
-[CRED217]
-RADIO STATIONS AND MUSIC
-
-[CRED218]
-MUSIC CONSULTANCY
-
-[CRD218A]
-HEINZ HENN
-
-[CRD218B]
-STUART ROSS
-
-[CRED219]
-SOUNDTRACK CO-ORDINATOR
-
-[CRED220]
-TERRY DONOVAN
-
-[CRED221]
-PRODUCER FOR ROCKSTAR GAMES
-
-[CRED222]
-DAN HOUSER AND LAZLOW
-
-[CRED223]
-PRODUCER FOR ROCKSTAR NORTH
-
-[CRED224]
-CRAIG CONNER
-
-[CRED225]
-ALLAN WALKER
-
-[CRED226]
-LAZLOW
-
-[CRED227]
-DJ BANTER AND IMAGING
-
-[CRED228]
-WRITTEN BY DAN HOUSER AND LAZLOW
-
-[CRED229]
-FLASH FM
-
-[CRD229A]
-TONI-MARIA CHAMBERS
-
-[CRD229B]
-IMAGING VOICE AND PRODUCTION-JEFF BERLIN
-
-[CRED230]
-SPECIAL THANKS TO
-
-[CRED231]
-TOMMY MOTTOLA,
-
-[CRED232]
-MICHELLE ANTHONY,
-
-[CRED233]
-STEVE BARNETT,
-
-[CRED234]
-CHUCK FLECKENSTEIN,
-
-[CRED235]
-RITA LIBERATOR
-
-[CRED236]
-MARTIN & CLAIRE LOGAN
-
-[CRED237]
-SANDRA HUTTON
-
-[CRED238]
-CHRISTINE DAVIDSON
-
-[CRED239]
-ALAN, RED & BIGFOOT
-
-[CRED240]
-LE T
-
-[CRED241]
-COLIN DONALD
-
-[CRED242]
-KERRY STALLWOOD
-
-[CRED243]
-ALAN MCGREGOR
-
-[CRED244]
-CHRIS MORTON
-
-[CRED245]
-EMIL BUSSE
-
-[CRED246]
-EMILY BAILLIE
-
-[CRED247]
-KEVIN ARCHIBALD
-
-[CRED248]
-MORAG KERR
-
-[CRED249]
-CATH WALKER
-
-[CRED250]
-ISO BAR
-
-[CRED251]
-WATERLINE
-
-[CRED252]
-NEWS CAFE
-
-[CRD251A]
-THE POND
-
-[CRD252A]
-PIVO
-
-[CRED253]
-BUDGET VIDEO RENTALS
-
-[CRED254]
-LORNA'S SCOOTER
-
-[CRED255]
-GARETH MURFIN
-
-[CRED256]
-ADDITIONAL ART
-
-[CRED257]
-TONY PORTER
-
-[CRED258]
-CRAIG MOORE
-
-[CRED259]
-CUT SCENE LIP-SYNC ANIMATION
-
-[CRED260]
-COSGROVE HALL FILMS
-
-[CRED261]
-PRODUCER - OWEN BALLHATCHET
-
-[CRED262]
-SENIOR ANIMATOR - JON TURNER
-
-[CRED263]
-ANIMATORS - RICHARD DRUMM
-
-[CRED264]
-DAVE BROWN
-
-[CRED265]
-MAIR THOMAS
-
-[CRED266]
-PRASHANT PATEL
-
-[CRED267]
-AUDIO TECHNOLOGY CONSULTANT
-
-[CRED268]
-RIK EDE FOR GAMESOUND LTD.
-
-[CRED269]
-DTS INTEGRATION SUPPORT
-
-[CRED270]
-TED LAVERTY FOR DTS
-
-[CRED271]
-CHRIS GREER FOR DTS
-
-[CRED272]
-JASON PAGE FOR SCEE
-
-[CRED273]
-RESEARCH AND ANALYSIS
-
-[CRED274]
-VROCK
-
-[CRED275]
-DJ: LAZLOW AS HIMSELF
-
-[CRED276]
-IMAGING VOICE-JOE KELLY
-
-[CRED277]
-IMAGING PRODUCTION-JONATHAN HANST
-
-[CRED278]
-WAVE 103
-
-[CRED279]
-DJ: ADAM FIRST-JAMIE CANFIELD
-
-[CRED280]
-IMAGING VOICE-JEN SWEENEY
-
-[CRED281]
-IMAGING PRODUCTION-JONATHAN HANST
-
-[CRED282]
-FEVER 105
-
-[CRED283]
-DJ: OLIVER 'LADYKILLER' BISCUIT-JULIUS DYSON
-
-[CRED284]
-IMAGING VOICE MALE-ED MCMANN
-
-[CRED285]
-IMAGING VOICE FEMALE-SHAWNEE SMITH
-
-[CRED286]
-IMAGING PRODUCTION- LISTEN KITCHEN
-
-[CRED287]
-EMOTION 98.3
-
-[CRED288]
-DJ: FERNANDO- FRANK CHAVEZ
-
-[CRED289]
-IMAGING VOICE-JEN SWEENEY
-
-[CRED290]
-IMAGING PRODUCTION-JONATHAN HANST
-
-[CRED291]
-RADIO ESPANTOSO
-
-[CRED292]
-DJ: PEPE-TONY CHILRODES
-
-[CRED293]
-WILDSTYLE
-
-[CRED294]
-DJ: MISTER MAGIC AS HIMSELF
-
-[CRED295]
-IMAGING VOICE-FRANK SILVESTRO
-
-[CRED296]
-IMAGING PRODUCTION-LAZLOW
-
-[CRED297]
-KCHAT
-
-[CRED298]
-WRITTEN BY DAN HOUSER AND LAZLOW
-
-[CRED299]
-PRODUCED AND EDITED BY LAZLOW
-
-[CRED300]
-DJ AMY SHECKENHAUSEN -LEYNA WEBER
-
-[CRED301]
-JEZ TORRENT-KEVIN MCKIDD
-
-[CRED302]
-MANDY -COLLEEN CORBETT
-
-[CRED303]
-MICHELLE CARAPADIS-MARY BIRDSONG
-
-[CRED304]
-MR.ZOO-CARL DOWLING
-
-[CRED305]
-GETHSEMANEE-LYNN LIPTON
-
-[CRED306]
-CLAUDE MAGINOT-JOHN MAUCERI
-
-[CRED307]
-BJ SMITH-LAWRENCE TAYLOR
-
-[CRED308]
-THOR-FRANK FAVA
-
-[CRED309]
-RADIO CALLERS
-
-[CRED310]
-COUZIN ED, JOSH CLARK, JASON BUHRMESTER, JUAN ALLER, WAYNE OLIVER, SUSAN LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN, DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP, KEITH BROADAS
-
-[CRED311]
-LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN,
-
-[CRED312]
-DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP,
-
-[CRED313]
-KEITH BROADAS
-
-[CRED314]
-VCPR
-
-[CRED315]
-WRITTEN BY DAN HOUSER AND LAZLOW
-
-[CRED316]
-PRODUCED BY LAZLOW
-
-[CRED317]
-MAURICE CHAVEZ-PHILLIP ANTHONY RODRIGUEZ
-
-[CRED318]
-JONATHAN FREELOADER- PATRICK OLSEN
-
-[CRED319]
-MICHELLE MONTANIUS-KELLY GUEST
-
-[CRED320]
-REP. ALEX SHRUB- CHRIS LUCAS
-
-[CRED321]
-CALLUM CRAYSHAW- SEAN MODICA
-
-[CRED322]
-JOHN F. HICKORY- LJ GANSEN
-
-[CRED323]
-PASTOR RICHARDS- DAVID GREEN
-
-[CRED324]
-JAN BROWN- MAUREEN SILLIMAN
-
-[CRED325]
-BARRY STARK- RENAUD SEBBANE
-
-[CRED326]
-JENNY LOUISE CRAB- MARY BIRDSONG
-
-[CRED327]
-KONSTANTINOS SMITH- KONSTANTINOS.COM
-
-[CRED328]
-JEREMY ROBARD-PETER SILVESTRO
-
-[CRED329]
-RADIO COMMERCIALS
-
-[CRED330]
-WRITTEN BY DAN HOUSER AND LAZLOW
-
-[CRED331]
-PRODUCED BY LAZLOW
-
-[CRED332]
-ADDITIONAL JINGLES PRODUCED BY CRAIG CONNER
-
-[CRED333]
-COMMERCIAL VOICES:
-
-[CRED334]
-ADAM DAVIDSON, ALEX ANTHONY, ALICE SALTZMAN, AMY SALZMAN, KATE DUKICH,
-
-[CRED335]
-ARAN RONICLE, BARB JONES, BEN KRECH, BRIAN THOMAS, BROCK YODER, CHRIS
-
-[CRED336]
-FERRANTE, CRAIG CONNER, DAVE RYAN, DAVID GREEN, DORIS WOO, DOUGLAS
-
-[CRED337]
-HARRISON, ED MCMANN, FRANK CHAVEZ, FRANK FAVA, GENE HILGREEN, GREG
-
-[CRED338]
-SCHWEIZER, HUNTER PLATIN, JAMES FERRANTE, JEFF BERLIN, JEFF ROSA, JOE KELLY,
-
-[CRED339]
-JOHN MAUCERI, JOSH CLARK, JULIE WEMYSS, KEVIN STRALEY, KIM GURNEY, LANCE
-
-[CRED340]
-WILLIAMS, LAURA PATERSON, LAZLOW, LISA ORTIZ, LORNA JORDAN, LUCIEN JONES,
-
-[CRED341]
-MAUREEN SILLIMAN, MIKE FERRANTE JR., PETE GUSTIN, PETER SILVESTRO, RAFF
-
-[CRED342]
-CROLLA, RANDY JOHNSON, RICHARD KRUGER, RON REEVE, SHELLEY MILLER, SKY, TJ ALLARD
-
-[CRD344A]
-AUDIO RECORDED AT DIGITAL ARTS STUDIOS,
-
-[CRED344]
-NYC, TRACK 9 STUDIOS, NYC,
-
-[CRED345]
-WEDDINGTON MULTIMEDIA, LOS ANGELES,
-
-[CRD345A]
-SYNC SOUND, NYC AND RADIO LAZLOW, LONG ISLAND.
-
-[CRED346]
-THANKS TO AXEL ERICSON AND WON LEE AT DIGITAL ARTS, PAUL VASQUEZ AT TRACK 9 STUDIOS, JOHN BOWEN AND JOHN HASSLER AT SYNC SOUND
-
-[CRED347]
-MARK LLOYD
-
-[CRED348]
-TIM BATES
-
-[CRED349]
-KIT BROWN
-
-[CRED350]
-ANDY MASON
-
-[CRED351]
-PHIL DEANE
-
-[CRED352]
-PHIL ALEXANDER
-
-[CRED353]
-MATT HEWITT
-
-[CRED354]
-DENBY GRACE
-
-[CRED355]
-ANTOINE CABROL
-
-[CRED356]
-JONOTHAN STONES
-
-[CRED357]
-MIKE BLACKBURN
-
-[CRED358]
-TIM MCGAFF
-
-[SUNSHIN]
-Sunshine Autos
-
-[CHERRYP]
-Cherry Popper Icecreams
-
-[KAUFCAB]
-Kaufman Cabs
-
-[BOATYAR]
-The Boatyard
-
-[WANT_L]
-Your wanted level has been suspended, if you commit a crime whilst the stars are flashing your full wanted level will be reinstated.
-
-[PICK1]
-Body Armor delivered to Ocean View Hotel!
-
-[HOTRNG]
-HOTRING
-
-[BLODRNG]
-BLOODRING
-
-[DIRTRNG]
-DIRTRING
-
-[FEC_ABR]
-Accelerate, Brake or Reverse
-
-[FEI_BTU]
-; = -
-
-[FEI_SCR]
-Scroll
-
-[SKUMBUY]
-Skumole Shack purchased: $~1~
-
-[SKUM_L]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Skumole Shack for $~1~
-
-[SKUM_T]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Skumole Shack for $~1~
-
-[SKUM_C]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Skumole Shack for $~1~
-
-[LG_35]
-Destination
-
-[BOAT_AS]
-~g~The Boatyard will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[BOAT_A2]
-BOATYARD ASSET COMPLETED
-
-[BOAT_N]
-Checkpoint Charlie
-
-[BOAT_P]
-~g~collect the packages before the time runs out.
-
-[FEI_R1B]
-R1 \ R2 button -
-
-[HELP9_A]
-Press the~h~ ~k~~PED_FIREWEAPON~ button ~w~to ~h~fire~w~ the sniper rifle.
-
-[HELP21]
-Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to enter or exit a vehicle.
-
-[CREAM]
-Distribution
-
-[UMBERTO]
-Cafe Robina
-
-[PU_CF1]
-Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to pick up this weapon. It will replace any weapon you have of the same type.
-
-[FED_RDM]
-MAP & BLIPS
-
-[FEC_ILU]
-Invert Look in 1st Person
-
-[NITRO]
-All taxi's now have a boost jump! Just press the horn button.
-
-[RATNG53]
-Untrustworthy
-
-[RATNG54]
-Embarrassment
-
-[RATNG55]
-Hacker
-
-[RATNG56]
-Cheater
-
-[RATNG57]
-Total Liar
-
-[STHC_04]
-Highest score with Keepie-Uppy beach ball
-
-[STHC_05]
-Hotring Best Result
-
-[STFT_13]
-Fastest time on Downtown Chopper Checkpoint
-
-[STFT_14]
-Fastest time on Ocean Beach Chopper Checkpoint
-
-[STFT_15]
-Fastest time on Vice Point Chopper Checkpoint
-
-[STFT_16]
-Fastest time on Little Haiti Chopper Checkpoint
-
-[STFT_21]
-Fastest time in Hotring
-
-[STFT_22]
-Fastest lap time in Hotring
-
-[STFT_20]
-Fastest time for 'Cone Crazy'
-
-[HELP44]
-Stop in the ~q~pink marker.
-
-[HELP45]
-Press the ~h~~k~~PED_DUCK~~w~ button to duck. This will increase the accuracy of guns you are holding.
-
-[RCR1_5]
-RC Bandit Race
-
-[RCPL1_7]
-RC Baron Race
-
-[RCH1_11]
-RC Raider Pickup
-
-[FEA_CTD]
-Warning! This feature requires DTS compatible hardware to be connected. Proceed?
-
-[FEM_STE]
-USE STEREO
-
-[GREET]
-Greetings from...
-
-[LANCE_1]
-Come on man, drive more careful!
-
-[LANCE_2]
-Hey watch what you're doin!
-
-[LANCE_3]
-Hey where are we goin' now?
-
-[LANCE_4]
-What are we doin' now?
-
-[LAW4_15]
-More money!
-
-[MERC_5]
-Nice car, Mr. Vercetti.
-
-[MERC_26]
-FASTER, FASTER, FASTER!
-
-[MERC_27]
-Careful, Tommy, I only have a nose job last month.
-
-[MERC_28]
-Tommy, drive careful.
-
-[MERC_29]
-Tommy, go slower.
-
-[MERC_30]
-Tommy, please kill someone other than me.
-
-[MERC_31]
-Tommy, baby, don't kill me!
-
-[MERC_32]
-Tommy, I'm glad you stole this car!
-
-[MERC_40]
-I had so much fun.
-
-[MERC_43]
-Adios, angel.
-
-[MERC_44]
-You keep working out, now, you hear.
-
-[MERC_45]
-Ciao, beautiful.
-
-[COL5_17]
-Oh my god they've got a helicopter!
-
-[COL5_18]
-Shoot the helicopter!
-
-[COL5_19]
-Tommy, take that chopper out!
-
-[COL5_20]
-He's coming again! Blow that chopper!
-
-[COL5_21]
-Look at the size of that chopper!
-
-[COL5_22]
-Here he comes again!
-
-[FEA_DSM]
-Warning! This savegame is set to use DTS. This requires DTS compatible hardware to be connected. Please select whether you want to proceed using DTS or STEREO output.
-
-[STFT_23]
-Fastest time for Checkpoint Charlie
-
-[HELP50]
-Press the ~h~~k~~PED_ANSWER_PHONE~~w~ button to set the camera behind you.
-
-[HELP51]
-Press the ~h~~k~~PED_ANSWER_PHONE~~w~ button to set the camera behind you.
-
-[HELP52]
-Press the ~h~~k~~PED_ANSWER_PHONE~~w~ button to set the camera behind you.
-
-[HELP53]
-Press ~h~~k~~PED_CYCLE_WEAPON_LEFT~~w~ button or ~h~~k~~PED_CYCLE_WEAPON_RIGHT~~w~ button to cycle through your available weapons.
-
-[HELP46]
-There are eight different types of weapon.
-
-[HELP47]
-You can carry one of each type of weapon at a time - one type of pistol, one type of shotgun.
-
-[HELP54]
-~w~Cost: $~1~ ~r~Buying this will replace your current weapon.
-
-[HELP2A2]
-Press the ~h~~k~~PED_SPRINT~~w~ button when running to ~h~sprint
-
-[HLPSN_A]
-The sniper rifle allows you to zoom in and fire accurately at targets from a distance.
-
-[HLPSN_B]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~ ~w~button to ~h~target~w~ with the sniper rifle.
-
-[HLPSN_C]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~ ~w~button to ~h~target~w~ with the sniper rifle.
-
-[HLPSN_D]
-Press the ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ button ~w~to ~h~zoom in ~w~with the rifle and the~h~ ~k~~PED_SNIPER_ZOOM_OUT~ button ~w~to ~h~zoom out ~w~again.
-
-[HLPSN_E]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button ~w~to ~h~fire~w~ the sniper rifle.
-
-[HLPSN_F]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button ~w~to ~h~fire~w~ the sniper rifle.
-
-[HLPSN_G]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button to ~h~fire~w~ the sniper rifle.
-
-[PLANE_H]
-Use the ~h~~k~~VEHICLE_ACCELERATE~~w~ button to accelerate, Left and right to turn.
-
-[PLANE_4] { reVC update }
-{ Use the ~h~~k~~VEHICLE_ACCELERATE~~w~ button to accelerate, Left and right to turn. }
-Use the right analog stick to accelerate, pull back on the left analog stick to climb, push forwards to descend. Left and right to turn.
-
-[HELP55]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button to attack the chef.
-
-[STPR_8]
-Pole Position Club
-
-[STPR_9]
-3321 Vice Point
-
-[STPR_10]
-Links View Apartment
-
-[STPR_11]
-El Swanko Casa
-
-[STPR_12]
-1102 Washington Street
-
-[STPR_13]
-Ocean Heights Apartment
-
-[STPR_14]
-Skumole Shack
-
-[STPR_15]
-Hyman Condo
-
-[RCCANX]
-~r~RC plane cancelled.
-
-[CLT_HL2]
-When a Clothes Pickup is collected, a one star or two star wanted level will be cleared.
-
-[CRED009]
-MISSION DESIGN
-
-[CRED359]
-LEE JOHNSON
-
-[CRED360]
-HENDRIK LESSER
-
-[CRED361]
-PASQUALE STACCHIOTTI
-
-[CRED362]
-ENRIQUE FERNANDEZ
-
-[CRED363]
-PAUL BYERS
-
-[CRED364]
-MIKE EMENY
-
-[CRED365]
-ROB DUNKIN
-
-[CRED366]
-CHARLIE KINLOCH
-
-[CRED367]
-KEVIN HOBSON
-
-[CRED368]
-JIM CREE
-
-[MOB_66A]
-Tommy, Tommy why you coming back here for?
-
-[MOB_66B]
-I tell you we don't want to see you around here no more.
-
-[MOB_67A]
-Tommy, me thinks you should be staying away, you hear?
-
-[MOB_67B]
-The Haitian boys not too 'appy with you.
-
-[MOB_18A]
-Tommy, it's Paulo, how are you? Right mate, anyway, thought I had to drop you a line.
-
-[MOB_18B]
-Oh my good lord, my son, you will not believe the quality of the brass I just encountered.
-
-[MOB_18C]
-Street walker or something, just down in Little Havana, mate.
-
-[MOB_18D]
-Said her name was Mercedes or something.
-
-[MOB_18E]
-Oh my god, mate. You gotta check this bird out.
-
-[MOB_18F]
-Could strip the lead out of a pencil. Said I was the best she ever had and all.
-
-[MOB_18G]
-Keep you potatoes skinned for her. Be seeing you.
-
-[MOB_72A]
-Tommy, it's me, Lance. Keep your mouth shut there Tommy, 'cause I ain't got time to talk.
-
-[MOB_72B]
-I ain't interested in what you got to say. Why should I be? You don't care about me, do you?
-
-[MOB_72C]
-You gotta look after me a bit better. Give me a fair slice. You know...
-
-[MOB_72D]
-Tommy... oh, look, man, I'm sorry. It's just that...
-
-[MOB_72E]
-People patronize me all my life, treat me like a little kid.
-
-[MOB_72F]
-My brother would do that. Please, man, don't do that.
-
-[MOB_72G]
-I gotta go.
-
-[MOB_63A]
-Tommy, it's Earnest. Earnest Kelly.
-
-[MOB_63B]
-How are you?
-
-[MOB_63C]
-I'm doing okay. I'll need a stick to walk, but I should be back at work soon enough.
-
-[MOB_63D]
-Good.
-
-[MOB_63E]
-I heard about Lance. What a little prick, eh?
-
-[MOB_63F]
-Yes.
-
-[MOB_63G]
-Never trust a man who walks the streets in his pajamas. That's what I say. Glad you killed him. I hope it was painful for the prick.
-
-[MOB_63H]
-I think it was. I just didn't think he was like that...
-
-[MOB_63I]
-Tommy, for a raging lunatic, you're pretty naive. I'll be back at work soon, teach you a thing or two about life, you hear.
-
-[MOB_63J]
-Take your time, Earnest. Look after yourself.
-
-[MOB_16A]
-Tommy, Paulo here, que pasa amigo?
-
-[MOB_16B]
-What do you want Paul? I don't want any fake label clothes.
-
-[MOB_16C]
-Very funny, mate, but you know I don't touch bent gear. Nah, I was just calling to see if I get a part in one your movies.
-
-[MOB_16D]
-Back in England I did a lot of blue stuff, mate. I'm packing more heat than you, my son.
-
-[MOB_16E]
-Paul, thanks for the offer, I'll bear it in mind.
-
-[MOB_16F]
-Seriously, don't forget about me, after all I done for you.
-
-[MOB_16G]
-That's what I'm trying to forget about.
-
-[MOB_17A]
-Tommy Vercetti, how's it going, Mr. big shot? I hear all these things about you, some kind of player in town, now eh...
-
-[MOB_17B]
-Paul, you're drunk.
-
-[MOB_17C]
-Nah, you stupid prat, I ain't drunk. I only had a couple and some treats, ain't been to bed for a couple of days, you know.
-
-[MOB_17D]
-Anyway, don't give me that. I ain't a mug. Who set you up in this town? Who? Me. That's who.
-
-[MOB_17F]
-Really?
-
-[MOB_17G]
-Don't give me that. Don't! I introduced you to people. I showed you the ropes, did a lot of stuff for you, and this is how you repay me.
-
-[MOB_17H]
-You ignore me. You won't give me a way in, after all I did for you! What do you think I am? A div or something?
-
-[MOB_17I]
-Paul, take it easy. I've been busy, don't be an idiot.
-
-[MOB_17J]
-I ain't no idiot, mush. That's what they said in borstal. Are you asking for trouble son, because you're going to get it!
-
-[MOB_17K]
-Tommy, mate. Please. You was my big hope! Please, don't laugh at me!
-
-[MOB_17L]
-Paul, get some sleep, seriously.
-
-[MOB_73A]
-Tommy, it's Steve.
-
-[MOB_73B]
-Hey, Steve.
-
-[MOB_73C]
-Hey indeed, genius. You're a marvel! I'm a marvel! They love us. We are re-writing the record books, pal.
-
-[MOB_73D]
-We are talking major awards here. Finally, I can put my dad in a home an tell him to shut up.
-
-[MOB_73E]
-Eeer, that's cool, Steve.
-
-[MOB_73F]
-Cool? It's hot, man. Hot. H. O. T. He never believed in me. Never thought I was an artist, and now I've made it.
-
-[MOB_73G]
-I'm the best damn skin flick director of all time, my friend. I just wanted to say, it's a pleasure to have met you.
-
-[MOB_73H]
-Thanks steve.
-
-[MOB_73I]
-I love you, baby. Don't go changing on me, you hear.
-
-[MOB_73J]
-I hear you. Good bye, Steve.
-
-[BOLLOX]
-Press the ~h~~k~~VEHICLE_HANDBRAKE~ ~w~button to drop a bomb. Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to cancel.
-
-[BRID_OP]
-Storm warning over, all bridges to the mainland are now open.
-
-[BRID_CL]
-Storm warning: All bridges to the mainland are closed.
-
-[LG_38]
-Target
-
-[ASSET_C]
-POLE POSITION ASSET COMPLETED!
-
-[ASSET_D]
-~g~The Pole Position Club will now generate revenue up to a maximum of $~1~ per day. Pick up your cash regularly!
-
-[ST_WHEE]
-Longest Wheelie time (secs)
-
-[ST_STOP]
-Longest Stoppie time (secs)
-
-[ST_2WHE]
-Longest 2 wheels time (secs)
-
-[ST_WHED]
-Longest Wheelie distance (m)
-
-[ST_STOD]
-Longest Stoppie distance (m)
-
-[ST_2WHD]
-Longest 2 wheels distance (m)
-
-[OUTFT11]
-Tracksuit
-
-[OUTFT12]
-Frankie
-
-[RELOAD]
-~g~You have won the fast reload ability!
-
-[APACHE]
-Hunter delivered to helipad in Ocean Beach.
-
-[CRED369]
-JOHN MCCARDLE
-
-[CRED370]
-DAVID MURDOCH
-
-[CRED371]
-CHRIS BROWN
-
-[CRED372]
-PAUL GREEN
-
-[CRED373]
-KYLE MILNE
-
-[CRED374]
-KEVIN YUN
-
-[CRED375]
-ERICK COBBS
-
-[CRED376]
-RANDY BLAKE
-
-[CRED377]
-BRANDON LIM
-
-[CRED378]
-BRANDON FENOL
-
-[CRED379]
-MICHAEL MANOLE
-
-[CRED380]
-ALETHEIA SIMONSON
-
-[CRED381]
-JOHN JANSEN
-
-[CUNTY]
-New clothes delivered to the Vercetti Estate!
-
-[GOODBOY]
-$50 Good Citizen Bonus!
-
-[NEWCONT]
-New ~h~Contact Point ~w~opened at the marina in Ocean Beach!!
-
-[FIRELVL]
-Fire Truck Mission level ~1~
-
-[FEM_RET]
-RETRY
-
-[FESZ_QR]
-Are you sure you want to start a new game? All progress will be lost. Proceed?
-
-[SEG3_1]
-TIME:
-
-[HELP56]
-Press the ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ button to change camera modes.
-
-[HELP57]
-Press the ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ button to change camera modes.
-
-[HELP58]
-While targeting you can press the ~h~~k~~PED_CYCLE_TARGET_LEFT~ button or ~k~~PED_CYCLE_TARGET_RIGHT~ ~w~button to cycle through targets.
-
-[HELP59]
-While targeting you can press the ~h~~k~~PED_CYCLE_TARGET_LEFT~ button or ~k~~PED_CYCLE_TARGET_RIGHT~ ~w~button to cycle through targets.
-
-[HELP60]
-If you press the ~w~~k~~PED_SPRINT~ ~w~button while car jacking, you will not enter that vehicle.
-
-[HELP61]
-You now have limitless ammo and double health on all vehicles.
-
-[FEC_LB1]
-Look
-
-[FEC_LB2]
-behind
-
-[FEC_LB3]
-Look behind
-
-[FEC_R3]
-(R3 button)
-
-[FEC_PED]
-Controls On Foot
-
-[FEC_VEH]
-Controls In Vehicle
-
-[FEC_FPR]
-Controls For First Person
-
-[FEC_CMM]
-Common Controls
-
-[FEC_PWL]
-Go Left
-
-[FEC_PWR]
-Go Right
-
-[FEC_PWF]
-Walk Forward
-
-[FEC_PWT]
-Walk towards camera
-
-[FEC_PLB]
-Look Behind.
-
-[FEC_PFR]
-Fire Weapon
-
-[FEC_CLE]
-Cycle Weapon Left
-
-[FEC_CRI]
-Cycle Weapon Right
-
-[FEC_LKT]
-Lock Target
-
-[FEC_PJP]
-Ped Jump
-
-[FEC_PSP]
-Ped Sprint
-
-[FEC_PSH]
-Ped Shoot
-
-[FEC_TLF]
-Next Target To Left
-
-[FEC_TRG]
-Next Target to Right
-
-[FEC_CCM]
-Center Camera Behind player.
-
-[FEC_SZI]
-Sniper Rifle Zoom In
-
-[FEC_SZO]
-Sniper Rifle Zoom Out
-
-[FEC_LKL]
-First Person Look Left
-
-[FEC_LRT]
-First Person Look Right
-
-[FEC_LUP]
-1st Person Look Up
-
-[FEC_LDN]
-1st Person Look Down
-
-[FEC_LBH]
-Look Behind Vehicle
-
-[FEC_LLF]
-Look Left of Vehicle
-
-[FEC_LRG]
-Look Right of Vehicle
-
-[FEC_HRN]
-Horn
-
-[FEC_HBR]
-Vehicle Handbrake
-
-[FEC_ACL]
-Vehicle Accelerate
-
-[FEC_BRK]
-Vehicle Brake
-
-[FEC_TSM]
-Toggle SubMissions
-
-[FEC_CRD]
-Change Radio Station
-
-[FEC_ENT]
-Enter/Exit Vehicle
-
-[FEC_WPN]
-Fire Weapon
-
-[FEC_PAS]
-Pause
-
-[FEC_FPO]
-1st Person Weapons
-
-[FEC_SMS]
-Show mouse pointer
-
-[FEC_CMS]
-Change camera mode all situations.
-
-[FEC_TSS]
-Take Screen Shot
-
-[FEC_DBG]
-DEBUG MENU
-
-[FEC_TGD]
-Toggle Pad Game/Debug
-
-[FEC_TDO]
-Turn Debug Camera Off
-
-[FEC_IVH]
-Invert Mouse Horizontally:
-
-[FEC_MSL]
-LMB
-
-[FEC_MSM]
-MMB
-
-[FEC_MSR]
-RMB
-
-[FEC_QUE]
-???
-
-[FEC_TWO]
-Only Two Keyboard Keys Allowed
-
-[FEC_UMS]
-Unique Mouse Keys only please.
-
-[FEC_OMS]
-Only One Mouse Keys Allowed
-
-[FEC_UJS]
-Unique Joystick buttons only please.
-
-[FEC_OJS]
-Only One Joystick Buttons per action allowed
-
-[FEC_PTL]
-Use LockTarget with Weapon Switch Left.
-
-[FEC_PTR]
-Use LockTarget with Weapon Switch Right.
-
-[FEC_LBC]
-Use Look Left With Look Right.
-
-[FEC_JBO]
-JOY ~1~
-
-[FEC_WAR]
-Warning
-
-[FEC_OKK]
-O.K.
-
-[FEC_DLF]
-Delete Failed.
-
-[FEC_SVU]
-Save Unsuccessful.
-
-[FEC_LUN]
-Load Unsuccessful. File Corrupted, Please delete.
-
-[FEC_PAD]
-Gamepad
-
-[FEC_JOY]
-Joystick
-
-[FES_CSA]
-Select a skin from the list below:
-
-[FET_HRD]
-DEFAULT SETTINGS RESTORED
-
-[FET_MST]
-MOUSE CONTROLLED STEERING
-
-[FEC_STR]
-NUM STAR
-
-[FET_MIG]
-LEFT, RIGHT, MOUSEWHEEL TO ADJUST
-
-[FET_CIG]
-BACKSPACE TO CLEAR - LMB, RETURN TO CHANGE
-
-[FET_DSN]
-Default Player Skin.bmp
-
-[FET_RSO]
-ORIGINAL SETTING RESTORED
-
-[FET_RSC]
-HARDWARE NOT AVAILABLE - ORIGINAL SETTING RESTORED
-
-[FEA_3DH]
-AUDIO HARDWARE
-
-[FEA_SPK]
-SPEAKERS CONFIGURATION
-
-[FEM_LOD]
-DRAW DISTANCE
-
-[FEM_VSC]
-FRAME SYNC
-
-[FEM_FRM]
-FRAME LIMITER
-
-[FEM_MM]
-MAIN MENU
-
-[FED_RES]
-SCREEN RESOLUTION
-
-[FET_CTL]
-CONTROLLER SETUP
-
-[FET_OPT]
-OPTIONS
-
-[FEC_MSH]
-MOUSE SENSITIVITY
-
-[FEC_IVV]
-INVERT MOUSE VERTICALLY
-
-[FEC_FNC]
-F~1~
-
-[FEC_IRT]
-INS
-
-[FEC_DLL]
-DEL
-
-[FEC_HME]
-HOME
-
-[FEC_END]
-END
-
-[FEC_PGU]
-PGUP
-
-[FEC_PGD]
-PGDN
-
-[FEC_UPA]
-UP
-
-[FEC_DWA]
-DOWN
-
-[FEC_LFA]
-LEFT
-
-[FEC_RFA]
-RIGHT
-
-[FEC_NUM]
-NUM
-
-[FEC_NMN]
-NUM~1~
-
-[FEC_FWS]
-NUM /
-
-[FEC_PLS]
-NUM +
-
-[FEC_MIN]
-NUM -
-
-[FEC_DOT]
-NUM .
-
-[FEC_NLK]
-NUMLOCK
-
-[FEC_ETR]
-ENT
-
-[FEC_SLK]
-SCROLL LOCK
-
-[FEC_PSB]
-BREAK
-
-[FEC_BSP]
-BSPACE
-
-[FEC_TAB]
-TAB
-
-[FEC_CLK]
-CAPSLOCK
-
-[FEC_RTN]
-RET
-
-[FEC_LSF]
-LSHIFT
-
-[FEC_RSF]
-RSHIFT
-
-[FEC_LCT]
-LCTRL
-
-[FEC_RCT]
-RCTRL
-
-[FEC_LAL]
-LALT
-
-[FEC_RAL]
-RALT
-
-[FEC_LWD]
-LWIN
-
-[FEC_RWD]
-RWIN
-
-[FEC_WRC]
-WINCLICK
-
-[FEC_SPC]
-SPC
-
-[WIN_TTL]
-Grand Theft Auto VC
-
-[WIN_95]
-Grand Theft Auto VC cannot run on Windows 95
-
-[WIN_DX]
-Grand Theft Auto VC requires at least DirectX version 8.1
-
-[FET_EIG]
-CANNOT SET A CONTROL FOR THIS ACTION
-
-[FET_DAM]
-DYNAMIC ACOUSTIC MODELING
-
-[FEQ_SRE]
-Are you sure you want to quit? All progress since the last save game will be lost. Proceed?
-
-[FEQ_SRW]
-Are you sure you want to quit the game?
-
-[FET_QG]
-QUIT GAME
-
-[FEN_STA]
-START GAME
-
-[FET_PAU]
-PAUSE MENU
-
-[REPLAY]
-REPLAY
-
-[FEC_ANS]
-Action
-
-[CVT_MSG]
-Converting textures to optimal format for your video card
-
-[FEC_SFT]
-SHIFT
-
-[FEH_VMP]
-VIEW MAP
-
-[FES_DEE]
-Delete Failed! Please try again.
-
-[FES_CMP]
-Save failed! Please try again.
-
-[FESZ_WR]
-Saving current game. Please wait...
-
-[FELD_WR]
-Loading game. Please wait...
-
-[FEDL_WR]
-Deleting saved game. Please wait...
-
-[PCRESRT]
-Starting new game. Please wait...
-
-[FET_STI]
-Standard Controls
-
-[FET_CTI]
-Classic Controls
-
-[FET_PS]
-PLAYER SKIN SETUP
-
-[FEH_NA]
-OPTION NOT AVAILABLE
-
-[FEH_MPH]
-MOUSE, CURSORS TO MOVE - PGUP, PGDN, MSWHEEL TO ZOOM, L - LEGEND
-
-[FEA_MP3]
-MP3 PLAYER
-
-[NO_PCCD]
-Please insert your GTA Vice City CD, or press ESC to cancel
-
-[FEH_SSA]
-CURSORS TO MOVE - S TO SAVE TO FILE
-
-[FES_CMI]
-LAST MISSION PASSED
-
-[FET_STS]
-STATS SAVED TO 'STATS.HTML' + 'STATS.TXT'
-
-[WIN_VDM]
-Grand Theft Auto VC cannot find enough available video memory
-
-[FEC_ERI]
-Error! One or more control actions are not bound to a key or button. Please check all control actions are set
-
-[FEC_TFU]
-Turret + Lean Up
-
-[FEC_TFD]
-Turret + Lean Down
-
-[FET_RIG]
-SELECT A NEW CONTROL FOR THIS ACTION
-
-[FEA_NM3]
-NO MP3 FILES FOUND
-
-[FEA_MPB]
-MP3 VOLUME BOOST
-
-[FEA_MUS]
-MUSIC VOLUME
-
-[FEA_SFX]
-SFX VOLUME
-
-[CVT_ERR]
-You have run out of disk space. Please make some space on your harddisk before continuing. Press ESC to cancel.
-
-[FEA_ADP]
-AUTO-DETECT HARDWARE
-
-{=================================== MISSION TABLE AMBULAE ===================================}
-
-[ATUTOR2:AMBULAE]
-~g~Drive the patients to Hospital CAREFULLY. Each bump reduces their chances of survival.
-
-[A_FULL:AMBULAE]
-~r~Ambulance full!!
-
-[A_FAIL2:AMBULAE]
-~r~Your lack of urgency has been fatal to the patient!
-
-[A_FAIL3:AMBULAE]
-~r~The patient is dead!!
-
-[A_PASS:AMBULAE]
-Rescued!
-
-[A_COMP2:AMBULAE]
-You will never get tired!
-
-[A_CANC:AMBULAE]
-~r~Paramedic mission cancelled!
-
-[A_COMP3:AMBULAE]
-Paramedic missions complete! You will never get tired when running!
-
-[ALEVEL:AMBULAE]
-Paramedic Mission Level ~1~
-
-[A_FAIL1:AMBULAE]
-Paramedic mission ended.
-
-[A_SAVES:AMBULAE]
-PEOPLE SAVED: ~1~
-
-[A_COMP1:AMBULAE]
-Paramedic missions complete: $~1~
-
-{=================================== MISSION TABLE ASSIN1 ===================================}
-
-[ASM1_5:ASSIN1]
-~r~Your target completed his deliveries!
-
-[ASM1_6:ASSIN1]
-Deliveries left:
-
-[ASM1_7:ASSIN1]
-~g~Carl Pearson, Pizza Delivery Man. Kill him before he completes his deliveries.
-
-[ASM1_A:ASSIN1]
-Mr. Teal, your help in eradicating those out-of-towners was invaluable to business. I have more work for you with a more 'hands-on' approach.
-
-[ASM1_D:ASSIN1]
-Mr. Teal, your help in eradicating those out-of-towners was invaluable to business.
-
-{=================================== MISSION TABLE ASSIN2 ===================================}
-
-[ASM2_1:ASSIN2]
-~g~Mrs. Dawson will be leaving the Jewelry shop in Vice Point soon. Kill her. It must look like a car accident.
-
-[ASM2_3:ASSIN2]
-~g~She's gonna blow! Get out of there!
-
-[ASM2_4:ASSIN2]
-~r~You smashed up her car when she wasn't in it! She won't touch it now!
-
-[ASM2_5:ASSIN2]
-~r~She got away!
-
-[ASM2_6:ASSIN2]
-~r~You were too near the scene of the 'accident'!
-
-[ASM2_7:ASSIN2]
-~r~It's supposed to look like an accident! Try ramming her off the road instead!
-
-[ASM2_8:ASSIN2]
-~g~You must make Mrs. Dawson's death look like an accident. Do not use any weapons.
-
-[ASM2_9:ASSIN2]
-~g~You need some wheels for this job!
-
-[ASM2_10:ASSIN2]
-~g~When her car bursts into flames make your self scarce!
-
-[ASM2_11:ASSIN2]
-Help me!
-
-[ASM2_12:ASSIN2]
-Somebody help me!
-
-[ASM2_13:ASSIN2]
-Oh my god!
-
-[ASM2_A:ASSIN2]
-My compliments on a job well done Mr. Teal. My client was very pleased.
-
-[ASM2_2:ASSIN2]
-health:
-
-{=================================== MISSION TABLE ASSIN3 ===================================}
-
-[ASM3_11:ASSIN3]
-TIME:
-
-[ASM3_C:ASSIN3]
-A European gang plans to hit a bank in Vice City. My employers would rather this didn't happen.
-
-[ASM3_D:ASSIN3]
-Each member of the gang has a cover while they are here in Vice City. Some have menial jobs, others are on vacation.
-
-[ASM3_E:ASSIN3]
-Each target and their likely whereabouts are taped under the phone.
-
-[ASM3_14:ASSIN3]
-~g~Dick Tanner is working for DBP Security in Ocean Drive.
-
-[ASM3_15:ASSIN3]
-~g~Marcus Hammond and Franco Carter are located near the Jewelry shop in Vice Point.
-
-[ASM3_16:ASSIN3]
-~g~Nick Kong is cruising off Washington Beach.
-
-[ASM3_18:ASSIN3]
-~g~Don't get too close to the target or he may spot you!
-
-[ASM3_19:ASSIN3]
-~g~He's seen you! Waste him!
-
-[ASM3_20:ASSIN3]
-~g~They have seen you! Make sure you waste them both!
-
-[ASM3_21:ASSIN3]
-~r~You did not kill all the gang members in time!
-
-[ASM3_22:ASSIN3]
-~g~Don't get too close to the targets or they may spot you!
-
-[ASM3_12:ASSIN3]
-~g~A selection of weapons have been left for you nearby if you require them. You have ~h~9 MINUTES ~g~to kill all members of the gang.
-
-[ASM3_13:ASSIN3]
-~g~Mike Griffin is working on an advertising board in Washington.
-
-[ASM3_17:ASSIN3]
-~g~Charlie Dilson is riding in Washington.
-
-{=================================== MISSION TABLE ASSIN4 ===================================}
-
-[ASM4_10:ASSIN4]
-~g~Looks like you're not the only one after the briefcase! Get it to Ammu-Nation, quick time!
-
-[ASM4_12:ASSIN4]
-Distance:
-
-[ASM4_15:ASSIN4]
-~g~Get the sniper rifle to your right.
-
-[ASM4_16:ASSIN4]
-~g~Watch the woman on the balcony, she will walk down the escalators and ask someone the time.
-
-[ASM4_17:ASSIN4]
-~g~Once the conversation has finished kill the person she spoke to, but do not kill her.
-
-[ASM4_18:ASSIN4]
-~g~Once the target is dead retrieve his briefcase and take it to Ammu-Nation in Downtown.
-
-[ASM4_19:ASSIN4]
-~g~Keep your distance from the target! Use the distance bar in the upper right corner of the screen.
-
-[ASM4_20:ASSIN4]
-~g~If it gets full he will see you.
-
-[ASM4_21:ASSIN4]
-~g~Get the briefcase!
-
-[ASM4_22:ASSIN4]
-~g~Take the briefcase to Ammu-Nation in Downtown.
-
-[ASM4_23:ASSIN4]
-~g~He has spotted you! Nail him and get the briefcase!
-
-[ASM4_25:ASSIN4]
-~r~You killed the woman you fool!
-
-[ASM4_26:ASSIN4]
-~r~The target has boarded his flight!
-
-[ASM4_27:ASSIN4]
-~r~The target has seen you! You should have kept your distance!
-
-[ASM4_28:ASSIN4]
-~r~The target heard you firing your weapon!
-
-[ASM4_29:ASSIN4]
-~r~Itchy trigger finger? You killed him too soon!
-
-[ASM4_A:ASSIN4]
-Time to fry bigger fish, Mr. Teal. There's a rifle in the foliage to your right.
-
-[ASM4_B:ASSIN4]
-Watch the woman standing on the balcony above the check-in desks. She will walk through the crowd and ask someone the time.
-
-[ASM4_C:ASSIN4]
-You must kill that person, retrieve his case and take it to the location taped under the phone.
-
-{=================================== MISSION TABLE ASSIN5 ===================================}
-
-[ASM5_A:ASSIN5]
-There is a valuable exchange taking place on the roof of the Cherry Popper Ice Cream Company.
-
-[ASM5_B:ASSIN5]
-Kill everyone involved, steal the merchandise and take it to the helipad at the airport.
-
-[ASM5_C:ASSIN5]
-There is a gate to your left that leads to the back of the factory.
-
-[ASM5_1:ASSIN5]
-~g~Enter the compound behind the Cherry Popper Ice Cream Company The deal is taking place on the roof.
-
-[ASM5_2:ASSIN5]
-~g~Get the merchandise and take it to the helipad at the airport!
-
-[ASM5_3:ASSIN5]
-~g~Take the merchandise to the helipad at the airport!
-
-{=================================== MISSION TABLE BANKJ1 ===================================}
-
-[WANTED1:BANKJ1]
-~g~Shake the cops and lose your wanted level!
-
-[BJM1_A:BANKJ1]
-Tommy! Hey, Tommy, look at this, this is great! I've got us this minibar installed!
-
-[BJM1_B:BANKJ1]
-We got a whole bar downstairs, Ken.
-
-[BJM1_C:BANKJ1]
-Yeah, yeah, whatever. Well, I got the chalkboard you asked for.
-
-[BJM1_D:BANKJ1]
-Ah, that's the benefit of a law school education: the ability to follow instructions.
-
-[BJM1_E:BANKJ1]
-Now, I need a safe man.
-
-[BJM1_F:BANKJ1]
-Oh, all right, well, let me think...safe, safe, safe, safe - I got it! This guy will blow you away!
-
-[BJM1_G:BANKJ1]
-Ahh, nah, that schmuck. He's on the inside.
-
-[BJM1_H:BANKJ1]
-Where inside?
-
-[BJM1_I:BANKJ1]
-In a police headquarter cell awaiting transfer.
-
-[BJM1_J:BANKJ1]
-I think he's about to get paroled....
-
-[BJM1_1:BANKJ1]
-~g~Break Cam Jones out of police custody!
-
-[BJM1_3:BANKJ1]
-~g~You will find something useful in the station's locker room.
-
-[BJM1_21:BANKJ1]
-~g~The key card to the cells can be found upstairs in the station.
-
-[BNK1_7:BANKJ1]
-Cam Jones?
-
-[BNK1_8:BANKJ1]
-I'm busting you out!
-
-[BNK1_10:BANKJ1]
-Yeah, that's me..
-
-[BNK1_11:BANKJ1]
-Whatever you say!
-
-[BNK1_13:BANKJ1]
-I'm gonna be doing a job and you're my safe cracker.
-
-[BNK1_14:BANKJ1]
-Beats losing my ass in a cell!
-
-[BJM1_22:BANKJ1]
-~g~Get Cam back to his house!
-
-[BJM1_23:BANKJ1]
-~g~You need to get the key card first!
-
-[BNK1_12:BANKJ1]
-Lose the heat and get me back to my place!
-
-[BJM1_20:BANKJ1]
-Put the weapon away or face the consequences!
-
-[BJM1_5:BANKJ1]
-Only authorized personnel beyond this point!
-
-[BJM1_2:BANKJ1]
-~r~You were supposed to bust Cam out, not get him killed!
-
-[BJM1_4:BANKJ1]
-He's armed! Kill him!
-
-{=================================== MISSION TABLE BANKJ2 ===================================}
-
-[BJM2_A:BANKJ2]
-We need a stick up man. You know one?
-
-[BJM2_B:BANKJ2]
-Hey, Tommy, Tommy, Tommy, this stuff keeps you sharp, man.
-
-[BJM2_C:BANKJ2]
-WoooOOOooo!
-
-[BJM2_D:BANKJ2]
-I could be your stick up man! Stick 'em up! Stick 'em up!
-
-[BJM2_E:BANKJ2]
-You ain't a stick up man, you're an idiot.
-
-[BJM2_F:BANKJ2]
-Now get yourself a drink and shut up.
-
-[BJM2_G:BANKJ2]
-Hey, get outta my way! Yeh yeh yeh - ow ow ow!
-
-[BJM2_H:BANKJ2]
-Cam, what do you think?
-
-[BJM2_I:BANKJ2]
-Well, the best shooter in this town is a guy named Cassidy.
-
-[BJM2_J:BANKJ2]
-Is that so?
-
-[BJM2_K:BANKJ2]
-Yeah. A military guy, or he thinks he is.
-
-[BJM2_L:BANKJ2]
-I doubt he was ever in the army, but he certainly knows how to get a hold of guns.
-
-[BJM2_M:BANKJ2]
-He'll be down at the shooting range.
-
-[BJM2_2A:BANKJ2]
-You Phil Cassidy?
-
-[BJM2_2B:BANKJ2]
-Why?
-
-[BJM2_2C:BANKJ2]
-I'm looking for a man who can handle a gun. From this setup, I'm not too convinced.
-
-[BJM2_2D:BANKJ2]
-Son, I could shoot a fly off your head at 80 feet.
-
-[BJM2_2E:BANKJ2]
-Oh really?
-
-[BJM2_2F:BANKJ2]
-Yeah. I learnt in the army.
-
-[BJM2_2G:BANKJ2]
-Fly shooting real popular in the army? Glad I don't pay tax.
-
-[BJM2_2H:BANKJ2]
-You tryin' to be funny kid?
-
-[BJM2_2I:BANKJ2]
-Ha ha ha ha ha!
-
-[BJM2_2J:BANKJ2]
-Let's shoot.
-
-[BJM2_1:BANKJ2]
-~g~Go to Ammu-Nation in Downtown and talk to Phil Cassidy.
-
-[BJM2_3:BANKJ2]
-HIT RATE: ~1~%
-
-[BJM2_4:BANKJ2]
-SCORE ROUND ONE: ~1~
-
-[BJM2_6:BANKJ2]
-SCORE ROUND TWO: ~1~
-
-[BJM2_7:BANKJ2]
-TOTAL SCORE FOR SHOOT: ~1~
-
-[BJM2_9:BANKJ2]
-~g~Get to round two's starting point.
-
-[BJM2_11:BANKJ2]
-~r~Phil's dead!
-
-[BJM2_12:BANKJ2]
-~r~One of the shooters is dead!
-
-[BJM2_14:BANKJ2]
-~g~Move on to the next area!
-
-[BJM2_15:BANKJ2]
-SCORE:
-
-[BJM2_17:BANKJ2]
-~g~Go and talk to Phil.
-
-[BJM2_18:BANKJ2]
-SCORE TO BEAT:
-
-[BJM2_19:BANKJ2]
-~g~Hit as many targets as you can in the time limit!
-
-[BJM2_22:BANKJ2]
-~r~You have left the shooting range!
-
-[BJM2_23:BANKJ2]
-~g~If you leave the shooting range during the competition, you will fail the mission.
-
-[BJM2_24:BANKJ2]
-~g~The closest target is worth one point.
-
-[BJM2_25:BANKJ2]
-~g~The middle target is worth two points.
-
-[BJM2_27:BANKJ2]
-~g~All targets this round are worth one point.
-
-[BNK2_2:BANKJ2]
-AIM 3-2-1 FIRE!
-
-[BNK2_3:BANKJ2]
-AREA CLEAR!
-
-[BNK2_4:BANKJ2]
-Hoooeee!
-
-[BNK2_5:BANKJ2]
-Couldn't hit a barn door!
-
-[BNK2_7:BANKJ2]
-So you wanna do me a favor, and help me put together a job?
-
-[BNK2_8:BANKJ2]
-Son, after shooting like that, if you asked me to be your wife, I'd say yes.
-
-[BNK2_9A:BANKJ2]
-Son, you better get your fancy talking and big ideas and shove 'em where there ain't no sun. You can't shoot nothin'!
-
-[BNK2_9B:BANKJ2]
-You can't shoot nothin'.
-
-[BJM2_28:BANKJ2]
-SCORE ROUND THREE: ~1~
-
-[BJM2_20:BANKJ2]
-~g~When you run out of ~w~time ~g~or ~w~ammunition ~g~the round is over!
-
-[BJM2_26:BANKJ2]
-~g~The far target is worth three points.
-
-[BNK2_1:BANKJ2]
-LIVE AMMUNITION
-
-[RANGE_1:BANKJ2]
-SCORE FOR SHOOT: ~1~
-
-[BJM2_2:BANKJ2]
-~g~To exit the round press the ~h~~k~~PED_JUMPING~ ~g~button.
-
-[BJM2_N:BANKJ2]
-Relax
-
-{=================================== MISSION TABLE BANKJ3 ===================================}
-
-[BJM3_A:BANKJ3]
-Things are starting to come together nicely here.
-
-[BJM3_B:BANKJ3]
-What's the plan, Tommy? Que pasa, amigo?
-
-[BJM3_C:BANKJ3]
-The plan is you keep doing that like a moron. Anyhow, we need a driver.
-
-[BJM3_D:BANKJ3]
-Tommy, I'll do it. I can drive.
-
-[BJM3_E:BANKJ3]
-You want Hilary, mister. Not some smart-talking law school chump.
-
-[BJM3_F:BANKJ3]
-Hilary's the real deal. You ain't never seen anyone drive so fast. I'll give him a call here.
-
-[BJM3_G:BANKJ3]
-Hey Hil, it's Phil. How's it going? No. don't talk. We'll reminisce later. You want to do me a favor?
-
-[BJM3_H:BANKJ3]
-I got me a guy from up north. No, no, I don't think he was in the service, but he wants a driver.
-
-[BJM3_I:BANKJ3]
-For a bit of action. Okay, I understand.
-
-[BJM3_J:BANKJ3]
-What'd he say?
-
-[BJM3_K:BANKJ3]
-Well, he'll do it, no problem. Well, there might be a little problem - see, he has abandonment issues.
-
-[BJM3_L:BANKJ3]
-Seems he won't work for anyone who can't beat him. Something to do with his momma.
-
-[BJM3_M:BANKJ3]
-Anyway, he wants to race you first, said he'd meet you outside..
-
-[BJM3_2A:BANKJ3]
-You Tommy? Of course you're Tommy, I mean,
-
-[BJM3_2B:BANKJ3]
-Why else would anyone want to speak to me?
-
-[BJM3_2C:BANKJ3]
-OK. Consider it this way -
-
-[BJM3_2D:BANKJ3]
-I'll drive for you IF, and only IF, you can drive properly.
-
-[BJM3_2E:BANKJ3]
-Leave me alone - and I'll never forgive you.
-
-[BJM3_2:BANKJ3]
-~r~Hilary is dead!
-
-[BJM3_4:BANKJ3]
-~g~You need a car to take part!
-
-[BNK3_1:BANKJ3]
-Ok. I'll drive for you, but please, treat me bad.
-
-[BNK3_3A:BANKJ3]
-Illegal street race in progress at Vice Point.
-
-[BNK3_3B:BANKJ3]
-Calling all officers.
-
-[BNK3_3C:BANKJ3]
-Street racers, this is illegal and forbidden!
-
-{=================================== MISSION TABLE BANKJ4 ===================================}
-
-[BNK4_A:BANKJ4]
-~w~As you can see, gentlemen, this is going to be the easiest buck we ever made.
-
-[BNK4_B:BANKJ4]
-~w~Tommy, seriously, you gotta consider going into law.
-
-[BNK4_C:BANKJ4]
-~w~What the hell are you smoking, man? This ain't no simple plan!
-
-[BNK4_D:BANKJ4]
-~w~Well, who needs a simple plan anyway?
-
-[BNK4_E:BANKJ4]
-~w~Take communism, now that was a simple plan. Didn't do Russia any favors, huh?
-
-[BNK4_F:BANKJ4]
-~w~Calm down, all right? With a team like this it's going to be no problem.
-
-[BNK4_G:BANKJ4]
-~w~We got Cam on safe. Phil? You and me will handle security, and Hilary'll drive the getaway car.
-
-[BNK4_H:BANKJ4]
-~w~Uh, heh heh, aren't you forgetting somebody? Somebody who helped you to no end in this town? Somebody who...
-
-[BNK4_I:BANKJ4]
-~w~Ken... Ken, that's right. Ken here, he washes the money for us and he keeps the drinks on ice.
-
-[BNK4_J:BANKJ4]
-~w~I don't understand what I am supposed to be doing here.
-
-[BNK4_K:BANKJ4]
-~w~Look, it's easy. Haven't you ever seen a movie?
-
-[BNK4_L:BANKJ4]
-~w~We walk into the bank, we wave the gun around, and leave very rich men.
-
-[P_DEAD:BANKJ4]
-~r~Phil's dead!!
-
-[C_DEAD:BANKJ4]
-~r~Cam's dead!!
-
-[H_DEAD:BANKJ4]
-~r~Hilary's dead!!
-
-[P_HIND:BANKJ4]
-~r~You've lost Phil!
-
-[C_HIND:BANKJ4]
-~r~Cam's been left behind!
-
-[H_HIND:BANKJ4]
-~r~Hilary's been abandoned!
-
-[GETCAR:BANKJ4]
-~g~Get in the getaway car to do the bank job!
-
-[TRASHED:BANKJ4]
-~r~YOU TRASHED THE GETAWAY CAR!!
-
-[BNK4_1:BANKJ4]
-I'll drive.
-
-[BNK4_2:BANKJ4]
-Great. A passenger. Wait 'til I tell the group about this.
-
-[BNK4_3A:BANKJ4]
-Hey, watch the wheels, Tommy!
-
-[BNK4_3B:BANKJ4]
-Tommy, Hilary's taking up too much room!
-
-[BNK4_3C:BANKJ4]
-I am not!
-
-[BNK4_3D:BANKJ4]
-Are too!
-
-[BNK4_3E:BANKJ4]
-Hey, shut up you two, or you can get out and walk.
-
-[BNK4_3F:BANKJ4]
-Yeah - HILARY.
-
-[BNK4_3I:BANKJ4]
-For god's sake, Phil, stop waving that thing around!
-
-[BNK4_3J:BANKJ4]
-Yeah, you'll have somebody's eye out!
-
-[BNK4_3M:BANKJ4]
-The car's ruined. RUINED!
-
-[BNK4_3O:BANKJ4]
-You cling to an illusion of permanence.
-
-[BNK4_3P:BANKJ4]
-What?
-
-[BNK4_3Q:BANKJ4]
-You think all things will last.
-
-[BNK4_3R:BANKJ4]
-Youth, loved ones, pizza,
-
-[BNK4_3S:BANKJ4]
-All will pass or end and you must accept that.
-
-[BNK4_3T:BANKJ4]
-You're right. Thanks, Cam.
-
-[BNK4_3U:BANKJ4]
-Don't mention it.
-
-[BNK4_3V:BANKJ4]
-Hey Tommy, why have we stopped?
-
-[BNK4_4A:BANKJ4]
-~w~Keep driving around the block, OK?
-
-[BNK4_5:BANKJ4]
-~w~Okay, Tommy, Okay.
-
-[BNK4_6:BANKJ4]
-~w~THIS IS A RAID!
-
-[BNK4_7:BANKJ4]
-~w~NOBODY MOVE!
-
-[BNK4_8:BANKJ4]
-~w~EVERYBODY UP AGAINST THAT WALL!
-
-[BNK4_9:BANKJ4]
-Phil, hold down the fort!
-
-[BNK4_10:BANKJ4]
-Wilco roger that!
-
-[BNK4_11:BANKJ4]
-Come on Cam, the vault's upstairs...
-
-[BK4_12A:BANKJ4]
-Damn! It's a Flange 9000!
-
-[BK4_12B:BANKJ4]
-This could take hours to crack,
-
-[BK4_12C:BANKJ4]
-Or five minutes if you could find the manager.
-
-[BNK4_13:BANKJ4]
-I'll go find where he's holed up.
-
-[BK4_14A:BANKJ4]
-Phil, things still sweet?
-
-[BNK4_15:BANKJ4]
-Sure. Everything's reeaal quiet.
-
-[BNK4_16:BANKJ4]
-You - you're coming with me!
-
-[BNK4_17:BANKJ4]
-Ok! Ok! Just don't shoot!
-
-[BNK4_18:BANKJ4]
-I SAID NOBODY MOVE!
-
-[BK4_19A:BANKJ4]
-It's on a time lock,
-
-[BK4_19B:BANKJ4]
-You might as well give up now!
-
-[BK4_20A:BANKJ4]
-Hell, I can bypass the time lock,
-
-[BK4_20B:BANKJ4]
-Then we just need your key code and we're good!
-
-[BNK4_21:BANKJ4]
-Stay here. You try anything and you're dead.
-
-[BNK422A:BANKJ4]
-Cam, how long?
-
-[BK4_23A:BANKJ4]
-Give me 5 minutes!
-
-[BK4_24A:BANKJ4]
-I'm gonna check on Phil, I'll be right back.
-
-[BK4_24B:BANKJ4]
-I told you not to touch that alarm!
-
-[BNK4_25:BANKJ4]
-The SWAT team will be here any minute!
-
-[BNK4_27:BANKJ4]
-I could do with some help here, Tommy!
-
-[BNK4_28:BANKJ4]
-Vice City S.W.A.T! You are completely surrounded!
-
-[BNK4_29:BANKJ4]
-Surrounded? HA HA HA HAAAAAaaa!
-
-[BNK4_30:BANKJ4]
-They're crapping themselves, corrupt bastards!
-
-[BK4_31A:BANKJ4]
-Tommy! The vault's open!
-
-[BK4_34A:BANKJ4]
-Ok, we got the SWAT retirement fund. Let's get out of here!
-
-[BK4_34B:BANKJ4]
-Ok, you asked for it! You've had your last chance!
-
-[BK4_35A:BANKJ4]
-They're storming the place!
-
-[BK4_35B:BANKJ4]
-Take cover!
-
-[BNK4_94:BANKJ4]
-~w~Ok, guys. Nice an easy just as we planned.
-
-[BM_DEAD:BANKJ4]
-~r~You needed the bank manager alive!!
-
-[ASSET_A:BANKJ4]
-BANK HEIST ASSET COMPLETED!
-
-[ASSET_B:BANKJ4]
-~g~The Malibu Club will now generate revenue up to a maximum of $~1~ per day. Pick up your cash regularly!
-
-[IDIOT:BANKJ4]
-~r~ That's right, just wander about dressed like a lunatic and draw attention to yourself, IDIOT!
-
-{=================================== MISSION TABLE BARON1 ===================================}
-
-[COK1_A:BARON1]
-Come on, baby, go! Yeah! Yeah! Arrrrr!
-
-[COK1_B:BARON1]
-Stupid horse! I'll chop your head off! Grrrrr...
-
-[COK1_C:BARON1]
-Who is this dickhead?
-
-[COK1_D:BARON1]
-Tommy Vercetti. You remember me.
-
-[COK1_E:BARON1]
-Excuse me. I'm a little anxious. Never trust a goddamn horse!
-
-[COK1_F:BARON1]
-You do a good job - you work for me now.
-
-[COK1_H:BARON1]
-As I said, amigo, you work for me now. Shut up. Some Judas has betrayed me.
-
-[COK1_I:BARON1]
-He thinks I don't know how much money I should be making, but stealing 3% is as good as stealing 100%.
-
-[COK1_J:BARON1]
-No one does this to me. NO ONE!!
-
-[COK1_K:BARON1]
-You follow him from his apartment and you see where he goes! Later, we will kill him.
-
-[COK1_1:BARON1]
-Ooh shit!
-
-[COK1_2:BARON1]
-Too slow grandad!
-
-[COK1_4:BARON1]
-Loser.
-
-[COK1_5:BARON1]
-You better keep on running, asshole!
-
-[COK1_8:BARON1]
-~g~Quick! Grab some wheels and follow him!
-
-[COK1_9:BARON1]
-~r~You're supposed to follow him, not kill him!
-
-[COK1_10:BARON1]
-~g~Go to the thief's house and find out where he's stashing the money.
-
-[COK1_11:BARON1]
-~g~Have a look through his window.
-
-[COK1_7:BARON1]
-~g~He's escaped to the roof, keep on his tail but don't kill him!
-
-[COK1_G:BARON1]
-I work for money.
-
-{=================================== MISSION TABLE BARON2 ===================================}
-
-[COK2_A:BARON2]
-What kind of incompetent fool are you?
-
-[COK2_B:BARON2]
-FOOL! FOOL! FOOL! FOOL!
-
-[COK2_C:BARON2]
-Tommy!
-
-[COK2_D:BARON2]
-What, Ricardo?
-
-[COK2_E:BARON2]
-These idiots - they always trying to screw you.
-
-[COK2_F:BARON2]
-That's the problem with this business.
-
-[COK2_G:BARON2]
-What do you think you're doing?
-
-[COK2_H:BARON2]
-These pricks have failed me miserably,
-
-[COK2_I:BARON2]
-Soon any mom and pop will think they can sell gallo in Vice City.
-
-[COK2_J:BARON2]
-What next, huh? The stinking Mafia?!
-
-[COK2_K:BARON2]
-That gang place is a fortress at ground level,
-
-[COK2_L:BARON2]
-so Quentin here - Quentin! QUENTIN!
-
-[COK2_M:BARON2]
-He'll fly you over the area!
-
-[COK2_N:BARON2]
-Eradicate them!
-
-[COK2_O:BARON2]
-What do you think you're doing?
-
-[COK2_P:BARON2]
-What are you doing here?
-
-[COK2_Q:BARON2]
-Hey, I've been asking around and it's obvious
-
-[COK2_R:BARON2]
-that Diaz jumped the deal and iced my brother.
-
-[COK2_S:BARON2]
-And he'll kill you, too!
-
-[COK2_T:BARON2]
-I can take Diaz!
-
-[COK2_U:BARON2]
-No - listen to me! I'll handle Diaz -
-
-[COK2_1:BARON2]
-One thing puzzling me, What's with 'Quentin!?
-
-[COK2_2:BARON2]
-I dunno, I always kinda liked it...Quentin Vance...
-
-[COK2_3:BARON2]
-Vance? Your name's Lance Vance?
-
-[COK2_4:BARON2]
-Hey! I got enough of that at school!
-
-[COK2_5:BARON2]
-You ever fired one of those from a whirly?
-
-[COK2_8:BARON2]
-Where the hell are we headed anyway?
-
-[COK2_9:BARON2]
-Prawn Island.
-
-[COK2_13:BARON2]
-Lance Vance. Poor bastard.
-
-[COK2_14:BARON2]
-Ok, we're almost there.
-
-[COK2_15:BARON2]
-We'll make a couple of passes.
-
-[COK2_16:BARON2]
-So take out as many guns as you can.
-
-[COK2_17:BARON2]
-Then I'll set you down and you're on your way.
-
-[COK2_20:BARON2]
-Damn! This is a war zone! Take out some of those gunmen!
-
-[COK2_21:BARON2]
-We're taking hits here, man!
-
-[COK2_22:BARON2]
-This thing ain't cheap to fix! Take them out!
-
-[COK2_23:BARON2]
-Ok, you're on your own from here! Good luck, brother!
-
-[COK2_24:BARON2]
-Heli Health:
-
-[COK2_25:BARON2]
-~g~Go and collect the money on the roof.
-
-[COK2_27:BARON2]
-You're on MY turf asshole!
-
-[COK2_28:BARON2]
-You're going down!
-
-[COK2_6:BARON2]
-No. I'll get a bit of practice on the way though.
-
-[OPEN_B:BARON2]
-The road blocks to the mainland have now been removed
-
-[COK2_V:BARON2]
-- he's beginning to trust me.
-
-{=================================== MISSION TABLE BARON3 ===================================}
-
-[COK3_A:BARON3]
-Not so pleased with your selves NOW, huh!
-
-[COK3_B:BARON3]
-Ahahahahaa, Ahahahahaa.
-
-[COK3_C:BARON3]
-Whoa! Watch where you're waving that thing!
-
-[COK3_D:BARON3]
-No more pigeon shit on MY car, eh Tommy!
-
-[COK3_E:BARON3]
-Guess not.
-
-[COK3_F:BARON3]
-You're damn right. Now listen,
-
-[COK3_G:BARON3]
-you know who owns the fastest boat on the east coast?
-
-[COK3_H:BARON3]
-Not off hand, no.
-
-[COK3_I:BARON3]
-ME. And I want it to stay that way.
-
-[COK3_J:BARON3]
-Every smuggler from here to Caracas has one dream, a faster boat.
-
-[COK3_K:BARON3]
-Rumor has it the boatyard has just completed such a vessel.
-
-[COK3_L:BARON3]
-for some Costa Rican dickhead.
-
-[COK3_M:BARON3]
-And Tommy...I WANT THAT BOAT!!!
-
-[COK3_N:BARON3]
-I think your pigeons are back.
-
-[COK3_O:BARON3]
-Ah! I thought I got you. Where'd you come from?
-
-[COK3_P:BARON3]
-Pigeons! Boom! Aaaaah!
-
-[COK3_5:BARON3]
-~g~Find the switch to lower the boat.
-
-[COK3_6:BARON3]
-~g~Get the boat to the mansion.
-
-[COK3_7:BARON3]
-~r~You destroyed the boat!
-
-[COK3_8:BARON3]
-~g~Go to the boatyard at the docks and steal the fastest boat.
-
-[COK3_9:BARON3]
-~g~Now get into the boat.
-
-{=================================== MISSION TABLE BARON4 ===================================}
-
-[COK4_A:BARON4]
-Eject! PLASTIC CRAP!
-
-[COK4_B:BARON4]
-You doing this to me?
-
-[COK4_C:BARON4]
-Who do you think you are, you piece of plastic SHIT? Aaarrgh!
-
-[COK4_D:BARON4]
-SCREW YOU!
-
-[COK4_E:BARON4]
-It eats my favorite El burro movie, it die!
-
-[COK4_F:BARON4]
-What else could I do?
-
-[COK4_G:BARON4]
-It's probably not plugged in.
-
-[COK4_H:BARON4]
-What?
-
-[COK4_I:BARON4]
-Damn - no matter, I can buy a hundred more.
-
-[COK4_J:BARON4]
-Now Tommy,
-
-[COK4_K:BARON4]
-each month a freelancer sails into Vice City and moors his yacht.
-
-[COK4_L:BARON4]
-He sells his cargo to the first boat.
-
-[COK4_M:BARON4]
-I want you to take the speedboat
-
-[COK4_N:BARON4]
-and beat all the other shitheads to it,
-
-[COK4_O:BARON4]
-then you bring the cargo here, ok!?
-
-[COK4_P:BARON4]
-Let me guess, you thought I could use a guardian angel.
-
-[COK4_Q:BARON4]
-I'm just saying you need to let me in there, my man.
-
-[COK4_T:BARON4]
-and you're probably gonna wanna kiss me!
-
-[COK4_U:BARON4]
-Wacko.
-
-[COK4_V:BARON4]
-Hahahahahaha!
-
-[COK4_1:BARON4]
-So Tommy, we know it was Diaz busted our deal..
-
-[COK4_3:BARON4]
-So why the hell are we running errands for him?
-
-[COK4_4:BARON4]
-The more we learn now, the less we have to learn when we take this town over!
-
-[COK4_5:BARON4]
-I like your style, man. Real fresh.
-
-[COK4_12:BARON4]
-Watch yourself, they're coming from all over!
-
-[COK4_13:BARON4]
-Got 'em. Head for Diaz's as fast as you can!
-
-[COK4_14:BARON4]
-You want some of this?!
-
-[COK4_15:BARON4]
-Sleep with the fish!
-
-[COK4_16:BARON4]
-Eat it! EAT IT!
-
-[COK4_19:BARON4]
-More trouble up ahead!
-
-[COK4_20:BARON4]
-There are gunmen on that jetty!
-
-[COK4_24:BARON4]
-Good shooting, my friend. You're a real, proper, grade A lunatic.
-
-[COK4_25:BARON4]
-Well, thank you.
-
-[COK4_26:BARON4]
-See you around, Tommy.
-
-[COK4_27:BARON4]
-Okay, Mr. Lance Vance Dance.
-
-[COK4_28:BARON4]
-~g~Get to the yacht before the other boats do!
-
-[COK4_31:BARON4]
-~g~Go to the fastest boat at the jetty!
-
-[COK4_32:BARON4]
-~r~Too slow!
-
-[COK4_33:BARON4]
-~r~You destroyed the boat!
-
-[COK4_34:BARON4]
-~g~Take those boats out!
-
-[COK4_35:BARON4]
-Boat health:
-
-[COK4_R:BARON4]
-Now you can feed me all this 'lonely tough guy' crap,
-
-[COK4_S:BARON4]
-but I know one day I'm gonna save your ass,
-
-{=================================== MISSION TABLE BARON5 ===================================}
-
-[PROP_A:BARON5]
-PROPERTY ACQUIRED!
-
-[COK4_30:BARON5]
-~r~Lance is dead!
-
-[ASS1_A:BARON5]
-I got us some cannons in the trunk.
-
-[ASS1_B:BARON5]
-Holy shit! Where'd you get all this stuff?
-
-[ASS1_C:BARON5]
-Been saving it for a rainy day.
-
-[ASS1_D:BARON5]
-You like?
-
-[ASS1_E:BARON5]
-Yeah, I like.
-
-[ASS1_F:BARON5]
-You stupid pricks...
-
-[ASS1_G:BARON5]
-my beautiful house
-
-[ASS1_H:BARON5]
-look what you've done to it!
-
-[ASS1_I:BARON5]
-This is for my brother!
-
-[ASS1_J:BARON5]
-I trusted you, Tommy.
-
-[ASS1_K:BARON5]
-I woulda had you made...
-
-[ASS1_L:BARON5]
-Say goodnight, Mr. Diaz.
-
-[ASS1_1:BARON5]
-This place is going to be crawling with assholes...be careful...
-
-[ASS1_2:BARON5]
-Don't worry Tommy, I'll cover you.
-
-[ASS1_13:BARON5]
-DIAZ?! I've come to take over your business!
-
-[ASS1_15:BARON5]
-~g~Storm the mansion and kill Diaz!
-
-[ASS1_16:BARON5]
-~g~Kill Diaz!
-
-[ASS1_17:BARON5]
-~g~There are multiple routes into the mansion.
-
-[BUD1:BARON5]
-Lances Health:
-
-[ASS1_18:BARON5]
-~g~The door is locked, try another route.
-
-[ASS1_19:BARON5]
-This way!
-
-[ASS1_14:BARON5]
-TOMMY! You betrayed me, you idiot! I'm gonna kill you real soon..
-
-[ASS1_20:BARON5]
-Tommy, my problem with Quentin, not wit you, man!
-
-{=================================== MISSION TABLE BIKE1 ===================================}
-
-[BM1_A:BIKE1]
-Where's Baker?
-
-[BM1_B:BIKE1]
-I'm looking for Big Mitch Baker...
-
-[BM1_C:BIKE1]
-Who's lookin'?
-
-[BM1_D:BIKE1]
-Tommy Vercetti.
-
-[BM1_E:BIKE1]
-Vercetti
-
-[BM1_F:BIKE1]
-You don't look like the law, so that's bought you a minute.
-
-[BM1_G:BIKE1]
-You better talk fast.
-
-[BM1_H:BIKE1]
-Kent Paul said you might be interested in pulling security for a gig he's got set up.
-
-[BM1_I:BIKE1]
-Kent Paul? Sheesh! No wonder he sent ya.
-
-[BM1_J:BIKE1]
-The last time he was here he left through the window in nothing but his limey birthday suit.
-
-[BM1_K:BIKE1]
-Are you interested or not?
-
-[BM1_L:BIKE1]
-We only do favors for our own.
-
-[BM1_M:BIKE1]
-How do I join?
-
-[BM1_N:BIKE1]
-This ain't no country club, boy. Can you handle a bike?
-
-[BM1_O:BIKE1]
-Can you sit on a stool and drink?
-
-[BM1_P:BIKE1]
-Cougar, Zeppelin, go see how this girl handles a bike...
-
-[BM1_3:BIKE1]
-~r~The racers have been attacked!
-
-[BIKE1_1:BIKE1]
-All right, fancy clothes. Let's see what you can do.
-
-[BM1_1:BIKE1]
-~g~Get a Freeway or an Angel and get to the starting grid.
-
-[BM1_2:BIKE1]
-~g~You need a Freeway or an Angel to compete!
-
-{=================================== MISSION TABLE BIKE2 ===================================}
-
-[BM2_1:BIKE2]
-CHAOSMETER:
-
-[BM2_A:BIKE2]
-Ah, got ya again.
-
-[BM2_B:BIKE2]
-Hey Vercetti.
-
-[BM2_C:BIKE2]
-Cougar says you can handle a bike pretty good.
-
-[BM2_D:BIKE2]
-Yeah, how many more errands am I gonna to have to run?
-
-[BM2_E:BIKE2]
-I'm a very busy man.
-
-[BM2_F:BIKE2]
-If it's a fight that's gonna settle this then bring it on.
-
-[BM2_G:BIKE2]
-Being one of us ain't just about brawlin'. It's about being part of a family.
-
-[BM2_H:BIKE2]
-Yeah, I've been part of a family before alright. It didn't work out.
-
-[BM2_I:BIKE2]
-Yeah, right, but this family takes care of its own.
-
-[BM2_J:BIKE2]
-We don't ask a man to do the dirty work and then let him do fifteen years hard time.
-
-[BM2_K:BIKE2]
-Yeah, that's right. I've done my homework.
-
-[BM2_L:BIKE2]
-This here's the biggest family of misfits, outcasts and badasses.
-
-[BM2_M:BIKE2]
-Hell, some of us has even been betrayed by our own country.
-
-[BM2_N:BIKE2]
-I was locked up during 'Nam. Ugly business.
-
-[BM2_O:BIKE2]
-Which is why I'm gonna ask you to go mess with the man.
-
-[BM2_Q:BIKE2]
-So get out there, grab a bike and show this city how pissed you are!
-
-[BM2_R:BIKE2]
-Alright, alright.
-
-[BM2_3:BIKE2]
-~g~This sound indicates that you have filled a part of the meter, continue to do so.
-
-[BM2_2:BIKE2]
-~g~You must fill the Chaos Meter in the time given to show us how much of a badass you are!
-
-[BM2_4:BIKE2]
-~r~You failed to fill the Chaos Meter in time!
-
-[BM2_P:BIKE2]
-This whole damn country needs a kick in the ass, and we're the ones to deliver it.
-
-{=================================== MISSION TABLE BIKE3 ===================================}
-
-[BM3_A:BIKE3]
-Hey there, Mitch.
-
-[BM3_B:BIKE3]
-Well, if it ain't 'bad ass' Vercetti.
-
-[BM3_C:BIKE3]
-Now I wanna see how good you can fight for your patch.
-
-[BM3_D:BIKE3]
-A local street gang made the mistake of stealing my hog...
-
-[BM3_E:BIKE3]
-probably because of some machismo thing or somethin'.
-
-[BM3_F:BIKE3]
-Me and the boys would go over there and teach them a lesson in respect an'all.
-
-[BM3_G:BIKE3]
-Anyways.
-
-[BM3_H:BIKE3]
-Then I got to thinking - this would make a good initiation for you.
-
-[BM3_I:BIKE3]
-You get my bike back, you can tell Paul he's got his security.
-
-[BM3_2:BIKE3]
-~r~You were supposed to bring the bike back, not destroy it!
-
-[BM3_3:BIKE3]
-~g~Get the bike back to the bar!
-
-[BM3_4:BIKE3]
-~g~Get on the bike!
-
-[INTRUDE:BIKE3]
-~g~You've been spotted!
-
-[BM3_6:BIKE3]
-~g~They are holed up behind Ammu-Nation in the Downtown area.
-
-[BM3_7:BIKE3]
-~g~You will need a fast bike to gain access to the roof.
-
-[BM3_8:BIKE3]
-~g~Use the bike to jump from these stairs to the roof on the far side of the road.
-
-[BM3_1:BIKE3]
-~g~A local gang has stolen Mitch Baker's Angel. Get it back!
-
-[BM3_9:BIKE3]
-~g~Get Mitch's Angel and get out of there!
-
-{=================================== MISSION TABLE BMX_1 ===================================}
-
-[GETBIK2:BMX_1]
-~r~You have ~w~~1~ seconds ~g~to get on a Dirt Bike!
-
-{=================================== MISSION TABLE BOATBUY ===================================}
-
-[DRUG_2:BOATBUY]
-Put it out. There's a dude here.
-
-[DRUG_3:BOATBUY]
-Hey suit dude! I guess you're the new owner?
-
-[DRUG_4:BOATBUY]
-Yeah. Which one of the boats is the fastest?
-
-[DRUG_5:BOATBUY]
-It's already in the water, dude,
-
-[DRUG_6:BOATBUY]
-I though you might want to try her out.
-
-[DRUG_7:BOATBUY]
-Dude, she's already running with a 300 horse power engine...
-
-[DRUG_8:BOATBUY]
-...and the fiberglass hull, she just shoots through the waves.!
-
-[DRUG_9:BOATBUY]
-She can do like zero to sixty in four seconds flat dude...
-
-[DRUG_10:BOATBUY]
-and she can hold like twenty bales of the best Jamaican smoke right in the hull!
-
-[DRUG_11:BOATBUY]
-So go ahead dude, she's ready to fly!
-
-[DRUG_12:BOATBUY]
-Yo yo, uh, suit dude, you gotta light?
-
-[DRUG_1:BOATBUY]
-Hello? Hel-lo?! Hello?
-
-[DRUG_13:BOATBUY]
-Dude?
-
-{=================================== MISSION TABLE CAP_1 ===================================}
-
-[CAP1_B1:CAP_1]
-~g~The Mafia is taxing your businesses. Find them and kill them.
-
-[CAP1_B2:CAP_1]
-~g~The Mafia has taxed the Boatyard!
-
-[CAP1_B3:CAP_1]
-~g~The Mafia has taxed the Ice Cream Factory!
-
-[CAP1_B4:CAP_1]
-~g~The Mafia has taxed the Car Showroom!
-
-[CAP1_B5:CAP_1]
-~g~The Mafia has taxed the Taxi Firm!
-
-[CAP_01:CAP_1]
-Ok, what's the emergency?
-
-[CAP_02:CAP_1]
-WHO?
-
-[CAP_03:CAP_1]
-Tommy...some mob thugs ...said they'd come to take their cut...
-
-[CAP_04:CAP_1]
-...said it was a Mr. Forello's money...I feel like crap.
-
-[CAP_05:CAP_1]
-Forelli? SONNY Forelli?
-
-[CAP_06:CAP_1]
-Yeah, that's the guy...I think...they were very insistent...
-
-[CAP_07:CAP_1]
-Don't you worry, pop, I'm not angry with you.
-
-[CAP_08:CAP_1]
-Get him to the hospital.
-
-[CAP_09:CAP_1]
-Tommy...rip that guy a new asshole for me...
-
-[CAP_10:CAP_1]
-I'm gonna rip him two!
-
-[CAP1_2:CAP_1]
-You know the rules, Vercetti!
-
-[CAP1_3:CAP_1]
-Mr. Forelli sends his regards!
-
-[CAP1_4:CAP_1]
-It's the Harwood Butcher!
-
-[CAP1_5:CAP_1]
-You tell Sonny - stay away!
-
-[CAP1_6:CAP_1]
-Vice City is MINE now, NOT his.
-
-[CAP1_7:CAP_1]
-You think you can take me down, Vercetti?
-
-[CAP1_8:CAP_1]
-We'll keep coming after you until you die, Vercetti.
-
-[CAP1_9:CAP_1]
-You don't stand a chance, you psychotic prick.
-
-[CAP1_10:CAP_1]
-I'll murder you Vercetti.
-
-[CAP1_11:CAP_1]
-You always were a jerk.
-
-[CAP1_12:CAP_1]
-You're going to die, Vercetti.
-
-[CAP1_B6:CAP_1]
-~g~You have found the collector, kill him.
-
-[CAP1_B7:CAP_1]
-~g~You've lost the collector.
-
-[CAP1_B8:CAP_1]
-~r~The collector has taxed all of your businesses.
-
-[CAP1_B9:CAP_1]
-~g~The mafia has taxed The Malibu!
-
-[CAP1_B0:CAP_1]
-~g~The mafia has taxed the film studio!
-
-[CAP1_C2:CAP_1]
-~g~The Mafia has arrived at the Boatyard!
-
-[CAP1_C3:CAP_1]
-~g~The Mafia has arrived at the Ice Cream Factory!
-
-[CAP1_C4:CAP_1]
-~g~The Mafia has arrived at the Car Showroom!
-
-[CAP1_C5:CAP_1]
-~g~The Mafia has arrived at the Taxi Firm!
-
-[CAP1_C9:CAP_1]
-~g~The Mafia has arrived at The Malibu!
-
-[CAP1_C0:CAP_1]
-~g~The Mafia has arrived at the film studio!
-
-[CAP1_D2:CAP_1]
-~g~The Mafia is leaving the Boatyard!
-
-[CAP1_D3:CAP_1]
-~g~The Mafia is leaving the Ice Cream Factory!
-
-[CAP1_D4:CAP_1]
-~g~The Mafia is leaving the Car Showroom!
-
-[CAP1_D5:CAP_1]
-~g~The Mafia is leaving the Taxi Firm!
-
-[CAP1_D9:CAP_1]
-~g~The Mafia is leaving The Malibu!
-
-[CAP1_D0:CAP_1]
-~g~The Mafia is leaving the film studio!
-
-[CAP1B10:CAP_1]
-You've capped the Collectors. More are on their way.
-
-{=================================== MISSION TABLE CARBUY ===================================}
-
-[CAR1_1:CARBUY]
-B.J. Smith. And you must be Mr. Vercetti.
-
-[CAR1_2:CARBUY]
-Would you like the tour?
-
-[CAR1_3:CARBUY]
-Might as well.
-
-[CAR1_4:CARBUY]
-Well, I'm very sad to be selling the dealership to y'all.
-
-[CAR1_5:CARBUY]
-This was my first investment after I turned pro.
-
-[CAR1_6:CARBUY]
-But now it's time for me to move on.
-
-[CAR1_7:CARBUY]
-You're leaving town?
-
-[CAR1_8:CARBUY]
-Not in too much of a hurry, I hope?
-
-[CAR1_9:CARBUY]
-No. I'm just coming out of retirement, and preparing for my future comeback.
-
-[CAR1_10:CARBUY]
-The business wasn't too strong,
-
-[CAR1_11:CARBUY]
-and my staff took it upon themselves to get a bit more
-
-[CAR1_12:CARBUY]
-creative with the generation of wealth.
-
-[CAR1_13:CARBUY]
-Obviously, I could wind down the business before I hand it over.
-
-[CAR1_14:CARBUY]
-Hell, I could burn the place down if I wanted to.
-
-[CAR1_15:CARBUY]
-This is prime development land.
-
-[CAR1_16:CARBUY]
-Oh, I wouldn't worry about any of that.
-
-[CAR1_17:CARBUY]
-This place seems perfect.
-
-[CAR1_18:CARBUY]
-Yeh it does, So I take it we have a deal?
-
-{=================================== MISSION TABLE CARPAR1 ===================================}
-
-[MM_1_A:CARPAR1]
-~g~Collect ~y~5 checkpoints~r~ WITHOUT ~g~smashing any ~r~CONES! ~g~You may collect checkpoints in ~y~ANY ORDER.
-
-[CONE_1:CARPAR1]
-~r~You smashed a cone!!
-
-[MM_1_C:CARPAR1]
-~y~PASS THROUGH~g~ a checkpoint to start the timer. ~g~Each checkpoint will credit you with ~y~~1~ SECONDS~g~.
-
-{=================================== MISSION TABLE COPCAR ===================================}
-
-[KILLS:COPCAR]
-KILLS:
-
-[C_BREIF:COPCAR]
-~g~Suspect last seen in the ~a~ area.
-
-[COPCART:COPCAR]
-~g~You have ~1~ seconds to return to a police vehicle before the mission ends.
-
-[C_CANC:COPCAR]
-~r~Vigilante mission cancelled!
-
-[C_TIME:COPCAR]
-~r~Your time as a law enforcer is over!
-
-[C_COMP1:COPCAR]
-Vigilante mission level 12 complete: Your max Body Armor increased to 150
-
-[CLEVEL:COPCAR]
-Vigilante Mission Level ~1~
-
-[C_PASS:COPCAR]
-THREAT ELIMINATED: $ ~1~
-
-{=================================== MISSION TABLE COUNT1 ===================================}
-
-[CM1_A:COUNT1]
-Mr. Vercetti? Hey. You bought the old print works?
-
-[CM1_B:COUNT1]
-Yeah, my old man used to work on these.
-
-[CM1_C:COUNT1]
-I was going to follow him in his trade, but...I lived a different life.
-
-[CM1_D:COUNT1]
-You planning on selling the old machinery, breaking it down?
-
-[CM1_E:COUNT1]
-I'm thinking we might print something - a newspaper, a magazine...
-
-[CM1_F:COUNT1]
-Oh, crap, sonny, low grade crap. I've always fancied printing money. It ain't too hard.
-
-[CM1_G:COUNT1]
-You know, I've been doing it on a small scale for years.
-
-[CM1_H:COUNT1]
-Really?
-
-[CM1_I:COUNT1]
-Sure. But we'd need some good quality plates.
-
-[CM1_J:COUNT1]
-Of course! There's a counterfeiting syndicate already operating in Florida.
-
-[CM1_K:COUNT1]
-A syndicate?
-
-[CM1_L:COUNT1]
-Yeah. Just rumors is all I've heard.
-
-[CM1_M:COUNT1]
-I know a man who's good with rumors...
-
-[CM1_N:COUNT1]
-I used to spend the evenings with him, cleaning the rollers...
-
-[CM1_2A:COUNT1]
-Look at the arse on that!
-
-[CM1_2B:COUNT1]
-Awright girl, it's your loss mate init!
-
-[CM1_2C:COUNT1]
-Awright me ol'china, how's it hangin'?
-
-[CM1_2D:COUNT1]
-What do you know about counterfeiting?
-
-[CM1_2E:COUNT1]
-Oh I'm fine Paul, how 'bout you?
-
-[CM1_2F:COUNT1]
-Come 'ere!
-
-[CM1_2G:COUNT1]
-Awright! Awright! Awright!! You're obviously a busy man.
-
-[CM1_2H:COUNT1]
-All I know about dodgy readys is the Triads supply the plates.
-
-[CM1_2I:COUNT1]
-They've got a shipping company down the docks,
-
-[CM1_2J:COUNT1]
-the boss man would know when the plates are coming in next!
-
-[CM1_2K:COUNT1]
-Thanks Paul.
-
-[CM1_2L:COUNT1]
-What's the matter with you, you maniac!
-
-[CM1_2M:COUNT1]
-Give me another drink, lively!
-
-[CM1_3:COUNT1]
-~g~You've been spotted!
-
-[CM1_5:COUNT1]
-~g~Go and meet Kent Paul at the Malibu Club!
-
-[CNT1_1:COUNT1]
-Who are you? Oooof! Aaiieee! Not the face! Not the face!
-
-[CM1_1:COUNT1]
-~g~Go to the Chartered Libertine Lines boat at the docks.
-
-[CM1_2:COUNT1]
-~g~The Shipping Officer will have the information that is required.
-
-[CNT1_2:COUNT1]
-Ok, I talk! I talk!
-
-[CM1_6:COUNT1]
-~g~Get the information back to the Print Works!
-
-{=================================== MISSION TABLE COUNT2 ===================================}
-
-[CNT2_B1:COUNT2]
-Alright, the courier's moving the plates from the docks today.
-
-[CNT2_B2:COUNT2]
-I'm gonna go intercept them, grab the plates, lose any heat, and make my way back here.
-
-[CNT2_B3:COUNT2]
-Now. Depending how well this goes,
-
-[CNT2_B4:COUNT2]
-we may have five minutes to print the money before the counterfeit syndicate finds us, or we may have all year.
-
-[CNT2_B5:COUNT2]
-Either way, I want green rolling off the presses five minutes after I get back. Got it?
-
-[CNT2_B6:COUNT2]
-Don't you worry Tommy. We'll be ready.
-
-[CNT2_B7:COUNT2]
-Me an'the boys will be around in the neighborhood case you need any heat taken care of.
-
-[CNT2_B8:COUNT2]
-All right, everybody cool? All right. I'll catch you later...
-
-[CNT2_01:COUNT2]
-~g~The counterfeit plates ~y~courier~g~ is arriving at the ~r~docks~g~ in a helicopter any second now.
-
-[CNT2_02:COUNT2]
-~r~The plates courier has fled in the helicopter.
-
-[CNT2_03:COUNT2]
-~r~The courier has arrived at his destination safely, you're too late!
-
-[CNT2_04:COUNT2]
-~r~You destroyed the plates in the explosion!
-
-[CNT2_05:COUNT2]
-~g~You have the counterfeit plates. Take them to the print works.
-
-[CNT2_06:COUNT2]
-~g~The courier has died and dropped the plates, get to them before anyone else.
-
-[CNT2_07:COUNT2]
-~g~One of the guards has picked up the plates, don't let 'em get away.
-
-[CNT2_08:COUNT2]
-~g~The ~r~courier~g~ with the plates has arrived at the docks.
-
-[CNT2_4:COUNT2]
-Private business. You're not welcome!
-
-[CNT2_09:COUNT2]
-PRINT WORKS ASSET COMPLETED
-
-[CNT2_10:COUNT2]
-~g~The print works will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[CNT2_11:COUNT2]
-~r~The plates are at the bottom of the sea!
-
-{=================================== MISSION TABLE CUBAN1 ===================================}
-
-[CUB1_A:CUBAN1]
-Si, men?
-
-[CUB1_B:CUBAN1]
-Hey, easy Papi, this man's for me. You, you the boy?
-
-[CUB1_C:CUBAN1]
-Oh yeh. You the boy. I think so, you know?
-
-[CUB1_D:CUBAN1]
-No. I don't think I do.
-
-[CUB1_E:CUBAN1]
-Oh yeah? You come here, tough guy.
-
-[CUB1_F:CUBAN1]
-You think you can take me on?
-
-[CUB1_G:CUBAN1]
-You think you can play stupid with me?
-
-[CUB1_H:CUBAN1]
-No, I think you're playing plenty stupid enough for both of us.
-
-[CUB1_I:CUBAN1]
-Hey, he call you dumb, son.
-
-[CUB1_J:CUBAN1]
-And I call him a little girl, Papi.
-
-[CUB1_K:CUBAN1]
-Look at him, all dressed up like that.
-
-[CUB1_L:CUBAN1]
-What is this, ladies night?
-
-[CUB1_M:CUBAN1]
-You some kind of tough guy, you dress like a woman?
-
-[CUB1_N:CUBAN1]
-You got on panties like a woman too, huh?
-
-[CUB1_O:CUBAN1]
-What you got against women? You prefer men, big boy?
-
-[CUB1_P:CUBAN1]
-I like women! I like all women! I love my mother, chico!
-
-[CUB1_Q:CUBAN1]
-Alright, alright, I'll take your word for it. Relax.
-
-[CUB1_R:CUBAN1]
-Can you drive, amigo?
-
-[CUB1_S:CUBAN1]
-Yeah... like a woman.
-
-[CUB1_T:CUBAN1]
-Very funny. I like you, big boy. Maybe you can help.
-
-[CUB1_U:CUBAN1]
-Maybe you can prove you a man. Huh?
-
-[CUB1_V:CUBAN1]
-Take out the boat.
-
-[CUB1_W:CUBAN1]
-Show me you got some big cojones,
-
-[CUB1_X:CUBAN1]
-and not some little bitty chiquita ones.
-
-[CUB1_02:CUBAN1]
-Ok man, treat her like a woman.
-
-[CUB1_03:CUBAN1]
-Not bad, you're a real man.
-
-[CUB1_04:CUBAN1]
-You got real big cojones, amigo.
-
-[CUB1_05:CUBAN1]
-Amigo, you a man, man.
-
-[CUB1_06:CUBAN1]
-Call yourself a man, man?
-
-[CUB1_07:CUBAN1]
-You a little scaredy kitten, baby boy, go cry to your mommy!
-
-[CUB1_09:CUBAN1]
-Man, you the man, man. I like you, man. I like you a lot.
-
-[CUB1_10:CUBAN1]
-Any time, man. 'cause you got cojones. And all my friends have big cojones.
-
-[CUB1_11:CUBAN1]
-~r~You Killed Rico!
-
-[CUB1_12:CUBAN1]
-Go through the first checkpoint to begin the test.
-
-[CUB1_14:CUBAN1]
-Get back in the boat!
-
-[CUB1_15:CUBAN1]
-~r~You are too slow, man.
-
-[CUB1_01:CUBAN1]
-Hey, I'm Rico. You the man with the big cojones?
-
-[CUB1_13:CUBAN1]
-~g~You have three minutes to get round the course.
-
-[CUB1_08:CUBAN1]
-You a big waste of space. Walk like a man, talk like a man, but you drive like an idiot.
-
-{=================================== MISSION TABLE CUBAN2 ===================================}
-
-[CUB2_A:CUBAN2]
-Un cafecito, por favor, Alberto..
-
-[CUB2_N:CUBAN2]
-No problema, Tommy.
-
-[CUB2_B:CUBAN2]
-Papi! Una grande problema!
-
-[CUB2_O:CUBAN2]
-Umberto my son, what happened?
-
-[CUB2_C:CUBAN2]
-The Haitians! I hate these Haitians!
-
-[CUB2_D:CUBAN2]
-They mess with me for the last time!
-
-[CUB2_E:CUBAN2]
-These Hai - these Haitians! We take 'em out!
-
-[CUB2_F:CUBAN2]
-Only we need some backup.
-
-[CUB2_H:CUBAN2]
-Amigo, you drive good!
-
-[CUB2_I:CUBAN2]
-For a woman. Right?
-
-[CUB2_J:CUBAN2]
-This is no time for joking!
-
-[CUB2_K:CUBAN2]
-Come on, drive for me again!
-
-[CUB2_L:CUBAN2]
-Take my boys over there, and then we'll take these Haitians down!
-
-[CUB2_01:CUBAN2]
-Not enough room, man, you need a bigger car.
-
-[CUB2_02:CUBAN2]
-We need reinforcements from the cafe!
-
-[CUB2_03:CUBAN2]
-~g~Get a car and pick up the Cubans from outside Robina's Cafe.
-
-[CUB2_04:CUBAN2]
-~g~Go and drop the Cubans off at the fight.
-
-[CUB2_05:CUBAN2]
-Take out that cowardly sniper!
-
-[CUB2_07:CUBAN2]
-They fight like girls! Take cover!
-
-[CUB2_09:CUBAN2]
-Sniper on the roof!
-
-[CUB2_11:CUBAN2]
-~r~You fool, we needed that car.
-
-[CUB2_12:CUBAN2]
-Hey amigo! Good to see you could make it!
-
-[CUB2_13:CUBAN2]
-Stinking nest of Haitians, we gonna kill 'em all!
-
-[CUB2_14:CUBAN2]
-CHAAAAAARGE!
-
-[CUB2_15:CUBAN2]
-Now, my brothers, CHAAARRRGGEE!!
-
-[CUB2_16:CUBAN2]
-Tommy, we have proved our manful bravery!
-
-[CUB2_17:CUBAN2]
-Let us steal the van full of drugs and make good our escape!
-
-[CUB2_18:CUBAN2]
-~g~Get a car and pick up the Cubans
-
-[CUB2_19:CUBAN2]
-We gonna fight like men!
-
-[CUB2_21:CUBAN2]
-Fight like men with huge cojones!
-
-[CUB2_22:CUBAN2]
-~g~ Finish off the rest of the Haitians so the Cubans can move forward.
-
-[CUB2_23:CUBAN2]
-~g~ Little Haiti will be swarming with Haitians trying to even the score with the Cubans. Watch your back.
-
-[CUB2_24:CUBAN2]
-~g~Return to Robina's Cafe with the Van and park it round the back.
-
-[CUB2_25:CUBAN2]
-KILL ALL THE HAITIANS!!
-
-[CUB2_G:CUBAN2]
-I lost a few hermanos already out there.
-
-[CUB2_M:CUBAN2]
-They mess with me, they mess with the biggest boy in town!
-
-{=================================== MISSION TABLE CUBAN3 ===================================}
-
-[CUB3_B:CUBAN3]
-Poppa, don't serve this snake in the straw.
-
-[CUB3_C:CUBAN3]
-You're two-faced, Tommy!
-
-[CUB3_E:CUBAN3]
-The Haitians, man. They're laughing at me!
-
-[CUB3_G:CUBAN3]
-They're laughing at me, Tommy. At me!
-
-[CUB3_I:CUBAN3]
-Nobody does whatever they like, Umberto, they do what you let them do.
-
-[CUB3_J:CUBAN3]
-What?
-
-[CUB3_K:CUBAN3]
-You want somebody taken care of?
-
-[CUB3_L:CUBAN3]
-I can handle it, but it's gonna cost you.
-
-[CUB3_M:CUBAN3]
-I know we're brothers and all, but this is business.
-
-[CUB3_N:CUBAN3]
-Tommy. You a real man. Businessman, a gentleman.
-
-[CUB3_O:CUBAN3]
-These Haitians. They have a load of product coming in off shore, really good stuff.
-
-[CUB3_P:CUBAN3]
-We take it, and we finish them.
-
-[CUB3_Q:CUBAN3]
-You take it, and I look after you. Like my brother. Like my son.
-
-[CUB3_R:CUBAN3]
-I think I prefer the cash to being bounced on your knee, amigo.
-
-[CUB3_01:CUBAN3]
-Hey Rico. Nice boat, you ready?
-
-[CUB3_03:CUBAN3]
-~g~Collect all the briefcases filled with the drugs and cash.
-
-[CUB3_04:CUBAN3]
-~g~Get the drugs and cash back to Umberto.
-
-[CUB3_05:CUBAN3]
-Si Tommy. Now you be a good shot today,
-
-[CUB3_06:CUBAN3]
-My boat, she no good full of holes, ok?
-
-[CUB3_07:CUBAN3]
-~g~ Go meet Rico. He'll drive you to the meet location.
-
-[CUB3_02:CUBAN3]
-~g~KILL ALL THE HAITIANS ON THE BOATS!!
-
-[CUB3_08:CUBAN3]
-Uh oh.. Pack of Cubans. We under attack!
-
-[CUB3_A:CUBAN3]
-Alberto. Una cafe, senor.
-
-[CUB3_D:CUBAN3]
-You're either two-faced, or you're a wimp, baby boy!
-
-[CUB3_F:CUBAN3]
-Easy, easy. What's your problem?
-
-[CUB3_H:CUBAN3]
-Umberto Robina! They're doing whatever they like!
-
-{=================================== MISSION TABLE CUBAN4 ===================================}
-
-[CUB4_A:CUBAN4]
-Hey, ladies. You know what I'm gonna do?
-
-[CUB4_B:CUBAN4]
-I'm gonna kill me a Haitian. And then?
-
-[CUB4_C:CUBAN4]
-And then I'm going to make love like a man.
-
-[CUB4_D:CUBAN4]
-You know that, chica? Something like this.
-
-[CUB4_E:CUBAN4]
-Loser!
-
-[CUB4_F:CUBAN4]
-Prick.
-
-[CUB4_G:CUBAN4]
-Hey, baby, I wouldn't touch you with a ten foot pole!
-
-[CUB4_H:CUBAN4]
-Umberto Robina, he likes the ladies! Not some goat in a skirt!
-
-[CUB4_I:CUBAN4]
-Tommy!! Tommy, I love you, I love you! Let's go!
-
-[CUB4_J:CUBAN4]
-Go where? Can't I get a cup of coffee first?
-
-[CUB4_K:CUBAN4]
-No time for coffee! Besides, I just had one.
-
-[CUB4_L:CUBAN4]
-We gonna take out the Haitians.
-
-[CUB4_M:CUBAN4]
-Tommy, how do you take out a snake?
-
-[CUB4_N:CUBAN4]
-You bite him in the ass! Hahaha!
-
-[CUB4_O:CUBAN4]
-Whatever you say, Umberto.
-
-[CUB4_P:CUBAN4]
-Tommy, you go and get us a little Haitian car.
-
-[CUB4_Q:CUBAN4]
-When you get it, come back and pick up my boy.
-
-[CUB4_R:CUBAN4]
-Pepe, and take him out to the Haitians.
-
-[CUB4_S:CUBAN4]
-Then, you go around to the Haitians processing plant, and you use their solvent as an explosive.
-
-[CUB4_T:CUBAN4]
-Boom! Bye bye!
-
-[CUB4_U:CUBAN4]
-Umberto, what about you?
-
-[CUB4_V:CUBAN4]
-Uhh... I'm going to stay behind, and watch over the cafe with Poppa.
-
-[CUB4_W:CUBAN4]
-He not feeling so good. You know?
-
-[CUB4_02:CUBAN4]
-~g~The bombs will be set with a 45 second timer.
-
-[CUB4_04:CUBAN4]
-~r~You've alerted the base, there is no way we will get in now!
-
-[CUB4_07:CUBAN4]
-Oy - the solvent is round the back, amigo.
-
-[CUB4_08:CUBAN4]
-Hola, amigos.
-
-[CUB4_09:CUBAN4]
-Bueno. Haitian Putas. Muerte.
-
-[CUB4_10:CUBAN4]
-Vamos.
-
-[CUB4_11:CUBAN4]
-Vamos indeed.
-
-[CUB4_12:CUBAN4]
-Hey, we need a Haitian gang car!
-
-[CUB4_13:CUBAN4]
-Oye, let's go find our muchachos!
-
-[CUB4_14:CUBAN4]
-Follow my compadres.
-
-[CUB4_15:CUBAN4]
-Ok, in you go...
-
-[CUB4_16:CUBAN4]
-I'm going to plant the bomb, cover me!
-
-[CUB4_17:CUBAN4]
-RUN!!
-
-[CUB4_18:CUBAN4]
-Man, this a nice part of town...
-
-[CUB4_19:CUBAN4]
-This place is a dump, man.
-
-[CUB4_20:CUBAN4]
-I had a beautiful woman... lived around this neighborhood.
-
-[CUB4_21:CUBAN4]
-You know, they do nice pizzas here.
-
-[CUB4_22:CUBAN4]
-Whoah, man. You drive like a crazy bitch!
-
-[CUB4_23:CUBAN4]
-You lost, man?
-
-[CUB4_24:CUBAN4]
-You've left Pepe behind, go and get him.
-
-[CUB4_03:CUBAN4]
-~g~Stay in the car until safely parked inside the compound.
-
-[CUB4_26:CUBAN4]
-~g~Take Pepe, head North into Little Haiti and steal a Voodoo car.
-
-[CUB4_27:CUBAN4]
-~g~Go and meet up with Rico and the other Cubans.
-
-[CUB4_28:CUBAN4]
-~g~Join the other Cubans at the Haitian Drugs Factory.
-
-[CUB4_29:CUBAN4]
-~g~Walk into each of the markers to plant a bomb at that location.
-
-[CUB4_30:CUBAN4]
-~g~After all three bombs are planted, get clear of the factory before it blows.
-
-[CUB4_31:CUBAN4]
-~g~Get clear of the factory!!
-
-[CUB4_32:CUBAN4]
-~g~Park the car at the blip and get out.
-
-[CUB4_06:CUBAN4]
-~r~You did not get far enough away from the base and we had to abort the explosion!
-
-{=================================== MISSION TABLE FINALE ===================================}
-
-[FIN1_01:FINALE]
-What's going on?
-
-[FIN1_02:FINALE]
-Tommy! Oh good, good. Listen, listen. Uh, listen,
-
-[FIN1_03:FINALE]
-I like fish. I love fish.
-
-[FIN1_04:FINALE]
-I love them as pets in bowls, or as food on a plate,
-
-[FIN1_05:FINALE]
-but as much as I love em, I don't want to sleep with them.
-
-[FIN1_06:FINALE]
-Okay, but right now your Italian brothers are coming from up there to fit me with some cement shoes, and I...
-
-[FIN1_07:FINALE]
-Shut up Ken. Sit down.
-
-[FIN1_08:FINALE]
-Lance, what the hell's going on?
-
-[FIN1_09:FINALE]
-It's your friends up north Tommy. They ain't too happy you capped their man.
-
-[FIN1_10:FINALE]
-They're coming down to see the business today.
-
-[FIN1_11:FINALE]
-They took longer than I thought...
-
-[FIN1_12:FINALE]
-Guys, we gotta make this final we gotta leave no doubt that this is my operation. Mine!
-
-[FIN1_13:FINALE]
-Ken, you get the first run of counterfeit cash and put three mil in briefcases.
-
-[FIN1_14:FINALE]
-Lance, you get the guys together...
-
-[FIN2_01:FINALE]
-Tommy!
-
-[FIN2_02:FINALE]
-What? No big hugs for your old buddy?
-
-[FIN2_03:FINALE]
-I've had fifteen years out of the loop,
-
-[FIN2_04:FINALE]
-I'm a bit rusty on family etiquette.
-
-[FIN2_05:FINALE]
-Always angry, eh Tommy.
-
-[FIN2_06:FINALE]
-Didn't I say your temper would get you into trouble, huh?
-
-[FIN2_07:FINALE]
-There's three mil in the cases...
-
-[FIN2_08:FINALE]
-How many was it? Ten? No, eleven men.
-
-[FIN2_09:FINALE]
-That's how you get to be called the Harwood Butcher! Heh-heh-heh!
-
-[FIN2_10:FINALE]
-You sent me to kill one man, ONE MAN. They knew I was coming Sonny...
-
-[FIN2_11:FINALE]
-Tommy, Tommy, watch your tone.
-
-[FIN2_12:FINALE]
-Anyone would think you blame me for that unfortunate set of circumstances.
-
-[FIN2_13:FINALE]
-Just take the money...
-
-[FIN2_14:FINALE]
-Get the damn cash.
-
-[FIN2_15:FINALE]
-You know, Tommy? I did what I could for you, I pulled strings, called in favors.
-
-[FIN2_16:FINALE]
-I was your friend, Tommy. I hoped you'd see sense, see what's good for business.
-
-[FIN2_17:FINALE]
-I trusted you, Tommy, and you disappointed me.
-
-[FIN2_18:FINALE]
-But at least someone in your chicken shit organization knows how to do business,
-
-[FIN2_19:FINALE]
-Isn't that right, Lance?
-
-[FIN2_20:FINALE]
-I'm sorry Tommy. This is Vice City. This is business.
-
-[FIN2_21:FINALE]
-You sold us out...
-
-[FIN2_22:FINALE]
-No. I sold YOU out, Tommy, I sold YOU out.
-
-[FIN2_23:FINALE]
-The real cash is upstairs in the safe.
-
-[FIN2_24:FINALE]
-Tommy, what was the big plan?
-
-[FIN2_25:FINALE]
-You think I'd just take the fake cash?
-
-[FIN2_26:FINALE]
-Save face and run away with my tail between my legs?!
-
-[FIN2_27:FINALE]
-No.
-
-[FIN2_28:FINALE]
-I just wanted to piss you off before I kill you.
-
-[FIN3_01:FINALE]
-Tommy?
-
-[FIN3_02:FINALE]
-Oh my god, Tommy! What happened?
-
-[FIN3_03:FINALE]
-What does it look like?
-
-[FIN3_04:FINALE]
-It looks like you ruined your suit!
-
-[FIN3_05:FINALE]
-and Tommy, that was a beautiful suit! Tommy, what on earth happened?
-
-[FIN3_06:FINALE]
-I had a disagreement with a business associate, you know how it is.
-
-[FIN3_07:FINALE]
-Tommy, I have a disagreement, I send them an angry letter.
-
-[FIN3_08:FINALE]
-Maybe I pee in their mailbox. I don't start World War III.
-
-[FIN3_09:FINALE]
-You know, maybe you should speak to my shrink...
-
-[FIN3_10:FINALE]
-That stupid prick, Lance...
-
-[FIN3_11:FINALE]
-Tommy. I never liked that guy, okay?
-
-[FIN3_12:FINALE]
-He's neurotic, he's insecure, he's self-centered - the guy's an asshole!
-
-[FIN3_13:FINALE]
-I'm glad you took him out!
-
-[FIN3_14:FINALE]
-I don't think we're gonna be getting any more heat from up north either...
-
-[FIN3_15:FINALE]
-...'cause there ain't no 'up north', anymore.
-
-[FIN3_16:FINALE]
-It's all down south now.
-
-[FIN3_17:FINALE]
-Wait, does that mean what I think it means..? Tommy, baby!
-
-[FIN3_18:FINALE]
-What do you think it means?
-
-[FIN3_19:FINALE]
-That we're in charge... I mean, that you're in charge. Oh, Tommy!
-
-[FIN3_20:FINALE]
-You know, Ken. I think this could be the beginning of a beautiful business relationship....
-
-[FIN3_21:FINALE]
-After all, you're a conniving, backstabbing, two-bit thief
-
-[FIN3_22:FINALE]
-and I'm a convicted psychotic killer and drug dealer.
-
-[FIN3_23:FINALE]
-I know. Ain't it just beautiful?
-
-[FIN_B1:FINALE]
-~g~Go and kill ~y~Lance Vance~g~ the backstabber.
-
-[FIN_B2:FINALE]
-~g~Kill ~p~Sonny~g~ and finish this once and for all.
-
-[FIN_B3:FINALE]
-~g~The Mafia are trying to steal your money. Defend the safe.
-
-[FIN_B4:FINALE]
-~g~You are close to death, get some ~w~health~g~ from downstairs.
-
-[FIN_B5:FINALE]
-~g~The Mafia is stealing your money, defend the ~c~safe
-
-[FIN_B7:FINALE]
-~r~The mafia has stolen all your money.
-
-[DEFSAFE:FINALE]
-~g~Get back to the safe and defend it.
-
-{=================================== MISSION TABLE FIRETRK ===================================}
-
-[F_PASS1:FIRETRK]
-Fire extinguished!
-
-[F_FAIL2:FIRETRK]
-~r~You're too late!
-
-[F_CANC:FIRETRK]
-~r~Fire Fighter mission cancelled!
-
-[F_EXTIN:FIRETRK]
-FIRES:
-
-[F_START:FIRETRK]
-~g~Burning vehicle reported in the ~a~ area. Go and extinguish the fire.
-
-[SIREN_1:FIRETRK]
-To turn on this vehicle's sirens tap the ~h~~k~~VEHICLE_HORN~ ~w~button.
-
-[SIREN_2:FIRETRK]
-To turn on this vehicle's sirens tap the ~h~~k~~VEHICLE_HORN~ ~w~button.
-
-[FIREPRO:FIRETRK]
-Fire Truck Mission level 12 complete. You are now completely fireproof!!
-
-[F_FAIL1:FIRETRK]
-Fire Fighter mission ended.
-
-[F_STAR1:FIRETRK]
-~g~Burning vehicles reported in the ~a~ area. Go and extinguish the fire.
-
-[SPRAY_4:FIRETRK] { reVC update }
-Use the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the water cannon. Aim using ~h~~k~~VEHICLE_TURRETLEFT~~w~ and ~h~~k~~VEHICLE_TURRETRIGHT~~w~.
-
-[SPRAY_1:FIRETRK] { reVC update }
-Use the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the water cannon. Aim using ~h~~k~~VEHICLE_TURRETLEFT~~w~ and ~h~~k~~VEHICLE_TURRETRIGHT~~w~.
-
-{=================================== MISSION TABLE GENERA1 ===================================}
-
-[GEN1_A:GENERA1]
-Mr. Vercetti!
-
-[GEN1_B:GENERA1]
-Colonel.
-
-[GEN1_D:GENERA1]
-No - thanks.
-
-[GEN1_E:GENERA1]
-I'm ashamed to admit that one of the causes of our mutual problem appears to have been the loose tongue of a man I used to trust.
-
-[GEN1_F:GENERA1]
-I've been carrying Gonzalez for years, but now his incompetence reaches new heights!
-
-[GEN1_G:GENERA1]
-It is only right that you kill Gonzalez...
-
-[GEN1_H:GENERA1]
-Did he do it? It's the money that's important to me.
-
-[GEN1_J:GENERA1]
-He will be at his Penthouse, half drunk probably. Use this...
-
-[GEN1_06:GENERA1]
-Eh! He's got a blade!
-
-[GEN1_07:GENERA1]
-Go away from me, you cheap bastard!
-
-[GEN1_08:GENERA1]
-Oh sweet Jesus, I've wasted my life and my looks!
-
-[GEN1_10:GENERA1]
-I'm going to shut that big mouth of yours!
-
-[GEN1_11:GENERA1]
-Stop running you fat slimeball!
-
-[GEN1_12:GENERA1]
-Stand still and I'll make it quick!
-
-[GEN1_13:GENERA1]
-Quit your squealing, no one cares, fatso!
-
-[GEN1_C:GENERA1]
-Thank you for coming. Please sit. Lobster?
-
-[GEN1_05:GENERA1]
-~g~Go and kill Gonzalez!
-
-[GEN1_09:GENERA1]
-I pay you double, Tommy, DOUBLE!
-
-[GEN1_18:GENERA1]
-~r~Gonzalez has made it safely to the Police Station!
-
-[GEN1_19:GENERA1]
-~g~The Vice City Police are on to you!
-
-[GEN1_20:GENERA1]
-~g~Get into a vehicle.
-
-[GEN1_21:GENERA1]
-~g~Get to the~h~ Pay 'N' Spray~g~ in~h~ Vice Point~g~.
-
-[GEN1_22:GENERA1]
-Drive your vehicle into the spray shop to lose your ~h~wanted level, ~h~repair and ~h~respray your vehicle. Cost - ~h~$100. This time it's free.
-
-[GEN1_01:GENERA1]
-When jogging, press and hold the~h~ ~k~~PED_FIREWEAPON~ ~w~button to prepare a melee attack.
-
-[GEN1_02:GENERA1]
-When jogging, press and hold the~h~ ~k~~PED_FIREWEAPON~ ~w~button to prepare a melee attack.
-
-[GEN1_03:GENERA1]
-When jogging, press and hold the~h~ ~k~~PED_FIREWEAPON~ ~w~button to prepare a melee attack.
-
-[GEN1_14:GENERA1]
-Release the~h~ ~k~~PED_FIREWEAPON~ ~w~button to make the attack.
-
-[GEN1_15:GENERA1]
-Release the~h~ ~k~~PED_FIREWEAPON~ ~w~button to make the attack.
-
-[GEN1_16:GENERA1]
-Release the~h~ ~k~~PED_FIREWEAPON~ ~w~button to make the attack.
-
-[GEN1_I:GENERA1]
-For this kindness I'll reward you, and then we will find your money together.
-
-[GEN1_23:GENERA1]
-~g~Go back through the doors to return to the ground floor.
-
-{=================================== MISSION TABLE GENERA2 ===================================}
-
-[COL2_B:GENERA2]
-This looks delicious, huh? Tapir snout?
-
-[COL2_C:GENERA2]
-Uhhh... no, no. No, thanks.
-
-[COL2_D:GENERA2]
-Tommy, you are like a pampas breeze that has freed me from the stench of corruption,
-
-[COL2_E:GENERA2]
-although, I must appear to mourn his passing and carry on with business as usual.
-
-[COL2_F:GENERA2]
-This isn't getting me any closer to my money...
-
-[COL2_G:GENERA2]
-Tommy, my friend, you are not in Liberty now. Here we do things differently.
-
-[COL2_H:GENERA2]
-I will continue with my enquiries but in the meantime I have a valuable deal to close.
-
-[COL2_I:GENERA2]
-A favor for a friend, Cortez?
-
-[COL2_J:GENERA2]
-You're a good friend, Tommy. I knew you would not let me down.
-
-[COL2_K:GENERA2]
-I need you to meet a courier who has obtained some valuable technology for me...
-
-[COL2_1:GENERA2]
-Ze rain, she is tres wet zis time of the year...
-
-[COL2_2:GENERA2]
-What?
-
-[COL2_3:GENERA2]
-Ah, comment?
-
-[COL2_4:GENERA2]
-Look, Cortez sent me. Just give me the damn chips.
-
-[COL2_5:GENERA2]
-Oh...d'accord.
-
-[COL2_B1:GENERA2]
-~g~Meet the courier at the mall.
-
-[COL2_B2:GENERA2]
-~g~The courier is fleeing with the guidance chips! Don't let him get away!
-
-[COL2_B3:GENERA2]
-~g~Take the guidance chips back to the Colonel.
-
-[COL2_F1:GENERA2]
-~r~You killed the contact!
-
-[COL2_F2:GENERA2]
-~g~The courier is dead. Grab the guidance chips.
-
-[COL2_6A:GENERA2]
-Freeze, imperialist American pig! Zat iz propertay of ze government Francais. 'And eet over!
-
-[BLIPHLP:GENERA2]
-The blip on the radar is a triangle pointing up, this shows that the target is higher than the player.
-
-[COL2_F3:GENERA2]
-~r~The guidance chips are at the bottom of the sea.
-
-[COL2_F4:GENERA2]
-~r~The courier has escaped! You failed to get the guidance chips.
-
-[COL2_A:GENERA2]
-Tommy! Come, join me.
-
-{=================================== MISSION TABLE GENERA3 ===================================}
-
-[GEN3_A:GENERA3]
-Thomas, I appreciate your coming.
-
-[GEN3_B:GENERA3]
-Forgive me for getting straight to business.
-
-[GEN3_C:GENERA3]
-Diaz has asked me to oversee a minor business transaction.
-
-[GEN3_D:GENERA3]
-Let's hope it goes better than last time, huh?
-
-[GEN3_E:GENERA3]
-Which is why I thought of you, my friend.
-
-[GEN3_F:GENERA3]
-I've dropped some protection at the multistory carpark.
-
-[GEN3_G:GENERA3]
-Pick it up - then go and watch over Diaz's men at the drop off.
-
-[GEN3_H:GENERA3]
-Gracias, amigo.
-
-[GEN3_1:GENERA3]
-Hogging all the action, I see...
-
-[GEN3_2:GENERA3]
-Look, you wanna do something other than just shadowing me everywhere? Why don't you come along and show me if you're any use.
-
-[GEN3_3:GENERA3]
-I might just do that. The name's Lance, by the way.
-
-[GEN3_5:GENERA3]
-You must be Cortez's new gun.
-
-[GEN3_6:GENERA3]
-Until more gainful opportunities arise.
-
-[GEN3_7:GENERA3]
-They'll be here any minute - we both better get a good vantage point...
-
-[GEN3_8:GENERA3]
-OK! I'll take the balcony, you get the roof across the yard.
-
-[GEN3_9:GENERA3]
-I live! Dickheads! And it's all down to you! What is your name?
-
-[GEN3_10:GENERA3]
-Tommy.
-
-[GEN3_11:GENERA3]
-I see you soon, amigo, I think!
-
-[GEN3_12:GENERA3]
-Shit. Where's that guy Lance?
-
-[GEN3_14:GENERA3]
-Tommy! I need some help here!
-
-[GEN3_15:GENERA3]
-Don't worry, I got you covered!
-
-[GEN3_16:GENERA3]
-Diaz's men are getting cut down!
-
-[GEN3_19:GENERA3]
-~g~Haitians! They're busting the deal! Protect Diaz!
-
-[GEN3_20:GENERA3]
-~g~The Colonel has arranged some firepower for you at the multistory carpark.
-
-[GEN3_22:GENERA3]
-Diaz's Health:
-
-[GEN3_23:GENERA3]
-~g~You've left Lance behind! Go and get him!
-
-[GEN3_25:GENERA3]
-~r~Lance died!
-
-[GEN3_28:GENERA3]
-~g~Take the briefcase back to Diaz.
-
-[GEN3_29:GENERA3]
-~g~Collect the briefcase and take it back to Diaz.
-
-[GEN3_30:GENERA3]
-~r~He got away with the money! Diaz will have your balls for this!
-
-[GEN3_33:GENERA3]
-~r~Check your fire!! You're supposed to be watching over Diaz and his men, not shooting them!
-
-[GEN3_34:GENERA3]
-~r~There ain't gonna be a deal if you shoot the Cubans!
-
-[GEN3_35:GENERA3]
-~g~He's stolen Diaz's money!
-
-[GEN3_36:GENERA3]
-~g~Grab the bike, chase him down and get Diaz's money back!
-
-[GEN3_37:GENERA3]
-~g~Here come the Cubans. Watch over the deal making sure Diaz and Lance are safe.
-
-[GEN3_38:GENERA3]
-~r~Diaz died! You failed to protect him!
-
-[GEN3_39:GENERA3]
-~g~Get to your vantage point up the stairs.
-
-[GEN3_44:GENERA3]
-~g~Go with Lance to the drop off and watch over Diaz.
-
-[GEN3_45:GENERA3]
-They'll be here any minute, we both better get a good vantage point.
-
-[GEN3_40:GENERA3] { reVC update }
-To ~h~shoot straight ahead ~w~on a ~h~motorbike ~w~press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button.
-
-[GEN3_41:GENERA3] { reVC update }
-To ~h~shoot straight ahead ~w~on a ~h~motorbike ~w~press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button.
-
-[GEN3_46:GENERA3]
-Sheeit!
-
-[GEN3_47:GENERA3]
-Tommy!
-
-[GEN3_48:GENERA3]
-Damn!
-
-[GEN3_49:GENERA3]
-lance's health:
-
-[GEN3_50:GENERA3]
-~r~You lost Diaz's money! Next time try not to reduce the money to ashes!
-
-[GEN3_51:GENERA3]
-More damned Haitians in a shitty van!
-
-[GEN3_54:GENERA3]
-Don't just stand there, you pricks, chase that Haitian dickhead down!
-
-[GEN3_55:GENERA3]
-Tommy! I'll stay here and watch over Diaz!
-
-[GEN3_18:GENERA3]
-~g~Here come the Cubans, keep close to Diaz. Watch over the deal making Diaz and Lance are safe.
-
-[GEN3_56:GENERA3]
-~r~Diaz was ambushed and died! Next time keep him in your sights!
-
-[GEN3_57:GENERA3]
-The Kruger is an assault rifle, which allows you to manually aim in 1st person.
-
-[GEN3_58:GENERA3]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~~w~ button to ~h~aim~w~ with an assault rifle.
-
-[GEN3_59:GENERA3]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~~w~ button to ~h~aim~w~ with an assault rifle.
-
-[GEN3_60:GENERA3]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button to ~h~fire~w~ an assault rifle.
-
-[GEN3_61:GENERA3]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button to ~h~fire~w~ an assault rifle.
-
-[GEN3_62:GENERA3]
-Press the ~h~~k~~PED_FIREWEAPON~~w~ button to ~h~fire~w~ an assault rifle.
-
-[GEN3_63:GENERA3]
-As well as performing drive-by's,~h~ motorbikes ~w~allow you to ~h~shoot forwards~w~.
-
-[GEN3_64:GENERA3] { reVC update }
-To shoot forwards while on a bike press the ~h~~k~~VEHICLE_FIREWEAPON~~w~ button.
-
-[GEN3_65:GENERA3] { reVC update }
-To shoot forwards while on a bike press the ~h~~k~~VEHICLE_FIREWEAPON~~w~ button.
-
-[GEN3_66:GENERA3] { reVC update }
-To shoot forwards while on a bike press the ~h~~k~~VEHICLE_FIREWEAPON~~w~ button.
-
-[GEN3_67:GENERA3]
-You must have a sub machine gun to shoot forwards on a motorbike.
-
-[GEN3_53:GENERA3]
-MY MONEY!
-
-[GEN3_52:GENERA3]
-These Haitians think they can take RICARDO DIAZ!?!
-
-{=================================== MISSION TABLE GENERA4 ===================================}
-
-[DETON:GENERA4]
-DETONATION:
-
-[COL4_3:GENERA4]
-CONVOY HALT!
-
-[COL4_6:GENERA4]
-WE'RE TAKING ENEMY FIRE!
-
-[COL4_7:GENERA4]
-Civilian, move away from the tank!
-
-[COL4_8:GENERA4]
-I SAID, move away, IMMEDIATELY!
-
-[COL4_9:GENERA4]
-DEFENSIVE POSITIONS!
-
-[COL4_11:GENERA4]
-Get that civilian out of our way soldier! - Sir, Yes Sir!
-
-[COL4_12:GENERA4]
-Civilian in the TANK! STOP HIM!
-
-[COL4_13:GENERA4]
-This is a military convoy, do not obstruct our route.
-
-[COL4_14:GENERA4]
-Drop him soldier.
-
-[COL4_15:GENERA4]
-Get that civilian vehicle out of our way! - Sir! Moving vehicle Sir!
-
-[COL4_17:GENERA4]
-Ok, PLATOON MOVE IT OUT!
-
-[COL4_18:GENERA4]
-Someone's on the tank Sir!
-
-[COL4_19:GENERA4]
-Go get some doughnuts, soldier! - Sir, Yes Sir!
-
-[COL4_20:GENERA4]
-Target acquired, Sir
-
-[COL4_21:GENERA4]
-SNIPER!
-
-[COL4_22:GENERA4]
-I'm getting out of here.
-
-[COL4_23:GENERA4]
-Objective completed! Platoon dismissed! - Lets go eat some doughnuts.
-
-[COL4_24:GENERA4]
-Security protocol Delta India Echo triggered! Vehicle self destruct initiated!
-
-[COL4_26:GENERA4]
-Prepare to die Communist scum!
-
-[COL4_B2:GENERA4]
-~r~The tank arrived at its destination safely!
-
-[COL4_B5:GENERA4]
-~r~The tank has been destroyed!
-
-[COL4_01:GENERA4]
-Diaz was pleased, and would like to meet you again.
-
-[COL4_02:GENERA4]
-Is that a good thing?
-
-[COL4_03:GENERA4]
-Of course! Although I'm starting to think that Diaz was responsible for our unfortunate loss...
-
-[COL4_04:GENERA4]
-What makes you say that?
-
-[COL4_05:GENERA4]
-One does not wave accusations at a man like Diaz - I'm merely thinking out loud...
-
-[COL4_06:GENERA4]
-No matter. I have a proposal that you could profit from...
-
-[COL4_07:GENERA4]
-I don't have time to run more errands, Cortez.
-
-[COL4_08:GENERA4]
-I would have thought a man with such dangerous debts would be hungry for opportunities. Please, Tommy, at least hear me out.
-
-[COL4_09:GENERA4]
-Go on...
-
-[COL410:GENERA4]
-I have a buyer for a piece of military hardware that is being taken through town. Pick it up for me...
-
-[COL411:GENERA4]
-and once you get it, I want you to call me immediately, then...
-
-[COL4_B4:GENERA4]
-~g~The tank is locked. Find a way to lure out the occupants.
-
-[COL4_1:GENERA4]
-What's up with the Gunner? - Don't know Sir!
-
-[COL4_4:GENERA4]
-Get topside soldier. - Sir, Yes Sir!
-
-[COL4_B1:GENERA4]
-~g~Go and acquire the piece of military hardware that is being taken through town.
-
-[COL4_B3:GENERA4]
-~g~Drop the tank off in the Colonels lockup before it self destructs.
-
-[COL4_B6:GENERA4]
-~g~Find a way to steal the tank!
-
-[COL4_B7:GENERA4]
-~g~Drive the tank into the garage.
-
-[COL4_B8:GENERA4]
-~g~Get out of the tank and walk out of the garage.
-
-{=================================== MISSION TABLE GENERA5 ===================================}
-
-[COL5A_1:GENERA5]
-Circumstances force a hasty departure, amigo.
-
-[COL5A_2:GENERA5]
-What's the problem?
-
-[COL5A_3:GENERA5]
-Ehh, the French want their missile technology back and after that last incident,
-
-[COL5A_4:GENERA5]
-I feel it is time to find safer harbors.
-
-[COL5A_5:GENERA5]
-Wouldn't it be safer to fly?
-
-[COL5A_6:GENERA5]
-I'd be dead before I reached check-in. Besides, I need to get my merchandise out of the country.
-
-[COL5A_7:GENERA5]
-Need another gun?
-
-[COL5A_8:GENERA5]
-You, my friend, are worth ten guns...
-
-[COL5B_1:GENERA5]
-Thomas, you have protected and served me well.
-
-[COL5B_2:GENERA5]
-But now you must leave us before we reach the open seas.
-
-[COL5B_4:GENERA5]
-Thank you, Colonel.
-
-[COL5B_5:GENERA5]
-One more request. While I'm away, could you keep an eye on Mercedes for me?
-
-[COL5B_6:GENERA5]
-I think she could look after herself, but sure, I'll keep an eye out.
-
-[COL5B_7:GENERA5]
-Gracias, amigo. Hasta luego.
-
-[COL5B_8:GENERA5]
-Adios, amigo.
-
-[COL5_7:GENERA5]
-Stop shooting at me!
-
-[COL5_9:GENERA5]
-Tommy, stop them shooting at me!
-
-[COL5_10:GENERA5]
-I have diplomatic immunity!
-
-[COL5_11:GENERA5]
-Don't shoot, I am a Colonel!
-
-[COL5_12:GENERA5]
-Thomas, kill them, my country will love you.
-
-[COL5_13:GENERA5]
-Tommy, we are being overrun by the French!
-
-[COL5_14:GENERA5]
-Tommy, everywhere I look, there are French men, I hate it!
-
-[COL5_15:GENERA5]
-Tommy, how are you?
-
-[COL5_16:GENERA5]
-This is for Piaf and Gainesbourg and your stupid french bread!
-
-[COL5_1:GENERA5]
-Port side! Port side!
-
-[COL5_2:GENERA5]
-They're attacking from starboard!
-
-[COL5_3:GENERA5]
-The bridge up ahead!
-
-[COL5_4:GENERA5]
-They've got a helicopter!
-
-[COL5_B1:GENERA5]
-~g~Defend the Colonel and his yacht at all costs.
-
-[COL5_B2:GENERA5]
-~g~Get up front and clear the route for the Colonel's yacht.
-
-[COL5_B3:GENERA5]
-~r~The Colonel is dead!
-
-[COL5_B4:GENERA5]
-~g~Shoot the attacking helicopter out of the sky.
-
-[COL5B_3:GENERA5]
-I will lower my personal launch. Keep it, my friend, a token of my gratitude.
-
-[COL5_B5:GENERA5]
-~g~Shoot down the helicopters, do not endanger the yacht.
-
-[COL5_B6:GENERA5]
-~g~You have run out of ammo, get more from the stairs on the top deck.
-
-[COL5_B7:GENERA5]
-~g~You are running low on health, get more from the stairs on the top deck.
-
-{=================================== MISSION TABLE HAIT1 ===================================}
-
-[HAM1_A:HAIT1]
-Hello? Hello?
-
-[HAM1_C:HAIT1]
-You must be the big bad man me grandaddy been chattin' 'bout.
-
-[HAM1_D:HAIT1]
-Tells me tings about you, you know, when he visits,
-
-[HAM1_E:HAIT1]
-and about the others who wait for you.
-
-[HAM1_F:HAIT1]
-Now, we all dead for long time, but you,
-
-[HAM1_G:HAIT1]
-I wouldn't want to be in your shoes, ha ha ha ha ha!
-
-[HAM1_H:HAIT1]
-I got a message to come here.
-
-[HAM1_I:HAIT1]
-Can you hear dem?
-
-[HAM1_J:HAIT1]
-Dem callin' your name, boy, must want you pretty bad, don't ya tink?
-
-[HAM1_K:HAIT1]
-Now you do old Auntie Poulet a turn, huh, maybe she help you.
-
-[HAM1_L:HAIT1]
-Maybe she can give you a little juju after all of dis.
-
-[HAM1_M:HAIT1]
-Give you some magic to give the law man the stink eye, hmmmmm?
-
-[HAM1_N:HAIT1]
-Look, this is all very, um... give me what?
-
-[HAM1_O:HAIT1]
-I,I, I think I've got the wrong address...
-
-[HAM1_P:HAIT1]
-Do me these tings, Tommy......
-
-[HAM1_Q:HAIT1]
-The Cubans, nasty proud foofoos, mmm,
-
-[HAM1_R:HAIT1]
-been making my lovely Haitian boys shake de heads.
-
-[HAM1_S:HAIT1]
-Now they told the policeman where me been stashing my powders.
-
-[HAM1_T:HAIT1]
-Dey tink it drugs, them stupid.
-
-[HAM1_U:HAIT1]
-Now be a good boy Tommy and go and get the powders for Auntie Poulet.
-
-[HAM1_V:HAIT1]
-Yeah, yeah, sure, sure.
-
-[HAM1_1:HAIT1]
-~g~The cops are closing in on our stashes. BE quick, and beat dem to it!
-
-[HAM1_2:HAIT1]
-~r~The cops got to the stash first!
-
-[HAM1_3:HAIT1]
-~g~Get this stuff back to the hideout!
-
-[HAM1_4:HAIT1]
-~g~Good! Now get the next one!
-
-[HAM1_6:HAIT1]
-~r~The Stash was destroyed, you idiot!
-
-[HAM1_7:HAIT1]
-~g~The cops have got our stash! Retrieve it before they get away!
-
-[HAM1_8:HAIT1]
-~g~The cops are on the way to pick up the stash, get a move on!
-
-[HAT_1A:HAIT1]
-~g~Don't move a muscle, chump!
-
-[HAM1_B:HAIT1]
-Come in, my dear, and rest your soul.
-
-{=================================== MISSION TABLE HAIT2 ===================================}
-
-[HAT2_B1:HAIT2]
-~g~Get to the van that contains the flying bombs.
-
-[HAT2_B2:HAIT2]
-Kill the Cubans...
-
-[HAT2_B4:HAIT2]
-...and destroy their boats!
-
-[HAT2_B5:HAIT2]
-~g~The Cubans are making a run for it. Don't let them get away!
-
-[HAT2_B6:HAIT2]
-~r~The RC plane is getting too far out of range!
-
-[HAT2_B7:HAIT2]
-~g~One of the Cubans in escaping in a car. Don't leave any witnesses!
-
-[HAT2_B8:HAIT2]
-~r~You have no RC planes left!
-
-[HAT2_B9:HAIT2]
-RC Planes:
-
-[HAT2_1:HAIT2]
-Oh, sorry, I - I must have the wrong address...
-
-[HAT2_2:HAIT2]
-Well, you might as well come in and rest your soles and have some tea.
-
-[HAT2_3:HAIT2]
-Do you have something there for me, Tommy?
-
-[HAT2_4:HAIT2]
-Yeah...
-
-[HAT2_5:HAIT2]
-This place feels familiar to me, uh - it's - a smell from childhood - a deja vu...
-
-[HAT2_6:HAIT2]
-Now Tommy, I'm going to whisper a lickle errand for you. Hear me well, aye?
-
-[HAT2_7:HAIT2]
-You look like someone I, I...
-
-[HAT2_8:HAIT2]
-The Cubans have fast boats they use to cross the seas with drugs.
-
-[HAT2_9:HAIT2]
-It is their livelihood.
-
-[HAT2_10:HAIT2]
-Me nephew bin making lickle flying bombs to take dem out.
-
-[HAT2_11:HAIT2]
-Blow de boats to coffin wood.
-
-[HAT2_12:HAIT2]
-Thanks for the tea.
-
-[HAT2_B3:HAIT2] { reVC update }
-Press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to drop a bomb. Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to cancel.
-
-{=================================== MISSION TABLE HAIT3 ===================================}
-
-[HAM3_A:HAIT3]
-Hello? Hello - uh..I'm looking for somebody around here...
-
-[HAM3_B:HAIT3]
-You looking hungry, Tommy.
-
-[HAM3_C:HAIT3]
-Do I know you?
-
-[HAM3_D:HAIT3]
-Hush now.
-
-[HAM3_E:HAIT3]
-One more ting an I can let you go, Tommy.
-
-[HAM3_F:HAIT3]
-My boys gone war wit dem Cuban boys.
-
-[HAM3_G:HAIT3]
-But no guns.
-
-[HAM3_H:HAIT3]
-Hmm, but de Cubans have a surprise comin'.
-
-[HAM3_I:HAIT3]
-While they fight in de streets, you take this rifle and kill dem in de hubbub.
-
-[HAM3_J:HAIT3]
-No one sees you, no one hear you.
-
-[HAM3_K:HAIT3]
-Now, Tommy, you do this for me, and you no longer tied to my apron strings.
-
-[HAM3_1:HAIT3]
-~g~We must win this battle. If all the Haitians die we lose.
-
-[HAM3_3:HAIT3]
-~g~I expect the Cubans to cheat so be on your guard.
-
-[HAM3_4:HAIT3]
-~r~You have been spotted! The mission is a failure!
-
-[HAM3_5:HAIT3]
-~g~You must kill the Cubans from a distance. You must not be seen.
-
-[HAM3_8:HAIT3]
-~g~Haitians are dying! Improve your aim.
-
-[HAM3_7:HAIT3]
-~g~Look Out! The Cubans have brought reinforcements. Kill them all!!
-
-[HAM3_2:HAIT3]
-~r~The Haitians have died!
-
-[HAM3_L:HAIT3]
-Kay auntie..
-
-{=================================== MISSION TABLE HOTEL ===================================}
-
-[INTB_A:HOTEL]
-Tommy! Tommy, it's been too long.
-
-[INTB_B:HOTEL]
-Hello Sonny.
-
-[INTB_C:HOTEL]
-I know, I know. You're just overwhelmed with emotion.
-
-[INTB_D:HOTEL]
-Fifteen years - seems like only yesterday.
-
-[INTB_E:HOTEL]
-I guess that's a perspective thing.
-
-[INTB_F:HOTEL]
-Hey, doing time for the family is no piece of cake,
-
-[INTB_G:HOTEL]
-but the family looks after its own, ok?
-
-[INTB_H:HOTEL]
-So, how'd the deal go down - you sitting on some white gold?
-
-[INTB_I:HOTEL]
-Look Sonny, we were set up. The deal was an ambush. Harry and Lee are dead.
-
-[INTB_J:HOTEL]
-You better be kidding me Tommy. Tell me you still got the money.
-
-[INTB_K:HOTEL]
-...no Sonny...I don't have the money.
-
-[INTB_L:HOTEL]
-That was my money, Tommy, MY MONEY!
-
-[INTB_M:HOTEL]
-You better not be screwing me Tommy because you know I'm not a man to be screwed with!
-
-[INTB_N:HOTEL]
-Wait Sonny.
-
-[INTB_O:HOTEL]
-You have my personal assurance that I'm going to get your money back and the drugs.
-
-[INTB_P:HOTEL]
-And I'm gonna mail you the dicks of those responsible.
-
-[INTB_Q:HOTEL]
-Hey, I already know that. You're not a fool Tommy, but I warn you, neither am I.
-
-[INTB_R:HOTEL]
-If it was anybody else you'd be DEAD already.
-
-[INTB_S:HOTEL]
-But because it's you, because we got history, I'm gonna let you handle this.
-
-[INTB_T:HOTEL]
-Look, Sonny, you got my word.
-
-[INTB_U:HOTEL]
-I'll be in touch.
-
-{=================================== MISSION TABLE ICECRE1 ===================================}
-
-[ICC1_1:ICECRE1]
-~g~Use your Ice Cream van distribute drugs around Vice City.
-
-[ICC1_3:ICECRE1]
-~g~You receive money for each transaction you make, but the more transactions you make the more police attention you get.
-
-[ICC1_4:ICECRE1]
-~g~There aren't any customers in this area try another one.
-
-[ICC1_5:ICECRE1]
-Deals done:
-
-[ICC1_6:ICECRE1]
-~g~Use the Mr. Whoopee van to distribute Cherry Poppers product around Vice City.
-
-[ICC1_7:ICECRE1]
-~g~You receive money for each transaction you make, but the more transactions you make the more police attention you get.
-
-[ICC1_9:ICECRE1]
-~g~Local gangs will not appreciate you doing business on their turf so expect hostility if you do so.
-
-[ICC1_10:ICECRE1]
-~g~You made ~1~ deals!
-
-[ICC1_11:ICECRE1]
-~g~You made ~1~ deal!
-
-[ICC1_12:ICECRE1]
-PROPERTY ACQUIRED!
-
-[ICC1_13:ICECRE1]
-~r~You didn't make any deals!
-
-[ICC1_14:ICECRE1]
-ICECREAM ASSET COMPLETED
-
-[ICC1_15:ICECRE1]
-~g~The icecream factory will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[ICC1_2:ICECRE1]
-~g~Park your van and press the ~h~~k~~VEHICLE_HORN~~w~ to play your ice cream jingle to notify customers that your ready for business.
-
-[ICC1_16:ICECRE1]
-~g~Use your Mr. Whoopee van to distribute Cherry Poppers product around Vice City.
-
-[ICC1_8:ICECRE1]
-~g~To make a transaction, ~h~park your van ~g~and press the ~h~~k~~VEHICLE_HORN~ ~g~button to play the ice cream jingle to attract customers.
-
-[ICE_AT1:ICECRE1]
-ICECREAM FACTORY ASSET COMPLETED
-
-[ICE_AT2:ICECRE1]
-~g~The Cherry Popper factory will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[ICC1_17:ICECRE1]
-Distribution mission over
-
-[ICC1_18:ICECRE1]
-Total ice cream sales: $~1~
-
-[ICC1_19:ICECRE1]
-Total deals done: ~1~
-
-{=================================== MISSION TABLE ICECUT ===================================}
-
-[ICC1_A:ICECUT]
-Who are you?
-
-[ICC1_B:ICECUT]
-Your new owner.
-
-[ICC1_C:ICECUT]
-Were you now, or at any time, a child?
-
-[ICC1_D:ICECUT]
-What are you talking about?
-
-[ICC1_E:ICECUT]
-Were you a child?
-
-[ICC1_F:ICECUT]
-Yes! Calm down! What's wrong with you?
-
-[ICC1_G:ICECUT]
-I knew it. A child.
-
-[ICC1_H:ICECUT]
-A dirty, stinking, sniveling, snotting, vile, puking, crying little baby!
-
-[ICC1_K:ICECUT]
-Ow! Calm down.
-
-[ICC1_L:ICECUT]
-I HATE babies, and I hate children.
-
-[ICC1_N:ICECUT]
-Enough already!
-
-[ICC1_P:ICECUT]
-You make soft ice cream, okay? It's purely for kids.
-
-[ICC1_Q:ICECUT]
-What kind of psycho are you?
-
-[ICC1_R:ICECUT]
-Just so I understand this, why make children happy if you hate them?
-
-[ICC1_S:ICECUT]
-Oh, you stupid, sniveling, snotty-
-
-[ICC1_T:ICECUT]
-Shut up!
-
-[ICC1_U:ICECUT]
-- Brat!
-
-[ICC1_V:ICECUT]
-The ice cream is a front.
-
-[ICC1_W:ICECUT]
-We distribute other, non-dairy products.
-
-[ICC1_X:ICECUT]
-And if I see a kid, I put him to good use.
-
-[ICC1_Y:ICECUT]
-Don't I, kiddies? Yes - yes, I do. Mummy doesn't love you.
-
-[ICC1_Z:ICECUT]
-She HATES you!
-
-[ICC1_ZA:ICECUT]
-PROPERTY ACQUIRED!
-
-[ICC1_M:ICECUT]
-They're dirty, sniveling, snotting, vile, puking little..
-
-[ICC1_I:ICECUT]
-A baby.. an awful, horrible, disgusting little boo hoo.
-
-[ICC1_J:ICECUT]
-Mommy doesn't love you. You little shit!
-
-{=================================== MISSION TABLE INTRO ===================================}
-
-[INT1_A:INTRO]
-Tommy Vercetti...Huh! shit.
-
-[INT1_B:INTRO]
-Didn't think they'd ever let him out.
-
-[INT1_C:INTRO]
-He kept his head down, helps people forget.
-
-[INT1_D:INTRO]
-People will remember soon enough.
-
-[INT1_E:INTRO]
-When they see him walking down the streets of their neighborhoods.
-
-[INT1_F:INTRO]
-It will be bad for business.
-
-[INT1_G:INTRO]
-Well, what are we gonna do, Sonny?
-
-[INT1_H:INTRO]
-We treat him like an old friend and keep him busy out of town. OK?
-
-[INT1_I:INTRO]
-We been talking about expanding down South, right?
-
-[INT1_J:INTRO]
-Vice City is twenty-four carat gold these days.
-
-[INT1_K:INTRO]
-The Colombians, the Mexicans, hell,
-
-[INT1_L:INTRO]
-even those Cuban refugees are cutting themselves a piece of some nice action.
-
-[INT1_M:INTRO]
-But it's all drugs, Sonny,
-
-[INT1_N:INTRO]
-None of the families will touch that shit!
-
-[INT1_O:INTRO]
-Times are changing.
-
-[INT1_P:INTRO]
-The families can't keep their backs turned while our enemies reap the rewards.
-
-[INT1_Q:INTRO]
-So, we send someone down to do the dirty work for us...
-
-[INT1_R:INTRO]
-and cut ourselves a nice quiet slice. OK?
-
-[INT1_S:INTRO]
-Who's our contact down there?
-
-[INT1_T:INTRO]
-Ken Rosenberg, schmuck of a lawyer.
-
-[INT1_U:INTRO]
-How's he gonna hold Vercetti's leash?
-
-[INT1_V:INTRO]
-We don't need him to.
-
-[INT1_W:INTRO]
-We just set him loose in Vice City,
-
-[INT1_X:INTRO]
-we give him a little cash to get started. OK?
-
-[INT1_Y:INTRO]
-Give it a few months.
-
-[INT1_Z:INTRO]
-Then we go down,
-
-[INT1_A1:INTRO]
-pay him a little visit, right?
-
-[INT1_A2:INTRO]
-see how he's doing.
-
-[INT2_A:INTRO]
-Hey, hey, guys! It's, uh, Ken Rosenberg here! Hey! Heh, heh, hey, great, hey!
-
-[INT2_B:INTRO]
-Well, uh, I'm gonna drive you guys to the meet, okay?
-
-[INT2_C:INTRO]
-Now, I've talked to the suppliers and they are very, huh-ha,
-
-[INT2_D:INTRO]
-keen to start a business relationship, so, uh,
-
-[INT2_E:INTRO]
-if all goes well, we should, uh,
-
-[INT2_F:INTRO]
-be doing very nicely for ourselves, which is, y'know...
-
-[INT2_G:INTRO]
-good..
-
-[INT2_H:INTRO]
-Okay, so. They're brothers, okay.
-
-[INT2_I:INTRO]
-One operates the uh, the business,
-
-[INT2_J:INTRO]
-and the other one does the flying.
-
-[INT2_K:INTRO]
-Now they operate out of Mexico,
-
-[INT2_M:INTRO]
-They own a farm in Panama.
-
-[INT2_N:INTRO]
-Okay, all right, listen -
-
-[INT2_O:INTRO]
-you guys, when we get there should I stay in the car,
-
-[INT2_P:INTRO]
-or do you guys want me to come in with you guys?
-
-[INT2_Q:INTRO]
-No. Stay in the car.
-
-[INT2_R:INTRO]
-You know what, I thought about it,
-
-[INT2_S:INTRO]
-I'm gonna watch the car.
-
-[INT3_A:INTRO]
-Ok, that's them in the chopper.
-
-[INT3_B:INTRO]
-All right, here's the deal.
-
-[INT3_C:INTRO]
-They want a straight exchange on open ground.
-
-[INT3_D:INTRO]
-All right? Ok. Stay tight, let's go.
-
-[INT3_E:INTRO]
-All right. Take it easy, now.
-
-[INT3_F:INTRO]
-I'm right here. The cars running, baby!
-
-[INT3_G:INTRO]
-Got it?
-
-[INT3_H:INTRO]
-100% pure grade-A Colombian, my friend.
-
-[INT3_I:INTRO]
-The greens?
-
-[INT3_J:INTRO]
-Tens and twenties...used.
-
-[INT3_L:INTRO]
-Go on, get out of here! Drive!
-
-[INT4_A:INTRO]
-Screwed! We're screwed!
-
-[INT4_B:INTRO]
-This is soo typical,
-
-[INT4_C:INTRO]
-I poke my head out of the gutter for one freakin' second,
-
-[INT4_D:INTRO]
-and fate shovels shit in my face!
-
-[INT4_E:INTRO]
-Well, screw you!
-
-[INT4_F:INTRO]
-Shut your face and quit complaining! You're alive, aren't ya'?
-
-[INT4_G:INTRO]
-Drop me right up here.
-
-[INT4_H:INTRO]
-Go dump the car, then go get some sleep.
-
-[INT4_I:INTRO]
-I'll drop by your office tomorrow and we can start sorting this mess out.
-
-[INT4_J:INTRO]
-OK, that's a good idea, I'll get some sleep.
-
-[INT4_K:INTRO]
-What are you gonna do?
-
-[INT4_L:INTRO]
-Make my way back to my hotel,
-
-[INT4_M:INTRO]
-clear my head, and figure this crap out.
-
-[INT4_N:INTRO]
-OK.
-
-[INTRO1:INTRO]
-I poke my head out of the gutter for one freakin' second and fate shovels shit in my face!
-
-[INTRO2:INTRO]
-Go get some sleep.
-
-[INTRO3:INTRO]
-What are you gonna do?
-
-[INTRO4:INTRO]
-I'll drop by your office tomorrow and we can start sorting this mess out.
-
-[INT3_K:INTRO]
-I think we have a deal, my friend. HA HA!
-
-[INT3_M:INTRO]
-Let me see it.
-
-[INT2_L:INTRO]
-no, no, no, wait...
-
-[INT3_N:INTRO]
-Oh Shit!
-
-{=================================== MISSION TABLE KENT1 ===================================}
-
-[KPM1_A:KENT1]
-Awright mush, I'm gonna save your Vera, mate.
-
-[KPM1_B:KENT1]
-What the hell are you talking about?
-
-[KPM1_C:KENT1]
-You know that wanker Diaz, the Bugle Master.
-
-[KPM1_D:KENT1]
-He's got your boy, Lance. Word is your mate tried to jump him...
-
-[KPM1_E:KENT1]
-didn't jump high enough if you know what I mean.
-
-[KPM1_F:KENT1]
-Where did he take him? In plain English?
-
-[KPM1_G:KENT1]
-Keep your barnet on! They got him across town at the junkyard.
-
-[KPM1_H:KENT1]
-Bloody hell....you nutter!
-
-[KPM1_2:KENT1]
-~r~You were supposed to get Lance out alive!
-
-[KPM1_3:KENT1]
-LANCE'S HEALTH:
-
-[RESC_1:KENT1]
-You ok to use a gun?
-
-[RESC_2:KENT1]
-Sure...I guess...nice to see you, too.
-
-[RESC_3:KENT1]
-Let's get out of here.
-
-[RESC_4:KENT1]
-There goes my careful planning blown to shit, thanks to you. You screwed up real good, Lance!
-
-[RESC_5:KENT1]
-He killed my brother. What do you expect me to do, mow his lawns?
-
-[RESC_6:KENT1]
-We're gonna have to take out that prick Diaz before he takes us out.
-
-[RESC_7:KENT1]
-Get patched up and meet me on the bridge to Star Island, ok?
-
-[RESC_8:KENT1]
-Ok, I got you.
-
-[KPM1_1:KENT1]
-~g~Lance is being held at the junk yard, Go and rescue him!
-
-[KPM1_4:KENT1]
-~g~Get Lance to the hospital!
-
-[M_PASSN:KENT1]
-MISSION PASSED!
-
-[KPM1_5:KENT1]
-~g~Diaz's guys are after you! Get Lance to the hospital.
-
-{=================================== MISSION TABLE KICKSTT ===================================}
-
-[KICK1_2:KICKSTT]
-~r~You did not get back to the bike quickly enough!
-
-[KICK1_7:KICKSTT]
-~r~You have wrecked the bike!
-
-[KICK1_8:KICKSTT]
-~g~Get on the bike!
-
-[KICK1_T:KICKSTT]
-TIME TAKEN:
-
-[KICKTM:KICKSTT]
-~b~EVENT TIME: ~1~:~1~
-
-[KICKTM2:KICKSTT]
-~b~EVENT TIME: ~1~:0~1~
-
-[GETBIKE:KICKSTT]
-~g~You have ~1~ seconds to return to a dirtbike before the mission ends.
-
-[KICK1_1:KICKSTT]
-~g~Complete the course as quickly as possible.
-
-[KICK1_6:KICKSTT]
-~g~Well done!
-
-[KICK_10:KICKSTT]
-~g~Use the Sanchez to complete the course by passing through all of the checkpoints.
-
-[KICK_12:KICKSTT]
-~r~You bottled it!
-
-[KICK_13:KICKSTT]
-~r~You have taken too long!
-
-[KICK_11:KICKSTT]
-~g~To leave the mission stand in the ~q~pink marker~g~ on foot.
-
-{=================================== MISSION TABLE LAWYER1 ===================================}
-
-[LAW1_A:LAWYER1]
-Go get some sleep, he says -
-
-[LAW1_B:LAWYER1]
-- I have been sitting in this chair all night with the lights off drinking coffee!
-
-[LAW1_C:LAWYER1]
-This is a disaster. We are so screwed, man!
-
-[LAW1_D:LAWYER1]
-These gorillas, listen to me, are gonna come down here and rip my head off. It's ridiculous!
-
-[LAW1_E:LAWYER1]
-I did NOT go to law school for this! Ok, now what the hell are we gonna do?
-
-[LAW1_F:LAWYER1]
-Shut up, sit down, relax. I'll tell you what we're gonna do.
-
-[LAW1_G:LAWYER1]
-You're gonna find out who took our cocaine - and then, I'm gonna kill them.
-
-[LAW1_H:LAWYER1]
-That's a good idea. That's a GREAT idea. Let me think, let me think, let me think.
-
-[LAW1_I:LAWYER1]
-- OH! There's this retired Colonel, Colonel Juan Garcia Cortez.
-
-[LAW1_J:LAWYER1]
-He's the one that helped me set up this deal
-
-[LAW1_K:LAWYER1]
-well away from Vice City's established thugs. Ok?
-
-[LAW1_L:LAWYER1]
-Now, listen. He's holding his party out in the bay on his expensive yacht
-
-[LAW1_M:LAWYER1]
-and all of Vice City's big players are gonna be there. OK?
-
-[LAW1_N:LAWYER1]
-I have an invite, of course I have an invite,
-
-[LAW1_O:LAWYER1]
-but there's no way that I'm going out there, sticking my head out the door - no way! Not gonna happen.
-
-[LAW1_P:LAWYER1]
-I told you, shut up! I'll go myself...
-
-[LAW1_Q:LAWYER1]
-Ho - whoa, whoa! Hey, I like 1978 too, but, y'know, this isn't gonna be a beer and strippers do.
-
-[LAW1_R:LAWYER1]
-I mean, no offense, but I think that you might turn heads on the runway for the wrong reasons.
-
-[LAW1_S:LAWYER1]
-What's wrong with the way I'm dressed?
-
-[LAW1_T:LAWYER1]
-Ok, look, here. Stop by Rafael's, tell him I sent 'ya. He'll make you look respectable.
-
-[LAW1_U:LAWYER1]
-OK, go, c'mon...
-
-[LAWP_1:LAWYER1]
-Buenas noches.
-
-[LAWP_2:LAWYER1]
-I understand you are here on the behalf of Mr. Rosenberg,
-
-[LAWP_3:LAWYER1]
-I hope any recent problems have not affected his health, or uh,
-
-[LAWP_4:LAWYER1]
-mental well being, Mr...uh?
-
-[LAWP_5:LAWYER1]
-Vercetti. He's just got a touch of...agoraphobia.
-
-[LAWP_6:LAWYER1]
-Excellent, excellent. And you?
-
-[LAWP_7:LAWYER1]
-I just want my merchandise.
-
-[LAWP_8:LAWYER1]
-Ah. It's an unfortunate set of circumstances for all involved.
-
-[LAWP_9:LAWYER1]
-Of course I have initiated my own lines of inquiry,
-
-[LAWP_10:LAWYER1]
-but such a delicate matter will take time.
-
-[LAWP_11:LAWYER1]
-Perhaps we will talk later.
-
-[LAWP_12:LAWYER1]
-Meanwhile, let me introduce you to my daughter,
-
-[LAWP_13:LAWYER1]
-Mercedes!
-
-[LAWP_14:LAWYER1]
-Caramia, could you look after our guest while I attend to my necessary obligations?
-
-[LAWP_15:LAWYER1]
-Of course, daddy.
-
-[LAWP_16:LAWYER1]
-Please excuse me.
-
-[LAWP_17:LAWYER1]
-Mercedes!?
-
-[LAWP_18:LAWYER1]
-You try living with it.
-
-[LAWP_19:LAWYER1]
-Anyway, let me point out some of our more distinguished guests...
-
-[LAWP_20:LAWYER1]
-That's our congressman Alex Shrub with rising silicone star Candy Suxxx...
-
-[LAWP_21:LAWYER1]
-And have you met my lovely wife Laura? No?
-
-[LAWP_22:LAWYER1]
-Well, unfortunately she's in Alabama. This is Candy.
-
-[LAWP_23:LAWYER1]
-And over there we have the Vice City Mambas' star tight end, BJ -
-
-[LAWP_24:LAWYER1]
-always the charmer.
-
-[LAWP_25:LAWYER1]
-I blocked down on him and then I put him in a wheelchair!
-
-[LAWP_26:LAWYER1]
-Haha, that is good!
-
-[LAWP_27:LAWYER1]
-Well now, I'm looking at some prime real estate property.
-
-[LAWP_28:LAWYER1]
-And that poolside amphibian is Jezz Torrent,
-
-[LAWP_29:LAWYER1]
-lead singer with Love Fist.
-
-[LAWP_30:LAWYER1]
-Can I tell yous - do you know how they play ping-pong in Thailand?
-
-[LAWP_31:LAWYER1]
-Let me tell you's,
-
-[LAWP_32:LAWYER1]
-it does not involve a paddle, if you know what I mean!
-
-[LAWP_33:LAWYER1]
-Impotent.
-
-[LAWP_34:LAWYER1]
-And the chatty trio.
-
-[LAWP_35:LAWYER1]
-That sleeping sweat gland is Papa's right hand gimp, Gonzalez
-
-[LAWP_36:LAWYER1]
-and the other two are Pastor Richards
-
-[LAWP_37:LAWYER1]
-and pseudo intellectual film director, Steve Scott.
-
-[LAWP_38:LAWYER1]
-...passion with the nympho invaders,
-
-[LAWP_39:LAWYER1]
-when the giant shark comes in and
-
-[LAWP_40:LAWYER1]
-just bites their dicks off!
-
-[LAWP_41:LAWYER1]
-Ha now, you never saw anything like that before, have you?
-
-[LAWP_42:LAWYER1]
-Colonel!
-
-[LAWP_43:LAWYER1]
-your parties as ever are a triumph, hahahaha!
-
-[LAWP_44:LAWYER1]
-I can only apologize for my late arrival.
-
-[LAWP_45:LAWYER1]
-Ah, de nada amigo. How do we find you?
-
-[LAWP_46:LAWYER1]
-Our business is very trying - barbarians at the gates.
-
-[LAWP_47:LAWYER1]
-A time for rewarding one's friends and liquidating one's enemies, amigo.
-
-[LAWP_48:LAWYER1]
-Who's the loudmouth?
-
-[LAWP_49:LAWYER1]
-Ricardo Diaz. He's Mr. Coke.
-
-[LAWP_50:LAWYER1]
-Mercedes!
-
-[LAWP_51:LAWYER1]
-Oh, I was just taking my friend back into town.
-
-[LAWP_52:LAWYER1]
-Another time, Ricardo!
-
-[LAWP_53:LAWYER1]
-Let's get out of here.
-
-[LAWP_54:LAWYER1]
-Actually, take me to the Pole Position club.
-
-[LAW1_2:LAWYER1]
-~g~Get to the Colonel's boat.
-
-[LAW1_4:LAWYER1]
-~r~You killed the Colonel's daughter!
-
-[LAW1_5:LAWYER1]
-Will you be working for my father?
-
-[LAW1_6:LAWYER1]
-Maybe.
-
-[LAW1_7:LAWYER1]
-Do you mind me resting my hand in your lap?
-
-[LAW1_8:LAWYER1]
-Maybe...
-
-[LAW1_9:LAWYER1]
-It's so difficult having a rich and powerful father. Vamos.
-
-[LAW1_10:LAWYER1]
-See you around, handsome!
-
-[LAW1_11:LAWYER1]
-I'm sure you will.
-
-[LAW1_12:LAWYER1]
-Hmmmm...nice bike.
-
-[LAW1_13:LAWYER1]
-No! My Bike!
-
-[LAW1_3:LAWYER1]
-~g~Take the Colonel's daughter to the Pole Position club.
-
-[HELP20:LAWYER1]
-Follow the ~h~T-shirt~w~ blip on the radar to find Rafael's.
-
-[LAW1_14:LAWYER1]
-Wow, I like, really dig your motorcycle.
-
-[LAW1_15:LAWYER1]
-Yeah babe, just picked it up from Howlin' Pete's
-
-{=================================== MISSION TABLE LAWYER2 ===================================}
-
-[LAW2_A:LAWYER2]
-Ah! Well, I hope you're having a good time. Because I'm going out of my mind with worry here. What did you find out?
-
-[LAW2_B:LAWYER2]
-That there are more criminals in this town than in prison. We need a lead from the streets...
-
-[LAW2_C:LAWYER2]
-Ok, let me think, let me think, let me think -
-
-[LAW2_D:LAWYER2]
-- AH! I've got it!
-
-[LAW2_E:LAWYER2]
-Ok, There's this limey, some music industry slimeball,
-
-[LAW2_F:LAWYER2]
-goes by the name of Kent Paul.
-
-[LAW2_G:LAWYER2]
-Anyway, he's got his nose so far up most of Vice City's ass
-
-[LAW2_I:LAWYER2]
-it's this guy, all right? He's always at The Malibu.
-
-[LAW2_J:LAWYER2]
-I'll go pay him a visit.
-
-[LAW2B_A:LAWYER2]
-Where'd you pop up from?
-
-[LAW2B_B:LAWYER2]
-I've been looking for a bird like you for ages, mate...
-
-[LAW2B_C:LAWYER2]
-Kent Paul, mate. Yeah, I'm the guvnor 'round here.
-
-[LAW2B_D:LAWYER2]
-I'm looking for some English guy...
-
-[LAW2B_E:LAWYER2]
-I sort things out, you know what I mean?
-
-[LAW2B_F:LAWYER2]
-I'll treat you. Whatever you want, I'll get you, girl.
-
-[LAW2B_G:LAWYER2]
-Don't you worry about a thing, mate.
-
-[LAW2B_H:LAWYER2]
-Get lost, honey.
-
-[LAW2B_I:LAWYER2]
-Oi oi oi oi oi!
-
-[LAW2B_J:LAWYER2]
-You Kent Paul? I'm a friend of Rosenberg's...
-
-[LAW2B_K:LAWYER2]
-Rosenberg...Rosenberg...Oh, that bonkers ambulance chaser!
-
-[LAW2B_L:LAWYER2]
-That guy could defend an innocent man all the way to death row!
-
-[LAW2B_M:LAWYER2]
-Give us another drink, bruv.
-
-[LAW2B_N:LAWYER2]
-Everybody's a comedian.
-
-[LAW2B_O:LAWYER2]
-Listen to me, I'm missing twenty keys and a lot of cash...
-
-[LAW2B_P:LAWYER2]
-Drugs, mate? It's a mug's game.
-
-[LAW2B_Q:LAWYER2]
-What do you know about it?
-
-[LAW2B_R:LAWYER2]
-Oi oi! What I was coming to was,
-
-[LAW2B_S:LAWYER2]
-there's some chef-cum-trumpetshifter who deals out kitchen of a hotel on Ocean Drive.
-
-[LAW2B_T:LAWYER2]
-He's been looking real pleased with himself lately. You could go and check him out...?!
-
-[LAW2B_U:LAWYER2]
-I will - and I'll be seeing you around.
-
-[LAW2B_V:LAWYER2]
-Yeah, that's right. Go on - walk away, you mug. I'll knock you spark out!
-
-[LAW2B_W:LAWYER2]
-Give me a drink - and where's that slut!
-
-[LAW2C_A:LAWYER2]
-Oh, way to go, tough guy. Beat him to a pulp. That should make him real chatty.
-
-[LAW2C_B:LAWYER2]
-You want some, too?
-
-[LAW2C_C:LAWYER2]
-Hey, chill. I want what you want, brother.
-
-[LAW2C_D:LAWYER2]
-Oh, yeah? And what's that?
-
-[LAW2C_E:LAWYER2]
-Your green - and my dead brother's white lady. Unfortunately, you just silenced our lead.
-
-[LAW2C_F:LAWYER2]
-Accidents happen. Get lost.
-
-[LAW2C_G:LAWYER2]
-Hey, hey, whoa. No need to go all 'Lone Ranger' on my ass.
-
-[LAW2C_H:LAWYER2]
-The way I see it - we two hombres in a strange town. We need to watch each other's back.
-
-[LAW2C_I:LAWYER2]
-My back's just fine, brother...
-
-[LAW2C_J:LAWYER2]
-You sure about that? Here, take this.
-
-[LAW2C_K:LAWYER2]
-Follow me!
-
-[LAW2_1:LAWYER2]
-Hey, whatchoo lookin' at?
-
-[LAW2_2:LAWYER2]
-You better start talking..
-
-[LAW2_3:LAWYER2]
-Hey, make me, you prick!
-
-[LAW2_4:LAWYER2]
-This way!
-
-[LAW2_5:LAWYER2]
-I'm going to go see what I can dig up. I'll be watching you, Tommy.
-
-[LAW2_6:LAWYER2]
-~g~Go to the Malibu Club and find Kent Paul.
-
-[LAW2_7:LAWYER2]
-~g~Go and find the chef on Ocean Drive.
-
-[LAW2_10:LAWYER2]
-~g~Drive back to the hotel.
-
-[LAW2_11:LAWYER2]
-~g~Pick up his cell phone.
-
-[LAW2_12:LAWYER2]
-Cell phone acquired! You can now receive phone calls.
-
-[LAW2_13:LAWYER2]
-~g~You've left Lance behind! Go and get him!
-
-[LAW2_14:LAWYER2]
-We gotta get the hell outta here!
-
-[GUN_2A:LAWYER2]
-Hold the ~h~~k~~PED_LOCK_TARGET~ ~w~button to ~h~auto-target~w~, press the ~h~~k~~PED_FIREWEAPON~ ~w~button to ~h~fire!
-
-[GUN_2C:LAWYER2]
-Hold the ~h~~k~~PED_LOCK_TARGET~ ~w~button to ~h~auto-target~w~, press the ~h~~k~~PED_FIREWEAPON~ ~w~button to ~h~fire!
-
-[GUN_2D:LAWYER2]
-Hold the ~h~~k~~PED_LOCK_TARGET~ ~w~button to ~h~auto-target~w~, press the ~h~~k~~PED_FIREWEAPON~ ~w~button to ~h~fire!
-
-[HELP17:LAWYER2]
-Press the ~h~~k~~PED_FIREWEAPON~ ~w~button to attack the chef.
-
-[HELP18:LAWYER2]
-Press the~h~ ~k~~PED_FIREWEAPON~ ~w~button to attack the chef.
-
-[LAW3_11:LAWYER2]
-Stand in the ~q~pink marker~w~ to view the weapons on offer.
-
-[LAW3_12:LAWYER2]
-You can select weapons by pressing ~h~left~w~ or ~h~right~w~ on the ~h~directional button.
-
-[LAW3_13:LAWYER2]
-If you have enough cash you can buy weapons by pressing the ~h~~k~~PED_SPRINT~ ~w~button.
-
-[LAW3_14:LAWYER2]
-You can exit the shop by pressing the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button.
-
-[LAW3_15:LAWYER2]
-Follow the ~h~Gun blip~w~ on the radar to find ~h~Ammu-Nation.
-
-[LAW2_15:LAWYER2]
-~g~Go to Ammu-Nation.
-
-[LAW2_H:LAWYER2]
-that if anybody knows the whereabouts of 20 k's of coke,
-
-[LAW2_K:LAWYER2]
-Take it easy now.
-
-[LAW2_16:LAWYER2]
-One thing you gotta realize about this town. You gotta pack some heat.
-
-[LAW2_17:LAWYER2]
-C'mon, the local gun shop's a couple of blocks away.
-
-[LAW2_18:LAWYER2]
-Tommy, every man needs a little R&R once in a while.
-
-[LAW2_19:LAWYER2]
-This here's the Pole Position Strip Club. You might want to drop in some time.
-
-{=================================== MISSION TABLE LAWYER3 ===================================}
-
-[LAW3_A:LAWYER3]
-Aaah! Oh, for god's sake, it's you! Oh, Jeez - I'm gonna need new pants!
-
-[LAW3_B:LAWYER3]
-Hey, those psychos from up north - they've been on the horn, and they're coming down here soon.
-
-[LAW3_C:LAWYER3]
-Now where is the goddamn money?!
-
-[LAW3_D:LAWYER3]
-Relax, relax. We're not at that part yet.
-
-[LAW3_E:LAWYER3]
-Ohhh... I thought that you were taking care of this, I really did!
-
-[LAW3_F:LAWYER3]
-And now those guidos say we gotta do them a favor.
-
-[LAW3_G:LAWYER3]
-You mean I gotta do 'em a favor.
-
-[LAW3_H:LAWYER3]
-Oh, of course that's what I mean. Do I look like I can intimidate a jury?
-
-[LAW3_I:LAWYER3]
-I couldn't intimidate a child - and believe me, I've tried.
-
-[LAW3_J:LAWYER3]
-Now, look. It's either that, or Forelli's cousin, Giorgio, gets five years for fraud.
-
-[LAW3_K:LAWYER3]
-You gotta take these guys OUT!
-
-[LAW3_L:LAWYER3]
-I understand. Help the jury change their minds. Don't worry about it.
-
-[LAW3_M:LAWYER3]
-No no no no no - NO! I tried that. The jury case didn't go so well,
-
-[LAW3_N:LAWYER3]
-so MAKE them change their minds.
-
-[LAW3_1:LAWYER3]
-Giorgio sends his regards.
-
-[LAW3_2:LAWYER3]
-Remember, guilty is a dirty word.
-
-[LAW3_3:LAWYER3]
-Innocent until I say otherwise.
-
-[LAW3_4:LAWYER3]
-You know he's not guilty.
-
-[LAW3_5:LAWYER3]
-You remember Giorgio? You remember he's innocent.
-
-[LAW3_6:LAWYER3]
-Not guilty, understand? Good.
-
-[LAW3_8:LAWYER3]
-~r~You killed a Juror!
-
-[LAW3_9:LAWYER3]
-~g~Smash up the Juror's car to get him out!
-
-[HELP40:LAWYER3]
-You can smash cars up by using the hammer or a similar weapon.
-
-[HELP41:LAWYER3]
-or you can ram them with a vehicle
-
-[LAW3_20:LAWYER3]
-~g~Smash up the Juror's car!
-
-[LAW3_21:LAWYER3]
-I can't believe this is happening!
-
-[LAW3_22:LAWYER3]
-Unbelievable!
-
-[LAW3_23:LAWYER3]
-Ok! Ok, man! I get the message!
-
-[LAW3_24:LAWYER3]
-~g~That hammer would be useful.
-
-[LAW3_7:LAWYER3]
-~g~Go and intimidate the two jurors, but DON'T kill them!
-
-[HELP23:LAWYER3]
-You can follow the ~h~hammer blip~w~ on the radar if you want to buy melee weapons from the hardware store.
-
-[LAW3_16:LAWYER3]
-Dumb Florida Moron.
-
-[LAW3_17:LAWYER3]
-Get out of the way!
-
-{=================================== MISSION TABLE LAWYER4 ===================================}
-
-[LAW4_A:LAWYER4]
-Avery, it goes without saying... Tommy! Tommy! Any progress? No, no, no - tell me later, tell me later.
-
-[LAW4_B:LAWYER4]
-Tommy, this is Avery Carrington - I believe you met at the party?
-
-[LAW4_C:LAWYER4]
-Not in person.
-
-[LAW4_D:LAWYER4]
-Howdy.
-
-[LAW4_E:LAWYER4]
-Avery here has a proposition.
-
-[LAW4_F:LAWYER4]
-Haven't we got other things on our mind?
-
-[LAW4_G:LAWYER4]
-I'm trying to keep the wolves from the door, so could you please cut me some slack?
-
-[LAW4_H:LAWYER4]
-I'm stretched like a wire and even if I'm dead by the end of the week, I'd like to think that I didn't die poor.
-
-[LAW4_I:LAWYER4]
-Now just calm down, both of you.
-
-[LAW4_J:LAWYER4]
-Son, you help me and any greaseballs giving you a hard time, I'll see to it they take a long dirt nap.
-
-[LAW4_K:LAWYER4]
-Ok. What could I do for ya'?
-
-[LAW4_L:LAWYER4]
-This delivery company's got its depot on some prime land. They won't sell.
-
-[LAW4_M:LAWYER4]
-They're hanging on like a big old prairie rat, so we gotta go in there and smoke that vermin out.
-
-[LAW4_N:LAWYER4]
-Head on down there and stir up a hornet's nest
-
-[LAW4_O:LAWYER4]
-- the security will have their hands full and then you can sneak in and put 'em out of business.
-
-[LAW4_P:LAWYER4]
-And you could drop by Rafael's for a change of clothes. You might be there a while, but yeah, go for it.
-
-[LAW4_Q:LAWYER4]
-Should be a riot.
-
-[LAW4_R:LAWYER4]
-If the balls drop like they should, stop by my office sometime...
-
-[LAW4_1:LAWYER4]
-Please disperse. The management will discuss any grievances in the appropriate manner!
-
-[LAW4_2:LAWYER4]
-Please disperse. Go back to your homes!
-
-[LAW4_3:LAWYER4]
-Please disperse! This is inappropriate!
-
-[LAW4_4:LAWYER4]
-Please disperse. You will all end up on the streets.
-
-[LAW4_5:LAWYER4]
-Sticks out, boys! Let's crack some commie skulls!
-
-[LAW4_13:LAWYER4]
-~g~Start fighting with at least 4 workers to get a riot started.
-
-[LAW4_14:LAWYER4]
-~g~Destroy the vans in the compound!
-
-[HELP38:LAWYER4]
-If you take out someone who's holding a weapon, they will drop it.
-
-[HELP39:LAWYER4]
-You can target and shoot explosive barrels but keep your distance.
-
-{=================================== MISSION TABLE MIAMI_1 ===================================}
-
-[T4X4_1A:MIAMI_1]
-~g~You have ~1~ seconds to collect ~y~24~g~ checkpoints. ~g~You may collect them in ~y~ANY ORDER.
-
-[T4X4_1B:MIAMI_1]
-~y~PASS THROUGH~g~ the first checkpoint to start the ~r~TIMER.
-
-[T4X4_1C:MIAMI_1]
-~1~ of 24!
-
-[GETBIK1:MIAMI_1]
-You have ~1~ seconds to get on a PCJ 600!
-
-[GETBIK3:MIAMI_1]
-~r~You need a PCJ 600 to attempt this mission!
-
-{=================================== MISSION TABLE MM ===================================}
-
-[BLOD_04:MM]
-CAR HEALTH:
-
-[BLOD_05:MM]
-~g~TARGET TIME: ~1~ Minute
-
-[BLOD_06:MM]
-~g~TARGET TIME: ~1~ Minutes
-
-[BLOD_07:MM]
-NEW Best Time: ~1~ Seconds
-
-[BLOD_08:MM]
-Cars Destroyed: ~1~
-
-[BLOD_09:MM]
-$~1~
-
-[BLOD_10:MM]
-WINNER!!
-
-[BLOD_01:MM]
-Drive through the checkpoints to increase your overall time.
-
-[BLOD_02:MM]
-You will fail if your overall time reaches zero.
-
-[BLOD_03:MM]
-Get your overall time above the Target Time to win!
-
-{=================================== MISSION TABLE OVALRIG ===================================}
-
-[HOTR_01:OVALRIG]
-~g~The Race lasts for 12 laps. Only 1st, 2nd and 3rd places qualify for winnings.
-
-[HOTR_02:OVALRIG]
-~g~If your car is destroyed you will be disqualified.
-
-[HOTR_03:OVALRIG]
-~g~When your car is damaged you can get it repaired at the pitstop.
-
-[HOTR_04:OVALRIG]
-~g~This is the way to leave the stadium.
-
-[HOTR_05:OVALRIG]
-Car Health:
-
-[HOTR_06:OVALRIG]
-Laps:
-
-[HOTR_07:OVALRIG]
-New best time: ~1~:0~1~
-
-[HOTR_08:OVALRIG]
-Time: ~1~:~1~
-
-[HOTR_10:OVALRIG]
-Race Time:
-
-[HOTR_09:OVALRIG]
-Position:
-
-[HOTR_12:OVALRIG]
-~r~Your car has been destroyed!
-
-[HOTR_13:OVALRIG]
-~r~You didn't win the race!
-
-[HOTR_14:OVALRIG]
-~r~You have been disqualified!
-
-[HOTR_15:OVALRIG]
-Time: ~1~:~1~
-
-[HOTR_16:OVALRIG]
-Time: ~1~:0~1~
-
-[HOTR_17:OVALRIG]
-Best Time: ~1~:~1~
-
-[HOTR_18:OVALRIG]
-Best Time: ~1~:0~1~
-
-[HOTR_19:OVALRIG]
-Best Time: NA
-
-[HOTR_20:OVALRIG]
-New Best Time: ~1~:~1~
-
-[HOTR_21:OVALRIG]
-New Best Time: ~1~:0~1~
-
-[HOTR_22:OVALRIG]
-Best Result: NA
-
-[HOTR_23:OVALRIG]
-Best Result: 1st
-
-[HOTR_24:OVALRIG]
-Best Result: 2nd
-
-[HOTR_25:OVALRIG]
-Best Result: 3rd
-
-[HOTR_26:OVALRIG]
-Best Result: ~1~th
-
-[HOTR_27:OVALRIG]
-Best Lap Time: ~1~.~1~ seconds
-
-[HOTR_28:OVALRIG]
-Best Lap Time: ~1~.0~1~ seconds
-
-[HOTR_29:OVALRIG]
-$~1~
-
-[HOTR_30:OVALRIG]
-1ST PLACE
-
-[HOTR_31:OVALRIG]
-2ND PLACE
-
-[HOTR_32:OVALRIG]
-3RD PLACE
-
-[HOTR_33:OVALRIG]
-Best Lap Time: NA
-
-[HOTR_11:OVALRIG]
-New best lap time: ~1~.~1~ seconds
-
-[HOTR_34:OVALRIG]
-New best lap time: ~1~.0~1~ seconds
-
-{=================================== MISSION TABLE PHIL1 ===================================}
-
-[PHIL1_A:PHIL1]
-Phil?
-
-[PHIL1_B:PHIL1]
-RUN!
-
-[PHIL1_C:PHIL1]
-Run
-
-[PHIL1_E:PHIL1]
-Shit Phil, you drink that stuff?
-
-[PHIL1_F:PHIL1]
-Hell, you don't have to drink it
-
-[PHIL1_G:PHIL1]
-- just a good whiff will set you off. Hoowwee!
-
-[PHIL1_H:PHIL1]
-Listen Phil, you said you could fix me up with some firepower...
-
-[PHIL1_I:PHIL1]
-Sure thing.
-
-[PHIL1_J:PHIL1]
-There's some Mexican gun-runner been doing me for business of late.
-
-[PHIL1_K:PHIL1]
-He does his weekly run about now.
-
-[PHIL1_L:PHIL1]
-Ram his hardware off the back of his trucks before he goes to ground.
-
-[PHIL1_M:PHIL1]
-And you'd be doing me a favor while you're at it.
-
-[PHIL1_N:PHIL1]
-Then finish him off.
-
-[PHI1_01:PHIL1]
-~g~Go and knock the arms off the back of the dealers' trucks.
-
-[PHI1_02:PHIL1]
-~g~The arms dealer dropped his load. Smash the crate and pick up the weapon.
-
-[PHI1_03:PHIL1]
-~g~Looks like they have called for back up.
-
-[PHI1_04:PHIL1]
-~g~Now go and finish off the remaining arms dealers.
-
-[PHI1_HP:PHIL1]
-When using Detonator Grenades, throw a grenade then trigger the explosion at any time.
-
-[PHIL1_O:PHIL1]
-Hoooooweeeeee!
-
-[PHIL1_D:PHIL1]
-Never get a naked flame too close to one of Phil Cassidy's Boomshine stills!
-
-{=================================== MISSION TABLE PHIL2 ===================================}
-
-[PHIL2_A:PHIL2]
-Hey Phil, how's it goin?
-
-[PHIL2_B:PHIL2]
-Heeyyyy, Tommy. Howyadoin'? Ish been too long...
-
-[PHIL2_C:PHIL2]
-I swear you should lay off that boomshine, man -
-
-[PHIL2_D:PHIL2]
-smells like paint stripper. Making my eyes burn...
-
-[PHIL2_E:PHIL2]
-Shshs shhh youshelf Tommy,
-
-[PHIL2_F:PHIL2]
-and come over here because there's someshin' I wanna show you.. someshin.
-
-[PHIL2_G:PHIL2]
-Woof! God! Should I be able to smell that from way over here? I'm feeling woozy.
-
-[PHIL2_H:PHIL2]
-Don'tchaworry about the shmell Tommy, you jush wash thish.
-
-[PHIL2_I:PHIL2]
-Shittycheapbatteriesh or shumin'. There'sh shum more on the bench.
-
-[PHIL2_J:PHIL2]
-TA-DAAA!
-
-[PHIL2_K:PHIL2]
-Aww Damn!
-
-[PHI2_01:PHIL2]
-~g~Quick, get Phil to the hospital.
-
-[PHI2_03:PHIL2]
-~r~Phil Cassidy is dead!!! Now who's gonna supply arms in Vice City?
-
-[PHI2_05:PHIL2]
-Not the hospital, man! Too many cops and Viet Cong!
-
-[PHI2_06:PHIL2]
-There's an ex-army surgeon owes me a few favors and a lawnmower.
-
-[PHI2_07:PHIL2]
-He's got a place down Little Havana - ooo look, a giant fish.
-
-[PHI2_08:PHIL2]
-Watch out! Charlie in the tree line!
-
-[PHI2_09:PHIL2]
-Is it me or are the roads made of jelly?
-
-[PHI2_10:PHIL2]
-Broken Spoon to Mother Hen, you copy?
-
-[PHI2_11:PHIL2]
-Spooney Wooney Woo Woo Woooo!
-
-[PHI2_12:PHIL2]
-He's come for me boy!
-
-[PHI2_13:PHIL2]
-Black feathered wings beating all around...
-
-[PHI2_14:PHIL2]
-It's beautiful, man ... it's beautiful ... but so cold ...
-
-[PHI2_15:PHIL2]
-10-4 we've got a drunk driver.
-
-[PHI2_04:PHIL2]
-PHIL'S HEALTH:
-
-[PHI_AS1:PHIL2]
-PHILS PLACE ASSET COMPLETED
-
-[PHI_AS2:PHIL2]
-~g~New Weapons available to purchase from Phils Place.
-
-{=================================== MISSION TABLE PIZZA ===================================}
-
-[PIZ1_01:PIZZA]
-~g~Go deliver these pizzas, you must throw the pizza to the customers. Do a drive-by to throw the pizzas.
-
-[PIZ1_02:PIZZA]
-~g~You have thrown all your pizzas, go back and get some more.
-
-[PIZ1_05:PIZZA]
-~g~You have five minutes to deliver the orders before the customers phone another pizza shop.
-
-[PIZ1_07:PIZZA]
-~r~You killed the customer! You're fired.
-
-[PIZ1_08:PIZZA]
-~r~You are out of time. You're fired.
-
-[PIZ1_09:PIZZA]
-~r~You destroyed our bike! You're fired.
-
-[PIZ1_11:PIZZA]
-Hey! Get back on the bike!
-
-[PIZ1_12:PIZZA]
-Pizzas left:
-
-[PIZ1_06:PIZZA]
-Press the~h~ ~k~~TOGGLE_SUBMISSIONS~~w~ when on the bike to cancel the mission.
-
-[PIZ1_13:PIZZA]
-Get these delivered nice and hot.
-
-[PIZ1_14:PIZZA]
-Pal, pizza's for you.
-
-[PIZ1_15:PIZZA]
-Hey, come on Mister, deliver these quick.
-
-[PIZ1_16:PIZZA]
-What are you waiting around for Mister? You got pizza to deliver.
-
-[PIZ1_17:PIZZA]
-I know you didn't want to be a pizza boy, well I don't give a damn.
-
-[PIZ1_18:PIZZA]
-Deliver these.
-
-[PIZ1_19:PIZZA]
-These need delivering.
-
-[PIZ1_20:PIZZA]
-Come on Mister, deliver these things or you're sacked.
-
-[PIZ1_21:PIZZA]
-We got people waiting pal.
-
-[PIZ1_22:PIZZA]
-What are you waiting around for? These need delivering!
-
-[PIZ1_23:PIZZA]
-Deliver the damn food Mister.
-
-[PIZ1_24:PIZZA]
-These need delivering pal.
-
-[PIZ1_25:PIZZA]
-Man, can you take these?
-
-[PIZ1_26:PIZZA]
-Mister, deliver these pronto, avamos amigo.
-
-[PIZ1_27:PIZZA]
-Come on, we're in a rush, deliver these.
-
-[PIZ1_28:PIZZA]
-You again? well deliver these quick pal.
-
-[PIZ1_29:PIZZA]
-No wasting time this time pal.
-
-[PIZ1_30:PIZZA]
-Come on you lazy bastard, deliver this crap on time.
-
-[PIZ1_31:PIZZA]
-You'll never get a promotion unless you move faster this time.
-
-[PIZ1_32:PIZZA]
-~r~Pizza's too hot to handle?
-
-[PIZ1_33:PIZZA]
-~g~Return to the restaurant for more orders.
-
-[PIZ1_34:PIZZA]
-~g~Pizza delivered, here's your cash.
-
-[PIZ_WON:PIZZA]
-Pizza Mission Complete. Your max Health increased to 150.
-
-{=================================== MISSION TABLE PORN1 ===================================}
-
-[POR1_A:PORN1]
-Action.
-
-[POR1_B:PORN1]
-Whoa! Now that's big.
-
-[POR1_C:PORN1]
-12 inches. That is regulation baby.
-
-[POR1_D:PORN1]
-CUT!! Who IS this idiot? You! YOU! Why are you in my space? WHY?
-
-[POR1_E:PORN1]
-What is all this crap?
-
-[POR1_F:PORN1]
-Aliens? Fishing poles?
-
-[POR1_G:PORN1]
-Who's ever seen a shark that big?
-
-[POR1_H:PORN1]
-All this stuff's gotta go.
-
-[POR1_I:PORN1]
-Why'd you get in this business, ya prick?
-
-[POR1_J:PORN1]
-Huh?
-
-[POR1_K:PORN1]
-For the pussy, that's why! What is this??
-
-[POR1_L:PORN1]
-This is my art - SECURITY!
-
-[POR1_M:PORN1]
-Look, you pompous asshole, I own you now. I own all of this.
-
-[POR1_N:PORN1]
-We're gonna turn this place around...
-
-[POR1_O:PORN1]
-I'm gonna make you rich.
-
-[POR1_P:PORN1]
-Uh. You're - You - you're Tommy Vercetti? But I thought that you were...
-
-[POR1_Q:PORN1]
-That's right.
-
-[POR1_R:PORN1]
-We're gonna be making some changes around here and start making some real money.
-
-[POR1_S:PORN1]
-Actually, have you ever thought about, umm...
-
-[POR1_T:PORN1]
-But first we're going to need some good-looking broads.
-
-[POR1_U:PORN1]
-Yeh, girls are fine but you... whew!
-
-[POR1_02:PORN1]
-~g~ Go and take out Candy's pimp, then return and pick up Candy.
-
-[POR1_04:PORN1]
-Yo, Candy. I'm looking for movie talent - you interested?
-
-[POR1_05:PORN1]
-Sure! But, you'd have to talk to my agent...
-
-[POR1_06:PORN1]
-The HELL are you doin'?
-
-[POR1_07:PORN1]
-You should have stayed at home today!
-
-[POR1_7B:PORN1]
-Can you believe this asshole?
-
-[POR1_08:PORN1]
-Hey Mercedes!
-
-[POR1_09:PORN1]
-Hey Tommy! You wanna party?
-
-[POR1_10:PORN1]
-Not now sweets. You interested in doing some movies?
-
-[POR1_11:PORN1]
-Of course. As long as it's cheap and sleazy.
-
-[POR1_13:PORN1]
-~g~Take the girls back to the Studio to meet Steve.
-
-[POR1_17:PORN1]
-Whoa, cool shark!
-
-[POR1_18:PORN1]
-~r~Mercedes is dead!
-
-[POR1_20:PORN1]
-Tommy where are you going? Get back here!
-
-[POR1_21:PORN1]
-Where are you going?
-
-[POR1_22:PORN1]
-Tommy, when are we going to spend some time alone together?
-
-[POR1_01:PORN1]
-~g~Candy Suxxx would be perfect for a starring role!
-
-[POR1_12:PORN1]
-~g~Take Candy with you to meet up with Mercedes.
-
-[POR1_16:PORN1]
-Maybe later, babe...
-
-[POR1_24:PORN1]
-~g~Go back and collect Candy.
-
-[POR1_25:PORN1]
-~g~You have left Candy behind, go and get her.
-
-[POR1_23:PORN1]
-~g~Candy will be taking care of business ~h~Downtown~g~.
-
-[POR1_26:PORN1]
-~g~Here's Candy, looks like she has been with Congressman Shrub again.
-
-[POR1_15:PORN1]
-Tommy, you coming in for a warm-up?
-
-[POR1_14:PORN1]
-Heh heh - you're hired!
-
-[POR1_27:PORN1]
-Come on, let's go.
-
-[POR1_28:PORN1]
-Tommy be careful! My implants aren't insured yet!
-
-[POR1_29:PORN1]
-You call that driving?
-
-[POR1_30:PORN1]
-I can't do porno after this!
-
-[POR1_31:PORN1]
-What? Are you trying to kill me? I thought I was the star!
-
-{=================================== MISSION TABLE PORN2 ===================================}
-
-[POR2_A:PORN2]
-How's filming going, Steve?
-
-[POR2_B:PORN2]
-Well, Candy is a natural and that new girl - she's insatiable!
-
-[POR2_C:PORN2]
-She went through half the cast and crew before I even took a light reading.
-
-[POR2_D:PORN2]
-Anyway, hey, tomorrow we're going on location to shoot the boat scenes -
-
-[POR2_E:PORN2]
-Boat scenes?! What boat scenes?
-
-[POR2_F:PORN2]
-The fishermen are in the throes of passion when this giant shark comes in -
-
-[POR2_G:PORN2]
-What'd I say about the giant shark?
-
-[POR2_H:PORN2]
-I said, 'NO GIANT SHARK', alright?
-
-[POR2_I:PORN2]
-Just keep the cameras pointed at the poontang!
-
-[POR2_J:PORN2]
-Ok ok, hey Tommy, a guy's gotta try, right?
-
-[POR2_K:PORN2]
-Get those flyers printed up?
-
-[POR2_L:PORN2]
-Yeah, but nobody's gonna let us distribute those things, I mean
-
-[POR2_M:PORN2]
-They're just too, uh, they're unimaginative.
-
-[POR2_N:PORN2]
-You don't worry about that.
-
-[POR2_O:PORN2]
-I've got my own ideas for distribution.
-
-[POR2_P:PORN2]
-O.K. Hey, Candy, uh - in my trailer.
-
-[POR2_01:PORN2]
-~g~There is a seaplane that was used as a prop in some old indie film round the back of the studios.
-
-[POR2_02:PORN2]
-~g~Pick one of the checkpoints to start dropping the flyers from.
-
-[POR2_03:PORN2]
-~g~Drop the flyers all the way to the end checkpoint.
-
-[POR2_04:PORN2]
-~r~LOW FUEL!!!
-
-[POR2_05:PORN2]
-~g~Use it to distribute the flyers around town.
-
-[DILDO:PORN2]
-Skimmer Fuel:
-
-[POR2_Q:PORN2]
-Oh, boy.
-
-[PORN2_9:PORN2]
-~g~You have ~1~ seconds to return to a Skimmer before the mission ends.
-
-{=================================== MISSION TABLE PORN3 ===================================}
-
-[POR3_A:PORN3]
-Ok, what's the problem now?
-
-[POR3_B:PORN3]
-SSShhhh!
-
-[POR3_C:PORN3]
-Well, after his close encounter with the nympho-invaders,
-
-[POR3_D:PORN3]
-our hero finds himself unable to think of anything but this huge phallic mountain -
-
-[POR3_E:PORN3]
-and that's when I want to do the scene with the vat of mashed potatoes, but then we, uh -
-
-[POR3_F:PORN3]
-I don't give a crap about that!
-
-[POR3_G:PORN3]
-J - Just keep going, keep going!
-
-[POR3_H:PORN3]
-Hey Tommy...
-
-[POR3_I:PORN3]
-You mentioned something about some legal problem on the phone?
-
-[POR3_J:PORN3]
-Congressman Alex Shrub has jumped on the pre-election bandwagon, he's going after the puritan vote.
-
-[POR3_K:PORN3]
-Rumors are he's gonna support measures to restrict, shall we say,
-
-[POR3_L:PORN3]
-the more fleshy aspects of this nation's great entertainment industry.
-
-[POR3_M:PORN3]
-Great.
-
-[POR3_N:PORN3]
-Candy! You know Shrub,
-
-[POR3_O:PORN3]
-you guys get up to anything kinky?
-
-[POR3_P:PORN3]
-Oh yeah, oh yeah, oh yeah! Yes yes yes YES OOOoooh!
-
-[POR3_Q:PORN3]
-Please - tell me you got that.
-
-[POR3_R:PORN3]
-Was that part of the, uh... or was she talking to..?
-
-[POR3_S:PORN3]
-Hey, I can never tell. Anyway...
-
-[POR3_T:PORN3]
-You're probably best following her after the shoot,
-
-[POR3_U:PORN3]
-see if she'll lead you to their new love nest.
-
-[POR3_V:PORN3]
-You got a camera?
-
-[POR3_X:PORN3]
-Yeah. Get him a camera.
-
-[POR3_02:PORN3]
-~r~You've killed the Congressman! There's no way you can blackmail him now.
-
-[POR3_03:PORN3]
-~r~You've alerted the Congressman's protection, they will get him out of there immediately.
-
-[POR3_04:PORN3]
-Uh, Candy, could you call me Martha?
-
-[POR3_05:PORN3]
-Oh Alex - I mean Martha. Whatever you say...
-
-[POR3_06:PORN3]
-Martha, someone's watching.. how kinky.
-
-[POR3_07:PORN3]
-You! Give me that camera!
-
-[POR3_01:PORN3]
-~g~Follow Candy's ~h~Stretch~g~.
-
-[POR3_15:PORN3]
-~r~You trashed Candy's Stretch!
-
-[POR3_17:PORN3]
-~g~Get back to the Porn Studios with the film.
-
-[POR3_19:PORN3]
-~r~You ran out of film!
-
-[POR3_21:PORN3]
-~g~You lost Candy's Stretch!
-
-[POR3_22:PORN3]
-~g~The WK Chariot Hotel across from his balcony should provide an ideal photo-grabbing location.
-
-[POR3_23:PORN3]
-~g~There is a side door that will allow you access to the hotel.
-
-[POR3_08:PORN3]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~ ~w~button to ~h~target~w~ with the camera.
-
-[POR3_09:PORN3]
-Press and hold the~h~ ~k~~PED_LOCK_TARGET~ ~w~button to ~h~target ~w~with the camera.
-
-[POR3_10:PORN3]
-Press the~h~ ~k~~PED_SNIPER_ZOOM_IN~ ~w~button to ~h~zoom in ~w~with the camera and the~h~ ~k~~PED_SNIPER_ZOOM_OUT~ ~w~button to ~h~zoom out ~w~again.
-
-[POR3_11:PORN3]
-Press the~h~ ~k~~PED_SNIPER_ZOOM_IN~ ~w~button to ~h~zoom in ~w~with the camera and the~h~ ~k~~PED_SNIPER_ZOOM_OUT~ ~w~button to ~h~zoom out ~w~again.
-
-[POR3_12:PORN3]
-Press the~h~ ~k~~PED_FIREWEAPON~ ~w~button to take a picture.
-
-[POR3_13:PORN3]
-Press the~h~ ~k~~PED_FIREWEAPON~ ~w~button to take a picture.
-
-[POR3_14:PORN3]
-Press the~h~ ~k~~PED_FIREWEAPON~ ~w~button to take a picture.
-
-[POR3_20:PORN3]
-~g~If you need transport, use the ~h~Sparrow~g~ round the back.
-
-[POR3_16:PORN3]
-~g~You need three good blackmail photographs of Alex Shrub with Candy.
-
-[POR3_24:PORN3]
-PHOTOS TAKEN:
-
-{=================================== MISSION TABLE PORN4 ===================================}
-
-[POR4_A:PORN4]
-I'm sorry, but I just can't swallow this right now.
-
-[POR4_B:PORN4]
-Oh COME ON darling!
-
-[POR4_C:PORN4]
-He's hung like a sperm whale for pity's sake,
-
-[POR4_D:PORN4]
-how can you not feel the part?!
-
-[POR4_E:PORN4]
-But Stevie...
-
-[POR4_F:PORN4]
-How's my star director?
-
-[POR4_G:PORN4]
-Oh, man. The struggle between the artistic integrity and
-
-[POR4_H:PORN4]
-the humping, pumping action continues unabated.
-
-[POR4_I:PORN4]
-And before you ask, yes, all four videos will be released by their...
-
-[POR4_J:PORN4]
-Honey, can you PLEASE keep the anaconda in the shot,
-
-[POR4_K:PORN4]
-he costs more per hour than you do!
-
-[POR4_L:PORN4]
-Oh, sorry Steve.
-
-[POR4_M:PORN4]
-I was thinking, we need some kind of big stunt to really promote the launch.
-
-[POR4_N:PORN4]
-Something that will make a real impact on the City - you got any ideas?
-
-[POR4_O:PORN4]
-Well, in the old days they used to have gala events,
-
-[POR4_P:PORN4]
-stars, limos, the night sky crisscrossed with searchlights...
-
-[POR4_Q:PORN4]
-Searchlights! I've got an idea...
-
-[POR4_R:PORN4]
-...yeah, yeah, yeah. The little sequined numbers, and the limos, oh, premieres
-
-[POR4_S:PORN4]
-Oh, yes ma'am, of course ma'am,
-
-[POR4_T:PORN4]
-and the press, and the barrage of lights...
-
-[POR4_01:PORN4]
-~g~Go ~y~Downtown~g~ and adjust the spotlight on top of the building.
-
-[POR4_02:PORN4]
-~g~A fast bike will be needed to jump from roof to roof. The Security Guard usually drives a ~y~PCJ 600~g~ to work...
-
-[POR4_03:PORN4]
-~g~You will need to get onto the roofs of the buildings. There should be a lift into one of the upper offices...
-
-[POR4_06:PORN4]
-~g~Return to the lower office if you need access to the rooftops again.
-
-[POR4_07:PORN4]
-~g~You will need a bike so you can jump from building to building.
-
-[POR4_08:PORN4]
-~g~Smash through the window to start the course. You have until 07:00 before it gets too light to get up there unseen.
-
-[POR4_09:PORN4]
-~g~The pickups will show you which building to jump to next.
-
-[POR4_10:PORN4]
-~r~It's too light to get up there unseen.
-
-[POR4_11:PORN4]
-~g~Return to the ladder if you need access to the rooftops again.
-
-[POR4_05:PORN4]
-~g~These stairs will lead round to a lower office.
-
-[POR_AS1:PORN4]
-FILM STUDIO ASSET COMPLETED
-
-[POR_AS2:PORN4]
-~g~Inter Global Films will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-{=================================== MISSION TABLE PROT1 ===================================}
-
-[PRO1_B:PROT1]
-I can't stand this look. Tommy, whadaya say? Whadaya say we put a bar in...
-
-[PRO1_D:PROT1]
-Listen to me,
-
-[PRO1_E:PROT1]
-The time to take over this town is now. It's all out there waiting for us.
-
-[PRO1_F:PROT1]
-We need to start seizing territory,
-
-[PRO1_G:PROT1]
-let Vice City know we're the new players in town, know what I'm saying?
-
-[PRO1_I:PROT1]
-What you need is a legitimate front Tommy, real estate. It's never done me no harm.
-
-[PRO1_J:PROT1]
-We need to start using some muscle or we can kiss all that hard work goodbye.
-
-[PRO1_K:PROT1]
-Local businesses know Diaz is dead, and they're refusing to pay protection!
-
-[PRO1_L:PROT1]
-Ooh! We could try bribery...
-
-[PRO1_M:PROT1]
-Bribery? Screw bribery! I'll show you how to make 'em scared!
-
-[PRO1_01:PROT1]
-~g~Do a hit and run on the shop fronts and the owners will be begging for protection.
-
-[PRO1_03:PROT1]
-~r~This was supposed to be a hit and run, not a 'hit and have coffee'.
-
-[PRO1_04:PROT1]
-My livelihood, destroyed!
-
-[PRO1_05:PROT1]
-Ruined...RUINED!!
-
-[PRO1_06:PROT1]
-I pay through the ass for protection!
-
-[PRO1_07:PROT1]
-My beautiful window display!
-
-[PRO1_08:PROT1]
-My store. My wonderful store.
-
-[PRO1_09:PROT1]
-Vercetti. Remember the name.
-
-[PRO1_10:PROT1]
-I run this town now. ME!
-
-[BUYP1:PROT1]
-You can now buy property in certain areas of the map.
-
-[BUYP2:PROT1]
-If you see a green house pickup, you can buy that property.
-
-[PRO1_N:PROT1]
-I'll be back here in five minutes...
-
-[PRO1_11:PROT1]
-~g~Get to ~y~The North Point Mall~g~ in ~y~Vice Point~g~.
-
-[PRO1_12:PROT1]
-~g~Smash the panes of glass in each shop front and the owners will be begging for new protection.
-
-[PRO1_A:PROT1]
-Oh, we gotta redecorate this place. We gotta make it look older.
-
-[PRO1_C:PROT1]
-You're my lawyer, Rosenberg, not my interior decorator. Got it?
-
-[BUYP3:PROT1]
-Stand inside the pickup, then press the ~h~~k~~PED_ANSWER_PHONE~~w~ button to purchase that property.
-
-[PRO1_13:PROT1]
-~g~You have five minutes to smash them all.
-
-{=================================== MISSION TABLE PROT2 ===================================}
-
-[PRO2_A:PROT2]
-What's the problem?
-
-[PRO2_B:PROT2]
-Some bar is refusing to pay.
-
-[PRO2_C:PROT2]
-They reckon they're protected by a local gang of thugs.
-
-[PRO2_D:PROT2]
-But don't worry Tommy, I can handle it.
-
-[PRO2_E:PROT2]
-You call this handling it?
-
-[PRO2_F:PROT2]
-You two, off your asses...
-
-[PRO2_G:PROT2]
-Let's go.
-
-[PRO2_10:PROT2]
-~g~Two more have made a run for it. Track them down and finish this.
-
-[PRO2_11:PROT2]
-Get in the car, useless.
-
-[PRO2_02:PROT2]
-Your protection needs a little more protection.
-
-[PRO2_03:PROT2]
-Aw hell, not again! I don't need this crap!
-
-[PRO2_04:PROT2]
-These idiots operate out of DBP Security around the block.
-
-[PRO2_05:PROT2]
-You guys just sort it out amongst yourselves.
-
-[PRO2_06:PROT2]
-I'll be seeing you later.
-
-[PRO2_07:PROT2]
-Yeah, yeah, whatever.
-
-[PRO2_09:PROT2]
-~g~Go and speak to the Front Page Bar Owner.
-
-[PRO2_01:PROT2]
-~g~Take out the guards protecting the Front Page Bar and find out who supplied them.
-
-[PRO2_08:PROT2]
-~g~DBP Security will know you are on your way, go and get them before they clear out.
-
-{=================================== MISSION TABLE PROT3 ===================================}
-
-[PRO3_A:PROT3]
-You moron! What were you thinking?!
-
-[PRO3_B:PROT3]
-Do you realize what this means?!
-
-[PRO3_C:PROT3]
-We could all be sunk!
-
-[PRO3_D:PROT3]
-The timer must have got screwed.
-
-[PRO3_E:PROT3]
-That place was wired to go up like a firework factory.
-
-[PRO3_F:PROT3]
-Then somebody tipped off the cops...
-
-[PRO3_G:PROT3]
-What's the problem, fellas?
-
-[PRO3_H:PROT3]
-Mike was supposed to torch some place in the mall,
-
-[PRO3_I:PROT3]
-but he screwed the fuses and now the cops are crawling all over it.
-
-[PRO3_J:PROT3]
-We gotta get our stuff and get out of here!
-
-[PRO3_K:PROT3]
-Relax, both of you, let me think for a second!
-
-[PRO3_L:PROT3]
-Tommy Vercetti just doesn't cut and run.
-
-[PRO3_M:PROT3]
-The cops are gonna be going over that building with a fine toothed comb, right?
-
-[PRO3_N:PROT3]
-But that takes time.
-
-[PRO3_O:PROT3]
-We gotta go in and torch that place ourselves.
-
-[PRO3_P:PROT3]
-Yeah, but...
-
-[PRO3_Q:PROT3]
-No one but a cop could get within a mile of that place!
-
-[PRO3_R:PROT3]
-So we go as cops.
-
-[PRO3_S:PROT3]
-We gotta get uniforms - and we're gonna need a squad car.
-
-[PRO3_T:PROT3]
-All thanks to you Mike.
-
-[PRO3_U:PROT3]
-I'm sorry.
-
-[PRO3_V:PROT3]
-I got it.
-
-[PRO3_W:PROT3]
-What we got to do is lure the cops in with the finger,
-
-[PRO3_X:PROT3]
-put them in a lock-up
-
-[PRO3_Y:PROT3]
-and jump 'em.
-
-[PRO3_Z:PROT3]
-Good plan. Let's go!
-
-[PRO3_A1:PROT3]
-Alright.
-
-[PRO3_01:PROT3]
-Ok Lance, let's get the cops' attention!
-
-[PRO3_02:PROT3]
-~g~ Take a cop car and go and plant the bomb at the Tarbrush Coffee Shop in the Mall.
-
-[PRO3_03:PROT3]
-~g~ You've left Lance behind, go and get him.
-
-[PRO3_04:PROT3]
-~g~ Let's go.
-
-[PRO3_05:PROT3]
-~r~You killed Lance!
-
-[PRO3_07:PROT3]
-~g~ You have blown your cover. Hurry up and plant the bomb!
-
-[PRO3_09:PROT3]
-Tie 'em up and gag 'em!
-
-[PRO3_10:PROT3]
-Ooo. Fits perfectly!
-
-[PRO3_11:PROT3]
-Bit tight around the crotch though...
-
-[PRO3_12:PROT3]
-Oh yeah yeah, mine too. Mine too.
-
-[PRO3_13:PROT3]
-Easy brother! No cop drives this bad!
-
-[PRO3_14:PROT3]
-Remember - smile at the other cops
-
-[PRO3_15:PROT3]
-Hey there officer. Nice badge, nice badge.
-
-[PRO3_16:PROT3]
-Real smooth, Lance.
-
-[PRO3_17:PROT3]
-Ok, timers are set, 5 seconds and ticking.
-
-[PRO3_18:PROT3]
-5 seconds?!! We got to get the hell out of here!
-
-[PRO3_19:PROT3]
-Now that got them really irritated.
-
-[PRO3_20:PROT3]
-~g~ Get two cops to follow you into the garage.
-
-[PRO3_21:PROT3]
-~g~Get a wanted level so the cops will follow you into the lock-up.
-
-[PRO3_22:PROT3]
-~g~The lock-up door is blocked! You need to clear the door so it can close.
-
-[PRO3_23:PROT3]
-~g~Walk into the marker to plant the bomb.
-
-[PRO3_24:PROT3]
-~g~Get clear of the Cafe!
-
-[PRO_AS1:PROT3]
-PROTECTION RING ASSET COMPLETED
-
-[PRO_AS2:PROT3]
-~g~Vercetti Estate will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[PRO3_08:PROT3]
-~g~ Get back to ~h~Vercetti Estate~g~ on ~h~Starfish Island~g~.
-
-{=================================== MISSION TABLE RACES ===================================}
-
-[RACES_2:RACES]
-~g~You need a vehicle to race, this is not a foot race!
-
-[RACES_3:RACES]
-3..2..1.. GO GO GO!
-
-[RACES_8:RACES]
-~r~You didn't win the race!
-
-[RACES00:RACES]
-Race ~1~:
-
-[RACES01:RACES]
-Terminal Velocity
-
-[RACES02:RACES]
-Ocean Drive
-
-[RACES03:RACES]
-Border Run
-
-[RACES04:RACES]
-Capital Cruise
-
-[RACES05:RACES]
-Tour!
-
-[RACES06:RACES]
-V.C. Endurance
-
-[RACES07:RACES]
-Entrance Fee: $~1~
-
-[RACES08:RACES]
-Best Time: ~1~:~1~
-
-[RACES09:RACES]
-Best Result: 1st
-
-[RACES10:RACES]
-Best Result: 2nd
-
-[RACES11:RACES]
-Best Result: 3rd
-
-[RACES12:RACES]
-Best Result: 4th
-
-[RACES13:RACES]
-Track Length: ~1~.~1~ km
-
-[RACES15:RACES]
-Best Time: NA
-
-[RACES16:RACES]
-Best Result: NA
-
-[RACES19:RACES]
-You cannot afford to enter this race.
-
-[RACES22:RACES]
-Best Time: ~1~:0~1~
-
-[RACES23:RACES]
-Track Length: ~1~.~1~ miles
-
-[RACES_1:RACES]
-~g~Get a fast vehicle and get to the starting grid.
-
-[RACEHLP:RACES]
-~w~Press the~h~ ~k~~PED_SPRINT~ ~w~button to start the selected race. Press the~h~ ~k~~VEHICLE_ENTER_EXIT~ ~w~button to exit.
-
-{=================================== MISSION TABLE RCHELI1 ===================================}
-
-[WRECKED:RCHELI1]
-~r~The vehicle is wrecked!
-
-[RCH1_4:RCHELI1]
-Checkpoints:
-
-[RCH1_7:RCHELI1]
-~g~There are 20 checkpoints in total.
-
-[RCH1_12:RCHELI1]
-~g~The RC helicopter is getting too far out of range!
-
-[RCH1_13:RCHELI1]
-~r~The RC helicopter went out of range!
-
-[RCH1_8:RCHELI1] { reVC update }
-~g~If you wish to quit this mission press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button to detonate your RC Helicopter.
-
-{=================================== MISSION TABLE RCPLNE1 ===================================}
-
-[RCPL1_4:RCPLNE1]
-~g~Compete in a CHECKPOINT RACE with 3 other RC Plane's
-
-[RCPL1_5:RCPLNE1]
-~g~Fly through the checkpoints scattered throughout Vice City.
-
-[RCPL1_6:RCPLNE1] { reVC update }
-~g~If you wish to quit this mission press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button to detonate your RC Plane.
-
-[RCPL1_8:RCPLNE1]
-~g~Your RC Plane is going out of range!
-
-[RCPL1_9:RCPLNE1]
-~r~Your RC Plane went out of range!
-
-{=================================== MISSION TABLE RCRACE1 ===================================}
-
-[RCRC1_1:RCRACE1]
-~g~Compete in a CHECKPOINT RACE with 3 other RC Bandits over 2 LAPS
-
-[RCRC1_3:RCRACE1]
-~g~Final lap!
-
-[RCR1_4:RCRACE1]
-laps left:
-
-[RCR1_1:RCRACE1]
-~g~Compete in a checkpoint race with 3 other RC Cars.
-
-[RCR1_2:RCRACE1]
-~g~Be the first to complete two laps of the track to win!
-
-[RCR1_6:RCRACE1]
-~g~Your RC Car is going out of range!
-
-[RCR1_7:RCRACE1]
-~r~Your RC Car went out of range!
-
-{=================================== MISSION TABLE ROCK1 ===================================}
-
-[RBM1_A:ROCK1]
-AllllllllRrrighttt!
-
-[RBM1_B:ROCK1]
-Yessss! Brilliant, bloody brilliant!
-
-[RBM1_D:ROCK1]
-Hey, you ever met Love Fist before?
-
-[RBM1_E:ROCK1]
-No, I haven't but I've always loved your music.
-
-[RBM1_F:ROCK1]
-Let me introduce you to the band.
-
-[RBM1_G:ROCK1]
-This is Percy, Dick, and Willy's in the kaze, and that was Jezz in the booth earlier,
-
-[RBM1_H:ROCK1]
-and guys, I want you to meet a good friend of mine.
-
-[RBM1_I:ROCK1]
-This is Tommy. We go way back.
-
-[RBM1_J:ROCK1]
-All right, pal.
-
-[RBM1_K:ROCK1]
-And eh, what was your name again?
-
-[RBM1_L:ROCK1]
-Leave it out, Jezz you, remember -
-
-[RBM1_M:ROCK1]
-don't be playing them games with me, mate,
-
-[RBM1_N:ROCK1]
-I'm too crafty for that, sunshine!
-
-[RBM1_O:ROCK1]
-You see, the thing is, Tom, the boys need some help.
-
-[RBM1_P:ROCK1]
-They ain't too connected here, they don't have the old 'how's your father?'
-
-[RBM1_Q:ROCK1]
-We need some drugs, pal!
-
-[RBM1_R:ROCK1]
-Gonna get on the old Love Fist fury, you know?!
-
-[RBM1_S:ROCK1]
-Well, this is Vice City, man. What's the problem?
-
-[RBM1_U:ROCK1]
-Love Juice, man!
-
-[RBM1_V:ROCK1]
-Love Juice?
-
-[RBM1_W:ROCK1]
-Aye, two parts boomshine, 1 part trumpet, 5 fizz bombs and a liter of petrol.
-
-[RBM1_X:ROCK1]
-Can you help us out, pal?
-
-[RBM1_Y:ROCK1]
-Aw, it would really mean a lot to the boys.
-
-[RBM1_Z:ROCK1]
-You can do that for the boys, right?
-
-[RBM1_7:ROCK1]
-~r~You did not get the Love Juice in time!
-
-[RBM1_8:ROCK1]
-~r~Mercedes is dead!
-
-[RBM1_10:ROCK1]
-~r~You idiot! You have destroyed the merchandise!
-
-[RBM1_13:ROCK1]
-~g~Get the 'Love Juice' and Mercedes to the band before they are needed on stage.
-
-[RBM1_15:ROCK1]
-~r~You have lost the dealer, our cash and the drugs!
-
-[RBM1_17:ROCK1]
-~g~Kill the dealer and get the drugs!
-
-[MOB_07A:ROCK1]
-Hey mate, the guys could do with some company, if you know what I mean...
-
-[MOB_07B:ROCK1]
-I know just the girl.
-
-[ROK1_5:ROCK1]
-Hey, Mercedes!
-
-[ROK1_6:ROCK1]
-Hiya, Tommy. And how are you?
-
-[ROK1_7:ROCK1]
-Just fine. Listen, you fancy having Love Fist?
-
-[ROK1_8:ROCK1]
-Ok, but just as a favor I expect returned..
-
-[RBM1_14:ROCK1]
-~g~You need a car or a motorcycle!
-
-[RBM1_1:ROCK1]
-~g~Go and collect Mercedes from her apartment.
-
-[RBM1_12:ROCK1]
-~g~Go and collect the 'Love Juice' ingredients from the dealer.
-
-[ROK1_2:ROCK1]
-NO LONGER NEEDED
-
-[ROK1_3:ROCK1]
-NO LONGER NEEDED
-
-[MERC_39:ROCK1]
-I'll see you later, big boy.
-
-[RBM1_C:ROCK1]
-Hey, Tommy! Glad you could make it.
-
-[RBM1_9:ROCK1]
-~g~Go and collect some love juice from the dealer for Love Fist!
-
-[ROK1_1A:ROCK1]
-Looking for something special? I got what you need!
-
-[ROK1_9:ROCK1]
-Thanks for the money, sucker!
-
-[RBM1_T:ROCK1]
-We need Love Juice, man, you know?
-
-{=================================== MISSION TABLE ROCK2 ===================================}
-
-[RBM2_A:ROCK2]
-Tommy, man. Am I glad to see you!
-
-[RBM2_B:ROCK2]
-What's going on?
-
-[RBM2_C:ROCK2]
-Bad vibes, Tommy....
-
-[RBM2_E:ROCK2]
-There's this cat, we hardly know him, but he knows us.
-
-[RBM2_F:ROCK2]
-Like this cat. Knows all about us.
-
-[RBM2_G:ROCK2]
-Knows that Willy likes his ladies' underwear, eh!
-
-[RBM2_H:ROCK2]
-Or that Percy likes Duran Duran!
-
-[RBM2_K:ROCK2]
-Yeah, the love rocket thing, right. But listen, this cat...
-
-[RBM2_L:ROCK2]
-yeh, yeh, the guy, he wants Love Fist dead.
-
-[RBM2_M:ROCK2]
-Dead Tommy.
-
-[RBM2_N:ROCK2]
-Love Fist gone. You know what they say, the good die young.
-
-[RBM2_O:ROCK2]
-but Tommy, you gotta save Love Fist!
-
-[RBM2_P:ROCK2]
-We got a signing in two hours and I think...
-
-[RBM2_Q:ROCK2]
-And the boys think the stalker's gonna try some monkey business there.
-
-[RBM2_1:ROCK2]
-~g~Drive the limo to the signing event and try to draw the psycho out.
-
-[RBM2_2:ROCK2]
-~r~You've wrecked the band's car!
-
-[RBM2_3:ROCK2]
-~g~Get to the signing!
-
-[RBM2_4:ROCK2]
-~g~Get the Psycho! Don't let him escape!
-
-[RBM2_5:ROCK2]
-~r~You lost him, you idiot!
-
-[RBM2_7:ROCK2]
-~r~The fans have been attacked, the psycho won't show!
-
-[RBM2_8:ROCK2]
-~r~The security guards have been attacked, the psycho won't show!
-
-[PSYCH_1:ROCK2]
-I'll see Love Fist burn!
-
-[PSYCH_2:ROCK2]
-Love Fist ruined my life!
-
-[RBM2_I:ROCK2]
-Shut up ye fool. Just 'cause Jezz bangs sheep.
-
-[RBM2_R:ROCK2]
-Oi shut it!
-
-[RBM2_D:ROCK2]
-Aye, I'm not joking, it's heavy stuff man, heavy you know?
-
-[RBM2_J:ROCK2]
-It's a love rocket thing, you know?
-
-{=================================== MISSION TABLE ROCK3 ===================================}
-
-[RBM3_A:ROCK3]
-Tommy! Tommy! Tommy, man, that psycho's back!
-
-[RBM3_B:ROCK3]
-What's going on?
-
-[RBM3_C:ROCK3]
-That psycho won't leave Love Fist alone!
-
-[RBM3_D:ROCK3]
-You didnae kill him man. And now he's back.
-
-[RBM3_E:ROCK3]
-Yeah, yeah, yeah, and the thing is...
-
-[RBM3_F:ROCK3]
-The thing is, we need someone to drive the limo we can trust,
-
-[RBM3_G:ROCK3]
-cause that nutter keeps making threats!
-
-[RBM3_I:ROCK3]
-We're all bricking ourselves, man.
-
-[RBM3_J:ROCK3]
-Okay guys, calm down, I'll handle this.
-
-[RBM3_K:ROCK3]
-Normally I wouldn't busy myself with driving around a bunch of drunken Scottish bisexuals,
-
-[RBM3_L:ROCK3]
-but, in your case I'll make an exception.
-
-[RBM3_4:ROCK3]
-~r~You've killed Love Fist!
-
-[RBM3_6:ROCK3]
-DETONATION:
-
-[RBM3_1:ROCK3]
-~g~Drive Love Fist to the venue.
-
-[RBM3_2:ROCK3]
-While the bomb is armed if you try to leave the car it will explode...
-
-[RBM3_3:ROCK3]
-If the detonation bar completely fills the bomb will explode.
-
-[RBM3_8:ROCK3]
-The faster you drive the lower the detonation bar will go.
-
-[RBM3_7:ROCK3]
-~g~BOMB DEFUSED!
-
-[ROK3_62:ROCK3]
-so we thought we'd show you our Temple of Rock -
-
-[ROK3_63:ROCK3]
-Get a feel for that Love Fist fury!
-
-[ROK3_64:ROCK3]
-Listen to yourself, man. It's papier-mache and gaffa tape.
-
-[ROK3_65:ROCK3]
-Hey, to the kids, it's a temple and we are the priests!
-
-[ROK3_66:ROCK3]
-Aye, well, if the kids like their priests half cut and tone deaf,
-
-[ROK3_67:ROCK3]
-who am I to argue?
-
-[ROK3_68:ROCK3]
-Oh geez, the tape's getting chewed again.
-
-[ROK3_69:ROCK3]
-At this rate, we'll never get to play live.
-
-[ROK3_70:ROCK3]
-Oohh shite! My bowels...
-
-[ROK3_73:ROCK3]
-Jezz is running the tape,
-
-[RBM3_9:ROCK3]
-If you are stopped or drive slowly the detonation bar will increase.
-
-[RBM3_H:ROCK3]
-I'm shitin' masel' man. I need ma ma!
-
-[ROK3_71:ROCK3]
-We gotta get on with it - thanks again Tommy, Know what I am saying, nice one, bye!
-
-[ROK3_1:ROCK3]
-At last man, time for a well earned drink. The venue's just a hundred yards down the road.
-
-[ROK3_2:ROCK3]
-Better make it a large one then. Hey Tommy, change the tunes, man.
-
-[ROK3_3:ROCK3]
-I get confused if my head ain't banging. Ah look, what's this? Hey Tommy, stick this tape on.
-
-[ROK3_4:ROCK3]
-Love Fist. Your time polluting the airwaves is over. I gave you the chance to be friends.
-
-[ROK3_5:ROCK3]
-Now, I'm giving you the chance to die. Try to slow down and your limousine will explode, along with your BIG, HAIRY ARSES!
-
-[ROK3_6:ROCK3]
-Tommy pal, you gotta save the band! I'm getting bored of this. Just keep the pedal to the metal!!
-
-[ROK3_7:ROCK3]
-We gotta find the bomb! Can't we just drive around all day? Aye, we've got plenty to drink..
-
-[ROK3_8:ROCK3]
-Won't the bomb not be in the engine? We'll have to stop to get it. We're all going to die! I'm gonna get drunk!
-
-[ROK3_9:ROCK3]
-Hey, there's a queue here pal! The answer ain't in the drinks cabinet! Get out of my way!
-
-[ROK3_10:ROCK3]
-Hey, the vodka bottle's got wires coming out of it! That's not vodka, that's BOOMSHINE!
-
-[ROK3_11:ROCK3]
-WAAAAAAGGGHHHH!!!! And it's wired to blow!! WAAAAAAAAAAAAGGGHHHHHHHH!!!!
-
-[ROK3_12:ROCK3]
-They always said the drink would kill me. I've seen this on the telly. you gotta pull out one of the wires. Which wire? I don't know, man.
-
-[ROK3_13:ROCK3]
-I don't have a clue. Willy, say something. I'm gonna play bass in hell.
-
-[ROK3_14:ROCK3]
-Tommy man, keep driving fast, pal. Somebody do something. Aye, clever!
-
-[ROK3_15:ROCK3]
-'Somebody do something', what kind of crap is that, I've seen braver girls. Okay tough guy, you do something.
-
-[ROK3_16:ROCK3]
-Look, man, I play a musical instrument I don't have a clue about bomb disposal. Willy could just suck the boomshine out with a straw.
-
-[ROK3_17:ROCK3]
-Aye, I've heard that your good at that kind of thing. Hey, I was off my tits that night, as well you know!
-
-[ROK3_18:ROCK3]
-Just pass Willy a straw! A straw?!?! This is the Love Fist Tour Bus!
-
-[ROK3_19:ROCK3]
-Where am I gonna get a straw from, know wot I mean? Which wire, Tommy? The green one. There isn't a green one.
-
-[ROK3_20:ROCK3]
-Or is this one green? Any of these wires look green to you?
-
-[ROK3_21:ROCK3]
-Oh no! Death's on the cards! Everything looks green! I should have dumped you lot when I had the chance man.
-
-[ROK3_22:ROCK3]
-Glory seeker. Capitalist. I've been carrying you for years. Shut up. You're a muppit.
-
-[ROK3_23:ROCK3]
-A big screaming girl. Yeah. Shut up and pull a wire. Which wire? This one..
-
-[ROK3_24:ROCK3]
-NO! Man, we're okay. We ain't been blown up, pal.
-
-[ROK3_25:ROCK3]
-Tommy, man, nice one. Rock and roll, man. Ain't we got a gig to go to?
-
-[ROK3_26:ROCK3]
-A racket to make? Groupies to abuse? LOVE FIST!
-
-[ROK3_27:ROCK3]
-Have you finished with that bottle?
-
-{=================================== MISSION TABLE SERG1 ===================================}
-
-[TEX1_A:SERG1]
-Come in and park yourself on the hide, son.
-
-[TEX1_B:SERG1]
-Hell, my daddy used to say, never look a gift horse in the mouth, and by golly, he never did.
-
-[TEX1_C:SERG1]
-Would you like a drop of the old Kentucky?
-
-[TEX1_D:SERG1]
-No thanks.
-
-[TEX1_E:SERG1]
-A clean thinker! I like that.
-
-[TEX1_F:SERG1]
-Now, the property business isn't all about high-falootin' paper pushing.
-
-[TEX1_G:SERG1]
-It's about dirt! And the will to claim that dirt! You with me, son?
-
-[TEX1_H:SERG1]
-Oh yeah.
-
-[TEX1_K:SERG1]
-Persuasion's my forte.
-
-[TEX1_L:SERG1]
-Yeh, he'll be down at the country club, down on the golf course.
-
-[TEX1_M:SERG1]
-They don't allow guns, so his bodyguards won't be packing lawgivers.
-
-[TEX1_N:SERG1]
-Go beat eight tons of crap out of him.
-
-[TEX1_O:SERG1]
-Here now - I got you a membership, and boy you're going to need more appropriate clothing.
-
-[TEX1_2:SERG1]
-~g~Now head to the Leaf Links Golf Club.
-
-[TEX1_3:SERG1]
-Who's this guy? Boys, deal with him.
-
-[TEX1_6:SERG1]
-Nice ass baby!
-
-[TEX1_7:SERG1]
-Is this me?
-
-[TEX1_I:SERG1]
-Well, I need some tenacious bastard to let go of some dirt,
-
-[TEX1_J:SERG1]
-and you look to me like the kind of guy to persuade him.
-
-[TEX1_0:SERG1]
-~g~The target is at the driving range enjoying a game of golf. Make sure it's his last.
-
-[TEX1_8:SERG1]
-Each time you enter a caddy you automatically receive a golf club, providing your melee weapon slot is empty.
-
-[TEX1_9:SERG1]
-Get him!
-
-[TEX1_10:SERG1]
-Kill that Psycho!
-
-[TEX1_1:SERG1]
-~g~Go and pick up some golfing clothes from Jocksports.
-
-{=================================== MISSION TABLE SERG2 ===================================}
-
-[TEX_2A:SERG2]
-~g~Excellent! They've spotted you!
-
-[TEX_2B:SERG2]
-~r~Fool! People have to WITNESS a Cuban doing the hit!
-
-[TEX_2C:SERG2]
-~g~Go get yourself some Cuban gang colors in Little Havana!
-
-[TEX_2D:SERG2]
-~g~Take out the Haitian Gang Lord at Romero's Funeral Parlor!
-
-[TEX2_A:SERG2]
-Tommy, this is Donald Love. Donald, this here is Tommy Vercetti,
-
-[TEX2_B:SERG2]
-the latest gunslinger to come to these parts.
-
-[TEX2_C:SERG2]
-Yeh...uh...
-
-[TEX2_D:SERG2]
-Donald, you just shut up and listen, and you might learn something.
-
-[TEX2_E:SERG2]
-Now, nothing brings down real estate prices quicker than a good old-fashioned gang war -
-
-[TEX2_F:SERG2]
-'cept maybe a disaster, like a biblical plague or something,
-
-[TEX2_G:SERG2]
-but, that may be going too far in this case.
-
-[TEX2_H:SERG2]
-You getting this down, you four-eyed prick?
-
-[TEX2_I:SERG2]
-Now recently a Haitian gang lord died. Apparently the Cubans did it, nobody's certain.
-
-[TEX2_J:SERG2]
-But let's make them certain! You disguise yourself as a Cuban hombre,
-
-[TEX2_K:SERG2]
-and head on down to crash that funeral. Mix it up, and then high tail it.
-
-[TEX2_L:SERG2]
-You getting this down, Donald?
-
-[TEX2_M:SERG2]
-Well, that ought to put the coyote in the chicken coop, huh?
-
-[TEX2_N:SERG2]
-And then we'll just sit back, and watch the prices tumble.
-
-[TEXEXIT:SERG2]
-~g~Now get out of Little Haiti!
-
-{=================================== MISSION TABLE SERG3 ===================================}
-
-[TEX3_A:SERG3]
-Now look here, son. I got a problem and I reckon you could help me with it.
-
-[TEX3_B:SERG3]
-I'm no builder.
-
-[TEX3_C:SERG3]
-No, I was thinking more of your demolition skills.
-
-[TEX3_D:SERG3]
-Now this here, this is the development as planned and this,
-
-[TEX3_E:SERG3]
-this is the property that we're looking at.
-
-[TEX3_F:SERG3]
-You're trying to say this new office block is kind of in the way.
-
-[TEX3_G:SERG3]
-You catch on quick.
-
-[TEX3_H:SERG3]
-Now I'm going to head out of town for a while
-
-[TEX3_I:SERG3]
-and if that office development were to face sudden and insurmountable structural problems, then I..
-
-[TEX3_J:SERG3]
-As a civil minded individual you'd feel obliged to step in and
-
-[TEX3_K:SERG3]
-save the rejuvenation of an important area of the city?
-
-[TEX3_L:SERG3]
-Where can I get more guys like you?
-
-[TEX3_1:SERG3]
-~g~Use the RC helicopter to transport bombs to four demolition points on the building site.
-
-[TEX3_2:SERG3]
-~g~You must place one bomb at each target. You can place bombs in any order.
-
-[TEX3_3:SERG3]
-~g~Maneuver the RC helicopter next to a bomb to pick it up. it can carry one bomb at a time..
-
-[TEX3_5:SERG3]
-~g~If you place a bomb unsuccessfully you can pick it up and try again.
-
-[TEX3_7:SERG3]
-~g~You must then place the remaining bombs in 7 minutes!
-
-[TEX3_8:SERG3]
-~g~You missed the target! Pick up a bomb and try again!
-
-[TEX3_10:SERG3]
-~g~Drop the bomb at a target.
-
-[TEX3_11:SERG3]
-targets left:
-
-[TEX3_17:SERG3]
-~r~You ran out of time!
-
-[TEX3_18:SERG3]
-~r~Your RC Helicopter has been destroyed!
-
-[TEX3_19:SERG3]
-~r~You dropped your bomb in the water! That ain't no way to fish!
-
-[TEX3_20:SERG3]
-~r~The RC Helicopter is nearly out of range!
-
-[TEX3_21:SERG3]
-~r~The RC Helicopter went out of range!
-
-[TEX3_24:SERG3]
-Press the ~h~~k~~VEHICLE_LOOKLEFT~ ~w~button to rotate the helicopter counter-clockwise.
-
-[TEX3_25:SERG3]
-Press the ~h~~k~~VEHICLE_LOOKRIGHT~ ~w~button to rotate the helicopter clockwise.
-
-[TEX3_27:SERG3]
-~g~A central stairway allows access to all the floors in the building.
-
-[TEX3_31:SERG3]
-~r~You destroyed the TOPFUN van that contained the bombs and RC helicopter!
-
-[TEX3_32:SERG3]
-You can ~h~look behind~w~ by simultaneously pressing the ~h~~k~~VEHICLE_LOOKLEFT~~w~ and the ~h~~k~~VEHICLE_LOOKRIGHT~~w~ buttons.
-
-[TEX3_4:SERG3] { reVC update }
-~g~To drop a bomb press the~h~ ~k~~VEHICLE_FIREWEAPON~ ~g~button.
-
-[TEX3_29:SERG3] { reVC update }
-To drop a bomb press the~h~ ~k~~VEHICLE_FIREWEAPON~ ~w~button.
-
-[TEX3_26:SERG3]
-Pressing the ~h~~k~~VEHICLE_BRAKE~ ~w~button ~w~decreases the rotor speed, causing the helicopter to~h~ descend.
-
-[TEX3_22:SERG3]
-Pressing the ~h~~k~~VEHICLE_ACCELERATE~ ~w~button increases the rotor speed, causing the helicopter to ~h~ascend.
-
-[TEX3_16:SERG3]
-~g~Get to the ~w~TOPFUN ~g~van near the building site to be demolished.
-
-[TEX3_33:SERG3]
-Once you pick up a bomb the radar will show you the position of the target relative to the RC helicopter.
-
-[TEX3_34:SERG3]
-An ~h~upwards pointing triangular blip ~w~indicates the target is ~h~above ~w~the RC helicopter.
-
-[TEX3_35:SERG3]
-A ~h~downward pointing triangular blip ~w~indicates the target is ~h~below ~w~the RC helicopter.
-
-[TEX3_36:SERG3]
-A ~h~square blip ~w~indicates the target is on the ~h~same level ~w~as the RC helicopter
-
-[TEX3_6:SERG3]
-~g~Once you have picked up a bomb for the first time, the detonation timer will start.
-
-[TEX3_28:SERG3]
-To ~h~pick up a bomb~w~, simply maneuver the RC helicopter next to it. The RC Helicopter can carry one bomb at a time.
-
-[TEX3_30:SERG3]
-~g~To pick up a bomb, simply maneuver the RC helicopter next to it. The RC Helicopter can carry one bomb at a time.
-
-[TEX3_12:SERG3]
-~g~Bomb planted! Only 3 more targets to go! Go back and get another bomb.
-
-[TEX3_13:SERG3]
-~g~Bomb planted! Only 2 more targets to go! Go back and get another bomb.
-
-[TEX3_14:SERG3]
-~g~Bomb planted! Only 1 more target to go! Go back and get another bomb.
-
-[TEX3_15:SERG3]
-~r~Detonation timer initiated! ~g~You must plant the ~w~4 bombs ~g~in the remaining time!
-
-[TEX3_37:SERG3]
-Pushing ~h~back on the analog stick ~w~decreases the rotor speed, causing the helicopter to~h~ descend.
-
-[TEX3_38:SERG3] { reVC update }
-{ Pressing the ~h~~k~~VEHICLE_ACCELERATE~ ~w~button increases the rotor speed, causing the helicopter to ~h~ascend. }
-Pushing ~h~forward on the analog stick ~w~increases the rotor speed, causing the helicopter to ~h~ascend.
-
-[TEX3_39:SERG3]
-~g~To drop a bomb press the ~h~~k~~VEHICLE_HANDBRAKE~ ~g~button.
-
-[TEX3_40:SERG3]
-To drop a bomb press the ~h~~k~~VEHICLE_HANDBRAKE~ ~w~button.
-
-[TEX3_23:SERG3]
-Press the ~h~~k~~VEHICLE_TURRETUP~~w~ and ~h~~k~~VEHICLE_TURRETDOWN~~w~ buttons to tilt the helicopter in the direction you wish to maneuver it.
-
-{=================================== MISSION TABLE TAXI1 ===================================}
-
-[FARES:TAXI1]
-FARES:
-
-[TAXI1:TAXI1]
-~g~Look for a fare.
-
-[TSCORE2:TAXI1]
-$~1~
-
-[IN_ROW:TAXI1]
-~1~ IN A ROW bonus! $~1~
-
-[TAXI3:TAXI1]
-~r~Your passenger fled in terror!
-
-[TAXI7:TAXI1]
-~r~Your car is trashed, get it repaired.
-
-[TAXI4:TAXI1]
-Fare complete!
-
-[TAXI5:TAXI1]
-SPEED BONUS!!
-
-[TAXI6:TAXI1]
-Taxi mission over
-
-[TAXIH1:TAXI1]
-Stop near a highlighted pedestrian to pick them up then drive them to their destination before the time runs out.
-
-[FARE1:TAXI1]
-~g~Destination ~w~'The Pole Position Club' ~g~in Ocean Beach.
-
-[FARE3:TAXI1]
-~g~Destination ~w~'The Marina' ~g~in Ocean Beach.
-
-[FARE4:TAXI1]
-~g~Destination ~w~'Ammu-Nation' ~g~in Ocean Beach.
-
-[FARE5:TAXI1]
-~g~Destination ~w~'The Hardware store' ~g~in Washington Beach.
-
-[FARE6:TAXI1]
-~g~Destination ~w~'The North Point Mall' ~g~in Vice Point.
-
-[MFARE1:TAXI1]
-~g~Destination ~w~'Ammu-Nation' ~g~in Downtown.
-
-[MFARE2:TAXI1]
-~g~Destination ~w~'the Terminal' ~g~at Escobar International Airport.
-
-[WFARE3:TAXI1]
-~g~Destination ~w~'Sunshine Autos' ~g~in Little Havana.
-
-[WFARE4:TAXI1]
-~g~Destination ~w~'Kaufman Cabs' ~g~in Little Haiti.
-
-[WFARE5:TAXI1]
-~g~Destination ~w~'The Hardware store' ~g~in Little Havana.
-
-[WFARE6:TAXI1]
-~g~Destination ~w~'Howlin Petes Bike Emporium' ~g~in Downtown.
-
-[FARE7:TAXI1]
-~g~Destination ~w~'The Jewelers' ~g~in Vice Point.
-
-[FARE8:TAXI1]
-~g~Destination ~w~'The Beach' ~g~in Ocean Beach.
-
-[FARE9:TAXI1]
-~g~Destination ~w~'The Beach' ~g~in Washington Beach.
-
-[FARE10:TAXI1]
-~g~Destination ~w~'The Beach' ~g~in Vice Point.
-
-[FARE11:TAXI1]
-~g~Destination ~w~'Hospital' ~g~in Ocean Beach.
-
-[FARE12:TAXI1]
-~g~Destination ~w~'Hospital' ~g~in Vice Point.
-
-[FARE13:TAXI1]
-~g~Destination ~w~'Police Station' ~g~in Washington Beach.
-
-[FARE14:TAXI1]
-~g~Destination ~w~'Police Station' ~g~in Vice Point.
-
-[FARE15:TAXI1]
-~g~Destination ~w~'Pizza Restaurant' ~g~in Vice Point.
-
-[WFARE7:TAXI1]
-~g~Destination ~w~'Police Station' ~g~in Little Havana.
-
-[WFARE8:TAXI1]
-~g~Destination ~w~'Police Station' ~g~in Downtown.
-
-[WFARE9:TAXI1]
-~g~Destination ~w~'Hospital' ~g~in Downtown.
-
-[WFARE10:TAXI1]
-~g~Destination ~w~'Hospital' ~g~in Little Havana.
-
-[WFARE11:TAXI1]
-~g~Destination ~w~'The Stadium' ~g~in Downtown.
-
-[WFARE12:TAXI1]
-~g~Destination ~w~'Pizza Restaurant' ~g~in Little Haiti.
-
-[WFARE13:TAXI1]
-~g~Destination ~w~'Pizza Restaurant' ~g~in Downtown.
-
-[WFARE14:TAXI1]
-~g~Destination ~w~'Docks' ~g~in Viceport.
-
-[WFARE15:TAXI1]
-~g~Destination ~w~'Chemist' ~g~in Little Haiti.
-
-[FARE2:TAXI1]
-~g~Destination ~w~'The Malibu club' ~g~in Vice Point.
-
-{=================================== MISSION TABLE TAXICUT ===================================}
-
-[TAXC_A:TAXICUT]
-Guess you're the new owner.
-
-[TAXC_B:TAXICUT]
-What are you, mob? Cartel? You don't look Mexican...
-
-[TAXC_C:TAXICUT]
-Anyhoo, I guess you better get on with the 'things are gonna change around here' crap,
-
-[TAXC_D:TAXICUT]
-maybe threaten one of the drivers -
-
-[TAXC_E:TAXICUT]
-go steady on Ted over there, he's just had his hernia fixed.
-
-[TAXC_F:TAXICUT]
-Well, yeah. Things are going to change around here, lady.
-
-[TAXC_G:TAXICUT]
-Oh crap, sonny. Might as well leave this to me -
-
-[TAXC_H:TAXICUT]
-I've been doing this for years.
-
-[TAXC_I:TAXICUT]
-Now hear this.
-
-[TAXC_J:TAXICUT]
-We are now under new management and things are going to change around here again.
-
-[TAXC_K:TAXICUT]
-Our new management, the
-
-[TAXC_L:TAXICUT]
-- Which gang are you?
-
-[TAXC_M:TAXICUT]
-Well, I'm not part of any gang actually.
-
-[TAXC_N:TAXICUT]
-What's your goddamned name, kid?
-
-[TAXC_O:TAXICUT]
-Vercetti, Tommy Vercetti.
-
-[TAXC_P:TAXICUT]
-Our new management, the Vercetti Gang,
-
-[TAXC_Q:TAXICUT]
-is gonna make sure we get no trouble.
-
-[TAXC_R:TAXICUT]
-Capiche? Out!
-
-[TAXC_S:TAXICUT]
-Did you like the 'capiche'? I liked the 'capiche'.
-
-[TAXC_T:TAXICUT]
-So this is how it's worked in the past,
-
-[TAXC_U:TAXICUT]
-We run the firm as usual.
-
-[TAXC_V:TAXICUT]
-If we get any trouble from rival firms, you beat the crap out of them.
-
-[TAXC_W:TAXICUT]
-Then they beat the crap out of us,
-
-[TAXC_X:TAXICUT]
-then you beat the crap out of them,
-
-[TAXC_Y:TAXICUT]
-etcetera, etcetera. You got it?
-
-[TAXC_Z:TAXICUT]
-Uh, yeah, I guess...
-
-[TAXC_A1:TAXICUT]
-Just grab a taxi from the garage if you feel like jumping in.
-
-{=================================== MISSION TABLE TAXIWA1 ===================================}
-
-[OUTTIME:TAXIWA1]
-~r~Too slow, man, too slow!
-
-[TAX1_1:TAXIWA1]
-Ok, we got a high class fare needs picking up from Starfish island - any takers?
-
-[TAX1_2:TAXIWA1]
-Tommy here, I'll take it!
-
-[TAX1_3:TAXIWA1]
-This is my fare, back off asshole!
-
-[TAX1_4:TAXIWA1]
-Come on come on, Get in, quick!
-
-[TAX1_5:TAXIWA1]
-Ok, ok! Just don't hurt me!
-
-[TAXW1_1:TAXIWA1]
-~g~Pick up the V.I.P. on Starfish Island.
-
-[TAXW1_2:TAXIWA1]
-~g~Get the V.I.P back! Take the other car out!
-
-[TAXW1_3:TAXIWA1]
-~r~The V.I.P. is dead!
-
-[TAXW1_4:TAXIWA1]
-~r~The V.I.P. has been dropped off!
-
-[TAXW1_6:TAXIWA1]
-~g~Take the V.I.P. to the airport!
-
-{=================================== MISSION TABLE TAXIWA2 ===================================}
-
-[TAX2_1:TAXIWA2]
-Calling all cars, we're losing fares all over town. What's with you guys?
-
-[TAX2_2:TAXIWA2]
-VC Cabs keep beating us to it. They've just got too many cars - we can't compete!
-
-[TAX2_3:TAXIWA2]
-Mr. Vercetti, if you're out there listening in, you gotta put some VC Cabs out of action before we go bust!
-
-[TAXW2_1:TAXIWA2]
-~g~Destroy 3 of the rival taxis!
-
-{=================================== MISSION TABLE TAXIWA3 ===================================}
-
-[TAX3_1:TAXIWA3]
-Car 13, We got a Miss Cortez, asked for you especially.
-
-[TAX3_2:TAXIWA3]
-Ok, I got it. Car 13 out!
-
-[TAX3_3:TAXIWA3]
-Hmmmm, no sign of Mercedes...
-
-[TAXW3_3:TAXIWA3]
-~g~Take out the leader cab!
-
-[TAXW3_2:TAXIWA3]
-~g~Stay alive until the timer runs out.
-
-[TAX_AS1:TAXIWA3]
-TAXI FIRM ASSET COMPLETED
-
-[TAX_AS2:TAXIWA3]
-~g~Kaufman Cabs will now generate revenue up to a maximum of $~1~. Make sure you collect it regularly.
-
-[TAX3_4:TAXIWA3]
-It's time for Kaufman Cab's guardian angel to eat some fender!
-
-[TAX3_5:TAXIWA3]
-Hey boy I'm gonna tan your hide!
-
-{ reVC updates }
-{ new languages }
-[FEL_JAP]
-JAPANESE
-
-[FEL_POL]
-POLISH
-
-[FEL_RUS]
-RUSSIAN
-
-{ new display menus }
-[FET_GFX]
-GRAPHICS SETUP
-
-[FED_MIP]
-MIP MAPPING
-
-[FED_AAS]
-ANTI ALIASING
-
-[FED_FIL]
-TEXTURE FILTERING
-
-[FED_BIL]
-BILINEAR
-
-[FED_TRL]
-TRILINEAR
-
-[FED_WND]
-WINDOWED
-
-[FED_FLS]
-FULLSCREEN
-
-[FEM_CSB]
-CUTSCENE BORDERS
-
-[FEM_SCF]
-SCREEN FORMAT
-
-[FEM_ISL]
-MAP MEMORY USAGE
-
-[FEM_LOW]
-LOW
-
-[FEM_MED]
-MEDIUM
-
-[FEM_HIG]
-HIGH
-
-[FEM_2PR]
-PS2 ALPHA TEST
-
-[FEC_FRC]
-FREE CAM
-
-{ Linux joy detection }
-[FEC_JOD]
-DETECT JOYSTICK
-
-[FEC_JPR]
-Press any key on the joystick of your choice that you want to use on the game, and it will be selected.
-
-[FEC_JDE]
-Detected joystick
-
-{ mission restart }
-[FET_RMS]
-REPLAY MISSION
-
-[FESZ_RM]
-RETRY?
-
-[FED_VPL]
-VEHICLE PIPELINE
-
-[FED_PRM]
-PED RIM LIGHT
-
-[FED_RGL]
-ROAD GLOSS
-
-[FED_CLF]
-COLOUR FILTER
-
-[FED_WLM]
-WORLD LIGHTMAPS
-
-[FED_MBL]
-MOTION BLUR
-
-[FEM_SIM]
-SIMPLE
-
-[FEM_NRM]
-NORMAL
-
-[FEM_MOB]
-MOBILE
-
-[FED_MFX]
-MATFX
-
-[FED_NEO]
-NEO
-
-[FEM_PS2]
-PS2
-
-[FEM_XBX]
-XBOX
-
-[FEC_IVP]
-INVERT PAD VERTICALLY
-
-[FEM_NON]
-NONE
-
-[FEC_DS2]
-DUALSHOCK 2
-
-[FEC_DS3]
-DUALSHOCK 3
-
-[FEC_DS4]
-DUALSHOCK 4
-
-[FEC_360]
-XBOX 360 CONTROLLER
-
-[FEC_ONE]
-XBOX ONE CONTROLLER
-
-[FEC_NSW]
-NINTENDO SWITCH CONTROLLER
-
-[FEC_TYP]
-GAMEPAD TYPE
-
-[FET_AGS]
-GAMEPAD SETTINGS
-
-[FEM_AUT] { aspect ratio related }
-AUTO
-
-[FEM_PED]
-PED DENSITY
-
-[FEM_CAR]
-CAR DENSITY
-
-{ end of file }
-[DUMMY]
-THIS LABEL NEEDS TO BE HERE !!!
-AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file
diff --git a/utils/gxt/build.bat b/utils/gxt/build.bat
index 7327497f..d57fa0a6 100644
--- a/utils/gxt/build.bat
+++ b/utils/gxt/build.bat
@@ -1,5 +1,5 @@
-gxt -g VC -i "american.txt" -o "../../gamefiles/TEXT/american.gxt"
-gxt -g VC -i "french.txt" -o "../../gamefiles/TEXT/french.gxt"
-gxt -g VC -i "german.txt" -o "../../gamefiles/TEXT/german.gxt"
-gxt -g VC -i "italian.txt" -o "../../gamefiles/TEXT/italian.gxt"
-gxt -g VC -i "spanish.txt" -o "../../gamefiles/TEXT/spanish.gxt" \ No newline at end of file
+gxt -g LCS -i "ENGLISH.txt" -o "../../gamefiles/TEXT/ENGLISH.gxt"
+gxt -g LCS -i "french.txt" -o "../../gamefiles/TEXT/french.gxt"
+gxt -g LCS -i "german.txt" -o "../../gamefiles/TEXT/german.gxt"
+gxt -g LCS -i "italian.txt" -o "../../gamefiles/TEXT/italian.gxt"
+gxt -g LCS -i "spanish.txt" -o "../../gamefiles/TEXT/spanish.gxt" \ No newline at end of file
diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt
index 73860f9c..3f57a6a6 100644
--- a/utils/gxt/french.txt
+++ b/utils/gxt/french.txt
@@ -1,1716 +1,1508 @@
-{
- New strings are at the bottom of file.
- Do not change the order of strings.
- You can fix the typos of existing translation but please refrain from
- unnecessary edits like rephasing because you think it suits better for your taste.
-}
+[LETTER1]
+abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"$,.'-?!!SDBF
-[RAMPAGE]
-RODEO!
-
-[RAMP_F]
-ECHEC DU RODEO!
-
-[RAMP_P]
-RODEO REUSSI!
-
-[RAMP_A]
-TOUS LES RODEOS REUSSIS!
-
-[PAGE_01]
-Tue ~1~ membres de gang en 2 minutes!
-
-[PAGE_02]
-Détruis ~1~ véhicules en 2 minutes!
-
-[PAGE_03]
-Roule à côte des membres de gang et tue-en ~1~ en 2 minutes!
-
-[PAGE_04]
-Ecrase ~1~ membres de gang en 2 minutes!
-
-[PAGE_05]
-Eclate la tête de ~1~ membres de gang en 2 minutes!
-
-[FEC_ABR]
-Accélérer, freiner ou marche arrière
-
-[CLOHELP]
-Vêtements changés!
-
-[FE_MLG]
-LEGENDE DE LA CARTE
-
-[FED_RDR]
-RADAR
-
-[FED_HUD]
-L'INTERFACE
-
-[FED_RDL]
-GRAND
-
-[FED_RDB]
-BIPS UNIQUEMENT
-
-[FED_HUF]
-FONDU
-
-[FEI_BTU]
-; = -
-
-[FEI_SCR]
-Fait défiler
-
-[FEST_HV]
-Missions d'Autodéfense, niveau maximum
-
-[LG_01]
-Position du joueur
-
-[LG_02]
-Avery Carrington
+[DEFNAM]
+Claude----------------------
-[LG_03]
-Motards
-
-[LG_04]
-Colonel Cortez
-
-[LG_05]
-Ricardo Diaz
+[IN_VEH]
+~w~Hé ! Remonte dans le ~b~véhicule !
-[LG_06]
-Kent Paul
+[IN_VEH2]
+~w~Il te faut un véhicule pour ce job !
-[LG_07]
-Avocat
+[IN_BOAT]
+~w~Il te faut un bateau pour ce job !
-[LG_08]
-Phil Cassidy
+[HEY]
+~w~Reste avec tes potes !
-[LG_09]
-Chantier naval
+[HEY2]
+~w~Vous séparez pas, toi et tes potes !
-[LG_10]
-Club Malibu
+[HEY7]
+~w~Un flingue de plus, ce serait pas du luxe ! Fais demi-tour et va chercher ton contact !
-[LG_11]
-Cubains
+[HEY9]
+~w~Tu veux dominer la rue ? Va voir ton contact !
-[LG_12]
-Studio de Cinéma
+[GATE_1]
+~w~Les Sindacco n'ouvriront la porte qu'aux voitures Sindacco.
-[LG_13]
-Ammu-Nation
+[HELPA]
+~w~Voici ta ~h~planque.
-[LG_14]
-Haïtiens
+[HELPB]
+~w~En dehors des missions, tu peux sauvegarder ta partie en récupérant des ~h~icones de sauvegarde~w~. Le temps avance alors de 6 heures.
-[LG_15]
-Quincaillerie
+[HELPC]
+~w~Les véhicules restant dans le ~h~garage d'à côté~w~ seront stockés quand tu sauvegarderas ta partie.
-[LG_16]
-Planque
+[HELPD]
+Pour quitter la planque, place-toi sur le ~h~repère.
-[LG_17]
-Crèmes glacées
+[HELP0]
+~w~Appuie sur~h~ ~k~ ~VEEE~ ~w~pour monter ou descendre d'un véhicule.
-[LG_18]
-Taxi Kaufman
+[HELP1]
+~w~Arrête-toi au centre du ~h~repère jaune.
-[LG_19]
-Love Fist
+[HELP3]
+~w~Tu ne peux sprinter que pendant un bref instant avant d'être à bout de souffle.
-[LG_20]
-Imprimerie
+[HELP4]
+~w~Utilise~h~ ~k~ ~VEACC~ ~w~pour ~h~accélérer et~h~ ~k~ ~VESTR~ ~w~pour te diriger.
-[LG_21]
-Propriété
+[HELP5]
+~w~Appuie sur~h~ ~k~ ~VEBRK~ ~w~pour ~h~freiner~w~, ou faire ~h~marche arrière~w~ si le véhicule est à l'arrêt.
-[LG_22]
-Pay 'n' Spray
+[HELP6]
+~w~Appuie sur~h~ ~k~ ~VEHB~ ~w~pour utiliser le ~h~frein à main.
-[LG_23]
-Boutique de fringues
+[HELP7]
+~w~Maintiens~h~ ~k~ ~PDLT~ ~w~pour viser avec le fusil de précision.
-[LG_24]
-Manoir de Tommy
+[HELP8]
+~w~Utilise~h~ ~k~ ~SNZI~ ~w~et~h~ ~k~ ~SNZO~ ~w~pour faire des ~h~zooms avant et arrière~w~ quand tu vises.
-[LG_25]
-Téléphone
+[HELP10]
+~w~Le ~h~badge jaune~w~ t'indique que tu es ~h~recherché~w~. Les flics essaieront alors de t'arrêter !
-[LG_26]
-Station de radio Wildstyle
+[HELP11]
+~w~Plus il y a de badges à l'écran, plus les flics te recherchent activement.
-[LG_27]
-Station de radio Flash FM
+[HELP12]
+~w~Avance sur le ~h~repère jaune~w~ pour lancer une mission.
-[LG_28]
-Station de radio KChat
+[HELP13]
+~w~Sois à l'affût des chemins qui n'apparaissent pas sur le ~h~radar~w~ et utilise-les à ton avantage !
-[LG_29]
-Station de radio Fever 105
+[HELP14]
+~w~Utilise le ~h~radar~w~ pour te repérer dans la ville. Suis le ~h~spot jaune~w~ pour trouver ta ~h~planque.
-[LG_30]
-Station de radio VRock
+[HELP16]
+~w~Utilise~h~ ~k~ ~VESTR~ ~w~pour te diriger.
-[LG_31]
-Station de radio VCPR
+[HELP17]
+~w~Phil Cassidy : pour une marchandise calibrée ! Nouvel arrivage très bientôt !
-[LG_32]
-Station de radio Espantoso
+[HELP18]
+~w~Un nouvel arrivage vient d'être livré à l'armurerie de Phil Cassidy !
-[LG_33]
-Station de radio Emotion 98.3
+[HELP18B]
+~w~Phil Cassidy a maintenant le ~h~minigun~w~ en stock !
-[LG_34]
-Station de radio Onde 103
+[HELP19A]
+~w~Pour ~h~tirer en roulant~w~, maintiens~h~ ~k~ ~VELL~ ~w~ou~h~ ~k~ ~VELR~ ~w~et tire avec~h~ ~k~ ~VEWEP~.
-[LG_35]
-Destination
+[HELP19C]
+~w~Tu peux tirer en roulant que si t'as une ~h~mitraillette.
-[LG_36]
-Sun Yard
+[HELP19D]
+En ~h~moto~w~, tu peux ~h~tirer vers l'avant~w~ en appuyant sur~h~ ~k~ ~VEWEP~.
-[LG_37]
-Boîte de striptease
+[HELP19F]
+~w~Tu peux tirer vers l'avant que si t'as une ~h~mitraillette.
-[MAP_YAH]
-VOUS ETES ICI
+[HELP20]
+~w~T'as trouvé un ~h~pot-de-vin~w~ ! Récupère-le pour faire baisser ton ~h~indice de recherche~w~ d'une étoile !
-[MAP_LEG]
-Légende
+[HELP21]
+~w~Utilise~h~ ~k~ ~PDCWE~ ~w~pour changer d'arme quand t'es à pied.
-[SENTXS]
-Sentinelle XS
+[HELP22]
+~w~Pour trouver l'~h~entrepôt de Vincenzo~w~, suis le ~h~V~w~ sur le radar.
-[VCNMAV]
-VCN Maverick
+[HELP23]
+~w~Le spot est un ~h~triangle orienté vers le bas~w~, ce qui t'indique que la ~h~cible se situe plus bas~w~ par rapport à ta position.
-[TAXSHRT]
-~g~Au lieu de conduire, tu peux te servir de ce taxi Kaufman pour te déplacer. Cela te coûtera $9.
+[HELP24]
+~w~Maintiens~h~ ~k~ ~VELL~ ~w~ou~h~ ~k~ ~VELR~ ~w~pour regarder ~h~à gauche ou à droite~w~ dans un véhicule. Maintiens les deux pour regarder ~h~vers l'arrière.
-[BRIBE1]
-Tu viens de récupérer un pot-de-vin de la police. Cela réduira ton indice de recherche d'une étoile.
+[HELP25]
+~w~Appuie sur~h~ ~k~ ~CVEIW~ ~w~pour changer de ~h~mode de caméra.
-[SUNSHIN]
-Sunshine Autos
+[HELP26]
+~w~Saute dans un bateau et appuie sur ~h~ ~k~ ~VEEE~ ~w~pour grimper à bord.
-[KAUFCAB]
-Taxis Kaufman
+[HELP27]
+~w~Si t'es à côté d'un bateau, appuie sur~h~ ~k~ ~VEEE~ ~w~pour monter à bord.
-[BOATYAR]
-Le chantier naval
+[HELP29]
+~w~Appuie sur~h~ ~k~ ~VEHN~ ~w~pour ~h~klaxonner.
-[WANT_L]
-Tu as perdu ton indice de recherche. Ne commets pas de délit tant que les étoiles brillent ou tu seras de nouveau très recherché.
+[HELP30]
+~w~Utilise~h~ ~k~ ~VECRS~ ~w~pour changer de ~h~station de radio.
-[HOTRNG]
-HOTRING
+[HELP33]
+~w~Maintenant que les tueurs ont été payés, ils feront leur job, peu importe le temps que ça prendra.
-[BLODRNG]
-BLOODRING
+[HELP34]
+~w~Maintiens~h~ ~k~ ~VELB~ ~w~pour regarder derrière quand tu conduis.
-[DIRTRNG]
-DIRTRING
+[HELP38]
+~w~Si tu butes quelqu'un qui est armé, tu peux récupérer son arme.
-[IN_VEH]
-~g~Eh! Remonte dans ta caisse!
+[HELP40]
+~w~A pied, utilise~h~ ~k~ ~PDLOO~ ~w~pour regarder autour de toi.
-[HEY]
-~g~Te la joue pas perso, reste avec tes potes!
+[HELP58]
+~w~Maintiens~h~ ~k~ ~PDLT~ ~w~pour ~h~verrouiller une cible~w~ et appuie sur~h~ ~k~ ~PDFW~ ~w~pour tirer !
-[HELP3]
-T'es vite crevé, ton sprint ne dure donc pas longtemps.
+[HELP59]
+~w~Une fois ta cible verrouillée, appuie sur ~h~~k~ ~PDCTL~ ~w~pour en changer.
-[HELP4_D]
-Pousse le ~h~joystick analogique droit ~w~ vers le haut pour ~h~accélérer.
+[HELP60]
+~w~Certains barils explosent si tu tires dessus. Mais garde tes distances, ça vaut mieux !
-[HELP5_D]
-Tire le ~h~joystick analogique droit~w~ vers toi pour ~h~freiner~w~ ou pour ~h~reculer~w~ si le véhicule est à l'arrêt.
+[TANK]
+~w~Utilise~h~ ~k~ ~VEWEA~ ~w~pour viser le canon du Rhino et~h~ ~k~ ~VEWEP~ ~w~pour tirer.
-[HELP7_A]
-Maintiens la ~h~ ~k~~PED_LOCK_TARGET~ ~w~ enfoncée pour ~h~viser~w~ avec le fusil à lunette.
+[ANSWER]
+~w~Appuie sur~h~ ~k~ ~ANS~ ~w~pour répondre à ton portable et sur~h~ ~k~ ~VEEE~ ~w~pour raccrocher.
-[HELP7_D]
-Maintiens la ~h~ ~k~~PED_LOCK_TARGET~ ~w~ enfoncée pour ~h~viser~w~ avec le fusil à lunette.
+[BOMB]
+~w~Si tu conduis une caisse à l'atelier, 8-Ball te demandera ~h~500$~w~ pour y poser une ~h~bombe~w~.
-[HELP10]
-Ce badge t'indique que t'es recherché par la police.
+[BRIDGE1]
+~w~Callahan Bridge : en construction. Fin des travaux : mai 1998
-[HELP11]
-Plus t'as de badges, plus ton indice de recherche est important.
+[STRIK_1]
+~w~Tu pourras prendre le ~h~ferry~w~ jusqu'à Staunton Island quand la grève sera terminée.
-[HELP13]
-Tu as parfois intérêt à emprunter des chemins non indiqués sur le radar.
+[SPRAY]
+~w~Va au ~h~Pay 'n' Spray~w~ pour supprimer ton ~h~indice de recherche~w~, ~h~réparer ~w~et ~h~repeindre ~w~ton véhicule pour ~h~100$.
-[TIMER]
-Cette mission est en temps limité. Tu dois donc la réussir avant que le compteur n'atteigne zéro.
+[S_TRN_1]
+~w~Prends le ~h~métro~w~ pour te déplacer dans Liberty City. Appuie sur~h~ ~k~ ~VEEE~ ~w~pour ~h~monter ~w~ou ~h~descendre~w~ d'une rame.
-[HORN]
-~g~Klaxonne!
+[TUBE1]
+~w~Quand la station sera ouverte, tu pourras prendre le ~h~métro~w~ jusqu'à Staunton Island.
-[NOMONEY]
-~g~T'as pas assez de cash!
+[TUBE2]
+~w~Dès que cette station sera ouverte, tu pourras te rendre au ~h~Francis International Airport~w~.
-[REWARD]
-RECOMPENSE $~1~
+[TUBE_2]
+~w~Pour monter à bord d'une ~h~rame de métro~w~, appuie sur~h~ ~k~ ~VEEE~.
-[M_FAIL]
-ECHEC DE LA MISSION!
+[SPRAY1]
+~w~Gare-toi au ~h~Pay 'n' Spray~w~ pour te débarrasser de ton ~h~indice de recherche~w~, et faire ~h~réparer ~w~et ~h~repeindre ~w~ton véhicule. D'habitude, c'est ~h~100$~w~ mais pour cette fois, c'est cadeau.
-[M_PASS]
-MISSION ACCOMPLIE! $~1~
+[HELPE31]
+~w~A mesure que tu progresses dans le jeu, tu peux récupérer de nouvelles tenues auprès de M. Benz.
-[DEAD]
-T'ES MORT!
+[HELPE32]
+~w~Pendant le jeu, rends-toi chez Ammu-Nation pour t'approvisionner en armes ultra puissantes.
-[BUSTED]
-CHOPE!
+[HELPCOM]
+~w~De nouvelles tenues sont dispos à la planque !
-[WEATHE1]
-TEMPS ENSOLEILLE
+[HELP41]
+~w~Gare-toi au ~h~Pay 'n' Spray~w~ pour faire repeindre et réparer ton véhicule. Suis la ~h~bombe de peinture~w~ sur le radar pour trouver le ~h~Pay 'n' Spray.
-[WEATHE2]
-TEMPS TRES ENSOLEILLE
+[PAGEB1]
+~w~Le ~h~pistolet~w~ est dispo dans ta planque !
-[WEATHE3]
-TEMPS NUAGEUX
+[PAGEB10]
+~w~T'as retrouvé tous les paquets ! Voici un bonus de ~h~50000$ !
-[WEATHE4]
-TEMPS PLUVIEUX
+[EXPO_W]
+~w~Love Media en a besoin d'un comme ça !
-[WEATHE5]
-TEMPS BRUMEUX
+[FERRY_2]
+~w~Reviens quand un ferry sera à quai.
-[WEATHE6]
-TEMPS NORMAL
+[FERRY_3]
+~w~Ton véhicule tient pas dans le ferry !
-[NUMBER]
-~1~
+[FERRY_4]
+~w~Les types recherchés par les flics sont pas autorisés à bord du ferry !
-[LOADCAR]
-CHARGEMENT DU VEHICULE... (APPUIE SUR F1 POUR ANNULER)
+[FERRY_5]
+~w~Un billet de ferry coûte ~h~25$~w~. Reviens quand t'auras assez d'argent !
-[CARSOFF]
-Trafic désactivé.
+[FERRY_6]
+~w~En mission, tu peux pas prendre le ferry.
-[CARS_ON]
-Trafic activé.
+[FERR_SK]
+~w~Appuie sur~h~ ~k~ ~TRSK~ ~w~pour passer directement à la fin du voyage.
-[TEXTXYZ]
-Ecriture des coordonnées sur le fichier...
+[FERR_C1]
+~w~Ferry pour Staunton. Prix : ~h~25$~w~. Appuie sur~h~ ~k~ ~TGSUB~ ~w~pour acheter un billet.
-[CHEATON]
-Mode triche activé
+[FERR_C2]
+~w~Ferry pour Portland. Prix : ~h~25$~w~. Appuie sur~h~ ~k~ ~TGSUB~ ~w~pour acheter un billet.
-[CHEATOF]
-Mode triche désactivé
+[A_H1]
+~w~~k~ ~AMBUY~ ~w~pour acheter. ~n~~k~ ~AMEXI~ ~w~pour quitter.
-[IMPORT1]
-Va dehors et attends ton véhicule.
+[A_UZI_A]
+~w~Ammu-Nation a maintenant des pistolets-mitrailleurs en stock !
-[PAGEB11]
-Lance-flammes livré à la planque
+[AMMU]
+~w~Des armes seront disponibles chez ~h~Ammu-Nation~w~ dès l'arrivée d'un nouveau stock. Désolé pour la gêne occasionnée.
[WANT_A]
-Tu ne seras arrêté que si tu as un ~h~indice de recherche.
+~w~Quand tu te fais ~h~'arrêter'~w~, tu es emmené au poste de police le plus proche.
[WANT_B]
-La rangée d'étoiles dans le coin supérieur droit de l'écran symbolise ton ~h~indice de recherche~w~.
+~w~La mission en cours est alors un échec et les flics te piquent toutes tes armes et un pot-de-vin.
[WANT_C]
-Ton ~h~indice de recherche~w~ est désormais de un...
+~w~Tu ne te fais ~h~'arrêter'~w~ que si t'as un ~h~indice de recherche~w~, représenté par une rangée d'étoiles dans le coin supérieur de l'écran.
[WANT_D]
-deux...
+~w~Plus il y a d'étoiles, plus les flics te collent au train.
[WANT_E]
-trois...
+~w~Il existe plusieurs moyens de faire baisser ton indice de recherche, alors reste à l'affût !
[WANT_F]
-Plus ton ~h~indice de recherche~w~ augmente, plus les forces de l'ordre t'en veulent.
-
-[WANT_G]
-Quand tu es ~h~'chopé'~w~, tu es amené au poste de police le plus proche.
-
-[WANT_H]
-Les flics se laisseront corrompre contre toutes tes armes et une partie de ton cash.
-
-[WANT_I]
-Toutes les missions en cours échoueront.
+~w~Quand tu conduis, arrête-toi à un ~h~Pay 'n' Spray~w~ pour supprimer ton indice de recherche.
-[WANT_J]
-Plus tu joueras, plus tu trouveras de moyens de diminuer ton indice de recherche.
-
-[WANT_K]
-En voiture, les ~h~ATELIERS DE PEINTURE~w~ te permettront d'effacer ton indice de recherche.
+[HEAL_A]
+~w~Quand tu te fais ~h~'buter'~w~, t'es conduit à l'hosto le plus proche.
[HEAL_B]
-Quand tu es ~h~'H.S'~w~, t'es amené à l'hôpital le plus proche.
+~w~Tu perds alors toutes tes armes et ta mission est un échec. Et en plus, tu dois payer pour te faire soigner.
[HEAL_C]
-On te confisque alors toute ton artillerie et les docteurs prennent ton argent pour te remettre en forme.
-
-[HEAL_E]
-En jouant, tu trouveras d'autres moyens de te soigner ou de te protéger.
-
-[SAVE1]
-Entre dans la corona pour ~h~sauvegarder la partie~w~. Tu ne peux pas sauvegarder en cours de mission.
-
-[SAVE2]
-Tout véhicule laissé dans ce garage sera enregistré lors de la sauvegarde.
-
-[AMMU]
-Va chez Ammu-Nation pour acheter une arme.
-
-[R_TIME]
-TEMPS DE COURSE :
-
-[PROP_1]
-Tu n'as pas assez de cash pour acheter cette propriété
-
-[PROP_2]
-Tu ne peux pas acheter une propriété en cours de mission
-
-[IND_ZON]
-Vice City Beach
-
-[COM_ZON]
-Partie centrale de Vice City
-
-[BEACH1]
-Ocean Beach
-
-[BEACH2]
-Washington Beach
-
-[BEACH3]
-Vice Point
+~w~Ta ~h~santé~w~ est représentée par la barre rouge en haut à droite de l'écran.
-[GOLFC]
-Leaf Links
+[HEAL_D]
+~w~Il existe plusieurs moyens de te soigner ou de te protéger, alors ouvre l'oeil !
-[STARI]
-Starfish Island
+[H_WE_01]
+~w~Marche sur une arme pour la ramasser. Tu peux la récupérer que si t'es à pied.
-[DOCKS]
-Port de Vice
+[H_WE_02]
+~w~Si t'as déjà une arme de ce type, appuie sur~h~ ~k~ ~PUCF~ ~w~pour la remplacer par la nouvelle.
-[HAVANA]
-Little Havana
+[PU_CF]
+~w~Appuie sur~h~ ~k~ ~PUCF~ ~w~pour prendre cette arme. Si t'as déjà une arme de ce type, tu la perdras.
-[HAITI]
-Little Haiti
+[CLOTHA]
+~h~~k~ ~AMMOV~ ~w~pour voir les tenues. ~h~~k~ ~AMBUY~ ~w~pour changer de tenue. ~h~~k~ ~AMEXI~ ~w~pour annuler.
-[PORNI]
-Prawn Island
+[CLOTHB]
+~w~Tu peux changer de fringues ici à tout moment.
-[DTOWN]
-Centre
+[SIREN_1]
+~w~Pour allumer ou couper la ~h~sirène d'un véhicule de secours~w~, appuie brièvement sur~h~ ~k~ ~VEHN~.
-[VICE_C]
-Vice City
-
-[A_PORT]
-Aéroport Escobar
-
-[JUNKY]
-Décharge
-
-[PISTOL]
-Pistolet
-
-[PYTHON]
-.357
-
-[UZI]
-Uz-1
-
-[TEC9]
-Tec 9
-
-[M4]
-M4
-
-[INGRAM]
-Mac
-
-[MP5]
-MP
-
-[RUGER]
-Kruger
-
-[SNIPE]
-Fusil à lunette
-
-[GRENADE]
-Grenades
-
-[SHOTGN1]
-Fusil à pompe
-
-[SHOTGN2]
-S.P.A.S. 12
-
-[SHOTGN3]
-Fusil à pompe Stubby
-
-[ARMOUR]
-Gilet pare-balles
+[FHOSE_1]
+~w~Maintiens~h~ ~k~ ~VEWEP~ ~w~pour utiliser le canon à eau.
-[LASER]
-.308 Lunette
+[PHOTO1]
+~w~Maintiens~h~ ~k~ ~PDLT~ ~w~pour viser avec l'appareil photo.
-[BASEBAT]
-Batte de baseball
+[PHOTO2]
+~w~Tout en visant avec l'appareil photo, utilise~h~ ~k~ ~SNZI~ ~w~et~h~ ~k~ ~SNZO~ ~w~pour faire des ~h~zooms~w~ avant et arrière.
-[HAMMER]
-Marteau
+[PHOTO3]
+~w~Appuie sur~h~ ~k~ ~PDFW~ ~w~pour prendre une photo tout en visant avec l'appareil photo.
-[SCREWD]
-Tournevis
+[BENZ_H1]
+~w~Suis la ~h~chemise~w~ sur le radar pour trouver le ~h~magasin de fringues de M. Benz.
-[CLEVER]
-Couperet
+[BENZ_LE]
+~w~Ton ~h~costume Leone~w~ est dispo dans ta planque.
-[MACHETE]
-Machette
+[BENZ_GU]
+~w~La ~h~tenue des Avenging Angels~w~ est dispo dans ta planque.
-[KNIFE]
-Couteau
+[BENZ_CH]
+~w~L'~h~uniforme de chauffeur~w~ est dispo dans ta planque.
-[KATANA]
-Katana
+[BENZ_TU]
+~w~Le ~h~smoking~w~ est dispo dans ta planque.
-[CHAINSA]
-Tronçonneuse
-
-[G_COST]
-$~1~
-
-[CAR_1]
-Ambulance
-
-[MALIBU]
-Malibu Club
-
-[MANSION]
-La résidence de Diaz
-
-[TMANS]
-Chez Tommy
-
-[STRIP]
-'Pole Position Club'
-
-[MALL1]
-Centre commercial de North Point
-
-[BANKINT]
-El Banco Corrupto Grande
-
-[RANGE]
-Champ de tir
-
-[POL_HQ]
-QG de Vice City Police
-
-[INT_B]
-Un vieil ami
-
-[INTB_1]
-~g~Va au bureau de l'avocat.
-
-[LAW_1]
-La Fête
-
-[LAW_2]
-Baston de Rue
+[ATUTOR]
+~w~Pour activer ou désactiver les missions Ambulance, appuie sur~h~ ~k~ ~TGSUB~.
-[LAW_3]
-Jury sous pression
+[CTUTOR]
+~w~Pour activer ou désactiver les missions Autodéfense, appuie sur~h~ ~k~ ~TGSUB~.
-[LAW_4]
-Emeute
+[FTUTOR]
+~w~Pour activer ou désactiver les missions Pompiers, appuie sur~h~ ~k~ ~TGSUB~.
-[COL_1]
-Salaud de traître
+[TRATUT1]
+~w~Pour activer ou désactiver les missions Eboueurs, appuie sur~h~ ~k~ ~TGSUB~.
-[COL_2]
-Fusillade
+[TTUTOR]
+~w~Pour activer ou désactiver les missions Taxi, appuie sur~h~ ~k~ ~TGSUB~.
-[COL_3]
-Anges gardiens
+[A_COMP2]
+~w~Mission Ambulance : niveau 12 terminé ! Sprinter ne te fatiguera jamais !
-[COL_4]
-Chef, oui, chef !
+[FIREPRO]
+~w~Mission Pompiers : niveau 12 terminé ! Les flammes n'osent plus te toucher !
-[COL_5]
-Sur le Pont
+[RCHELP]
+~w~Pour faire ~h~exploser~w~ ta voiture radiocommandée, appuie sur~h~ ~k~ ~VEWEP~.
-[COK_1]
-Course poursuite
+[TAXIH1]
+~w~Arrête-toi près d'~h~un piéton qui cherche un taxi~w~ pour le faire monter et conduis-le vite à bon port.
-[COK_2]
-Phnom Penh '86
+[TIPHLP]
+~w~La ~h~barre de pourboires~w~ diminue avec le ~h~temps~w~ et quand ton taxi se fait ~h~endommager.
-[COK_3]
-Speedboat
+[ANG_E3]
+~w~Pars à la recherche d'autres Avenging Angels à Chinatown.
-[COK_4]
-Offre & demande
+[ANGOUT]
+~w~Reviens quand tu porteras une tenue des ~h~Avenging Angels !
-[KENT_1]
-Couloir de la mort
+[ANGCOM2]
+~w~Missions Avenging Angel Staunton : niveau 15 terminé ! Maintenant, tu gardes ton fric quand tu te fais arrêter.
-[ASS_1]
-Liquidation
+[ANGCOM3]
+~w~Missions Avenging Angel Shoreside : niveau 15 terminé ! Un véhicule "spécial" t'attend dans ta planque !
-[BUD_1]
-EXTORSION
+[TVOHELP]
+~w~Reviens quand tu porteras un ~h~masque de hockey !
-[BUD_2]
-Rixe de Bar
+[TIMER]
+C'est une mission limitée dans le temps. Accomplis-la avant la fin du chrono !
-[BUD_3]
-CopLand
+[GARAGE]
+Conduis le véhicule dans le garage et ressors à pied.
-[CAP_1]
-L'encaisseur
+[TRASH]
+~g~T'as bousillé ton véhicule ! Va faire réparer ton véhicule !
-[FIN_1]
-Amis proches
+[WRECKED]
+~r~Le véhicule est bon pour la casse !
-[BANK_1]
-Sans Issue
+[SPOOK]
+INSOUCIOMETRE
-[BANK_2]
-Le Flingueur
+[SPOTTED]
+~r~Ils sont à tes trousses !
-[BANK_3]
-Le Chauffeur
+[REWARD]
+~w~Récompense : ~1~$
-[BANK_4]
-Hold-up
+[GAMEOVR]
+FIN DE LA PARTIE
-[CNT_1]
-La Mèche est vendue
+[Z]
+Valeur axe Z : ~1~
-[CNT_2]
-Halte au Messager
+[DEAD]
+TU ES MORT !
-[PORN_1]
-Bout d'essai
+[BUSTED]
+EN TAULE !
-[PORN_2]
-Dodo Vibro
+[GOODBOY]
+~w~50$ de bonus du parfait citoyen !
-[PORN_3]
-Martha
+[NUMBER]
+~1~
-[PORN_4]
-Projecteur-G
+[SCORE]
+~1~$
-[TAX_1]
-Taxis Kaufman
+[LOADCAR]
+CHARGEMENT VEHICULE... (APPUIE SUR LA touche L POUR ANNULER)
-[TAXI_1]
-V.I.P.
+[CARSOFF]
+Sans caisses.
-[TAXI_2]
-Concurrence Amicale
+[CARS_ON]
+Avec caisses.
-[TAXI_3]
-Cabmaggedon
+[TEXTXYZ]
+Ecriture des coordonnées...
-[ICE_1]
-Distribution
+[CHEATON]
+AVEC mode triche
-[TEX_1]
-Quatre fers
+[CHEATOF]
+SANS mode triche
-[TEX_2]
-Funérailles
+[IMPORT1]
+Sors et attends ton véhicule.
-[TEX_3]
-Demolition Man
+[KE_PLYR]
+Joueur
-[PHIL_1]
-Trafiquant d'armes
+[KE_CTCS]
+Contacts
-[PHIL_2]
-Boomshine Saigon
+[KE_WEPS]
+Armes
-[BIKE_1]
-Alliage d'Acier
+[KE_ADR]
+Adrénaline
-[BIKE_2]
-Colère
+[KE_BRIB]
+Pots-de-vin
-[BIKE_3]
-Bécane
+[KE_HLTH]
+Santé
-[ROCK_1]
-Love Juice
+[KE_KILF]
+Tuerie
-[ROCK_2]
-Psychopathe
+[KE_ARM]
+Protection
-[ROCK_3]
-Promo
+[KE_USJ]
+Saut unique
-[ROCK_4]
-Les Love Fist!
+[KE_PKG]
+Paquet caché
-[HAT_1]
-Juju
+[KE_INFO]
+Infos
-[HAT_2]
-Bombes!
+[DAM]
+Dégâts
-[HAT_3]
-Raclée
+[KILLS]
+Victimes
-[CUB_1]
-Cascades aquatiques
+[TIME]
+Chrono
-[CUB_2]
-Chair à Canon
+[STOPS]
+Arrêts
-[CUB_3]
-Bataille Navale
+[EVID]
+Preuve
-[CUB_4]
-Vaudou
+[HEALTH]
+Etat Caisse
-[JOB_1]
-Accident de la route
+[COLLECT]
+Récupéré
-[JOB_2]
-Bute la femme!
+[LEVEL]
+Niveau
-[JOB_3]
-Autocide
+[SALES]
+Ventes
-[JOB_4]
-Enregistrement
+[CITYZON]
+Liberty City
-[JOB_5]
-Détails
+[VICE_C]
+Liberty City
-[ANSWER]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour répondre au téléphone.
+[IND_ZON]
+Portland
-[MOB_01A]
-Comment ça va, mon pote? C'est Paul! J'ai peut-être quelque chose d'intéressant pour toi, mais faut que je te parle en personne.
+[PORT_W]
+Callahan Point
-[MOB_01B]
-Je suis en train de me la couler douce au Malibu.
+[PORT_S]
+Atlantic Quays
-[MOB_01C]
-Tu me devras un ou deux petits services en échange, mon mignon. A tout à l'heure...
+[PORT_E]
+Portland Harbor
-[MOB_02A]
-Sniiiiiiiiiiiif! Hé, salut, Tommy! Tommy?
+[PORT_I]
+Trenton
-[MOB_02B]
-On a un problème à l'imprimerie. Tu ferais mieux d'aller y jeter un coup d'oeil.
+[S_VIEW]
+Portland View
-[MOB_02C]
-Quelque chose a merdé. C'est le bordel. Faut que j'te laisse.
+[CHINA]
+Chinatown
-[MOB_03A]
-Mr Vercetti? J'ai ici un document signé qui établit formellement
+[EASTBAY]
+Portland Beach
-[MOB_03B]
-que vous avez racheté toutes les dettes de BJ's Auto.
+[LITTLEI]
+Saint Mark's
-[MOB_03C]
-La disparition soudaine de BJ ne me laisse pas d'autre choix
+[REDLIGH]
+Red Light District
-[MOB_03D]
-que de vous tenir pour responsable du passif de cette société.
+[TOWERS]
+Hepburn Heights
-[MOB_03E]
-Jusqu'à ce que ce compte soit complètement soldé
+[HARWOOD]
+Harwood
-[MOB_03F]
-vous devriez considérer les rues de Vice City comme très dangereuses.
+[ROADBR1]
+Callahan Bridge
-[MOB_04A]
-Comment va, vieille branche?
+[ROADBR2]
+Callahan Bridge
-[MOB_04B]
-Ecoute, Tommy, j'avais oublié de te dire qu'on va avoir besoin de balaises en plus pour le concert.
+[TUNNELP]
+Porter Tunnel
-[MOB_04C]
-Y'a un gang de motards dirigé par Mitch Baker, ça nous ferai une super publicité. Vraiment Rock'n'roll, Baby.
+[BOMB1]
+Garage de 8-Ball
-[MOB_04D]
-Règle ça pour moi et je te laisserai accéder aux coulisses du concert, d'accord?
+[COM_ZON]
+Staunton Island
-[MOB_05A]
-Bien joué, Tommy, j'suis content d'avoir récupéré ma bécane.
+[STADIUM]
+Aspatria
-[MOB_05B]
-Dis à Mr Kent Paul que la sécurité sera assurée pour le concert.
+[STADIU2]
+Aspatria
-[MOB_05C]
-Tu as ma parole.
+[STADIU3]
+Aspatria
-[MOB_05D]
-Bon, maintenant, évite de t'attirer des emmerdes.
+[HOSPI_2]
+Rockford
-[MOB_06A]
-Tommy! Ceux d'en bas, ils parlent de toi, mon petit...
+[UNIVERS]
+Liberty Campus
-[MOB_06B]
-Je me disais que tu te laisserais peut-être tenter par un doux foyer et par une soupe au gombo de tata Poulet? Mmm?
+[CONSTRU]
+Fort Staunton
-[MOB_06C]
-Fais un saut par ma cuisine un de ces jours, hein, Tommy?
+[PARK]
+Belleville Park
-[MOB_08A]
-Salut, Tommy, je me disais que t'aurais peut-être besoin d'un conseil en affaires...
+[COM_EAS]
+Newport
-[MOB_08B]
-Dès que tu as une opération en route, il faut que tu passes prendre le fric de la semaine.
+[SHOPING]
+Bedford Point
-[MOB_08C]
-Si tu laisses les mecs penser que ce sont eux qui dirigent l'affaire, ils essayent de ronger tes bénefs! Ok?
+[SHOP2]
+Bedford Point
-[MOB_08D]
-Ca va, Ken, je connais le business...
+[SHOP3]
+Bedford Point
-[MOB_08E]
-Ok, ok, je sais que tu sais. Je sais. C'était...
+[YAKUSA]
+Torrington
-[MOB_08F]
-C'était juste pour te dire que je sais que tu sais que je sais...
+[SUB_ZON]
+Shoreside Vale
-[MOB_08G]
-Ouvre simplement l'oeil!
+[AIRPORT]
+Francis Intl. Airport
-[MOB_08H]
-T'inquiète, Ken, t'inquiète...
+[PROJECT]
+Wichita Gardens
-[MOB_09A]
-Salut, Léo! J'ai du boulot pour toi!
+[SUB_IND]
+Pike Creek
-[MOB_09B]
-C'est pas Léo.
+[SWANKS]
+Cedar Grove
-[MOB_09C]
-Si Léo apprend que t'as son téléphone, il va te buter aussi sec!
+[BIG_DAM]
+Cochrane Dam
-[MOB_09D]
-Peut-être que Léo est mort. Peut-être même que c'est moi qui l'ai buté et que j'ai hérité de son téléphone. T'avais pas pensé à ça hein, connard?
+[SUB_ZO2]
+Shoreside Vale
-[MOB_09E]
-T'as buté Léo? Alors, c'est que t'en as dans le froc! Tu veux bosser pour moi?
+[SUB_ZO3]
+Shoreside Vale
-[MOB_09F]
-Passe au café de mon père dans Little Havana et on pourra causer entre hommes.
+[CAR_1]
+Ambulance
-[MOB_10A]
-Tommy! Ecoute, j'ai un service à te demander!
+[CAR_2]
+Camion pompiers
-[MOB_10B]
-Steve! Comment ça marche, le cinoche?
+[CAR_3]
+Police
-[MOB_10C]
-Ca va, ça va. Mais on a besoin d'une scène de poursuite en bagnole et on a pas le budget pour ça.
+[CAR_4]
+Enforcer
-[MOB_10D]
-J'ai laissé des bagnoles dans les environs. Tu sauras quoi faire.
+[CAR_5]
+Barracks
-[MOB_10E]
-OK, Steve, je vais voir ce que je peux faire. A plus tard.
+[CAR_6]
+Rhino
-[MOB_11A]
-Salut petit, je me suis dit que j'allais te passer un coup de fil pour te donner un bon conseil.
+[CAR_7]
+FBI Cruiser
-[MOB_11B]
-Salut Avery, qu'est-ce que tu voulais me dire?
+[CAR_8]
+Securicar
-[MOB_11C]
-Les perspectives ne manquent pas dans cette ville, si tu possèdes le bon business... Tu vois ce que je veux dire?
+[CAR_9]
+Moonbeam
-[MOB_11D]
-Je pense que oui...
+[CAR_10]
+Bus
-[MOB_11E]
-Je te conseille d'ouvrir l'oeil, et le bon, si tu veux dégotter un bon business. A plus tard.
+[CAR_11]
+Flatbed
-[MOB_11F]
-Ciao, Avery.
+[CAR_12]
+Linerunner
-[MOB12_A]
-Tommy! C'est Avery! Ecoute, je suis débordé de boulot pour le moment,
+[CAR_13]
+Trashmaster
-[MOB12_B]
-et j'ai un de mes réprésentants qui a besoin d'être chaperonné jusqu'aux Gator Keys.
+[CAR_14]
+Patriot
-[MOB12_C]
-Je suis sur l'achat d'un terrain là-bas, alors j'envoie un mec graisser quelques pattes.
+[CAR_15]
+Mr Whoopee
-[MOB12_D]
-J'ai besoin que tu t'assures qu'il arrive bien là-bas. OK?
+[CAR_16]
+Mule
-[MOB12_E]
-OK, pas de problème, Avery! Mais où c'est que je le trouve, ce mec?
+[CAR_17]
+Yankee
-[MOB12_F]
-Il boucle une affaire au chantier. Je lui ai dit que tu le prendrais là-bas.
+[CAR_18]
+Pony
-[MOB12_G]
-Ok, Avery. J'y vais. A plus tard.
+[CAR_19]
+Bobcat
-[MOB13_A]
-Vercetti? VERCETTI! Putain, mec, faut que tu me files un coup de main!
+[CAR_20]
+Rumpo
-[MOB13_B]
-Mr Moffat? Comment va la famille?
+[CAR_21]
+Blista
-[MOB13_C]
-Merde, mais quel con! Tu m'entends?
+[CAR_22]
+Dodo
-[MOB13_D]
-Ca m'a fait plaisir d'avoir des nouvelles...
+[CAR_23]
+Bus
-[MOB13_E]
-Attends! Attends! Vercetti, euh... Tommy. Je peux t'appeler Tommy?
+[CAR_24]
+Sentinel
-[MOB13_F]
-On est tous les deux dans les affaires, pas vrai? Et tu sais renifler les bonnes, hein?
+[CAR_25]
+Cheetah
-[MOB13_G]
-J'ai pas le temps de causer, viens-en au fait!
+[CAR_26]
+Banshee
-[MOB13_H]
-Du FRIC! Voilà le putain de fait!
+[CAR_27]
+Stinger
-[MOB13_I]
-Je me suis encore tiré de taule, mais ça prend jamais longtemps avant qu'ils me retombent dessus. Pour eux, c'est qu'un putain de jeu!
+[CAR_28]
+Infernus
-[MOB13_J]
-Je t'appelle d'une cabine quelque part dans le trou du cul du monde!
+[CAR_29]
+Esperanto
-[MOB13_K]
-Sors-moi de là avant qu'ils me chopent encore et... et... ah... meeeerde...
+[CAR_30]
+Kuruma
-[MOB13_L]
-Eh bien, c'est que je suis très occupé pour les prochaines-
+[CAR_31]
+Stretch
-[MOB13_M]
-Non! Me laisse pas dans cette merde! T'as pas de coeur ou quoi? Putain, j'devrais pas avoir à m'abaisser comme ça!
+[CAR_32]
+Perennial
-[MOB13_N]
-Je suis à genoux, Tommy! Et c'est les rotules dans la poussière que je te supplie...
+[CAR_33]
+Landstalker
-[MOB13_O]
-J'imagine que je pourrais passer dans le coin et voir si je te trouve...
+[CAR_34]
+Manana
-[MOB13_P]
-Oh, merde, les voilà! Putain, magne-toi, Tommy! Vite!
+[CAR_35]
+Idaho
-[MOB_14A]
-Salut, Tommy, on va bien s'entendre, toi et moi.
+[CAR_36]
+Stallion
-[MOB_14B]
-Une tendre amie est venu me sussurrer dans l'oreille que la division SWAT de Vice City a un coffre dans une grosse banque,
+[CAR_37]
+Taxi
-[MOB_14C]
-et ils y gardent les pots-de-vin de toutes ces dernières années.
+[CAR_38]
+Cabbie
-[MOB_14D]
-C'est une sorte de caisse de retraite pour vieux garçons.
+[CAR_39]
+Buggy
-[MOB_14E]
-Evidemment, si cette info pouvait t'aider à ramasser un peu de ce pognon,
+[SINDACO]
+Sindacco Argento
-[MOB_14F]
-j'imagine que tu te sentirais obligé de m'en refiler un peu, pas vrai, Tommy?
+[HEARSE]
+Hearse
-[MOB_14G]
-Je vais garder ça à l'esprit, merci, Kent.
+[LANDSTK]
+Landstalker
-[MOB_14H]
-Je m'appelle Paul, abruti! Et je suis du Kent, près de Londres.
+[IDAHO]
+Idaho
-[MOB_14I]
-Pour ce que j'en ai à foutre de la campagne anglaise, depuis l'école...
+[STINGER]
+Stinger
-[MOB15_A]
-Tommy, mon vieux, c'est Paul, du Kent.
+[LINERUN]
+Linerunner
-[MOB15_B]
-Il y a une ou deux authentiques dames qui ont ton nom plein la bouche, au Malibu.
+[PEREN]
+Perennial
-[MOB15_C]
-De quoi tu parles?!
+[SENTINL]
+Sentinel
-[MOB15_D]
-De gonzesses, de poulettes, de filles, quoi! Et bien élevées, pas le genre à causer pognon.
+[PATRIOT]
+Patriot
-[MOB15_E]
-Faut que tu viennes voir ça.
+[FIRETRK]
+Camion pompiers
-[MOB16_A]
-Tommy, c'est Paulo, que pasa amigo?
+[TRASHM]
+Trashmaster
-[MOB16_B]
-Qu'est-ce que tu m'veux, Paul? J'ai pas besoin de fausses fringues de marque.
+[STRETCH]
+Stretch
-[MOB16_C]
-Très drôle, mon vieux, mais je fais pas dans la fringue de tapette, moi.
+[MANANA]
+Manana
-[MOB16_D]
-Bon, je t'appelle parce que j'me demande si je ne pourrais pas avoir un rôle dans un de tes films.
+[INFERNS]
+Infernus
-[MOB16_E]
-J'ai fait pas mal de pornos en Angleterre, mon vieux.
+[BLISTA]
+Blista
-[MOB16_F]
-Au plumard, je suis une mitrailleuse lourde.
+[PONY]
+Pony
-[MOB16_G]
-Merci de me proposer tes services, Paul, j'y réfléchirai.
+[MULE]
+Mule
-[MOB16_H]
-Sérieusement, pense à moi, après tout ce que j'ai fait pour toi...
+[CHEETAH]
+Cheetah
-[MOB16_I]
-Justement, j'essaie de l'oublier.
+[AMBULAN]
+Ambulance
-[MOB17_A]
-Tommy Vercetti, comment ça va, big boss?
+[FBICAR]
+FBI Cruiser
-[MOB17_B]
-J'ai entendu tous ces trucs sur toi. Un flambeur en ville maintenant...
+[MOONBM]
+Moonbeam
-[MOB17_C]
-Paul, t'es bourré.
+[ESPERAN]
+Esperanto
-[MOB17_D]
-Naan! Pauvre abruti! J'suis pas saoul!
+[TAXI]
+Taxi
-[MOB17_E]
-J'ai juste pris un ou deux verres et quelques tournées, et ça fait deux jours que j'ai pas fermé l'oeil!
+[KURUMA]
+Kuruma
-[MOB17_F]
-De toute façon, ne me traite pas comme ça.
+[BOBCAT]
+Bobcat
-[MOB17_G]
-Je suis pas une poire. Qui c'est qui t'a lancé dans cette ville? Hein, qui? Moi!
+[WHOOPEE]
+Mr Whoopee
-[MOB17_H]
-Ah ouais?
+[BFINJC]
+BF Injection
-[MOB17_I]
-Ouais!
+[POLICAR]
+Police
-[MOB17_J]
-Paul, t'énerve pas. J'étais occupé, sois pas stupide.
+[ENFORCR]
+Enforcer
-[MOB17_K]
-Je suis pas stupide, connard! Ils me l'ont dit en maison de redressement!
+[SECURI]
+Securicar
-[MOB17_L]
-Si tu cherches les emmerdes, mon pote, tu vas les trouver!
+[BANSHEE]
+Banshee
-[MOB17_M]
-Tommy, s'il te plaît! T'étais mon grand espoir! Te fous pas de moi!
+[PREDATR]
+Predator
-[MOB17_N]
-Paul, va roupiller un bon coup, sérieusement.
+[BUS]
+Bus
-[MOB18_A]
-Tommy, c'est Paulo, comment ça va, mon pote, je me suis dit que j'allais te passer un petit coup de fil.
+[RHINO]
+Rhino
-[MOB18_B]
-Ah, mon pote, tu croiras jamais l'incroyable petit lot que je viens de lever...
+[BARRCKS]
+Barracks OL
-[MOB18_C]
-Elle se promenait juste en bas dans Little Havana, mon pote.
+[BARRACK]
+Barracks OL
-[MOB18_D]
-Elle m'a dit qu'elle s'appelait Mercedes ou un truc comme ça. Ah, mon pote, faut que t'ailles voir cette fille!
+[TRAIN]
+Train
-[MOB18_E]
-Elle ferait bander un eunuque! Elle m'a dit que j'étais le meilleur coup de sa vie et tout et tout!
+[HELI]
+Hélico
-[MOB18_F]
-Vas-y, trouve-la. A plus tard.
+[DODO]
+Dodo
-[MOB19_A]
-Tommy V, c'est KP! Kent Paul. Le bruit court que des mecs veulent te faire la peau.
+[COACH]
+Bus
-[MOB19_B]
-Ouvre l'oeil, mon pote. Et oublie pas... Je t'ai rien dit.
+[CABBIE]
+Cabbie
-[MOB_20A]
-Salut, Tommy, c'est Paul. Je viens juste d'entendre dire que t'avais été un vilain garçon.
+[STALION]
+Stallion
-[MOB_20B]
-Il y a quelqu'un qui s'est vexé de te voir jouer les caïds et ça lui a donné de mauvaises idées...
+[RUMPO]
+Rumpo
-[MOB_20C]
-Bon, dis à personne que je t'ai rencardé. Les grandes gueules finissent toujours par l'avoir dans l'os.
+[RCBANDT]
+RC Bandit
-[MOB_20D]
-Enfin, j'ai entendu dire que ta tête a été mise à prix et que quelqu'un va essayer de t'avoir,
+[BELLYUP]
+Triad Fish Van
-[MOB_20E]
-alors fais gaffe, et m'oublie pas, mon pote.
+[MRWONGS]
+Mr Wongs
-[MOB71_A]
-Tommy, Thomas, c'est Cortez. Que pasa?
+[MAFIACR]
+Leone Sentinel
-[MOB71_B]
-Les affaires tournent... Et toi, comment ça va?
+[YARDICR]
+Yardie Lobo
-[MOB71_C]
-Tommy, ici, c'est toujours la guerre. Excusez la mauvaise ligne, mais on vient juste d'avoir un nouveau coup d'état manqué.
+[YAKUZCR]
+Yakuza Stinger
-[MOB71_D]
-Le peuple est la plus exigeante des maîtresses.
+[DIABLCR]
+Diablo Stallion
-[MOB71_E]
-Si je compte bien, y'a eu trois révolutions et quatre coups d'état depuis que je suis rentré de Vice City.
+[COLOMCR]
+Cartel Cruiser
-[MOB71_F]
-Heureusement, à chaque fois, j'ai pris du galon.
+[HOODSCR]
+Hoods Rumpo XL
-[MOB71_G]
-Je voulais vous demander quelque chose à propos de Mercedes...
+[AEROPL]
+Avion
-[MOB71_H]
-Ouais? Quoi?
+[SPEEDER]
+Speeder
-[MOB71_I]
-Voilà, Tommy, Tommy, j'ai entendu toutes ces histoires et je sais pas quoi penser...
+[REEFER]
+Reefer
-[MOB71_J]
-Peut-être que tout le monde essaye de m'humilier...
+[PANLANT]
+Panlantic
-[MOB71_K]
-Peut-être qu'elle se croit tout permis, mais dites-moi juste la vérité, Tommy, c'est vrai?
+[FLATBED]
+Flatbed
-[MOB71_L]
-Mais dites-moi juste la vérité, Tommy, c'est vrai?
+[YANKEE]
+Yankee
-[MOB71_M]
-Qu'est-ce qui est vrai?
+[BORGNIN]
+Bickle'76
-[MOB71_N]
-Ces bruits qui courent... Elle va vraiment devenir avocate?
+[TOYZ]
+TOYZ
-[MOB71_O]
-Ah, Tommy, c'est une véritable honte! Nous, les Cortez, sommes une honorable famille et nous ne tolèrerons jamais qu'une de nos filles devienne avocate.
+[MCLARN]
+Lancer MF1
-[MOB71_P]
-Je vous en prie, dites-moi que ce n'est pas vrai, je ne crois pas que je pourrais le supporter.
+[SHELBY]
+Hellenbach GT
-[MOB71_Q]
-Colonel, je peux vous assurer que Mercedes ne deviendra jamais avocate. Ne vous inquiètez pas.
+[SUBARU]
+Impreza WRX
-[MOB71_R]
-Merci, Tommy, cette honte me serait insupportable. C'est une femme, pas un parasite, vous comprenez.
+[SUPRA]
+Supra
-[MOB71_S]
-Je le sais, colonel.
+[SKYLINE]
+Skoiloine
-[MOB71_T]
-Bon, vous allez devoir m'excuser, Tommy, mais le nouveau ministre de l'intérieur vient d'arriver...
+[CYCLONE]
+Cyclone GT
-[MOB71_U]
-Il y a de nombreuses années, j'ai tué son père au cours d'une tentative de coup d'état ratée et je dois me montrer poli. Adios, amigo.
+[ESPRIT]
+V8 Ghost
-[MOB22_A]
-Tommy, vous vous révèlez très utile, amigo.
+[MINI]
+Tommy
-[MOB22_B]
-Merci, Cortez. Et mon affaire?
+[HOTROD]
+Thunder-Rodd
-[MOB22_C]
-Tommy, je travaille inlassablement en ce sens pour aller au fond des choses et de la vérité dans cette terrible histoire.
+[CAMPVAN]
+Campaign Rumpo
-[MOB22_D]
-Vous avez ma parole, mais en attendant,
+[BALLOT]
+Camionnette avec bulletins
-[MOB22_E]
-acceptez, je vous en prie, les sincères remerciements de mon peuple pour vos actions bénéfiques.
+[GHOST]
+Ghost
-[MOB_25A]
-Tommy, c'est Cortez. Les Français me font beaucoup d'ennuis...
+[ANGEL]
+Angel
-[MOB_25B]
-Les sales hypocrites! Ils passent des siècles à piller les pays pauvres et ils osent me traiter de voleur!
+[ANGEL2]
+Avenger
-[MOB_25C]
-Je vais avoir besoin de votre aide aussi vite que possible.
+[PIZZABO]
+Mob Pizza
-[MOB_25D]
-Vite, Tommy, j'ai vraiment besoin de vous. Je hais ces maudits Français!
+[NOODLBO]
+Mob Nouilles
-[MOB_26A]
-Allo, Tommy?
+[FAGGIO]
+Faggio
-[MOB_26B]
-Ouais?
+[FREEWAY]
+Freeway
-[MOB_26C]
-C'est moi, Baker. Je voulais juste te dire que j'ai beaucoup apprécié le spectacle.
+[SANCHEZ]
+Sanchez
-[MOB_26D]
-Moi et mes gars, on veut te remercier, et te rappeler
+[SANCH2]
+Manchez
-[MOB_26E]
-que tu as tout notre respect. Bon, salut. Et continue comme ça, mon pote.
+[F_PASS1]
+~w~Feu éteint ! Récomp. : ~1~$
-[MOB_29A]
-Allo? Vous êtes bien M. Tommy Vercetti?
+[F_RANGE]
+~r~La radio du camion de pompiers ne capte plus rien ! Rapproche-toi d'une caserne !
-[MOB_29B]
-Ouais.
+[C0TGSUB]
+touche R3
-[MOB_29C]
-Bien. J'ai entendu dire que vous êtes l'homme à appeler quand on est victime d'une invasion de vermine.
+[C0VESTR]
+joystick analogique gauche ou touches directionnelles gauche et droite
-[MOB_29D]
-Ca se peut...
+[C1VESTR]
+joystick analogique gauche
-[MOB_29E]
-Eh bien, là je suis vraiment envahi par la vermine. Les haïtiens sont partout...
+[C2VESTR]
+joystick analogique gauche ou touches directionnelles gauche et droite
-[MOB_29F]
-Je m'appelle Umberto Robina et je vous propose une rencontre au Café Robina aussitôt que vous pourrez.
+[C3VESTR]
+joystick analogique gauche
-[MOB_29G]
-Moi j'vous le dis, ces maudits haïtiens sont allés trop loin, cette fois...
+[C2VEHB]
+~T~
-[MOB_29H]
-Test
+[C3VEHB]
+touche L1
-[MOB_30A]
-Tommy, c'est Umberto Robina.
+[C0VEHN]
+touche L3
-[MOB_30B]
-Quoi de neuf au café?
+[C0VELL]
+touche L2
-[MOB_30C]
-Oh, merveilleux, Tommy, vraiment incroyable! Ici, plus de mauviettes, Tommy. Juste de vrais hommes et des belles filles!
+[C1VELL]
+touche L2
-[MOB_30D]
-Je voulais te dire que moi et papa, maintenant, on te considère comme cubain.
+[C2VELL]
+touche L2
-[MOB_30E]
-T'as fait tes preuves, mon frère et t'en as une sacrée paire dans l'pantalon!
+[C3VELL]
+touche L2
-[MOB_30F]
-Euh, merci, Umberto. Personne ne m'a dit ça depuis que je suis sorti de taule. Bon, salut.
+[C0VELR]
+touche R2
-[MOB_33A]
-Tommy, c'est Phil! Bon, arrête tes conneries et écoute-moi, tu veux?
+[C1VELR]
+touche R2
-[MOB_33B]
-Bon. J'ai du whisky extra fort, presque fermenté, et je me demandais si tu voulais pas venir boire un coup...
+[C2VELR]
+touche R2
-[MOB_33C]
-Sans déconner, Tommy, si t'as besoin d'un verre ou de décoller de la peinture, t'es le bienvenu, ce truc fera de toi un homme!
+[C3VELR]
+touche R2
-[MOB_33D]
-Ca me fait cet effet, même si je vois plus rien d'un oeil. Je t'attends, t'entends?
+[C0VELB]
+touche L2 + touche R2
-[MOB_34A]
-Tommy, ça m'a fait vraiment plaisir de bosser avec toi. Je m'étais pas autant marré depuis la guerre du Vietnam, mon pote.
+[C1VELB]
+touche L2 + touche R2
-[MOB_34B]
-Bon, si t'as besoin de quelque chose, tu m'appelles, t'entends?
+[C2VELB]
+touche L2 + touche R2
-[MOB_34C]
-Je n'oublie jamais ceux avec qui j'ai servi
+[C3VELB]
+touche L2 + touche R2
-[MOB_34D]
-et je suis sûr que je peux t'aider, t'entends?
+[C0VECRS]
+touche L1
-[MOB_35A]
-Tommy, la blessure cicatrise bien. Le truc drôle, c'est que
+[C1VECRS]
+touche SELECT
-[MOB_35B]
-j'ai combattu dans six batailles et que je m'en suis toujours sorti sans une égratignure, et voilà!
+[C0VEWEI]
+joystick analogique gauche vers le haut et vers le bas ou touches directionnelles haut et bas
-[MOB_35C]
-'Phil, le manchot d'un bras.' Enfin, j'ai encore une large selection d'armes de poing alors je serai jamais 'Phil, le désarmé', t'entends?
+[C1VEWEI]
+joystick analogique gauche vers le haut et vers le bas
-[MOB_35D]
-Aller, mon pote, laisse tomber les conneries sentimentales et va te boire un verre, t'entends?
+[C2VEWEI]
+joystick analogique gauche vers le haut et vers le bas ou touches directionnelles haut et bas
-[MOB_36A]
-Tommy, c'est Phil. Je voulais te remercier pour le coup de main, mon pote.
+[C3VEWEI]
+joystick analogique gauche vers le haut et vers le bas
-[MOB_36B]
-Salopard de Charlie, toujours à tendre des embuscades ici ou là,
+[C0PDCWE]
+touche L2 et touche R2
-[MOB_36C]
-mais la blessure cicatrise bien, et ça veut aussi dire que j'aurai plus à truander le gouvernement pour le contrôle d'invalidité. Merci, mon pote.
+[C1PDCWE]
+touche L2 et touche R2
-[MOB_40A]
-Salut, Tommy, c'est Sonny. Alors ce bronzage?
+[C0PUCF]
+touche L1
-[MOB_40B]
-J'suis pas bronzé.
+[C1PUCF]
+touche L1
-[MOB_40C]
-Ouais et t'as pas non plus mon pognon, alors je m'interrogeais...
+[C2PUCF]
+~T~
-[MOB_40D]
-Je me disais : 'Qu'est-ce qu'il fout?' Alors, je te le demande, Tommy, qu'est-ce que tu fous?
+[C3PUCF]
+~O~
-[MOB_40E]
-Je cherche le pognon, Sonny, t'inquéte pas!
+[C0PDLT]
+touche R1
-[MOB_40F]
-Je m'inquiéte, Tommy, c'est mon genre,
+[C1PDLT]
+touche R1
-[MOB_40G]
-parce que j'ai ce problème récurrent dans la vie de tomber sur des gens indignes de confiance...
+[C2PDLT]
+touche R1
-[MOB_40H]
-Ne sois pas indigne de ma confiance, Tommy, s'il te plaît...
+[C3PDLT]
+touche L1
-[MOB_40I]
-Rends-nous à tous deux ce service. J'attends de tes nouvelles...
+[C0PDCTL]
+touche L2 et touche R2
-[MOB_41A]
-Tommy, tu te souviens de moi?
+[C1PDCTL]
+touche L2 et touche R2
-[MOB_41B]
-Salut, Sonny.
+[C2PDCTL]
+touche L2 et touche R2
-[MOB_41C]
-Ouais, exactement, Sonny, on est de vieux amis,
+[C3PDCTL]
+touche L2 et touche R2
-[MOB_41D]
-mais tu ne m'écris jamais, tu ne m'appelles jamais. Tu ne veux plus qu'on soit amis?
+[C0CVEIW]
+touche SELECT
-[MOB_41E]
-J'ai été très occupé à régler des trucs ici et là. Tu ne m'aides pas beaucoup, ici.
+[C1CVEIW]
+touches directionnelles haut et bas
-[MOB_41F]
-Oh, c'est ma faute? Bon, j'ai entendu que tu étais très occupé, d'accord,
+[C2CVEIW]
+touche SELECT
-[MOB_41G]
-occupé à liquider des barons de la drogue, occupé à prendre le pouvoir.
+[C3CVEIW]
+touche SELECT
-[MOB_41H]
-Alors je te préviens simplement de ne pas m'oublier, Tommy, parce que moi, je ne t'oublie pas...
+[C0PDBAK]
+touche R3
-[MOB_42A]
-Tommy.
+[C1PDBAK]
+touche R3
-[MOB_42B]
-Sonny.
+[C2PDBAK]
+touche R3
-[MOB_42C]
-Faut croire que t'es à moitié sourd, alors je vais me répéter :
+[C3PDBAK]
+touche R3
-[MOB_42D]
-Tommy, où est ce putain de pognon? Où est cette putain de marchandise? Et où est ma putain de part sur ta nouvelle affaire?
+[C0PDLO1]
+touche L
-[MOB_42E]
-Tu te fous vraiment d'ma gueule, Tommy, et ça me fait pas rire!
+[C1PDLO1]
+touche L
-[MOB_43A]
-Tommy! Tommy! J'ai eu Sonny au téléphone. Tu m'écoutes?
+[C2PDLO1]
+touche L
-[MOB_43B]
-Je ne sais pas pour toi, mais il y a un mec qui menace de buter toute ma famille,
+[C3PDLO1]
+touche L
-[MOB_43C]
-et ça me fout vraiment les jetons. Qu'est-ce que tu comptes faire?
+[C0PDLO2]
+pad analogique
-[MOB_43D]
-Reste calme, Ken, tout va bien se passer.
+[C2PDLO2]
+pad analogique
-[MOB_43E]
-Je suis calme! Calme comme un homme qui craint pour sa propre vie!
+[C0ANS]
+touche L1
-[MOB_43F]
-Ken, j'ai d'autres choses en tête pour l'instant,
+[C1ANS]
+touche L1
-[MOB_43G]
-on s'occupera de Forelli quand l'heure sera venue.
+[C2ANS]
+touche L1
-[MOB_43H]
-Je suis calme. J'ai pas l'air calme? J'sais pas, c'est ma voix qui a changé à cause de la mort qui me pend au nez!
+[C3ANS]
+touche L1
-[MOB45_A]
-Tommy, faut qu'on cause sérieusement.
+[WEATHE2]
+METEO NORMALE
-[MOB45_B]
-C'est quoi le problème, Lance?
+[GA_4]
+~w~Chaque bombe pour voiture coûte 500$ pièce.
-[MOB45_C]
-C'est toi le problème, mon pote, j'ai l'impression que tu m'files pas une part équitable...
+[GA_5]
+~w~Ta caisse est déjà équipée d'une bombe.
-[MOB45_D]
-Mais le pire, c'est que tu m'as foutu la honte devant les mecs. Je supporte pas ça.
+[GA_6]
+~w~Gare-toi, amorce la bombe avec~h~ ~k~ ~PED_FIREWEAPON~ ~w~et TIRE-TOI !
-[MOB45_E]
-Lance, c'est pas ça du tout. T'as fait des bourdes, c'est tout.
+[GA_7]
+~w~Amorce la bombe avec ~h~ ~k~ ~PED_FIREWEAPON~~w~. Elle explosera quand le moteur démarrera.
-[MOB45_F]
-Tommy, je suis pas ton petit messager et encore moins ton garçon de courses.
+[GA_8]
+~w~Utilise le détonateur pour activer la bombe.
-[MOB45_G]
-Lance, déconne pas et on aura pas d'emmerdes! Et si c'est moi qui déconne, tu peux me rentrer dedans quand tu veux.
+[GA_9]
+T'as récupéré ~1~ des 10 caisses spéciales.
-[MOB45_H]
-Tommy, j'ai tout fait pour toi et tu me traites comme un con. Fais pas ça.
+[GA_10]
+Bien joué. Voilà tes ~1~$.
-[MOB45_I]
-Lance, je ne vais pas t'arnaquer ou te planter un couteau dans le dos, ok?
+[GA_11]
+On a déjà une caisse comme ça. Ca nous sert à rien.
-[MOB45_J]
-T'énerve pas. C'est déjà assez dur comme ça, sans que tu perdes les pédales.
+[GA_12]
+Bombe amorcée
-[MOB45_K]
-Fais-moi confiance. Tu m'entends? Tu m'entends?
+[GA_13]
+Une livraison de pro ! Termine la liste et t'auras un bonus.
-[MOB45_L]
-Je t'entends, Tommy, mais je peux pas supporter ça plus longtemps.
+[GA_14]
+Toutes les caisses ! BIEN JOUE ! Voilà pour toi.
-[MOB45_M]
-Lance, arrête de déconner. Maintenant, je te préviens.
+[GA_15]
+~w~J'espère que t'aimes la nouvelle couleur.
-[MOB45_N]
-Tu m'entends? Relax! Prends quelques jours de repos et on en reparle, ok?
+[GA_17]
+~w~Nouveau moteur et nouvelle couleur !
-[MOB46_A]
-Tommy, c'est Lance.
+[GA_19]
+Ce modèle ne nous intéresse pas.
-[MOB46_B]
-Ouais?
+[GA_20]
+On en a déjà trop des comme ça. Désolé, mais j'prends pas.
-[MOB46_C]
-Même pas un 'ça fait plaisir d'avoir des tes nouvelles'? Allez, mec, sois sympa!
+[GA_22]
+~w~Tu peux pas mettre de bombe sur une moto.
-[MOB46_D]
-Je suis occupé. Qu'est-ce que tu veux?
+[GA_23]
+~w~Voiture piégée. Pièce et main-d'oeuvre : 500$
-[MOB46_E]
-Rien. C'était juste pour te dire... Tu sais, Tommy, on peut faire ce truc.
+[GA_24]
+~w~Voiture piégée. Offerte par la maison, pour cette fois !
-[MOB46_F]
-Toi et moi, sans problème. Tu vois ce que je veux dire?
+[CR_1]
+~w~La grue peut pas soulever ce véhicule.
-[MOB46_G]
-Va bien falloir qu'on le fasse, parce que sinon, on est morts, Lance.
+[PU_MONY]
+~w~T'as pas assez de cash.
-[MOB46_H]
-On peut plus reculer, maintenant, mais merci de ton appel. On se reparle plus tard.
+[PAUSED]
+PAUSE
-[MOB_47A]
-Tommy, c'est Lance, on a de gros problèmes. Amène-toi ici en vitesse.
+[FEB_STA]
+Stats
-[MOB52_A]
-Salut, Léo, je crois qu'on a un acheteur pour la marchandise de Diaz.
+[FEB_MAP]
+Carte
-[MOB52_B]
-Il faut que tu l'appelles, mec, pour organiser le deal, tu comprends?
+[FEB_BRI]
+Briefings
-[MOB52_C]
-T'es où, là?
+[FEB_CON]
+Commandes
-[MOB52_D]
-T'es sûr que ça va, Léo? T'as une voix bizarre...
+[FEB_AUD]
+Sons
-[MOB52_E]
-Dis-moi juste où t'es.
+[FEB_DIS]
+Affichage
-[MOB52_F]
-Qui c'est qui cause? Je veux parler à Léo!
+[FEB_LAN]
+Langue
-[MOB52_G]
-Léo est parti pour un moment, je le remplace.
+[FEP_STA]
+STATS
-[MOB52_H]
-Va te faire foutre, connard!
+[FEP_MAP]
+CARTE
-[MOB54_A]
-Salut, Tommy!
+[FEP_BRI]
+BRIEFINGS
-[MOB54_B]
-Salut, Mercedes, quoi de neuf?
+[FEP_CON]
+COMMANDES
-[MOB54_C]
-J'ai un nouvel appartement dans Vice Point.
+[FEP_AUD]
+SONS
-[MOB54_D]
-J'ai pensé que tu voudrais peut-être passer un de ces quatre...
+[FEP_DIS]
+AFFICHAGE
-[MOB54_E]
-J'adorerai. A plus tard.
+[FEP_LAN]
+LANGUE :
-[MOB55_A]
-Tommy, c'est moi.
+[FEF_ST1]
+C'est qui le méchant ?
-[MOB55_B]
-Salut, Mercedes.
+[FEF_ST2]
+Quantité de dégâts provoqués
-[MOB55_C]
-Tommy, je m'ennuie tellement! Quand est-ce qu'on va s'amuser?
+[FEF_BR1]
+T'as perdu le fil ?
-[MOB55_D]
-Comment ça?
+[FEF_CO1]
+Tu perds le contrôle ?
-[MOB55_E]
-Bon, je sais que t'es très occupé à te battre, à tuer des gens ou à les corrompre,
+[FEF_SA2]
+Sauvegarde et charge tes parties.
-[MOB55_F]
-mais moi, j'ai envie de m'amuser un peu! Alors, ne m'oublie pas, Tommy!
+[FEF_AU1]
+Fais péter la sono !
-[MOB56_A]
-Tommy, j'ai entendu dire que tu avais tué Ricardo Diaz!
+[FEF_AU2]
+Sélectionne une station de radio et des effets sonores.
-[MOB56_B]
-Un feu accidentel s'est déclenché dans sa résidence...
+[FEF_DI1]
+Change le jeu !
-[MOB56_C]
-Je pense qu'il a cramé dans sa chemise en acrylique.
+[FEF_LA1]
+Qu'est-ce que tu racontes ?
-[MOB56_D]
-Tommy, je suis si fière de toi! Je savais que tu étais un vrai macho!
+[FEF_LA2]
+Choisis la langue d'affichage.
-[MOB56_E]
-Ah, mon dur de dur, je suis si fière d'être ton amie!
+[FEM_ON]
+AVEC
-[MOB56_F]
-Je sais que tu vas être très occupé à essayer de t'emparer de cette ville,
+[FEM_OFF]
+SANS
-[MOB56_G]
-mais ne m'oublie pas, d'accord?
+[FEM_YES]
+Oui
-[MOB57_A]
-C'est Mercedes. Je ne t'aime plus, Tommy!
+[FEM_NO]
+Non
-[MOB57_B]
-C'est fini! C'est vrai! Parce que tu n'es plus gentil avec moi!
+[FEI_SEL]
+Sélectionner
-[MOB57_C]
-Tu ne me traites plus comme une dame! Tu m'ignores et je te déteste!
+[FEI_TAR]
+Cible avec/sans
-[MOB57_D]
-Je veux que tu viennes me voir tout de suite! "
+[FEI_BAC]
+Retour
-[MOB58_A]
-Tommy.
+[FEI_RES]
+Reprendre
-[MOB58_B]
-Salut, Mercedes.
+[FEI_NAV]
+Naviguer
-[MOB58_C]
-Bonjour monsieur le vrai dur! Je suis très en colère contre toi, Tommy!
+[FEI_BTX]
+/
-[MOB58_D]
-Ne m'oblige plus jamais à supporter Jezz Torrent!
+[FEI_BTT]
+"
-[MOB58_E]
-Il est pathétique! En plein milieu il a commencé à pleurer à cause de son toutou
+[FEI_STA]
+touche START (mise en marche)
-[MOB58_F]
-qui est mort quand il avait 7 ans et parce que sa mère ne l'a jamais aimé...
+[FEI_BTD]
+pad analogique
-[MOB58_G]
-En plus, Tommy, il porte une perruque et un soutien-gorge dans l'intimité!
+[FEI_BTU]
+;=
-[MOB58_H]
-Je t'en veux vraiment!
+[FEI_R1B]
+touche L / touche R
-[MOB59_A]
-Ooh Tommy, c'est Mercedes.
+[FEI_SCR]
+Parcourir
-[MOB59_B]
-Je voulais juste te dire que je m'étais éclatée sur le tournage!
+[FEI_ZOO]
+Zoom
-[MOB59_C]
-Si tu as quelque chose d'autre de ce genre, pense à moi!
+[FEH_STA]
+STATS
-[MOB59_D]
-Je suis sincère! J'ai toujours voulu être actrice!
+[FEH_CON]
+COMMANDES
-[MOB59_E]
-Je crois que j'ai beaucoup appris sur l'art dramatique!
+[FEH_AUD]
+SONS
-[MOB59_F]
-C'est tellement révélateur! Merci beaucoup! On se voit très bientôt, adios!
+[FEH_LAN]
+LANGUE
-[MOB_99]
-Rends-toi à la cabine indiquée.
+[FEH_SGA]
+NOUVELLE PARTIE
-[MOB_98]
-Rends-toi à la cabine indiquée.
+[FET_SG]
+SAUVEGARDER
-[MOB_97]
-Rends-toi à la cabine indiquée.
+[FEH_BRI]
+BRIEFING
-[MOB_96]
-Rends-toi à la cabine indiquée.
+[FEH_DIS]
+AFFICHAGE
-[MOB_95]
-Rends-toi à la cabine indiquée.
+[FEH_MAP]
+CARTE
-[A_TIME]
-+~1~ secondes
+[FEM_OK]
+OK
-[F_RANGE]
-La radio du camion de pompiers ne capte plus rien. Rapproche-toi d'une caserne!
+[FEC_CRO]
+S'accroupir
-[DODO_FT]
-Tu as 'volé' pendant ~1~ secondes!
+[FE_MLG]
+LEGENDE CARTE
-[GA_8]
-Utilise le détonateur pour armer la bombe.
+[MAP_LEG]
+LEGENDE :
-[GA_10]
-Bravo. Voilà tes ~1~$.
+[LG_01]
+Position du joueur
-[GA_11]
-On en a déjà des comme ça. Ca nous sert à rien!
+[LG_13]
+Ammu-Nation
-[GA_12]
-Bombe armée
+[LG_16]
+Planque
-[GA_13]
-Comme un pro! Finis la liste et t'auras un bonus!
+[LG_22]
+Pay 'n' Spray
-[GA_14]
-Toutes les voitures! PARFAIT! Tiens, voilà un petit quelque chose!
+[LG_23]
+M. Benz
-[GA_15]
-J'espère que t'aimes la nouvelle couleur.
+[LG_25]
+Téléphone
-[GA_16]
-La peinture est en option!
+[LG_26]
+Station de radio Wildstyle
-[GA_19]
-Ce modèle ne nous intéresse pas!
+[LG_27]
+Station de radio Flash FM
-[GA_20]
-On en a trop des comme ça! Désolé, mec.
+[LG_28]
+Station de radio KChat
-[CHASE]
-Attention maximale des médias
+[LG_29]
+Station de radio Fever 105
-[CHASE1]
-Ignoré
+[LG_30]
+Station de radio VROck
-[CHASE2]
-Ennuyeux
+[LG_32]
+Station de radio Espantoso
-[CHASE3]
-Plus ou moins intéressant
+[LG_33]
+Station de radio Emotion 98.3
-[CHASE4]
-Journal local page 7
+[LG_34]
+Station de radio Wave 103
-[CHASE5]
-Journal local La une
+[LG_35]
+Destination
-[CHASE6]
-Vice Courier Rubrique 1
+[LG_37]
+Club de striptease
-[CHASE7]
-Vice Courier La une
+[LG_38]
+8-Ball
-[CHASE8]
-Télé locale 3h du mat'
+[LG_39]
+Confessionnal
-[CHASE9]
-Télé locale Infos
+[LG_40]
+Ma Cipriani
-[CHASE10]
-Télé locale Direct
+[LG_41]
+Donald Love
-[CHASE11]
-UFA Today page 12
+[LG_42]
+J.D. O'Toole
-[CHASE12]
-UFA Today page 4
+[LG_43]
+Salvatore Leone
-[CHASE13]
-Photo dans UFA Today
+[LG_44]
+Maria
-[CHASE14]
-Télé nationale 4h du mat'
+[LG_45]
+McAffrey
-[CHASE15]
-Télé nationale Infos
+[LG_46]
+Toshiko Kasen
-[CHASE16]
-Télé nationale Direct
+[LG_47]
+Vincenzo Cilli
-[CHASE17]
-Infos internationales
+[LG_48]
+Atelier
-[CHASE18]
-Crise nationale
+[LG_49]
+Magasin de fringues
-[CHASE19]
-Crise internationale
+[LG_50]
+Phil Cassidy
-[CHASE20]
-Evénement mondial
+[LG_51]
+Menace
-[CHASE21]
-Truc de légendes
+[LG_52]
+Ami
-[CR_1]
-La grue ne peut pas soulever ce véhicule.
+[LG_53]
+A récupérer
-[PU_MONY]
-T'as pas assez de liquide.
+[LG_54]
+Cible du joueur
-[CO_ALL]
-Tu les as toutes eues. Tiens, voilà pour toi...
+[FEO_CON]
+Config. commandes
-[FEM_ON]
-Activé
+[FEO_AUD]
+Config. sons
-[FEM_OFF]
-Désactivé
+[FEO_DIS]
+Config. affichage
-[FEM_YES]
-Oui
+[FEO_LAN]
+Config. langue
-[FEM_NO]
-Non
+[FEO_PLA]
+Config. joueur
-[FEM_RET]
-Réessayer
+[FEB_PMB]
+Briefings mission préc. :
[FEC_NA]
-NA
+ND
[FEC_CWL]
-Faire défiler les armes vers la gauche
+Parcourir armes gauche
[FEC_CWR]
-Faire défiler les armes vers la droite
+Parcourir armes droite
-[FEC_LOF]
-Regarder devant
+[FEC_CW]
+Parcourir armes
+
+[FEC_CT]
+Parcourir cibles
[FEC_TAR]
Viser
[FEC_MOV]
-Déplacement
+Se déplacer
[FEC_CAM]
Modes caméra
@@ -1719,22 +1511,28 @@ Modes caméra
Pause
[FEC_ENV]
-Monter dans un véhicule
+Monter dans véhicule
[FEC_JUM]
Sauter
[FEC_ATT]
-Attaquer ou tirer
+Attaquer/Tirer
[FEC_RUN]
Courir
[FEC_FPC]
-Vue subjective
+Regarder
[FEC_LL]
-Rergarder à gauche
+Regarder à gauche
+
+[FEC_LB1]
+Regarder
+
+[FEC_LB2]
+derrière
[FEC_LB]
Regarder derrière
@@ -1746,12974 +1544,15568 @@ Regarder à droite
Klaxon
[FEC_VES]
-Commandes du véhicule
+Commandes véhicule
+
+[FEC_RSC]
+Stations de radio
[FEC_BRA]
-Freiner ou marche arrière
+Frein/marche arrière
[FEC_HAB]
Frein à main
[FEC_CAW]
-Arme du véhicule
+Arme voiture
[FEC_ACC]
Accélérateur
+[FEC_SMT]
+Mission spéciale
+
[FEC_CCF]
-Configuration :
+CONFIGURATION :
[FEC_CF1]
-Config. 1
+CONFIG. 1
[FEC_CF2]
-Config. 2
+CONFIG. 2
[FEC_CF3]
-Config. 3
+CONFIG. 3
[FEC_CF4]
-Config. 4
+CONFIG. 4
[FEC_CDP]
-Affichage manette :
+TYPE :
[FEC_ONF]
-à pied
+A PIED
[FEC_INC]
-En voiture
+EN VOITURE
[FEC_VIB]
-Vibrations :
+VIBRATION :
+
+[FEC_ILU]
+INVERSER VUE :
+
+[FEC_SWP]
+DEPLACEMENTS DU JOUEUR :
+
+[FEC_AS]
+pad analogique
+
+[FEC_DP]
+touches directionnelles
+
+[FEA_SFX]
+EFFETS SONORES :
+
+[FEA_OUT]
+Sortie audio :
+
+[FEA_ST]
+Stéréo
+
+[FEA_MNO]
+Mono
+
+[FEA_CTD]
+Attention ! Cette fonction requiert un matériel compatible DTS. Continuer ?
+
+[FEA_DTS]
+DTS
+
+[FEA_RSS]
+STATION DE RADIO :
+
+[FEA_NON]
+RADIO ETEINTE
+
+[FED_BRI]
+LUMINOSITE :
+
+[FED_RDR]
+MODE RADAR :
+
+[FED_HUD]
+MODE ATH :
+
+[FED_RDM]
+CARTE & SPOTS
+
+[FED_RDB]
+SPOTS UNIQ.
[FEL_ENG]
-Anglais
+ANGLAIS
[FEL_FRE]
-Français
+FRANCAIS
[FEL_GER]
-Allemand
+ALLEMAND
[FEL_ITA]
-Italien
+ITALIEN
[FEL_SPA]
-Espagnol
+ESPAGNOL
-[FED_DBG]
-Menu Debug
+[FEM_MCM]
+Menu carte mémoire
-[FED_RID]
-Recharger IDE
+[FEM_RMC]
+Détecter carte mémoire dans la fente pour MEMORY CARD N°1
-[FED_RIP]
-Recharger IPL
+[FEM_TFM]
+Tester formatage carte mémoire dans la fente pour MEMORY CARD N°1
-[FED_PAH]
-Analyser Saut
+[FEM_TUM]
+Tester déformatage carte mémoire dans la fente pour MEMORY CARD N°1
-[FED_DFL]
-CTheScripts::DbgFlag
+[FEM_CRD]
+Créer dossier racine
-[FED_DLS]
-Lumière blanche de debug allumée
+[FEM_CLI]
+Créer et charger icones
-[FED_SPR]
-Affiche les groupes de pietons
+[FEM_FFF]
+Remplir premier fichier
-[FED_SCR]
-Affiche les groupes en voiture
+[FEM_SOG]
+Sauvegarder le jeu uniquement
-[FED_SCZ]
-Affiche les zones de massacre
+[FEM_CES]
+Vérifier chaque sauvegarde 0kB4
-[FED_DSR]
-Debug les demandes de répartition par niveaux
+[FEM_STG]
+Sauvegarder la partie
-[FED_SCP]
-gb Indique les polys de collision
+[FEM_STS]
+Sauvegarder la partie sous le nom GTA3
+
+[FEM_CPD]
+Créer dossier protégé contre les copies
+
+[FEM_MC2]
+Menu carte mémoire 2
+
+[FEM_TS]
+Tester sauvegarde :
+
+[FEM_TL]
+Tester chargement :
+
+[FEM_TD]
+Tester effacement :
+
+[FEM_SL0]
+Emplacement 0
+
+[FEM_SL1]
+Sauvegarde 1 absente
+
+[FEM_SL2]
+Sauvegarde 2 absente
+
+[FEM_SL3]
+Sauvegarde 3 absente
+
+[FEM_SL4]
+Sauvegarde 4 absente
+
+[FEM_SL5]
+Sauvegarde 5 absente
+
+[FEM_SL6]
+Sauvegarde 6 absente
+
+[FEM_SL7]
+Sauvegarde 7 absente
+
+[FES_LOA]
+CHARGER PARTIE
+
+[ST_TIME]
+Temps de jeu actuel
+
+[ST_OVTI]
+Temps de jeu total
+
+[NUMSHV]
+Nombre de sauvegardes
[PL_STAT]
-Stats du joueur
+Stats joueur
[PE_WAST]
-Personnes tuées par toi
+Personnes éliminées par toi
[PE_WSOT]
-Personnes tuées par d'autres
+Personnes éliminées par d'autres
+
+[CAR_EXP]
+Caisses explosées
+
+[BOA_EXP]
+Bateaux explosés
[TM_BUST]
-Nb de fois capturé
+Arrestations
+
+[M_WASTE]
+Civils éliminés
+
+[F_WASTE]
+Civiles éliminées
+
+[PIG_WST]
+Flics éliminés
[GNG_WST]
-Gangsters tués
+Gangsters éliminés
+
+[MED_WST]
+Ambulanciers éliminés
+
+[FIRE_WS]
+Pompiers éliminés
[DED_CRI]
-Criminels tués
+Criminels éliminés
+
+[DED_DED]
+SDF éliminés
+
+[DED_HOK]
+Putes éliminées
+
+[HEL_DST]
+Hélicos détruits
[PER_COM]
Pourcentage accompli
[KGS_EXP]
-Kilos d'explosifs utilisés
+Explosifs utilisés (kg)
[ACCURA]
Précision
-[ST_WEAP]
-Budget arsenal
+[CAR_CRU]
+Caisses broyées
-[ST_PROP]
-Budget propriété
+[HED_EX]
+Têtes explosées
-[ST_AUTO]
-Budget réparation et peinture voiture
+[ST_HEAD]
+Tirs en pleine tête
-[ST_PHOT]
-Photos prises
+[BUL_FIR]
+Balles tirées
-[ST_LOAN]
-Visites des usuriers
+[BUL_HIT]
+Tirs réussis
-[ST_STOR]
-Magasins liquidés
+[SPRAYIN]
+Véhicules repeints
-[ST_MOVI]
-Cascades de films
+[TM_DED]
+Visites à l'hosto
-[ST_PIZZ]
-Pizza livrées
+[ST_GANG]
+Gang le moins apprécié
-[ST_GARB]
-Collectes de détritus effectuées
+[ST_GNG1]
+Leone
-[ST_ICEC]
-Crèmes glacées vendues
+[ST_GNG2]
+Triades
-[TOP_SHO]
-Meilleur score au champ de tir
+[ST_GNG3]
+Diablos
-[SHO_RAN]
-Position au champ de tir
+[ST_GNG4]
+Yakuzas
-[SEAGULL]
-Mouettes descendues
+[ST_GNG5]
+Yardies
-[PROPOWN]
-Propriété possédée
+[ST_GNG6]
+Colombiens
-[ST_TIME]
-Temps de jeu
+[ST_GNG7]
+Hoods
-[ST_FTIM]
-Heures de vol
+[ST_GNG8]
+Forelli
-[ST_PRAN]
-Classement pilote
+[ST_GNG9]
+Sindacco
-[ST_RAN0]
-Apprenti
+[DAYSPS]
+Jours passés dans le jeu
-[ST_RAN1]
-Navigateur
+[MMRAIN]
+Pluie tombée (mm)
-[ST_RAN2]
-Copilote
+[ST_STAR]
+Etoiles de recherche obtenues
-[ST_RAN3]
-Junior
+[ST_STGN]
+Etoiles de recherche évitées
-[ST_RAN4]
-Compétent
+[TOT_DIS]
+Total distance parcourue (miles)
-[ST_RAN5]
-Senior
+[TOTDISM]
+Total distance parcourue (m)
-[ST_RAN6]
-As
+[DISTBIK]
+Dist. parcourue en moto (miles)
-[ST_RAN7]
-Baron rouge
+[DISTBIM]
+Distance parcourue en moto (m)
-[ST_DRWN]
-Poissons nourris
+[DISTHEL]
+Dist. parcourue en hélico (miles)
-[ST_FASH]
-Budget fringues
+[DISTHEM]
+Dist. parcourue en hélico (m)
-[ST_DAMA]
-Propriété détruite
+[DISTBOA]
+Dist. parcourue en bateau (miles)
-[TM_DED]
-Visites à l'hôpital
+[DISTBOM]
+Distance parcourue en bateau (m)
-[DAYSPS]
-Jours passés dans le jeu
+[ST_WHEE]
+Tps max. sur roue arrière (s)
-[NUMSHV]
-Visites dans l'entrepôt
+[ST_STOP]
+Tps max. sur roue avant (s)
+
+[ST_2WHE]
+Tps max. sur 2 roues (s)
+
+[ST_WHED]
+Dist. max. sur roue arrière (m)
+
+[ST_STOD]
+Dist. max. sur roue avant (m)
+
+[ST_2WHD]
+Dist. max. sur 2 roues (m)
+
+[ST_FAPD]
+Dist. max. vol plané (m)
+
+[FEST_HV]
+Mission Autodéfense (niveau max.)
+
+[FIRELVL]
+Mission Pompiers (niveau max.)
+
+[ST_ASSI]
+Contrats assassinat remplis
+
+[ST_FTIM]
+Heures de vol
+
+[ST_WEAP]
+Budget armement
+
+[ST_PROP]
+Budget immobilier
+
+[ST_DAMA]
+Propriétés détruites
+
+[ST_AUTO]
+Budget réparation et peinture véhicules
[MXCARD]
-Dist. max. de saut de Cascade dangereuse (ft)
+Distance max. de saut de taré (pd)
[MXCARJ]
-Hauteur max. de saut de Cascade dangereuse(ft)
+Hauteur max. de saut de taré (pd)
[MXCARDM]
-Dist. max. de saut de Cascade dangereuse (m)
+Distance max. de saut de taré (m)
[MXCARJM]
-Hauteur max. de saut de Cascade dangereuse (m)
+Hauteur max. de saut de taré (m)
[MXFLIP]
-Saltos max. de saut de Cascade dangereuse
+Saltos max. en saut de taré
[MXJUMP]
-Rotation max. de saut de Cascade dangereuse
+Rotations max. en saut de taré
-[BUL_FIR]
-Balles tirées
-
-[BUL_HIT]
-Balles ayant atteint la cible
+[FST_MFR]
+Station de radio préférée
-[SPRAYIN]
-Peintures
+[FST_LFR]
+Station de radio la moins écoutée
[BSTSTU]
-Meilleure cacade jusqu'à maintenant
+Meilleure cascade de taré jusqu'ici :
[INSTUN]
-Cascade dangereuse
+Cascade de taré
[PRINST]
-Cascade dangereuse parfaite
+Cascade de taré parfaite
[DBINST]
-Double cascade dangereuse
+Double cascade de taré
[DBPINS]
-Double cascade dangereuse parfaite
+Double cascade de taré parfaite
[TRINST]
-Triple cascade dangereuse
+Triple cascade de taré
[PRTRST]
-Triple cascade dangereuse parfaite
+Triple cascade de taré parfaite
[QUINST]
-Quadruple cascade dangereuse
+Quadruple cascade de taré
[PQUINS]
-Quadruple cascade dangereuse parfaite
+Quadruple cascade de taré parfaite
[NOSTUC]
-Aucune cascade dangereuse réalisée
+Aucune cascade de taré réalisée
[NOUNIF]
-Sauts uniques accomplis
+Sauts uniques effectués
+
+[NOUNGM]
+Total sauts uniques
[NMISON]
-Tentatives de mission
+Missions tentées
+
+[NMMISP]
+Missions réussies
[PASDRO]
-Passagers perdus
+Passagers déposés
[MONTAX]
-Total des courses en taxi
+Cash gagné en taxi
+
+[CARSLD]
+Voitures vendues
+
+[MONCAR]
+Cash gagné en vendant des voitures
+
+[BIKESLD]
+Motos vendues
+
+[MONBIKE]
+Cash gagné en vendant des motos
+
+[CARSEXP]
+Caisses trouvées pour Love Media
+
+[SLTVLVL]
+Mission Slash TV (niveau max.)
+
+[SLTVKIL]
+Adversaires tués (Slash TV)
+
+[MONTRS]
+Cash gagné en ramassant les ordures
+
+[HTMKLD]
+Assassins tués
+
+[GDAMSP]
+Missions Avenging Angel réussies
+
+[HGAJD]
+Total justice rendue (Avenging Angel)
+
+[BNDRACE]
+Courses RC
+
+[FSTTRT]
+Tps restant max. sur Wong Side of the Tracks
+
+[HGHTRC]
+Cash max. sur Wong Side of the Tracks
+
+[FSTHRT]
+Meilleur tps course hélico
+
+[BHLPOS]
+Meilleure position course hélico
+
+[TMSOUT]
+Changements de fringues
+
+[BSRPS0]
+Low Rider Rumble
+
+[BSRPS1]
+Deimos Dash
+
+[BSRPS2]
+Wi-Cheetah Run
+
+[BSRPS3]
+Red Light Racing
+
+[BSRPS4]
+Torrington TT
+
+[BSRPS5]
+Gangsta GP
+
+[DBIKE0]
+Course 1
+
+[DBIKE1]
+Course 2
+
+[DBIKE2]
+Course 3
+
+[DBIKE3]
+Course 4
+
+[DBIKE4]
+Course 5
+
+[DBIKE5]
+Course 6
+
+[DBIKE6]
+Course 7
+
+[DBIKE7]
+Course 8
+
+[DBIKE8]
+Course 9
+
+[DBIKE9]
+Course 10
+
+[DBIKEHE]
+Bumps & Grinds
+
+[DBIKEBP]
+Meilleure position
+
+[DBIKEFL]
+Meil. tps au tour
+
+[DBIKEFT]
+Meilleur temps
+
+[ST_PHOT]
+Photos prises
+
+[ST_PIZZ]
+Pizzas livrées
+
+[ST_NOOD]
+Nouilles livrées
+
+[MO_TOUR]
+Cash gagné avec les touristes
+
+[TA_TOUR]
+Touristes emmenés sur lieux touristiques
+
+[SC_SCRA]
+Meill. score Scrapyard Challenge
+
+[SC_9MM]
+Meill. score 9mm Mayhem
+
+[SC_SCOO]
+Meill. score Scooter Shooter
[DAYPLC]
-Dépenses quotidiennes de police
+Dépenses quotidiennes police
+
+[SEAGULL]
+Mouettes abattues
[CRIMRA]
-Taux de criminalité :
+TAUX DE CRIMINALITE
-[STPR_1]
-Le Malibu
+[CHASE]
+Attention média max.
-[STPR_2]
-Imprimerie
+[CHASE1]
+Ignoré
-[STPR_3]
-Studio de cinéma
+[CHASE2]
+Ennuyeux
-[STPR_4]
-Usine de crème glacée
+[CHASE3]
+Vague intérêt
-[STPR_5]
-Concession automobile
+[CHASE4]
+Journal local Page 7
-[STPR_6]
-Compagnie de taxis
+[CHASE5]
+Une du journal local
-[STPR_7]
-Chantier naval
+[CHASE8]
+Chaîne locale 3h
-[SET1EN]
-Config. 1. Activée
+[CHASE9]
+Infos chaîne locale
-[GMSAVE]
-Sauvegarder partie
+[CHASE10]
+Direct sur chaîne locale
-[FEDS_TB]
-Retour
+[CHASE11]
+UFA Today Page 12
-[FEST_OO]
-sur
+[CHASE12]
+UFA Today Page 4
-[FEC_TUC]
-Commandes tourelle
+[CHASE13]
+Photo dans UFA Today
-[FEC_RS3]
-Faire défiler les stations de radio (touche L3)
+[CHASE14]
+Chaîne nationale 4h
-[FEC_HO3]
-Klaxonner (touche L3)
+[CHASE15]
+Infos chaîne nationale
-[C_FAIL]
-Mission d'autodéfense terminée!
+[CHASE16]
+Direct sur chaîne nationale
-[C_ESCP]
-~r~Le suspect s'est échappé!
+[CHASE17]
+Infos internationales
-[C_VIGIL]
-BONUS AUTODEFENSE!
+[CHASE18]
+Crise nationale
-[HEAL_A]
-Ton niveau de ~h~santé~w~ s'affiche en orange en haut à droite de l'écran.
+[CHASE19]
+Crise internationale
-[WRONGCD]
-Disque invalide. Insère le bon disque.
+[CHASE20]
+Evénement mondial
-[NOCD]
-Le compartiment à disque est vide. Insère un disque.
+[CHASE21]
+Légende vivante
-[OPENCD]
-Le compartiment à disque est ouvert. Referme-le.
+[WHEEL01]
+~w~BONUS 2 ROUES : ~1~$ Distance : ~1~,~1~m Temps : ~1~ secondes
-[CDERROR]
-Erreur au cours de la lecture du DVD de Grand Theft Auto: Vice City
+[WHEEL02]
+~w~BONUS 2 ROUES : ~1~$ Distance : ~1~ pieds Temps : ~1~ secondes
-[RESTART]
-Démarrage d'une nouvelle partie
+[WHEEL06]
+~w~BONUS ROUE ARRIERE : ~1~$ Distance : ~1~,~1~m Temps : ~1~ secondes
-[GA_3]
-Plus de cadeaux. 100$ pour repeindre!
+[WHEEL07]
+~w~BONUS ROUE ARRIERE : ~1~$ Distance : ~1~ pieds Temps : ~1~ secondes
-[GA_1]
-Oula! Je ne touche à rien d'aussi chaud, moi!
+[WHEEL11]
+~w~BONUS ROUE AVANT : ~1~$ Distance : ~1~,~1~m Temps : ~1~ secondes
-[GA_1A]
-Reviens quand tu seras moins occupé...
+[WHEEL12]
+~w~BONUS ROUE AVANT : ~1~$ Distance : ~1~ pieds Temps : ~1~ secondes
-[HELP9_C]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour ~h~tirer~w~ avec le fusil à lunette.
+[PREBRF]
+Briefings préc.
-[TAXI2]
-~r~Tu n'as plus le temps!
+[CNTLS]
+Commandes
-[PAGEB13]
-Santé livrée à la planque
+[MUSMEN]
+Musique/Effets
-[PAGEB14]
-Adrénaline livrée à la planque
+[GAMSET]
+Paramètres
-[FESZ_CA]
-Annuler
+[LANGUA]
+Langue
-[FES_NGA]
-Nouvelle partie
+[DSPLAY]
+Affichage
-[FES_CAN]
-Annuler
+[DEBUGM]
+Menu Debug
-[FESZ_QL]
-Toutes les étapes non sauvegardées de cette partie seront perdues. Charger la partie?
+[QUITOP]
+Quitter options
-[FESZ_QD]
-Effacer cette sauvegarde?
+[CONTRL]
+Configuration commandes
-[FESZ_QO]
-Ecraser cette sauvegarde?
+[SET1EN]
+Config. 1 activée
-[FESZ_QR]
-Veux-tu vraiment commencer une autre partie? Toutes les données depuis la dernière partie sauvegardée seront perdues. Continuer?
+[SET1]
+Config. 1
-[T4X4_1]
-'Terrain de jeu PCJ'
+[SET2EN]
+Config. 2 activée
-[BMX_1]
-'Sélection par la boue'
+[SET2]
+Config. 2
-[BMX_2]
-'Piste d'essai'
+[SET3EN]
+Config. 3 activée
-[BMXFAIL]
-~r~Tu n'as pas réussi à établir un nouveau record!
+[SET3]
+Config. 3
-[T4X4_3]
-'DANS LA POCHE!'
+[SET4EN]
+Config. 4 activée
-[MM_1]
-'Cônes en folie'
+[SET4]
+Config. 4
-[T4X4_F]
-~r~Tu t'es barré! Trop dur pour toi?
+[GOBACK]
+Retour
-[LANDSTK]
-Landstalker
+[SOUND]
+SONS
-[IDAHO]
-Idaho
+[MUSVOL]
+Musique
-[STINGER]
-Stinger
+[SFXVOL]
+Effets sonores
-[LINERUN]
-Linerunner
+[SCROPT]
+ECRAN
-[PEREN]
-Perennial
+[CTRSCR]
+Centrer écran
-[SENTINL]
-Sentinelle
+[SCRFOR]
+Format écran
-[RIO]
-Rio
+[GMSVLQ]
+SAUVEGARDER-CHARGER-QUITTER
-[PATRIOT]
-Patriote
+[GMREST]
+Recommencer
-[FIRETRK]
-Camion de pompier
+[GMLOAD]
+Charger
-[TRASHM]
-Trashmaster
+[GMSAVE]
+Sauvegarder
-[STRETCH]
-Stretch
+[NOGMSV]
+Sauvegarde depuis ta planque uniq.
-[MANANA]
-Manana
+[DLFILE]
+Supprimer fichiers Grand Theft Auto
-[INFERNS]
-Infernus
+[CHFILE]
+CHOISIR FICHIER A CHARGER
-[VOODOO]
-Voodoo
+[CHFIDL]
+CHOISIR FICHIER A SUPPRIMER
-[PONY]
-Pony
+[SVCONF]
+CONFIR. SAUVEGARDE
-[MULE]
-Mule
+[SVFNAM]
+Ton fichier sauvegardé s'appelle
-[CHEETAH]
-Cheetah
+[LANGSL]
+CHOIX DE LA LANGUE
-[AMBULAN]
-Ambulance
+[ENGLIS]
+Anglais
-[FBICAR]
-FBI Washington
+[GERMAN]
+Allemand
-[MOONBM]
-Moonbeam
+[ITALIA]
+Italien
-[ESPERAN]
-Esperanto
+[FRENCH]
+Français
-[TAXI]
-Taxi
+[SPAIN]
+Espagnol
-[WASHING]
-Washington
+[GORLEV]
+Niveau gore
-[BOBCAT]
-Bobcat
+[PRVMEN]
+Briefings précédents
-[WHOOPEE]
-Mr Whoopee
+[PUSAVE]
+Sauvegarder la partie uniq.
-[BFINJC]
-BF Injection
+[CNTSAV]
+Sauvegarde impossible. Mission en cours.
-[HUNTER]
-Hunter
+[CNCSAV]
+Sauvegarde impossible. T'es en caisse.
-[POLICAR]
-Police
+[CRMGSV]
+Créer répertoire protégé contre la copie
-[ENFORCR]
-Enforcer
+[MGSVCN]
+Répertoire créé
-[SECURI]
-Securicar
+[MGSVNC]
+Répertoire non créé
-[BANSHEE]
-Banshee
+[YES]
+Oui
-[PREDATR]
-Predator
+[NO]
+Non
-[BUS]
-Bus
+[X]
+x
-[RHINO]
-Rhino
+[LAST]
+Dernier message. STAUNTON COURSE 2
-[BARRCKS]
-Barracks OL
+[GS_STYL]
+STYLE DE JEU :
-[CUBAN]
-Cuban Hermes
+[GS_FFAL]
+CHACUN POUR SOI
-[HELI]
-Hélicoptère
+[GS_LOC]
+ZONE DE JEU :
-[DODO]
-Dodo
+[GS_SLMT]
+LIMITE SCORE :
-[COACH]
-Coach
+[GS_KLMT]
+LIMITE VICTIMES :
-[CABBIE]
-Cabbie
+[GS_TLMT]
+LIMITE TEMPS :
-[STALION]
-Stallion
+[GS_ULMT]
+SANS LIMITE
-[RUMPO]
-Rumpo
+[GS_PRUP]
+BONUS :
-[RCBANDT]
-RC Bandit
+[GS_RACE]
+COURSE :
-[ROMERO]
-Corbillard de Romero
+[GS_LAPS]
+TOURS :
-[PACKER]
-Packer
+[GS_OK]
+OK
-[ADMIRAL]
-Amiral
+[FEH_MP]
+MULTIJOUEUR
-[SQUALO]
-Squalo
+[FEMP_J]
+Rejoindre
-[SEASPAR]
-Sea Sparrow
+[FEMP_CS]
+PERSO :
-[PIZZABO]
-Pizza Boy
+[FEMP_PS]
+PARAMETRES JOUEUR
-[GANGBUR]
-Gang Burrito
+[FEMP_GS]
+CHOIX PARTIE
-[TROPIC]
-Tropic
+[FEMP_NG]
+NOUVELLE PARTIE
-[SPEEDER]
-Speeder
+[SVRLIST]
+LISTE HOTES
-[REEFER]
-Reefer
+[SVRINFO]
+INFOS HOTE
-[FLATBED]
-Flatbed
+[SVRNAME]
+NOM :
-[YANKEE]
-Yankee
+[NO_SVRS]
+RECHERCHE D'HOTES
-[CADDY]
-Caddy
+[NO_PLRS]
+RECHERCHE DE JOUEURS
-[ZEBRA]
-Taxi Zebra
+[NO_NAME]
+PAS DE NOM
-[TOPFUN]
-Top Fun
+[NO_WIFI]
+Pour jouer en multijoueur, il faut activer l'interrupteur WLAN.
-[SKIMMER]
-Skimmer
+[FEMP_SG]
+LANCER
-[PCJ600]
-PCJ 600
+[FEMP_S]
+Commencer
-[PHOENIX]
-Phoenix
+[FEMP_WS]
+En attente du feu vert de l'hôte...
-[FAGGIO]
-Faggio
+[SVRLOST]
+La communication avec l'hôte a été perdue.
-[FREEWAY]
-Freeway
+[NOSVRS]
+Hôte introuvable.
+
+[MP_WARN]
+Commencer une partie multijoueur annulera tous progrès depuis la dernière sauvegarde.
-[RCBARON]
-RC Baron
+[FEDS_XB]
+Sélectionner
-[RCRAIDE]
-RC Raider
+[FEDS_TB]
+Retour
-[GLENDAL]
-Glendale
+[FEDS_ST]
+touche START (mise en marche) : REPRENDRE
-[OCEANIC]
-Oceanic
+[FEST_OO]
+sur
-[SANCHEZ]
-Sanchez
+[FED_SUB]
+SOUS-TITRES :
+
+[FEC_TUC]
+Contrôle tourelle
+
+[FEC_SM3]
+Mission spéciale (touche R3)
+
+[FEC_RS3]
+Stations de radio (touche L3)
+
+[FEC_HO3]
+Klaxon (touche L3)
+
+[FIRST]
+~g~1er
-[SPARROW]
-Sparrow
+[SECOND]
+~g~2e
-[LOVEFIS]
-Love Fist
+[THIRD]
+~g~3e
-[COASTG]
-Garde-côte
+[FOURTH]
+~g~4e
-[DINGHY]
-Dinghy
+[NOCONTE]
+Veuillez connecter une manette analogique (DUALSHOCK®) ou une manette analogique (DUALSHOCK®2) dans le port de manette N°1 pour continuer.
-[HERMES]
-Hermes
+[WRCONT]
+La manette connectée au port de manette N°1 n'est pas compatible. GTA: Liberty City Stories nécessite une manette analogique (DUALSHOCK®) ou une manette analogique (DUALSHOCK®2).
-[SABRE]
-Sabre
+[WRCONTE]
+La manette connectée au port de manette N°1 n'est pas compatible. GTA: Liberty City Stories nécessite une manette analogique (DUALSHOCK®) ou une manette analogique (DUALSHOCK®2).
-[SABRETU]
-Sabre Turbo
+[WRONGCD]
+Disque incorrect. Insérer le disque de GTA:Liberty City Stories.
-[WALTON]
-Walton
+[NOCD]
+Le compartiment à disque est vide. Insérer le disque de GTA:Liberty City Stories.
-[REGINA]
-Regina
+[OPENCD]
+Le compartiment à disque est ouvert. Fermer le compartiment à disque.
-[COMET]
-Comet
+[RESTART]
+Lancement d'une nouvelle partie.
-[DELUXO]
-Deluxo
+[GA_3]
+~w~100$ la nouvelle peinture !
-[BURRITO]
-Burrito
+[GA_1A]
+~w~Reviens quand tu seras moins occupé...
-[SPAND]
-Spandex Express
+[AWAY]
+~r~Il s'est tiré !
-[MARQUIS]
-Marquis
+[GA_6B]
+~w~Gare-toi, amorce la bombe avec~h~ ~k~ ~PDFW~ ~w~et TIRE-TOI !
-[BAGGAGE]
-Bagagiste
+[GA_7B]
+~w~Appuie sur~h~ ~k~ ~PDFW~~w~ pour amorcer la bombe. Elle explosera quand le moteur démarrera.
-[KAUFMAN]
-Taxi Kaufman
+[FESZ_CA]
+Annuler
-[COASTMA]
-Garde-côte Maverick
+[FESZ_QU]
+Quitter
-[MAVERIC]
-Maverick
+[FESZ_L1]
+Sauvegarde réussie.
-[RANCHER]
-Rancher
+[FESZ_L2]
+Nom de ta sauvegarde :
-[FBIRANC]
-FBI Rancher
+[FESZ_OK]
+OK
-[VIRGO]
-Virgo
+[FES_LGA]
+CHARGER PARTIE
-[GREENWO]
-Greenwood
+[FES_DGA]
+SUPPRIMER SAUVEGARDE
-[HOTRING]
-Hotring Racer
+[FES_NGA]
+NOUVELLE PARTIE
-[BLISTAC]
-Blista Compact
+[FES_CAN]
+Annuler
-[FEST_DF]
-Dist. parcourue à pied (miles)
+[FESZ_QL]
+Toute progression non sauvegardée pour la partie en cours sera perdue. Charger ?
-[FEST_DC]
-Dist. parcourue en voiture (miles)
+[FESZ_QD]
+Supprimer cette sauvegarde ?
-[FESTDFM]
-Distance parcourue à pied (m)
+[FESZ_QO]
+Ecraser cette sauvegarde ?
-[FESTDCM]
-Distance parcourue en voiture (m)
+[FESZ_QR]
+Lancer une nouvelle partie ? Toute progression depuis la dernière sauvegarde sera perdue. Continuer ?
-[TOT_DIS]
-Distance totale parcourue (miles)
+[FESZ_QS]
+SAUVEGARDER ?
-[TOTDISM]
-Distance totale parcourue (m)
+[T4X4_2A]
+~g~T'as ~y~2 minutes~g~ pour franchir ~y~12~g~ points de passage !~n~ ~g~Tu peux les franchir dans ~y~N'IMPORTE QUEL ORDRE.
-[DISTHEL]
-Dist. parcourue en hélicoptère (miles)
+[T4X4_2B]
+~1~ sur 12 !
-[DISTHEM]
-Dist. parcourue en hélicoptère (m)
+[T4X4_2C]
+~y~FRANCHIS~g~ le premier point de passage pour enclencher le chrono. ~g~Chaque point de passage te donne ~y~10 SECONDES~g~.
-[DISTBOA]
-Dist. parcourue en bateau (miles)
+[T4X4_F]
+~r~Tu t'es planté ! Pauvre naze !
-[DISTBOM]
-Dist. parcourue en bateau (m)
+[UPSIDE]
+~r~T'as bousillé ta caisse !
+
+[FEST_DF]
+Dist. parcourue à pied (miles)
+
+[FEST_DC]
+Dist. parcourue en caisse (miles)
+
+[FESTDFM]
+Distance parcourue à pied (m)
+
+[FESTDCM]
+Distance parcourue en caisse (m)
[FEST_LS]
-Personnes secourues en ambulance
+Personnes sauvées (Ambulance)
[FEST_CC]
-Criminels tués lors de la mission d'autodéfense
+Criminels tués (Autodéfense)
[FEST_FE]
-Nombre total de feux éteints
+Incendies éteints
+
+[FEST_LF]
+Plus long vol en Dodo
+
+[FEST_BD]
+Meil. tps désamorçage
[FEST_RP]
Rodéos réussis
+[FEST_CN]
+Tps max. restant "Karmageddon"
+
+[FEST_TR]
+Victimes max. "RC Triad Take-Down"
+
[FEST_MP]
Missions réussies
-[FEST_BB]
-Les fous du volant :
-
[FEST_H0]
-Nombre maximum de points de passage
+Points de passage max.
[FEST_GC]
-Nombre total de voitures de gang :
+Caisses de gang bousillées :
-[FEST_H1]
-Destruction de diablo
+[USJ]
+~w~BONUS POUR CASCADE UNIQUE !
-[FEST_H2]
-Massacre de la Mafia
+[USJ_FAL]
+~w~CASCADE UNIQUE RATEE !
-[FEST_H3]
-Le désastre du casino
+[HM1_1]
+~g~Bute 20 Purple Nines en 2 minutes 30 secondes.
-[FEST_H4]
-Le destructeur de Rumpo
+[KM1_8A]
+Appuie sur~h~ ~k~ ~PDFW~ ~w~pour ~h~amorcer la bombe~w~ et tire-toi !
-[USJ]
-BONUS POUR CASCADE UNIQUE!
+[KM1_8D]
+Appuie sur~h~ ~k~ ~PDFW~ ~w~pour ~h~amorcer la bombe~w~ et tire-toi !
[RATNG1]
-Citoyen honnête
+CITOYEN HONNETE
[RATNG2]
-Quidam
+QUIDAM
[RATNG3]
-Eboueur
+EBOUEUR
[RATNG4]
-Voleur à l'étalage
+VOLEUR A L'ETALAGE
[RATNG5]
-Vandale
+VANDALE
[RATNG6]
-Escroc
+ESCROC
[RATNG7]
-Pickpocket
+PICKPOCKET
[RATNG8]
-Cleptomane
+CLEPTO
[RATNG9]
-Mouchard
+MOUCHARD
[RATNG10]
-Rat
-
-[RATNG11]
-Sangsue
+RAT
[RATNG12]
-Le roi de l'arnaque
+ROI DE L'ARNAQUE
[RATNG13]
-Aigrefin
+AIGREFIN
[RATNG14]
-Grippe-sou
+GRIPPE-SOU
[RATNG15]
-Crapule
+CRAPULE
[RATNG16]
-Rascal
+RASCAL
[RATNG17]
-Racaille
+RACAILLE
[RATNG18]
-Garnement
+GARNEMENT
[RATNG19]
-Vaurien
+VAURIEN
[RATNG20]
-Hors-la-loi
+HORS-LA-LOI
[RATNG21]
-Voyou
+VOYOU
[RATNG22]
-Lâche
+LACHE
[RATNG23]
-Idiot SA
+GORILLE SA
[RATNG24]
-Idiot
+GORILLE
[RATNG25]
-Récidiviste
+RECIDIVISTE
[RATNG26]
-Ancien taulard
+EX-TAULARD
[RATNG27]
-Criminel
+CRIMINEL
[RATNG28]
-Clochard
+CONVOYEUR
[RATNG29]
-Sage
+CERVEAU
[RATNG30]
-Pilote
+CHAUFFEUR
[RATNG31]
-Gros bras
+GROS BRAS
[RATNG32]
-Tueur à gages
+TUEUR A GAGES
[RATNG33]
-Chasseur de tête
+CHASSEUR DE TETE
[RATNG34]
-Force de l'ordre
+FORCE DE L'ORDRE
[RATNG35]
-Ronin
+RONIN
[RATNG36]
-Magouilleur
+MAGOUILLEUR
[RATNG37]
-Tueur
+TUEUR
[RATNG38]
-Associé
+ASSOCIE
[RATNG39]
-Boucher
+BOUCHER
[RATNG40]
-Nettoyeur
+NETTOYEUR
[RATNG41]
-Assassin
+ASSASSIN
[RATNG42]
-Conseiller
+CONSEILLER
[RATNG43]
-Autodidacte
+AUTODIDACTE
[RATNG44]
-Bras droit
+BRAS DROIT
[RATNG45]
-Exécutant
+BOURREAU
[RATNG46]
-Lieutenant
+LIEUTENANT
[RATNG47]
-Sous-chef
+SOUS-CHEF
[RATNG48]
-Capo
+CAPO
[RATNG49]
-Patron
+PATRON
[RATNG50]
-Noops
+CAID
[RATNG51]
-Don
+DON
[RATNG52]
-Roi de la putain de ville
+PARRAIN
+
+[TRAIN_1]
+Kurowski Station
+
+[TRAIN_2]
+Rothwell Station
+
+[TRAIN_3]
+Baillie Station
+
+[SUBWAY1]
+Portland Station
+
+[SUBWAY2]
+Rockford Station
+
+[SUBWAY3]
+Staunton South Station
+
+[SUBWAY4]
+Shoreside Terminal
+
+[DETON]
+EXPLOSION
+
+[RCBOMB1]
+RC Triad Take-Down
+
+[RECORD]
+~w~Nouveau record : ~1~ victimes !
+
+[NRECORD]
+~r~T'as pas battu l'ancien record de ~1~ victimes !
+
+[RCBOMBF]
+~r~T'es descendu de la camionnette !
+
+[RC_2]
+T'as 2 minutes pour faire exploser autant de caisses de la Mafia que possible.
+
+[RC_3]
+T'as 2 minutes pour faire exploser autant de caisses des Yakuzas que possible.
+
+[RC_4]
+T'as 2 minutes pour faire exploser autant de caisses des Yardies que possible.
+
+[RC_5]
+T'as 2 minutes pour faire exploser autant de caisses des Hoods que possible.
+
+[RC_6]
+T'as 2 minutes pour faire exploser autant de caisses du Cartel que possible.
+
+[RAMPKA]
+~w~T'as besoin d'un véhicule pour ce rodéo.
[PAGE_00]
.
+[TURTXT]
+Massacre mobile !
+
+[TURPASS]
+~w~Massacre réussi !
+
+[TUR3D]
+~w~Etat caisse
+
[WELCOME]
-BIENVENUE A
+BIENVENUE
[TSCORE]
-REVENUS : ~1~$
+~w~TOTAL DES GAINS : ~1~$
-[PBOAT_2] { reVC update }
-Appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer avec les canons du bateau.
+[PBOAT_1]
+Appuie sur~h~ ~k~ ~VEWEP~ ~w~pour tirer avec les canons du bateau.
-[HJSTAT]
-Distance : ~1~.~1~ m Hauteur : ~1~.~1~ m Saltos : ~1~ Rotation : ~1~_
+[HM2_1]
+Utilise les RC buggies pour pulvériser les voitures blindées. Appuie sur~h~ ~k~ ~VEWEP~ ~w~pour les faire exploser.
-[HJSTATW]
-Distance : ~1~.~1~ m Hauteur : ~1~.~1~ m Saltos : ~1~ Rotation : ~1~_ Et quelle belle réception!
+[HM2_1A]
+Utilise les RC buggies pour pulvériser les voitures blindées. Appuie sur~h~ ~k~ ~VEWEP~ ~w~pour les faire exploser.
-[ATUTOR]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions ambulance.
+[HM2_2]
+~r~T'as pas pulvérisé toutes les voitures blindées.
+
+[HM2_6]
+~g~Voiture blindée pulvérisée.
+
+[FESZ_UC]
+ANNULER
+
+[FEDS_SM]
+Touche L, Touche R-CHANGER MENU
+
+[FEDS_AS]
+;=-CHANGER SELECTION
+
+[FEDSAS2]
+<>-CHANGER SELECTION
+
+[FEDS_SS]
+Touche L, Touche R-CHANGER SELECTION
+
+[FEDSSC1]
+;-DEFILEMENT + RAPIDE
+
+[FEDSSC2]
+=-ARRET DEFILEMENT
+
+[FES_LOF]
+Echec du chargement.
+
+[FES_SLO]
+SAUVEGARDE
+
+[FES_ISC]
+CORROMPUE
+
+[FESZ_TI]
+SAUV. Z1
+
+[FESZ_SA]
+Sauvegarder
+
+[MC_LDFL]
+Echec du chargement !
+
+[MC_NWRE]
+La partie se relance...
+
+[BIFP_1]
+~w~Aïe ! Distance vol plané : ~1~,~1~m
+
+[BIFP_1F]
+~w~Aïe ! Distance vol plané : ~1~pieds
+
+[DIAB1_5]
+TPS COURSE :
+
+[F_FAIL1]
+~r~Fin de la mission Pompiers.
+
+[F_CANC]
+~r~Mission Pompiers annulée !
+
+[F_FAIL3]
+~r~T'es à la bourre !
+
+[F_FAIL4]
+~r~Un des passagers est mort !
+
+[F_FAIL5]
+~r~Une des caisses est détruite !
+
+[F_FAIL6]
+~r~La caisse est bousillée !
+
+[F_EXTIN]
+Feux
+
+[A_CANC]
+~r~Mission Ambulance annulée !
+
+[ALEVEL]
+~w~Mission Ambulance (niveau ~1~)
+
+[A_FAIL1]
+~r~Fin de la mission Ambulance.
[FEST_HA]
-Mission ambulance, niveau maximum
+Mission Ambulance (niveau max.)
+
+[A_SAVES]
+~w~PERSONNES SAUVEES : ~1~
[C_KILLS]
-CRIMINELS TUES : ~1~
+~w~CRIMINELS BUTES : ~1~
-[HJSTATF]
-Distance : ~1~ ft Hauteur : ~1~ ft Saltos : ~1~ Rotation : ~1~_
+[F_START]
+~b~Véhicule en flammes ~w~repéré dans le secteur : ~a~. Va vite l'éteindre !
-[HJSTAWF]
-Distance : ~1~ ft Hauteur : ~1~ ft Saltos : ~1~ Rotation : ~1~_ Et quelle belle réception!
+[F_STAR1]
+~b~Véhicules en flammes ~w~repérés dans le secteur : ~a~. Va vite les éteindre !
-[CRED001]
-ROCKSTAR NORTH
+[F_REWAR]
+~w~FEU ETEINT ! Niveau ~1~ terminé ! Récomp. : ~1~$
-[CRD001A]
-DIRECTEUR DU STUDIO
+[CINCAM]
+Caméra cinématique
-[CRD001B]
-ANDREW SEMPLE
+[FEDS_AM]
+<>-CHANGER MENU
-[CRED002]
-PRODUCTEUR
+[KABOOM]
+KABOUM !
-[CRD002A]
-DIRECTEUR DU DEVELOPPEMENT
+[HEAD]
+Head Radio
-[CRED003]
-LESLIE BENZIES
+[DBL_CLF]
+Double Clef FM
-[CRED004]
-CONCEPTEUR GRAPHIQUE
+[FLASHB]
+Flashback FM
-[CRED005]
-AARON GARBUT
+[RISE]
+Rise FM
-[CRED006]
-DIRECTEURS TECHNIQUES
+[LIPS]
+Lips 106
-[CRED007]
-OBBE VERMEIJ
+[CHAT]
+Chatterbox FM
-[CRED008]
-ADAM FOWLER
+[K_JAH]
+K-Jah Radio
-[CRED010]
-ANDREW DUTHIE
+[GAM_FM]
+Game Radio FM
-[CRED011]
-CRAIG FILSHIE
+[MSX_FM]
+MSX FM
-[CRED012]
-WILLIAM MILLS
+[GA_2]
+~w~Nouveau moteur et nouvelle peinture : 100$
-[CRED013]
-CHRIS ROTHWELL
+[PERPIC]
+Paquets trouvés
-[CRD013A]
-IMRAN SARWAR
+[GA_21]
+~w~Ce garage ne peut plus contenir de véhicules.
-[CRD013B]
-JAMES WORRALL
+[CHEAT1]
+Code activé
-[CRD013C]
-JOHN HAIME
+[CHEAT2]
+Code arme
-[CRED014]
-ECRIT PAR
+[CHEAT3]
+Code santé
-[CRED015]
-JAMES WORRALL
+[CHEAT4]
+Code protection
-[CRED016]
-PAUL KUROWSKI
+[CHEAT5]
+Code indice de recherche
-[CRED017]
-DAN HOUSER
+[CHEAT6]
+Code argent
-[CRED018]
-CONCEPTEUR PRINCIPAL DES PERSONNAGES
+[CHEAT7]
+Code météo
-[CRD018A]
-CONCEPTEUR DES PERSONNAGES
+[FEDS_BA]
+touche " - RETOUR
-[CRED019]
-IAN MCQUE
+[FED_WIS]
+ECRAN LARGE :
-[CRD019A]
-TOKS SOLARIN
+[USJ_ALL]
+~w~T'AS REUSSI TOUTES LES CASCADES UNIQUES !
-[CRD019B]
-ALAN DAVIDSON
+[JAN]
+Jan
-[CRED020]
-ANIMATEUR PRINCIPAL
+[FEB]
+Fév
-[CRED021]
-ALEX HORTON
+[MAR]
+Mar
-[CRD022A]
-ANIMATEURS
+[APR]
+Avr
-[CRED022]
-LEE MONTGOMERY
+[MAY]
+Mai
-[CRD022B]
-DUNCAN SHIELDS
+[JUN]
+Jun
-[CRD022C]
-GUS BRAID
+[JUL]
+Jul
-[CRED023]
-CONCEPTEURS DES VEHICULES
+[AUG]
+Aoû
-[CRD023A]
-JOLYON ORME
+[SEP]
+Sept
-[CRD023B]
-ALAN DUNCAN
+[OCT]
+Oct
-[CRD024A]
-CONCEPTEUR PRINCIPAL DES VEHICULES
+[NOV]
+Nov
-[CRED024]
-PAUL KUROWSKI
+[DEC]
+Déc
-[CRED025]
-CONCEPTEURS DE CARTE
+[DEFDT]
+--:---:---- --:--:--
-[CRED026]
-ADAM COCHRANE
+[BONUS]
+~g~BONUS ~1~$
-[CRED027]
-NIK TAYLOR
+[TAXI_M]
+'Taxi'
-[CRED028]
-GARY MCADAM
+[COP_M]
+'Autodéfense'
-[CRED029]
-KEIRAN BAILLIE
+[FIRE_M]
+'Pompiers'
-[CRED030]
-ALISDAIR WOOD
+[AMBUL_M]
+'Ambulance'
-[CRED031]
-ANDREW SOOSAY
+[HJ_IS]
+~w~BONUS CASCADE DE TARE : ~1~$
-[CRD031A]
-STEVEN MULHOLLAND
+[HJ_PIS]
+~w~BONUS CASCADE DE TARE PARFAITE : ~1~$
-[CRD031B]
-WAYLAND STANDING
+[HJ_DIS]
+~w~BONUS DOUBLE CASCADE DE TARE : ~1~$
-[CRD031C]
-CAMPBELL J. DICK
+[HJ_PDIS]
+~w~BONUS DOUBLE CASCADE DE TARE PARFAITE : ~1~$
-[CRD031D]
-CONCEPTEUR GRAPHIQUE
+[HJ_TIS]
+~w~BONUS TRIPLE CASCADE DE TARE : ~1~$
-[CRD031E]
-STUART PETRI
+[HJ_PTIS]
+~w~BONUS TRIPLE CASCADE DE TARE PARFAITE : ~1~$
-[CRED032]
-PROGRAMMEUR PRINCIPAL
+[HJ_QIS]
+~w~BONUS QUADRUPLE CASCADE DE TARE : ~1~$
-[CRD032A]
-PROGRAMMEURS
+[HJ_PQIS]
+~w~BONUS QUADRUPLE CASCADE DE TARE PARFAITE : ~1~$
-[CRED033]
-ALEXANDER ROGER
+[HJBAD]
+~w~Un atterrissage de naze ! T'as failli gagné ~1~$ !
-[CRED034]
-GRAEME WILLIAMSON
+[HJDOWN]
+Etat atterrissage : ~1~
-[CRED035]
-BARANE CHAN
+[FESZ_LS]
+Chargement réussi.
-[CRED036]
-DEREK PAYNE
+[MRACE08]
+~w~Reviens quand t'auras un véhicule !
-[CRED037]
-GORDON YEOMAN
+[MRACE01]
+~w~Attends les concurrents et klaxonne pour donner le départ de la course !
-[CRD037A]
-ALAN CAMPBELL
+[MRACE02]
+~w~La course commencera quand le premier joueur klaxonnera.
-[CRD037B]
-MARK HANLON
+[MRACE05]
+~r~T'AS PERDU...
-[CRD037C]
-ANDRZEJ MADAJCZYK
+[MRACE07]
+~r~T'es mort, espèce de loser !
-[CRED038]
-PRODUCTEUR MUSIQUE PRINCIPAL
+[MRACE06]
+~r~T'abandonnes ? Sale flipette !
-[CRED039]
-CRAIG CONNER
+[MRACE09]
+~w~Reprends la course !
-[CRED040]
-STUART ROSS
+[MRACE10]
+~w~T'as gagné (mais t'étais tout seul)...
-[CRED041]
-INGENIEUR AUDIO PRINCIPAL
+[MRACEPO]
+Position
-[CRED042]
-ALLAN WALKER
+[MRCPU03]
+TU LEUR AS MIS LE FEU !
-[CRD041A]
-INGENIEUR DU SON
+[MRCPU04]
+T'ES EN TRAIN DE CRAMER ! ( ------- TRASHMASTER ODD-JOB MISSION ------- )
-[CRD041B]
-AUDIO
+[TRASH1]
+Eboueurs
-[CRD042A]
-WILL MORTON
+[TRASH1A]
+~w~Vide les bennes et apporte les ordures à la décharge.
-[CRED043]
-PROGRAMMEUR AUDIO
+[TRASH1C]
+~w~Le chrono s'enclenche quand tu vides une benne. Vide les bennes dans N'IMPORTE QUEL ORDRE.
-[CRED044]
-RAYMOND USHER
+[TRASH1G]
+~r~Trop dur pour toi ? Mauviette !
-[CRED045]
-RESPONSABLE DES TESTS
+[TRASH1H]
+~r~T'as plus de temps !
-[CRED046]
-CRAIG ARBUTHNOTT
+[TRASH1J]
+~r~Tu t'es trop éloigné de ton itinéraire !
-[CRED047]
-RESPONSABLE CQ
+[TRASH1K]
+~w~Va vider les ~g~bennes !
-[CRED048]
-NEIL CORBETT
+[TRASH1L]
+~w~Retourne à la ~y~décharge !
-[CRED049]
-KEVIN WONG
+[TRASH1M]
+~w~Ordures ramassées ! +~1~ secondes
-[CRED050]
-CQ
+[PCJINFO]
+~w~Franchis les 25 ~y~points de passage~w~ en ~1~ secondes.
-[CRED051]
-DAVID BEDDOES
+[PCJFAIL]
+~r~T'as pas battu le record de ~1~ secondes !
-[CRED052]
-DAVID WATSON
+[PCJPROM]
+~w~T'as ~1~ secondes pour remonter sur ton ~b~deux-roues.
-[CRED053]
-BARRY CLARK
+[PCJPRO1]
+~w~T'as ~1~ seconde pour remonter sur ton ~b~deux-roues.
-[CRED054]
-ROSS SPARROW
+[PCJDEST]
+~r~Deux-roues détruit !
-[CRED055]
-JAMES ALLAN
+[PCJRET]
+~r~T'as pas réussi à remonter sur ton deux-roues.
-[CRED056]
-NEIL MEIKLE
+[PCJTIME]
+~r~T'as plus de temps !
-[CRD056A]
-GEORGE WILLIAMSON
+[PCJCHEC]
+~w~Point de passage ~1~ sur ~1~
-[CRD056B]
-MATT JONES
+[TRRACE1]
+~w~Gagne un peu plus de temps à chaque point de passage franchi...
-[CRD056C]
-ROB HARBOUR
+[TRRACE3]
+~w~T'as fini avec ~1~ secondes d'avance !
-[CRD056D]
-TOM WHITTAKER
+[TRRACE5]
+~w~Ca te fait ~1~$ !
-[CRED057]
-ASSISTANCE TECHNIQUE PRINCIPALE
+[TRRACE6]
+~w~BRAVO ! T'as franchi tous les points de passage en premier ! Voici un bonus de 1000$ !
-[CRED058]
-LORRAINE ROY
+[TRRACE7]
+~r~T'as quitté le circuit !
-[CRD057A]
-ASSISTANCE TECHNIQUE
+[TRRACE8]
+~r~Ta moto est HS !
-[CRED059]
-CHRISTINE CHALMERS
+[TRRACE9]
+~r~T'es pas remonté sur ta moto à temps.
-[CRD060A]
-SERVICES GENERAUX
+[TRRAC10]
+~r~T'as perdu ta moto !
-[CRD060B]
-KIM GURNEY
+[TRRAC11]
+~r~Temps écoulé !
-[CRD060C]
-CASSIE OLIVER
+[ANG]
+Avenging Angels
-[CRED060]
-ROCKSTAR NEW YORK
+[ANG_1]
+~w~Hé, mon pote, on va nettoyer cette ville de tous les criminels !
-[CRED061]
-PRODUCTEUR EXECUTIF
+[ANG_2A]
+Appuie sur~h~ ~k~ ~TGSUB~ ~w~pour rejoindre les Avenging Angels.
-[CRED062]
-SAM HOUSER
+[ANG_3]
+~w~Toi et moi, on pourrait démonter cette ville à nous deux, mais... on va chercher du renfort, on sait jamais.
-[CRED063]
-PRODUCTEUR
+[ANG_3A]
+~w~Arrête-toi près d'autres Avenging Angels pour qu'ils rejoignent ton gang.
-[CRED064]
-DAN HOUSER
+[ANG_4]
+~w~Yo ! J'ai rejoint cette bande de guignols pour me battre ! Qu'est-ce qu'on attend ?
-[CRED065]
-VICE-PRESIDENT DU DEVELOPPEMENT
+[ANG_5]
+~w~J'suis ton homme...
-[CRED066]
-JAMIE KING
+[ANG_6]
+~w~Allons cramer quelques ordures !
-[CRED067]
-RESPONSABLE TECHNOLOGIE
+[ANG_7]
+~w~Ouais, c'est le top, la baston !
-[CRED068]
-GARY J. FOREMAN
+[ANG_7A]
+~w~Moi, ça me va, et toi... ?
-[CRED069]
-PRODUCTEUR ASSOCIE
+[ANG_7B]
+~w~On veut pas de gangs de nazes dans nos rues !
-[CRED070]
-JEREMY POPE
+[ANG_7C]
+~w~Pas de ça chez moi !
-[CRD071A]
-RESPONSABLE CONTROLE QUALITE
+[ANG_7D]
+~w~L'heure est venue de riposter !
-[CRD072A]
-JEFF ROSA
+[ANG_7E]
+~w~Ici, c'est nous qui faisons la loi !
-[CRED071]
-RESPONSABLE MUSIQUE
+[ANG_8]
+Temps restant
-[CRED072]
-TERRY DONOVAN
+[ANG_9]
+~w~Temps prolongé !
-[CRED073]
-EQUIPE DE PRODUCTION
+[ANG_10]
+~r~Temps écoulé !
-[CRED074]
-TERRY DONOVAN
+[ANG_11]
+~w~Il y a un groupe 'd'indésirables' qui traînent dans le coin... On va leur donner une leçon...
-[CRED075]
-JENNIFER KOLBE
+[ANG_12]
+~w~Y a un gang qui sème la panique dans les rues. On va leur apprendre !
-[CRED076]
-JENEFER GROSS
+[ANG_13]
+~w~Cette ville devient folle ! Les gens croient avoir le droit de se rassembler ? On va leur montrer !
-[CRED077]
-LAURA PATERSON
+[ANG_13A]
+~w~Un gang de connards a été repéré en train de malmener les gens dans les rues...
-[CRED078]
-JEFF CASTANEDA
+[ANG_14]
+~w~On signale un autre crime... En route !
-[CRED079]
-JERONIMO BARRERA
+[ANG_16]
+~w~Certains individus ont été repérés en stationnement interdit. ON Y VA !
-[CRED080]
-CARLY SLATER
+[ANG_16A]
+~w~Je connais des gars toujours en quête d'un sale coup. Ils ont besoin d'une bonne correction.
-[CRED081]
-JUNG KWAK
+[ANG_OBJ]
+~w~Liquide le ~r~gang perturbateur.
-[CRED082]
-BRIAN WOOD
+[ANG_17]
+~w~Bien joué ! Grâce à toi, ce quartier a été nettoyé des criminels... pour l'instant...
-[CRED083]
-RENAUD SEBANNE
+[ANG_18]
+~w~Ils se barrent !
-[CRED084]
-RICHARD KRUGER
+[ANG_19]
+~w~Trouve un Avenging Angel et arrête-toi près de lui pour connaître ta prochaine mission.
-[CRD084A]
-DANIEL EINZIG
+[ANG_20]
+~w~Ils se font la malle !
-[CRD084B]
-JACEN BURROWS
+[ANG_21]
+~w~Les laissez pas se tirer !
-[CRD084C]
-LINN PR
+[VIC1]
+Home Sweet Home
-[CRD084D]
-COUVERTURE
+[VIC2]
+Slacker
-[CRD084E]
-STEPHEN BLISS
+[VIC3]
+Dealing Revenge
-[CRED085]
-KENT PAUL'S 80 NOSTALGIA ZONE
+[VIC4]
+Snuff
-[CRED086]
-ECRIT PAR DAN HOUSER
+[VIC5]
+Smash and Grab
-[CRD086A]
-PRODUIT PAR ADAM TEDMAN
+[VIC6]
+Hot Wheels
-[CRED087]
-WWW.KENTPAUL.COM ET WWW.VICECITY.COM
+[VIC7]
+The Portland Chainsaw Masquerade
-[CRED088]
-CREES PAR
+[MAR1]
+Shop 'til you Strop
-[CRD088A]
-ADAM TEDMAN
+[MAR2]
+Taken for a Ride
-[CRD088B]
-DAVID YU
+[MAR3]
+Booby Prize
-[CRD088C]
-JERRY LUNA
+[MAR4]
+Biker Heat
-[CRD088D]
-STUART PETRI
+[MAR5]
+Overdose of Trouble
-[CRD088E]
-MICHAEL CARNEVALE
+[SAL1]
+The Offer
-[CRD088F]
-GREG LAU
+[SAL2]
+Ho Selecta !
-[CRD088G]
-FUTABA HAYASHI
+[SAL3]
+Frighteners
-[CRED089]
-RESPONSABLE CQ
+[SAL4]
+Rollercoaster Ride
-[CRED090]
-CRAIG ARBUTHNOTT
+[SAL5]
+Contra-Banned
-[CRED091]
-ANALYSTE PRINCIPAL
+[SAL6]
+Sindacco Sabotage
-[CRED092]
-ADAM DAVIDSON
+[SAL7]
+The Trouble with Triads
-[CRD092A]
-JOE HOWELL
+[SAL8]
+Driving Mr Leone
-[CRD092B]
-MARC FERNANDEZ
+[JDT1]
+Bone Voyeur!
-[CRED093]
-ANALYSTE DE JEU
+[JDT2]
+Don in 60 Seconds
-[CRED094]
-RICHARD HUIE
+[JDT3]
+A Volatile Situation
-[CRED095]
-EQUIPE DE TEST CHEZ ROCKSTAR
+[JDT4]
+Blow up 'Dolls'
-[CRED096]
-LANCE WILLIAMS
+[JDT5]
+Salvatore's Salvation
-[CRED097]
-JOE GREENE
+[JDT6]
+The Guns of Leone
-[CRED098]
-BRIAN PLANER
+[JDT7]
+Calm before the Storm
-[CRD098A]
-ELIZABETH SATTERWHITE
+[JDT8]
+The Made Man
-[CRD098B]
-JAMEEL VEGA
+[MAC1]
+Snappy Dresser
-[CRD098C]
-MIKE HONG
+[MAC2]
+Big Rumble in Little China
-[CRED099]
-LEE CUMMINGS
+[MAC3]
+Grease Sucho
-[CRED100]
-HISTOIRE
+[MAC4]
+Dead Meat
-[CRED101]
-JAMES WORRALL
+[MAC4_0]
+Casa
-[CRED102]
-DAN HOUSER
+[MAC5]
+No Son of Mine
-[CRED103]
-ADAM TEDMAN
+[SALH1]
+Rough Justice
-[CRED104]
-PAUL YEATES
+[SALH2]
+Dead Reckoning
-[CRED105]
-JENEFER GROSS
+[SALH3]
+Shogun Showdown
-[CRED106]
-LAURA PATERSON
+[SALH4]
+The Shoreside Redemption
-[CRED107]
-CINEMATIQUES
+[SALH4_V]
+~r~v1.1
-[CRED108]
-ECRITES PAR DAN HOUSER ET JAMES WORRALL
+[SALH5]
+The Sicilian Gambit
-[CRED109]
-DIRECTION DE L'AUDIO PAR DAN HOUSER ET NAVID KHONSARI
+[SALH5_V]
+~r~v1.1
-[CRED110]
-PRODUCTION DE JAMIE KING
+[DONH1]
+Panlantic Land Grab
-[CRD110A]
-CASTING : JAMIE KING, SEAN MACALUSO
+[DONH2]
+Stop the Press
-[CRED111]
-DISTRIBUTION
+[DONH3]
+Morgue Party Resurrection
-[CRD111A]
-PERSONNAGES SECONDAIRES
+[DONH4]
+No Money, Mo' Problems
-[CRED112]
-TOMMY VERCETTI : RAY LIOTTA
+[DONH5]
+Bringing the House Down
-[CRED113]
-KEN ROSENBERG : WILLIAN FICHTNER
+[DONH6]
+Love on the Run
-[CRED114]
-SONNY FORELLI : TOM SIZEMORE
+[TOSH1]
+More Deadly than the Male
-[CRED115]
-STEVE SCOTT : DENNIS HOPPER
+[TOSH2]
+Cash Clash
-[CRED116]
-AVERY CARRINGTON : BURT REYNOLDS
+[TOSH2F0]
+~r~Une camionnette a atteint le complexe des Yakuzas !
-[CRED117]
-RICARDO DIAZ : LUIS GUZMAN
+[TOSH2F1]
+~r~Le convoi a atteint le complexe des Yakuzas !
-[CRED118]
-LANCE VANCE : PHILIP MICHAEL THOMAS
+[TOSH2F2]
+~r~T'as pas détruit les camionnettes de sécurité !
-[CRED119]
-COLONEL JUAN CORTEZ : ROBERT DAVI
+[TOSH2M0]
+~w~Et une de moins !
-[CRED120]
-UMBERTO ROBINA : DANNY TREJO
+[TOSH2M1]
+~w~Encore une au tapis !
-[CRED121]
-PHIL CASSIDY : GARY BUSEY
+[TOSH3]
+A Date with Death
-[CRED122]
-MITCH BAKER : LEE MAJORS
+[TOSH4]
+Cash in Kazuki's Chips
-[CRED123]
-MERCEDES CORTEZ : FAIRUZA BALK
+[PO_MOB1]
+~w~Toni ? C'est ta maman !
-[CRED124]
-KENT PAUL : DANNY DYER
+[POMOB1A]
+~w~Depuis combien de temps es-tu de retour ?
-[CRED125]
-JEZZ TORRENT : KEVIN MCKIDD
+[POMOB1B]
+~w~Pourquoi tu viens pas me voir ?
-[CRED126]
-REGULATRICE TAXI : DEBORAH HARRY
+[POMOB1C]
+~w~C'est quoi ton problème ?
-[CRED127]
-CANDY SUXX : JENNA JAMESON
+[POMOB1D]
+~w~Je suis ta mère, pour l'amour de Dieu ! Viens me voir !
-[CRED128]
-BJ SMITH : LAWRENCE TAYLOR
+[PO_MOB2]
+~w~Salut Médor, c'est Maria.
-[CRED129]
-TATA POULET : YOUREE CLEOMILI HARRIS
+[PO_MOB3]
+~w~Hé, Toni ! C'est J.D.
-[CRED130]
-FOURNISSEUR : ARMANDO RIESCO
+[POMOB3A]
+~w~Y paraît que t'es sur un gros coup.
-[CRED131]
-COUGAR : BLAYNE PERRY
+[POMOB3B]
+~w~J'espère juste que t'oublieras pas ton vieux pote J.D. quand tu seras au sommet !
-[CRED132]
-HILARY : CHARLES TUCKER
+[POMOB4A]
+~w~Qu'est-ce que tu veux ?
-[CRED133]
-ALEX SHRUB, REPRESENTANT DU CONGRES : CHRIS LUCAS
+[POMOB4B]
+~w~Quelqu'un pour laver ton linge sale ? Pour te torcher ?
-[CRED134]
-LE VIEUX KELLY : GEORGE DICENZO
+[POMOB4C]
+~w~Le prends pas comme ça... J'suis vraiment désolé pour tout...
-[CRD134A]
-CAM JONES : GREG SIMS
+[POMOB4F]
+~w~Un gâteau à l'arsenic ?
-[CRD134B]
-PSYCHOPATHE : HUNTER PLATIN
+[POMOB4G]
+~w~Laisse tomber...
-[CRD134C]
-MAUDE, LA VENDEUSE DE GLACES : JANE GENNARO
+[POMOB4I]
+~w~Salvatore en a entendu parler et il m'a dit qu'on devait évoluer tous les deux.
-[CRD134D]
-JETHRO : JOHN ZURHELLEN
+[POMOB4J]
+~w~C'est ce que j'essaie de faire en m'excusant.
-[CRD134E]
-GONZALES : JORGE PUPO
+[PO_MOB5]
+~w~Toni ? C'est Salvatore.
-[CRD134F]
-DWAYNE : NAVID KHONSARI
+[POMOB5A]
+~w~On a de gros ennuis ! Ramène-toi, et en vitesse !
-[CRD134G]
-DICK : PETER MCKAY
+[PO_MOB6]
+~w~Anthony ? C'est Salvatore.
-[CRD134H]
-MIKE, L'ACTEUR DE PORNO : ROBERT CIHRA
+[POMOB6A]
+~w~T'as pas vu Maria ?
-[CRD134I]
-PERCY : RUSSELL FOREMAN
+[POMOB6B]
+~w~Je trouve cette salope que quand elle a besoin de fric !
-[CRED135]
-CAPTURE DE MOUVEMENTS
+[ST_MOB8]
+~w~Ouais ?
-[CRED136]
-ANIME PAR
+[STMOB8A]
+~w~Toni ? C'est Sal.
-[CRD136A]
-DIRECTION TECHNIQUE PAR ALEX HORTON
+[STMOB8B]
+~w~Faut qu'on cause, mais j'aime pas ces téléphones portables.
-[CRED137]
-DIRIGE PAR
+[STMOB8C]
+~w~Je te rappelle sur le téléphone public, à l'extérieur du tribunal.
-[CRD137A]
-DIRIGE PAR NAVID KHONSARI
+[ST_MOB1]
+~w~Toni. C'est Donald.
-[CRED138]
-PRODUIT PAR
+[STMOB1A]
+~w~J'ai un souci plutôt pressant qui réclame tes... talents.
-[CRD138A]
-PRODUIT PAR JAMIE KING
+[STMOB1B]
+~w~Passe me voir à mon bureau dès que tu peux.
-[CRD138B]
-RENAUD SEBBANE
+[ST_MOB2]
+~w~Ouais ?
-[CRED139]
-ENREGISTRE AUX PERSPECTIVE STUDIOS, BROOKLYN
+[STMOB2A]
+~w~Cipriani ? C'est moi, McAffrey.
-[CRED140]
-ACTEURS POUR LA CAPTURE DE MOUVEMENTS
+[STMOB2B]
+~w~J'ai des nouvelles qui intéresseront sûrement Salvatore.
-[CRD140A]
-BLAYNE PERRY
+[STMOB2C]
+~w~Viens me retrouver à l'endroit habituel.
-[CRD140B]
-JONATHON SALE
+[ST_MOB3]
+~w~Ouais ?
-[CRD140C]
-CHARLES TUCKER
+[STMOB3A]
+~w~C'est Sal.
-[CRD140D]
-EDDIE MARRERO
+[STMOB3B]
+~w~Ecoute, les Forelli avaient le maire Hole dans leur poche.
-[CRD140E]
-WILLIAM MCCALL
+[STMOB3D]
+~w~Je connais un homme d'affaires qui ferait n'importe quoi pour se faire élire.
-[CRD140F]
-JORGE PUPO
+[STMOB3E]
+~w~C'est un enfoiré de première... Il est donc parfaitement qualifié pour le poste.
-[CRD140G]
-ROBERT JACKSON
+[STMOB3F]
+~w~Je lui ai dit que tu veillerais à ce qu'il remporte l'élection... pour nous !
-[CRD140H]
-TARA RADCLIFFE
+[ST_MOB4]
+~w~Allô ?
-[CRD140I]
-JENIFER GAMBETESE
+[STMOB4A]
+~w~Toni. C'est moi, Sal.
-[CRD140J]
-KRIS ACHEVARRIA
+[STMOB4B]
+~w~Je peux sentir la marque des Forelli sur la merde dans laquelle je suis fourré.
-[CRD140K]
-ALI ORDOUBADI
+[STMOB4C]
+~w~La question qui m'intéresse, c'est pourquoi ils se servent du maire pour me pourrir la vie ?
-[CRD140L]
-KAHLEEM POOLE
+[STMOB4D]
+~w~Ecoute, retrouve-moi à la jetée.
-[CRED141]
-DIALOGUES DES PIETONS
+[STMOB4E]
+~w~Faut qu'on dégotte des infos !
-[CRD141A]
-ECRIT PAR DAN HOUSER, MARC FERNANDEZ, GILLIAN TELLING ET NAVID KHONSARI
+[ST_MOB5]
+~w~Yo !
-[CRD141B]
-AVEC L'AIDE DE JEREMY POPE, LANCE WILLIAMS ET JENNY JEMISON
+[STMOB5B]
+~w~Va à la cabine téléphonique de Torrington.
-[CRED142]
-ECRITS PAR
+[STMOB5C]
+~w~Faut que je te parle.
-[CRD142A]
-DAN HOUSER ET JAMES WORRALL
+[STMOB5D]
+~w~J'voudrais aussi que tu passes voir un de mes associés, à Aspatria, en chemin.
-[CRED143]
-DIRIGE PAR DAN HOUSER, CRAIG CONNER, MARC FERNANDEZ ET ALLAN WALKER
+[STMOB5E]
+~w~Il va nous donner un coup de main pour mettre la pression sur les Sindacco et les Forelli.
-[CRED144]
-PRODUITS PAR RENAUD SEBANNE
+[ST_MOB6]
+~w~Ouais ?
-[CRED145]
-PIETONS
+[STMOB6A]
+~w~Toni ? C'est Sal.
-[CRED146]
-ADAM DAVIDSON, ADAM WATKINS, ALEJANDRO K. BROWN, ALEX ANTHONY SIOUKAS, ALEX GARCIA,
+[STMOB6B]
+~w~Va à la cabine téléphonique de Liberty Campus.
-[CRED147]
-ALICE SALTZMAN, ALISON CIHRA, AMY SALIMA, AMY SALZMAN, ANDREA VIDELA, ANTHONY ATTI,
+[STMOB6C]
+~w~C'est important.
-[CRED148]
-ANTHONY RIVERA, BIJAN SHAMS, BLAYNE PERRY, BRETT BISOGNO, BREYE MATA, BRIAN PANEN,
+[ST_MOB7]
+~w~Ouais ?
-[CRED149]
-BROCK VODER, CAREY BERTINI, CHARISSE LAMBERT, CHRIS DIFAT, CHRIS REISENBERGER,
+[STMOB7A]
+~w~Toni ? C'est Sal.
-[CRED150]
-CHRISTOPHER BRODAY, CHRISTOPHER CARRO, CYNTHIA GREENE, DAMARIES LOPEZ, DAN LEE,
+[STMOB7B]
+~w~Va à Belleville et trouve la cabine téléphonique.
-[CRED151]
-DAN SCHNEIDER, DAN TOYAMA, DAVID DEAN CHALTFIELD, JR., DAVID HARRISON, DAVID WILEY,
+[STMOB7C]
+~w~J'ai un travail urgent.
-[CRED152]
-DEBORAH COLLINS, DEBRANDA CHANEY-GILES, DEMETRA KOUKOULAS, DENISE ROSADO,
+[ST_MOB9]
+~w~Toni Cipriani.
-[CRED153]
-DEVIN BENNETT, DEVIN WINTERBOTTOM, DORIS WOO, DOUGLAS HARRISON, DUNCAN COUTTS,
+[STMOB9A]
+~w~Toni ? C'est Maman.
-[CRED154]
-DUPE AJAYI, EDWIN AVELLANEDA, ELIZABETH HOWELL, ELIZABETH SATTERWHITE, ERIC NAGLE,
+[STMOB9B]
+~w~Il paraît que tu fais partie de la Famille !?
-[CRED155]
-ESTEBAN KARPLUS, F. FONT, FUTABA HAYASHI, GENE HILGREEN, GERALD COSGROVE,
+[STMOB9C]
+~w~... J'ai jamais douté une seule seconde, mon fils !
-[CRED156]
-GERARD LUNA, GILLIAN TELLING, GREGG CARLUCCI, GREGORY CLERVOIX, GREGORY SCHWEIZER,
+[STMOB9D]
+~w~... et maintenant que tu as enfin fait tes preuves...
-[CRED157]
-HADLEY TOMICKI, J. ROSSETT, JAMEEL VEGA, JASON JONES, JEFF ROSA, JENNIFER JEMISON,
+[STMOB9E]
+~w~J'annule le contrat sur ta tête.
-[CRED158]
-JEREMY TAGGERT, JESSICA RIDER, JOSEPH GREENE,JOSEPH HOWELL, KATE DUKICH,
+[STMOB9F]
+~w~Allez, n'en parlons plus !
-[CRED159]
-KEL O'NEILL, KEVIN HOPKINS, LADAWN JAMES, LANCE WILLIAMS, LAURA BUBBLES,
+[STMOB9G]
+~w~Après tout, c'était uniquement dans ton intérêt.
-[CRED160]
-LAURA PATTERSON, LEE CUMMINGS, LETICIA L. YOUNG, LINDSAY KENNEDY, LISA ORITZ,
+[STMOB9H]
+~w~Ah, quel genre de fils oblige sa maman à être aussi sévère ?
-[CRED161]
-LORNA JORDAN, LUCIO AMADIO, MARCO FERNANDEZ, MARIKO TANAKA, MARLON MATTHEWS,
+[STMOB9I]
+~w~A bientôt, mon fils, n'oublie pas ta bonne vieille maman.
-[CRED162]
-MARY TELLING, MASAYOSHI MITSUYAMA, MATTHEW CHUNG, MAX ALLSTADT, MAX BOGDANOV,
+[STMO10]
+~w~Ouais ?
-[CRED163]
-MELISSA ALVAREZ, MICHAEL MAY, MICHAEL ROTHSTEIN, MIGUEL VIDAL, MIKE FEDERLINE,
+[STMO10A]
+~w~Salut, le gros dur. C'est McAffrey.
-[CRED164]
-NATALIE DESCALZO, N'GAI MEMBERS, NICOLAS MALLO, NOELLE SADLER, NORBERT MORIVAN,
+[STMO10B]
+~w~Les Fédéraux ont embarqué ton boss, Salvatore.
-[CRED165]
-OSWALD GREENE, JR., PETER MCKAY, PETER APPEL, PRESTON SAVARESE, RAFAEL GONZALES,
+[STMO10C]
+~w~Et ils sont vraiment pas contents.
-[CRED166]
-RANDY JOHNSON, REY CONCEPCION, RICHARD KROGER, ROB TIBBS, ROBERT JACKSON,
+[STMO10D]
+~w~Il va payer pour tous les crimes commis dans cette ville.
-[CRED167]
-ROBERT SCHULER, ROSS A. MCINTYRE, RUSSELL FOREMAN, RUTH NUNEZ, SALVADORE SUAZO,
+[STMO10E]
+~w~Alors, on se connaît pas, OK ?
-[CRED168]
-SAM WHITE, SANTOS GONZALES, SCOTT SMITH, SEYMOUR FRAILMAN, SPELMAN BRAUMAN,
+[SH_MOB1]
+~w~Toni...?
-[CRED169]
-STEPHANIE TELLING, STEVE KNEZEVICH, STEVE ROBERT, SUMIKO YASUDA, SUSAN LEWIS,
+[SHMOB1A]
+~w~Sal ? C'est toi ?
-[CRED170]
-SYLVIA COLACIOS, TOMOKO MIYAZAKI, TRON, VERDEL HALE, YVES MONDESIR, ZENO LEINFELDER,
+[SHMOB1B]
+~w~Oh, ferme-la ! Je parle à mon avocat, là !
-[CRED171]
-DAVID BEDDOES, CHRISTINE CHALMERS, BARRY CLARK, NEIL CORBETT, KIM GURNEY, NEIL MEIKLE,
+[SHMOB1C]
+~w~Toni ? ... euh... j'veux dire... Lionel ?
-[CRED172]
-CASSIE OLIVER, LORRAINE ROY, DAVID WATSON, KEVIN WONG, WILL MORTON
+[SHMOB1D]
+~w~Ecoute, ils m'ont embarqué ! C'est pas croyable !
-[CRED175]
-ADAM DAVIDSON
+[SHMOB1E]
+~w~Je suis dans la merde, là.
-[CRED176]
-LANCE WILLIAMS
+[SHMOB1F]
+~w~Alors, ramène-toi ici ! J'ai deux ou trois trucs à te confier.
-[CRED177]
-NEIL MCCAFFREY
+[SHMOB1G]
+~w~... Lionel ?
-[CRED178]
-LAURA PATERSON
+[SH_MOB2]
+~w~Ouais ?
-[CRED179]
-REY CONCEPCION
+[SHMOB2A]
+~w~Toni ? C'est Donald.
-[CRED180]
-CHARLES HEROLD
+[SHMOB2B]
+~w~Non, attends, raccroche pas !
-[CRED181]
-ANDREW GREENWALD
+[SHMOB2C]
+~w~J'ai une proposition très intéressante à te faire...
-[CRED182]
-JAMES MIELKE
+[SHMOB2D]
+~w~S'il te plaît, passe me voir à ma... hum... résidence. Je te mettrai au courant.
-[CRED183]
-PETER SUCIU
+[SHMOB2E]
+~w~Toni...?
-[CRED184]
-ALEX ODULIO
+[SHMOB2F]
+~w~Toni, je t'en supplie ! Je t'appelle avec ma dernière piè...
-[CRED185]
-DON NKRUMAH
+[SH_MOB3]
+~w~M. Cipriani ?
-[CRED186]
-KENDALL PITTMAN
+[SHMOB3A]
+~w~Qui c'est ? Comment vous avez eu ce numéro ?
-[CRED187]
-SAL SUAZO
+[SHMOB3B]
+~w~Celui qui met toute sa volonté dans ses actes a toutes les chances de réussir.
-[CRED188]
-EREK MATEO
+[SHMOB3C]
+~w~Je ne devrais pas avoir à vous l'apprendre, M. Cipriani.
-[CRED189]
-CHRIS DIFATE
+[SHMOB3D]
+~w~J'ai besoin de vous pour un problème délicat.
-[CRED190]
-LEILA MILTON
+[SHMOB3E]
+~w~Vous en serez généreusement dédommagé.
-[CRED191]
-DARREN ZOLTOWSKI
+[SHMOB3F]
+~w~Je vous expliquerai tout à mon appartement, à Torrington.
-[CRED192]
-VIRGINIA SMITH
+[SH_MOB4]
+~w~Toni ! C'est Sal !
-[CRED193]
-KEVIN CASSIN
+[SHMOB4A]
+~w~T'as réussi ! C'est pas croyable !
-[CRED194]
-JASON SHIGEMORI
+[SHMOB4B]
+~w~On est sorti d'affaire, petit !
-[CRED195]
-KELLY KINSELLA
+[SHMOB4C]
+~w~Viens me voir, on a quelques détails à régler.
-[CRED196]
-MOLLIE STICKNEY
+[SH_MOB5]
+~w~Toni ? C'est Donald.
-[CRED197]
-STANTON SARJEANT
+[SHMOB5A]
+~w~Si le marché Panlantic est conclu, on va avoir besoin de... hum...
-[CRED198]
-LAURA WALSH
+[SHMOB5B]
+~w~comment dire...
-[CRED199]
-MARK GARONE
+[SHMOB5C]
+~w~'nettoyer' un petit secteur, à Fort Staunton.
-[CRED200]
-JOANNA SLY
+[SHMOB5D]
+~w~Quand vous dites 'on', vous voulez dire 'moi' ?
-[CRED201]
-ELIZABETH HOWELL
+[SHMOB5E]
+~w~Toni, tu me comprends parfaitement.
-[CRED202]
-ANA HERCULES
+[SHMOB5F]
+~w~Va voir 8-Ball. Je suis sûr qu'il peut nous fournir le matériel nécessaire.
-[CRED203]
-SHIRLEY IRICK
+[SHMOB5G]
+~w~Je suis sûr qu'il peut nous fournir le matériel nécessaire.
-[CRED204]
-KASHONA FIELDS
+[SH_MOB6]
+~w~Allô, mec ? Ici 8-Ball.
-[CRED205]
-JOEL M. LILJE
+[SHMOB6A]
+~w~Ton matos est prêt.
-[CRED206]
-JOHN DIBENEDETTO
+[AHIT_H0]
+~w~C'est tout ce dont t'es capable, connard ?
-[CRED207]
-NANCY GILES
+[AHIT_H1]
+~w~C'est pas vrai, ils abandonnent jamais, ces tarés ?
-[CRED208]
-RYAN CROY
+[AHIT_H2]
+~w~Va te faire mettre, minable !
-[CRED209]
-JENNIFER KOLBE
+[AHIT_H3]
+~w~Vous commencez à me les casser !
-[CRED210]
-LIAM BURKE
+[AHIT_BI]
+~w~Ouvre l'oeil ! Un des tueurs de ta mère est pas loin !
-[CRED211]
-SIGRID PREISSL
+[AHIT_TA]
+~w~Fais gaffe ! Un des tueurs de ta mère est dans le coin.
-[CRED212]
-ANITA FITZSIMONS
+[AHIT_BU]
+~w~Attention ! Un des tueurs de ta mère est sur ta piste.
-[CRED213]
-PHILIPPA RASELLI
+[AHIT_AM]
+~w~Fais attention ! Un des tueurs de ta mère t'a repéré.
-[CRED214]
-WIL QUESNEL
+[AHIT_VA]
+~w~Te fais pas avoir ! Y a un tueur de ta mère dans le secteur !
-[CRED215]
-FALKO BURKERT
+[AHIT_PO]
+~w~Reste sur tes gardes ! Un des tueurs de ta mère va tenter de t'avoir.
-[CRED216]
-SARA SEWELL
+[AHIT_CA]
+~w~Ouvre l'oeil ! Un des tueurs de ta mère s'approche de toi !
-[CRED217]
-STATIONS DE RADIO ET MUSIQUE
+[K_TKT]
+Scrapyard Challenge
-[CRED218]
-CONSULTANT EN MUSIQUE
+[K_TK2]
+~w~Passe à travers les cerceaux pour marquer des points.
-[CRD218A]
-HEINZ HENN
+[K_TK4]
+~w~Marque un maximum de points avant la fin du chrono !
-[CRD218B]
-STUART ROSS
+[K_CD]
+~w~T'as ~1~ secondes pour remonter sur ta ~b~moto !
-[CRED219]
-COORDINATEUR DE LA BANDE-SON
+[K_TKP1]
+~w~1 point !
-[CRED220]
-TERRY DONOVAN
+[K_TKP2]
+~w~2 points !
-[CRED221]
-PRODUCTEUR CHEZ ROCKSTAR GAMES
+[K_TKP3]
+~w~3 points !
-[CRED222]
-DAN HOUSER ET LAZLOW
+[K_SC]
+score
-[CRED223]
-PRODUCTEUR CHEZ ROCKSTAR NORTH
+[K_SCX]
+~w~T'as marqué ~1~ points !
-[CRED224]
-CRAIG CONNER
+[K_SCX1]
+~w~T'as marqué 1 point !
-[CRED225]
-ALLAN WALKER
+[K_HSC1]
+~w~Nouveau meilleur score : ~1~ points !
-[CRED226]
-LAZLOW
+[K_HSC2]
+~r~T'as pas battu le meilleur score de ~1~ points.
-[CRED227]
-DJ BANTER ET IMAGING
+[KRUSH]
+Tu obtiendras désormais quatre fois plus de fric en te servant du broyeur !
-[CRED228]
-ECRIT PAR DAN HOUSER ET LAZLOW
+[KRUSH2]
+Tu obtiendras désormais huit fois plus de fric en te servant du broyeur !
-[CRED229]
-FLASH FM
+[TURFAIL]
+~r~DEFI TERMINE !
-[CRD229A]
-TONI-MARIA CHAMBERS
+[TKR1]
+9mm Mayhem
-[CRD229B]
-VOIX ET PRODUCTION : JEFF BERLIN
+[TKR2]
+Scooter Shooter
-[CRED230]
-REMERCIEMENTS SPECIAUX A
+[TCKILL]
+Victimes
-[CRED231]
-TOMMY MOTTOLA,
+[TCHEAL]
+Dégâts
-[CRED232]
-MICHELLE ANTHONY,
+[TC2_1]
+~r~T'as buté ton chauffeur !
-[CRED233]
-STEVE BARNETT,
+[TC2_2]
+~r~Véhicule détruit !
-[CRED234]
-CHUCK FLECKENSTEIN,
+[TC2_3]
+~r~Temps écoulé !
-[CRED235]
-RITA LIBERATOR
+[TC_T_E]
+~w~Cible éliminée ! ~1~$
-[CRED236]
-MARTIN ET CLAIRE LOGAN
+[TUP_BR]
+~w~Elimine autant de ~r~cibles ~w~que possible dans le temps imparti.
-[CRED237]
-SANDRA HUTTON
+[TUP_BR2]
+~w~Elimine plus de ~1~ ~r~cibles ~w~pour inscrire un nouveau meilleur score !
-[CRED238]
-CHRISTINE DAVIDSON
+[TUP_AD]
+~w~T'as 3 pilules d'adrénaline. Appuie sur la touche R1 pour en utiliser une.
-[CRED239]
-ALAN, RED ET BIGFOOT
+[TUPSC1]
+~w~Nouveau meilleur score : ~1~ victimes !
-[CRED240]
-LE T
+[TUPSC2]
+~r~T'as pas battu le meilleur score de ~1~ victimes.
-[CRED241]
-COLIN DONALD
+[MPWCS1]
+The Wedding List
-[CRED242]
-KERRY STALLWOOD
+[MPWCS2]
+Salut, ça roule ?
-[CRED243]
-ALAN MCGREGOR
+[MPWCS3]
+Ecoute, mon fils Joey va se marier !
-[CRED244]
-CHRIS MORTON
+[MPWCS4]
+Je lui ai trouvé une fille très classe, comme ma Maria... J'suis impatient de les voir ensemble !
-[CRED245]
-EMIL BUSSE
+[MPWCS5]
+Le seul problème, c'est que j'veux plus le voir conduire une des épaves qu'il répare dans son atelier.
-[CRED246]
-EMILY BAILLIE
+[MPWCS6]
+Alors, tu vas parcourir cette ville et lui rapporter une vraie caisse.
-[CRED247]
-KEVIN ARCHIBALD
+[MPWCS7]
+Je veillerai à te récompenser.
-[CRED248]
-MORAG KERR
+[MPTCS1]
+Tanks for the Memories
-[CRED249]
-CATH WALKER
+[MPTCS2]
+C'est Sal. J'ai besoin de détourner l'attention des flics, et tu vas m'aider.
-[CRED250]
-ISO BAR
+[MPTCS3]
+J'ai un blindé garé à l'autre bout de la ville. Prends-le et fais des dégâts ! Vas-y à fond !
-[CRED251]
-WATERLINE
+[MPTCS4]
+Je veux que les gens croient que Patton est ressorti de sa tombe !
-[CRED252]
-NEWS CAFE
+[MPTCS5]
+Ecoute, cette diversion est vraiment importante. Alors, j'ai d'autres gars qui vont en faire autant.
-[CRD251A]
-THE POND
+[MPTCS6]
+... Et je payerai seulement celui qui restera le plus longtemps au volant.
-[CRD252A]
-PIVO
+[MPRCS1]
+Street Rage
-[CRED253]
-BUDGET VIDEO RENTALS
+[MPRCS2]
+Ici Salvatore Leone ! Votre bienfaiteur public !
-[CRED254]
-LORNA'S SCOOTER
+[MPRCS3]
+... Ecoutez pas ce que raconte le procureur !
-[CRED255]
-GARETH MURFIN
+[MPRCS4]
+Je suis un généreux protecteur de Liberty City. Et c'est pour ça que je sponsorise cette grande course aujourd'hui.
-[CRED256]
-GRAPHISMES ADDITIONNELS
+[MPRCS5]
+Ca me coûte combien, cette merde ?
-[CRED257]
-TONY PORTER
+[MPRCS6]
+QUOI ? Appelez le Samu, mon coeur s'est arrêté de battre !
-[CRED258]
-CRAIG MOORE
+[MPHPCS2]
+C'est Sal... Les fédéraux ont mis mon téléphone sur écoute, alors j'vais faire dans le subtil.
-[CRED259]
-ANIMATION SYNCHRO LABIALE DES CINEMATIQUES
+[MPHPCS3]
+Y a une valise pleine de Benjamin sous le téléphone et une liste de noms. Devine ce que je veux...
-[CRED260]
-COSGROVE HALL FILMS
+[MPHPCS4]
+... attends ! J'veux pas que tu leur refiles mon fric !
-[CRED261]
-PRODUCTEUR : OWEN BALLHATCHET
+[MPHPCS5]
+Tu sais bien... Descends-les...
-[CRED262]
-ANIMATEUR SENIOR : JON TURNER
+[MPHPCS6]
+Et je veux pas dire 'fais leur faire un tour à la cave'...
-[CRED263]
-ANIMATEURS : RICHARD DRUMM
+[MPHPCS7]
+Ecoute, bute juste tous les enculés sur la liste !
-[CRED264]
-DAVE BROWN
+[DEB0]
+DEBUG 0
-[CRED265]
-MAIR THOMAS
+[DEB1]
+DEBUG 1
-[CRED266]
-PRASHANT PATEL
+[DEB2]
+DEBUG 2
-[CRED267]
-CONSULTANT TECHNOLOGIE AUDIO
+[DEB3]
+DEBUG 3
-[CRED268]
-RIK EDE POUR GAMESOUND LTD.
+[DEB4]
+DEBUG 4
-[CRED269]
-ASSISTANCE INTEGRATION DTS
+[NUM0]
+DEBUG 0 (~1~)
-[CRED270]
-TED LAVERTY POUR DTS
+[NUM1]
+DEBUG 1 (~1~)
-[CRED271]
-CHRIS GREER POUR DTS
+[NUM2]
+DEBUG 2 (~1~)
-[CRED272]
-JASON PAGE POUR SCEE
+[NUM3]
+DEBUG 3 (~1~)
-[CRED273]
-RECHERCHE ET ANALYSE
+[NUM4]
+DEBUG 4 (~1~)
-[CRED274]
-VROCK
+[CARS]
+Vendeur de voitures
-[CRED275]
-DJ : LAZLOW
+[BIKE]
+Vendeur de motos
-[CRED276]
-VOIX : JOE KELLY
+[RACE_0]
+Position
-[CRED277]
-PRODUCTION : JONATHAN HANST
+[RACE_FL]
+~w~DERNIER TOUR
-[CRED278]
-ONDE 103
+[RACE_X0]
+~w~Prends une caisse et direction la ~y~ligne de départ !
-[CRED279]
-DJ : ADAM FIRST-JAMIE CANFIELD
+[RACE_X1]
+~w~Prends une moto et direction la ~y~ligne de départ !
-[CRED280]
-VOIX : JEN SWEENLEY
+[RACE_X2]
+~w~Il te faut une caisse pour participer à cette course !
-[CRED281]
-PRODUCTION : JONATHAN HANST
+[RACE_X3]
+~w~Il te faut une moto pour participer à cette course !
-[CRED282]
-FEVER 105
+[RACE_X4]
+~w~Il te reste ~1~ secondes pour trouver une caisse.
-[CRED283]
-DJ : OLIVER 'LADYKILLER' BISCUIT-JULIUS DYSON
+[RACE_X5]
+~w~Il te reste ~1~ secondes pour trouver une moto.
-[CRED284]
-VOIX D'HOMME : ED McMANN
+[RACE_X6]
+~w~Il te reste 1 seconde pour trouver une caisse.
-[CRED285]
-VOIX DE FEMME : SHWNEE SMITH
+[RACE_X7]
+~w~Il te reste 1 seconde pour trouver une moto.
-[CRED286]
-PRODUCTION : LISTEN KISTEN
+[RACE_T0]
+~r~T'es pas arrivé premier !
-[CRED287]
-EMOTION 98.3
+[RACE_T1]
+~r~T'as été disqualifié pour avoir abandonné ta caisse.
-[CRED288]
-DJ : FERNANDO- FRANK CHAVEZ
+[RACE_T2]
+~r~Un des participants a été tué, la course est annulée !
-[CRED289]
-VOIX : JEN SWEENLEY
+[RACE_T3]
+~r~T'as été disqualifié pour avoir abandonné ta moto.
-[CRED290]
-PRODUCTION : JONATHAN HANST
+[RACE_Y3]
+~w~3
-[CRED291]
-RADIO ESPANTOSO
+[RACE_Y2]
+~w~2
-[CRED292]
-DJ : PEPE-TONY CHILRODES
+[RACE_Y1]
+~w~1
-[CRED293]
-WILDSTYLE
+[RACE_Y]
+~w~GO !!
-[CRED294]
-DJ : MISTER MAGIC
+[RACE_Z1]
+~w~1ERE PLACE !
-[CRED295]
-VOIX : FRANK SILVESTRO
+[RACE_Z2]
+~w~2E PLACE !
-[CRED296]
-PRODUCTION : LAZLOW
+[RACE_Z3]
+~w~3E PLACE !
-[CRED297]
-KCHAT
+[RACE_Z4]
+~w~DERNIER !
-[CRED298]
-ECRIT PAR DAN HOUSER ET LAZLOW
+[RACE_R1]
+~w~RECORD : ~1~:~1~~1~ NOUVEAU RECORD !
-[CRED299]
-PRODUIT ET EDITE PAR LAZLOW
+[RACE_R2]
+~w~NOUVEAU RECORD !
-[CRED300]
-DJ AMY SHECKENHAUSEN : LEYNA WEBER
+[RACE_S0]
+~w~TEMPS : ~1~:~1~~1~
-[CRED301]
-JEZ TORRENT : KEVIN MCKIDD
+[RACE_S1]
+~w~MEILLEUR TOUR : ~1~:~1~~1~
-[CRED302]
-MANDY : COLLEEN CORBETT
+[ABC01]
+Record : 2e
-[CRED303]
-MICHELLE CARAPADIS : MARY BIRDSONG
+[ABC10]
+Temps : 12:30
-[CRED304]
-MR.ZOO : CARL DOWLING
+[ABC11]
+Record : 10:56
-[CRED305]
-GETHSEMANEE : LYNN LIPTON
+[ABC20]
+Meilleur tour : 4:26
-[CRED306]
-CLAUDE MAGINOT : JOHN MAUCERI
+[ABC21]
+Record : 5:30
-[CRED307]
-BJ SMITH : LAWRENCE TAYLOR
+[ABC]
+NOUVEAU RECORD
-[CRED308]
-THOR : FRANK FAVA
+[RAC1]
+Low-Rider Rumble
-[CRED309]
-INTERLOCUTEURS
+[RAC2]
+Deimos Dash
-[CRED310]
-COUZIN ED, JOSH CLARK, JASON BUHRMESTER, JUAN ALLER, WAYNE OLIVER, SUSAN LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN, DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP, KEITH BROADAS
+[RAC3]
+Wi-Cheetah Run
-[CRED311]
-LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN,
+[BIK1]
+Red Light Racing
-[CRED312]
-DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP,
+[BIK2]
+Torrington TT
-[CRED313]
-KEITH BROADAS
+[BIK3]
+Gangsta GP
-[CRED314]
-VCPR
+[TT1]
+Bumps & Grinds
-[CRED315]
-ECRIT PAR DAN HOUSER ET LAZLOW
+[TT1_A1]
+~w~< CIRCUIT ~1~ >
-[CRED316]
-PRODUIT PAR LAZLOW
+[TT1_B1]
+~w~Temps cible : ~1~:~1~
-[CRED317]
-MAURICE CHAVEZ : PHILLIP ANTHONY RODRIGUEZ
+[TT1_B1A]
+~w~Temps cible : ~1~:0~1~
-[CRED318]
-JONATHAN FREELOADER : PATRICK OLSEN
+[TT1_B2]
+~w~Meilleur temps du circuit : ~1~:~1~
-[CRED319]
-MICHELLE MONTANIUS : KELLY GUEST
+[TT1_B2A]
+~w~Meilleur temps du circuit : ~1~:0~1~
-[CRED320]
-ALEX SHRUB : CHRIS LUCAS
+[TT1_B3]
+~w~Meilleur temps au tour : ~1~:~1~
-[CRED321]
-CALLUM CRAYSHAW : SEAN MODICA
+[TT1_B3A]
+~w~Meilleur temps au tour : ~1~:0~1~
-[CRED322]
-JOHN F. HICKORY : LJ GANSEN
+[TT1_B4]
+~w~~1~:~1~
-[CRED323]
-LE PASTEUR RICHARDS : DAVID GREEN
+[TT1_B4A]
+~w~~1~:0~1~
-[CRED324]
-JAN BROWN : MAUREEN SILLIMAN
+[TT1_B5]
+~w~Nouveau record du circuit ! ~1~:~1~
-[CRED325]
-BARRY STARK : RENAUD SEBBANE
+[TT1_B5A]
+~w~Nouveau record du circuit ! ~1~:0~1~
-[CRED326]
-JENNY LOUISE CRAB : MARY BIRDSONG
+[TT1_L]
+~r~ Non disponible.
-[CRED327]
-KONSTANTINOS SMITH : KONSTANTINOS.COM
+[A_PISTO]
+~w~< Pistolet >
-[CRED328]
-JEREMY ROBARD : PETER SILVESTRO
+[A_UZI]
+~w~< Pistolet-mitrailleur >
-[CRED329]
-PUBLICITES RADIO
+[A_AK]
+~w~< AK47 >
-[CRED330]
-ECRITES PAR DAN HOUSER ET LAZLOW
+[A_SNIPE]
+~w~< Fusil de précision >
-[CRED331]
-PRODUITES PAR LAZLOW
+[A_GRENA]
+~w~< Grenades >
-[CRED332]
-JINGLES SUPPLEMENTAIRES PRODUITS PAR CRAIG CONNER
+[A_ARMOU]
+~w~< Protection pare-balles >
-[CRED333]
-VOIX DES PUBLICITES :
+[A_ROCKE]
+~w~< Lance-roquettes >
-[CRED334]
-ADAM DAVIDSON, ALEX ANTHONY, ALICE SALTZMAN, AMY SALZMAN, KATE DUKICH,
+[A_SHOTG]
+~w~< Fusil à pompe >
-[CRED335]
-ARAN RONICLE, BARB JONES, BEN KRECH, BRIAN THOMAS, BROCK YODER, CHRIS
+[A_M4]
+~w~< M4 >
-[CRED336]
-FERRANTE, CRAIG CONNER, DAVE RYAN, DAVID GREEN, DORIS WOO, DOUGLAS
+[A_FLAME]
+~w~< Lance-flammes >
-[CRED337]
-HARRISON, ED MCMANN, FRANK CHAVEZ, FRANK FAVA, GENE HILGREEN, GREG
+[A_MINIG]
+~w~< Minigun >
-[CRED338]
-SCHWEIZER, HUNTER PLATIN, JAMES FERRANTE, JEFF BERLIN, JEFF ROSA, JOE KELLY,
+[A_COST]
+~w~Prix : ~h~~1~$
-[CRED339]
-JOHN MAUCERI, JOSH CLARK, JULIE WEMYSS, KEVIN STRALEY, KIM GURNEY, LANCE
+[A_COST2]
+~w~Prix : ~h~~1~$ ~n~ ~r~Cet achat remplacera ton arme actuelle.
-[CRED340]
-WILLIAMS, LAURA PATERSON, LAZLOW, LISA ORTIZ, LORNA JORDAN, LUCIEN JONES,
+[A_COST3]
+~w~Prix : ~h~~1~$ ~n~ ~r~Ta protection pare-balles est en bon état.
-[CRED341]
-MAUREEN SILLIMAN, MIKE FERRANTE JR., PETE GUSTIN, PETER SILVESTRO, RAFF
+[A_COST4]
+~w~Prix : ~h~~1~$ ~n~ ~r~Tu peux pas t'offrir ça.
-[CRED342]
-CROLLA, RANDY JOHNSON, RICHARD KRUGER, RON REEVE, SHELLEY MILLER, SKY, TJ ALLARD
+[A_STOCK]
+~r~Stock épuisé.
-[CRD344A]
-ENREGISTREMENTS AUX DIGITAL ARTS STUDIOS,
+[A_VIC4]
+~w~Un pistolet coûte en général 240$, mais là, c'est Vincenzo qui régale.
-[CRED344]
-NYC, TRACK 9 STUDIOS, NYC,
+[A_DONS4]
+~w~Donald Love a déjà payé pour ça.
-[CRED345]
-WEDDINGTON MULTIMEDIA, LOS ANGELES,
+[A_NEDS4]
+~w~Un mec de l'église a réservé ça pour toi.
-[CRD345A]
-SYNC SOUND, NYC ET RADIO LAZLOW, LONG ISLAND.
+[A_TALK1]
+~w~J'ai tout ce qu'il faut pour votre défense personnelle.
-[CRED346]
-MERCI A AXEL ERICSON ET WON LEE DE DIGITAL ARTS, PAUL VASQUEZ DETRACK 9 STUDIOS, JOHN BOWEN ET JOHN HASSLER DE SYNC SOUND.
+[A_TALK2]
+~w~Vous voulez aussi un permis ?
-[CRED347]
-MARK LLOYD
+[A_TALK3]
+~w~J'ai pas besoin de voir vos papiers. Vous m'inspirez confiance.
-[CRED348]
-TIM BATES
+[A_TALK4]
+~w~Surtout, n'hésitez pas à essayer le stand de tir à l'arrière.
-[CRED349]
-KIT BROWN
+[BENZ_GO]
+~w~Faut que tu changes de fringues !
-[CRED350]
-ANDY MASON
+[PIZ_B01]
+~w~T'as ~1~ seconde pour remonter sur la ~b~mob Pizza !
-[CRED351]
-PHIL DEANE
+[PIZ_B02]
+~w~T'as ~1~ secondes pour remonter sur la ~b~mob Pizza !
-[CRED352]
-PHIL ALEXANDER
+[PIZ_F04]
+~r~T'as pas réussi à revenir à la mob Pizza !
-[CRED353]
-MATT HEWITT
+[NDL_B01]
+~w~T'as ~1~ seconde pour remonter sur la ~b~mob Nouilles !
-[CRED354]
-DENBY GRACE
+[NDL_B02]
+~w~T'as ~1~ secondes pour remonter sur la ~b~mob Nouilles !
-[CRED355]
-ANTOINE CABROL
+[NDL_F04]
+~r~T'es pas revenu à la mob Nouilles !
-[CRED356]
-JONATHAN STONES
+[EXPO_D]
+~w~Voici pour toi : ~1~$ ! Termine la liste pour gagner un bonus !
-[CRED357]
-MIKE BLACKBURN
+[PUPSPN]
+~w~BONUS A L'ECRAN !
-[CRED358]
-TIM MCGAFF
+[PUPMEGA]
+~y~MEGA DEGATS !
-[CINCAM]
-Caméra cinématique
+[PUPREGN]
+~y~BOOST DE SANTE !
-[RC4]
-'RODEO DE RUMPO'
+[PUPINVS]
+~y~INVISIBILITE !
-[LEGAL]
-~g~Elimine toute menace criminelle!
+[PUPFREZ]
+~y~FOLIE FURIEUSE !
-[GA_2]
-Nouveau moteur et nouvelle peinture. Les flics ne te reconnaîtront plus!
+[MPK]
+a tué
-[HELP15]
-Si tu es à pied, appuie sur la ~h~~k~~PED_LOOKBEHIND~~w~ pour ~h~regarder derrière~w~. Utilise le ~h~joystick analogique droit~w~ pour ~h~regarder autour~w~ de toi.
+[MPKHEAD]
+d'un tir en pleine tête !
-[FEC_LB4]
-Regarder derrière (touche R3)
+[MPNEED]
+n'a besoin que de
-[PERPIC]
-Paquets cachés trouvés
+[MPNAME]
+Nom
-[CO_ONE]
-Paquet caché ~1~ sur ~1~
+[MPSCORE]
+Score
-[GA_21]
-Impossible de garer plus de véhicules dans ce garage.
+[MPPING]
+Ping
-[CHEAT1]
-Codes activés
+[MPCPS]
+Points de passage
-[CHEAT2]
-Code d'arme
+[MPTIME]
+Temps
-[CHEAT3]
-Code de santé
+[MPBONUS]
+Bonus
-[CHEAT4]
-Code d'armure
+[MPQG]
+Quitter ?
-[CHEAT5]
-Code d'indice de recherche
+[MPQUIT]
+Quitter
-[CHEAT6]
-Code d'argent
+[MPCONT]
+Continuer
-[CHEAT7]
-Code de météo
+[MPHIGH]
+Meilleur temps
-[USJ_ALL]
-TOUTES LES CASCADES ONT ETE ACCOMPLIES!
+[MPBY]
+par
-[JAN]
-Jan
+[MPOVER]
+Fin de la partie
-[FEB]
-Fév
+[MPFIRST]
+a terminé en premier
-[MAR]
-Mar
+[MPWITH]
+gagne avec $
-[APR]
-Avr
+[MPHP05]
+~w~5 secondes avant la prochaine cible.
-[MAY]
-Mai
+[MPHP04]
+~w~4 secondes avant la prochaine cible.
-[JUN]
-Jun
+[MPHP03]
+~w~3 secondes avant la prochaine cible.
-[JUL]
-Jui
+[MPHP02]
+~w~2 secondes avant la prochaine cible.
-[AUG]
-Aoû
+[MPHP01]
+~w~1 seconde avant la prochaine cible.
-[SEP]
-Sept
+[RCRANGE]
+~w~Hors de portée !
-[OCT]
-Oct
+[CAD5_AA]
+Ici Sal.
-[NOV]
-Nov
+[CAD5_AB]
+Ces Forelli m'ont vraiment foutu en rogne ! Ils vont le payer !
-[DEC]
-Déc
+[CAD5_AC]
+Je veux que tu prennes leurs plus belles caisses...
-[DEFDT]
---:---:---- --:--:--
+[CAD5_AD]
+... et que tu les apportes à leurs plus gros concurrents, dans le magasin de voitures des Sindacco.
-[BONUS]
-~g~BONUS $~1~
+[CAD5_AE]
+Débrouille-toi pour que les Forelli ne volent pas de voitures Sindacco pour se venger.
+
+[CAD5_AF]
+Capici ?
+
+[CAD4_AA]
+C'est moi, Sal.
+
+[CAD4_AB]
+J'ai une dette envers Franco Forelli et tu vas m'aider à la payer.
+
+[CAD4_AC]
+Ils ont des caisses super classes dans le magasin des Sindacco.
+
+[CAD4_AD]
+Je veux que t'ailles toutes les piquer et que tu les ramènes au magasin des Forelli.
+
+[CAD4_AE]
+Débrouille-toi juste pour qu'aucune voiture Forelli ne se fasse voler pendant que t'es là-bas.
+
+[CAD4_AF]
+Hé, te plante pas sur ce coup-là.
+
+[MPC_000]
+Toni
+
+[MPC_001]
+'Lionel'
+
+[MPC_002]
+Cipriani
+
+[MPC_003]
+Chauffeur
+
+[MPC_004]
+13e
+
+[MPC_005]
+Toni the Tux
+
+[MPC_006]
+Fury
+
+[MPC_007]
+The King
+
+[MPC_008]
+Cocks
+
+[MPC_009]
+Streak
+
+[MPC_010]
+'T'
+
+[MPC_011]
+Dragon
+
+[MPC_012]
+J.D.
+
+[MPC_013]
+La Crampe
+
+[MPC_014]
+Avery
+
+[MPC_015]
+Choc-Choc
+
+[MPC_016]
+8-Ball
+
+[MPC_017]
+Maria
+
+[MPC_018]
+'Hamfists'
+
+[MPC_021]
+No 1
+
+[MPC_023]
+Hung Lo
+
+[MPC_025]
+Yamazaki
+
+[MPC_031]
+Officier '69'
+
+[MPC_032]
+Le Spécialiste
+
+[MPC_034]
+G.I. Jones
+
+[MPC_035]
+Sam
+
+[FEA_FM0]
+HEAD RADIO
+
+[FEA_FM1]
+DOUBLE CLEF FM
+
+[FEA_FM2]
+K-JAH
+
+[FEA_FM3]
+RISE FM
+
+[FEA_FM4]
+LIPS 106
+
+[FEA_FM5]
+RADIO DEL MUNDO
+
+[FEA_FM6]
+MSX 98
+
+[FEA_FM7]
+FLASHBACK FM
+
+[FEA_FM8]
+THE LIBERTY JAM
+
+[FEA_FM9]
+LCFR
+
+[MRACELA]
+Tour
+
+[DTB_01]
+~w~Défends ta base contre les assaillants.
+
+[DTB_02]
+~w~Protège tes voitures à tout prix.
+
+[CAD2_AB]
+~w~Bonne nouvelle ! Les Forelli et les Sindacco se foutent de nouveau sur la gueule.
+
+[CAD2_AC]
+~w~Ils veulent tous prendre le contrôle des vendeurs de voitures de Liberty.
+
+[CAD2_AD]
+~w~Vu qu'on a 'aidé' les Forelli la semaine dernière...
+
+[CAD2_AE]
+~w~... il est temps de rétablir l'équilibre.
+
+[CAD2_AF]
+~w~Aide les Sindacco à écrémer le magasin de voitures des Forelli.
+
+[POMOB2A]
+~w~Salvatore m'a donné ton numéro... Enfin, je l'ai trouvé dans son carnet d'adresses... Enfin bref...
+
+[POMOB2B]
+~w~T'es son nouveau chien de garde, c'est ça ? Bon, j'ai envie de te promener.
+
+[POMOB2C]
+~w~Je t'attends, alors dépêche !
+
+[GS_RGUN]
+ARMES DE DEPART :
+
+[TUSHTK]
+AWOL Angel
+
+[SC_WICH]
+Meilleur score AWOL Angel
+
+[NE_WIFI]
+Erreur réseau. L'interrupteur WLAN est désactivé. Activer l'interrupteur WLAN pour jouer en multijoueur.
-[HORN1]
-Appuie sur la ~h~~k~~VEHICLE_HORN~ ~w~pour ~h~klaxonner.
+[BNDRAC0]
+Thrashin' RC
-[HORN2]
-Appuie sur la ~h~~k~~VEHICLE_HORN~ ~w~pour ~h~klaxonner.
+[BNDRAC1]
+Ragin' RC
-[HORN3]
-Appuie sur la ~h~~k~~VEHICLE_HORN~ ~w~pour ~h~klaxonner.
+[BNDRAC2]
+Chasin' RC
+
+[GS_G1]
+LIBERTY CITY SURVIVOR
+
+[GS_G2]
+STREET RAGE
+
+[GS_G3]
+PROTECTION RACKET
+
+[GS_G4]
+GET STRETCH
+
+[GS_G5]
+TANKS FOR THE MEMORIES
+
+[GS_G6]
+THE HIT LIST
+
+[GS_G7]
+THE WEDDING LIST
+
+[TRCR1]
+~w~3
+
+[TRCR2]
+~w~2
+
+[TRCR3]
+~w~1
+
+[TRCRGO]
+~w~GO !
+
+[GA_16]
+~w~La peinture est offerte.
+
+[NEW_TAX]
+~w~Mission Taxi terminée ! Un nouveau modèle de taxi vient d'être livré au garage de taxis à Trenton !
+
+[EXPO_2]
+~w~Si tu leurs fournis les véhicules dont ils ont besoin en bonne condition, tu seras largement récompensé.
+
+[FEMP_NC]
+Etablissement des connexions réseau...
+
+[C1TGSUB]
+touche R3
+
+[C2TGSUB]
+touche R3
+
+[C3TGSUB]
+~S~
+
+[C2VEHN]
+touche R1
+
+[C2VECRS]
+touche L3
+
+[C3VECRS]
+~O~
+
+[C2PDCWE]
+touche L2 et touche R2
+
+[C3PDCWE]
+touche L2 et touche R2
+
+[BENZ_LA]
+~w~La ~h~tenue d'avocat~w~ est disponible dans la planque.
+
+[BENZ_TR]
+~w~Ta ~h~tenue décontractée~w~ est disponible dans la planque.
+
+[SLH1_OU]
+~w~Il te faut une ~h~tenue d'avocat~w~ pour entrer voir Sal.
+
+[SLH1_OR]
+~w~Il te faut une tenue d'avocat pour voir Sal.
+
+[L_TRN_1]
+~w~Tu peux prendre le ~h~métro aérien~w~ pour te déplacer dans Portland. Appuie sur~h~ ~k~ ~VEEE~ ~w~pour monter ou descendre d'une rame.
+
+[HELP2]
+~w~Appuie sur~h~ ~k~ ~PDSPR~ ~w~en courant pour ~h~commencer à sprinter.
+
+[STMOB5A]
+~w~Toni, c'est Sal.
+
+[SCH_TK7]
+~r~T'as quitté la casse.
+
+[STMOB3C]
+~w~Mais on va prendre le contrôle de la mairie.
+
+[SALH3A]
+~w~Cherche un moyen de transport pour Donald.
+
+[MPCASH]
+Argent
+
+[MPCARS]
+Caisses
+
+[CRUSHED]
+Valeur de la ferraille : ~1~$
+
+[BENZ_BO]
+~w~Va récupérer des ~h~sous-vêtements~w~ propres dans la planque.
+
+[BENZ_EL]
+~w~La ~h~combi 'The King'~w~ est dispo dans ta planque.
+
+[BENZ_CO]
+~w~Un ~h~costume de mascotte~w~ est dispo dans ta planque.
+
+[BENZ_HE]
+~w~Missions Avenging Angel : Shoreside - niveau 15 terminé ! Le ~h~costume de super-héros~w~ est dispo dans ta planque.
+
+[BENZ_DR]
+~w~La ~h~combi 'Dragon'~w~ est dispo dans ta planque.
+
+[TRTIT]
+Wong Side Of The Tracks
+
+[TRRACE2]
+~w~Fais gaffe ! Les frères Wong ont pas l'air cool...
+
+[MPTOTAL]
+Total
+
+[TOUR_W6]
+~w~Landstalker blindé livré à la planque. Abrite-le dans ton garage !
+
+[OUTFITS]
+Tenues débloquées
+
+[MPHPMAR]
+est la nouvelle cible.
+
+[FEC_CWT]
+Parcourir armes/cibles
+
+[EXPO_1]
+~w~Love Media a besoin de prix à distribuer pour ses concours 'Car-razy Car Give Away' !
+
+[PCJLAP]
+~w~Nouveau record au tour de ~1~ secondes !
+
+[MPBLCAR]
+Voiture bleue :
+
+[MPRDCAR]
+Voiture rouge :
+
+[RAMP_A]
+~w~T'AS REUSSI TOUS LES RODEOS ! ~1~$
+
+[FET_SAV]
+Sauvegarder
+
+[FET_WRN]
+Attention ! Un ou plusieurs codes ont été activés. Cela risque d'affecter la sauvegarde. Il est recommandé de ne pas sauvegarder cette partie.
+
+[HELP39]
+~w~Utilise~h~ ~k~ ~VEWEI~ ~w~pour déplacer ton poids sur une moto.
[FEC_EXV]
-Monter et descendre d'un véhicule
+Descendre du véhicule
-[TAXI_M]
-'CHAUFFEUR DE TAXI'
+[MPCOLL]
+NB DE CAISSES :
-[COP_M]
-'AUTODEFENSE'
+[FEMP_HG]
+HEBERGER
-[FIRE_M]
-'POMPIER'
+[FEMP_JG]
+REJOINDRE
-[AMBUL_M]
-'AMBULANCE'
+[K_TK3]
+~w~1 point pour les ~g~verts~w~, 2 points pour les ~y~jaunes~w~, et 3 points pour les ~r~rouges.
-[HJ_IS]
-BONUS DE CASCADE DANGEREUSE : $~1~
+[FEMP_GJ]
+CHOISIR UNE PARTIE A REJOINDRE
-[HJ_PIS]
-BONUS DE CASCADE DANGEREUSE PARFAITE : $~1~
+[FEMP_H]
+HOTE :
-[HJ_DIS]
-BONUS DE DOUBLE CASCADE DANGEREUSE : $~1~
+[FEMP_P]
+JOUEURS :
-[HJ_PDIS]
-BONUS DE DOUBLE CASCADE DANGEREUSE PARFAITE : $~1~
+[FEMP_HN]
+HEBERGER UNE NOUVELLE PARTIE
-[HJ_TIS]
-BONUS DE TRIPLE CASCADE DANGEREUSE : $~1~
+[PO_MOB4]
+~w~Hé ! C'est moi, Vincenzo.
-[HJ_PTIS]
-BONUS DE TRIPLE CASCADE DANGEREUSE PARFAITE : $~1~
+[POMOB4D]
+~w~Allez, passe me voir, j'ai un truc pour toi.
-[HJ_QIS]
-BONUS DE QUADRUPLE CASCADE DANGEREUSE : $~1~
+[POMOB4E]
+~w~Ah ouais ? C'est quoi ? Des baskets en béton armé ?
-[HJ_PQIS]
-BONUS DE QUADRUPLE CASCADE DANGEREUSE PARFAITE : $~1~
+[POMOB4H]
+~w~Non. Allez, Toni, quoi ! J'regrette ce qui s'est passé.
-[FESZ_LS]
-Chargement effectué.
+[FEMP_F]
+COMPLET
-[HELI_1A]
-Teste tes capacités avec le Sparrow et vois en combien de temps tu peux réussir le parcours.
+[FEMP_R]
+PAR DEFAUT
-[HELI_1B]
-Parcours réussi!
+[YOU]
+TOI
-[HELIODD]
-Petits boulots en hélico
+[NE_POW]
+Une erreur réseau est survenue. L'interrupteur POWER/HOLD (alimentation/bloquer) a été désactivé.
-[INT2_M]
-Ils sont proprios d'une ferme au Panama!
+[FEMP_SQ]
+Tu veux vraiment lancer une partie multijoueur ?
-[INT2_N]
-Ok, écoutez un peu...
+[BIKETXT]
+~w~Hogs & Cogs ouvre de 8h à 18h. Reviens à ce moment-là !
-[INT2_O]
-Les gars, quand on sera là-bas, est-ce que je dois rester dans la bagnole,
+[RACE_2]
+Temps
-[INT2_P]
-où bien est-ce que vous voulez absolument que je vienne avec vous?
+[FEF_CO2]
+Choisis la configuration de commandes qui convient le mieux à ton style.
-[INT2_Q]
-Non, Reste dans la bagnole.
+[TYREPOP]
+Pneus éclatés par balle
-[INT2_R]
-Vous savez quoi, j'ai réfléchi à la question,
+[FE_INIP]
+Initialisation et chargement du menu Pause... Un instant...
-[INT2_S]
-Je vais surveiller la bagnole.
+[DON4EX3]
+~w~Tu prends les chèques ?
-[INT4_A]
-On est baisés! Baisés!
+[CRUSH]
+~w~Gagne de l'argent avec de la ferraille ! Certains types de véhicules seront broyés si tu les laisses dans la zone délimitée par des pneus.
-[INT4_B]
-Putain, c'est vraiment le coup classique!
+[ANG_15]
+~w~Un groupe de débiles vient de voler la voiture d'un pauvre mec... On va se les faire !
-[INT4_C]
-Je sors la tête d'un caniveau pour une seconde de défonce,
+[CDERROR]
+Veuillez patienter...
-[INT4_D]
-et le destin me chie de la merde plein la gueule!
+[FEC_LOF]
+Regarder Devant
-[INT4_E]
-Allez vous faire mettre!
+[FEC_LFA]
+Caméra/Visée précise
-[INT4_F]
-Ferme-la et arrêter de gueuler! T'es encore vivant, pas vrai?
+[MPHELP]
+AIDE
-[INT4_G]
-Laisse-moi là.
+[C1VEHN]
+touche L1
-[INT4_H]
-Débarrasse-toi de la caisse et va roupiller un bon coup.
+[C3VEHN]
+touche L3
-[INT4_I]
-Je passerai à ton bureau demain et on essayera de trouver une solution à ce merdier.
+[MPOBJ]
+OBJECTIF :
-[INT4_J]
-Ouais, bonne idée, je vais aller roupiller.
+[MPLEG]
+LEGENDE DU RADAR :
-[INT4_K]
-Qu'est-ce que tu vas faire?
+[GS_O1]
+Chacun pour soi ! Tue les autres joueurs !
-[INT4_L]
-Rentrer à mon hôtel.
+[GS_O2]
+Conduis à travers les points de passage pour passer la ligne d'arrivée en premier.
-[INT4_M]
-Et penser à autre chose que ces conneries.
+[GS_OD3]
+Défends les quatre limousines dans ta base contre tes assaillants.
-[INT4_N]
-Ok.
+[GS_O6]
+Tue le joueur 'cible' aussi vite que possible. Si tu es la 'cible', survis aussi longtemps que possible.
-[LAW]
-MISSIONS AVOCAT
+[GS_O7]
+Récupère les voitures aux quatre coins de la ville et conduis-les jusqu'aux conteneurs.
-[LAW1_1]
-~g~Va te procurer de nouvelles fringues à la boutique de Rafael.
+[FHOSE_2]
+~h~~k~ ~VEWEA~ ~w~permet d'ajuster la visée du canon.
-[LAW4_6]
-Brûlez la direction!
+[MPI01]
+BONUS
-[LAW4_7]
-Tuez les patrons!
+[MPI02]
+SANTE
-[LAW4_8]
-Allez! Battez-vous! Allez!
+[MPI03]
+PROTECTION
-[LAW4_9]
-Plus de vacances! Moins de travail!
+[MPI04]
+ARME
-[LAW4_11]
-Allez! Battez-vous! Allez!
+[SPIDER]
+Deimos SP
-[LAW4_12]
-Viva la revolucion!
+[PONTIAC]
+Phobos Vt
-[GENERAL]
-MISSIONS DU COLONEL
+[FORELLI]
+Forelli ExSess
-[GEN3_4]
-Tommy Vercetti. Allons-y...
+[AHIT_LO]
+Tu l'as peut-être semé pour le moment mais tôt ou tard, il reviendra finir son job.
-[GEN3_13]
-C'est quoi ton problème, mec? Monte sur le toit de l'autre côté de la cour avant qu'ils rappliquent!
+[FEM_ROF]
+Radio éteinte
-[GEN3_17]
-Meeeerde! T'essayes de m'buter ou quoi?
+[GA_1]
+~w~Tu veux rire ! Je touche pas à ça, moi !
-[GEN3_21]
-~g~Il a le pognon de Diaz! Attrape-le et récupère le fric!
+[TRA_NEX]
+Prochain arrêt :
-[GEN3_24]
-~r~Diaz est mort! Tu devais le protéger!
+[TRA_CUR]
+Arrêt actuel :
-[GEN3_26]
-~r~T'as flingué Diaz!
+[PAGEB2]
+~w~Le ~h~fusil à pompe~w~ est dispo dans ta planque !
-[GEN3_27]
-~r~T'as descendu les gardes du corps de Diaz!
+[PAGEB3]
+~w~Une ~h~protection pare-balles~w~ est dispo dans ta planque !
-[GEN3_31]
-~g~Va au rencart et veille sur Diaz.
+[PAGEB4]
+~w~La ~h~mitraillette~w~ est dispo dans ta planque !
-[GEN3_32]
-~g~Va te mettre en position sur le toit du bâtiment en face de Lance.
+[PAGEB5]
+~w~Le ~h~.357~w~ est dispo dans ta planque !
-[COKE]
-MISSIONS BARON DE LA COKE
+[PAGEB6]
+~w~Le ~h~M4~w~ est dispo dans ta planque !
-[COK1_3]
-J'espère que tu vas te casser la gueule!
+[PAGEB7]
+~w~Le ~h~fusil de précision à visée laser~w~ est dispo dans ta planque !
-[COK1_6]
-J'en ai marre de ces merdeux.
+[PAGEB8]
+~w~Le ~h~lance-flammes~w~ est dispo dans ta planque !
-[COK2_7]
-Tu vois ces marqueurs? Essaye de flinguer les lumières!
+[PAGEB9]
+~w~Le ~h~lance-roquettes~w~ est dispo dans ta planque !
-[COK2_10]
-En tout cas, tu tires mieux que tu causes.
+[PAGE_01]
+Abats ~1~ mecs des Triades en 2 minutes !
-[COK2_11]
-Merci. T'as un certain charme aussi.
+[PAGE_02]
+Fais exploser ~1~ véhicules en 2 minutes !
-[COK2_12]
-Je sais, Tommy.
+[PAGE_03]
+Brûle ~1~ Diablos en 2 minutes !
-[COK2_18]
-T'aimes bien Kenny Loggins?
+[PAGE_04]
+Bute ~1~ mafieux de Leone en 2 minutes !
-[COK2_19]
-Tu parles, j'adore ce disque ouais!
+[PAGE_05]
+Crame ~1~ véhicules en 2 minutes !
-[COK2_26]
-~r~T'as buté Lance!
+[PAGE_06]
+Ecrase ~1~ piétons en 2 minutes !
-[COK3_1]
-Tire pas, mec!
+[PAGE_07]
+Détruis ~1~ véhicules en 2 minutes !
-[COK3_2]
-Qu'est-ce que c'est que ça?
+[PAGE_08]
+Massacre ~1~ piétons en 2 minutes !
-[COK3_3]
-Il embarque le bateau! Merde!
+[PAGE_09]
+Brûle ~1~ Yakuzas en 2 minutes !
-[COK3_4]
-A l'aide! Il y a un mec qui nous fauche le bateau!
+[PAGE_10]
+Descends ~1~ gangsters de Forelli en 2 minutes !
-[COK4_W]
-Bon! C'est le dernier.
+[PAGE_11]
+Ecrase ~1~ piétons en 2 minutes !
-[COK4_X]
-Je vais mettre le moteur en route.
+[PAGE_12]
+Descends ~1~ piétons en 2 minutes !
-[COK4_Y]
-Je crois qu'on a de la visite...
+[PAGE_13]
+Tue ~1~ Yakuzas en 2 minutes !
-[COK4_2]
-Ouais.
+[PAGE_15]
+Massacre ~1~ piétons en 2 minutes !
-[COK4_6]
-Tu sais où on va?
+[PAGE_16]
+Pulvérise ~1~ véhicules en 2 minutes !
-[COK4_7]
-On est paumés?
+[PAGE_17]
+Tire sur ~1~ piétons en 2 minutes !
-[COK4_8]
-On a de la concurrence!
+[PAGE_18]
+Détruis ~1~ véhicules en 2 minutes !
-[COK4_9]
-Bousille-les!
+[PAGE_20]
+Crame ~1~ piétons en 2 minutes !
-[COK4_9A]
-L'heure de la danse de Lance Vance a sonné!
+[MPI05]
+ENNEMI
-[COK4_10]
-Réduits en miettes! Bons à nourrir la poiscaille!
+[MPI07]
+PT DE PASSAGE
-[COK4_11]
-On a réussi! Les autres bateaux ne sont pas de taille.
+[MPI08]
+SUIVANT
-[COK4_17]
-Ils sont prêts à tout!
+[MPI09]
+LIGNE D'ARRIVEE
-[COK4_18]
-J'ai les pieds mouillés! On prend la flotte!
+[MPI10]
+PILOTE
-[COK4_21]
-Pont droit devant!
+[MPI11]
+BASE
-[COK4_22]
-Ecope, on va chavirer!
+[MPI12]
+BASE ENNEMIE
-[COK4_23]
-Joli coup.
+[MPI13]
+BLINDE
-[COK4_29]
-~r~T'as buté Lance!
+[MPI14]
+CIBLE HUMAINE
-[ASS1_6]
-Continue, Tommy, ça va aller!
+[MPI15]
+CAISSE
-[ASS1_7]
-Prenez ça, enculés d'assassins!
+[MPI16]
+CONTENEUR
-[ASS1_8]
-Je suis coincé!
+[FEI_LEG]
+Afficher/masquer légende
-[ASS1_9]
-Je te couvre, Tommy!
+[SR_ON]
+Maintenant que tu t'es fait un nom dans le monde des courses sur circuit, attends-toi à te faire contacter par d'autres pilotes.
-[ASS1_10]
-Hé, c'est chouette toutes ces plantes...
+[FEC_FRA]
+Visée libre
-[ASS1_11]
-Hé, Tommy, je peux avoir une chambre avec vue sur la baie?
+[KAR_ON]
+Retourne au camion de pompiers quand tu veux pour essayer de battre ton meilleur temps !
-[ASS1_12]
-Il y a vraiment de superbes plafonds, ici...
+[DON2EX5]
+~w~8-ball bougera pas le petit doigt à moins que tu lui files 20000$.
-[ASS1_3]
-Lance! Couvre-moi!
+[PCJTIT]
+GO GO Faggio
-[ASS1_5]
-Lance!
+[FEA_MUS]
+VOLUME RADIO :
-[ASS1_15]
-~g~Attaque la résidence et tue Diaz!
+[FEST_GO]
+Meilleur temps Go Go Faggio
-[ASS1_17]
-~g~Il existe de nombreux accès à la résidence.
+[RC_1]
+~w~Bute plus de ~1~ mecs des Triades. Chaque victime te rapporte du temps en plus !
-[TAXWAR]
-MISSIONS GUERRE DES TAXIS
+[EXPO_C]
+~w~Merci ! C'était le dernier ! Y a un super bonus qui t'attend devant ton appart de Newport !
-[NOTAXI]
-~g~T'as besoin d'un taxi Kaufman pour activer cette mission.
+[TRRACE0]
+~w~Franchis les ~y~points de passage~w~ et passe la ligne d'arrivée en vie !
-[TAXW1_5]
-~g~Faut que tu sois dans un taxi Kaufman!
+[RACE_P1]
+~w~1er
-[TAX2_4]
-Vas-y, Tommy.
+[RACE_P2]
+~w~2e
-[TAX2_5]
-Massacre-lui la tête.
+[RACE_P3]
+~w~3e
-[TAX2_6]
-Il a même pas son permis.
+[RACE_P4]
+~w~4e
-[TAX2_7]
-Putain de limousines!
+[OUTF_00]
+~w~Tenue décontractée
-[TAXW3_1]
-~g~Va prendre Mercedes.
+[OUTF_01]
+~w~Costume Leone
-[RACE1]
-~g~3..2..1.. PARTEZ!
+[OUTF_03]
+~w~Treillis des Avenging Angels
-[RACE2]
-~g~3
+[OUTF_04]
+~w~Uniforme de chauffeur
-[RACE3]
-~g~2
+[OUTF_05]
+~w~Tenue d'avocat
-[RACE4]
-~g~1
+[OUTF_06]
+~w~Smoking
-[RACE5]
-~g~PARTEZ!
+[OUTF_07]
+~w~Combi 'The King'
-[FIRST]
-~b~1er
+[OUTF_08]
+~w~Costume de mascotte
-[SECOND]
-~b~2e
+[OUTF_09]
+~w~Sous-vêtements
-[THIRD]
-~b~3e
+[OUTF_10]
+~w~Costume de super-héros
-[FOURTH]
-~b~4e
+[OUTF_11]
+~w~Combi 'Dragon'
-[RACETM]
-~b~TEMPS DE COURSE : ~1~:~1~
+[SLTVMON]
+Cash gagné sur Slash TV
-[RACETM2]
-~b~TEMPS DE COURSE : ~1~:0~1~
+[DBIKEAI]
+Plus haut saut (m)
-[RACEFA]
-~r~Tu n'as pas gagné la course!
+[MPC_039]
+Vincenzo
-[TEX1_5]
-~r~Il s'est tiré!
+[MPC_040]
+Salvatore
-[SEG3_1]
-TEMPS:
+[MPC_041]
+Toshi
-[SEG3_2]
-~g~Va à la camionnette qui contient le bombardier télécommandé et les bombes à retardement.
+[MPC_042]
+Toshiko
-[SEG3_3]
-~g~Utilise le bombardier télécommandé pour transporter 4 bombes vers 4 zones cibles sur le chantier.
+[MPC_043]
+Ophelia Lardaz
-[SERG3_5]
-~g~Tu ne peux transporter qu'une bombe à la fois et tu ne peux récupérer une bombe déjà larguée avec succès.
+[MPC_044]
+Ed Banger
-[SEG3_7]
-~g~Une fois que tu as largué la première bombe sur une zone cible, le compte à rebours s'enclenche. Tu dois larguer toutes les bombes avant la fin de celui-ci.
+[MPC_045]
+Robin Emblind
-[SEG3_8]
-~g~Les 4 bombes doivent être larguées sur les 4 zones cibles pour réussir la mission et détruire le bâtiment.
+[MPC_046]
+Mme Menalot
-[SEG3_9]
-~g~Tu as touché la cible! Plus que 3!
+[MPC_047]
+Hugh Jazz
-[SEG3_10]
-~g~Tu as touché la cible! Plus que 2!
+[MPC_048]
+Wayne
-[SEG3_11]
-~g~Tu as touché la cible! Plus qu'une!
+[MPC_049]
+Paulie
-[SEG3_12]
-~r~Tu as raté la cible! Va récupérer une bombe!
+[MPC_050]
+Anne Job
-[SEG3_13]
-~g~Largue la bombe sur une zone cible.
+[MPC_051]
+Randy Boner
-[SEG3_14]
-~r~Le temps est écoulé et tu n'as pu détruire le bâtiment.
+[MPC_052]
+Owen Monie
-[SEG3_15]
-~r~Ton bombardier télécommandé a été détruit! Comment tu vas transporter les bombes, maintenant?
+[MPC_053]
+Ekant Sing
-[AVERY]
-MISSIONS AVERY
+[MPC_054]
+M.T.Head
-[ASM]
-MISSIONS ASSASSIN
+[MPC_055]
+Rick O'Shea
-[ASM_1]
-MISSION ASSASSIN 1
+[MPC_056]
+Arden Long
-[ASM1_1]
-~g~Ton aide dans l'éradication de ces indésirables fut une excellente affaire. J'ai un autre travail pour toi. Regarde sous le téléphone.
+[MPC_057]
+Ann Thrax
-[ASM1_2]
-~g~Rends-toi à la cabine en dehors du centre commercial à Washington.
+[MPC_058]
+Fay Slift
-[ASM1_3]
-~g~Carl Pearson, livreur de pizzas. Il ne doit pas terminer sa tournée.
+[MPC_059]
+Mona Lott
-[ASM1_4]
-~g~Tue le livreur de pizzas avant qu'il le livre toutes ses pizzas.
+[C0VEACC]
+~X~
-[ASM_2]
-MISSION ASSASSIN 2
+[C1VEACC]
+~X~
-[ASM_3]
-MISSION ASSASSIN 3
+[C2VEACC]
+~X~
-[ASM3_A]
-Marcus Hammond, Franco Carter, Dick Tanner, Nick Kong et Stuntman Driver appartiennent tous au syndicat européen qui s'apprête à faire un hold-up.
+[C3VEACC]
+joystick analogique droit vers le haut
-[ASM3_B]
-Ils sont tous en position. Il faut qu'ils soient tous morts avant le commencement. Tu as 9 minutes. J'ai laissé quelques flingues à proximité qui devraient t'être utiles.
+[C0VEBRK]
+~S~
-[ASM3_1]
-~g~Va récupérer l'arme que M. Black a laissé pour toi.
+[C1VEBRK]
+~S~
-[ASM3_2]
-~g~Ne t'approche pas trop près de la cible ou tu risques d'être repéré.
+[C2VEBRK]
+~S~
-[ASM3_3]
-~g~Pour un travail propre et rapide, installe-toi près de leurs positions dans des emplacements d'où tu pourras facilement les liquider, sans être repéré.
+[C3VEBRK]
+joystick analogique droit vers le bas
-[ASM3_4]
-~g~Il t'a vu! Vaudrait mieux le buter en vitesse, maintenant!
+[C0VEHB]
+touche R1
-[ASM3_5]
-~g~Marcus Hammond est en position près des panneaux publicitaires dans Washington.
+[C1VEHB]
+touche R1
-[ASM3_6]
-~g~Franco Carter est en position à côté de DBP Security non loin d'Ocean Drive.
+[C0VEEE]
+~T~
-[ASM3_7]
-~g~Dick Tanner est en position à côté de la bijouterie dans Vice Point.
+[C1VEEE]
+~T~
-[ASM3_8]
-~g~Nick Kong est en position près de Washington Beach.
+[C2VEEE]
+touche L1
-[ASM3_9]
-~g~Stuntman Driver est en position à Washington.
+[C3VEEE]
+touche R1
-[ASM3_10]
-~r~Tu n'as pas réussi à tous les descendre.
+[C0VEWEP]
+~O~
-[ASM_4]
-MISSION ASSASSIN 4
+[C1VEWEP]
+~O~
-[ASM4_1]
-~g~Va récupérer le fusil laissé à ton intention dans le feuillage à l'extérieur du terminal de l'aéroport.
+[C2VEWEP]
+~O~
-[ASM4_2]
-~g~Ne rate pas la cible où tu alerteras ses gardes du corps et garde tes distances pour qu'il ne te repère pas.
+[C3VEWEP]
+~O~
-[ASM4_3]
-~g~Observe la femme sur le balcon au-dessus des comptoirs d'enregistrements du terminal. NE LA TUE PAS.
+[C0PDSPR]
+~X~
-[ASM4_4]
-~g~Tue l'homme à qui elle donnera la serviette, mais seulement quand il l'aura récupérée. Prends ensuite la serviette et amène-la à Ammu-Nation dans le centre.
+[C1PDSPR]
+~X~
-[ASM4_5]
-~g~Récupère la serviette!
+[C0SNZI]
+~S~
-[ASM4_6]
-~g~Amène la serviette à Ammu-Nation dans le centre!
+[C1SNZI]
+~S~
-[ASM4_7]
-~r~Imbécile! Tu as tué la femme!
+[C0SNZO]
+~X~
-[ASM4_8]
-~r~La cible t'a entendu tirer! Le deal est annulé!
+[C1SNZO]
+~X~
-[ASM4_9]
-~r~La cible a embarqué à bord de son avion!
+[C0PDFW]
+~O~
-[ASM4_10]
-~r~On dirait que tu n'es pas le seul à t'intéresser à cette serviette! Amène-la en vitesse à Ammu-Nation!
+[C1PDFW]
+~O~
-[ASM4_11]
-~r~La cible t'a repéré! Le deal est annulé!
+[C0TRSK]
+~X~
-[ASM4_13]
-~g~Il t'a repéré et essaye de s'enfuir! Rattrape-le et récupère la serviette!
+[C1TRSK]
+~X~
-[ASM4_14]
-~g~La barre de distance dans le coin supérieur droit de l'écran te signale ta proximité avec la cible. Ne la laisse pas devenir pleine ou il te repèrera.
+[C2TRSK]
+~X~
-[ASM_5]
-MISSION ASSASSIN 5
+[C3TRSK]
+~X~
-[KICK]
-DEMARRAGE AU PIED
+[C0AMBUY]
+~X~
-[KICK1_3]
-~g~Nombre de fautes de pied : ~1~
+[C1AMBUY]
+~X~
-[KICK1_4]
-~g~Pénalité de temps : ~1~ secondes
+[C2AMBUY]
+~X~
-[BANK]
-MISSIONS BRAQUAGE
+[C3AMBUY]
+~X~
-[BANK1]
-MISSION BRAQUAGE 1
+[C0AMEXI]
+~T~
-[BANK2]
-MISSION BRAQUAGE 2
+[C1AMEXI]
+~T~
-[BJM2_3]
-TAUX DE REUSSITE : ~1~%
+[C2AMEXI]
+~T~
-[BJM2_15]
-SCORE :
+[C3AMEXI]
+~T~
-[BJM2_18]
-SCORE A BATTRE :
+[C2PDSPR]
+~O~
-[BJM2_19]
-~g~Touche autant de cibles que possible dans le temps imparti!
+[C3PDSPR]
+~X~
-[BJM2_21]
-~g~Touche autant de cibles que possible jusqu'à épuisement de tes munitions.
+[C2SNZI]
+~T~
-[BANK3]
-MISSION BRAQUAGE 3
+[C3SNZI]
+~S~
-[BJM3_1]
-~g~Trouve une bagnole qui a des chevaux et rends-toi sur la grille de départ.
+[C2SNZO]
+~S~
-[BNK4_2A]
-Les gars au garage ont fait du super boulot sur ce bébé.
+[C3SNZO]
+~X~
-[BNK4_3G]
-Oh, merde, maintenant, on a les flics au cul!
+[C2PDFW]
+~X~
-[BNK4_3H]
-Et on n'est même pas encore sur place...
+[C3PDFW]
+touche R1
-[BNK4_3K]
-Va d'abord falloir semer les flics...
+[MPC_020]
+Rico Garlik
-[BNK4_3L]
-Merde, Tommy, t'essayes de tous nous tuer?
+[MPC_022]
+Lou Scannon
-[BNK4_3N]
-Tout ce que j'aime part en fumée!
+[MPC_024]
+Cruz Vormen
-[BNK422A]
-Cam, combien de temps?
+[MPC_026]
+Busta Moves
-[BK4_23A]
-Donne-moi 3 minutes!
+[MPC_027]
+Juan Kerr
-[BNK4_26]
-Bordel de merde! Les voilà!
+[MPC_028]
+Nick Yakar
-[BNK4_32]
-Sers-toi des explosifs pour ouvrir les coffres!
+[MPC_029]
+Lou Bricant
-[BNK4_43]
-Je nous couvre, FONCE!
+[MPC_030]
+Lance Urwell
-[BNK4_51]
-Je te trouve très bien comme ça.
+[MPC_033]
+Agent Ochre
-[KENT]
-MISSIONS KENT PAUL
+[MPC_036]
+Papi Love
-[KENT1]
-MISSION KENT PAUL 1
+[MPC_037]
+Lucy Lastic
-[COUNT]
-MISSIONS CONTREFACON
+[MPC_038]
+Bill Durzbum
-[COUNT1]
-MISSION CONTREFACON 1
+[MPISCOL]
+Objet ramassé
-[COUNT2]
-MISSION CONTREFACON 2
+[MPSTART]
+La partie se lance...
-[BIKE]
-MISSIONS BIKERS
+[MRACEC1]
+~w~3...
-[BIKE1]
-MISSION BIKERS 1
+[MRACEC2]
+~w~2...
-[BIKE2]
-MISSION BIKERS 2
+[MRACEC3]
+~w~1...
-[BIKE3]
-MISSION BIKERS 3
+[MPC_019]
+Phil DeGirth
-[GOAWAY1]
-Reviens quand tu auras fini les missions du gang haïtien.
+[GDA_HL]
+Mission Avenging Angel (niveau max.)
-[HAIT]
-MISSIONS GANG HAITIEN
+[MP_SNEW]
+Charger ou lancer une nouvelle partie Solo ou Multijoueur.
-[HAIT1]
-MISSION GANG HAITIEN 1
+[DON2EX9]
+~r~Ned~w~ s'échappe ! Ne le perds pas de vue !
-[HAIT2]
-MISSION GANG HAITIEN 2
+[FEI_CHA]
+Changer d'équipe
-[HAIT3]
-MISSION GANG HAITIEN 3
+[FES_RES]
+RETABLIR PARAMETRES DE JEU
-[HAM3_6]
-~g~Utilise le fusil à lunette que je t'ai donné pour les tuer!
+[FESZ_QT]
+Rétablir tous les paramètres des commandes, de l'audio et de l'affichage ? Continuer ?
-[ROCK]
-MISSIONS GROUPE DE ROCK
+[FEH_LOA]
+JEU
-[ROK1_4]
-~g~Ok, je crois que c'est ce que vous vouliez...
+[MPEMPTY]
+Vide
-[ROK1_1E]
-~g~Ca te coûtera plus que ce que tu as!
+[FEMP_SN]
+LANCER PARTIE (2 joueurs minimum)
-[ROK1_1F]
-~g~Reviens quand tu auras le pognon!
+[JD_SUIT]
+~w~J.D. peut pas te filer de boulot tant que t'es habillé en Leone !
-[RBM2_6]
-~g~Waou! C'est un mec! Arrête-le!
+[SAVD_SH]
+(planque).
-[ROCK3]
-MISSION GROUPE DE ROCK 3
+[SAVD_DY]
+Jour
-[ROK3_6D]
-~r~en même temps que vos sales grosses têtes chevelues!
+[SAVD_CO]
+accompli(s).
-[ROK3_40]
-Près de la glacière?
+[SAVD_AL]
+Portland (planque). Jour 71, 57640$. 17% accompli(s).
-[RBM3_5]
-~g~Emmène les Love Fist au concert.
+[SAV_SLT]
+Nouvelle sauvegarde
-[CUBANM]
-MISSIONS GANG CUBAIN
+[POMOB6C]
+~w~Amène-toi dès que tu peux ! J'ai du boulot pour toi.
-[CUBAN1]
-MISSION GANG CUBAIN 1
+[ANG_2]
+~w~Appuie sur~h~ ~k~ ~TGSUB~ ~w~pour activer ou désactiver les missions Avenging Angels.
-[CUBAN2]
-MISSION GANG CUBAIN 2
+[TVHELP]
+~w~Appuie sur~h~ ~k~ ~TGSUB~ ~w~pour activer ou désactiver les missions SLASH TV.
-[CUB2_10]
-~r~T'es supposé tuer des Haïtiens, pas des Cubains!
+[PAGERA]
+~w~Le ~h~M60~w~ est dispo dans ta planque !
-[CUBAN3]
-MISSION GANG CUBAIN 3
+[CO_ALL]
+~w~Tu as retrouvé tous les paquets !
-[CUBAN4]
-MISSION GANG CUBAIN 40
+[CO_ONE]
+~w~Paquet ~1~ sur ~1~ trouvé !
-[CUB4_25]
-Ok, allons-y!
+[PAGE_14]
+Explose ~1~ gangsters colombiens en 2 minutes !
-[PROT]
-MISSIONS DE PROTECTION
+[PAGE_19]
+Ecrase ~1~ gangsters colombiens en 2 minutes !
-[PRO1_H]
-Arrêtez de vous exciter, tous les deux. Je commence à peine à voir comment les choses marchent ici.
+[ANG_22]
+~r~Missions Avenging Angels annulées.
-[PRO1_02]
-~g~Sors du centre commercial.
+[SLATVQO]
+~r~Mission Slash TV annulée.
-[PRO3_06]
-~g~Sème les flics.
+[C0FREE1]
+touche L3
-[PORN]
-MISSIONS PORNO
+[C1FREE1]
+touche L3
-[PORN1]
-MISSION PORNO 1
+[C2FREE1]
+touche L3
-[POR1_03]
-~r~Candy est morte!
+[C3FREE1]
+touche L3
-[PORN2]
-MISSION PORNO 2
+[C0FREE2]
+joystick analogique gauche
-[PORN3]
-MISSION PORNO 3
+[C2FREE2]
+joystick analogique gauche
-[POR3_18]
-T'as été repéré!
+[ANGCOM1]
+~w~Missions Avenging Angel : Portland - niveau 15 terminé ! La moto unique "Avenger" t'attend dans ta planque !
-[PORN4]
-MISSION PORNO 4
+[K_CE]
+~w~T'as ~1~ seconde pour remonter sur ta ~b~moto !
-[POR4_04]
-~g~Les bureaux se trouvent de l'autre côté de cette porte.
+[HELP31]
+~w~Si tu te fais ~h~arrêter~w~ ou ~h~buter~w~ lors d'une mission, ce ~h~taxi~w~ fera son apparition.
-[PHIL]
-MISSIONS PHIL
+[LOSER]
+~y~PERDANT !
-[PHIL1]
-MISSION PHIL 1
+[RCRHELP]
+~w~Appuie sur~h~ ~k~ ~TGSUB~ ~w~pour ~h~quitter la course~w~. Appuie sur~h~ ~k~ ~VEWEP~ ~w~pour faire réapparaître ta voiture radiocommandée au dernier point de passage.
-[PHI1_06]
-Qu'est-ce que tu fous à conduire comme ça?
+[SRC_ON]
+Maintenant que tu t'es fait un nom dans le milieu underground des courses de voitures, des challengers essaieront de te contacter.
-[PHI1_07]
-Hé!
+[SRB_ON]
+Maintenant que tu t'es fait un nom dans le milieu underground des courses de motos, des challengers essaieront de te contacter.
-[PHIL2]
-MISSION PHIL 2
+[RACE_R0]
+~w~RECORD PRECEDENT : ~1~:~1~~1~
-[PIZ1_A]
-MISSION LIVREUR DE PIZZA
+[POMOB3C]
+~w~Hé, passe me voir, un de ces quatre, OK ?
-[PIZ1_03]
-~g~Retourne à la pizzeria pour d'autres commandes.
+[MPHPCS1]
+The Hit List
-[PIZ1_04]
-~g~Voilà tes nouvelles commandes.
+[MPWLGOC]
+Descends de la voiture.
-[PIZ1_10]
-Appuie sur la ~h~ touche R3 ~w~ pour annuler les missions pizzas.
+[MPWLLTC]
+Quitte le conteneur.
-[CNTBUY1]
-Imprimerie achetée : $~1~
+[MPWLDTC]
+Livre la voiture.
-[CARBUY]
-Concession achetée : $~1~
+[MPWLCD]
+Voiture livrée.
-[PORNBUY]
-Studio de cinéma acheté: $~1~
+[MPWLNGC]
+Maintenant, récupère les voitures.
-[ICEBUY]
-Usine de crème glacée achetée: $~1~
+[MPAUTO]
+LIRE UNE FOIS
-[TAXIBUY]
-Compagnie de taxis achetée: $~1~
+[MRACEGO]
+~w~GO
-[BANKBUY]
-Club Malibu acheté : $~1~
+[MRACE04]
+TU AS GAGNE
-[BOATBUY]
-Chantier naval acheté: $~1~
+[MRACEWI]
+a gagné la course
-[PRNT_NO]
-Tu ne peux pas acheter l'imprimerie pour l'instant, reviens plus tard.
+[MRCPU01]
+~y~REPARATION INSTANTANEE
-[CAR_NO]
-Tu ne peux pas acheter la concession automobile pour l'instant, reviens plus tard.
+[DTB01]
+- Protège les voitures
-[PORN_NO]
-Tu ne peux pas acheter le studio de cinéma pour l'instant, reviens plus tard.
+[DTB02]
+- Détruis les voitures
-[ICE_NO]
-Tu ne peux pas acheter l'usine de crème glacée pour l'instant, reviens plus tard.
+[DTB03]
+- Voiture perdue
-[TAXI_NO]
-Tu ne peux pas acheter la compagnie de taxis pour l'instant, reviens plus tard.
+[DTB04]
+- Voiture détruite
-[BANK_NO]
-Tu ne peux pas acheter le club Malibu pour l'instant, reviens plus tard.
+[MPWIN]
+gagne
-[BOAT_NO]
-Tu ne peux pas acheter le chantier naval pour l'instant, reviens plus tard.
+[MPKSELF]
+s'est fait tuer
-[PRNT_R3]
-Appuie sur la touche R3 pour acheter l'imprimerie au prix de $~1~
+[MPMORE]
+victimes de plus
-[CAR_R3]
-Appuie sur la touche R3 pour acheter la concession automobile au prix de $~1~
+[MP1MORE]
+victime de plus
-[PORN_R3]
-Appuie sur la touche R3 pour acheter le studio de cinéma au prix de $~1~
+[MPSTRT]
+COMMENCE
-[ICE_R3]
-Appuie sur la touche R3 pour acheter l'usine de crème glacée au prix de $~1~
+[MPTANK]
+a le blindé
-[TAXI_R3]
-Appuie sur la touche R3 pour acheter la compagnie de taxis au prix de $~1~
+[MPONE]
+n'a qu'une seule caisse à récupérer
-[BANK_R3]
-Appuie sur la touche R3 pour acheter le club Malibu au prix de $~1~
+[MPDEL]
+a livré une caisse
-[BOAT_R3]
-Appuie sur la touche R3 pour acheter le chantier naval au prix de $~1~
+[MPGOCAR]
+Va chercher la caisse
-[COL2_6]
-Arrête espèce de porc impérialiste d'Américain!
+[MPGOGAR]
+Livre la caisse
-[COL2_6B]
-Ceci est la propriété du gouvernement français!
+[MPDEST]
+Véhicule cible détruit
-[COL2_6C]
-Et c'est terminé.
+[MPLEFT]
+a quitté la partie
-[COL3_A]
-Thomas, merci d'être venu.
+[MPHPGO2]
+~w~Tu es la nouvelle cible.
-[COL3_B]
-Désolé d'aller droit au but...
+[MPHPKI]
+~w~Tu as tué un assassin.
-[COL3_C]
-Diaz m'a demandé de superviser une petite transaction financière.
+[LOCKON]
+Danger !
-[COL3_D]
-Espérons que ça se passera mieux que la dernière fois.
+[MPHPGO]
+~w~Elimine la cible.
-[COL3_E]
-C'est la raison pour laquelle j'ai pensé à vous, mon ami.
+[MPTNK]
+Récupère le blindé
-[COL3_F]
-J'ai laissé un revolver au parking à niveaux.
+[MRCPU02]
+TU AS ECLATE LES PNEUS DE TOUT LE MONDE
-[COL3_G]
-Récupèrez-le et allez surveiller les mecs de Diaz au dépôt.
+[MRCPU05]
+TES PNEUS ONT ECLATE
-[COL4_2]
-Je sais pas, chef!
+[MRCPU06]
+~y~PNEUS ADHERENTS
-[COL4_5]
-Chef, oui, chef!
+[WINNER]
+~Y~GAGNANT
-[COL4_10]
-Allons manger quelques beignets.
+[MPDRAW]
+~w~EGALITE
-[COL4_16]
-Chef, on déplace le véhicule, chef!
+[MPDADDY]
+C'EST TOI LE BOSS !
-[COL4_25]
-Autodestruction du véhicule initialisée!
+[MPRUN]
+: CE SONT LES ROIS DE LA VILLE
-[COL5_6]
-Mercedes, cette fille aura ma peau.
+[MPBITCH]
+C'EST QUI LE BOSS, MAINTENANT ?
-[COL5_8]
-Maudit cafard!
+[FEMP_SM]
+Joue à Grand Theft Auto avec des potes ou avec des types louches situés pas loin de toi.
-[COL5_5]
-Crevez, porcs de Français!
+[MPYL]
+LOSER !
-[CNT2_1]
-Tuez-le!
+[MPTMWIN]
+: LES MEILLEURS, CE SONT EUX !
-[CNT2_2]
-Récupérez les plaques!
+[GS_SCAR]
+VEHICULE :
-[CNT2_3]
-Protégez le coursier!
+[GS_MIN]
+minute
-[FINKILL]
-Ok, les mecs, butez-le!
+[GS_MINS]
+minutes
-[FIN_6]
-Sonny est en haut avec le coffre et MON argent...
+[MPTNKGA]
+T'as le blindé.
-[FIN_10]
-Sonny? SONNY! Je viens te chercher!
+[MPTNKGB]
+Alors garde-le.
-[RACES_4]
-3
+[GS_TYPE]
+SCENARIO :
-[RACES_5]
-2
+[CLILOST]
+La communication avec les autres joueurs a été perdue.
-[RACES_6]
-1
+[ONEHPC]
+Terminé à 100 pour cent ! Il y a une petite surprise qui t'attend à Fort Staunton.
-[RACES_7]
-PARTEZ!
+[MPBLTM]
+sindacco
-[RACES_9]
-Temps : ~1~:~1~
+[MPRDTM]
+forelli
-[RACES]
-TEMPS :
+[MTN_1]
+Sindacco
-[RACES17]
-Nv temps record : ~1~:~1~
+[MTN_2]
+Forelli
-[RACES20]
-Nv temps record : ~1~:0~1~
+[MPRDCAP]
+Leur voiture a été capturée.
-[RACES21]
-Temps : ~1~:0~1~
+[MPBLCAP]
+Leur voiture a été capturée.
-[RCH1_1]
-~g~Utilise l'hélicoptère radiocommandé, le RC Raider, pour PASSER les points de passage.
+[MPRDST]
+Leur voiture a été volée.
-[RCH1_2]
-~g~Les POINTS DE PASSAGE sont disséminés dans l'aéroport.
+[MPBLST]
+Leur voiture a été volée.
-[RCH1_3]
-~g~Tu as ~c~8 minutes~g~ pour passer les ~c~20!
+[MPBLEST]
+Leur voiture a été volée.
-[RCH1_5]
-Temps
+[MPRDRET]
+Leur voiture a été récupérée.
-[RCRC1_1]
-~g~Fais une COURSE DE POINTS DE PASSAGE contre deux autres RC Bandits sur 2 TOURS
+[MPBLRET]
+Leur voiture a été récupérée.
-[RCRC1_2]
-~g~Va sur la grille de départ!
+[MPRDPOS]
+Leur voiture est mal placée.
-[RCRC1_3]
-~g~Dernier tour!
+[MPBLPOS]
+Leur voiture est mal placée.
-[RCRC1_4]
-~g~3
+[GS_TEAM]
+REJOINDRE GANG :
-[RCRC1_5]
-~g~2
+[FEMP_TS]
+REJOINDRE GANG :
-[RCRC1_6]
-~g~1
+[MPTEAM]
+Gang
-[RCRC1_7]
-~g~PARTEZ!
+[GS_OA3]
+Détruis 4 limousines dans la base du gang adverse.
-[RCRC1_8]
-~g~Temps de course : ~1~ secondes
+[GS_O4]
+Vole la voiture du gang adverse et ramène-la à ta base, tout en protégeant la caisse de ton gang.
-[RCPL1_1]
-~g~Fais une COURSE DE POINTS DE PASSAGE contre 3 autres RC Baron
+[MPI06]
+MEMBRE DU GANG
-[RCPL1_2]
-~g~Tu dois passer par le ~o~CENTRE CORONA ~g~pour valider un point de passage.
+[FEMP_ST]
+LANCER (1 joueur ou plus par gang nécessaire)
-[RCPL1_3]
-~g~Va sur la grille de départ maintenant!
+[HELP32]
+~w~Contre une somme modique (ou gratuitement si tu n'as pas d'argent), il t'emmènera voir ton ~h~contact~w~ pour la dernière mission tentée.
-[FEA_2SP]
-2 haut-parleurs
+[BENZ_HO]
+La ~h~salopette~w~ est dispo dans la planque. Reviens ici la nuit en la portant pour jouer à SlashTV.
-[FEA_4SP]
-Plus de 2 haut-parleurs
+[SLATXT]
+~w~Reviens ici vêtu de la 'salopette' entre 18:00 et 05:00 pour jouer à SlashTV.
-[FEA_EAR]
-Casque
+[OUTF_02]
+~w~Salopette
-[FEA_NAH]
-PAS DE MATERIEL AUDIO
+[CAN_CON]
+~w~Appuie de nouveau sur~h~ ~k~ ~TGSUB~ ~w~pour annuler la mission.
-[FET_APP]
-APPLIQUER
+[GNG1]
+LEONE
-[FES_SKN]
-NOM DU SKIN
+[GNG2]
+TRIADES
-[FES_DAT]
-DATE
+[GNG3]
+DIABLOS
-[FES_SET]
-Utiliser Skin
+[GNG4]
+YAKUZAS
-[FET_DEF]
-Par défaut
+[GNG5]
+YARDIES
-[FESZ_QZ]
-Veux-tu vraiment sauvegarder cette partie?
+[GNG6]
+COLOMBIENS
-[FES_SCG]
-Sauvegarder la partie en cours?
+[GNG7]
+HOODS
-[FES_LCG]
-Charger la partie et continuer à jouer?
+[GNG8]
+SINDACCO
-[FEC_FIR]
-Tirer
+[GNG9]
+FORELLI
-[FEC_NWE]
-Arme suivante
+[GNG0]
+SICILIENS
-[FEC_PWE]
-Arme précédente
+[MP_GNG1]
+GANG 1 :
-[FEC_FOR]
-Avant
+[MP_GNG2]
+GANG 2 :
-[FEC_BAC]
-Arrière
+[GS_TEMS]
+GUERRE DES GANGS
-[FEC_LEF]
-Gauche
+[CARS_O]
+~w~Si tu veux te faire un peu d'argent de poche, Capital Autos à Harwood cherche de nouveaux vendeurs.
-[FEC_RIG]
-Droite
+[CARTXT]
+~w~Capital Autos n'est ouvert que de 08:00 à 18:00. Reviens à ce moment-là !
-[FEC_ZIN]
-Zoom avant
+[GS_TO1]
+Tue le gang adverse !
-[FEC_ZOT]
-Zoom arrière
+[MPTNEED]
+a encore besoin de
-[FEC_EEX]
-Entrer+sortir
+[MPTWIN]
+gagnent
-[FEC_RAD]
-Radio
+[BADTEAM]
+L'un des gangs n'a plus de joueurs.
-[FEC_SUB]
-Sous-mission
+[RACELAP]
+Tour
-[FEC_CMR]
-Changer caméra
+[GS_D1]
+REVIVEZ L'EMISSION TELE DEVENUE CULTE ! LE DARWINISME URBAIN EST DE RETOUR.
-[FEC_JMP]
-Sauter
+[GS_D2]
+QUI EST LE MEILLEUR CONDUCTEUR (OU TRICHEUR) ?
-[FEC_SPN]
-Courir
+[GS_D3]
+PROTEGE TES VOITURES CONTRE LES TRUANDS ET LES VANDALES.
-[FEC_HND]
-Frein à main
+[GS_D4]
+VOLE LA VOITURE DU GANG ADVERSE. MOQUE-TOI D'EUX.
-[FEC_LOL]
-Regarder à gauche
+[GS_D5]
+QUI TIENT LE PLUS A RECUPERER CE BLINDE ?
-[FEC_LOR]
-Regarder à droite
+[GS_D6]
+LA CIBLE DOIT ETRE ABATTUE.
-[FEC_NTR]
-Cible suivante
+[GS_D7]
+RECUPERE DES VOITURES.
-[FEC_PTT]
-Cible précédente
+[HELP61]
+~w~Lorsque le ~h~triangle est orienté vers le haut~w~, la ~h~cible est au-dessus de toi~w~. Un ~h~carré~w~ indique que la ~h~cible~w~ est à ton niveau.
-[FEC_LBA]
-Regarder derrière
+[ST_DRWN]
+Poissons nourris
-[FEC_CEN]
-Centrer caméra
+[RACE_T4]
+~r~Tu as été disqualifié car tu n'as pas trouvé de voiture.
-[FET_CCN]
-Classique
+[RACE_T5]
+~r~Tu as été disqualifié car tu n'as pas trouvé de moto.
-[FET_SCN]
-Standard
+[PCJ600]
+PCJ-600
-[FET_CFT]
-A PIED
+[FEC_HBB]
+Frein à main :~h~ ~k~ ~VEACC~ ~w~et~h~ ~k~ ~VEBRK~
-[FET_CCR]
-EN VOITURE
+[HJSTAT]
+~w~Distance : ~1~,~1~m Hauteur : ~1~,~1~m Saltos : ~1~ Rotation : ~1~°
-[FET_CAC]
-ACTION
+[HJSTATW]
+~w~Distance : ~1~,~1~m Hauteur : ~1~,~1~m Saltos : ~1~ Rotation : ~1~° Et quel atterrissage !
-[FEC_IBT]
--
+[HJSTATF]
+~w~Distance : ~1~ft Hauteur : ~1~ft Saltos : ~1~ Rotation : ~1~°
-[FEC_MXO]
-MXB1
+[HJSTAWF]
+~w~Distance : ~1~ft Hauteur : ~1~ft Saltos : ~1~ Rotation : ~1~° Et quel atterrissage !
-[FEC_MXT]
-MXB2
+[MPUNLK]
+Nouveau contenu multijoueur débloqué. Nargue les autres joueurs avec tous les trucs déments que t'as débloqués !
-[FEC_UNB]
-NON LIE
+[MPUNLKA]
+Contenu multijoueur intégralement débloqué. Nargue les autres joueurs avec tous les trucs déments que t'as débloqués !
-[FEC_TFL]
-Regard gauche+tourelle G
+[TOUR]
+See the Sight Before your Flight
-[FEC_TFR]
-Regarde droite+tourelle D
+[NDL1_A]
+Noodle Punk
-[FEC_MWF]
-VOLANT MS HAUT
+[PIZ1_A]
+Well Snacked Pizza
-[FEC_MWB]
-VOLANT MX BAS
+[GS_SCUT]
+VOIR INTRO :
-[FEC_ORR]
-ou
+[TR_00]
+COURSE 1
-[FEC_NUS]
-NON UTILISE
+[TR_01]
+COURSE 2
-[FEC_LUD]
-Regarder en haut
+[TR_02]
+COURSE 3
-[FEC_LDU]
-Regarder en bas
+[TR_03]
+COURSE 4
-[FEC_CMP]
-COMBO : REGARDER G+D
+[TR_04]
+COURSE 5
-[LAW_1A]
-law_1a
+[TR_05]
+COURSE 6
-[LAW_1B]
-law_1b
+[TR_06]
+COURSE 7
-[LAW_2A]
-law_2a
+[TR_07]
+COURSE 8
-[LAW_2B]
-law_2b
+[CHSE]
+POURSUITE
-[FEH_STA]
-STATS
+[NOCHANG]
+Tu ne peux pas changer de vêtements au cours de cette mission.
-[FEH_LOA]
-CHARGER
+[OUTF_12]
+Antonio
-[FEH_CON]
-COMMANDES
+[OUTF_13]
+Jogging
-[FEH_AUD]
-AUDIO
+[OUTF_14]
+Mafieux
-[FEH_DIS]
-AFFICHAGE
+[OUTF_15]
+Petit malin
-[FEH_LAN]
-LANGUE
+[BENZ_AN]
+~w~La ~h~tenue d'Antonio~w~ est dispo dans ta planque.
-[FEH_SGA]
-LANCER NOUVELLE PARTIE
+[BENZ_SW]
+~w~Le ~h~jogging~w~ est dispo dans ta planque.
-[FEO_CON]
-Configuration manette
+[BENZ_GD]
+~w~La ~h~tenue Mafieux~w~ est dispo dans ta planque.
-[FEO_AUD]
-Configuration audio
+[BENZ_WI]
+~w~La ~h~tenue Petit malin~w~ est dispo dans ta planque.
-[FEO_DIS]
-Configuration affichage
+[RAMPAGE]
+RODEO
-[FEO_LAN]
-Choix langue
+[GS_TTGT]
+TEMPS BLINDE :
-[FEO_PLA]
-Configuration joueur
+[GS_O5]
+Pour gagner, reste en vie le plus longtemps possible dans le blindé. Endommage le blindé pour le voler à un autre joueur.
-[FEA_OUT]
-Sortie
+[HELP28]
+~w~Pour lancer une ~h~arme explosive~w~, appuie sur~h~ ~k~ ~PDFW~. ~w~Plus tu appuies longuement sur~h~ ~k~ ~PDFW~, ~w~plus l'arme ira loin.
-[FEA_ST]
-Stéréo
+[RATNG53]
+Déshonorant
-[FEA_DTS]
-DTS
+[RATNG54]
+Sale tricheur
-[FEA_RSS]
-Station de radio
+[RATNG55]
+Requin
-[FEA_NON]
-RADIO ETEINTE
+[RATNG56]
+Escroc
-[FEA_FM0]
-WILDSTYLE
+[RATNG57]
+Le Don de tous les menteurs
-[FEA_FM1]
-FLASH FM
+[RATNG11]
+SANGSUE
-[FEA_FM2]
-KCHAT
+[CHASE6]
+Liberty Tree Page 2
-[FEA_FM3]
-FEVER 105
+[CHASE7]
+Liberty Tree Première page
-[FEA_FM4]
-VROCK
+[AUTOLD]
+Chargement depuis le Memory Stick™, ne pas retirer le Memory Stick™ ou redémarrer le système.
-[FEA_FM5]
-VCPR
+[LDFAIL]
+Echec du chargement. Les données sauvegardées sont corrompues.
-[FEA_FM7]
-EMOTION 98.3
+[MEMCHKA]
+Memory Stick™ introuvable. Au moins
-[FEA_FM8]
-ONDE 103
+[MEMCHKB]
+sont nécessaires pour sauvegarder ces données de jeu.
-[FED_BRI]
-Luminosité
+[MEMCHKC]
+Espace insuffisant sur le Memory Stick™. Au moins
-[FED_TRA]
-Rémanences :
+[MEMCHKD]
+sont nécessaires pour sauvegarder ces données de jeu.
-[FED_SUB]
-Sous-titres
+[M_FAIL]
+ECHEC DE LA MISSION !
-[FED_WIS]
-Ecran large
+[M_OVER]
+FIN DE LA MISSION !
-[FED_POS]
-Position écran
+[M_PASS]
+~Y~MISSION TERMINEE ! ~n~~1~$
-[FEP_RES]
-Reprendre
+[M_PASSN]
+~Y~MISSION TERMINEE
-[FEP_STG]
-Commencer partie
+[MRACE11]
+~w~Remonte dans un véhicule pour terminer la course.
-[FEP_STA]
-Stats
+[FEI_LE1]
+Avec légende
-[FEP_BRI]
-Briefings
+[FEI_LE2]
+Sans légende
-[FEP_OPT]
-Options
+[FEI_TA1]
+Avec cible
-[FEP_QUI]
-Quitter partie
+[FEI_TA2]
+Sans cible
-[FES_LOA]
-Charger partie
+[C1FREE2]
+joystick analogique gauche
+
+[C3FREE2]
+joystick analogique gauche
+
+[FEA_MP3]
+BANDE-SON PERSO :
+
+[FEA_NA]
+NON DISPONIBLE
+
+[MPC_060]
+Antonio
+
+[MPC_061]
+Jogging
+
+[MPC_062]
+Mafieux
+
+[MPC_063]
+Petit malin
+
+[MPC_064]
+Kazuki
+
+[NUMDBL1]
+DEBUG 1 (~1~) (~1~)
+
+[SVRMBRS]
+JOUEURS :
+
+[RAMP_P]
+RODEO TERMINE !
+
+[RAMP_F]
+ECHEC DU RODEO !
+
+[MPWLPAC]
+a récupéré une voiture cible.
+
+[MPWLDAC]
+a livré une voiture cible.
+
+[LDWAIT]
+Appuie sur ~X~ pour continuer.
+
+[LOADING]
+Chargement... Un instant.
+
+[RACEP1]
+1er
+
+[RACEP2]
+2e
+
+[RACEP3]
+3e
+
+[RACEP4]
+4e
+
+[RACEP5]
+5e
+
+[RACEP6]
+6e
+
+[FEA_UT]
+Piste inconnue
+
+[LOADIN2]
+Chargement...
+
+[DNH5_X2]
+~r~T'as pas amorcé toutes les bombes.
+
+[MRACE12]
+T'AS
+
+[MRACE13]
+s POUR TROUVER UN VEHICULE
+
+[MRACE14]
+s POUR TROUVER UN VEHICULE
+
+[DTB_03]
+~w~L'équipe qui défend ses caisses le plus longtemps remporte la partie.
+
+[PUPCOL]
+a récupéré un bonus
+
+[TNKCSE]
+Endommage le blindé pour le voler à un autre joueur.
+
+[TNKTM]
+Pour gagner, reste en vie le plus longtemps possible dans le blindé.
+
+[MPFAIL]
+RATE !
+
+[GS_LOC2]
+LIEU :
+
+[DTBSWPA]
+T'as tenu les Sindacco à l'écart pendant
+
+[DTBSWPB]
+Maintenant, détruis leurs caisses en moins de temps.
+
+[DTBSWPC]
+T'as détruit les caisses des Forelli en
+
+[DTBSWPD]
+Maintenant, protège tes caisses pendant plus longtemps.
+
+[CHANOP]
+Changer d'option
+
+[MPSSCT]
+ARGENT CIBLE :
+
+[F_RANG2]
+~r~La radio du camion de pompiers ne fonctionne pas dans le métro !
+
+[T_RANG2]
+~r~Il n'y a pas d'ordures à ramasser dans le métro !
+
+[T_RANGE]
+~r~Il n'y a pas d'ordures à ramasser ici !
+
+[FEU_YES]
+OUI
+
+[FEU_NO]
+NON
+
+[HELP43]
+~w~Utilise le frein à main pour faire virer ton bateau plus rapidement.
+
+[RACE_T6]
+~r~Un des véhicules a été détruit - la course est annulée !
+
+[FED_POS]
+POSITION ECRAN
+
+[FES_DSS]
+Choisir une sauvegarde à effacer :
+
+[FES_LSS]
+Choisir une sauvegarde à charger :
+
+[FES_DSC]
+Effacement réussi. Pour continuer, sélectionner OK.
[FES_DEL]
Effacer partie
-[FEC_CSU]
-Configuration manette
+[FES_DGM]
+EFFACER PARTIE
-[FEC_RED]
-Réassigner commandes
+[ITBEG]
+Au commencement...
-[FEC_MOU]
-Paramètres souris
+[FET_LG]
+CHARGER
-[DISTGOL]
-Dist. parcourue en voiturette (miles)
+[FES_SCG]
+Sauvegarder la partie en cours ?
-[DISTGOM]
-Distance parcourue en voiturette (m)
+[FESZ_QZ]
+Sauvegarder cette partie ?
-[ST_FAVR]
-Station de radio préférée
+[FES_SSC]
+Sauvegarde réussie. Pour continuer, sélectionner OK.
-[ST_WSTR]
-Station de radio la moins écoutée
+[FEM_NTF]
+La memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 n'est pas formatée.
-[ST_FAVV]
-Véhicule préféré
+[FES_CFM]
+Formatage de la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1. Ne pas retirer la memory card (8MB) (pour PlayStation®2) ou la manette, ni redémarrer ou éteindre la console.
-[ST_STAR]
-Total d'étoiles de recherche obtenues
+[FES_LOQ]
+Echec du chargement ! La sauvegarde sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 n'est pas compatible avec le jeu. Le jeu est en train d'être relancé.
-[ST_HEAD]
-Nombre de tirs à la tête
+[FEM_NTH]
+Pas de memory card (8MB) (pour PlayStation®2) insérée dans la fente pour MEMORY CARD N°1.
-[ST_GANG]
-Gang le moins apprécié
+[FES_CMP]
+Echec de la sauvegarde ! Vérifier la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 et réessayer.
-[ST_STGN]
-Total d'étoiles de recherche évitées
+[FESZ_FO]
+La memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 n'est pas formatée. Voulez-vous la formater ?
-[TYREPOP]
-Pneus crevés avec des balles
+[FES_NOC]
+Pas de memory card (8MB) (pour PlayStation®2) insérée dans la fente pour MEMORY CARD N°1.
-[TYRESLA]
-Pneus lacérés avec une lame
+[FES_LOE]
+Echec du chargement ! Vérifier la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 et réessayer. Le jeu est en train d'être relancé.
-[ST_BRK]
-Nombre de victimes dans le Bloodring
+[FES_DEE]
+Echec de l'effacement ! Vérifier la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 et réessayer.
-[ST_LTBR]
-Plus longue durée dans le Bloodring (sec)
+[SLONFM]
+Echec du formatage ! Vérifier la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 et réessayer.
-[ST_GNG1]
-Cubains
+[SLONDR]
+Espace insuffisant sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1. Insérer une memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 avec au moins 330 KB d'espace libre, ou libérer de l'espace pour pouvoir sauvegarder les données de jeu.
-[ST_GNG2]
-Haïtiens
+[SLNSP]
+Espace insuffisant sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1. Au moins 101 KB d'espace libre supplémentaire sont nécessaires sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 pour pouvoir sauvegarder les données de jeu.
-[ST_GNG3]
-Faux voyous
+[SLONNF]
+La memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 n'est pas formatée. Voulez-vous la formater ?
-[ST_GNG4]
-Gang de Diaz
+[FESZ_FF]
+Echec du formatage ! Vérifier la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 et réessayer.
-[ST_GNG5]
-Agents de sécurité
+[MCDNSP]
+Pas de memory card (8MB) (pour PlayStation®2) insérée dans la fente pour MEMORY CARD N°1. Pour sauvegarder les données de jeu, insérer une memory card (8MB) (pour PlayStation®2) avec au moins 330 KB d'espace libre. Voulez-vous quand même commencer une partie ?
-[ST_GNG6]
-Gang de motards
+[MCGNDP]
+Espace insuffisant sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1. Au moins 330 KB d'espace libre sont nécessaires pour sauvegarder ces données de jeu. Voulez-vous quand même commencer une partie ?
-[ST_GNG7]
-Gang de Vercetti
+[MCGNSP]
+Espace insuffisant sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1. Au moins 101 KB d'espace libre supplémentaire sont nécessaires sur la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 pour sauvegarder ces données de jeu. Voulez-vous quand même commencer une partie ?
-[ST_GNG8]
-Golfeurs
+[FESZ_WR]
+Sauvegarde en cours. Ne pas retirer la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 ou la manette, ni redémarrer ou éteindre la console.
-[FEA_FM6]
-ESPANTOSO
+[FELD_WR]
+Chargement en cours. Ne pas retirer la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 ou la manette, ni redémarrer ou éteindre la console.
-[ST_ASSI]
-Contrats exécutés
+[FEDL_WR]
+Effacement en cours. Ne pas retirer la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 ou la manette, ni redémarrer ou éteindre la console.
-[DISTBIK]
-Dist. parcourue à moto (miles)
+[C0VEWEA]
+joystick analogique droit
-[DISTBIM]
-Dist. parcourue à moto (m)
+[C1VEWEA]
+joystick analogique droit
-[HOTEL]
-Hôtel Ocean View
+[C2VEWEA]
+joystick analogique droit
-[ICC1_1]
-~g~Utilise ta camionnette de crème glacée pour distribuer de la drogue à Vice City.
+[C3VEWEA]
+touches directionnelles
-[ICC1_2]
-~g~Gare ta camionnette et appuie sur ~h~~k~~VEHICLE_HORN~~w~ pour jouer le jingle et signaler à tes clients que tu es prêt.
+[C0PDLOO]
+joystick analogique droit
-[ICC1_3]
-~g~Tu reçois de l'argent pour chaque transaction faite, mais plus tu fais d'affaires, plus tu attires l'attention de la police.
+[C1PDLOO]
+joystick analogique droit
-[KICK1_9]
-POINTS DE PASSAGE RESTANTS :
+[C2PDLOO]
+joystick analogique droit
-[FIN_B6]
-Tu n'as pas assez d'argent pour commencer cette mission.
+[C3PDLOO]
+joystick analogique droit
-[TEX3_3]
-~g~Pour ramasser une bombe, manoeuvre l'hélico au-dessus d'elle. La bombe est alors automatiquement fixée sous la carlingue.
+[C0AMMOV]
+joystick analogique gauche ou touches directionnelles
-[TEX3_9]
-~g~Ramasse une bombe en manoeuvrant l'hélico à côté d'elle.
+[C1AMMOV]
+joystick analogique gauche ou touches directionnelles
-[HELP22]
-Va vers la position du bip de la maison verte sur le radar.
+[C2AMMOV]
+joystick analogique gauche ou touches directionnelles
-[FES_FMS]
-Formatage terminé. Sélectionne OK pour continuer.
+[C3AMMOV]
+joystick analogique gauche ou touches directionnelles
-[FES_SSC]
-Sauvegarde terminée. Sélectionne OK pour continuer.
+[FEC_ACB]
+Accélérer/Freiner
-[FES_DSC]
-Suppression terminée. Sélectionne OK pour continuer.
+[FEM_SL8]
+Sauvegarde 8 absente
+
+[FES_SAV]
+SAUVEGARDER
+
+[FES_FMS]
+Formatage réussi.
+
+[MCDNCK]
+Vérification de la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1. Ne pas retirer la memory card (8MB) (pour PlayStation®2) ou la manette, ni redémarrer ou éteindre la console.
[FESZ_QC]
-Ecraser ce fichier de sauvegarde corrompu?
+Procéder à l'écrasement de cette sauvegarde corrompue ?
-[FES_CHE]
-Attention! Un ou plusieurs codes ont été activés, ce qui peut affecter votre fichier de sauvegarde. Sauvegarde déconseillée.
+[NOCONT]
+Pour continuer, connecter une manette analogique (DUALSHOCK®) ou une manette analogique (DUALSHOCK®2) au port de manette N°1.
-[FET_SG]
-SAUVEGARDER
+[FES_LCF]
+Echec du chargement ! Vérifier la memory card (8MB) (pour PlayStation®2) dans la fente pour MEMORY CARD N°1 et réessayer.
-[FEH_BRI]
-BRIEFING
+[DBGHELP]
+~h~DEBUG MENU~w~ Select Item with ~h~left button & right button. ~w~Press ~h~X button ~w~to launch. Press ~h~TRIANGLE button ~w~to quit menu.
-[FEH_MAP]
-CARTE
+[DBGSEL1]
+Level Skip Menu
-[FEM_OK]
-OK
+[DBGSEL2]
+Car Viewer
-[FEC_CRO]
-S'accroupir
+[DBGSEL3]
+Character Viewer
-[FEC_CR3]
-S'accroupir (touche L3)
+[DBGSEL4]
+Building Viewer
-[FEC_SMT]
-Sous-mission
+[DBGSEL5]
+Weapon Cheat
-[FEC_SM3]
-Sous-mission (touche R3)
+[DBGSEL6]
+Player Cheat
-[FEC_RSC]
-Stations de radio
+[DBGSEL7]
+Weather and Time Changer
-[ST_PR01]
-Pilote
+[DBGSEL8]
+Marketing Camera
-[ST_PR02]
-Soldat armée de l'air
+[DBGSEL9]
+MoCap Menu
-[ST_PR03]
-Officier pilote
+[DBGSE10]
+USJ Editor
-[ST_PR04]
-Caporal
+[DBGSE11]
+Toggle Player Coordinates
-[ST_PR05]
-Lieutenant
+[DBGFIL0]
+Ped Selector
-[ST_PR06]
-Sergent
+[DBGFIL1]
+Car Selector
-[ST_PR07]
-Capitaine
+[PLCHLD]
+Placeholder: mission will complete in 5 seconds
-[ST_PR08]
-Biggs
+[PLCHLD2]
+Placeholder Cutscene
-[ST_PR09]
-Wedge
+[PLCHLD3]
+Placeholder (MOCAP) Cutscene
-[ST_PR10]
-Baron rouge
+[LS_MAC]
+Ma Cipriani stream
-[ST_PR11]
-Goose
+[LS_JDT]
+J.D. O'Toole stream
-[ST_PR12]
-Viper
+[LS_SAL]
+Salvatore stream
-[ST_PR13]
-Jester
+[LS_COMP]
+Completed all Missions in this stream
-[ST_PR14]
-Chappy
+[TEMP1]
+Number: ~1~
-[ST_PR15]
-Iceman
+[LS2_H1]
+Use ~h~analog up & down ~w~to select story stream. Use ~h~analog left & right ~w~to select mission. Use ~h~L button & R button ~w~to select an island. Press ~h~X button ~w~to start mission. Press ~h~TRIANGLE button ~w~to exit.
-[ST_PR16]
-Maverick
+[LS2_H2]
+You cannot use levelskip when you are ~h~on a mission.
-[ST_PR17]
-Noops
+[LS2_VIC]
+~y~Vincenzo Cilli -~g~ ~a~
-[ST_PR18]
-Maréchal de l'air
+[LS2_MAC]
+~y~Ma Cipriani -~g~ ~a~
-[ST_PR19]
-As
+[LS2_JDT]
+~y~J.D. O'Toole -~g~ ~a~
-[FET_LG]
-Charger partie
+[LS2_SAL]
+~y~Salvatore -~g~ ~a~
-[CAR_EXP]
-Véhicules routiers détruits
+[LS2_MAR]
+~y~Maria -~g~ ~a~
-[BOA_EXP]
-Bateaux détruits
+[LS2_NED]
+~y~Ned Burner -~g~ ~a~
-[HEL_DST]
-Avions et hélicoptères détruits
+[LS2_DON]
+~y~Donald Love -~g~ ~a~
-[STFT_01]
-Meilleur temps sur 'Alliage d'Acier'
+[LS2_RAY]
+~y~Ray Machowski -~g~ ~a~
-[STFT_02]
-Meilleur temps sur 'Le chauffeur'
+[LS2_TOS]
+~y~Toshiko Kasen -~g~ ~a~
-[STFT_03]
-Meilleur temps sur Dirt Ring
+[FREEON]
+Time Frozen
-[STFT_04]
-Meilleur temps course avion télécommandé
+[FREEOFF]
+Time Unfrozen
-[STFT_05]
-Meilleur temps course voiture télécommandée
+[WTC_INS]
+Use ~h~analog up & down ~w~to change weather. Use ~h~analog left & right ~w~to change hour. Press ~h~TRIANGLE button ~w~to exit. Press ~h~SQUARE button ~w~to freeze time.
-[STFT_06]
-Meilleur temps hélico télécommandé
+[WTC_TIM]
+TIME: ~1~:00
-[STFT_07]
-Meilleur temps sur 'Terminal Velocity'
+[WTC_WE0]
+WEATHER: CLOUDY
-[STFT_08]
-Meilleur temps sur 'Ocean Drive'
+[WTC_WE1]
+WEATHER: EXTRA COLOURS
-[STFT_09]
-Meilleur temps sur 'Border Run'
+[WTC_WE2]
+WEATHER: EXTRA SUNNY
-[STFT_10]
-Meilleur temps sur 'Capital Cruise'
+[WTC_WE3]
+WEATHER: FOGGY
-[STFT_11]
-Meilleur temps sur 'Virée!'
+[WTC_WE4]
+WEATHER: HURRICANE
-[STFT_12]
-Meilleur temps sur 'Endurance V.C.'
+[WTC_WE5]
+WEATHER: RAINY
-[STHC_01]
-Meilleur score sur Le Flingueur.
+[WTC_WE6]
+WEATHER: SNOW
-[STHC_02]
-Meilleur pourcentage de tir au but sur le Flingueur.
+[WTC_WE7]
+WEATHER: SUNNY
-[STHC_03]
-Nombre de deals de drogue
+[CVHELP]
+Use ~h~up button and down button ~w~to change character. Use ~h~left button and right button ~w~to rotate camera. HOLD ~h~SQUARE ~w~to zoom in (toggles upper and lower body). Press ~h~TRIANGLE ~w~to quit character viewer.
-[HELP24]
-Tu peux maintenant bosser pour le colonel.
+[VMENU1]
+--------- Select a Viewer --------- --- ~h~Car~w~ - Character - Building --
-[HELP25]
-Tu peux maintenant bosser pour Avery Carrington
+[VMENU2]
+--------- Select a Viewer --------- --- Car - ~h~Character~w~ - Building --
-[HELP29]
-Tu peux te rendre au magasin de fringues quand tu n'es pas en mission.
+[VMENU3]
+--------- Select a Viewer --------- --- Car - Character - ~h~Building~w~ --
-[HELP30]
-Quand tu achètes de nouvelles fringues, ton indice de recherche retombe à zéro.
+[CV_C]
+COMPARISON MODEL
-[BJM2_22]
-~r~Tu as quitté le stand de tir!
+[CV_0]
+ROW: -- MODEL: player
-[BJM2_23]
-~g~Si tu quittes le stand de tir pendant la compétition, la mission est un échec.
+[CV_1]
+ROW: 114 MODEL: cop
-[ASM4_24]
-Distance :
+[CV_2]
+ROW: 115 MODEL: swat
-[RBM1_6]
-~g~Ramène Mercedes et le Love Juice au groupe, au studio d'enregistrement.
+[CV_3]
+ROW: 116 MODEL: fbi
-[RBM1_3]
-PLUS NECESSAIRE
+[CV_4]
+ROW: 117 MODEL: army
-[HAM1_5]
-PLUS NECESSAIRE
+[CV_5]
+ROW: 118 MODEL: medic
-[RBM1_11]
-PLUS NECESSAIRE
+[CV_6]
+ROW: 119 MODEL: fireman
-[HELP31]
-Pour réaliser un arrosage latéral, regarde d'abord à droite ou à gauche en utilisant ~k~~VEHICLE_LOOKLEFT~ ou ~k~~VEHICLE_LOOKRIGHT~.
+[CV_7]
+ROW: 71 MODEL: male01
-[HELP34]
-Tu dois être armé d'une mitraillette pour réaliser un arrosage latéral.
+[CV_9]
+ROW: 120 MODEL: taxi_d
-[STRIP_1]
-~r~T'as pas assez de pognon, pauvre fauché!
+[CV_10]
+ROW: 2 MODEL: pimp
-[EXIT_1]
-Appuie sur ~k~~PED_SPRINT~ pour sortir.
+[CV_11]
+ROW: 13 MODEL: criminal01
-[ASM1_A]
-M. Teal, votre aide dans l'éradication de ces indésirables fut une excellente affaire. J'ai un autre travail plus en finesse pour vous.
+[CV_12]
+ROW: 14 MODEL: criminal02
-[ASM1_B]
-Regardez sous le téléphone.
+[CV_13]
+ROW: 15 MODEL: male02
-[ASM1_C]
-J'ai un autre travail plus en finesse pour vous.
+[CV_14]
+ROW: 16 MODEL: male03
-[SCARF]
-Appartement 3c
+[CV_15]
+ROW: 121 MODEL: fatmale01
-[LAW4_10]
-Les patrons sont tous des salauds!
+[CV_16]
+ROW: 17 MODEL: fatmale02
-[GEN1_04]
-~g~Passe la porte pour accéder au toit de Gonzalez.
+[CV_17]
+ROW: 18 MODEL: female01
-[GEN1_17]
-~g~Gonzalez se fait la malle! Suis-le et finis-en avec lui!
+[CV_18]
+ROW: 19 MODEL: female02
-[RCH1_9]
-~b~TEMPS TOTAL : ~1~:~1~
+[CV_19]
+ROW: 20 MODEL: female03
-[RCH1_10]
-~b~TEMPS TOTAL : ~1~:0~1~
+[CV_20]
+ROW: 21 MODEL: fatfemale01
-[WHEEL01]
-DOUBLE BONUS DEUX ROUES : $ ~1~ Distance : ~1~.~1~m Temps : ~1~ secondes
+[CV_21]
+ROW: 22 MODEL: fatfemale02
-[WHEEL02]
-DOUBLE BONUS DEUX ROUES : $ ~1~ Distance : ~1~ feet Temps : ~1~ secondes
+[CV_22]
+ROW: 23 MODEL: prostitute
-[WHEEL03]
-BONUS DEUX ROUES : $ ~1~ Temps : ~1~ secondes
+[CV_23]
+ROW: 24 MODEL: prostitute2
-[WHEEL04]
-BONUS DEUX ROUES : $ ~1~ Distance : ~1~.~1~m
+[CV_24]
+ROW: 25 MODEL: p_man1
-[WHEEL05]
-BONUS DEUX ROUES : $ ~1~ Distance : ~1~ pieds
+[CV_25]
+ROW: 26 MODEL: p_man2
-[WHEEL06]
-BONUS ROUE ARRIERE : $ ~1~ Distance : ~1~.~1~m Temps : ~1~ secondes
+[CV_26]
+ROW: 27 MODEL: p_wom1
-[WHEEL07]
-BONUS ROUE ARRIERE : $ ~1~ Distance : ~1~ feet Temps : ~1~ secondes
+[CV_27]
+ROW: 28 MODEL: p_wom2
-[WHEEL08]
-BONUS ROUE ARRIERE : $ ~1~ Temps : ~1~ secondes
+[CV_28]
+ROW: 29 MODEL: ct_man1
-[WHEEL09]
-BONUS ROUE ARRIERE : $ ~1~ Distance : ~1~.~1~m
+[CV_29]
+ROW: 30 MODEL: ct_man2
-[WHEEL10]
-BONUS ROUE ARRIERE : $ ~1~ Distance : ~1~ pieds
+[CV_30]
+ROW: 31 MODEL: ct_wom1
-[WHEEL11]
-BONUS ROUE AVANT : $ ~1~ Distance : ~1~.~1~m Temps : ~1~ secondes
+[CV_31]
+ROW: 32 MODEL: ct_wom2
-[WHEEL12]
-BONUS ROUE AVANT : $ ~1~ Distance : ~1~ pieds Temps : ~1~ secondes
+[CV_32]
+ROW: 33 MODEL: li_man1
-[WHEEL13]
-BONUS ROUE AVANT: $ ~1~ Temps : ~1~ secondes
+[CV_33]
+ROW: 34 MODEL: li_man2
-[WHEEL14]
-BONUS ROUE AVANT : $ ~1~ Distance : ~1~.~1~m
+[CV_34]
+ROW: 35 MODEL: li_wom1
-[WHEEL15]
-BONUS ROUE AVANT : $ ~1~ Distance : ~1~ pieds
+[CV_35]
+ROW: 36 MODEL: li_wom2
-[ROK3_72]
-Love Fist!
+[CV_36]
+ROW: 37 MODEL: docker1
-[POR1_19]
-Hé!
+[CV_37]
+ROW: 38 MODEL: docker2
-[DESPERA]
-Desperado
+[CV_38]
+ROW: 39 MODEL: scum_man
-[MOB_99A]
-Rends-toi à la cabine près du centre commercial à Washington.
+[CV_39]
+ROW: 40 MODEL: scum_wom
-[MOB_98A]
-Rends-toi à la cabine dans Vice Point.
+[CV_40]
+ROW: 41 MODEL: worker1
-[MOB_96A]
-Rends-toi à la cabine du terminal de l'aéroport.
+[CV_41]
+ROW: 42 MODEL: worker2
-[MOB_95A]
-Rends-toi à la cabine dans Little Havana.
+[CV_42]
+ROW: 43 MODEL: b_man1
-[BNK1_1]
-Je peux vous aider, monsieur?
+[CV_43]
+ROW: 44 MODEL: b_man2
-[BNK1_2]
-Il y a un imposteur!
+[CV_44]
+ROW: 67 MODEL: b_man3
-[BNK1_3]
-Il a pêté les plombs!
+[CV_45]
+ROW: 45 MODEL: b_wom1
-[BNK1_4]
-Bon sang, t'es qui, toi?
+[CV_46]
+ROW: 46 MODEL: b_wom2
-[BNK1_5]
-Où es ton badge?
+[CV_47]
+ROW: 70 MODEL: b_wom3
-[BNK1_6]
-Les voilà! Descendez-les!
+[CV_48]
+ROW: 47 MODEL: mod_man
-[MOB_24A]
-Bonjour, c'est M. Vercetti?
+[CV_49]
+ROW: 48 MODEL: mod_wom
-[MOB_24B]
-Oui.
+[CV_50]
+ROW: 49 MODEL: st_man
-[MOB_24C]
-ici Cortez. Vous étiez à ma fête.
+[CV_51]
+ROW: 50 MODEL: st_wom
-[MOB_24D]
-Oui, je me souviens.
+[CV_52]
+ROW: 51 MODEL: fan_man1
-[MOB_24E]
-M. Vercetti, c'est un regrettable incident, ce qui s'est produit avec votre affaire.
+[CV_53]
+ROW: 52 MODEL: fan_man2
-[MOB_24F]
-Je sais.
+[CV_54]
+ROW: 53 MODEL: fan_wom
-[MOB_24G]
-Je veux que vous sachiez que mes hommes et moi, faisons le maximum pour tirer ça au clair.
+[CV_55]
+ROW: 54 MODEL: hos_man
-[MOB_24H]
-Si vous souhaitez me parler en privé, vous me trouverez sur le bateau. Au revoir, senor.
+[CV_56]
+ROW: 55 MODEL: hos_wom
-[BNK2_2]
-VISEZ 3-2-1 FEU!
+[CV_57]
+ROW: 56 MODEL: const1
-[BNK2_3]
-ZONE DEGAGEE!
+[CV_58]
+ROW: 57 MODEL: const2
-[BNK2_6]
-Ce mec est cinglé!
+[CV_59]
+ROW: 58 MODEL: shopper1
-[ANGEL]
-Angel
+[CV_60]
+ROW: 59 MODEL: shopper2
-[CUBJET]
-Jetmax cubain
+[CV_61]
+ROW: 60 MODEL: shopper3
-[SANDKIN]
-Sandking
+[CV_62]
+ROW: 61 MODEL: stud_man
-[POLMAV]
-Maverick Police
+[CV_63]
+ROW: 62 MODEL: stud_wom
-[BOXVILL]
-Boxville
+[CV_64]
+ROW: 63 MODEL: cas_man
-[BENSON]
-Benson
+[CV_65]
+ROW: 64 MODEL: cas_wom
-[HOTRINA]
-Hotring Racer
+[CV_79]
+ROW: 123 MODEL: gang01 LEONE_A
-[HOTRINB]
-Hotring Racer
+[CV_80]
+ROW: 124 MODEL: gang02 LEONE_B
-[BLOODRA]
-Bloodring Banger
+[CV_81]
+ROW: 69 MODEL: gang03 TRIAD_A
-[BLOODRB]
-Bloodring Banger
+[CV_82]
+ROW: 3 MODEL: gang04 TRIAD_B
-[MAFIACR]
-Mafia Cruiser
+[CV_83]
+ROW: 4 MODEL: gang05 DIABLO_A
-[COP_M2]
-'VICE SQUAD'
+[CV_84]
+ROW: 5 MODEL: gang06 DIABLO_B
-[COP_M3]
-'BROWN THUNDER'
+[CV_85]
+ROW: 68 MODEL: gang07 YAKUZA_A
-[BJM2_20]
-~g~Quand tu n'as plus de ~w~temps ~g~ou de ~w~munitions ~g~, la manche est terminée!
+[CV_86]
+ROW: 6 MODEL: gang08 YAKUZA_B
-[BNK3_2]
-Pas question que je conduise pour toi! J'en parlerai pendant la réunion de groupe!
+[CV_87]
+ROW: 7 MODEL: gang09 YARDIE_A
-[FEM_SL1]
-Pas de sauvegarde 1
+[CV_88]
+ROW: 8 MODEL: gang10 YARDIE_B
-[FEM_SL2]
-Pas de sauvegarde 2
+[CV_89]
+ROW: 9 MODEL: gang11 COLOMBIAN_A
-[FEM_SL3]
-Pas de sauvegarde 3
+[CV_90]
+ROW: 10 MODEL: gang12 COLOMBIAN_B
-[FEM_SL4]
-Pas de sauvegarde 4
+[CV_91]
+ROW: 11 MODEL: gang13 HOOD_A
-[FEM_SL5]
-Pas de sauvegarde 5
+[CV_92]
+ROW: 12 MODEL: gang14 HOOD_B
-[FEM_SL6]
-Pas de sauvegarde 6
+[CV_93]
+ROW: 89 MODEL: gang15 Forelli thug1
-[FEM_SL7]
-Pas de sauvegarde 7
+[CV_94]
+ROW: 90 MODEL: gang16 Forelli thug2
-[FEM_SL8]
-Pas de sauvegarde 8
+[CV_95]
+ROW: 88 MODEL: gang17 Sindacco thug1
-[FEA_CHA]
-Passage en mode STEREO. Patiente un instant...
+[CV_96]
+ROW: 89 MODEL: gang18 Sindacco thug2
-[FEA_CHD]
-Attention! Tu es en train de passer du mode STEREO au mode DTS. Patiente un instant...
+[CV_109]
+ROW: 65 MODEL: SAL_01 Salvatore (Mob Don)
-[FEI_SEL]
-Sélectionner
+[CV_110]
+ROW: 66 MODEL: RAY_01 Ray (Bad Cop)
-[FEI_BAC]
-Retour
+[CV_111]
+ROW: 72 MODEL: VINC_01 Vincenzo Cilli
-[FEI_RES]
-Reprendre
+[CV_112]
+ROW: 73 MODEL: GRDANG1 Avenging Angel
-[FEI_NAV]
-Explorer
+[CV_113]
+ROW: 74 MODEL: NED_01 Ned Burner (Reporter)
-[FEI_BTX]
-Touche / -
+[CV_114]
+ROW: 75 MODEL: MASTOR Massimo Torrini (Assassin)
-[FEI_BTT]
-Touche " -
+[CV_115]
+ROW: 76 MODEL: TOOL_01 JD O'Toole
-[FEI_STA]
-Touche START -
+[CV_116]
+ROW: 77 MODEL: Not used Fthr Kenny
-[FEI_BTD]
-; = > < -
+[CV_117]
+ROW: 78 MODEL: GRDANG2 Avenging Angel 2
-[FEI_STO]
-Arrêter
+[CV_118]
+ROW: 79 MODEL: M_HOLE Mayor RC Hole
-[MOB_68A]
-Tommy, mon fiston, j'ai une surprise pour toi!
+[CV_119]
+ROW: 80 MODEL: FRANFOR Franco Forelli
-[MOB_68B]
-Je suis au studio d'enregistrement avec quelques artistes réputés.
+[CV_120]
+ROW: 81 MODEL: KAZUKI Kazuki Kasen
-[MOB_68C]
-Pourquoi tu ne viendrais pas faire un tour?
+[CV_121]
+ROW: 82 MODEL: PAULIE Paulie Sindacco
-[MOB_68D]
-C'est une bonne idée, non? Allez, à plus tard. C'est plutôt normal, non? Allez, à plus tard.
+[CV_122]
+ROW: 83 MODEL: HOPPER Jane Hopper
-[OUTFT1]
-Streetwear
+[CV_123]
+ROW: 84 MODEL: AVERY Avery Carrington
-[OUTFT2]
-Soirée
+[CV_124]
+ROW: 85 MODEL: CASA Giovanni Casa
-[OUTFT3]
-Bleu de travail
+[CV_125]
+ROW: 86 MODEL: BABY Giovanni Casa (baby)
-[OUTFT4]
-Country club
+[CV_126]
+ROW: 87 MODEL: MCAFFRY Det. Leon McAffrey
-[OUTFT5]
-Cubano
+[CV_127]
+ROW: 92 MODEL: EIGHT 8Ball
-[OUTFT6]
-Flic
+[CV_128]
+ROW: 93 MODEL: MAR_01 Maria
-[OUTFT7]
-Braqueur
+[CV_129]
+ROW: 94 MODEL: LOVE_01 Donald Love
-[OUTFT8]
-Décontracté
+[CV_130]
+ROW: 95 MODEL: MICKEYH Mickey H
-[OUTFT9]
-M. Vercetti
+[CV_131]
+ROW: 96 MODEL: WAYNE Wayne (Biker Dude)
-[OUTFT10]
-Survêtement
+[CV_132]
+ROW: 97 MODEL: BIKER1 Biker Dude 1
-[OUTFT13]
-MC Tommy
+[CV_133]
+ROW: 98 MODEL: BIKER2 Biker Dude 2
-[HOTR_07]
-Nouveau record : ~1~:0~1~
+[CV_134]
+ROW: 99 MODEL: DONOVAN O'Donovan
-[HOTR_08]
-Temps : ~1~:~1~
+[CV_135]
+ROW: 100 MODEL: KAS_01 Toshiko Kasen (kimono)
-[GEN3_45]
-Ils seront là d'une minute à l'autre. On ferait mieux de se trouver une bonne planque...
+[CV_136]
+ROW: 101 MODEL: WKAS_01 Toshiko Kasen (western)
-[CAR_AS1]
-CONCESSION AUTOMOBILE ACQUISE
+[CV_137]
+ROW: 104 MODEL: JDMADE JD O'Toole - Made Man
-[CAR_AS2]
-~g~Sunshine Autos génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[CV_138]
+ROW: 106 MODEL: THUG_01 Sicilian Thug 1
-[BUYSAVE]
-~g~Puisque tu n'es pas en mission, tu peux sauvegarder ta partie gratuitement.
+[CV_139]
+ROW: 107 MODEL: THUG_02 Sicilian Thug 2
-[BUYGARG]
-~g~Tu peux aussi garer des véhicules dans ce garage.
+[CV_140]
+ROW: 109 MODEL: CAMP_MAN Campaign Worker
-[STRPBUY]
-Club Pole Position acquis : $~1~
+[CV_141]
+ROW: 110 MODEL: CAMP_WOM Campaign Worker 2
-[STRP_R3]
-Pour acheter le club Pole Position pour $~1~, appuie sur la touche R3.
+[CV_142]
+ROW: 111 MODEL: MIGUEL Miguel
-[NBMN_R3]
-Pour acheter Elswanko Casa pour $~1~, appuie sur la touche R3.
+[CV_143]
+ROW: 112 MODEL: DELIASS Deli Assistant
-[GA_4]
-Les bombes pour voiture coûtent $1000 pièce.
+[CV_144]
+ROW: 113 MODEL: HOBO_01 Donald Love 2
-[GA_5]
-Ta caisse est déjà équipée d'une bombe.
+[CV_68]
+ROW: 122 MODEL: HITMAN Hitman
-[GA_6] { reVC update }
-Gare-toi, amorce-la en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ et BARRE-TOI vite!
+[CV_146]
+ROW: 125 MODEL: HOLEJOG Mayor RC Hole (Jogging outfit)
-[GA_7] { reVC update }
-Amorce la bombe en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~. Elle explosera au démarrage.
+[CV_147]
+ROW: 126 MODEL: Chauff Chauffeur
-[GA_6B] { reVC update }
-Gare-toi, amorce-la en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ et BARRE-TOI vite!
+[CV_148]
+ROW: 128 MODEL: plr2 (Lawyer)
-[GA_7B] { reVC update }
-Amorce la bombe en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~. Elle explosera au démarrage.
+[CV_149]
+ROW: 129 MODEL: plr3 (Travel clothes)
-[MOB_70A]
-Tommy, c'est moi, le colonel Cortez. Ecoutez senor, je parie qu'avec vous, tout est possible.
+[CV_150]
+ROW: 130 MODEL: plr4 (Chauffeur)
-[MOB_70B]
-Je serai sur le bateau.
+[CV_151]
+ROW: 131 MODEL: plr5 (Hockey mask)
-[PICK1]
-Gilet pare-balles livré dans l'hôtel Ocean View!
+[CV_152]
+ROW: 132 MODEL: plr6 (Tuxedo)
-[PICK2]
-.357 livré à la planque!
+[CV_153]
+ROW: 133 MODEL: plr7 (Avenging Angel)
-[PICK3]
-Tronçonneuse livrée à la planque!
+[CV_154]
+ROW: 134 MODEL: plr8 (The King of Rock'n Roll)
-[PICK4]
-Lance-flammes livré à la planque!
+[CV_155]
+ROW: 135 MODEL: plr9 (Cock's Mascot)
-[PICK5]
-.308 Lunette livré à la planque!
+[CV_156]
+ROW: 136 MODEL: plr10 (Boxer Shorts)
-[PICK6]
-Mitrailleuse livrée à la planque!
+[CV_157]
+ROW: 137 MODEL: plr11 (Bad Super Hero)
-[PICK7]
-Lance-roquettes livré à la planque!
+[CV_158]
+ROW: 138 MODEL: plr12 (Dragon)
-[PICK8]
-Sea Sparrow désormais disponible dans la résidence!
+[CV_159]
+ROW: 139 MODEL: PHILC Phil Cassidy
-[PICK9]
-Char désormais disponible dans la caserne de l'armée!
+[CV_160]
+ROW: 140 MODEL: GREASE Grease Zuko
-[PICK10]
-Hunter désormais disponible dans la caserne de l'armée!
+[CV_161]
+ROW: 141 MODEL: GUN_ASS Gun assistant
-[HELP41]
-tu peux aussi les défoncer avec un véhicule
+[CV_162]
+ROW: -- MODEL: JD_shot JD shot dead
-[ICC1_6]
-~g~Utilise le Mr. Whopee pour distribuer des produits Cherry Poppers dans Vice City.
+[CV_163]
+ROW: -- MODEL: BODYBAG bodybag
-[ICC1_12]
-PROPRIETE ACQUISE!
+[CV_164]
+ROW: 142 MODEL: SAL_CON Sal Convict
-[CLOTH1]
-Tenue de soirée livrée chez Rafael sur Ocean Beach.
+[VV_131]
+ID:131 MODEL: Landstalker (TBC)
-[CLOTH2]
-Tenue streetwear livrée aux planques.
+[VV_135]
+ID:135 MODEL: Perenial (TBC)
-[CLOTH3]
-Bleu de travail livré chez Tooled Up dans le centre commercial de North Point.
+[VV_138]
+ID:138 MODEL: Firetruck
-[CLOTH4]
-Tenue pour le Country Club livrée au Leaf Links Golf Club.
+[VV_141]
+ID:141 MODEL: Manana (TBC)
-[CLOTH5]
-Tenue Cubano livrée chez Little Havana Streetwear dans Little Havana.
+[VV_148]
+ID:148 MODEL: FBI Car (TBC)
-[CLOTH6]
-Uniforme de flic livré au poste de police de Washington Beach.
+[VV_152]
+ID:152 MODEL: Kuruma (TBC)
-[CLOTH7]
-Tenue décontractée livrée chez Gash dans le centre commercial de North Point.
+[VV_164]
+ID:164 MODEL: Dodo (TBC)
-[CLOTH8]
-Tenue de M. Vercetti livrée chez Collar & Cuffs sur Ocean Beach.
+[VV_169]
+ID:169 MODELL: Rc Bandit
-[CLOTH9]
-Survêtement livré chez Jocksport dans le centre.
+[VV_170]
+ID:170 MODEL: BellyUp (Triad) (TBC)
-[CLOTH10]
-Tenue de braqueur livrée au Malibu de Vice Point.
+[VV_172]
+ID:172 MODEL: Leone Sentinel (TBC)
-[RBM1_9]
-~g~Va chez le dealer et rapporte du Love Juice pour les Love Fist!
+[VV_174]
+ID: 174 MODEL: Yakuza (TBC)
-[MOB_62A]
-Tommy, c'est Ricardo Diaz, je voulais te remercier de m'avoir sauvé.
+[VV_179]
+ID:179 MODEL: Flatbed (TBC)
-[MOB_62B]
-J'ai demandé à ce con de Cortez. Il a dit que tu feras l'affaire, mon ami. Viens me voir à l'occasion.
+[VV_181]
+ID:181 MODEL: Borgnine Taxi (TBC)
-[MOB_62C]
-C'est d'un mec comme toi dont j'ai besoin. J'ai plus que des têtes de bites,
+[VV_188]
+ID: 188 MODEL: Sindacco Argento (TBC)
-[MOB_62D]
-des têtes de bite partout! Tu vas gagner plein de pognon.
+[VV_189]
+ID: 189 MODEL: Forelli Lexcess (TBC)
-[GOAWAY2]
-~g~Reviens quand tu auras terminé les missions Bikers.
+[VV_192]
+ID:192 MODEL: Speeder (TBC)
-[COL2_9]
-Imbécile de Ricain! Ils vous ont suivi jusqu'ici!
+[BV_H1]
+Press CIRCLE to swap building model.
-[LOADCOL]
-Chargement...
+[BV_0A]
+ROW: 2 - Portland. Safehouse Exterior. Press CIRCLE to swap.
-[STFT_17]
-Meilleur temps sur Terrain de jeu PCJ
+[BV_0B]
+ROW:24 - Portland. Safehouse Interior. Press CIRCLE to swap.
-[STFT_18]
-Meilleur temps sur 'Sélection par la boue'
+[BV_1]
+ROW: 3 - Portland. Ferry Terminal.
-[STFT_19]
-Meilleur temps sur Piste d'essai
+[BV_2A]
+ROW: 4 - Portland. Callahan Bridge 1. Press CIRCLE to swap.
-[NEW_REC]
-Nouveau record! ~1~ minutes et ~1~ secondes.
+[BV_2B]
+ROW: 4 - Portland. Callahan Bridge 2. Press CIRCLE to swap.
-[BMX_HOW]
-~g~Fais deux tours de circuit, ~y~en passant par ~g~les ~y~POINTS DE PASSAGE~g~!
+[BV_3]
+ROW: 5 - Portland. Les Cargo Freighter.
-[BMXREW1]
-~g~Chaque fois que tu inscris un nouveau record pour les deux tours,
+[BV_4A]
+ROW: 6 - Portland. Doll's House Brothel 1. Press CIRCLE to swap.
-[BMXREW2]
-~g~une meilleure ~y~RECOMPENSE ~g~t'est offerte!
+[BV_4B]
+ROW: 6 - Portland. Doll's House Brothel 2. Press CIRCLE to swap.
-[BMXRAIN]
-~g~On dirait qu'il pleut...
+[BV_5]
+ROW: 7 - Portland. Tower Block.
-[ITBEG]
-AU DEBUT...
+[BV_6]
+ROW: 8 - Portland. Eddie's Garage.
-[NBMNBUY]
-El Swanko Casa acheté : $ ~1~
+[BV_7]
+ROW: 9 - Portland. Bowler's Fist Pub.
-[LNKVBUY]
-Appartement de Links View acheté : $ ~1~
+[BV_8]
+ROW:10 - Portland. Hepburn Heights.
-[HYCOBUY]
-Hyman Condo acheté : $ ~1~
+[BV_9]
+ROW:11 - Portland. Short Stay Hotel.
-[BUYGARS]
-~g~Tu peux également stocker des véhicules dans ces garages.
+[BV_10]
+ROW:12 - Portland. Car Dealership.
-[OCHEBUY]
-Appartement d'Ocean Heights acheté : $ ~1~
+[BV_11]
+ROW:13 - Portland. Bus Graveyard.
-[WASHBUY]
-1102 Washington Street acheté : $ ~1~
+[BV_12A]
+ROW:14 - Portland. Drugs Warehouse 1 (awaiting approval). Press CIRCLE to swap.
-[VCPTBUY]
-3321 Vice Point acheté : $ ~1~
+[BV_12B]
+ROW:14 - Portland. Drugs Warehouse 2 (awaiting approval). Press CIRCLE to swap.
-[SKUMBUY]
-Skumole Terrace achetée : $~1~
+[BV_13]
+ROW:15 - Portland. Ma Cipriani's Restaurant.
-[HELP6_C]
-Appuie sur la ~h~~k~~VEHICLE_HANDBRAKE~~w~ pour actionner le frein à main.
+[BV_14]
+ROW:17 - Portland. Basketball Court, Callahan.
-[HELP2_A]
-Appuie sur la ~h~~k~~PED_SPRINT~~w~ lorsque tu cours pour ~h~sprinter.
+[BV_15]
+ROW:18 - Portland. Bike Shop.
-[HELP4_A]
-Appuie sur la ~h~~k~~VEHICLE_ACCELERATE~~w~ pour accélérer.
+[BV_16]
+ROW:19 - Portland. Building near Basketball Court.
-[HELP5_A]
-Appuie sur la ~h~~k~~VEHICLE_BRAKE~~w~ pour freiner ou faire marche arrière si le véhicule est à l'arrêt.
+[BV_17A]
+ROW:20 - Portland. Luigi's Nightclub 1.
-[HELP8_A]
-Appuie sur la ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ pour faire un zoom avant avec le fusil et sur la ~x~touche /~w~ pour faire un zoom arrière.
+[BV_17B]
+ROW:20 - Portland. Luigi's Nightclub 2.
-[PBOAT_1] { reVC update }
-Appuie sur la~h~ ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer avec les canons du bateau.
+[BV_17C]
+ROW:20 - Portland. Luigi's Nightclub 3.
-[SEG3_4] { reVC update }
-~g~Tu peux ramasser des bombes en pilotant ton avion radiocommandé à côté. Appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~ ~g~touche.
+[BV_18]
+ROW:21 - Portland. Casa's Gourmet Deli.
-[RCR1_3] { reVC update }
-~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~g~ pour faire exploser ta voiture radiocommandée.
+[BV_19]
+ROW:22 - Portland. Rusty Ship.
-[HELP32] { reVC update }
-Appuie ensuite sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer.
+[BV_20]
+ROW:23 - Portland. Door for Shopfront.
-[HELP33] { reVC update }
-Appuie ensuite sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer.
+[BV_21]
+ROW:25 - Staunton. Casino.
-[TTUTOR]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Taxi.
+[BV_22]
+ROW:26 - Staunton. Phil Cassidy's Store.
-[TTUTOR2]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Taxi.
+[BV_23]
+ROW:27 - Staunton. Zip store.
-[FTUTOR]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Camion de pompiers.
+[BV_24]
+ROW:28 - Staunton. Container Park.
-[FTUTOR2]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Camion de pompiers.
+[BV_25]
+ROW:29 - Staunton. Ferry Terminal.
-[CTUTOR]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Auto-défense.
+[BV_26A]
+ROW:30 - Staunton. Fort Staunton 1 NORTH.
-[CTUTOR2]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Auto-défense.
+[BV_26B]
+ROW:30 - Staunton. Fort Staunton 2 NORTH.
-[HELP8_B]
-Appuie sur la~h~ ~k~~PED_SNIPER_ZOOM_IN~ ~w~pour faire un ~h~zoom avant~w~ avec le fusil et sur la ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ pour faire un ~h~zoom arrière~w~.
+[BV_27A]
+ROW:30 - Staunton. Fort Staunton 1 SOUTH.
-[ATUTOR3]
-Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Ambulance.
+[BV_27B]
+ROW:30 - Staunton. Fort Staunton 2 SOUTH.
-[GUN_H1]
-~w~Appuie sur la~h~ ~k~~PED_SPRINT~~w~ pour acheter. ~w~Appuie sur la~h~ ~k~~VEHICLE_ENTER_EXIT~~w~ pour quitter.
+[BV_28]
+ROW:31 - Ferry - Not Visible At Present.
-[PU_CF3] { reVC update }
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour remplacer l'arme actuelle dans cet emplacement.
+[BV_29A]
+ROW:32 - Staunton. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[PU_CF4] { reVC update }
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour remplacer l'arme actuelle dans cet emplacement.
+[BV_29B]
+ROW:32 - Staunton. Safehouse Interior. Press CIRCLE to swap.
-[HELP9_B]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour ~h~tirer~w~ avec le fusil à lunette.
+[BV_30]
+ROW:33 - Staunton. Steps Added To Building.
-[HELP37]
-Si tu ne veux pas monter dans un véhicule quand tu braques le conducteur, appuie sur la ~h~~k~~PED_SPRINT~.
+[BV_31]
+ROW:34 - Portland. Outbuilding.
-[HELP6_A]
-Appuie sur la ~h~~k~~VEHICLE_HANDBRAKE~ ~w~ pour actionner le frein à main.
+[BV_32A]
+ROW:34 - Shoreside. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[HELP6_D]
-Appuie sur la ~h~~k~~VEHICLE_HANDBRAKE~ ~w~ pour actionner le frein à main.
+[BV_32B]
+ROW:34 - Shoreside. Safehouse Interior. Press CIRCLE to swap.
-[HELP26]
-Appuie sur la ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~ pour monter ou sortir d'un véhicule.
+[BV_33]
+Not in Doc - Staunton - Warehouse Interior (not internally approved).
-[HELP27]
-Appuie sur ~h~~k~~VEHICLE_TURRETUP~~w~ ou ~h~~k~~VEHICLE_TURRETDOWN~~w~ pour déplacer ton poids sur une moto.
+[BV_34A]
+Not in Doc - Staunton - Church Exterior. Press CIRCLE to swap.
-[HELP28]
-Appuie sur ~h~~k~~VEHICLE_TURRETUP~~w~ ou ~h~~k~~VEHICLE_TURRETDOWN~~w~ pour déplacer ton poids sur une moto.
+[BV_34B]
+Not in Doc - Staunton - Church Interior for scripted cutscene. Press CIRCLE to swap.
-[HELP35]
-Appuie sur ~h~~k~~GO_LEFT~~w~ ou ~h~~k~~GO_RIGHT~~w~ pour diriger le véhicule.
+[NEDS2]
+The Passion Of The Heist
-[HELP36]
-Appuie sur ~h~~k~~GO_LEFT~~w~ ou ~h~~k~~GO_RIGHT~~w~ pour diriger le véhicule.
+[NEDS3]
+Karmageddon
-[HELP42]
-Suis le ~q~point rose~w~ pour trouver l'hôtel.
+[NEDS4]
+False Idols
-[HELP19]
-Marche sur le ~q~marqueur rose~w~ pour continuer.
+[DONS1]
+The Morgue Party Candidate
-[HELP1]
-Arrête-toi au centre du ~q~marqueur rose.
+[GAR_WIL]
+Conduis la voiture dans le garage.
-[HELP12]
-Marche au centre du ~q~marqueur rose~w~ pour lancer une mission.
+[DONS2]
+Steering The Vote
-[SEG3_6]
-~g~Pour toucher ta cible, tu dois larguer la bombe sur la zone indiquée par le ~q~marqueur rose~w~. Tu peux larguer les bombes dans n'importe quel ordre.
+[DONS3]
+Cam-Pain
-[S_PROMP]
-Lorsque tu n'es pas en mission, tu peux sauvegarder la partie en ramassant la ~h~cassette.
+[DONS4]
+Friggin' The Riggin'
-[HELP16]
-Franchis la porte d'entrée de l'hôtel ~h~Ocean View~w~ pour y pénétrer.
+[DONS5]
+Love & Bullets
-[HELP43]
-~g~Rends-toi à l'hôtel ~h~Ocean View~g~ sur Ocean Drive.
+[DONS6]
+Counterfeit Count
-[HELI_F1]
-~r~Mission Point de passage hélico annulée!
+[DONS7]
+Love On The Rocks
-[AMMUHLP]
-Si tu as besoin d'armes, va chez ~h~Ammu-Nation~w~. Suis le ~h~point pistolet~w~ sur le radar.
+[DONS7AA]
+Toni, il faut que tu m'aides !
-[HELI_1]
-Point de passage hélico du Centre
+[DONS7AB]
+O'Donovan a des preuves qui me lient à Salvatore ! On est grillé !
-[HELI_2]
-Point de passage hélico d'Ocean Beach
+[DONS7AC]
+Du calme... des preuves disparaissent tous les jours.
-[HELI_3]
-Point de passage hélico de Vice Point
+[DONS7AD]
+Sans parler des juges, des témoins et des jurés...
-[HELI_4]
-Point de passage hélico de Little Haiti
+[DONS7AE]
+J'espérais que tu verrais ça comme ça.
-[FST_MFR]
-Station de radio préférée
+[DONS7AF]
+Un de mes gars a pris le mec qui a la preuve en filature.
-[FST_LFR]
-Station de radio la moins écoutée
+[DONS7AG]
+Il te retrouvera sous le pont autoroutier à Newport.
-[FEI_HOL]
-Maintenir
+[SALS1]
+A Walk In The Park
-[FEI_ZOO]
-Zoom
+[SALS2]
+Making Toni
-[FEI_BTR]
-> < -
+[SALS3]
+Caught In The Act
-[FEI_NA]
-Aucun
+[SALS4]
+Search And Rescue
-[MESA]
-Grande table
+[SALS5]
+Taking The Peace
-[STRP_NO]
-Tu ne peux pas acheter la boîte de striptease maintenant. Reviens plus tard.
+[SALS6]
+Shoot The Messenger
-[CHSE]
-POURSUITE
+[RAYS1]
+Sayonara Sindaccos
-[NBMN_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter El Swanko Casa pour $~1~.
+[RAYS2]
+The Whole 9 Yardies
-[NBMN_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter El Swanko Casa pour $~1~.
+[RAYS3]
+Crazy '69'
-[NBMN_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter El Swanko Casa pour $~1~.
+[RAYS4]
+Night Of The Livid Dreads
-[LNKV_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'appartement de Links View pour $~1~.
+[RAYS5]
+Munitions Dump
-[LNKV_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'appartement de Links View pour $~1~.
+[MC_S07]
+7. Cuttest - none
-[LNKV_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'appartement de Links View pour $~1~.
+[NEDS1]
+L.C. Confidential
-[HYCO_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter Hyman Condo pour $~1~.
+[WILGAR2]
+Descends de la voiture et va dehors.
-[HYCO_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter Hyman Condo pour $~1~.
+{=================================== MISSION TABLE SAL1 ===================================}
-[HYCO_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter Hyman Condo pour $~1~.
+[SAL1_M1:SAL1]
+~w~Salvatore veut causer.
-[OCHE_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'appartement d'Ocean Heights pour $~1~.
+[SAL1_M2:SAL1]
+~w~Je joue pas le jeu de Salvatore.
-[OCHE_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'appartement d'Ocean Heights pour $~1~.
+[SAL1_M3:SAL1]
+~w~Merci de la part des grévistes, petit... A bientôt...
-[OCHE_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'appartement d'Ocean Heights pour $~1~.
+[SAL1_M5:SAL1]
+~w~Hé !
-[WASH_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le 1102 Washington Street pour $~1~.
+[SAL1_D1:SAL1]
+~w~Hé ! Briseur de grève !
-[WASH_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le 1102 Washington Street pour $~1~.
+[SAL1_D2:SAL1]
+~w~Chopez-le !
-[WASH_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le 1102 Washington Street pour $~1~.
+[SAL1_D3:SAL1]
+~w~Le voilà !
-[VCPT_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le 3321 Vice Point pour $~1~.
+[SAL1_D4:SAL1]
+~w~Il est là-bas !
-[VCPT_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le 3321 Vice Point pour $~1~.
+[SAL1_E1:SAL1]
+~w~Echappe-toi des docks !
-[VCPT_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le 3321 Vice Point pour $~1~.
+[SAL1_A1:SAL1]
+~w~Va voir Jane Hopper, la chef du syndicat, à ~y~Portland Docks.
-[SKUM_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour acheter la Skumole Terrace pour $~1~.
+[THEO_01:SAL1]
+Hé, boss, ça va ?
-[SKUM_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour acheter la Skumole Terrace pour $~1~.
+[THEO_02:SAL1]
+A ton avis ?
-[SKUM_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour acheter la Skumole Terrace pour $~1~.
+[THEO_03:SAL1]
+Non.
-[PRNT_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'imprimerie pour $~1~.
+[THEO_04:SAL1]
+Alors quoi ? T'es vraiment trop con...
-[PRNT_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'imprimerie pour $~1~.
+[THEO_05:SAL1]
+Si ça se voit, pourquoi tu demandes ?
-[PRNT_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'imprimerie pour $~1~.
+[THEO_06:SAL1]
+J'arrive pas à croire que j'suis cerné par des cons !
-[CAR_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter la concession automobile pour $~1~.
+[THEO_07:SAL1]
+Désolé.
-[CAR_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter la concession automobile pour $~1~.
+[THEO_08:SAL1]
+Non, Toni, c'est moi... T'es un des mecs en qui j'ai le plus confiance.
-[CAR_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter la concession automobile pour $~1~.
+[THEO_09:SAL1]
+Après ce que t'as fait, t'es comme un fils pour moi, même plus que mon fils.
-[PORN_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le studio de cinéma pour $~1~.
+[THEO_10:SAL1]
+Plus que tous mes fils...
-[PORN_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le studio de cinéma pour $~1~.
+[THEO_11:SAL1]
+Ta mère a de la chance...
-[PORN_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le studio de cinéma pour $~1~.
+[THEO_12:SAL1]
+C'est c'qu'on dit.
-[ICE_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'usine de crème glacée pour $~1~.
+[THEO_13:SAL1]
+Anthony, c'est fini pour les mecs comme nous.
-[ICE_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'usine de crème glacée pour $~1~.
+[THEO_14:SAL1]
+On sera bientôt bon pour la casse.
-[ICE_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter l'usine de crème glacée pour $~1~.
+[THEO_15:SAL1]
+Ecoute, même dans ma propre famille, j'me sens comme Jésus cerné par 12 Judas.
-[TAXI_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter la compagnie de taxis pour $~1~.
+[THEO_16:SAL1]
+Non mais, tu te rends compte :
-[TAXI_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter la compagnie de taxis pour $~1~.
+[THEO_17:SAL1]
+J'ai cette syndicaliste, cette sale pute, qui doit me rendre un service,
-[TAXI_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter la compagnie de taxis pour $~1~.
+[THEO_18:SAL1]
+et elle m'demande du fric ?
-[BANK_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le Malibu pour $~1~.
+[THEO_19:SAL1]
+Tout ce que j'voulais, c'était un accès de 24 heures aux docks pendant la grève,
-[BANK_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le Malibu pour $~1~.
+[THEO_20:SAL1]
+une grève que j'ai aidé à organiser pour que mes gars déchargent de la came peinards !
-[BANK_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le Malibu pour $~1~.
+[THEO_21:SAL1]
+Et voilà le résultat !
-[BOAT_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le chantier naval pour $~1~.
+[THEO_22:SAL1]
+J'veux dire, c'est des gens pour qui j'me suis battu,
-[BOAT_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le chantier naval pour $~1~.
+[THEO_23:SAL1]
+des gens pour qui j'ai tué, des gens honnêtes.
-[BOAT_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le chantier naval pour $~1~.
+[THEO_26:SAL1]
+C'est une honte, c'est fini pour les hommes d'honneur comme toi et moi !
-[STRP_L]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le Pole Position Club pour $~1~.
+[THEO_27:SAL1]
+Ecoute, Toni, j'ai besoin que tu lui apportes quelque chose.
-[STRP_T]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le Pole Position Club pour $~1~.
+[THEO_28:SAL1]
+Tu vas accepter qu'une nana te fasse chier ?
-[STRP_C]
-Appuie sur la ~h~~k~~PED_ANSWER_PHONE~ ~w~pour acheter le Pole Position Club pour $~1~.
+[THEO_29:SAL1]
+Pour l'instant, j'ai pas trop le choix...
-[STOCK]
-~r~stock écoulé
+[THEO_30:SAL1]
+Bon, va la voir, file-lui la thune et dis-lui que j'voudrais lui parler.
-[HELP14]
-Pour trouver le cabinet d'avocats, suis le ~h~point L~w~ sur le radar.
+[THEO_31:SAL1]
+Allez.
-[BOAT_AS]
-~g~Le chantier naval génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[THEO_24:SAL1]
+- Et c'est comme ça qu'ils me remercient ? ~n~ - Tous des salauds.
-[BOAT_A2]
-CHANTIER NAVAL OK
+{=================================== MISSION TABLE SAL2 ===================================}
-[BOAT_N]
-Checkpoint Charlie
+[SAL2_N:SAL2]
+Filles
-[BOAT_P]
-~g~Récupère les paquets avant la fin du temps imparti.
+[SAL2_A0:SAL2]
+~w~C'est un de tes nouveaux molosses, Sal ?
-[FEI_R1B]
-Touches R1\R2 -
+[SAL2_A1:SAL2]
+~w~M'sieur Leone ?
-[HELP9_A]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~ ~w~pour tirer avec le fusil à lunette.
+[SAL2_A2:SAL2]
+~w~Toni ! Come sta ?
-[HELP21]
-Appuie sur la touche ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~pour monter dans un véhicule ou en sortir.
+[SAL2_A3:SAL2]
+~w~Content de te voir, je voudrais que tu fasses quelque chose pour moi...
-[CREAM]
-Distribution
+[SAL2_A4:SAL2]
+~w~Si je peux pas convaincre cette salope de dirigeante syndicaliste de marcher avec moi, j'peux sûrement convaincre ses gars. Capici ?
-[UMBERTO]
-Café Robina
+[SAL2_A:SAL2]
+~w~Rassemble six ~b~putes~w~ et conduis-les au piquet de grève à Portland Docks.
-[PU_CF1]
-Appuie sur la touche ~h~~k~~PED_ANSWER_PHONE~ ~w~pour ramasser cette arme. Elle remplacera toute autre arme du même type que tu possèdes.
+[SAL2_B0:SAL2]
+~w~Hé, chéri, je fais pas les plans à trois quand y a que 2 places.
-[FED_RDM]
-CARTE ET POINTS
+[SAL2_B1:SAL2]
+~w~On en reparlera quand t'auras plus de place ! Je voyage pas dans le coffre, chéri !
-[FEC_ILU]
-Vue inversée à la 1ere personne :
+[SAL2_D0:SAL2]
+~w~T'es tout seul, mon mignon ?
-[NITRO]
-Tous les taxis disposent d'un saut turbo! Appuie simplement sur la touche klaxonner.
+[SAL2_D1:SAL2]
+~w~Hé, beau gosse, tu veux pas t'amuser un peu ?
-[RATNG53]
-Faux cul
+[SAL2_D2:SAL2]
+~w~Allez, chéri... On va s'éclater ensemble !
-[RATNG54]
-Faiseur d'emmerdes
+[SAL2_D3:SAL2]
+~w~Alors, c'est où la fête, chéri ?
-[RATNG55]
-Malhonnête
+[SAL2_D4:SAL2]
+~w~Salut, mon chou, tu veux prendre du bon temps ?
-[RATNG56]
-Tricheur
+[SAL2_D5:SAL2]
+~w~Hé, beau gosse, t'as besoin de rien ?
-[RATNG57]
-Mythomane
+[SAL2_F0:SAL2]
+~w~Hé, j'viens aussi !
-[STHC_04]
-Meilleur score au beach ball de Keepie-Uppy
+[SAL2_F1:SAL2]
+~w~Alors, c'est rien que toi et moi, hein !?
-[STHC_05]
-Meilleur résultat au Hotring
+[SAL2_F2:SAL2]
+~w~Bon, on y va ou quoi ?
-[STFT_13]
-Meilleur tps point de passage hélico du centre
+[SAL2_F3:SAL2]
+~w~OK, où est la fête ?
-[STFT_14]
-Meilleur tps point de passage hélico d'Ocean Beach
+[SAL2_F4:SAL2]
+~w~Oh allez, sois pas comme ça...
-[STFT_15]
-Meilleur tps point de passage hélico de Vice Point
+[SAL2_F5:SAL2]
+~w~J'veux juste m'amuser avec toi !
-[STFT_16]
-Meilleur tps point de passage hélico de Little Haiti
+[SAL2_G0:SAL2]
+~w~Conduis-la au ~y~piquet de grève !
-[STFT_21]
-Meilleur temps au Hotring
+[SAL2_G1:SAL2]
+~w~Conduis les filles au ~y~piquet de grève !
-[STFT_22]
-Meilleur temps au tour au Hotring
+[SAL2_G2:SAL2]
+~w~Occupe-toi du ~r~client !
-[STFT_20]
-Meilleur temps au 'Cone Crazy'
+[SAL2_G3:SAL2]
+~w~Occupe-toi des ~r~clients !
-[HELP44]
-Arrête-toi sur le ~q~marqueur rose.
+[SAL2_G4:SAL2]
+~w~Ramasse d'autres ~b~filles !
-[HELP45]
-Appuie sur la ~h~~k~~PED_DUCK~~w~ pour t'accroupir. Ceci augmente la précision des flingues que tu portes.
+[SAL2_H:SAL2]
+~w~Hé, c'est où la fête, mon chou ?
-[RCR1_5]
-Course de Bandit RC
+[SAL2_P:SAL2]
+~w~Amusez-vous, les gars ! Avec les compliments de Salvatore Leone !
-[RCPL1_7]
-Course de Baron RC
+[SAL2_I0:SAL2]
+~w~Trouve-toi une fille, connard ! Celle-là est à moi !
-[RCH1_11]
-Course de Raider RC
+[SAL2_I1:SAL2]
+~w~Hé, tu veux quoi, toi ? Sale voyeur !
-[FEA_CTD]
-Attention! Un équipement matériel compatible DTS est requis pour cette fonction. Continuer?
+[SAL2_I3:SAL2]
+~w~Hé, c'est qui ce mec ? Faut le choper !
-[FEM_STE]
-STEREO
+[SAL2_I5:SAL2]
+~w~Hé, mon pote, attends ton tour, on était là avant !
-[FEM_UDY]
-DTS
+[SAL2_I7:SAL2]
+~w~T'es le meilleur, arrête pas... Oh oui, encore !
-[GREET]
-Bien le bonjour de...
+[SAL2_I9:SAL2]
+~w~Alors, au boulot...
-[LANCE_1]
-Hé, mec, conduis un peu mieux!
+[SAL2_K0:SAL2]
+~w~Faut pas faire chier Toni Cipriani !
-[LANCE_2]
-Hé, fais gaffe à ce que tu fais!
+[SAL2_K1:SAL2]
+~w~OK ! En route !
-[LANCE_3]
-Hé, tu vas où, là?
+[SAL2_K2:SAL2]
+~w~Allez, ma poule, amène ton cul !
-[LANCE_4]
-On fait quoi maintenant?
+[SAL2_C0:SAL2]
+~w~Hé, reviens, chéri, je mords pas !
-[LAW4_15]
-Plus de fric!
+[SAL2_C1:SAL2]
+~w~Hé, chéri, où c'est que tu vas ?
-[MERC_5]
-Belle voiture, M. Vercetti.
+[SAL2_L0:SAL2]
+~w~Je vais pas attendre toute la journée, connard !
-[MERC_26]
-PLUS VITE, PLUS VITE, PLUS VITE!
+[SAL2_L1:SAL2]
+~w~Chéri, le compteur tourne !
-[MERC_27]
-Attention, Tommy, je me suis fait refaire le nez le mois dernier.
+[SAL2_X0:SAL2]
+~r~Temps écoulé !
-[MERC_28]
-Tommy, conduis prudemment!
+[SAL2_X1:SAL2]
+~r~T'as tué trop de putes !
-[MERC_29]
-Tommy, va moins vite!
+[SAL2_X2:SAL2]
+~r~T'as attaqué les dockers. Ils te feront plus confiance !
-[MERC_30]
-Tommy, tu veux bien tuer quelqu'un d'autre que moi?
+[SAL2_X3:SAL2]
+~r~T'as attaqué les filles des dockers. Ils te feront plus confiance !
-[MERC_31]
-Tommy, chéri, ne me tue pas!
+[SAL2_G5:SAL2]
+~w~On dirait que t'as un admirateur.
-[MERC_32]
-Tommy, ça me très plaisir que t'aies volé cette caisse!
+[SAL2_I8:SAL2]
+~w~Chéri, tu ne veux pas finir en taule, si ?
-[MERC_40]
-J'ai vraiment passé un bon moment.
+[SAL2_I6:SAL2]
+~w~Oh oui ! Oui ! ...
-[MERC_43]
-Adios, mon chou.
+[SAL2_M:SAL2]
+~w~Essaie de ne pas les tuer ! Trouve une autre ~b~fille.
-[MERC_44]
-Continue la muscu, d'accord?
+[SAL2_W1:SAL2]
+~w~Tu as jusqu'à 0~1~:~1~ avant que les grévistes ne changent d'équipe !
-[MERC_45]
-Ciao, mon beau.
+[SAL2_W2:SAL2]
+~w~Tu as jusqu'à ~1~:~1~ avant que les grévistes ne changent d'équipe !
-[COL5_17]
-Oh mon dieu, ils ont un hélicoptère!
+[SAL2_G6:SAL2]
+~w~Arrête-toi sur la ~y~marque jaune~w~ pour déposer les filles.
-[COL5_18]
-Abattez l'hélico!
+[SAL2_G7:SAL2]
+~w~Dérange le client pour faire sortir la ~b~fille~w~ de la voiture.
-[COL5_19]
-Tommy, débarrasse-nous de cet hélico!
+[SAL2_B:SAL2]
+~w~Tu peux plus faire monter de filles dans ta caisse.
-[COL5_20]
-Il revient! Détruisez cet hélico!
+{=================================== MISSION TABLE SAL3 ===================================}
-[COL5_21]
-Visez la taille de cet hélico!
+[SAL3_A0:SAL3]
+~w~Toni ! Comment ça va, fiston ?
-[COL5_22]
-Le revoilà!
+[SAL3_A1:SAL3]
+~w~T'as l'air un peu maigre. Ta maman te nourrit suffisamment ?
-[FEA_DSM]
-Attention! Cette sauvegarde est paramétrée pour un son DTS. Du matériel compatible DTS doit être connecté. Choisir entre une sortie audio STEREO ou DTS.
+[SAL3_A2:SAL3]
+~w~Tout va bien, m'sieur Leone.
-[STFT_23]
-Meilleur temps à Checkpoint Charlie
+[SAL3_A3:SAL3]
+~w~Ecoute, ces syndicalistes commencent à me les briser sévère.
-[HELP50]
-Appuie sur la touche ~h~~k~~PED_ANSWER_PHONE~~w~ pour placer la caméra derrière toi.
+[SAL3_A5:SAL3]
+~w~... mais faudrait qu'on remette les idées en place à d'autres... moins 'réceptifs'...
-[HELP51]
-Appuie sur la touche ~h~~k~~PED_ANSWER_PHONE~~w~ pour placer la caméra derrière toi.
+[SAL3_B0:SAL3]
+~w~Fous les jetons aux ~r~chefs syndicalistes~w~. Assure-toi qu'ils ont compris !
-[HELP52]
-Appuie sur la touche ~h~~k~~PED_ANSWER_PHONE~~w~ pour placer la caméra derrière toi.
+[SAL3_B3:SAL3]
+~w~Maintenant, ils devraient faire exactement ce qu'on leur dira.
-[HELP53]
-Appuie sur la touche ~h~~k~~PED_CYCLE_WEAPON_LEFT~~w~ ou sur la touche ~h~~k~~PED_CYCLE_WEAPON_RIGHT~~w~ pour faire défiler tes armes disponibles.
+[SAL3_BA:SAL3]
+~w~T'es taré, mon gars ! Moi, j'veux pas d'emmerdes !
-[HELP46]
-Il existe huit différents types d'armes.
+[SAL3_CA:SAL3]
+~w~Qu'est-ce que vous faites ?! Vous êtes malade ?
-[HELP47]
-Tu peux porter une arme de chaque type à la fois, un type de pistolet, un type de fusil à pompe, etc.
+[SAL3_DA:SAL3]
+~w~Il me restait que deux traites à payer pour cette voiture, enculé !
-[HELP54]
-~w~Prix : $~1~ ~r~L'achat de cette arme remplacera celle que tu possèdes déjà.
+[SAL3_BB:SAL3]
+~w~A partir de maintenant, tu fais ce qu'on te dit !
-[HELP2A2]
-Appuie sur la touche ~h~~k~~PED_SPRINT~~w~ quand tu cours, pour ~h~sprinter.
+[SAL3_CB:SAL3]
+~w~T'occupe pas des affaires de Leone !
-[HLPSN_A]
-Grâce au fusil à lunette, tu peux zoomer de loin sur une cible et la viser avec précision.
+[SAL3_A4:SAL3]
+~w~On dirait que certains d'entre eux commencent à voir les choses à ma façon.
-[HLPSN_B]
-Appuie sur la touche~h~ ~k~~PED_LOCK_TARGET~ ~w~et maintiens-la enfoncée pour ~h~viser~w~ avec le fusil à lunette.
+[SAL3_A6:SAL3]
+~w~Tu vois ce que je veux dire ?
-[HLPSN_C]
-Appuie sur la touche~h~ ~k~~PED_LOCK_TARGET~ ~w~et maintiens-la enfoncée pour ~h~viser~w~ avec le fusil à lunette.
+[SAL3_B1:SAL3]
+Tu peux pas faire passer ton message s'ils sont tous morts. Ne tue plus de ~r~chefs de syndicats !
-[HLPSN_D]
-Appuie sur la touche ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ pour ~h~faire un zoom avant ~w~avec le fusil à lunette et sur la touche~h~ ~k~~PED_SNIPER_ZOOM_OUT~ ~w~pour ~h~faire un zoom arrière~w~.
+[SAL3_B2:SAL3]
+~r~T'es censé leur faire peur, pas les tuer !
-[HLPSN_E]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ ~w~pour ~h~tirer~w~ avec le fusil à lunette.
+[SAL3_B4:SAL3]
+~w~Trouve un autre ~r~chef de syndicat~w~ auquel remonter les bretelles.
-[HLPSN_F]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ ~w~pour ~h~tirer~w~ avec le fusil à lunette.
+{=================================== MISSION TABLE SAL5 ===================================}
-[HLPSN_G]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ ~w~pour ~h~tirer~w~ avec le fusil à lunette.
+[SAL5_D3:SAL5]
+~w~Conduis le ~h~véhicule ~w~dans le garage.
-[PLANE_H]
-Utilise la touche ~h~~k~~VEHICLE_ACCELERATE~~w~ pour accélérer. Gauche et droite pour tourner.
+[SAL5_D4:SAL5]
+~w~Descends du véhicule et sors du ~h~garage.
-[PLANE_4] { reVC update }
-{Utilise la touche ~h~~k~~VEHICLE_ACCELERATE~~w~ pour accélérer. Gauche et droite pour tourner.}
-Utilise le joystick analogique droit pour accélérer, appuie vers le bas sur le joystick analogique gauche pour monter et vers le haut pour descendre. Gauche et droite pour tourner.
+[SAL5_B:SAL5]
+~w~Trouve un véhicule à 4 places et un peu de ~b~renforts.
-[HELP55]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour attaquer le chef.
+[SAL5_C:SAL5]
+~w~T'as besoin d'un véhicule à 4 places.
-[STPR_8]
-Pole Position Club
+[SAL5_C0:SAL5]
+~w~Embarque les ~b~renforts.
-[STPR_9]
-3321 Vice Point
+[SAL5_C1:SAL5]
+~w~T'as besoin d'un véhicule avec plus de sièges pour embarquer des ~b~renforts.
-[STPR_10]
-Appartement de Links View
+[SAL5_C2:SAL5]
+~w~Va à ~y~Portland Docks.
-[STPR_11]
-El Swanko Casa
+[SAL5_AA:SAL5]
+~w~Hé... mec... Ca fait des plombes que je t'attends !
-[STPR_12]
-1102 Washington Street
+[SAL5_AB:SAL5]
+~w~Arrête de gémir, Miguel. T'as le matos ?
-[STPR_13]
-Appartement d'Ocean Heights
+[SAL5_AG:SAL5]
+~w~... T'as notre fric ?
-[STPR_14]
-Skumole Shack
+[SAL5_AH:SAL5]
+~w~Ouais...
-[STPR_15]
-Hyman Condo
+[SAL5_AI:SAL5]
+~w~Hein ?
-[RCCANX]
-~r~Avion RC annulé.
+[SAL5_AJ:SAL5]
+~w~Sale enfoiré !
-[CLT_HL2]
-Lorsque tu ramasses des fringues, une ou deux étoiles d'indice de recherche sont enlevées.
+[SAL5_C8:SAL5]
+~w~Monte dans le ~b~véhicule~w~ avec la drogue et tire-toi en vitesse !
-[CRED009]
-CONCEPTION DES MISSIONS
+[SAL5_C9:SAL5]
+~w~Conduis le véhicule au ~y~box de Salvatore.
-[CRED359]
-LEE JOHNSON
+[SAL5_D1:SAL5]
+~w~Remonte dans le ~b~véhicule !
-[CRED360]
-HENDRIK LESSER
+[SAL5_D2:SAL5]
+~r~La drogue a été détruite !
-[CRED361]
-PASQUALE STACCHIOTTI
+[SAL5_AF:SAL5]
+~w~Hé hé hé ! Je t'aime bien, Toni. T'es aussi couillu qu'un taureau !
-[CRED362]
-ENRIQUE FERNANDEZ
+[SAL5_C3:SAL5]
+~w~Sème les flics !
-[CRED363]
-PAUL BYERS
+[SAL5_D5:SAL5]
+~r~La drogue a été saisie !
-[CRED364]
-MIKE EMENY
+[SAL5_AD:SAL5]
+~w~Hé, j'suis un homme très occupé, Toni ! Le prochain coup, j'trouve un autre acheteur !
-[CRED365]
-ROB DUNKIN
+[SAL5_AE:SAL5]
+~w~Ouais, ben tu trouveras personne qui paye comme nous.
-[CRED366]
-CHARLIE KINLOCH
+[SAL5_D6:SAL5]
+~w~Elimine les ~r~dealers de drogue.
-[CRED367]
-KEVIN HOBSON
+[CONT_01:SAL5]
+Ta gueule, sale pute ingrate !
-[CRED368]
-JIM CREE
+[CONT_06:SAL5]
+Y a plus que comme ça que tu m'touches...
-[MOB_66A]
-Tommy, Tommy, Tommy, pourquoi t'es revenu ici?
+[CONT_07:SAL5]
+Merde, et pourquoi j'voudrais te toucher ?
-[MOB_66B]
-On t'a déjà dit qu'on voulait plus te revoir.
+[CONT_08:SAL5]
+J'aime pas le matos d'occase.
-[MOB_67A]
-Tommy, je crois que tu devrais rester à l'écart, tu saisis?
+[CONT_09:SAL5]
+Tu m'fous la gerbe.
-[MOB_67B]
-Les petits gars Haïtiens t'aiment pas beaucoup.
+[CONT_12:SAL5]
+Oh, arrête ! Tu sais quoi ?
-[MOB_18A]
-Tommy, c'est Paulo. Tu vas bien? Bon, mec, il faut que je te parle.
+[CONT_15:SAL5]
+Salut, Toni...
-[MOB_18B]
-Ah, mon pote, tu croiras jamais l'incroyable petit lot que je viens de lever...
+[CONT_16:SAL5]
+J'veux mon fric, vieux con !
-[MOB_18C]
-Elle se promenait juste en bas dans Little Havana, mon pote.
+[CONT_17:SAL5]
+Dégage de là, pétasse !
-[MOB_18D]
-Elle m'a dit qu'elle s'appelait Mercedes ou un truc comme ça.
+[CONT_18:SAL5]
+Oh, Anthony, t'es un ange de miséricorde.
-[MOB_18E]
-Ah, mon pote, faut que t'ailles voir cette fille!
+[CONT_19:SAL5]
+Ah, les femmes, qu'est-ce qu'on peut se faire chier avec, pas vrai ?
-[MOB_18F]
-Elle ferait bander un eunuque! Elle m'a dit que j'étais le meilleur coup de sa vie et tout et tout!
+[CONT_20:SAL5]
+Heureusement que j'peux avoir confiance en quelqu'un... en toi, Toni !
-[MOB_18G]
-Vas-y, trouve-la. A plus tard!
+[CONT_21:SAL5]
+T'es un mec super important pour moi. J'te l'avais jamais dit ?
-[MOB_72A]
-Tommy, c'est moi, Lance. Ferme-la, Tommy, parce que j'ai pas le temps de discuter!
+[CONT_22:SAL5]
+T'arrives même pas à bander, pauvre connard !
-[MOB_72B]
-J'me tape de ce que t'as à me dire. Pourquoi ça m'intéresserait? T'en as rien à foutre de moi, non?
+[CONT_23:SAL5]
+Pas pour toi, j'trique pas pour les chiottes publiques, salope !
-[MOB_72C]
-Il faut que tu sois plus sympa avec moi. Donne-moi une belle part. Tu vois...
+[CONT_24:SAL5]
+Super important. Ecoute... Toi et moi, maintenant, on est aux commandes.
-[MOB_72D]
-Tommy... Ecoute, mec, je suis désolé. C'est que...
+[CONT_25:SAL5]
+On a viré tous ces cons.
-[MOB_72E]
-Les gens arrêtent pas de me materner, de me traiter comme un gamin.
+[CONT_26:SAL5]
+Qu'est-ce que t'en sais ? Tu préfères traîner avec des mecs !
-[MOB_72F]
-Mon frère pourrait me faire ça, mais pas toi. S'il te plaît.
+[CONT_27:SAL5]
+Et toi, t'arrêtes de faire chier que quand t'as la culotte baissée,
-[MOB_72G]
-Faut que j'y aille.
+[CONT_28:SAL5]
+en train de te faire enfiler !
-[MOB_63A]
-Tommy, c'est Earnest. Earnest Kelly.
+[CONT_29:SAL5]
+Putain... Même les lapins, ils ont pas le feu au cul comme toi !
-[MOB_63B]
-Ca va?
+[CONT_33:SAL5]
+Bon, j'ai un chargement de tu sais quoi qu'arrive...
-[MOB_63C]
-Bien. Il va me falloir une canne pour marcher, mais je devrais revenir rapidement dans les affaires.
+[CONT_34:SAL5]
+Ca va nous propulser au sommet, toi et moi.
-[MOB_63D]
-Bien.
+[CONT_35:SAL5]
+Tout va se passer comme sur des roulettes.
-[MOB_63E]
-J'ai appris au sujet de Lance. Quel enculé, hein?
+[CONT_36:SAL5]
+J'ai juste besoin d'un mec sur qui je peux compter pour gérer tout ça.
-[MOB_63F]
-Ouais.
+[CONT_37:SAL5]
+OK, Toni, à plus tard.
-[MOB_63G]
-Ne jamais faire confiance à un mec qui se trimballe en pyjama. C'est ce que je dis toujours. J'espère bien qu'il en a bavé, ce con.
+[CONT_38:SAL5]
+Et au fait, j'ai jamais rencontré de minette avec une culotte hydraulique !
-[MOB_63H]
-Je crois que oui. Je pensais pas qu'il était comme ça...
+[CONT_39:SAL5]
+C'est pas croyable ! Bordel ! Pourquoi je l'ai épousée !?
-[MOB_63I]
-Tommy, t'as beau être cinglé, t'es vraiment naïf. Il va falloir que je t'apprenne deux ou trois trucs sur la vie, dès que je serai remis sur pied.
+[CONT_40:SAL5]
+J'rêvais d'une fille réglo et j'suis tombé sur une salope !
-[MOB_63J]
-Prends ton temps, Earnest et surtout, prends soin de toi.
+[CONT_41:SAL5]
+J'ai dû être trop con dans une aut' vie...
-[MOB_16A]
-Tommy, c'est Paulo. Que pasa amigo?
+[CONT_42:SAL5]
+J'vois que ça.
-[MOB_16B]
-Qu'est-ce tu m'veux, Paul? J'veux pas de fringues de contrefaçon.
+[CONT_02:SAL5]
+- Encore un mot et ça va chier pour ta gueule. ~n~ - Ouais, c'est ça, gros dur.
-[MOB_16C]
-Très drôle, mon pote, mais tu sais que je fais pas dans la merde. Non, j'appelle juste pour savoir si t'aurais pas un rôle pour moi dans un de tes films.
+[CONT_04:SAL5]
+- Qu'est-ce tu vas me faire ? Me frapper ? ~n~ - Faudrait p'têt...
-[MOB_16D]
-J'ai fait pas mal de X en Angleterre, mec. J'en ai plus que toi dans l'pantalon.
+[CONT_10:SAL5]
+- Quoi ? Moi ? J'te fous la gerbe ? ~n~ - Ouais ! La gerbe !
-[MOB_16E]
-Paul, merci pour la proposition, je vais y réfléchir.
+[CONT_13:SAL5]
+- Papa avait raison quand il disait que t'étais qu'un gros plouc... ~n~ - Ouais, ouais, c'est ça...
-[MOB_16F]
-Sérieux, pense à moi, après tout ce que j'ai fait pour toi.
+[CONT_43:SAL5]
+- Alors, écoute, c'est important... ~n~ - Va te faire foutre, Salvatore Leone,
-[MOB_16G]
-C'est ce que j'essaie d'oublier, justement...
+[CONT_31:SAL5]
+- petite merde de macho rital tout juste bon à cogner sa salope. ~n~ - Me faire foutre ?! J'croyais que c'était ta spécialité ?
-[MOB_17A]
-Tommy Vercetti, comment vas-tu? J'ai entendu tous ces trucs sur toi. Un flambeur en ville maintenant...
+{=================================== MISSION TABLE SAL4 ===================================}
-[MOB_17B]
-Paul, t'es bourré?
+[SAL4_I1:SAL4]
+~w~Cette grève continuera tant que j'aurai pas de garantie de la ville !
-[MOB_17C]
-Non, pauv' con, je suis pas bourré! J'ai juste pris deux ou trois verres et quelques tournées, et ça fait deux jours que j'ai pas fermé l'oeil!
+[SAL4_I2:SAL4]
+~w~Si les Mafiosi croient diriger le syndicat, ils se trompent !
-[MOB_17D]
-De toute façon, me traite pas comme ça. Je suis pas une poire. Qui c'est qui t'a lancé dans cette ville? Hein, qui? Moi!
+[SAL4_I3:SAL4]
+~w~Ils me font pas peur !
-[MOB_17F]
-Ah ouais?
+[SAL4_I4:SAL4]
+~w~J'en ai des plus grosses qu'eux tous réunis !
-[MOB_17G]
-Me traite pas comme ça? Qui c'est qui t'a présenté à des gens? Je t'ai montré tous les trucs, je me suis fait chier pour toi et voilà comment tu m'remercies.
+[SAL4_I5:SAL4]
+~w~T'entends cette merde ?
-[MOB_17H]
-Tu m'ignores. Tu me laisses de côté après tout ce que j'ai fait pour toi! Qui tu crois que je suis? Une merde ou je sais pas quoi?
+[SAL4_I6:SAL4]
+~w~Je devrais mettre un contrat sur cette salope, elle me mène en bateau !
-[MOB_17I]
-Paul, calme-toi. J'ai été occupé, ne sois pas stupide.
+[SAL4_I7:SAL4]
+~w~... mais c'est un jeu qui peut se jouer à deux...
-[MOB_17J]
-Je suis pas stupide, connard! Ils me l'ont dit en maison de redressement! Si tu cherches les emmerdes, mon pote, tu vas les trouver!
+[SAL4_I8:SAL4]
+~w~Toni, tu vas porter un message pour moi !
-[MOB_17K]
-Tommy, s'il te plaît! T'étais mon grand espoir! Te fous pas de moi!
+[SAL4_A2:SAL4]
+~w~Vire le ~r~chauffeur~w~ du tableau.
-[MOB_17L]
-Paul, va roupiller un bon coup, sérieusement.
+[SAL4_A3:SAL4]
+~w~Hé !
-[MOB_73A]
-Tommy, c'est Steve.
+[SAL4_A4:SAL4]
+~w~Monte dans la ~b~limo.
-[MOB_73B]
-Salut, Steve.
+[SAL4_A5:SAL4]
+~w~Ramène la limo à la ~y~station de radio !
-[MOB_73C]
-Salut le génie. T'es merveilleux! Je suis une merveille! Ils nous adorent. On réécrit le livre des records, mon pote!
+[SAL4_A6:SAL4]
+~w~Maintenant, attends Hopper.
-[MOB_73D]
-Je parle de putain de récompenses. Enfin je peux envoyer mon père à l'hospice et lui dire de fermer sa gueule.
+[SAL4_A7:SAL4]
+~w~Gare la limo comme avant. Hopper ne doit rien suspecter.
-[MOB_73E]
-Euh... C'est cool, Steve.
+[SAL4_B1:SAL4]
+~w~Embarcadère d'Harwood ! Et en vitesse !
-[MOB_73F]
-Cool? C'est génial, mec. GENIAL quoi! Il n'a jamais voulu croire en moi, mais regarde ce qu'on a réussi à faire.
+[SAL4_B2:SAL4]
+~w~C'est parti !
-[MOB_73G]
-Je suis le plus grand réalisateur de films de cul faits maison de la planète, mon pote. Je voulais juste te dire que je suis heureux de t'avoir rencontré.
+[SAL4_C1:SAL4]
+~w~Colle la trouille de sa vie à Hopper !
-[MOB_73H]
-Merci, Steve.
+[SAL4_C2:SAL4]
+Trouillomètre
-[MOB_73I]
-Je t'aime, bébé. Et reste comme tu es, d'accord?
+[SAL4S1:SAL4]
+~w~Hé, doucement, on fait pas la course !
-[MOB_73J]
-D'accord. Salut, Steve.
+[SAL4S2:SAL4]
+~w~Dites donc, c'est pas le bon chemin, si ?
-[BOLLOX]
-Appuie sur la touche ~o~R1 ~w~pour larguer une bombe. Appuie sur la touche ~t~" ~w~pour annuler.
+[SAL4S3:SAL4]
+~w~Hé, vous êtes pas mon chauffeur habituel !
-[BRID_OP]
-Avis de tempête terminé : tous les ponts sont maintenant accessibles.
+[SAL4S4:SAL4]
+~w~Merde, vous êtes qui ?!
-[BRID_CL]
-Avis de tempête : tous les ponts sont fermés.
+[SAL4S5:SAL4]
+~w~Ta gueule !
-[LG_38]
-Cible
+[SAL4S6:SAL4]
+~w~A partir de maintenant, tu fais exactement ce que Salvatore Leone te dit !
-[ASSET_C]
-Pole Position, OK
+[SAL4S7:SAL4]
+~w~Capici ?
-[ASSET_D]
-~g~Le club Pole Position va maintenant créer un revenu d'un maximum de $~1~ par jour. Venez retirer votre argent régulièrement.
+[SAL4S8:SAL4]
+~w~Je... Pas question que je cède à ces menaces !
-[ST_WHEE]
-Temps maximum sur roue arrière (secs)
+[SAL4S9:SAL4]
+~w~C'est ce qu'on va voir !
-[ST_STOP]
-Temps maximum sur roue avant (secs)
+[SAL4S10:SAL4]
+~w~Laissez-moi sortir, et tout de suite !
-[ST_2WHE]
-Temps maximum sur deux roues (secs)
+[SAL4S11:SAL4]
+~w~Je vous en prie, vous allez nous tuer !
-[ST_WHED]
-Distance maximum sur roue arrière (m)
+[SAL4S12:SAL4]
+~w~Noooooon !
-[ST_STOD]
-Distance maximum sur roue avant (m)
+[SAL4S13:SAL4]
+~w~Qu'est-ce que j'ai fait pour mériter ça ?
-[ST_2WHD]
-Distance maximum sur deux roues (m)
+[SAL4_F1:SAL4]
+~w~Où est ma limo ?
-[OUTFT11]
-Survêtement
+[SAL4_F2:SAL4]
+~w~Vous êtes pas mon chauffeur ! J'appelle la police !
-[OUTFT12]
-Frankie
+[SAL4_F3:SAL4]
+~r~Trop tard, Hopper t'a démasqué !
-[RELOAD]
-~g~Tu as gagné la possibilité de recharger ton arme rapidement
+[SAL4_F4:SAL4]
+~w~Salvatore peut aller se faire foutre !
-[APACHE]
-Hunter livré à l'héliport d'Ocean Beach
+[SAL4_F5:SAL4]
+~r~La limo est détruite !
-[CRED369]
-JOHN MCCARDLE
+[SAL4_F6:SAL4]
+~r~Hopper est morte !
-[CRED370]
-DAVID MURDOCH
+[SAL4_F7:SAL4]
+~r~Hopper a filé !
-[CRED371]
-CHRIS BROWN
+[SAL4_F8:SAL4]
+~r~L'état de la limo a alerté Hopper.
-[CRED372]
-PAUL GREEN
+[SAL4_F9:SAL4]
+~r~Hopper a eu la trouille.
-[CRED373]
-KYLE MILNE
+[SAL4_P1:SAL4]
+~w~OK ! OK ! J'en ai assez !
-[CUNTY]
-Nouveaux vêtements livrés au Domaine Vercetti
+[SAL4P1A:SAL4]
+~w~Je ferai ce que vous voudrez.
-[GOODBOY]
-$50 pour bonne conduite
+[SAL4_P2:SAL4]
+~w~Conduis Hopper au ~y~piquet de grève de l'embarcadère.
-[NEWCONT]
-Nouveau ~h~point de contact ~w~créé à la marina d'Ocean Beach
+[SAL4_P3:SAL4]
+~w~Et oublie pas notre accord, ma poule !
-[FIRELVL]
-Mission Camion de pompiers niveau ~1~
+[SAL4_H1:SAL4]
+~w~Une bonne dose de vitesse, de collisions et de cascades, et Hopper sera à tes pieds.
-[HELP56]
-Appuie sur la touche ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ pour changer le mode de la caméra.
+[SAL4_F0:SAL4]
+~r~Trop tard ! Hopper a quitté la station de radio !
-[HELP57]
-Appuie sur la touche ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ pour changer le mode de la caméra.
+[SAL4_A:SAL4]
+~w~Atteins la ~y~station de radio~w~ avant que Hopper ne parte, à 0~1~:00.
-[HELP58]
-Tout en visant, appuie sur la touche ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~ ou ~h~~k~~PED_CYCLE_TARGET_RIGHT~~w~ pour faire défiler les cibles.
+[SAL4_A1:SAL4]
+~w~Atteins la ~y~station de radio~w~ avant que Hopper ne parte, à ~1~:00.
-[HELP59]
-Tout en visant, appuie sur la touche ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~ ou ~h~~k~~PED_CYCLE_TARGET_RIGHT~~w~ pour faire défiler les cibles.
+{=================================== MISSION TABLE SAL6 ===================================}
-[HELP60]
-Si tu appuies sur la touche ~h~~k~~PED_SPRINT~ ~w~quand tu essaies de piquer une caisse, tu ne peux pas monter dedans.
+[SAL6_A0:SAL6]
+~w~Toni, on a des ennuis, de gros ennuis !
-[HELP61]
-Tu as désormais des munitions illimitées et tous tes véhicules sont deux fois plus résistants.
+[SAL6_A1:SAL6]
+~w~Qu'est-ce qui se passe, Sal ?
-[CRED374]
-KEVIN YUN
+[SAL6_A3:SAL6]
+~w~Ils nous mettent une branlée !
-[CRED375]
-ERICK COBBS
+[SAL6_A4:SAL6]
+~w~On termine tout juste une putain de guerre et BAM ! On se retrouve au beau milieu d'une autre !
-[CRED376]
-RANDY BLAKE
+[SAL6_A5:SAL6]
+~w~J'te jure... Juste au moment où les choses s'amélioraient. Putain, j'suis maudit !
-[CRED377]
-BRANDON LIM
+[SAL6_A6:SAL6]
+~w~Hé, vous en faites pas pour ça, boss. J'm'en occupe.
-[CRED378]
-BRANDON FENOL
+[SAL6_AA:SAL6]
+~w~Sal a laissé les armes dont t'auras besoin dans le garage.
-[CRED379]
-MICHAEL MANOLE
+[SAL6_B:SAL6]
+~w~Arrête le massacre des ~r~Diablos~w~ avant que tous les mecs de Leone se fassent tuer !
-[CRED380]
-ALETHEIA SIMONSON
+[SAL6_1:SAL6]
+~w~Seuls ~1~ mecs de Leone sont encore vivants !
-[CRED381]
-JOHN JANSEN
+[SAL6_2:SAL6]
+~w~Un seul Leone est encore en vie !
-[FEC_LB1]
-Regarder
+[SAL6_C1:SAL6]
+~w~On va tous se faire massacrer, Toni !
-[FEC_LB2]
-derrière
+[SAL6_C2:SAL6]
+~w~Je suis pas payé assez cher pour ça, mec !
-[FEC_LB3]
-Regarder derrière
+[SAL6_C3:SAL6]
+~w~T'es fêlé, Toni ! On va tous y passer !
-[FEC_R3]
-(touche R3)
+[SAL6_E1:SAL6]
+~w~Sal ?
-[FEC_PED]
-Commandes à pied
+[SAL6_E2:SAL6]
+~w~Toni ! C'est réglé ? Ca donne quoi ?
-[FEC_VEH]
-Commandes des véhicules
+[SAL6_E3:SAL6]
+~w~C'est pas bon, Sal.
-[FEC_FPR]
-Commandes en vue subjective
+[SAL6_E4:SAL6]
+~w~J'ai sauvé quelques gars, mais on en avait perdu plein avant que j'arrive.
-[FEC_CMM]
-Commandes principales
+[SAL6_E5:SAL6]
+~w~J'crois qu'on va se faire virer de ce territoire.
-[FEC_PWL]
-Aller à gauche
+[SAL6_E6:SAL6]
+~w~Faudra me tuer d'abord ! C'est pas encore joué !
-[FEC_PWR]
-Aller à droite
+[SAL6_E7:SAL6]
+~w~Je peux pas perdre ! Les Leone battent jamais en retraite !
-[FEC_PWF]
-Avancer
+[SAL6_E8:SAL6]
+~w~Tu m'entends, Toni ?
-[FEC_PWT]
-Avancer vers caméra
+[SAL6_E9:SAL6]
+~w~Z'avez raison, Sal.
-[FEC_PLB]
-Vue arrière
+[SAL6_G0:SAL6]
+~r~Tous les hommes de Leone sont morts.
-[FEC_PFR]
-Tirer
+[SAL6_Z1:SAL6]
+Leone
-[FEC_CLE]
-Défilement Gauche des armes
+[SAL6_Z2:SAL6]
+Diablos
-[FEC_CRI]
-Défilement Droite des armes
+[SAL6_C0:SAL6]
+~w~Qu'ils aillent se faire foutre ! On se tire d'ici !
-[FEC_LKT]
-Verrouiller cible
+[SAL6_A2:SAL6]
+~w~Ce foutu monde tourne pas rond ! On a des tas de Diablos sur le dos à Hepburn !
-[FEC_PJP]
-Saut à pied
+{=================================== MISSION TABLE SAL7 ===================================}
-[FEC_PSP]
-Sprint à pied
+[SAL7_01:SAL7]
+~w~Hé, Sal !
-[FEC_PSH]
-Tir à pied
+[SAL7_02:SAL7]
+~w~Toni ! Comment tu trouves cette nouvelle caisse ?
-[FEC_TLF]
-Cible suivante Gauche
+[SAL7_05:SAL7]
+~w~Un vrai bijou, pas vrai ? Toutes les options, du haut de gamme.
-[FEC_TRG]
-Cible suivante Droite
+[SAL7_A6:SAL7]
+~w~... Ah oui, la crise de la quarantaine !
-[FEC_CCM]
-Centrer caméra derrière joueur
+[SAL7_07:SAL7]
+~w~Ferme-la ! Ecoute, Toni...
-[FEC_SZI]
-Fusil à lunette zoom avant
+[SAL7_08:SAL7]
+~w~J'ai un gros tas de fric à récupérer dans mon entrepôt du côté de Callahan Point.
-[FEC_SZO]
-Fusil à lunette zoom arrière
+[SAL7_10:SAL7]
+~w~Je peux faire confiance à personne.
-[FEC_LKL]
-Regarder à gauche en vue subjective
+[SAL7_11:SAL7]
+~w~Bon, vous allez papoter toute la journée ou on y va ?
-[FEC_LRT]
-Regarder à droite en vue subjective
+[SAL7_12:SAL7]
+~w~Bébé, j'me souviens pas t'avoir donné l'autorisation de l'ouvrir !
-[FEC_LUP]
-Regarder en haut en vue subjective
+[SAL7_20:SAL7]
+~w~Allez ! Vite !
-[FEC_LDN]
-Regarder en bas en vue subjective
+[SAL7_21:SAL7]
+~w~OK...
-[FEC_LBH]
-Regarder derrière le véhicule
+[SAL7_22:SAL7]
+~w~Allons-y !
-[FEC_LLF]
-Regarder à gauche du véhicule
+[SAL7_23:SAL7]
+~w~Hé, Toni ! Come sta ?
-[FEC_LRG]
-Regarder à droite du véhicule
+[SAL7_30:SAL7]
+~w~Va à ~y~l'entrepôt.
-[FEC_HRN]
-Klaxon
+[SAL7_40:SAL7]
+~w~Récupère le fric de Salvatore avant qu'il ne parte en fumée !
-[FEC_HBR]
-Frein à main
+[SAL7_50:SAL7]
+~w~Rapporte le fric chez ~y~Salvatore.
-[FEC_ACL]
-Accélérer
+[SAL7_NM:SAL7]
+~w~Retourne là-bas ! T'as pas pris tout le ~g~fric !
-[FEC_BRK]
-Freiner
+[SAL7_E1:SAL7]
+~w~Tuez-le !
-[FEC_TSM]
-Activer/Désactiver sous-missions
+[SAL7_E2:SAL7]
+~w~Crève !
-[FEC_CRD]
-Changer la station de radio
+[SAL7_E3:SAL7]
+~w~Y en a un là !
-[FEC_ENT]
-Entrer/Sortir d'un véhicule
+[SAL7_E4:SAL7]
+~w~Je le vois !
-[FEC_WPN]
-Tirer
+[SAL7_T1:SAL7]
+~w~Dégage !
-[FEC_PAS]
-Pause
+[SAL7_T2:SAL7]
+~w~Tu vas le sentir passer !
-[FEC_FPO]
-Changer d'arme en vue subjective
+[SAL7_T3:SAL7]
+~w~Allez !
-[FEC_SMS]
-Afficher/Masquer curseur
+[SAL7_T4:SAL7]
+~w~Prends ça !
-[FEC_CMS]
-Changer de mode de caméra
+[SAL7_F1:SAL7]
+~r~T'as pas récupéré le fric de Salvatore à temps !
-[FEC_TSS]
-Faire une capture d'écran
+[SAL7_06:SAL7]
+~w~Qu'est-ce que ça sent ?
-[FEC_DBG]
-Menu Debug
+[SAL7_42:SAL7]
+~w~Récupère le ~g~fric~w~ avant qu'il ne parte en fumée !
-[FEC_TGD]
-Alterner manette jeu/debug
+{=================================== MISSION TABLE SAL8 ===================================}
-[FEC_TDO]
-Désactiver caméra debug
+[SAL8_VE:SAL8]
+~r~v1.2
-[FEC_IVH]
-Inverser souris horizontale
+[SAL8_11:SAL8]
+~w~Toni, trouve une caisse et allons-y...
-[FEC_MSL]
-BGS
+[SAL8_12:SAL8]
+~w~Va au terminal des ferrys.
-[FEC_MSM]
-BMS
+[SAL812A:SAL8]
+~w~Mais la grève continue... Y en aura pas beaucoup, des ferrys.
-[FEC_MSR]
-BDS
+[SAL812B:SAL8]
+~w~Toi, tu conduis et moi, je réfléchis.
-[FEC_QUE]
-???
+[SAL8_14:SAL8]
+~w~Bordel de merde ! Ca grouille de flics par ici ! Sors-nous d'ici en vitesse !
-[FEC_TWO]
-Deux touches clavier au maximum
+[SAL8_15:SAL8]
+~w~Où on va ?
-[FEC_UMS]
-Boutons souris uniquement
+[SAL8_16:SAL8]
+~w~Callahan Bridge !
-[FEC_OMS]
-Un bouton souris au maximum
+[SAL816A:SAL8]
+~w~... Mais les travaux sont pas achevés !
-[FEC_UJS]
-Un bouton joystick au maximum
+[SAL816B:SAL8]
+~w~C'est nous qui serons achevés si tu décolles pas ! Fonce !
-[FEC_OJS]
-Un bouton joystick maximum par action
+[SAL816C:SAL8]
+~w~Va à ~y~Callahan Bridge.
-[FEC_PTL]
-Utiliser verrouillage de cible avec commande de tir gauche
+[SAL8_17:SAL8]
+~w~Merde, qu'est-ce que tu fais ?
-[FEC_PTR]
-Utiliser verrouillage de cible avec commande de tir droite
+[SAL8_18:SAL8]
+~w~Toni ! On va avoir besoin d'une caisse !
-[FEC_LBC]
-Utiliser regarder gauche avec regarder droite
+[SAL818A:SAL8]
+~w~J'ai pas du tout l'intention de marcher !
-[FEC_JBO]
-JOY ~1~
+[SAL8_19:SAL8]
+~w~T'as abandonné ~b~Salvatore~w~ ! Retourne le chercher !
-[FEC_WAR]
-Avertissement
+[SAL8_20:SAL8]
+~w~Sors-nous de là !
-[FEC_OKK]
-O.K.
+[SAL8_22:SAL8]
+~w~Toni, t'as réussi ! Je savais que je pouvais te faire confiance !
-[FEC_DLF]
-Erreur lors de suppression
+[SAL822B:SAL8]
+Bon, écoute... Je connais une planque où on pourra se mettre à l'abri un moment.
-[FEC_SVU]
-Erreur lors de la sauvegarde
+[SAL822C:SAL8]
+Allez, en route !
-[FEC_LUN]
-Erreur lors du chargement. Fichier corrompu, veuillez le supprimer.
+[SAL8_25:SAL8]
+~w~Faut que ce tas de merde donne tout ce qu'il a dans le ventre ! A fond, Toni !
-[FEC_PAD]
-Manette
+[SAL825A:SAL8]
+~w~OH, MEEEEERDE !
-[FEC_JOY]
-Joystick
+[SAL8_26:SAL8]
+Vitesse de saut
-[FES_CSA]
-Sélectionnez une apparence dans la liste suivante :
+[SAL8_27:SAL8]
+~w~OK, on y est.
-[FET_HRD]
-PARAMETRES PAR DEFAUT RETABLIS
+[SAL8_28:SAL8]
+~w~Je vais jeter un coup d'oeil dans le coin, voir ce qui se passe...
-[FET_MST]
-DIRECTION CONTROLEE PAR LA SOURIS
+[SAL828A:SAL8]
+~w~Je te retrouve ici plus tard.
-[FEC_STR]
-ETOILE PAV.NUM.
+[SAL8_29:SAL8]
+~r~Sal a été tué !
-[FET_MIG]
-GAUCHE, DROITE, MOLETTE SOURIS POUR REGLER
+[SAL829A:SAL8]
+~w~Les flics t'ont repéré !
-[FET_CIG]
-RETOUR ARRIERE POUR EFFACER - BGS, RETOUR POUR CHANGER
+[SAL831:SAL8]
+~w~La planque de Staunton est disponible !
-[FET_DSN]
-Skin joueur par defaut.bmp
+[SAL833:SAL8]
+~w~Sème les flics !
-[FET_RSO]
-PARAMETRE D'ORIGINE RETABLI
+[SAL823A:SAL8]
+~w~Mais est-ce vraiment le cas ?
-[FET_RSC]
-MATERIEL INDISPONIBLE - PARAMETRE D'ORIGINE RETABLI
+[SAL8_24:SAL8]
+~w~Bien que toutes les lignes de métro et de ferrys soient officiellement rouvertes,
-[FEA_3DH]
-CONFIG. CARTE-SON
+[SAL824A:SAL8]
+~w~des militants continuent à bloquer certaines parties de la ville.
-[FEA_SPK]
-CONFIG. HAUT-PARLEURS
+[SAL824B:SAL8]
+~w~Le pont levant reliant Staunton Island et Shoreside Vale a été fermé.
-[FEM_LOD]
-DISTANCE MODELES
+[SAL824C:SAL8]
+~w~Les grévistes refusent d'accorder le moindre crédit aux promesses de la municipalité concernant l'avenir des ferrys.
-[FEM_VSC]
-SYNCHRO VIDEO
+[SAL824D:SAL8]
+~w~Pour conclure sur une note positive, les travaux du Callahan Bridge sont presque achevés.
-[FEM_FRM]
-RESTRICTION VIDEO
+[SAL824E:SAL8]
+~w~Mais ce travailleur de Liberty City ne pouvait supporter plus de retard.
-[FEM_MM]
-MENU PRINCIPAL
+[SAL8_23:SAL8]
+~w~Le mouvement de grève qui coupait Portland du reste de la ville est désormais terminé.
-[FED_RES]
-RESOLUTION ECRAN
+[SAL812C:SAL8]
+~w~Va jusqu'au ~y~terminal des ferrys.
-[FET_CTL]
-CONFIG. PERIPHERIQUE
+[SAL8WAN:SAL8]
+Les flics veulent VRAIMENT Salvatore ! Si tu repeins le véhicule, ils finiront par retrouver sa trace.
-[FET_OPT]
-OPTIONS
+[SAL8_21:SAL8]
+~w~Va au ~y~pont !
-[FEC_MSH]
-SENSIBILITE SOURIS
+[SAL830:SAL8]
+~w~Va à la ~y~planque.
-[FEC_IVV]
-INVERSER SOURIS VERTIC.
+[SAL822A:SAL8]
+~w~Si t'étais rasé, je pourrais t'embrasser !
-[FET_MTI]
-CONFIG. SOURIS
+[SAL832:SAL8]
+~w~Il te faut une voiture !
-[FEC_FNC]
-F~1~
+[DRIV_01:SAL8]
+Alors ?
-[FEC_IRT]
-INSER
+[DRIV_02:SAL8]
+Alors quoi ?
-[FEC_DLL]
-SUPPR
+[DRIV_03:SAL8]
+Joue pas au con avec moi, petit.
-[FEC_HME]
-ORIG
+[DRIV_06:SAL8]
+Je sais c'que tu racontes sur moi.
-[FEC_END]
-FIN
+[DRIV_07:SAL8]
+Tu m'prends pour un con ? Hein ?
-[FEC_PGU]
-PAGE HAUT
+[DRIV_08:SAL8]
+C'est c'que tu crois ?
-[FEC_PGD]
-PAGE BAS
+[DRIV_09:SAL8]
+Patron, j'ai rien raconté sur vous.
-[FEC_UPA]
-HAUT
+[DRIV_10:SAL8]
+Bordel de merde... Je pige pas ce qui m'arrive...
-[FEC_DWA]
-BAS
+[DRIV_11:SAL8]
+Putain.
-[FEC_LFA]
-GAUCHE
+[DRIV_12:SAL8]
+J'deviens parano, Toni. Complètement parano.
-[FEC_RFA]
-DROITE
+[DRIV_13:SAL8]
+Mais c'est pas parce que j'suis parano qu'ça veut dire que j'délire, capici ?
-[FEC_NUM]
-PAV.NUM
+[DRIV_14:SAL8]
+Y a quelqu'un qui veut ma peau et c'est c'putain d'maire !!
-[FEC_NMN]
-PAV.NUM~1~
+[DRIV_15:SAL8]
+Il essaie de me coller tous les crimes du coin sur le dos !
-[FEC_FWS]
-PAV.NUM /
+[DRIV_16:SAL8]
+Tous ! Alors que j'en ai pas commis la moitié !
-[FEC_PLS]
-PAV.NUM +
+[DRIV_17:SAL8]
+Bon, allons régler ça.
-[FEC_MIN]
-PAV.NUM -
+[DRIV_04:SAL8]
+- Je jouais déjà au con quand ta mère était encore sur le trottoir. ~n~ - C'est quoi le problème au juste ?
-[FEC_DOT]
-PAV.NUM .
+{=================================== MISSION TABLE JDT1 ===================================}
-[FEC_NLK]
-VERR NUM
+[JDT1_CA:JDT1]
+~w~J'suis sûr que les filles me truandent !
-[FEC_ETR]
-ENTR
+[JDT1_CB:JDT1]
+~w~On va aller traîner dans le quartier et voir ce qui se passe !
-[FEC_SLK]
-ARRET DEFIL
+[JDT1_DA:JDT1]
+~w~C'est une de mes filles !
-[FEC_PSB]
-PAUSE
+[JDT1_DB:JDT1]
+~w~Hé, j'reconnais cette fille !
-[FEC_BSP]
-RET. ARR.
+[JDT1_DC:JDT1]
+~w~Une de mes filles !
-[FEC_TAB]
-TAB
+[JDT1_DD:JDT1]
+~w~Cette fille bosse pour nous.
-[FEC_CLK]
-VERR MAJ
+[JDT1_DE:JDT1]
+~w~Cette fille là-bas...
-[FEC_RTN]
-RETOUR
+[JDT1_DF:JDT1]
+~w~Arrête-toi à côté d'elle !
-[FEC_LSF]
-MAJ. G
+[JDT1_DG:JDT1]
+~w~Arrête-toi près d'elle.
-[FEC_RSF]
-MAJ. D
+[JDT1_DH:JDT1]
+~w~On va l'embarquer.
-[FEC_LCT]
-CTRL G
+[JDT1_DI:JDT1]
+~w~Gare-toi à côté d'elle.
-[FEC_RCT]
-CTRL D
+[JDT1_DJ:JDT1]
+~w~Va jusqu'à elle.
-[FEC_LAL]
-ALT G
+[JDT1_MA:JDT1]
+~w~Salut, J.D., j'allais justement t'apporter ça, j'te jure !
-[FEC_RAL]
-ALT D
+[JDT1_MB:JDT1]
+~w~Oh, tu me fais plus confiance, J.D. ?
-[FEC_LWD]
-WIN G
+[JDT1_MC:JDT1]
+~w~Salut, J.D. Mauvaise journée... c'est tout ce que j'ai gagné...
-[FEC_RWD]
-WIN D
+[JDT1_MD:JDT1]
+~w~Tu parles d'un Big Brother ! Le voilà, ton sale fric !
-[FEC_WRC]
-CLIC WIN
+[JDT1_ME:JDT1]
+~w~Hé, J.D. J'ai ton fric ici.
-[FEC_SPC]
-ESP
+[JDT1_MF:JDT1]
+~w~Tu croyais que j'allais garder ce fric pour moi ou quoi ?
-[WIN_TTL]
-Grand Theft Auto VC
+[JDT1_MG:JDT1]
+~w~Hé, tu nous surveilles, J.D. ?
-[WIN_95]
-Grand Theft Auto VC n'est pas compatible WINDOWS 95
+[JDT1_MH:JDT1]
+~w~Tout est là... t'as qu'à compter !
-[WIN_DX]
-Grand Theft Auto VC requiert la version 8.1 de DirectX minimum.
+[JDT1_EA:JDT1]
+~w~Hé, ce mac est en train de soutirer son fric à une de mes filles !
-[FET_EIG]
-IMPOSSIBLE DE PARAMETRER UNE TOUCHE POUR CETTE ACTION
+[JDT1_EB:JDT1]
+~w~Récupère le fric, Toni !
-[FET_DAM]
-MODELAGE ACCOUST. DYNAMIQUE
+[JDT1_EC:JDT1]
+~w~Merde, y fait quoi ce mac ?
-[FEQ_SRE]
-Etes-vous sûr de vouloir quitter ? Votre progression depuis la dernière sauvegarde sera perdue. Continuer ?
+[JDT1_ED:JDT1]
+~w~Il prend mon blé !
-[FEQ_SRW]
-Etes-vous sûr de vouloir quitter la partie ?
+[JDT1_EE:JDT1]
+~w~Chope-le, Toni !
-[FET_QG]
-QUITTER PARTIE
+[JDT1_45:JDT1]
+~w~Récupère le ~g~fric du mac.
-[FEN_STA]
-COMMENCER PARTIE
+[JDT1_46:JDT1]
+~w~Le mac a filé !
-[FET_PAU]
-MENU PAUSE
+[JDT1_FA:JDT1]
+~w~C'est une de mes filles dans cette caisse !
-[REPLAY]
-RALENTI
+[JDT1_FB:JDT1]
+~w~Fais marche arrière en douceur jusqu'à la ~b~caisse~w~, que je jette un coup d'oeil.
-[FET_PS]
-CONFIG. JOUEURS
+[JDT1_FC:JDT1]
+~w~... Tout en douceur, faut pas les déranger !
-[FEC_ANS]
-Action
+[JDT1_FD:JDT1]
+~w~Plus près...
-[CVT_MSG]
-Conversion des textures vers un format optimal pour votre carte graphique
+[JDT1_FE:JDT1]
+~w~Plus près...
-[FEC_SFT]
-MAJ
+[JDT1_FF:JDT1]
+~w~Doucement...
-[FEH_VMP]
-VOIR CARTE
+[JDT1_IA:JDT1]
+~w~Bordel de merde, Toni ! Tu leur as fait peur !
-[FES_DEE]
-Echec de la suppression ! Recommencer.
+[JDT1_GA:JDT1]
+~w~Merde, Toni ! Je vois que dalle !
-[FES_CMP]
-Echec de la sauvegarde ! Recommencer.
+[JDT1_75:JDT1]
+~w~Attends que la ~b~fille~w~ donne le fric à J.D. !
-[FESZ_WR]
-Sauvegarde en cours. Un instant...
+[JDT1_HA:JDT1]
+~w~... Oh... ouais !
-[FELD_WR]
-Chargement en cours. Un instant...
+[JDT1_HB:JDT1]
+~w~Continue, bébé !
-[FEDL_WR]
-Suppression en cours. Un instant...
+[JDT1_HC:JDT1]
+~w~C'est ça, c'est ça...
-[PCRESRT]
-Lancement d'une nouvelle partie. Un instant...
+[JDT1_HD:JDT1]
+~w~... Oh OUAIS !
-[FET_STI]
-Commandes standard
+[JDT1_HE:JDT1]
+~w~Quelle artiste !
-[FET_CTI]
-Commandes classiques
+[JDT1_HF:JDT1]
+~w~Bon, c'est fini ou quoi ?
-[FEH_NA]
-OPTION NON DISPONIBLE
+[JDT1_JA:JDT1]
+~w~Bien joué, Toni !
-[FEH_MPH]
-SOURIS, CURSEURS POUR SE DEPLACER - PAGE HAUT, PAGE BAS, MOLETTE POUR ZOOMER, L - LEGENDE
+[JDT1_JB:JDT1]
+~w~J'crois que les filles de cette équipe me causeront plus d'emmerdes...
-[FEA_MP3]
-LECTEUR MP3
+[JDT1_LA:JDT1]
+~w~T'as tout foiré, Toni !
-[NO_PCCD]
-Insérer le disque de GTA Vice City ou appuyer sur ECHAP pour annuler
+[JDT1_LB:JDT1]
+~w~Je retourne au club !
-[FEH_SSA]
-CURSEURS POUR SE DEPLACER - S POUR SAUVEGARDER LE FICHIER
+[JDT1_ML:JDT1]
+~w~Encore ~1~$ à récupérer !
-[FES_CMI]
-DERNIERE MISSION REUSSIE
+[JDT1O01:JDT1]
+~w~Monte dans la ~b~camionnette de J.D.
-[FET_STS]
-STATS SAUVEGARDEES DANS 'STATS.HTML' + 'STATS.TXT'
+[JDT1O02:JDT1]
+~w~T'as abandonné ~b~J.D.~w~ ! Retourne le chercher !
-[WIN_VDM]
-Grand Theft Auto VC ne dispose pas de suffisamment de mémoire graphique.
+[JDT1O03:JDT1]
+~w~Attends que ~b~J.D.~w~ monte.
-[FEC_ERI]
-Erreur ! Une ou plusieurs actions ne sont pas assignées à une touche ou à un bouton. Vérifier que toutes les actions sont bien assignées.
+[JDT1O04:JDT1]
+~w~Cherche les filles de J.D. dans le Red Light District.
-[FEC_TFU]
-Tourelle + Orienter haut
+[JDT1O05:JDT1]
+~w~Retourne au ~y~club de J.D.
-[FEC_TFD]
-Tourelle + Orienter bas
+[JDT1O07:JDT1]
+~w~Arrête-toi près de la ~b~fille.
-[FET_RIG]
-CHOISIR UNE AUTRE COMMANDE POUR CETTE ACTION
+[JDT1O08:JDT1]
+~w~Bute le ~r~mac.
-[FEA_NM3]
-AUCUN FICHIER MP3 TROUVE
+[JDT1O09:JDT1]
+~w~Encaisse le fric d'une des ~b~filles de J.D.
-[FEA_MPB]
-VOLUME MP3 A FOND
+[JDT1_F1:JDT1]
+~r~La camionnette de J.D. a été détruite !
-[FEA_MUS]
-VOLUME MUSIQUE
+[JDT1_F2:JDT1]
+~r~J.D. est mort !
-[FEA_SFX]
-VOLUME EFFETS SONORES
+[JDT1_F3:JDT1]
+~r~T'as pas encaissé assez de fric de cette équipe !
-[CVT_ERR]
-Espace disque épuisé. Libérez de la mémoire sur votre disque dur pour continuer. Appuyez sur ECHAP pour annuler.
+[JDT1_D1:JDT1]
+~w~Les filles de J.D. bossent dans le ~y~Red Light District~w~. Retourne là-bas !
-[FEA_ADP]
-AUTODETECT MATERIEL
+[JDT1_F4:JDT1]
+~r~Trop de filles de J.D. sont mortes !
-{=================================== MISSION TABLE AMBULAE ===================================}
+[JDT1_KA:JDT1]
+~w~C'était quoi, ça ?
-[ATUTOR2:AMBULAE]
-~g~Conduis les patients à l'hôpital. DOUCEMENT. Chaque secousse réduit leurs chances de survie.
+[JDT1_KB:JDT1]
+~w~On a touché quelque chose ?
-[A_FULL:AMBULAE]
-~r~Ambulance pleine!
+[JDT1_KC:JDT1]
+~w~Fais gaffe à la voiture, Toni !
-[A_FAIL2:AMBULAE]
-~r~Ton manque de rapidité a été fatal pour le patient!
+[JDT1_81:JDT1]
+~w~Tu as fait peur au client ! Il n'a pas besoin de public !
-[A_FAIL3:AMBULAE]
-~r~Le patient est mort!!
+[JDT1O10:JDT1]
+~w~Approche-toi de la ~b~voiture~w~ dans l'allée.
-[A_PASS:AMBULAE]
-Sauvé!
+[JDT1O11:JDT1]
+~w~Klaxonne pour attirer leur attention !
-[A_COMP2:AMBULAE]
-Tu ne seras plus jamais essoufflé!
+[JDT1O12:JDT1]
+~w~Plus tu laisses la fille travailler longtemps, plus elle gagne d'argent.
-[A_COMP1:AMBULAE]
-Missions Ambulance réussies : $~1~
+[JDT1_MO:JDT1]
+Cash Dû
-[A_CANC:AMBULAE]
-~r~Mission ambulance annulée!
+[JDT1_H1:JDT1]
+~w~Utilise ~k~ ~VEHN~ pour klaxonner.
-[A_COMP3:AMBULAE]
-Missions ambulance accomplies! Maintenant, tu peux sprinter indéfiniment!
+[JDT1_WA:JDT1]
+~w~Dépêche-toi ! Les ~b~filles~w~ finissent de bosser à ~1~:~1~ !
-[ALEVEL:AMBULAE]
-Mission ambulance, niveau ~1~
+[JDT1_WB:JDT1]
+~w~Dépêche-toi ! Les filles finissent de bosser à ~1~:~1~ !
-[A_FAIL1:AMBULAE]
-Mission ambulance achevée.
+[JDT1O06:JDT1]
+~w~Encaisse le fric des filles de J.D., mais dépêche-toi, elles finissent de bosser à ~1~:~1~ !
-[A_SAVES:AMBULAE]
-PERSONNES SAUVEES : ~1~
+[JDT1_WC:JDT1]
+~w~Grouille-toi !~b~Les filles~w~ finissent de bosser à ~1~:0~1~ !
-{=================================== MISSION TABLE ASSIN1 ===================================}
+[JDT1_WD:JDT1]
+~w~Grouille-toi ! Les filles finissent de bosser à ~1~:0~1~ !
-[ASM1_5:ASSIN1]
-~r~Il a livré toutes ses pizzas!
+[JDT1P06:JDT1]
+~w~Récupère l'argent de J.D. auprès de ses filles. Fais vite, elles finissent de bosser à ~1~:0~1~.
-[ASM1_6:ASSIN1]
-Livraisons restantes :
+[BONE_01:JDT1]
+Hé ! J.D., sors de là !
-[ASM1_7:ASSIN1]
-~g~Carl Pearson, livreur de pizzas. Tue-le avant qu'il ne termine ses livraisons.
+[BONE_02:JDT1]
+Hé, J.D., pauvre taré, putain, sors de là,
-[ASM1_D:ASSIN1]
-Ton aide dans l'éradication de ces indésirables fut une excellente affaire.
+[BONE_03:JDT1]
+ou j'viens te briser les jambes !
-{=================================== MISSION TABLE ASSIN2 ===================================}
+[BONE_04:JDT1]
+Oh oui, je viens... mais pas comme ça, ha ha !
-[ASM2_1:ASSIN2]
-~g~Mme Dawson va bientôt quitter la bijouterie à Vice Point. Tue-la. Il faut que ça ressemble à un accident de voiture.
+[BONE_05:JDT1]
+Hé, Toni, que pasa ? On s'embrasse pas ?
-[ASM2_3:ASSIN2]
-~g~Ca va sauter, écarte toi!
+[BONE_06:JDT1]
+Merde, t'es tout collant !
-[ASM2_4:ASSIN2]
-~r~T'as bousillé sa bagnole alors qu'elle était même pas dedans. Elle est pas près de l'utiliser, maintenant!
+[BONE_07:JDT1]
+Oh, c'est ce machin de strip-teaseuses qu'elles me foutent dessus.
-[ASM2_5:ASSIN2]
-~r~Elle s'est enfuie!
+[BONE_08:JDT1]
+Elles adorent ça. Elles en mettent partout et... bon, comment ça va ?
-[ASM2_6:ASSIN2]
-~r~Tu étais trop près de l'accident!
+[BONE_09:JDT1]
+Putain, c'est quoi c'truc que tu portes ?
-[ASM2_7:ASSIN2]
-~g~N'utilise pas d'armes! Il faut que ça ressemble à un accident! Sors-la plutôt de la route!
+[BONE_10:JDT1]
+Quoi ? Ca ? J'suis un amant aventureux.
-[ASM2_8:ASSIN2]
-~g~La mort de madame Dawson doit avoir l'air d'un accident. N'utilise pas d'armes.
+[BONE_11:JDT1]
+J'aime bien le... le côté expérimental, tu vois ?
-[ASM2_9:ASSIN2]
-~g~Il te faut une voiture pour ce boulot!
+[BONE_16:JDT1]
+Ben, c'est l'problème. On se fait truander.
-[ASM2_10:ASSIN2]
-~g~Quand sa bagnole prendra feu, éloigne-toi le plus possible du lieu de l'accident.
+[BONE_17:JDT1]
+OK, attends là deux secondes.
-[ASM2_11:ASSIN2]
-A l'aide!
+[BONE_18:JDT1]
+Faut que j'enlève ce... ce truc...
-[ASM2_12:ASSIN2]
-Que quelqu'un m'aide!
+[BONE_19:JDT1]
+Hé, Raven, c'est le moment de ranger le double gode.
-[ASM2_13:ASSIN2]
-Oh non!
+[BONE_20:JDT1]
+Allez, viens, Toni, on va faire un petit tour.
-[ASM2_A:ASSIN2]
-Mes félicitations pour ce travail bien fait, Mr. Teal. Mon client était ravi.
+[BONE_21:JDT1]
+On a deux trois trucs à voir ensemble... OK ! OK !!
-[ASM2_2:ASSIN2]
-Santé :
+[BONE_12:JDT1]
+- Y a rien de mal à ça, si ? Tu peux mater si tu veux. ~n~- Merde, t'es givré, fais pas chier avec tes conneries.
-{=================================== MISSION TABLE ASSIN3 ===================================}
+[BONE_14:JDT1]
+- OK, relax Toni... ~n~ - Où est mon fric ?
-[ASM3_11:ASSIN3]
-TEMPS :
+{=================================== MISSION TABLE JDT2 ===================================}
-[ASM3_C:ASSIN3]
-Un gang européen prépare un braquage de banque à Vice City. Mes employeurs préfèreraient que cela n'arrive pas.
+[JDT2_I1:JDT2]
+~w~Heureusement te voilà, Toni !
-[ASM3_D:ASSIN3]
-Chaque membre du gang dispose d'une couverture à Vice City. Certains ont des petits boulots, d'autres jouent les touristes.
+[JDT2_I2:JDT2]
+~w~J'viens d'apprendre que les flics vont faire une descente !
-[ASM3_E:ASSIN3]
-Chaque cible et leur position probable sont indiqués sous le téléphone.
+[JDT2_I3:JDT2]
+~w~Et alors ? T'as une licence.
-[ASM3_14:ASSIN3]
-~g~Dick Tanner est à côté de DBP Security sur Ocean Drive.
+[JDT2_I4:JDT2]
+~w~Pas pour tout ce qui s'passe ici !
-[ASM3_15:ASSIN3]
-~g~Marcus Hammond et Franco Carter sont près de la bijouterie de Vice Point.
+[JDT2_I5:JDT2]
+~w~Salvatore est là, en 'visite spéciale' auprès de mes filles, si tu vois ce que je veux dire...
-[ASM3_16:ASSIN3]
-~g~Nick Kong est à côté de Washington Beach.
+[JDT2_I6:JDT2]
+~w~Faut le faire sortir d'ici avant que les flics débarquent !
-[ASM3_18:ASSIN3]
-~g~Ne t'approche pas trop près de la cible où elle risque de te repérer et d'essayer de se faire la malle!
+[JDT2_I7:JDT2]
+~w~Retrouve-le devant !
-[ASM3_19:ASSIN3]
-~g~Il t'a repéré! Bute-le!
+[JDT2_I8:JDT2]
+~w~Jamais le temps de s'ennuyer...
-[ASM3_20:ASSIN3]
-~g~Ils t'ont repéré! Tue-les vite tous les deux!
+[JDT2_05:JDT2]
+~w~Tirons-nous d'ici, et vite !
-[ASM3_21:ASSIN3]
-~r~Tu n'as pas tué tous les membres du gang à temps!
+[JDT2_06:JDT2]
+~w~Sème les flics, Toni ! J'veux pas ramener ces cons à la maison !
-[ASM3_22:ASSIN3]
-~g~Ne t'approche pas trop des cibles ou elles risquent de te repérer et d'essayer de filer.
+[JDT2_A1:JDT2]
+~w~Monte dans la ~b~caisse.
-[ASM3_12:ASSIN3]
-~g~Des armes ont été laissées à ta disposition dans le coin si tu en as besoin. Tu as ~h~9 MINUTES ~g~pour tuer tous les membres du gang.
+[JDT2_A2:JDT2]
+~w~Ne perds pas ~b~Salvatore~w~. Retourne le chercher !
-[ASM3_13:ASSIN3]
-~g~Mike Griffin travaille sur un panneau publicitaire à Washington.
+[JDT2_A3:JDT2]
+~w~Conduis Salvatore ~y~chez lui.
-[ASM3_17:ASSIN3]
-~g~Charlie Dilson est à moto sur Washington.
+[JDT2_A5:JDT2]
+~r~Salvatore est mort !
-{=================================== MISSION TABLE ASSIN4 ===================================}
+[JDT2_C1:JDT2]
+~w~Tu t'en es bien tiré, fiston. J'aime ton style. T'as pas changé.
-[ASM4_12:ASSIN4]
-Distance :
+[JDT2_C2:JDT2]
+~w~Merci, m'sieur Leone.
-[ASM4_15:ASSIN4]
-~g~Prends le fusil à lunette sur ta droite.
+[JDT2_C3:JDT2]
+~w~Tu sais, j'crois que Vincenzo t'accapare un peu trop.
-[ASM4_16:ASSIN4]
-~g~Observe la femme au balcon. Elle va descendre l'escalator et demander l'heure à quelqu'un.
+[JDT2_C4:JDT2]
+~w~J'aurais besoin d'un bon gars comme toi.
-[ASM4_17:ASSIN4]
-~g~Lorsque la conversation est terminée, liquide son interlocuteur sans faire de mal à la femme.
+[JDT2_C5:JDT2]
+~w~Appelle-moi un de ces quatre ! L'oncle Sal s'occupera de toi.
-[ASM4_18:ASSIN4]
-~g~Une fois la cible éliminée, récupère la serviette et amène-la à Ammu-Nation dans le centre.
+[JDT2_A9:JDT2]
+~r~Salvatore a été arrêté !
-[ASM4_19:ASSIN4]
-~g~Reste à distance de la cible. Sa proximité t'est indiquée par la barre de distance située dans le coin supérieur droit de l'écran.
+[JDT2_B2:JDT2]
+~w~Sème les flics !
-[ASM4_20:ASSIN4]
-~g~Ne la laisse pas devenir pleine ou tu seras repéré.
+[JDT2_A6:JDT2]
+~w~Ramène la ~b~voiture~w~ de Salvatore avant qu'il se fasse arrêter par les flics !
-[ASM4_21:ASSIN4]
-~g~Récupère la serviette!
+[JDT2_F1:JDT2]
+~r~Tu as perdu Salvatore !
-[ASM4_22:ASSIN4]
-~g~Ramène la serviette à Ammu-Nation dans le centre.
+[JDT2_A4:JDT2]
+~w~Conduis Salvatore loin du club et sème les flics !
-[ASM4_23:ASSIN4]
-~g~Il t'a repéré et s'enfuit. Rattrape-le et récupère la serviette!
+{=================================== MISSION TABLE JDT3 ===================================}
-[ASM4_25:ASSIN4]
-~r~T'as buté la femme, imbécile!
+[JDT3_AA:JDT3]
+~w~Salut, Toni, j'peux pas sortir maintenant, j'suis occupé... tu comprends ?
-[ASM4_26:ASSIN4]
-~r~La cible a embarqué pour son vol!
+[JDT3_AB:JDT3]
+~w~A quoi ? Y se passe quoi là-dedans ? ... et c'est quoi cette puanteur ?
-[ASM4_27:ASSIN4]
-~r~La cible t'a repéré! Tu devais garder tes distances!
+[JDT3_AC:JDT3]
+~w~Ecoute, Toni, on prépare un repas pour de vrais... euh... spécialistes.
-[ASM4_28:ASSIN4]
-~r~La cible t'a repéré! Elle t'a entendu tirer!
+[JDT3_AD:JDT3]
+~w~Ce truc, c'est de l'or en barre sur Internet !
-[ASM4_29:ASSIN4]
-~r~Ne le tue qu'après qu'il ait parlé à la femme!
+[JDT3_AE:JDT3]
+~w~Tu ferais mieux de t'inquiéter du tripot de Leone à Saint Mark's.
-[ASM4_A:ASSIN4]
-L'heure est venue de s'occuper d'un gros poisson, M. Teal. Il y a un fusil dans le feuillage à votre droite.
+[JDT3_AG:JDT3]
+~w~Les Sindacco en font tout un plat.
-[ASM4_B:ASSIN4]
-Surveillez la femme sur le balcon situé au-dessus des guichets d'enregistrement. Elle va avancer à travers la foule et demander l'heure à quelqu'un.
+[JDT3_AH:JDT3]
+~w~J'ai entendu dire qu'ils allaient le rayer de la carte...
-[ASM4_C:ASSIN4]
-Vous devez tuer son interlocuteur, récupérer la mallette et l'apporter à l'emplacement indiqué sous le téléphone.
+[JDT3_B:JDT3]
+~w~Liquide les ~r~saboteurs Sindacco !
-{=================================== MISSION TABLE ASSIN5 ===================================}
+[JDT3_C:JDT3]
+~r~Ils~w~ ont posé une bombe à l'extérieur du ~y~casino !
-[ASM5_A:ASSIN5]
-Un deal important se déroule sur le toit de l'usine de crème glacée Cherry Popper.
+[JDT3_D:JDT3]
+Explosion
-[ASM5_B:ASSIN5]
-Descendez toutes les personnes impliquées, embarquez la marchandise et amènez-la à la piste pour hélicos de l'aéroport.
+[JDT3_E:JDT3]
+~w~Encore deux comme ça et le ~y~casino~w~ sera ruiné !
-[ASM5_C:ASSIN5]
-Il y a une porte sur votre gauche qui mène à l'arrière de l'usine.
+[JDT3_F:JDT3]
+~w~Encore une et y a plus de ~y~casino !
-[ASM5_1:ASSIN5]
-~g~Entre dans l'enceinte située derrière l'usine de crème glacée Cherry Popper et va jusqu'au toit où se fait le deal.
+[JDT3_H:JDT3]
+~w~D'autres ~r~Sindacco~w~ rappliquent ! Arrête-les !
-[ASM5_2:ASSIN5]
-~g~Récupère la marchandise et amène-la à la piste pour hélicos de l'aéroport.
+[JDT3_I:JDT3]
+~w~La bombe du camion est amorcée !
-[ASM5_3:ASSIN5]
-~g~Emmène la marchandise à la piste pour hélicos de l'aéroport!
+[JDT3_J:JDT3]
+~w~Le ~y~casino~w~ est sauvé. Tire-toi de là !
-{=================================== MISSION TABLE BANKJ1 ===================================}
+[JDT3_K:JDT3]
+~w~Ils ont dû saboter le camion ! Il est bloqué en première !
-[WANTED1:BANKJ1]
-~g~Largue les flics et perds ton indice de recherche!
+[JDT3_L:JDT3]
+~w~Des ~r~renforts Sindacco~w~ se dirigent vers le ~y~casino !
-[BJM1_A:BANKJ1]
-Tommy! Hé, regarde-ça, c'est génial! J'ai fait installer un minibar!
+[JDT3_M:JDT3]
+~w~Les ~r~Sindacco~w~ ont pas encore renoncé ! Y en a d'autres qui rappliquent !
-[BJM1_B:BANKJ1]
-Y'a déjà un vrai bar en bas, Ken.
+[JDT3_N:JDT3]
+~w~Ils se tirent ! Ne laisse aucun ~r~Sindacco~w~ s'échapper !
-[BJM1_C:BANKJ1]
-Ouais, je sais, et alors? Bon, j'ai le tableau noir que tu m'as demandé.
+[JDT3_O:JDT3]
+Distance de sécurité
-[BJM1_D:BANKJ1]
-Ah, c'est là qu'on voit l'intérêt de ton école de droit : t'as appris à suivre les instructions.
+[JDT3_P:JDT3]
+~w~Les Sindacco ont préparé un camion piégé ! Ils vont raser le casino d'un seul coup !
-[BJM1_E:BANKJ1]
-Bon, il me faut un mec sûr.
+[JDT3_Q:JDT3]
+~w~Défends le ~y~casino.
-[BJM1_F:BANKJ1]
-Euh, d'accord, laisse-moi réfléchir... Sûr... sûr... sûr... Je sais! Je connais un mec qui te plaira!
+[JDT3_R:JDT3]
+~w~Va au ~y~casino.
-[BJM1_G:BANKJ1]
-Aaah, non, merde, ce con est au trou.
+[JDT3_S:JDT3]
+~w~Arrête le ~r~camion piégé~w~ pour protéger le ~y~casino !
-[BJM1_H:BANKJ1]
-Comment ça au trou?
+[JDT3_T:JDT3]
+~w~Eloigne le ~r~camion~w~ du ~y~casino~w~ avant qu'il explose !
-[BJM1_I:BANKJ1]
-Dans un poste de police. Il attend son transfert.
+[JDT3_BA:JDT3]
+~w~Toni ? C'est J.D.
-[BJM1_J:BANKJ1]
-Je crois qu'il va être remis en liberté sur parole...
+[JDT3_BB:JDT3]
+~w~Ecoute, j'viens d'apprendre qu'une bande de Sindacco se dirige vers toi.
-[BJM1_1:BANKJ1]
-~g~Sors Cam Jones de chez les flics!
+[JDT3_BC:JDT3]
+~w~Et ils ont des explosifs à plus savoir qu'en faire !
-[BJM1_3:BANKJ1]
-~g~Tu trouveras quelque chose d'utile dans la salle des casiers.
+[JDT3_BD:JDT3]
+~w~Fais gaffe à toi !
-[BJM1_21:BANKJ1]
-~g~La carte d'accès aux cellules se trouve à l'étage.
+[JDT3_BE:JDT3]
+~w~Merci, J.D. !
-[BNK1_7:BANKJ1]
-Cam Jones?
+[JDT3_BF:JDT3]
+~w~J'te revaudrai ça.
-[BNK1_8:BANKJ1]
-Je viens t'aider à mettre les bouts!
+[JDT3_G:JDT3]
+~r~Le casino a été détruit !
-[BNK1_10:BANKJ1]
-Ouais, c'est moi...
+{=================================== MISSION TABLE JDT4 ===================================}
-[BNK1_11:BANKJ1]
-Ca me va!
+[JDT4_3:JDT4]
+~w~Les Sindacco qui gardent la Doll's House ne se fieront qu'aux ~h~voitures Sindacco.
-[BNK1_13:BANKJ1]
-J'ai un boulot à faire et t'es mon perceur de coffre.
+[JDT4_A1:JDT4]
+~w~La classe... Si t'as pas de cul au jeu, tu peux t'en payer un pour te consoler !
-[BNK1_14:BANKJ1]
-Marre de perdre mon temps dans une cellule.
+[JDT4_B0:JDT4]
+~w~Trouve un véhicule adapté et équipe-le d'une bombe.
-[BJM1_22:BANKJ1]
-~g~Ramène Cam chez lui!
+[JDT4_B1:JDT4]
+~w~Remonte dans le ~b~véhicule~w~ avec la bombe.
-[BJM1_23:BANKJ1]
-~g~Tu dois d'abord trouver la carte d'accès!
+[JDT4_B3:JDT4]
+~w~Maintenant, abandonne le véhicule et tire-toi !
-[BNK1_12:BANKJ1]
-Sème les flics et ramène-moi chez moi!
+[JDT4_B4:JDT4]
+~w~Fais sauter la bombe !
-[BJM1_20:BANKJ1]
-Jette ton flingue ou tu vas en subir les conséquences!
+[JDT4_B5:JDT4]
+~w~Conduis le véhicule à l'~h~atelier~w~ et équipe-le d'une bombe.
-[BJM1_5:BANKJ1]
-Accès réservé au personnel autorisé!
+[JDT4_B6:JDT4]
+~w~T'approche pas trop près !
-[BJM1_2:BANKJ1]
-~r~T'étais supposé faire sortir Cam, pas le faire tuer!
+[JDT4_C0:JDT4]
+~r~T'étais trop près de l'explosion.
-[BJM1_4:BANKJ1]
-Il est armé! Descendez-le!
+[JDT4_C1:JDT4]
+~w~Ca, c'est de la part de J.D. !
-{=================================== MISSION TABLE BANKJ2 ===================================}
+[JDT4_D0:JDT4]
+~w~C'est qui, ce type ?
-[BJM2_A:BANKJ2]
-Il nous faut un braqueur. T'en connais un?
+[JDT4_D2:JDT4]
+~w~Ca doit être un nouveau.
-[BJM2_B:BANKJ2]
-Hé, Tommy, Tommy, ce truc ça permet d'rester dans l'coup, mec!
+[JDT4_0:JDT4]
+COMPTE A REBOURS
-[BJM2_C:BANKJ2]
-WoooOOOooo!
+[JDT4_1:JDT4]
+~w~Tu ne peux pas placer une bombe là-dessus !
-[BJM2_D:BANKJ2]
-J'pourrais être ton braqueur! Haut les mains! Haut les mains!
+[JDT4_2:JDT4]
+~w~Suis la ~h~bombe~w~ sur le radar pour trouver l'~h~atelier de 8-Ball.
-[BJM2_E:BANKJ2]
-T'es pas un braqueur, t'es un idiot.
+[JDT4_A0:JDT4]
+~w~Bon, Toni, les Sindacco tiennent une boîte, la 'Doll's House',
-[BJM2_F:BANKJ2]
-Va boire un verre et ferme-la.
+[JDT4_AA:JDT4]
+~w~un genre de casino-bordel.
-[BJM2_G:BANKJ2]
-Hé, tire-toi de mon chemin! Ye ye ye ow ow!
+[JDT4_A2:JDT4]
+~w~Hé hé ! Cette boîte est essentielle à leur organisation.
-[BJM2_H:BANKJ2]
-Cam, qu'est-ce que t'en penses?
+[JDT4_A3:JDT4]
+~w~Si tu pouvais les obliger à mettre la clé sous la porte... la faire sauter ou un truc comme ça...
-[BJM2_I:BANKJ2]
-Ben, le meilleur tireur de cette ville, c'est un mec qui s'appelle Cassidy.
+[JDT4_A4:JDT4]
+~w~j'te jure que Salvatore apprécierait !
-[BJM2_J:BANKJ2]
-Ah ouais?
+[JDT4_D1:JDT4]
+~w~Je le reconnais pas...
-[BJM2_K:BANKJ2]
-Ouais. Un militaire ou en tout cas c'est ce qu'il croit.
+[JDT4_B2:JDT4]
+~w~Prends le véhicule et gare-le dans le ~y~garage~w~ de la 'Doll's House'.
-[BJM2_L:BANKJ2]
-Je doute qu'il ait jamais été dans l'armée, mais il sait sûrement où dégotter des flingues.
+[JDT4_B7:JDT4]
+~w~Conduis prudemment ! Si ton véhicule est trop endommagé, il explosera !
-[BJM2_M:BANKJ2]
-Il devrait être au champ de tir.
+[JDT4_B8:JDT4]
+~w~Gare le véhicule dans le ~y~garage de la 'Doll's House'.
-[BJM2_2A:BANKJ2]
-C'est toi, Phil Cassidy?
+[JDT4_4:JDT4]
+~w~Appuie sur~h~ ~k~ ~PDFW~ ~w~pour ~h~faire exploser~w~ la bombe.
-[BJM2_2B:BANKJ2]
-Pourquoi?
+[JDT4_B9:JDT4]
+~w~Les Sindacco ont désamorcé la bombe !
-[BJM2_2C:BANKJ2]
-Je cherche un mec qui sache se servir d'un flingue. D'après ce que je vois, j'suis pas convaincu...
+{=================================== MISSION TABLE JDT5 ===================================}
-[BJM2_2D:BANKJ2]
-Mon pote, je peux dégomme une mouche sur ta tête à 25 mètres!
+[JDT5_B0:JDT5]
+~w~C'est un des mecs qu'ont enlevé Salvatore !
-[BJM2_2E:BANKJ2]
-Vraiment?
+[JDT5_D0:JDT5]
+~w~Où il est ? Dans le coffre ?
-[BJM2_2F:BANKJ2]
-Ouais. J'ai appris ça à l'armée.
+[JDT5_D1:JDT5]
+~w~Parfait, on l'emmène au broyeur. Le boss veut le voir plus plat qu'une pizza.
-[BJM2_2G:BANKJ2]
-Ils s'amusent souvent à descendre des mouches à l'armée? Heureusement que je paye pas d'impôts!
+[JDT5_E:JDT5]
+~w~Sauve Salvatore avant qu'ils ne broient la ~b~caisse !
-[BJM2_2H:BANKJ2]
-Tu t'crois marrant peut-être, minus?
+[JDT5_E0:JDT5]
+~w~Ils t'ont repéré !
-[BJM2_2I:BANKJ2]
-Ha ha ha ha ha!
+[JDT5_E1:JDT5]
+~w~La ~b~caisse~w~ est pas surveillée ! Vole-la !
-[BJM2_2J:BANKJ2]
-Tirons quelques coups.
+[JDT5_E2:JDT5]
+~w~Conduis la caisse chez ~y~Salvatore.
-[BJM2_1:BANKJ2]
-~g~Va à Ammu-Nation dans le centre et parle à Phil Cassidy.
+[JDT5_E3:JDT5]
+~w~Remonte dans la ~b~caisse.
-[BJM2_4:BANKJ2]
-SCORE MANCHE 1 : ~1~
+[JDT5_F0:JDT5]
+~w~Mmmphhh... mmmphhh... mpphh !
-[BJM2_6:BANKJ2]
-SCORE MANCHE 2 : ~1~
+[JDT5_F3:JDT5]
+~w~Mmpphh... arrgghh... mmpphh !
-[BJM2_7:BANKJ2]
-SCORE TOTAL : ~1~
+[JDT5_F4:JDT5]
+~w~Mmpphh... arrgghh... arrggghh... arrg !
-[BJM2_9:BANKJ2]
-~g~Va au point de départ de la deuxième manche.
+[JDT5_F5:JDT5]
+~w~Yarrgghh... yarragh... mmpphh !
-[BJM2_11:BANKJ2]
-~r~Phil est mort!
+[JDT5_G0:JDT5]
+~w~C'est quoi cette façon de conduire ? Tu veux me tuer ?
-[BJM2_12:BANKJ2]
-~r~Un des tireurs est mort!
+[JDT5_G1:JDT5]
+~w~M'sieur Leone. Boss... J'suis désolé.
-[BJM2_14:BANKJ2]
-~g~Continue jusqu'au prochain secteur!
+[JDT5_G2:JDT5]
+~w~Qu'est-ce que j'peux dire ?
-[BJM2_17:BANKJ2]
-~g~Va parler à Phil.
+[JDT5_G4:JDT5]
+~w~J'leur arracherai le coeur ! J'ai pas dit mon dernier mot !
-[BJM2_24:BANKJ2]
-~g~La cible la plus proche rapporte un point.
+[JDT5_G5:JDT5]
+~w~... Oh allez, Toni ! Tu m'as sauvé la mise ! Appelle-moi Sal !
-[BJM2_25:BANKJ2]
-~g~La cible intermédiaire rapporte deux points.
+[JDT5_X0:JDT5]
+~r~Pas facile de suivre un homme mort...
-[BJM2_27:BANKJ2]
-~g~Toutes les cibles de cette manche rapportent un point.
+[JDT5_X1:JDT5]
+~r~Tu l'as perdu !
-[BNK2_4:BANKJ2]
-Waou!
+[JDT5_F1:JDT5]
+~w~C'est vous, m'sieur Leone ? C'est moi, Toni.
-[BNK2_5:BANKJ2]
-Il raterait une vache dans un couloir!
+[JDT5_F2:JDT5]
+~w~Vous en faites pas. Je vais vous faire sortir d'ici !
-[BNK2_7:BANKJ2]
-Bon, tu veux bien me rendre un service et m'assister sur un boulot?
+[JDT5_G3:JDT5]
+~w~Les fils de putes ! Ils croient qu'ils peuvent me faire ça, à moi !?
-[BNK2_8:BANKJ2]
-Mon gars, vu comment tu tires, si tu me demandes en mariage, j'accepte.
+[JDT5_X2:JDT5]
+~r~Sal s'en est pas sorti !
-[BNK2_9A:BANKJ2]
-Mon gars, tu ferais mieux de remballer ton baratin et tes grands projets. T'es trop mauvais tireur.
+[JDT5_X4:JDT5]
+~r~Il t'a repéré. Tu trouveras plus Sal, maintenant !
-[BNK2_9B:BANKJ2]
-T'es trop mauvais tireur.
+[JDT5_X3:JDT5]
+~r~Salvatore s'est fait écraser !
-[BJM2_28:BANKJ2]
-SCORE MANCHE TROIS : ~1~
+[JDT5_C:JDT5]
+~w~Suis la ~r~voiture~w~, mais ne te fais pas repérer.
-[BJM2_26:BANKJ2]
-~g~La cible éloignée rapporte trois points.
+[JDT5_0:JDT5]
+~w~Si tu tires sur la caisse, tu risques d'atteindre Salvatore !
-[BNK2_1:BANKJ2]
-BALLES REELLES
+[JDT5_H0:JDT5]
+~w~Suis la ~r~voiture~w~, mais ne t'approche pas trop !
-[RANGE_1:BANKJ2]
-SCORE POUR LE TIR : ~1~
+[JDT5_H1:JDT5]
+~w~Tu es trop près !
-[BJM2_2:BANKJ2]
-~g~Pour quitter la manche, appuie sur la ~h~~k~~PED_JUMPING~.
+[JDT5_H2:JDT5]
+~w~Ne t'éloigne pas trop ou tu vas perdre la ~r~voiture.
-[BJM2_N:BANKJ2]
-Du calme...
+[JDT5_H3:JDT5]
+~w~Tu es trop loin !
-{=================================== MISSION TABLE BANKJ3 ===================================}
+[KIDN_01:JDT5]
+J.D. !
-[BJM3_A:BANKJ3]
-Les choses commencent à se mettre tranquillement en place, ici.
+[KIDN_02:JDT5]
+Toni, c'est cool que tu sois là.
-[BJM3_B:BANKJ3]
-C'est quoi le plan, Tommy? Que pasa, amigo?
+[KIDN_03:JDT5]
+Je transpire comme mon oncle dans une cour d'école ! - J'perds les pédales !
-[BJM3_C:BANKJ3]
-Le plan, c'est que toi, tu restes ici à glander. Bon, on a besoin d'un chauffeur.
+[KIDN_06:JDT5]
+Oh mon dieu, c'est pas possible, y va me les arracher.
-[BJM3_D:BANKJ3]
-Tommy, je m'en charge! Je peux conduire.
+[KIDN_07:JDT5]
+Et y va me les coller dans un étau ! Et p'têt pas dans cet ordre-là !
-[BJM3_E:BANKJ3]
-C'est Hilary que tu veux, mec! Pas un stupide vantard d'école de droit.
+[KIDN_08:JDT5]
+Oh putain, j'me sens comme le jour où le FBI a fouillé mon disque dur !
-[BJM3_F:BANKJ3]
-Hilary, c'est le meilleur. T'as jamais vu quelqu'un conduire aussi vite. Je vais l'appeler.
+[KIDN_13:JDT5]
+Putain, j'arrive pas à l'croire...
-[BJM3_G:BANKJ3]
-Salut, Hil, c'est Phil. Comment ça va? Non, attends, on causera plus tard, j'ai besoin que tu me rendes un service.
+[KIDN_14:JDT5]
+On peut pas m'accuser ! C'est pas ma faute !
-[BJM3_H:BANKJ3]
-J'ai avec moi un mec du nord. Non, je crois pas qu'il était dans l'armée, mais il a besoin d'un conducteur.
+[KIDN_15:JDT5]
+Mais tu connais Salvatore, y va me coller les Moeurs au cul !
-[BJM3_I:BANKJ3]
-Pour un peu d'adrénaline. Ok, compris.
+[KIDN_16:JDT5]
+Bordel, ça va faire comme pour le détournement de mineures.
-[BJM3_J:BANKJ3]
-Qu'est-ce qu'il a dit?
+[KIDN_17:JDT5]
+T'as déjà fait de la taule pour détournement d'mineures, toi ?
-[BJM3_K:BANKJ3]
-Bon, il marche, pas de problème. En fait, y'a juste un détail, tu vois, il pose toujours une condition.
+[KIDN_18:JDT5]
+Y viennent te choper dans les douches !
-[BJM3_L:BANKJ3]
-Il refuse de bosser pour quelqu'un qui ne peut pas le battre. Un truc à cause de sa mère.
+[KIDN_19:JDT5]
+Putain, elle avait 16 ans ! Bordel de merde, là, ça va être pire !
-[BJM3_M:BANKJ3]
-Quoi qu'il en soit, il veut t'affronter d'abord et il a dit qu'il te retrouvait dehors...
+[KIDN_20:JDT5]
+Hé, pauvre connard de suceurs de bites, c'est quoi l'problème ?
-[BJM3_2A:BANKJ3]
-C'est toi Tommy? Evidemment que c'est toi Tommy, enfin, je veux dire,
+[KIDN_04:JDT5]
+- Qu'est-ce qu'on va faire ? ~n~ - Comment ça ?
-[BJM3_2B:BANKJ3]
-pourquoi est-ce que quelqu'un d'autre parlerait avec moi?
+[KIDN_11:JDT5]
+- Non, non... J'en ai déjà trop pris... ~n~ - Qu'est-ce qui s'passe, bordel ?
-[BJM3_2C:BANKJ3]
-Bon. Ecoute-moi.
+[KIDN_09:JDT5]
+J'ai l'coeur qui va exploser. T'aurais pas un tranquillisant ?
-[BJM3_2D:BANKJ3]
-Je conduis pour toi que SI, et seulement SI, tu peux conduire convenablement.
+[KIDN_10:JDT5]
+Ou du rohapnin ? Ou alors p'têt un...
-[BJM3_2E:BANKJ3]
-Abandonne et je ne te pardonnerai jamais.
+[KIDN_21:JDT5]
+C'est Salvatore. Il s'est fait kidnapper à la sortie du club.
-[BJM3_2:BANKJ3]
-~r~Hilary est mort!
+[KIDN_23:JDT5]
+Pourquoi tu l'as pas dit tout de suite au lieu de me soûler avec tes conneries ? Allez, viens !
-[BJM3_4:BANKJ3]
-~g~T'as besoin d'une voiture!
+{=================================== MISSION TABLE JDT6 ===================================}
-[BNK3_1:BANKJ3]
-Ok, je piloterai pour toi, mais s'il te plaît, traite-moi mal.
+[JDT6_A0:JDT6]
+~w~Ouf ! Toni !
-[BNK3_3A:BANKJ3]
-Course de rue illégale dans Vice Point!
+[JDT6_A1:JDT6]
+~w~J.D. ? Hé, j'suis à l'arrière de...
-[BNK3_3B:BANKJ3]
-Appel à tous les officiers.
+[JDT6_A2:JDT6]
+~w~Je sais, je t'ai vu arriver. J'espérais vraiment que tu rappliquerais !
-[BNK3_3C:BANKJ3]
-Les courses de rue sont formellement interdites!
+[JDT6_A3:JDT6]
+~w~Salvatore est fou de rage !
-{=================================== MISSION TABLE BANKJ4 ===================================}
+[JDT6_A6:JDT6]
+~w~Fais en sorte qu'il arrive rien à Salvatore.
-[BNK4_A:BANKJ4]
-~w~Comme vous pouvez voir, les mecs, ça va être le fric le plus facile qu'on se soit jamais fait!
+[JDT6_0:JDT6]
+Santé de Sal
-[BNK4_B:BANKJ4]
-~w~Tommy, sérieusement, va falloir que tu considères la question judiciaire.
+[JDT6_1:JDT6]
+~r~Salvatore a échoué.
-[BNK4_C:BANKJ4]
-~w~Merde! Qu'est-ce que tu fumes, mon pote? J'appelle pas ça un plan!
+[JDT6_3:JDT6]
+~w~Salvatore sera ici dans ~1~ secondes.
-[BNK4_D:BANKJ4]
-~w~Bon, de toute manière, on a pas besoin de plan!
+[JDT6_5:JDT6]
+~w~Protège ~b~Salvatore~w~ des ~r~Sindacco.
-[BNK4_E:BANKJ4]
-~w~Prenez le communisme, ça c'était un plan! Et regarde où en est la Russie, maintenant!
+[JDT6_6:JDT6]
+~w~Un des ~b~gardes de Salvatore~w~ est mort !
-[BNK4_F:BANKJ4]
-~w~Du calme, Ok? Avec une équipe comme ça, il n'y aura pas le moindre problème!
+[JDT6_7:JDT6]
+~w~Les deux ~b~gardes de Salvatore~w~ sont morts !
-[BNK4_G:BANKJ4]
-~w~On amène Cam au coffre. Phil, toi et moi, on s'occupe de la sécurité et Hilary conduit la bagnole.
+[JDT6_8:JDT6]
+~w~Les flics !
-[BNK4_H:BANKJ4]
-~w~Hum, euh, t'oublies pas quelqu'un? Quelqu'un qui t'aurait aidé depuis le début dans cette ville? Quelqu'un...
+[JDT6_10:JDT6]
+~w~Trouve une position favorable avant l'arrivée de Salvatore.
-[BNK4_I:BANKJ4]
-~w~Ken... Ken, c'est vrai. Bon, Ken va s'occuper de blanchir le pognon et de garder les boissons au frais!
+[JDT6_11:JDT6]
+~w~Où tu vas ? Salvatore a besoin de protection dans le Red Light District.
-[BNK4_J:BANKJ4]
-~w~Je comprends pas ce que je suis supposé faire ici.
+[JDT6_12:JDT6]
+Salvatore débarque.
-[BNK4_K:BANKJ4]
-~w~Ecoute, c'est dans la poche. T'as jamais vu de film?
+[JDT6_D1:JDT6]
+~w~Hé...
-[BNK4_L:BANKJ4]
-~w~On entre dans la banque, on sort nos flingues et on ressort plein aux as!
+[JDT6_D4:JDT6]
+~w~Quelqu'un a perdu un dollar !
-[P_DEAD:BANKJ4]
-~r~Phil est mort!
+[JDT6_C0:JDT6]
+~w~C'est tout ce que tu sais faire ?
-[C_DEAD:BANKJ4]
-~r~Cam est mort!
+[JDT6_C1:JDT6]
+~w~Pauvre naze !
-[H_DEAD:BANKJ4]
-~r~Hilary est mort!
+[JDT6_C2:JDT6]
+~w~Bande de lopettes !
-[P_HIND:BANKJ4]
-~r~T'as perdu Phil!
+[JDT6_C3:JDT6]
+~w~J'vais t'apprendre !
-[C_HIND:BANKJ4]
-~r~T'as oublié Cam!
+[JDT6_C4:JDT6]
+~w~Prends ça !
-[H_HIND:BANKJ4]
-~r~Hilary est resté derrière!
+[JDT6_C5:JDT6]
+~w~Bande de bâtards !
-[GETCAR:BANKJ4]
-~g~Monte dans la bagnole pour terminer le boulot!
+[JDT6_C6:JDT6]
+~w~J'suis le roi de cette ville !
-[TRASHED:BANKJ4]
-~r~T'as détruit la bagnole pour s'enfuir!
+[JDT6_A4:JDT6]
+~w~Il s'amène ici en personne pour buter tous les Sindacco qu'il trouvera...
-[BNK4_1:BANKJ4]
-Je vais conduire.
+[JDT6_A5:JDT6]
+~w~... Alors, j'ai pris la tangente. Ecoute, j'ai laissé un fusil sur le toit, de l'autre côté de la rue.
-[BNK4_2:BANKJ4]
-Super. Un passager. Attends que j'en parle à la réunion!
+[JDT6_9:JDT6]
+~w~Récupère le ~g~fusil de précision~w~ sur le toit.
-[BNK4_3A:BANKJ4]
-Hé, fais gaffe à la caisse, Tommy!
+{=================================== MISSION TABLE JDT7 ===================================}
-[BNK4_3B:BANKJ4]
-Tommy, Hilary prend trop de place!
+[JDT7_VE:JDT7]
+~r~v1.00
-[BNK4_3C:BANKJ4]
-C'est pas vrai!
+[JDT7_02:JDT7]
+~w~Alors comme ça, Salvatore a nettoyé la baraque et maintenant, il s'occupe de la tienne !?
-[BNK4_3D:BANKJ4]
-Toi aussi!
+[JDT7_03:JDT7]
+~w~Tout est à moi, maintenant, Toni !
-[BNK4_3E:BANKJ4]
-Hé, fermez-la tous les deux ou vous rentrez à pied!
+[JDT703A:JDT7]
+~w~Ces connards de Sindacco ont été virés.
-[BNK4_3F:BANKJ4]
-Ouais, Hilary.
+[JDT7_04:JDT7]
+~w~Ecoute, y paraît que les Siciliens essayaient de faire la paix entre les familles.
-[BNK4_3I:BANKJ4]
-Putain, Phil! Arrête d'agiter ce truc devant moi!
+[JDT7_4A:JDT7]
+~w~Sal est avec un des grands pontes chez lui, en ce moment.
-[BNK4_3J:BANKJ4]
-Ouais, tu vas éborgner quelqu'un!
+[JDT7_4B:JDT7]
+~w~Le truc, c'est qu'il sent le coup fourré.
-[BNK4_3M:BANKJ4]
-Mon bébé! Elle est foutue!
+[JDT7_4C:JDT7]
+~w~Il veut que quelqu'un aille là-bas pour suivre le mec, qu'on sache où il va.
-[BNK4_3O:BANKJ4]
-Tu t'accroches à l'illusion de la permanence!
+[JDT7_06:JDT7]
+~r~T'as pas atteint l'hélico à temps ! Massimo est déjà parti !
-[BNK4_3P:BANKJ4]
-Quoi?!
+[JDT7_07:JDT7]
+~w~Suis ~r~Massimo~w~. Ne le perds pas !
-[BNK4_3Q:BANKJ4]
-Tu crois que toutes les choses dureront!
+[JDT7_08:JDT7]
+~r~Il~w~ est en train de filer !
-[BNK4_3R:BANKJ4]
-La jeunesse, les amours, les pizzas...
+[JDT7_09:JDT7]
+~r~T'as laissé filer Massimo !
-[BNK4_3S:BANKJ4]
-Tout prend fin un jour, et tu dois l'accepter.
+[JDT7_10:JDT7]
+~w~L'hélico a l'air d'atterrir. T'approche pas trop près ou tu leur feras peur.
-[BNK4_3T:BANKJ4]
-Ouais, t'as raison, merci, Cam.
+[JDT7_11:JDT7]
+~r~Tu t'es trop approché ! Ils t'ont repéré !
-[BNK4_3U:BANKJ4]
-De rien.
+[JDT7_14:JDT7]
+~r~Il~w~ s'en va. Suis-~r~le~w~ à nouveau...
-[BNK4_3V:BANKJ4]
-Hé, Tommy, pourquoi on s'arrête?
+[JDT7_15:JDT7]
+~w~Massimo~w~ a l'air de vouloir atterrir là-bas...
-[BNK4_4A:BANKJ4]
-~w~Hilary, continue à tourner autour du quartier.
+[JDT7_16:JDT7]
+~w~Tu vas devoir t'approcher ~y~plus près...
-[BNK4_5:BANKJ4]
-~w~Ok, Tommy, ok.
+[JDT7_17:JDT7]
+~r~T'as grillé ta couverture !
-[BNK4_6:BANKJ4]
-~w~C'EST UN HOLD-UP!
+[JDT7_21:JDT7]
+~w~Tu t'es fait repérer ! Liquide les ~r~Triades !
-[BNK4_7:BANKJ4]
-~w~PERSONNE NE BOUGE!
+[JDT7_12:JDT7]
+~w~Come siamo rimasti d'accordo,
-[BNK4_8:BANKJ4]
-~w~TOUT LE MONDE CONTRE LE MUR!
+[JDT712A:JDT7]
+~w~si vous faites le boulot de mes associés à leur place, vous n'aurez pas à vous plaindre...
-[BNK4_9:BANKJ4]
-Phil! Monte la garde!
+[JDT7_13:JDT7]
+~w~... Hepburn Heights appartiendra aux Diablos.
-[BNK4_10:BANKJ4]
-Bien compris!
+[JDT7_18:JDT7]
+~w~... alors, maintenez les bastardi dei Leone occupés à Portland,
-[BNK4_11:BANKJ4]
-Amène-toi, Cam, la salle des coffres est en haut...
+[JDT718A:JDT7]
+et dès que mes associés contrôleront cette ville, vous toucherez le gros lot.
-[BK4_12A:BANKJ4]
-Merde! C'est un Flange 9000!
+[JDT718B:JDT7]
+Ci pensiamo noi.
-[BK4_12B:BANKJ4]
-Ca peut prendre des heures à ouvrir,
+[JDT7_20:JDT7]
+~w~Là-bas ! C'est un Leone !
-[BK4_12C:BANKJ4]
-ou cinq minutes si tu peux trouver le directeur...
+[JDT7_22:JDT7]
+Distance
-[BNK4_13:BANKJ4]
-Je vais aller voir où il se planque.
+[JD_FIN:JDT7]
+~w~Achève les ~r~Triades !
-[BK4_14A:BANKJ4]
-Ca roule, Phil?
+[JDT7_05:JDT7]
+~w~Va au ~y~manoir de Salvatore~w~ avant le départ de Massimo !
-[BNK4_15:BANKJ4]
-Pas de problème. Tout le monde se tient relax.
+[JDT7O07:JDT7]
+~w~Atteins le ~y~manoir de Salvatore.~w~ Massimo s'en va à ~1~:~1~.
-[BNK4_16:BANKJ4]
-Toi! Tu viens avec moi!
+[JDT7O08:JDT7]
+~w~Il est presque ~1~:~1~. Massimo est sur le point de partir !
-[BNK4_17:BANKJ4]
-D'accord! D'accord! Ne tirez pas!
+{=================================== MISSION TABLE JDT8 ===================================}
-[BNK4_18:BANKJ4]
-J'AI DIT PERSONNE NE BOUGE!
+[JDT8_A0:JDT8]
+~w~Toni... C'est pour aujourd'hui ! J'vais enfin faire partie de la Famille !
-[BK4_19A:BANKJ4]
-C'est réglé sur une serrure à horloge,
+[JDT8_A1:JDT8]
+~w~J.D. l'intouchable ? Dieu nous protège !
-[BK4_19B:BANKJ4]
-Vous feriez aussi bien d'abandonner tout de suite!
+[JDT8_A2:JDT8]
+~w~Ca fait tellement longtemps que j'attendais ça... J'aurais jamais réussi sans toi, Toni.
-[BK4_20A:BANKJ4]
-Putain, je peux court-circuiter l'horloge,
+[JDT8_A3:JDT8]
+~w~Arrête, tu vas me faire pleurer !
-[BK4_20B:BANKJ4]
-on a juste besoin de ton code secret et c'est bingo!
+[JDT8_A4:JDT8]
+~w~Salut Mickey ! Ca roule ?
-[BNK4_21:BANKJ4]
-Reste ici. T'essayes quoi que ce soit et t'es mort! Pigé?
+[JDT8_A5:JDT8]
+~w~Je monte derrière... OK.
-[BK4_24A:BANKJ4]
-Je vais voir Phil, je reviens tout de suite.
+[JDT8_C:JDT8]
+~w~Monte dans la ~b~caisse~w~ et conduis J.D. à la cérémonie.
-[BK4_24B:BANKJ4]
-Je t'avais dit de pas toucher à cette alarme!
+[JDT8_C2:JDT8]
+~w~Remonte dans la ~b~caisse.
-[BNK4_25:BANKJ4]
-Le commando du SWAT sera là d'une minute à l'autre!
+[JDT8_C3:JDT8]
+~w~Va à la ~y~cérémonie.
-[BNK4_27:BANKJ4]
-J'aurais besoin d'un coup de main, Tommy!
+[JDT8_B0:JDT8]
+~w~Ah, Toni ! J'vais te dire, j'arrive pas à croire que c'est la réalité !
-[BNK4_28:BANKJ4]
-Ici le SWAT de Vice City! Vous êtes complètement encerclés!
+[JDT8_B1:JDT8]
+~w~Depuis le temps que j'en rêve !
-[BNK4_29:BANKJ4]
-Encerclés? HA HA HA HAAAAAaaa!
+[JDT8_B2:JDT8]
+~w~J'ai trimé pour les Sindacco pendant des années pour que dalle !
-[BNK4_30:BANKJ4]
-Ils racontent que des conneries, ces ripoux!
+[JDT8_B3:JDT8]
+~w~Ces bâtards m'ont maintenu au bas de l'échelle !
-[BK4_31A:BANKJ4]
-Tommy! La salle des coffres est ouverte!
+[JDT8_B5:JDT8]
+~w~Mais Salvatore, Dieu le bénisse, il est pas comme ça, et y a pas eu de problème.
-[BK4_34A:BANKJ4]
-Ok, on a la caisse de retraite du SWAT! Tirons-nous de là!
+[JDT8_B6:JDT8]
+~w~Je t'assure !
-[BK4_34B:BANKJ4]
-Bon, vous l'aurez cherché! C'était votre dernière chance!
+[JDT8_B7:JDT8]
+~w~C'est génial !
-[BK4_35A:BANKJ4]
-Ils lancent l'assaut!
+[JDT8_B8:JDT8]
+~w~Toni, j'hallucine !
-[BK4_35B:BANKJ4]
-Planquez-vous!
+[JDT8_B9:JDT8]
+~w~Toni, c'est vraiment excellent, ce qui m'arrive, excellent !
-[BNK4_36:BANKJ4]
-Où est Cam?
+[JDT8_BA:JDT8]
+~w~Tu te rends compte ? J'y crois pas, c'est complètement dingue !
-[BNK4_37:BANKJ4]
-Du passé...
+[JDT8_BB:JDT8]
+~w~Ca y est, Toni ! J'appartiens à la Famille !
-[BNK4_38:BANKJ4]
-C'était le dernier! On dégage! Allez!
+[JDT8_D1:JDT8]
+~w~Où est Salvatore ?
-[BNK_39:BANKJ4]
-Merde! Où est Hilary?
+[JDT8_D2:JDT8]
+~w~Toni, le premier verre est pour moi...
-[BK4_40A:BANKJ4]
-Il me payera ça!
+[JDT8_D3:JDT8]
+~w~BANG !
-[BNK4_42:BANKJ4]
-Hé! Les mecs! Montez! Je vous couvre!
+[JDT8_H0:JDT8]
+~w~Hé, ce mec était une vraie vérole.
-[BNK4_44:BANKJ4]
-On a réussi! On est riches! RICHES!
+[JDT8_H1:JDT8]
+~w~Il a doublé son propre chef ! Disgrazia...
-[BNK4_45:BANKJ4]
-Dommage que Cam y soit resté, c'était un mec réglo!
+[JDT8_H2:JDT8]
+~w~Salvatore aurait jamais pu faire confiance à une ordure pareille !
-[BNK4_46:BANKJ4]
-Ouais. Enfin... On hérite de sa part!
+[JDT8_H3:JDT8]
+~w~Balance la putain de caisse dans la rivière.
-[BNK4_47:BANKJ4]
-Tu l'as dit! Ouais!
+[JDT8_H4:JDT8]
+~w~T'as qu'à me déposer en route.
-[BNK4_48:BANKJ4]
-Tommy, que dirais-tu d'un massage?
+[JDT8_J:JDT8]
+~w~Monte dans la ~b~caisse~w~ et va chez Mickey.
-[BNK4_49:BANKJ4]
-Salut, Mercedes! Ouais, pourquoi pas, je me sens un peu tendu...
+[JDT8_J1:JDT8]
+~w~Les flics t'ont repéré avec la caisse !
-[BNK450A:BANKJ4]
-Qu'est-ce que je te disais, Tommy? Hein, quoi? Le SWAT a du souci à se faire quand Kent Paul est en ville.
+[JDT8_J2:JDT8]
+~w~Les flics ont repéré ta ~b~caisse !
-[BNK450B:BANKJ4]
-Allez, allonge une plus grosse part, mon pote, j'ai besoin de nouvelles fringues!
+[JDT8_J3:JDT8]
+~w~Remonte dans la ~b~caisse !
-[BNK4_94:BANKJ4]
-~w~Ok, les mecs. Tout roule comme prévu.
+[JDT8_J4:JDT8]
+~w~Dépose Mickey ~y~chez lui.
-[BM_DEAD:BANKJ4]
-~r~T'avais besoin du directeur vivant!
+[JDT8_K0:JDT8]
+~w~Bon, j'te laisse régler ce merdier !
-[ASSET_A:BANKJ4]
-BRAQUAGE DE BANQUE OK!
+[JDT8_K1:JDT8]
+~w~Oublie pas, balance la caisse dans la rivière !
-[ASSET_B:BANKJ4]
-~g~Le Malibu Club génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[JDT8_F:JDT8]
+~w~Balance la caisse dans la rivière.
-[IDIOT:BANKJ4]
-~r~T'as raison, trimballe-toi déguisé en malade pour attirer l'attention! Espèce d'abruti!
+[JDT8_F1:JDT8]
+~w~Balance la ~b~caisse~w~ dans la rivière.
-{=================================== MISSION TABLE BARON1 ===================================}
+[JDT8_G5:JDT8]
+~r~J.D. est mort !
-[COK1_A:BARON1]
-Allez, sale carne, allez! Allez! Putain...
+[JDT8_G6:JDT8]
+~r~Mickey est mort !
-[COK1_B:BARON1]
-Connard de cheval! Je te ferai décapiter!
+[JDT8_G8:JDT8]
+~r~T'étais censé balancer la caisse dans la rivière.
-[COK1_C:BARON1]
-C'est qui ce con?
+[JDT8_X0:JDT8]
+~w~Où tu vas, Toni ?
-[COK1_D:BARON1]
-Tommy Vercetti, vous vous souvenez de moi?
+[JDT8_X3:JDT8]
+~w~On va être en retard.
-[COK1_E:BARON1]
-Excuse-moi, mais j'suis un peu enervé. Fais jamais confiance à une saloperie de canasson!
+[JDT8_X1:JDT8]
+~w~Si les flics voient la caisse comme ça, on va se faire arrêter direct !
-[COK1_F:BARON1]
-Tu fais du bon boulot. Maintenant, tu travailles pour moi.
+[JDT8_X2:JDT8]
+~w~La cérémonie a lieu à Harwood.
-[COK1_H:BARON1]
-Comme je disais, amigo, tu bosses pour moi. Maintenant, la ferme! Un salopard m'a trahi!
+[JDT8_A6:JDT8]
+~w~Toni... Toni... C'est pour aujourd'hui !
-[COK1_I:BARON1]
-Il croit que je sais pas combien de pognon je devrais gagner... Mais me faucher 3%, c'est pareil que d'me faucher 100%!
+[JDT8_A7:JDT8]
+~w~J'vais enfin faire partie de la Famille !
-[COK1_J:BARON1]
-Personne ne me fait ça! PERSONNE!
+[JDT8_A8:JDT8]
+~w~J.D. l'intouchable ?
-[COK1_K:BARON1]
-Tu vas le suivre depuis son appart' pour voir où il va! On le descendra plus tard.
+[JDT8__1:JDT8]
+~w~J'attends ce moment depuis longtemps...
-[COK1_1:BARON1]
-Oh merde!
+[JDT8__2:JDT8]
+~w~Ca aurait jamais été possible sans toi, Toni.
-[COK1_2:BARON1]
-Un peu trop lent, papi!
+[JDT8_A9:JDT8]
+~w~Dieu nous protège !
-[COK1_4:BARON1]
-Pauv' mec.
+[JDT8_D0:JDT8]
+~w~Hé, on est arrivé ?
-[COK1_5:BARON1]
-Tu ferais mieux de continuer à courir, connard!
+[JDT8_B4:JDT8]
+~w~Juste parce que j'avais une goutte de sang irlandais !
-[COK1_8:BARON1]
-~g~Vite! Grimpe dans une caisse et suis-le!
+[JDT8_G7:JDT8]
+~r~Tes passagers sont morts !
-[COK1_9:BARON1]
-~r~Tu es supposé le suivre, pas le buter!
+[JDT8_C4:JDT8]
+~w~Elimine les ~r~tueurs des Sindacco~w~ avant qu'ils ne butent J.D. !
-[COK1_10:BARON1]
-~r~Va à la maison des voleurs et trouve où il planque le fric!
+[JDT8_0:JDT8]
+~w~Repeindre la voiture te permettra de gagner du temps mais dès que les flics verront le macchabée à la place du mort, ils seront de nouveau à tes trousses.
-[COK1_11:BARON1]
-~g~Regarde par cette fenêtre.
+[JDT8_K:JDT8]
+~w~Oh c'est pas vrai !
-[COK1_7:BARON1]
-~g~Il s'est échappé vers le toit. Suis-le mais ne le tue pas!
+[JDT8_BC:JDT8]
+~w~Toni, putain, faut que tu décompresses.
-[COK1_G:BARON1]
-Je travaille pour du fric.
+[JDT8_C5:JDT8]
+~w~Achève les ~r~tueurs Sindacco.
-{=================================== MISSION TABLE BARON2 ===================================}
+{=================================== MISSION TABLE MAC1 ===================================}
-[COK2_V:BARON2]
-Il commence à me faire confiance...
+[MAC1_AA:MAC1]
+~w~M'man ?
-[COK2_A:BARON2]
-Qui c'est qui m'a foutu un con pareil!
+[MAC1_AB:MAC1]
+~w~C'est moi, j'suis revenu !
-[COK2_B:BARON2]
-CON! CON! CON! CON!
+[MAC1_AC:MAC1]
+~w~Toni ?... Mais enfin, où étais-tu passé ?
-[COK2_C:BARON2]
-Tommy -
+[MAC1_AM:MAC1]
+~w~Tu n'as jamais téléphoné tout le temps que tu étais parti !
-[COK2_D:BARON2]
-Quoi, Ricardo?
+[MAC1_AD:MAC1]
+~w~Il n'y avait pas le téléphone là où tu étais ?
-[COK2_E:BARON2]
-Ces merdeux, faut toujours qu'ils essayent de m'baiser...
+[MAC1_AE:MAC1]
+~w~Oh, allez, m'man ! Tu sais bien que j'pouvais pas t'appeler !
-[COK2_F:BARON2]
-C'est le problème avec ce genre de biz...
+[MAC1_AF:MAC1]
+~w~Un vrai homme aurait appelé sa mère !
-[COK2_G:BARON2]
-Qu'est-ce que tu fous toi?
+[MAC1_AG:MAC1]
+~w~Tu ferais mieux de suivre l'exemple de Giovanni Casa !
-[COK2_H:BARON2]
-Ces connards m'ont vraiment manqué de respect.
+[MAC1_AN:MAC1]
+~w~Il appelle sa maman tous les jours, lui,
-[COK2_I:BARON2]
-Bientôt, le premier connard venu va penser qu'il peut vendre de la dope à Vice City.
+[MAC1_AH:MAC1]
+~w~et il est devenu un brave homme.
-[COK2_J:BARON2]
-Et ensuite, ça sera quoi? Ces pourris de la Mafia, hein?
+[MAC1_AO:MAC1]
+~w~Et sa saucisse sicilienne est la meilleure de la ville !
-[COK2_K:BARON2]
-Le Q.G. de ce gang est une vrai forteresse au rez-de-chaussée,
+[MAC1_AI:MAC1]
+~w~Casa ! Mais, m'man, Casa a rien d'un brave homme. C'est un pervers !
-[COK2_L:BARON2]
-alors Quentin ici... Quentin! QUENTIN!
+[MAC1_AJ:MAC1]
+~w~Ce n'est qu'une stupide rumeur ! Quel genre d'homme es-tu, toi, Toni ?
-[COK2_M:BARON2]
-Il va te faire survoler la zone!
+[MAC1_AK:MAC1]
+~w~OK, m'man, comme tu voudras.
-[COK2_N:BARON2]
-Liquide-les!
+[MAC1_AL:MAC1]
+~w~J'vais peut-être appeler Giovanni pour voir ce qu'il devient.
-[COK2_O:BARON2]
-Qu'est-ce que tu fous toi?
+[MAC1_HA:MAC1]
+~w~J'crois que j'ai besoin d'un gros câlin !
-[COK2_P:BARON2]
-Qu'est-ce que tu fous ici?
+[MAC1_17:MAC1]
+~w~Prouve à ta mère que Giovanni Casa n'est pas un brave homme !
-[COK2_Q:BARON2]
-Hé, je me suis un peu renseigné et c'est sûr
+[MAC1_B:MAC1]
+~w~Va à ton ~y~appartement ~w~pour récupérer ton appareil photo.
-[COK2_R:BARON2]
-que c'est Diaz qui a bousillé le deal et refroidi mon frère!
+[MAC1_B0:MAC1]
+~w~Va au ~y~traiteur de Casa.
-[COK2_S:BARON2]
-Et il va t'buter toi aussi!
+[MAC1B2:MAC1]
+~w~Jolie photo ! Rapporte-la chez ~y~ta mère.
-[COK2_T:BARON2]
-Je peux me faire Diaz!
+[MAC1_B3:MAC1]
+~w~Faufile-toi près de ~r~Casa~w~, et prends une photo compromettante !
-[COK2_U:BARON2]
-Non, écoute-moi! JE m'occupe de Diaz!
+[MAC1_B5:MAC1]
+~w~Fais attention à ne pas ~r~lui~w~ faire peur.
-[COK2_1:BARON2]
-Il y a un truc que j'pige pas, pourquoi 'Quentin'?
+[MAC1_B6:MAC1]
+~r~T'as plus de pellicule et t'as pas pris une seule photo compromettante de Casa pour ta mère.
-[COK2_2:BARON2]
-Je sais pas, ça sonne bien... Quentin Vance...
+[MAC1_B7:MAC1]
+~w~Récupère ton ~g~appareil photo.
-[COK2_3:BARON2]
-Vance? Tu t'appelles Lance Vance?
+[MAC1_C0:MAC1]
+~w~T'approche pas trop de ~r~Casa~w~ ou il aura des soupçons !
-[COK2_4:BARON2]
-Ca va, hein! J'en ai déjà eu pour mon compte à l'école!
+[MAC1_C1:MAC1]
+~r~Tu lui as fait peur ! Maintenant, c'est raté pour la photo !
-[COK2_5:BARON2]
-T'as déjà tiré depuis un hélico?
+[MAC1_C2:MAC1]
+~r~Quelque chose a alerté Casa !
-[COK2_8:BARON2]
-On va où, au fait?
+[MAC1_C3:MAC1]
+~r~T'as perdu Casa !
-[COK2_9:BARON2]
-Prawn Island.
+[MAC1_C4:MAC1]
+~r~Casa s'est fait buter !
-[COK2_13:BARON2]
-Lance Vance. Mon pauv' vieux...
+[MAC1_C5:MAC1]
+~w~T'es trop près de ~r~Casa !
-[COK2_14:BARON2]
-Ok, on y est presque.
+[MAC1_C6:MAC1]
+~w~Ne perds pas ~r~Casa !
-[COK2_15:BARON2]
-On va faire un ou deux passages,
+[MAC1_D0:MAC1]
+~w~On dirait que Casa a trouvé un peu d'action.
-[COK2_16:BARON2]
-Alors, descends autant de tireurs que tu peux.
+[MAC1_JA:MAC1]
+~w~Salut, mesdames ! C'est l'heure de la tété !
-[COK2_17:BARON2]
-Et puis je te dépose et tu te débrouilles tout seul.
+[MAC1_JB:MAC1]
+~w~Qui va être ma maman ?
-[COK2_20:BARON2]
-Merde, c'est la guerre en bas! Descends ces tireurs!
+[MAC1_JC:MAC1]
+~w~Oh là là !
-[COK2_21:BARON2]
-On s'fait canarder, mec!
+[MAC1_IA:MAC1]
+~w~OK, mesdames, je vous demande juste une minute...
-[COK2_22:BARON2]
-Ca coûte un max de réparer c'coucou, alors bute-les!
+[MAC1_IB:MAC1]
+~w~Je vais passer quelque chose de plus... moi.
-[COK2_23:BARON2]
-Bon, t'es tout seul à partir de là. Bonne chance, mon frère!
+[MAC1_CA:MAC1]
+~w~Bébé a besoin d'un gros câlin !
-[COK2_24:BARON2]
-Etat hélico :
+[MAC1_CB:MAC1]
+~w~J'ai fait caca !
-[COK2_25:BARON2]
-~g~Va récupérer le pognon sur le toit.
+[MAC1_DA:MAC1]
+~w~Suce ma tétine ! Suce-la !
-[COK2_27:BARON2]
-T'es sur MES plates-bandes, connard!
+[MAC1_EA:MAC1]
+~w~Allez, les filles ! Mettez-vous dans l'ambiance !
-[COK2_28:BARON2]
-Ta fin est proche!
+[MAC1_FA:MAC1]
+~w~MERDE ! Y a quelqu'un !
-[COK2_6:BARON2]
-Non. Je vais m'entraîner un peu en chemin.
+[MAC1_FB:MAC1]
+~w~Vite ! Dans la camionnette !
-[OPEN_B:BARON2]
-Les barrières sur les routes pour le centre ville ont été retirées.
+[MAC1_GA:MAC1]
+~w~Oh merde ! Merde !
-{=================================== MISSION TABLE BARON3 ===================================}
+[MAC1_GB:MAC1]
+~w~NE ME REGARDE PAS !
-[COK3_A:BARON3]
-Tu fais moins le fier maintenant, hein!
+[MAC1_BA:MAC1]
+~w~Salut, m'man !
-[COK3_B:BARON3]
-Ahahahaha, ahahahaha!
+[MAC1_BB:MAC1]
+~w~Regarde un peu cette photo ! C'est ton brave Giovanni Casa... qui porte des couches !
-[COK3_C:BARON3]
-Ho! Fais gaffe où tu braques ce truc!
+[MAC1_BC:MAC1]
+~w~C'est à ça que tu passes ton temps ?
-[COK3_D:BARON3]
-Plus de merde de pigeon sur ma bagnole, hein, Tommy!
+[MAC1_BD:MAC1]
+~w~A te faufiler dans les bois pour prendre des photos d'hommes ?
-[COK3_E:BARON3]
-Faut croire que non...
+[MAC1_BE:MAC1]
+~w~C'est quoi ton problème, Antonio ? Tu me fais honte !
-[COK3_F:BARON3]
-T'as sacrément raison. Bon, écoute,
+[MAC1_BF:MAC1]
+~w~Mais... ?
-[COK3_G:BARON3]
-tu sais qui possède le bateau le plus rapide de la côte est?
+[MAC1_BG:MAC1]
+~w~Et avec ou sans couche, il reste un bien meilleur homme que toi !
-[COK3_H:BARON3]
-Je suis pas bien sûr.
+[MAC1_B8:MAC1]
+~w~Maintenant, sors.
-[COK3_I:BARON3]
-MOI! Et je voudrais pas que ça change...
+[MAC1_B1:MAC1]
+~w~Prends ~r~Casa~w~ en filature, mais ne t'approche pas trop.
-[COK3_J:BARON3]
-Tous les contrebandiers d'ici à Caracas ne rêvent que d'un seul truc, un bateau plus rapide que le mien.
+[MAC1_C7:MAC1]
+~w~Fais un zoom sur ~r~Casa~w~ pour prendre une photo dont ~r~il aura honte.
-[COK3_K:BARON3]
-Et la rumeur prétend que le chantier naval Hull-o-caust vient juste d'en finir un
+[MAC1_D1:MAC1]
+~w~Ne lâche pas ~r~Casa~w~ ! Ca pourrait bien être l'occasion que tu attends.
-[COK3_L:BARON3]
-pour le compte de je ne sais quel connard du Costa Rica.
+{=================================== MISSION TABLE MAC2 ===================================}
-[COK3_M:BARON3]
-Alors, Tommy... JE VEUX CE BATEAU!
+[MAC2_AA:MAC2]
+~w~M'man ! M'man! Allez, m'man, parle-moi !
-[COK3_N:BARON3]
-Je crois que tes pigeons sont de retour...
+[MAC2_AB:MAC2]
+~w~Y a plus de m'man qui tienne, t'entends, espèce de lâche !
-[COK3_O:BARON3]
-Ah! Je croyais que je t'avais eu! D'où tu sors?
+[MAC2_AC:MAC2]
+~w~Ne me prends pas pour une imbécile ! Je sais pourquoi tu reviens pas t'installer ici !
-[COK3_P:BARON3]
-Pigeons d'mes deux! Boum! Aaaaah!
+[MAC2_AD:MAC2]
+~w~Tu as peur de quelques Triades !
-[COK3_5:BARON3]
-~g~Trouve l'interrupteur pour abaisser le bateau.
+[MAC2_AE:MAC2]
+~w~Ton père, Dieu ait son âme, n'aurait jamais laissé personne le chasser de chez lui !
-[COK3_6:BARON3]
-~g~Amène le bateau à la résidence.
+[MAC2_AF:MAC2]
+~w~Mais, m'man !
-[COK3_7:BARON3]
-~r~T'as détruit le bateau!
+[MAC2_AG:MAC2]
+~w~Mais ton père était pas un lâche, lui !
-[COK3_8:BARON3]
-~g~Va au chantier naval des docks et fauche le bateau le plus rapide.
+[MAC2_AH:MAC2]
+~w~Tant que les Triades te montreront pas un peu de respect, tu ne seras plus mon fils !
-[COK3_9:BARON3]
-~g~Monte dans le bateau.
+[MAC2_AI:MAC2]
+~w~A la rigueur ma fille, mais pas mon fils !
-{=================================== MISSION TABLE BARON4 ===================================}
+[MAC2_B1:MAC2]
+~w~Montre à ta mère que t'as pas peur des Triades. Occupe-toi des ~r~deux gangs de Triades~w~ à Chinatown !
-[COK4_A:BARON4]
-Ejection! Connerie d'engin!
+[MAC2_I1:MAC2]
+~w~Un chef des Triades se trouve dans cette ~r~camionnette blindée~w~. Fais-lui quitter la route !
-[COK4_B:BARON4]
-Pourquoi tu m'fais ça?
+[MAC2_I2:MAC2]
+~w~La ~r~camionnette ~w~file et elle perd sa cargaison ! Fais gaffe !
-[COK4_C:BARON4]
-Pour qui tu t'prends, putain de magnéto! Grrr!
+[MAC2_I3:MAC2]
+~w~Ils se barrent ! Descends ces ordures de ~r~Triades~w~.
-[COK4_D:BARON4]
-ENCULE!
+[MAC2_I4:MAC2]
+~w~Tu t'es fait repérer ! Liquide tous les ~r~membres des Triades !
-[COK4_E:BARON4]
-Si il m'bouffe ma cassette préférée d'El burro, il est fini!
+[MAC2_I5:MAC2]
+~w~Tu es dans le territoire des ~r~Triades~w~. Fais gaffe !
-[COK4_F:BARON4]
-Qu'est-ce que je peux faire d'autre?
+[MAC2_I6:MAC2]
+~w~C'est bon pour cette Triade ! Occupe-toi de l'autre ~r~gang !
-[COK4_G:BARON4]
-Il doit pas être branché, c'est tout...
+[MAC2_BA:MAC2]
+~w~Ouais ! T'as vu ça, m'man !?
-[COK4_H:BARON4]
-Hein?
+[MAC2_BB:MAC2]
+~w~C'est Toni Cipriani qui vous botte le cul !
-[COK4_I:BARON4]
-Merde! Tant pis, j'peux m'en acheter cent si ça me chante.
+[MAC2_BC:MAC2]
+~w~Oubliez pas ce nom, bande d'imbéciles !
-[COK4_J:BARON4]
-Bon, Tommy,
+{=================================== MISSION TABLE MAC3 ===================================}
-[COK4_K:BARON4]
-tous les mois, il y a un indépendant qui met le cap sur Vice City pour y amarrer son yatch.
+[MAC3_A0:MAC3]
+~w~M'man ? J'suis revenu...
-[COK4_L:BARON4]
-Il vend sa cargaison au premier bateau.
+[MAC3_A1:MAC3]
+~w~Regarde-toi ! Tu as l'air si maigre !
-[COK4_M:BARON4]
-Je veux que tu prennes le speedboat,
+[MAC3_A2:MAC3]
+~w~Si tu habitais encore ici, avec ta mère, comme un fils respectable, tu mangerais à ta faim !
-[COK4_N:BARON4]
-que tu largues tous les autres connards intéressés
+[MAC3_A3:MAC3]
+~w~Et quand je vois les voitures que tu conduis !
-[COK4_O:BARON4]
-et que tu ramènes la cargaison ici. Ok?
+[MAC3_A4:MAC3]
+~w~Tu me fais honte, Antonio, vraiment !
-[COK4_P:BARON4]
-Laisse-moi deviner. T'as pensé que je pourrais avoir besoin d'un ange-gardien.
+[MAC3_A5:MAC3]
+~w~Les gens doivent penser que je t'ai mal élevé !
-[COK4_Q:BARON4]
-Je dis juste que t'as intérêt à me laisser entrer, mon pote.
+[MAC3_A6:MAC3]
+~w~Qu'est-ce que j'y peux, m'man ? Tu sais que j'ferais n'importe quoi pour toi !
-[COK4_R:BARON4]
-Tu peux m'sortir tout un tas de conneries sur le dur solitaire,
+[MAC3_A7:MAC3]
+~w~Tu as vu ce Sucho qui fait la course en ville aujourd'hui ?
-[COK4_S:BARON4]
-mais je sais qu'un de ces quatre, j'vais t'sauver la mise.
+[MAC3_A8:MAC3]
+~w~Ah, si tu pouvais être comme lui !
-[COK4_T:BARON4]
-et qu'après tu voudras me rouler une pelle!
+[MAC3_A9:MAC3]
+~w~Il traite sa mère avec beaucoup de respect.
-[COK4_U:BARON4]
-Taré, va!
+[MAC3_AA:MAC3]
+~w~Evidemment, si ton père était encore là, il gagnerait la course, lui,
-[COK4_V:BARON4]
-Hahahaha
+[MAC3_AB:MAC3]
+~w~et il effacerait le sourire arrogant du visage de ce Sucho !
-[COK4_1:BARON4]
-Tommy, on sait que c'est Diaz qui a fait foirer notre deal...
+[MAC3_AC:MAC3]
+~w~Ouais, et il le plomberait en beauté !
-[COK4_3:BARON4]
-Alors pourquoi on bosse pour sa gueule?
+[MAC3_AD:MAC3]
+~w~Mais ton père était un homme, un vrai ! Il en avait !
-[COK4_4:BARON4]
-Plus on en apprend maintenant, plus on en saura quand on s'emparera de cette ville!
+[MAC3_B0:MAC3]
+~w~Prouve que tu vaux bien mieux que Sucho. Gagne la course et liquide-le.
-[COK4_5:BARON4]
-J'aime bien ton style, mon pote. Vraiment culotté.
+[MAC3_C0:MAC3]
+~w~T'as battu ~r~Sucho~w~ ! Maintenant, bute-le !
-[COK4_12:BARON4]
-Fais gaffe, ils arrivent de partout!
+[MAC3_C1:MAC3]
+~r~Il~w~ essaie de se barrer !
-[COK4_13:BARON4]
-On les a eu! Fonce chez Diaz aussi vite que tu peux!
+[MAC3_X0:MAC3]
+~r~T'as laissé filer Sucho !
-[COK4_14:BARON4]
-Tu veux ta part de plancton?
+[MAC3_C2:MAC3]
+~r~Sucho~w~ s'échappe !
-[COK4_15:BARON4]
-Salue la poiscaille de ma part!
+{=================================== MISSION TABLE MAC4 ===================================}
-[COK4_16:BARON4]
-Mange! Mange!
+[MAC4_A0:MAC4]
+~w~M'man ! M'man ! T'es là ?
-[COK4_19:BARON4]
-Encore des emmerdes droit devant!
+[MAC4_A1:MAC4]
+~w~Je ne te parle plus, Toni !
-[COK4_20:BARON4]
-Il y a des porte-flingues sur cette jetée!
+[MAC4_A2:MAC4]
+~w~Tu déshonores tes racines siciliennes !
-[COK4_24:BARON4]
-Joli coup, mon pote. T'es vraiment un cinglé de première!
+[MAC4_A3:MAC4]
+~w~Depuis que tu as pris cette photo de Casa, il a arrêté de payer sa prime de protection.
-[COK4_25:BARON4]
-Ah... Merci.
+[MAC4_A4:MAC4]
+~w~Et qu'est-ce que tu fais pour régler ça ?
-[COK4_26:BARON4]
-A la prochaine, Tommy.
+[MAC4_A5:MAC4]
+~w~RIEN !
-[COK4_27:BARON4]
-Okay, M. Lance Vance Danse.
+[MAC4_A6:MAC4]
+~w~Ton père l'aurait déjà transformé en viande froide !
-[COK4_28:BARON4]
-~g~Atteins le yatch avant les autres bateaux!
+[MAC4_A8:MAC4]
+~w~mais il faut des tripes pour snober un Cipriani !
-[COK4_31:BARON4]
-~g~Va jusqu'au bateau le plus rapide de la jetée!
+[MAC4_A9:MAC4]
+~w~Ah, si tu pouvais avoir ses tripes !
-[COK4_32:BARON4]
-~r~Trop lent!
+[MAC4_AA:MAC4]
+~w~Tu veux que j'aie les tripes de Casa ?
-[COK4_33:BARON4]
-~r~T'as détruit le bateau!
+[MAC4_AB:MAC4]
+~w~OK, m'man, tu les auras voulues !
-[COK4_34:BARON4]
-~g~Bousille ces bateaux!
+[MAC4_B:MAC4]
+~w~Va au ~y~traiteur de Giovanni Casa~w~ et persuade-le de venir faire un tour avec toi.
-[COK4_35:BARON4]
-Etat du bateau :
+[MAC4_B0:MAC4]
+~w~Salut, Toni... Ca roule ?
-{=================================== MISSION TABLE BARON5 ===================================}
+[MAC4_B1:MAC4]
+~w~Quoi de neuf ?
-[PROP_A:BARON5]
-PROPRIETE ACHETEE!
+[MAC4_B2:MAC4]
+~w~T'as perdu ta langue ?
-[COK4_30:BARON5]
-~r~Lance est mort!
+[MAC4_B3:MAC4]
+~w~Toi et moi, faut qu'on parle, Casa...
-[ASS1_A:BARON5]
-J'ai récupéré des flingues. Ils sont dans l'coffre.
+[MAC4_B4:MAC4]
+~w~On va se trouver un coin plus peinard...
-[ASS1_B:BARON5]
-Merde alors! Où c'est que t'as dégoté tout ça?
+[MAC4_C:MAC4]
+~w~Ne laisse pas ~r~Casa~w~ s'en sortir vivant.
-[ASS1_C:BARON5]
-Je l'gardais au frais pour une grande occasion...
+[MAC4_C1:MAC4]
+~w~Je payerai la prime de protection, Toni ! Je le jure !
-[ASS1_D:BARON5]
-Ca te botte?
+[MAC4_C2:MAC4]
+~w~Oh, arrête, Toni ! J'te donnerai tout ce que tu voudras !
-[ASS1_E:BARON5]
-Tu parles que ça m'botte.
+[MAC4_C3:MAC4]
+~w~Je ferai n'importe quoi, Toni ! Mais me fais pas de mal !
-[ASS1_F:BARON5]
-Espèce de connard...
+[MAC4_D1:MAC4]
+~w~OK ! OK ! Tu m'as eu !
-[ASS1_G:BARON5]
-Ma belle maison...
+[MAC4_D2:MAC4]
+~w~OK ! OK ! J'abandonne ! Mais me fais plus de mal !
-[ASS1_H:BARON5]
-Regarde ce que t'en as fait!
+[MAC4_D3:MAC4]
+~w~Amène-toi, ducon !
-[ASS1_I:BARON5]
-Ca c'est pour mon frère!
+[MAC4_E0:MAC4]
+~w~Emmène Casa à la ~y~scierie.
-[ASS1_J:BARON5]
-Je te faisais confiance, Tommy...
+[MAC4_E1:MAC4]
+~w~Ne laisse pas ~b~Casa !
-[ASS1_K:BARON5]
-Je t'aurais aidé à devenir...
+[MAC4_F0:MAC4]
+~w~Alors... euh... Où on va ?
-[ASS1_L:BARON5]
-Bonne nuit, Diaz.
+[MAC4_F1:MAC4]
+~w~On est toujours potes, hein, Toni ?
-[ASS1_1:BARON5]
-Cet endroit va bientôt grouiller de salopards... Fais gaffe.
+[MAC4_F2:MAC4]
+~w~... J'vais te filer le fric que je dois, juré !
-[ASS1_2:BARON5]
-T'en fais pas, Tommy, je te couvre.
+[MAC4_F3:MAC4]
+J'ai juste besoin d'un peu de temps...
-[ASS1_4:BARON5]
-Diaz doit être à l'intérieur!
+[MAC4_F4:MAC4]
+~w~Tu crois que ta mère aime les saucisses épicées ?
-[ASS1_13:BARON5]
-DIAZ! Je suis venu reprendre ton affaire!
+[MAC4_F5:MAC4]
+J'peux lui en dégotter sans problème !
-[ASS1_14:BARON5]
-TOMMY! Tu me trahis... Idiot! Je vais te buter tout de suite!
+[MAC4_G0:MAC4]
+~w~Alors... euh... de quoi tu veux parler, Toni ?
-[ASS1_16:BARON5]
-~g~Tue Diaz!
+[MAC4_G1:MAC4]
+~w~C'est pour la prime de protection ?
-[BUD1:BARON5]
-Lance
+[MAC4_G2:MAC4]
+~w~C'est ça, non ?
-[ASS1_18:BARON5]
-~g~La porte est verrouillée. Trouve un autre chemin.
+[MAC4_G3:MAC4]
+~w~...Toni ?
-[ASS1_19:BARON5]
-Par ici!
+[MAC4_G4:MAC4]
+~w~On peut en parler, hein, Toni ?
-[ASS1_20:BARON5]
-Tommy, mon problème c'est Quentin, pas toi, mec!
+[MAC4_G6:MAC4]
+~w~Les gens se parlent plus assez de nos jours, Toni.
-{=================================== MISSION TABLE BIKE1 ===================================}
+[MAC4_G7:MAC4]
+~w~Bouge plus et ferme-la, Casa.
-[BM1_A:BIKE1]
-Où est Baker?
+[MAC4_G8:MAC4]
+~w~OK, Toni ! Mais... je... j'me sens pas à l'aise.
-[BM1_B:BIKE1]
-Je cherche Big Mitch Baker...
+[MAC4_G9:MAC4]
+~w~Hé ! Attention avec ça, Toni ! C'est l'interrupteur de...
-[BM1_C:BIKE1]
-Qui le cherche?
+[MAC4_GA:MAC4]
+~w~AAARRRGGGHHHHHHHH !
-[BM1_D:BIKE1]
-Tommy Vercetti.
+[MAC4_GB:MAC4]
+~w~Dégage de là en vitesse !
-[BM1_E:BIKE1]
-Vercetti...
+[MAC4_H:MAC4]
+~w~La chair à saucisse maison à la sicilienne est dans la ~b~camionnette~w~, en attendant d'être livrée au traiteur de Casa.
-[BM1_F:BIKE1]
-T'as pas l'air d'un flic, ce qui te donne droit à une minute...
+[MAC4_H1:MAC4]
+~w~Fais la livraison au ~y~traiteur de Casa.
-[BM1_G:BIKE1]
-T'as intérêt à faire court!
+[MAC4_H2:MAC4]
+~w~Ne laisse pas la ~b~camionnette~w~ là-bas !
-[BM1_H:BIKE1]
-Kent Paul dit que ça pourrait t'intéresser de te charger de la sécurité pour un boulot qu'il prépare.
+[MAC4_H3:MAC4]
+~w~Sème les flics !
-[BM1_I:BIKE1]
-Kent Paul? Ah! Pas étonnant qu'il t'ai envoyé.
+[MAC4_I0:MAC4]
+~w~Une livraison de chair à saucisse spéciale ?
-[BM1_J:BIKE1]
-La dernière fois qu'il est passé ici, il en est ressorti par la fenêtre avec rien d'autre que son costume d'anglais.
+[MAC4_I1:MAC4]
+~w~Personne ne m'a prévenu !
-[BM1_K:BIKE1]
-Bon, t'es intéressé ou pas?
+[MAC4_I2:MAC4]
+~w~Waou ! On a dévalisé un zoo, ce coup-ci !
-[BM1_L:BIKE1]
-On ne rend des services qu'à ceux qui font partie de la bande.
+[MAC4_I3:MAC4]
+~w~Y a un gros tas de barbaque ici !
-[BM1_M:BIKE1]
-Comment je me joins à vous?
+[MAC4_I4:MAC4]
+~w~... Mmmm ! Délicieux ! OK, je suis preneur.
-[BM1_N:BIKE1]
-On est pas un club de loisirs, mon pote! Tu peux conduire une bécane?
+[MAC4_I6:MAC4]
+~w~S'il apprend ça, il va péter un plomb !
-[BM1_O:BIKE1]
-Tu peux t'asseoir sur un tabouret de bar et boire?
+[MAC4_I7:MAC4]
+~w~Et je l'aurai dans l'os !
-[BM1_P:BIKE1]
-Cougar, Zeppelin, allez voir comment elle se débrouille sur une bécane...
+[MAC4_X0:MAC4]
+~r~C'était trop rapide et indolore pour un contrat sicilien !
-[BM1_2:BIKE1]
-~g~Il te faut une Freeway ou une Angel pour participer!
+[MAC4_X1:MAC4]
+~r~Tu devais livrer la camionnette !
-[BM1_3:BIKE1]
-~r~Les concurrents ont été attaqués!
+[MAC4_X2:MAC4]
+~r~T'as perdu Casa !
-[BIKE1_1:BIKE1]
-Bon, chouettes fringues. Voyons ce que tu peux faire.
+[MAC4_E2:MAC4]
+~w~Ne quitte pas la ~y~scierie !
-[BM1_1:BIKE1]
-~g~Enfourche une Freeway ou une Angel et va sur la grille de départ.
+[MAC4_I5:MAC4]
+~w~Heureusement que Casa n'est pas là.
-{=================================== MISSION TABLE BIKE2 ===================================}
+[MAC4_G5:MAC4]
+~w~Ouais ! Ouais ! C'est bien de parler.
-[BM2_4:BIKE2]
-~r~Tu n'as pas rempli le chaosmètre à temps!
+[MAC4_CN:MAC4]
+~w~Appelez les flics !
-[BM2_1:BIKE2]
-CHAOSMETRE :
+[MAC4_CO:MAC4]
+~w~Cherchez de l'aide !
-[BM2_A:BIKE2]
-Ha ha ha, je t'ai encore eu!
+[MAC4_CP:MAC4]
+~w~Allez chercher de l'aide !
-[BM2_B:BIKE2]
-Hé, Vercetti.
+[MAC4_CQ:MAC4]
+~w~Au secours !
-[BM2_C:BIKE2]
-Cougar dit que tu te débrouilles plutôt bien sur une bécane.
+[MAC4_CR:MAC4]
+~w~Aidez-moi !
-[BM2_D:BIKE2]
-Ouais, mais combien d'épreuves il va encore falloir que je me tape?
+[MAC4_CS:MAC4]
+~w~Sortez-moi de là !
-[BM2_E:BIKE2]
-Je suis très occupé, mon pote.
+[MAC4_A7:MAC4]
+~w~Casa est peut-être un peu bizarre,
-[BM2_F:BIKE2]
-Si c'est une baston qui peut régler la question, alors amène-toi!
+[MAC4_C0:MAC4]
+~w~On pourrait pas agir comme des gens civilisés, Toni?
-[BM2_G:BIKE2]
-Devenir l'un d'entre nous, c'est pas qu'une question de baston. C'est appartenir à une famille.
+[MAC4_1:MAC4]
+~w~Rapproche-toi de ~r~Casa ~w~en te faufilant derrière ~r~lui.
-[BM2_H:BIKE2]
-Ouais, j'ai déjà appartenu à une famille avant et ça n'a pas bien collé.
+{=================================== MISSION TABLE MAC5 ===================================}
-[BM2_I:BIKE2]
-Peut-être, mais notre famille veille sur les siens.
+[MAC5_AA:MAC5]
+~w~M'man ? T'es là ?
-[BM2_J:BIKE2]
-On demande à personne de faire le sale boulot pour l'abandonner au trou pendant quinze ans...
+[MAC5_AB:MAC5]
+~w~Toni ? ... Je suis au téléphone...
-[BM2_K:BIKE2]
-Et ouais, je me suis renseigné.
+[MAC5_AC:MAC5]
+~w~...ouais, il vient d'arriver... OK... OK... J'essaie de gagner du temps... ciao.
-[BM2_L:BIKE2]
-Ce que tu vois, c'est la plus grande famille d'inadaptés, de parias et d'ordures qui existe.
+[MAC5_AD:MAC5]
+~w~Toni ? Tu es encore venu contrarier ta mère, hein !?
-[BM2_M:BIKE2]
-Certains ont même été trahis par leur propre pays!
+[MAC5_AE:MAC5]
+~w~Tu passes tes journées à jouer les durs.
-[BM2_N:BIKE2]
-On m'a foutu en taule pendant la guerre du Vietnam! Saloperie...
+[MAC5_AF:MAC5]
+~w~Tu viens jamais me voir, et tu ne me présentes même pas de fiancée !
-[BM2_O:BIKE2]
-Voilà pourquoi je vais te demander d'aller foutre le bordel.
+[MAC5_AG:MAC5]
+~w~De toute façon, qui voudrait de toi ? Si maigre et si blafard !
-[BM2_P:BIKE2]
-Ce pays de merde a vraiment besoin d'un coup de pied au cul et c'est nous qui allons le lui donner!
+[MAC5_AH:MAC5]
+~w~T'essaies de me faire mourir d'inquiétude et de honte !? ~w~Eh bien, c'est fini !
-[BM2_Q:BIKE2]
-Alors sors de là, attrape une bécane et montre à cette ville à quel point t'es énervé!
+[MAC5_AI:MAC5]
+~w~Maintenant... C'est terminé !
-[BM2_R:BIKE2]
-D'accord.
+[MAC5_AJ:MAC5]
+~w~J'ai placé un contrat sur ta tête. C'était le seul moyen, Antonio...
-[BM2_2:BIKE2]
-~g~Tu dois remplir le chaosmètre dans le temps imparti pour nous prouver que t'es un dur de dur!
+[MAC5_AK:MAC5]
+~w~... pour t'apprendre l'obéissance...
-[BM2_3:BIKE2]
-~g~Ce bruit veut dire qu'une partie du chaosmètre est remplie, continue comme ça.
+[MAC5_AL:MAC5]
+~w~Quoi ? M'man !
-{=================================== MISSION TABLE BIKE3 ===================================}
+[MAC5_AM:MAC5]
+~w~C'est pour ton bien, mon fils, essaie au moins de mourir en homme !
-[BM3_A:BIKE3]
-Salut, Mitch.
+[MAC5_AN:MAC5]
+~w~Et arrête de me couvrir de honte !
-[BM3_B:BIKE3]
-Hé! Mais c'est ce gros méchant de Vercetti!
+[MAC5_B1:MAC5]
+~w~Les tueurs de ta mère sont là !
-[BM3_C:BIKE3]
-Maintenant, je veux voir à quel point tu peux te battre pour ton secteur.
+[MAC5_B2:MAC5]
+~w~Montre à ta mère que tu vaux bien mieux que ses ~r~tueurs~w~. Tue-les tous !
-[BM3_D:BIKE3]
-Un gang local a commis l'erreur de me faucher ma bécane...
+[MAC5_B3:MAC5]
+~w~Ils sont vraiment fous de rage ! Liquide-~r~les !
-[BM3_E:BIKE3]
-Probablement un truc de machos ou quelque chose de ce genre.
+[MAC5_B4:MAC5]
+~w~Les ~r~tueurs~w~ savent que t'es là. Tu dois t'éloigner de Saint Mark's !
-[BM3_F:BIKE3]
-Moi et mes gars, on pourrait aller leur donner la leçon qu'ils méritent...
+[MAC4_B6:MAC5]
+~w~D'autres ~r~tueurs~w~ s'amènent ! Dégage de Saint Mark's ! Ils savent où tu es !
-[BM3_G:BIKE3]
-Enfin...
+[MAC4_B7:MAC5]
+~w~UNE GRENADE ! COURS !
-[BM3_H:BIKE3]
-Je me suis dit que ça serait une excellente initiation pour toi.
+[MAC5_C1:MAC5]
+~w~Tu t'es débarrassé de ceux-là... Mais ils ont été payés et d'autres respecteront le contrat, peu importe le temps que ça prendra.
-[BM3_I:BIKE3]
-Tu me ramènes ma bécane et tu pourras dire à Paul qu'on assurera la sécurité.
+[MAC5_C2:MAC5]
+~w~T'es prévenu... Ils reviendront !
-[BM3_2:BIKE3]
-~r~Tu étais supposé ramener la bécane, pas la bousiller!
+[HM1:MAC5]
+~w~Ils ne laissent pas tomber ! D'autres ~r~tueurs~w~ se dirigent vers toi. Elimine-les !
-[BM3_3:BIKE3]
-~g~Ramène la bécane au bar!
+[HM2:MAC5]
+~w~Attention ! Les ~r~tueurs~w~ se rapprochent. Descends-les !
-[BM3_4:BIKE3]
-~g~Monte sur la bécane!
+[HM3:MAC5]
+~w~D'autres ~r~tueurs~w~ approchent ! Explose-les !
-[INTRUDE:BIKE3]
-~g~T'as été repéré!
+[HM4:MAC5]
+~w~Voici d'autres ~r~tueurs~w~ qui s'amènent ! Tue-les !
-[BM3_6:BIKE3]
-~g~Ils se planquent derrière Ammu-Nation dans le centre.
+[MAC5_B5:MAC5]
+~w~Occupe-toi des derniers ~r~tueurs~w~, mais n'entre pas dans Saint Mark's !
-[BM3_7:BIKE3]
-~g~T'auras besoin d'une bécane rapide pour accéder au toit.
+{=================================== MISSION TABLE MAR1 ===================================}
-[BM3_8:BIKE3]
-~g~Sers-toi de la bécane pour sauter de ces marches jusqu'à l'autre côté de la route.
+[MAR1M1:MAR1]
+~w~T'es en retard. Ah, les hommes...
-[BM3_1:BIKE3]
-~g~Un gang local a volé l'Angel de Mitch Baker. Récupère-la!
+[MAR1M2:MAR1]
+~w~Je vais faire du shopping et toi, tu conduis.
-[BM3_9:BIKE3]
-~g~Récupère l'Angel de Mitch Baker et dégage de là!
+[MAR1M3:MAR1]
+~w~Alors sois gentil, je veux m'amuser aujourd'hui, même si t'en crèves !
-{=================================== MISSION TABLE BMX_1 ===================================}
+[MAR1M4:MAR1]
+~w~Je vais juste finir de me préparer.
-[BMX_REC:BMX_1]
-~g~Nouveau record établi : ~1~!
+[MAR1M5:MAR1]
+~w~Oh, pis non ! Je suis parfaite ! On y va, Toni !
-[GETBIK2:BMX_1]
-Tu as ~1~ secondes pour enfourcher une bécane!
+[MAR1_B:MAR1]
+~w~Conduis Maria au ~y~magasin.
-{=================================== MISSION TABLE BOATBUY ===================================}
+[MAR1_D:MAR1]
+~w~Attends-moi ici, mon chou, ça sera pas long...
-[DRUG_1:BOATBUY]
-Bonjour? Y'a quelqu'un? Y'A QUELQU'UN???
+[MAR1_D2:MAR1]
+~w~Mais je voulais juste voir ce que ça donnait à la lumière du jour !
-[DRUG_2:BOATBUY]
-Ferme-la. Il y a un mec, ici.
+[MAR1_E:MAR1]
+~w~Tirons-nous de là !
-[DRUG_3:BOATBUY]
-Hé, mon pote! T'es le nouveau proprio?
+[MAR1_E3:MAR1]
+~w~Retourne chercher ~b~Maria.
-[DRUG_4:BOATBUY]
-Ouais. Lequel de ces bateaux est le plus rapide?
+[MAR1_F:MAR1]
+~w~C'était génial ! Mais je dois encore récupérer deux trois trucs.
-[DRUG_5:BOATBUY]
-Il est déjà à l'eau, mon pote,
+[MAR1_G:MAR1]
+~w~Laisse tourner le moteur...
-[DRUG_6:BOATBUY]
-je me suis dit que tu voudrais peut-être l'essayer.
+[MAR1_GB:MAR1]
+~w~Déconne pas, Maria ! Arrête de faucher !
-[DRUG_7:BOATBUY]
-Mon pote, il est déjà équipé d'un moteur de 300 chevaux...
+[MAR1_GC:MAR1]
+~w~Mais non, mon chou ! C'était juste un malentendu !
-[DRUG_8:BOATBUY]
-...et avec la coque en fibre de verre, il touche même pas l'eau!
+[MAR1_G2:MAR1]
+~w~Puisque je vous dis que j'ai rien caché !
-[DRUG_9:BOATBUY]
-Il monte à 60 noeuds en quatre secondes, mon pote...
+[MAR1_H:MAR1]
+~w~Ramène-moi chez moi !
-[DRUG_10:BOATBUY]
-Et il peut embarquer vingt écopes de la meilleure jamaïquaine dans la coque.
+[MAR1_I:MAR1]
+~w~Si tu m'abandonnes ici, je demanderai à Salvatore de te les couper !
-[DRUG_11:BOATBUY]
-Alors vas-y, mon pote, il t'attend pour décoler!
+[MAR1_J:MAR1]
+~r~Maria est morte ! Le monde est pas humain !
-[DRUG_12:BOATBUY]
-Ouais, hé, mon pote, t'as du feu?
+[MAR1_K:MAR1]
+~w~Toni, mon chou, je me suis bien amusée !
-[DRUG_13:BOATBUY]
-Mec?
+[MAR1_K2:MAR1]
+~w~Repasse donc un peu plus tard si tu veux qu'on s'amuse... tous les deux...
-{=================================== MISSION TABLE CAP_1 ===================================}
+[MAR1_K3:MAR1]
+~w~A plus tard, mon chou !
-[CAP1_B1:CAP_1]
-~g~La mafia taxe tes commerces. Trouve-les et bute-les.
+[MAR1_L:MAR1]
+~w~Les flics sont à nos trousses ! T'as intérêt à les semer !
-[CAP1_B2:CAP_1]
-~g~La mafia taxe le chantier naval!
+[MAR1_L2:MAR1]
+~w~On les a semés ! Allons faire du shopping !
-[CAP1_B3:CAP_1]
-~g~La mafia taxe l'usine de crème glacée!
+[MAR1_M:MAR1]
+~w~STOP ! VOLEUSE !
-[CAP1_B4:CAP_1]
-~g~La mafia taxe la concession automobile!
+[MAR1EXT:MAR1]
+~w~Ramène Maria à son ~y~appartement.
-[CAP1_B5:CAP_1]
-~g~La mafia taxe la compagnie de taxis!
+[MAR1_D3:MAR1]
+~w~Enlevez vos sales pattes de moi !
-[CAP_01:CAP_1]
-Ok, où est l'urgence?
+[MAR1_G3:MAR1]
+~w~Foutez-moi la paix !
-[CAP_02:CAP_1]
-QUI?
+[MAR1_E2:MAR1]
+~w~Sème les flics !
-[CAP_03:CAP_1]
-Tommy... Des truands de la mafia... Ils ont dit qu'ils venaient prendre leur part...
+{=================================== MISSION TABLE MAR2 ===================================}
-[CAP_04:CAP_1]
-... Ils ont dit que c'était le pognon de Mr Forello... J'me sens mal...
+[MAR2_AA:MAR2]
+~w~C'est bon ! Un des molosses de Salvatore me conduit tout de suite...
-[CAP_05:CAP_1]
-Forelli? SONNY Forelli?
+[MAR2_AB:MAR2]
+~w~... oh, c'est un charmeur...
-[CAP_06:CAP_1]
-Ouais, c'est ça... je crois... Ils ont beaucoup insisté...
+[MAR2_AC:MAR2]
+~w~Peut-être un peu trop maigre...
-[CAP_07:CAP_1]
-T'inquiète pas, je suis pas en colère contre toi.
+[MAR2_AE:MAR2]
+~w~Bon, écoute, je veux faire la fête, mais le placard est vide...
-[CAP_08:CAP_1]
-Emmène-le à l'hosto.
+[MAR2_AF:MAR2]
+~w~T'as pas un peu de sucre ? Pure cane ?
-[CAP_09:CAP_1]
-Tommy... Taille un nouveau trou du cul à ce salopard de ma part...
+[MAR2_AG:MAR2]
+~w~Génial. Ciao !
-[CAP_10:CAP_1]
-Je vais lui en rajouter deux!
+[MAR2_AH:MAR2]
+~w~En route, Toni ! J'ai des courses à faire.
-[CAP1_2:CAP_1]
-Tu connais la règle, Vercetti!
+[MAR2_BA:MAR2]
+~w~T'as pas de caisse ?
-[CAP1_3:CAP_1]
-Avec les compliments de M. Forelli!
+[MAR2_BB:MAR2]
+~w~Dépêche ! Mon dealer va pas m'attendre toute la journée.
-[CAP1_4:CAP_1]
-C'est le boucher d'Harwood!
+[MAR2_3F:MAR2]
+~w~Conduis Maria jusqu'à son ~y~dealer.
-[CAP1_5:CAP_1]
-Tu diras à Sonny... de dégager!
+[MAR2_BC:MAR2]
+~w~Les voilà. Arrête-toi juste derrière eux. C'est bien...
-[CAP1_6:CAP_1]
-Vice City est à moi, désormais, pas à lui!
+[MAR2_GA:MAR2]
+~w~Attends-moi ici.
-[CAP1_7:CAP_1]
-Tu crois que tu peux m'avoir, Vercetti?
+[MAR2_GB:MAR2]
+~w~J'suis pas sûr d'aimer ça.
-[CAP1_8:CAP_1]
-On va continuer à s'amener jusqu'à ce que tu sois raide mort, Vercetti!
+[MAR2_GC:MAR2]
+~w~C'est gentil de t'inquiéter, mais j'suis la nana de Salvatore, tout ira bien.
-[CAP1_9:CAP_1]
-T'as pas une chance, connard psychotique!
+[MAR2_GE:MAR2]
+~w~J'vais nulle part avec vous ! Vous vous prenez pour qui ?
-[CAP1_10:CAP_1]
-Je vais te descendre, Vercetti!
+[MAR2_GF:MAR2]
+~w~Fonce !
-[CAP1_11:CAP_1]
-T'as toujours été un con!
+[MAR2_GG:MAR2]
+~w~Toni !
-[CAP1_12:CAP_1]
-Tu vas crever, Vercetti!
+[MAR2_GH:MAR2]
+~w~Oh, meeeerde !
-[CAP1_B6:CAP_1]
-~g~Tu as trouvé l'encaisseur. Tue-le.
+[MAR2_19:MAR2]
+~w~Tue les ~r~Sindacco !
-[CAP1_B7:CAP_1]
-~g~Tu as perdu l'encaisseur.
+[MAR2_EA:MAR2]
+~w~T'es contente de toi ?
-[CAP1_B8:CAP_1]
-~r~L'encaisseur a taxé toutes tes affaires.
+[MAR2_EB:MAR2]
+~w~Toni Cipriani. Mon Héros !
-[CAP1_B9:CAP_1]
-~g~La mafia a taxé le Malibu!
+[MAR2_EC:MAR2]
+~w~Tu sais quoi ? Je me suis assez amusée. Ramène-moi, mon chou...
-[CAP1_B0:CAP_1]
-~g~La mafia a taxé le studio de cinéma!
+[MAR2_HA:MAR2]
+~w~Alors, euh... Tu montes boire un café... ou autre chose... ?
-[CAP1_C2:CAP_1]
-~g~La mafia est arrivée au chantier naval!
+[MAR2_HB:MAR2]
+~w~Une autre fois.
-[CAP1_C3:CAP_1]
-~g~La mafia est arrivée à l'usine de crème glacée!
+[MAR2_HC:MAR2]
+~w~T'es sûr ? Ben, appelle-moi...
-[CAP1_C4:CAP_1]
-~g~La mafia est arrivée à la concession automobile!
+[MAR2_O2:MAR2]
+~w~Ramène Maria à son ~y~appartement.
-[CAP1_C5:CAP_1]
-~g~La mafia est arrivée à la compagnie de taxis!
+[MAR2_CA:MAR2]
+~w~Vite, Toni !
-[CAP1_C9:CAP_1]
-~g~La mafia est arrivée au Malibu!
+[MAR2_CB:MAR2]
+~w~C'est pas vrai, Toni, allez !
-[CAP1_C0:CAP_1]
-~g~La mafia est arrivée au studio de cinéma!
+[MAR2_CC:MAR2]
+~w~Au secours, Toni !
-[CAP1_D2:CAP_1]
-~g~La mafia quitte le chantier naval!
+[MAR2_CD:MAR2]
+~w~A l'aide !
-[CAP1_D3:CAP_1]
-~g~La mafia quitte l'usine de crème glacée!
+[MAR2_CE:MAR2]
+~w~Dépêche !
-[CAP1_D4:CAP_1]
-~g~La mafia quitte la concession automobile!
+[MAR2_FA:MAR2]
+~w~Et où je trouve ma came, maintenant, moi ?
-[CAP1_D5:CAP_1]
-~g~La mafia quitte la compagnie de taxis!
+[MAR2_FB:MAR2]
+~w~Tu crains, Toni !
-[CAP1_D9:CAP_1]
-~g~La mafia quitte le Malibu!
+[MAR2_LM:MAR2]
+~w~T'as abandonné ~b~Maria~w~ ! Retourne la chercher.
-[CAP1_D0:CAP_1]
-~g~La mafia quitte le studio de cinéma!
+[MAR2_MD:MAR2]
+~r~Maria est morte.
-[CAP1B10:CAP_1]
-Tu t'es occupé des taxeurs. Y'en a d'autres qui arrivent.
+[MAR2_WA:MAR2]
+~w~Les ~r~dealers~w~ s'échappent !
-{=================================== MISSION TABLE CARBUY ===================================}
+[MAR2_DM:MAR2]
+~r~Les dealers t'ont semé !
-[CAR1_1:CARBUY]
-B.J. Smith. Et vous devez être Mr Vercetti.
+[MAR2_DA:MAR2]
+~w~Tu parles d'un héros !
-[CAR1_2:CARBUY]
-Vous voulez visiter?
+[MAR2_DF:MAR2]
+~r~T'as fait peur aux dealers de Maria !
-[CAR1_3:CARBUY]
-Pourquoi pas?
+[MAR2_18:MAR2]
+~w~Percute la ~r~voiture des Sindacco~w~ pour sauver Maria !
-[CAR1_4:CARBUY]
-Vous savez, je suis bien triste de vendre l'affaire...
+[MAR2_AD:MAR2]
+~w~... ouais.
-[CAR1_5:CARBUY]
-C'était mon premier investissement de professionnel.
+{=================================== MISSION TABLE MAR3 ===================================}
-[CAR1_6:CARBUY]
-Mais l'heure est venue pour moi de continuer ma route.
+[MAR3_A0:MAR3]
+~w~Cher Toni, je me suis offerte comme premier prix d'une course urbaine.
-[CAR1_7:CARBUY]
-Vous quittez la ville?
+[MAR3_A1:MAR3]
+~w~Si Salvatore l'apprend, on aura tous les deux de gros ennuis...
-[CAR1_8:CARBUY]
-Pas trop pressé, j'espère?
+[MAR3_A2:MAR3]
+~w~Alors, tu ferais mieux de venir sauver mes fesses... Et peut-être même que tu pourras en profiter !
-[CAR1_9:CARBUY]
-Non, je sors juste de ma retraite et je prépare mon retour dans les affaires.
+[MAR3_A3:MAR3]
+~w~Je t'embrasse, Maria.
-[CAR1_10:CARBUY]
-Cette affaire était pas trop solide,
+[MAR3_E0:MAR3]
+~w~Allez, Maria ! On y va !
-[CAR1_11:CARBUY]
-mais mon personnel a pris sur lui de faire un peu plus
+[MAR3_E1:MAR3]
+~w~Ah, monsieur le dur passe enfin à l'action !
-[CAR1_12:CARBUY]
-créatif en ce qui concerne les méthodes pour devenir rentable.
+[MAR3_E2:MAR3]
+~w~Ecoute, Maria. T'es la poule de Salvatore...
-[CAR1_13:CARBUY]
-Evidemment, je pourrais démanteler l'affaire avant de la refiler.
+[MAR3_E3:MAR3]
+~w~Je suis la poule de personne !
-[CAR1_14:CARBUY]
-Merde, je pourrais y foutre le feu si ça me chantait.
+[MAR3_E4:MAR3]
+~w~... T'es vraiment qu'un sale ringard !
-[CAR1_15:CARBUY]
-C'est un terrain de premier ordre.
+[MAR3_E5:MAR3]
+~w~Allons-y, Wayne ! On va faire la fête !
-[CAR1_16:CARBUY]
-Oh, je ne m'en ferais pas pour ça.
+{=================================== MISSION TABLE MAR4 ===================================}
-[CAR1_17:CARBUY]
-Cet endroit me semble idéal.
+[MAR4_B1:MAR4]
+~w~Wayne est avec son gang à ~y~Chinatown.
-[CAR1_18:CARBUY]
-Ouais, il l'est, alors, marché conclu?
+[MAR4_B2:MAR4]
+~w~Va là-bas et liquide-le !
-{=================================== MISSION TABLE CARPAR1 ===================================}
+[MAR4_C1:MAR4]
+~r~Wayne~w~ se tire ! Grimpe sur une moto et explose-le !
-[MM_1_A:CARPAR1]
-~g~Récupère ~y~5 points de passage~r~ SANS ~g~renverser de ~r~CONES! ~g~Tu peux les récupérer dans ~y~N'IMPORTE QUEL ORDRE.
+[MAR4_C3:MAR4]
+~w~T'es en train de le perdre ! Laisse pas ~r~Wayne ~w~se barrer !
-[CONE_1:CARPAR1]
-~r~Tu as renversé un cône!
+[MAR4_D1:MAR4]
+~w~C'est toi, Wayne ?
-[MM_1_C:CARPAR1]
-~y~FRANCHIS~g~ un point de passage pour enclencher le compteur. ~g~Chaque point de passage te crédite ~y~~1~ SECONDES~g~.
+[MAR4_D2:MAR4]
+~w~Ca dépend, c'est pour qui ?
-{=================================== MISSION TABLE COPCAR ===================================}
+[MAR4_D3:MAR4]
+~w~J'suis un pote à Maria.
-[CLEVEL:COPCAR]
-Missions d'autodéfense niveau ~1~
+[MAR4_D4:MAR4]
+~w~... Alors, ça t'excite de cogner les gonzesses ?
-[C_COMP1:COPCAR]
-Niveau 12 de mission Auto-défense réussi : votre max de gilet pare-balles passe à 150.
+[MAR4_D5:MAR4]
+~w~Cette salope l'avait cherché !
-[KILLS:COPCAR]
-VICTIMES :
+[MAR4_D6:MAR4]
+~w~Ah ouais ? Alors, toi aussi !
-[C_BREIF:COPCAR]
-~g~Suspect aperçu pour la dernière fois dans le secteur ~a~.
+[MAR4_D7:MAR4]
+~w~Chopez-le !
-[C_PASS:COPCAR]
-MENACE ENRAYEE : $~1~
+[MAR4_T1:MAR4]
+~w~Amène-toi, guignol !
-[COPCART:COPCAR]
-~g~Tu as ~1~ secondes pour retourner à une voiture de police avant que la mission ne s'achève.
+[MAR4_T2:MAR4]
+~w~T'es vraiment qu'un gros naze !
-[C_CANC:COPCAR]
-~r~Mission d'autodéfense annulée!
+[MAR4_T3:MAR4]
+~w~Tu sais même pas conduire une moto !
-[C_TIME:COPCAR]
-~r~Ta carrière de flic est terminée!
+[MAR4_T4:MAR4]
+~w~Si t'approches assez près, tu pourras embrasser mon cul !
-{=================================== MISSION TABLE COUNT1 ===================================}
+[MAR4_F1:MAR4]
+~r~T'as laissé filer Wayne !
-[CM1_A:COUNT1]
-Vercetti? Hé, vous avez acheté la vieille imprimerie?
+[MAR4_P1:MAR4]
+~w~T'as eu ce gros naze !
-[CM1_B:COUNT1]
-Ouais, mon vieux a travaillé sur ces machines.
+[MAR4_H1:MAR4]
+Santé de Wayne
-[CM1_C:COUNT1]
-J'aurais voulu marcher sur ses traces, mais... J'ai suivi une autre voie.
+[MAR4_C4:MAR4]
+~w~Ne perds pas de vue ~r~Wayne. ~w~Poursuis-le et élimine-le !
-[CM1_D:COUNT1]
-Vous avez l'intention de vendre les vieilles machines, et de tout casser?
+[BIK_01:MAR4]
+Qu'est-ce que t'as pris ?
-[CM1_E:COUNT1]
-Je m'disais qu'on pourrait peut-être imprimer quelque chose, un journal ou un magazine...
+[BIK_02:MAR4]
+Rien.
-[CM1_F:COUNT1]
-Arrête tes conneries, fiston! J'ai toujours rêvé d'imprimer mon propre pognon! C'est pas très compliqué!
+[BIK_03:MAR4]
+C'était quoi, ce coup-ci ?
-[CM1_G:COUNT1]
-Tu sais, j'ai fait ça sur une petite échelle pendant des années.
+[BIK_04:MAR4]
+De l'héro ? Des calmants ? Des quaaludes ? Un peu trop de coke ?
-[CM1_H:COUNT1]
-Ah ouais?
+[BIK_08:MAR4]
+Qui t'a fait ça ?
-[CM1_I:COUNT1]
-Ouais. Mais il nous faut des plaques de bonne qualité.
+[BIK_09:MAR4]
+Personne.
-[CM1_J:COUNT1]
-Evidemment! Il y a un syndicat de contrefaçon qui opère déjà en Floride!
+[BIK_10:MAR4]
+Qui c'est ?
-[CM1_K:COUNT1]
-Un syndicat?
+[BIK_11:MAR4]
+Un mec que je fréquente, Wayne.
-[CM1_L:COUNT1]
-Ouais. C'est le bruit qui court en tout cas.
+[BIK_12:MAR4]
+Un mec que tu fréquentes... T'es la nana d'mon patron !
-[CM1_M:COUNT1]
-Je connais un mec qui en saura sûrement plus...
+[BIK_13:MAR4]
+Ecoute, Toni, faut être plus cool. D'ailleurs, il me file du super speed, tu sais...
-[CM1_N:COUNT1]
-On avait l'habitude de passer nos soirées ensemble, à nettoyer les rouleaux...
+[BIK_14:MAR4]
+Une fille, ça a besoin d'excitants.
-[CM1_2A:COUNT1]
-Mate-moi ce cul!
+[BIK_15:MAR4]
+Et au lit, ça rend vraiment sauvage...
-[CM1_2B:COUNT1]
-Ok, ma belle, c'est l'heure de l'initiation!
+[BIK_16:MAR4]
+Ferme-la. Pourquoi il t'a fait ça,
-[CM1_2C:COUNT1]
-Salut, vieille branche, comment ça va?
+[BIK_17:MAR4]
+ce connard de Wayne ?
-[CM1_2D:COUNT1]
-Que sais-tu à propos de la contrefaçon?
+[BIK_18:MAR4]
+Je lui ai dit que j'étais amoureuse d'un autre.
-[CM1_2E:COUNT1]
-Oh, je vais bien, Paul, et toi?
+[BIK_19:MAR4]
+Je lui ai parlé de nous, Toni.
-[CM1_2F:COUNT1]
-Viens ici!
+[BIK_22:MAR4]
+Où il est, ce Wayne ?
-[CM1_2G:COUNT1]
-Bon! Bon! Bon! Tu es visiblement un homme très occupé!
+[BIK_23:MAR4]
+Il deale dans un bar de Chinatown.
-[CM1_2H:COUNT1]
-Tout ce que je sais, c'est que les Triades fournissent les plaques.
+[BIK_24:MAR4]
+Je t'aime, Toni Cipriani.
-[CM1_2I:COUNT1]
-Elles ont une compagnie de navigation sur les quais
+[BIK_06:MAR4]
+- Un peu trop de remontants pas assez forts ? ~n~ - Ferme-la, Toni !
-[CM1_2J:COUNT1]
-et le patron devrait savoir quand les plaques arrivent!
+[BIK_05:MAR4]
+Ou pas assez d'antidépresseurs ?
-[CM1_2K:COUNT1]
-Merci, Paul.
+[BIK_20:MAR4]
+- Et alors, il m'a cognée ! ~n~ - Y a rien entre toi et moi ! Merde, j'hallucine...
-[CM1_2L:COUNT1]
-C'est quoi ton problème, pauvre maniaque!
+{=================================== MISSION TABLE MAR5 ===================================}
-[CM1_2M:COUNT1]
-Un autre verre, en vitesse!
+[MAR5_EA:MAR5]
+~w~Pourquoi tu m'as conduite ici ?
-[CM1_3:COUNT1]
-~g~T'as été repéré!
+[MAR5_EB:MAR5]
+~w~Ma came est pas là... Ici, c'est le coin où Wayne traînait toujours.
-[CM1_5:COUNT1]
-~g~Va retrouver Kent Paul au Malibu!
+[MAR5_EC:MAR5]
+~w~... Je me souviens ! J'ai un peu de zap caché dans Hepburn Heights !
-[CNT1_1:COUNT1]
-T'es qui toi? Aïe! Pas le visage! Pas le visage!
+[MAR5_ED:MAR5]
+~w~Hé, c'est cette salope de Maria ! Et c'est l'enfoiré qu'a buté Wayne !
-[CM1_1:COUNT1]
-~g~Va au bateau de la Chartered Libertine Lines sur les docks.
+[MAR5_AA:MAR5]
+~w~J'ai caché le zap derrière la poubelle !
-[CM1_2:COUNT1]
-~g~L'officier de navigation détient l'information dont tu as besoin.
+[MAR5_AB:MAR5]
+~w~Merde ! Les ordures ont été enlevées !
-[CNT1_2:COUNT1]
-Ok, je parle! Je parle!
+[MAR5_AC:MAR5]
+~w~Attends ! Je me souviens ! J'ai une autre cachette dans mon appart' !
-[CM1_6:COUNT1]
-~g~Ramène l'info à l'imprimerie!
+[MAR5_AD:MAR5]
+~w~T'es sûre, ce coup-ci ?
-{=================================== MISSION TABLE COUNT2 ===================================}
+[MAR5_AE:MAR5]
+~w~Evidemment !
-[CNT2_B1:COUNT2]
-Bon, le coursier déplace les plaques des docks aujourd'hui.
+[MAR5_BA:MAR5]
+~w~Je voulais dire chez Salvatore ! Chez Salvatore !
-[CNT2_B2:COUNT2]
-Faut l'intercepter et récupérer ces plaques, semer les flics éventuels et revenir ici.
+[MAR5_BB:MAR5]
+~w~Tu te fous de moi, Maria !?
-[CNT2_B3:COUNT2]
-En fonction de comment ça marche,
+[MAR5_FA:MAR5]
+~w~Qu'est-ce que c'est que ce chauffeur ? J'attends depuis des plombes ! J'aurais pu faire une OD !
-[CNT2_B4:COUNT2]
-on aura entre cinq minutes et toute l'année pour imprimer le pognon avant que le syndicat de contrefaçon rapplique.
+[MAR5_FB:MAR5]
+~w~Je suis horrible ! Il me faut une nouvelle garde-robe, de nouveaux seins et une nouvelle tête !
-[CNT2_B5:COUNT2]
-Quoi qu'il en soit, je veux voir les premiers billets sortir de la presse cinq minutes après mon retour! C'est compris?
+[MAR5_FC:MAR5]
+~w~Mon chou... T'as de l'argent ?
-[CNT2_B6:COUNT2]
-T'inquiète pas, Tommy, on sera prêts.
+[MAR5_FD:MAR5]
+~w~Euh... Pas trop...
-[CNT2_B7:COUNT2]
-Les gars et moi, on sera dans le coin au cas où t'aurais besoin de renforts.
+[MAR5_FE:MAR5]
+~w~Alors, je comprends pas pourquoi tu me tournes autour ! Je suis la nana de Salvatore !
-[CNT2_B8:COUNT2]
-Bon, tout le monde a compris? Parfait. A plus tard.
+[MAR5_FF:MAR5]
+~w~Il est pété de thune ! T'as pas intérêt à recommencer à me brancher !
-[CNT2_01:COUNT2]
-~g~Le ~r~coursier~g~ qui porte les plaques va bientôt arriver aux ~y~docks~g~ en hélico.
+[MAR5_CA:MAR5]
+~w~Mmm...
-[CNT2_02:COUNT2]
-~r~Le coursier s'est enfui en hélico!
+[MAR5_CB:MAR5]
+~w~Oh merde, je crois que je vais vomir.
-[CNT2_03:COUNT2]
-~r~Le coursier est parvenu à destination sain et sauf, c'est trop tard!
+[MAR5_CC:MAR5]
+~w~Je plane, Toni, putain, ce que je plane !
-[CNT2_04:COUNT2]
-~r~Tu as détruit les plaques dans l'explosion!
+[MAR5_CD:MAR5]
+~w~J'me sens pas bien...
-[CNT2_05:COUNT2]
-~g~Tu as les plaques. Emmène-les à l'imprimerie!
+[MAR5_CE:MAR5]
+~w~Tu conduis trop vite ! Trop lentement !
-[CNT2_06:COUNT2]
-~g~Le coursier est mort et il a jeté les plaques. Récupère-les en premier.
+[MAR5_NC:MAR5]
+~b~Maria~w~ peut à peine marcher. Trouve une caisse !
-[CNT2_07:COUNT2]
-~g~Un des gardes a ramassé les plaques, ne le laisse pas s'enfuir!
+[MAR5_ND:MAR5]
+~w~Maria peut à peine marcher. Trouve une caisse !
-[CNT2_08:COUNT2]
-~g~Le ~r~coursier~g~ avec les plaques est arrivé aux docks.
+[MAR5_DA:MAR5]
+~w~Putain, on va t'exploser, mec !
-[CNT2_4:COUNT2]
-Affaire privée! Dégagez!
+[MAR5_DB:MAR5]
+~w~Toi et la salope, on va vous massacrer !
-[CNT2_09:COUNT2]
-IMPRIMERIE ACQUISE
+[MAR5_DC:MAR5]
+~w~T'as fait une grosse erreur en essayant de nous baiser !
-[CNT2_10:COUNT2]
-~g~L'imprimerie va maintenant générer un revenu maximum de $~1~. Veille à relever régulièrement les compteurs.
+[MAR5_LM:MAR5]
+~w~T'as abandonné ~b~Maria~w~ ! Retourne la chercher !
-[CNT2_11:COUNT2]
-~r~Les plaques sont au fond de la mer!
+[MAR5_O1:MAR5]
+~w~Conduis Maria au resto à ~y~Callahan Point.
-{=================================== MISSION TABLE CUBAN1 ===================================}
+[MAR5_O2:MAR5]
+~w~Conduis Maria à ~y~Hepburn Heights.
-[CUB1_A:CUBAN1]
-Si, mec?
+[MAR5_O3:MAR5]
+~w~Conduis Maria à ~y~son appartement.
-[CUB1_B:CUBAN1]
-Hé, du calme, papa, ce mec est là pour moi. Hé, c'est toi le mec?
+[MAR5_O4:MAR5]
+~w~Conduis Maria au ~y~manoir de Salvatore.
-[CUB1_C:CUBAN1]
-Oh ouais. C'est toi le mec. Je crois bien, tu sais.
+[MAR5_O5:MAR5]
+~w~Retourne chercher ~b~Maria.
-[CUB1_D:CUBAN1]
-Non, je crois pas.
+[MAR5_MD:MAR5]
+~r~Maria est morte !
-[CUB1_E:CUBAN1]
-Ah ouais? Amène-toi, gros dur!
+[MAR5_O6:MAR5]
+~w~Va chercher ~b~Maria.
-[CUB1_F:CUBAN1]
-Tu crois que tu peux jouer avec moi?
+[OVER_01:MAR5]
+Oh... Hé... Chéri... J'croyais que t'arriverais jamais...
-[CUB1_G:CUBAN1]
-Tu penses que tu peux jouer au con avec moi?
+[OVER_02:MAR5]
+Qu'est-ce que t'as ?
-[CUB1_H:CUBAN1]
-Non, je pense que tu joues assez le con pour nous deux.
+[OVER_03:MAR5]
+Oups ! Rien, chéri, tout va bien...
-[CUB1_I:CUBAN1]
-Hé, il t'a traité de con, fiston.
+[OVER_04:MAR5]
+Debout, pauvre connasse, qu'est-ce que t'as encore pris ?
-[CUB1_J:CUBAN1]
-Et moi, je le traite de fillette, papa.
+[OVER_05:MAR5]
+Encore pris ? Pas grand-chose...
-[CUB1_K:CUBAN1]
-Regarde-le, tout habillé comme ça.
+[OVER_06:MAR5]
+Juste une ou deux... ou deux vertes, et puis une ou deux rouge foncé.
-[CUB1_L:CUBAN1]
-C'est la soirée des pouffiasses, ce soir?
+[OVER_07:MAR5]
+Oh, et puis, ces super pilules que j'fais venir de Hollande...
-[CUB1_M:CUBAN1]
-Toi qu'est plutôt balaise, pourquoi tu te fringues en nana?
+[OVER_08:MAR5]
+Une merveille ! C'est trop cool...
-[CUB1_N:CUBAN1]
-Et t'as une petite culotte comme les gonzesses?
+[OVER_09:MAR5]
+Non, c'est pas cool...
-[CUB1_O:CUBAN1]
-Qu'est-ce que t'as contre les femmes? Tu préfères les mecs, mon gros?
+[OVER_10:MAR5]
+J'ai besoin d'un zap et tout ira bien !
-[CUB1_P:CUBAN1]
-J'aime les femmes! J'aime toutes les femmes! J'aime ma maman, Chico!
+[OVER_11:MAR5]
+Ils sont quelque part par là.
-[CUB1_Q:CUBAN1]
-Ok, ok, j'te crois sur parole.
+[OVER_12:MAR5]
+C'est quoi ça, un zap ?
-[CUB1_R:CUBAN1]
-Tu sais conduire, amigo?
+[OVER_13:MAR5]
+Un zap ? Tu sais pas ce que c'est qu'un zap ?
-[CUB1_S:CUBAN1]
-Ouais... Comme une gonzesse.
+[OVER_14:MAR5]
+Ah, Toni, t'es vraiment un ringard !
-[CUB1_T:CUBAN1]
-Très drôle... Tu me plais, ma grosse, peut-être que tu peux aider.
+[OVER_17:MAR5]
+J'ai besoin d'un zap, Toni ! Je vais mourir !
-[CUB1_U:CUBAN1]
-Tu peux peut-être nous montrer que t'es un vrai mec?
+[OVER_18:MAR5]
+J'ai déjà ressenti ça juste avant une OD !
-[CUB1_V:CUBAN1]
-Sors le bateau.
+[OVER_19:MAR5]
+Trouve-moi un zap, Toni !
-[CUB1_W:CUBAN1]
-Prouve-moi que t'as des couilles énormes
+[OVER_20:MAR5]
+Je les ai oubliés au resto à Callahan Point.
-[CUB1_X:CUBAN1]
-et pas une paire de pois chiches!
+[OVER_21:MAR5]
+Alors, bouge-toi ! On y va !
-[CUB1_02:CUBAN1]
-Ok, mec, traite-la comme une gonzesse.
+[OVER_15:MAR5]
+- Toni, je t'aime. ~n~ - Allez, arrête de délirer !
-[CUB1_03:CUBAN1]
-Pas mal, t'es un vrai macho.
+{=================================== MISSION TABLE VIC1 ===================================}
-[CUB1_04:CUBAN1]
-Merde, t'en a vraiment dans le pantalon, amigo.
+[VIC1I11:VIC1]
+~w~J'ai une piaule sympa pour toi, Toni.
-[CUB1_05:CUBAN1]
-Amigo, t'es un vrai mec, mec.
+[VIC1I12:VIC1]
+~w~Ca va te plaire, c'est clair.
-[CUB1_06:CUBAN1]
-Tu te prends pour un homme, mec?
+[VIC1I13:VIC1]
+~w~On va d'abord aller là-bas.
-[CUB1_07:CUBAN1]
-T'es qu'une petite poule mouillée, petit, c'est ta mère qui te manque?
+[VIC1I14:VIC1]
+~w~T'as le coeur sur la main.
-[CUB1_08:CUBAN1]
-Tu gâches tout! Tu marches comme un mec, tu causes comme un mec, mais tu conduis comme une gonzesse!
+[VIC1_3:VIC1]
+~w~Conduis Vincenzo à son ~y~entrepôt.
-[CUB1_09:CUBAN1]
-Mec, t'es un vrai mec de chez mec, mec! Putain, je t'adore, mec!
+[VIC1_4:VIC1]
+~w~Remonte dans la ~b~caisse.
-[CUB1_10:CUBAN1]
-C'est quand tu veux, mec. T'as des couilles de taureau et tous mes potes ont des couilles énormes!
+[VIC1_5:VIC1]
+~w~Conduis Vincenzo à la ~y~planque.
-[CUB1_11:CUBAN1]
-~r~T'as tué Rico!
+[VIC1_6:VIC1]
+~w~Marche sur le repère jaune dans l'embrasure de la ~y~porte.
-[CUB1_12:CUBAN1]
-Va jusqu'au premier point de contrôle pour commencer le test.
+[VIC1_7:VIC1]
+~w~Marche sur l'icone de fringues pour en changer.
-[CUB1_14:CUBAN1]
-Retourne dans le bateau!
+[VIC1_8:VIC1]
+~w~Rejoins Vincenzo dehors.
-[CUB1_15:CUBAN1]
-~r~T'es trop lent, mec!
+[VIC1_9:VIC1]
+~w~Amène Vincenzo à ~y~Atlantic Quays.
-[CUB1_01:CUBAN1]
-Salut, moi c'est Rico. C'est toi qu'a des couilles de taureau?
+[VIC1_9A:VIC1]
+~w~Maintenant, ramène-moi chez moi !
-[CUB1_13:CUBAN1]
-~g~Tu as trois minutes pour terminer le parcours.
+[VIC1_10:VIC1]
+~w~Monte dans la ~b~caisse.
-{=================================== MISSION TABLE CUBAN2 ===================================}
+[VIC1_D1:VIC1]
+~w~Merde, Toni ! Tu conduis comme une gonzesse !
-[CUB2_25:CUBAN2]
-BUTE TOUS LES HAITIENS!
+[VIC1_D2:VIC1]
+~w~Fais gaffe à cette putain de caisse !
-[CUB2_A:CUBAN2]
-Un cafecito, por favor, Alberto...
+[VIC1_D3:VIC1]
+~w~Toni, arrête de me manquer de respect et conduis comme un homme !
-[CUB2_N:CUBAN2]
-Tout de suite, Tommy.
+[VIC1_C1:VIC1]
+~w~On y est, Toni. Ton petit chez toi. Mignon tout plein, pas vrai ?
-[CUB2_B:CUBAN2]
-Poppa! Un gran problema!
+[VIC1_C2:VIC1]
+~w~J'vais devoir crécher dans ce trou à rats ?
-[CUB2_O:CUBAN2]
-Umberto, mon fils, que s'est-il passé?
+[VIC1_C3:VIC1]
+~w~Oh ! Mais ça te convient à merveille.
-[CUB2_C:CUBAN2]
-Les Haïtiens! Je hais les Haïtiens!
+[VIC1_C4:VIC1]
+~w~Là, tu manques de respect au vieux Vincenzo.
-[CUB2_D:CUBAN2]
-C'est la dernière fois qu'ils me font chier!
+[VIC1_C5:VIC1]
+~w~OK, champion, bouge ton cul là-haut et trouve des fringues correctes.
-[CUB2_E:CUBAN2]
-Ces Haïtiens... On va les liquider!
+[VIC1_C6:VIC1]
+~w~J'ai pas toute la journée, magne-toi !
-[CUB2_F:CUBAN2]
-On a juste besoin de renforts...
+[VIC1_C7:VIC1]
+~w~Hé, les apparts, ça coûte du fric, Toni.
-[CUB2_G:CUBAN2]
-J'ai déjà perdu pas mal de frères là-bas.
+[VIC1_C8:VIC1]
+~w~T'oublies peut-être qui paye les factures dans le coin...
-[CUB2_H:CUBAN2]
-Amigo, tu conduis pas mal!
+[VIC1_C9:VIC1]
+~w~MOI ! Bibi ! Papa Vincenzo !
-[CUB2_I:CUBAN2]
-Pour une gonzesse... Pas vrai?
+[VIC1C10:VIC1]
+~w~Alors maintenant, tu bosses pour moi.
-[CUB2_J:CUBAN2]
-C'est pas l'heure des vannes!
+[VIC1C11:VIC1]
+~w~Et t'as intérêt à revenir ici vite fait...
-[CUB2_K:CUBAN2]
-Allez, conduis encore pour moi!
+[VIC1_F:VIC1]
+~r~Vincenzo est mort.
-[CUB2_L:CUBAN2]
-Récupère mes gars là-bas et puis on s'occupe de ces Haïtiens!
+[HOMS_01:VIC1]
+Bon... alors le voilà, hein ?
-[CUB2_M:CUBAN2]
-Ils m'ont cherché et ils sont tombés sur le mec le plus balaise de la ville!
+[HOMS_02:VIC1]
+Ecoute, Toni, tu nous as rendu un grand service,
-[CUB2_01:CUBAN2]
-C'est trop petit, mec, il te faut une plus grosse bagnole.
+[HOMS_03:VIC1]
+et j'sais que ça fait un bail que tu te planques,
-[CUB2_02:CUBAN2]
-On a besoin de renforts du café!
+[HOMS_04:VIC1]
+alors, j'veux que tu te la coules douce un moment.
-[CUB2_03:CUBAN2]
-~g~Prend une bagnole et va ramasser les Cubains à l'extérieur du café de Robina.
+[HOMS_05:VIC1]
+Vincenzo va s'occuper d'toi.
-[CUB2_04:CUBAN2]
-~g~Amène les Cubains à l'endroit de la bagarre.
+[HOMS_06:VIC1]
+Si t'as besoin de fric, tu lui demandes.
-[CUB2_05:CUBAN2]
-Liquide ce lâche de tireur embusqué!
+[HOMS_07:VIC1]
+Si tu veux un job, Lucky te dégottera ça.
-[CUB2_07:CUBAN2]
-Ils se battent comme des filles! A couvert!
+[HOMS_08:VIC1]
+Un mec de la famille peut pas rêver mieux.
-[CUB2_09:CUBAN2]
-Un sniper sur le toit!
+[HOMS_09:VIC1]
+Même mon fils a pas la vie aussi cool.
-[CUB2_11:CUBAN2]
-~r~Imbécile, on avait besoin de cette bagnole!
+[HOMS_10:VIC1]
+Mais, M. Leone, j'croyais qu'on était liés,
-[CUB2_12:CUBAN2]
-Hé, amigo! Content de te voir que t'as réussi!
+[HOMS_11:VIC1]
+j'ai beaucoup fait pour cette famille.
-[CUB2_13:CUBAN2]
-Putains de Haïtiens, on va tous les descendre!
+[HOMS_12:VIC1]
+Et là, vous voulez que j'obéisse à ce... ce... cet...
-[CUB2_14:CUBAN2]
-CHAAAAAARGEZ!
+[HOMS_13:VIC1]
+Enfin, j'trouve pas ça très... juste...
-[CUB2_15:CUBAN2]
-Maintenant, mes frères! Chaaaargez!
+[HOMS_14:VIC1]
+Toni, j'sais ce que t'as fait et y a personne qu'est plus reconnaissant que moi, j'te jure !
-[CUB2_16:CUBAN2]
-Tommy, on a fait la preuve de notre courage!
+[HOMS_15:VIC1]
+Mais si tu débarques comme ça
-[CUB2_17:CUBAN2]
-Piquons cette camionnette bourrée de drogue et tirons-nous!
+[HOMS_16:VIC1]
+et que tu commences à discuter mes ordres, franchement,
-[CUB2_18:CUBAN2]
-~g~Trouve une bagnole et va chercher les Cubains.
+[HOMS_17:VIC1]
+c'est pas possible. Capici ?
-[CUB2_19:CUBAN2]
-On va se battre comme des hommes!
+[HOMS_18:VIC1]
+Compris, chef.
-[CUB2_21:CUBAN2]
-Battez-vous avec vos couilles!
+[HOMS_19:VIC1]
+Bene, alors quand t'as besoin de quelque chose, t'appelles Vincenzo à Atlantic Quays.
-[CUB2_22:CUBAN2]
-~g~Elimine les derniers Haïtiens pour que les Cubains puissent avancer.
+[HOMS_20:VIC1]
+Il s'occupera de toi, pas vrai, Lucky ?
-[CUB2_23:CUBAN2]
-~g~Little Haiti va grouiller de Haïtiens voulant régler leurs comptes avec les Cubains. Fais gaffe à tes couilles.
+[HOMS_21:VIC1]
+'sûr, chef, tout ce que vous voulez.
-[CUB2_24:CUBAN2]
-~g~Retourne au café de Robina avec la camionnette et gare-la derrière.
+[HOMS_22:VIC1]
+D'ailleurs, on peut y aller direct.
-{=================================== MISSION TABLE CUBAN3 ===================================}
+{=================================== MISSION TABLE VIC2 ===================================}
-[CUB3_A:CUBAN3]
-Alberto. Un café, senor.
+[VIC2M2:VIC2]
+Ce glandeur a pas fait un rond depuis des jours.
-[CUB3_B:CUBAN3]
-Papa, ne sers pas ce morbac...
+[VIC2M3:VIC2]
+Il a peut-être besoin d'encouragements pour se bouger le cul et se mettre au boulot.
-[CUB3_C:CUBAN3]
-T'es un hypocrite, Tommy!
+[VIC2M4:VIC2]
+Une vraie gonzesse... Il me fait un peu penser à toi.
-[CUB3_D:CUBAN3]
-T'es soit un hypocrite, soit une gonzesse!
+[VIC2M5:VIC2]
+~w~Qu'est-ce t'essaies de dire !?
-[CUB3_E:CUBAN3]
-Les Haïtiens, mec! Ils se foutent de ma gueule!
+[VIC2M6:VIC2]
+J'essaie pas, je le dis, c'est tout !
-[CUB3_F:CUBAN3]
-Du calme. C'est quoi ton problème?
+[VIC2M7:VIC2]
+Je te dis juste d'aller là-bas pour veiller à ce que ce connard fasse rentrer un peu de fric !
-[CUB3_G:CUBAN3]
-Ils se foutent ma gueule, Tommy, de ma gueule!
+[VIC2_B:VIC2]
+~w~Trouve une caisse.
-[CUB3_H:CUBAN3]
-Umberto Robina! Ils font comme ça leur chante!
+[VIC2OB1:VIC2]
+~w~Conduis le dealer au ~y~boulot.
-[CUB3_I:CUBAN3]
-Personne fait ce qu'il veut, Umberto, ils font ce que tu les laisses faire.
+[VIC2_C:VIC2]
+~w~Il va te falloir une caisse pour l'emmener dans son secteur habituel !
-[CUB3_J:CUBAN3]
-Quoi?
+[VIC2_D:VIC2]
+~w~Va chercher le dealer de Vincenzo à ~y~Saint Mark's.
-[CUB3_K:CUBAN3]
-Tu veux que quelqu'un s'en occupe?
+[VIC2_E:VIC2]
+~w~Alors, Vincenzo m'a dit que t'étais trop une flipette pour bosser dans ton secteur ?
-[CUB3_L:CUBAN3]
-Je peux m'en charger, mais ça va te coûter cher!
+[VIC2_E2:VIC2]
+~w~Hé, mec, j'suis pas une flipette !
-[CUB3_M:CUBAN3]
-Je sais qu'on est frères et tout et tout, mais ça, c'est les affaires...
+[VIC2_EX:VIC2]
+~w~Je... euh... J'ai juste été malade !
-[CUB3_N:CUBAN3]
-Tommy, t'es un vrai mec! Un businessman! Un gentleman!
+[VIC2_E3:VIC2]
+~w~Je retourne bosser demain... ou après-demain.
-[CUB3_O:CUBAN3]
-Ces Haïtiens. Ils ont de la marchandise de première qualité qui arrive par la mer.
+[VIC2_E4:VIC2]
+~w~Oh, que ça te plaise ou non, va falloir que t'y ailles aujourd'hui !
-[CUB3_P:CUBAN3]
-On la prend et on en finit avec eux.
+[VIC2_F:VIC2]
+~w~Hé, me laisse pas ici, c'est un quartier hyper craignos, mec !
-[CUB3_Q:CUBAN3]
-Tu t'en charges et je veillerai sur toi. Comme mon frère. Comme mon fils.
+[VIC2_F2:VIC2]
+~w~T'as abandonné ~b~le dealer de Vincenzo~w~ ! Retourne le chercher !
-[CUB3_R:CUBAN3]
-J'préfère que tu me files du pognon, plutôt que de me faire sauter sur tes genoux, amigo...
+[VIC2_G:VIC2]
+~w~Ecoute, mec, j'en ai déjà parlé à Vinnie... Chinatown marche plus avec les Leone !
-[CUB3_01:CUBAN3]
-Salut, Rico. Chouette bateau. T'es prêt?
+[VIC2_G2:VIC2]
+~w~Les Sindacco se sont installés ! Si j'y retourne, j'suis un homme mort !
-[CUB3_03:CUBAN3]
-~g~Récupère toutes les serviettes pleines de drogue et de cash.
+[VIC2_G3:VIC2]
+~w~Mais ouais... Bien sûr...
-[CUB3_04:CUBAN3]
-~g~Ramène la drogue et le cash à Umberto.
+[VIC2_G4:VIC2]
+~w~J'te jure, mec ! Les Sindacco dealent là-bas !
-[CUB3_05:CUBAN3]
-Si, Tommy, faut que tu tires bien, aujourd'hui.
+[VIC2_G5:VIC2]
+~w~J'me sens pas bien... J'crois que j'ai de la fièvre...
-[CUB3_06:CUBAN3]
-Mon bateau, je voudrais pas qu'il se retrouve plein de trous, ok?
+[VIC2_H:VIC2]
+~w~Arrête-toi près du ~b~dealer.
-[CUB3_07:CUBAN3]
-~g~Va retrouver Rico. Il te conduira au rendez-vous.
+[VIC2_I:VIC2]
+~w~Oh, mec...
-[CUB3_02:CUBAN3]
-~g~TUE TOUS LES HAITIENS EN BATEAU!
+[VIC2_J:VIC2]
+~r~Le dealer de Vincenzo s'est fait buter !
-[CUB3_08:CUBAN3]
-Oh oh... Les Cubains. On nous attaque!
+[VIC2_K:VIC2]
+~w~Conduis le dealer de Vincenzo à ~y~Chinatown.
-{=================================== MISSION TABLE CUBAN4 ===================================}
+[VIC2M1:VIC2]
+On a un dealer dans notre secteur de Chinatown nord.
-[CUB4_A:CUBAN4]
-Salut, les filles, vous savez ce que je vais faire?
+{=================================== MISSION TABLE VIC3 ===================================}
-[CUB4_B:CUBAN4]
-Je vais aller me descendre un Haïtien. Et après, vous savez quoi?
+[VIC3_H1:VIC3]
+~w~Maintiens~h~ ~k~ ~PDLT~ ~w~pour ~h~verrouiller une cible~w~ et appuie sur~h~ ~k~ ~PDFW~ ~w~pour attaquer !
-[CUB4_C:CUBAN4]
-Après, je vais me vider les couilles comme un homme!
+[VIC3_H2:VIC3]
+~w~Appuie sur~h~ ~k~ ~PDFW~ ~w~pour attaquer le ~h~dealer.
-[CUB4_D:CUBAN4]
-T'as déjà vu ça chica? Un peu comme ça...
+[VIC3O2:VIC3]
+~w~Va à ~y~Chinatown.
-[CUB4_E:CUBAN4]
-Pauv' mec!
+[VIC3O3:VIC3]
+~w~Descends le ~r~dealer.
-[CUB4_F:CUBAN4]
-Connard!
+[VIC3_1:VIC3]
+~w~Vincenzo t'a laissé un cadeau qui peut servir.
-[CUB4_G:CUBAN4]
-Hé, ma poule, je te toucherai même pas avec une perche!
+[VIC3_BA:VIC3]
+~w~Ici, t'es en territoire Leone, connard !
-[CUB4_H:CUBAN4]
-Umberto Robina, il aime les femmes! Pas les vieilles dindes en jupe!
+[VIC3_BB:VIC3]
+~w~T'as pas ton compte, enfoiré !?
-[CUB4_I:CUBAN4]
-Tommy! Tommy, je t'aime, je t'aime! Allons-y!
+[VIC3_BC:VIC3]
+~w~C'est Leone qui deale ici, personne d'autre ! Vous avez compris, connards de Sindacco ?
-[CUB4_J:CUBAN4]
-Où ça? Je peux pas avoir un café d'abord?
+[VIC3_6:VIC3]
+~w~Les Sindacco dealent dans tout Chinatown.
-[CUB4_K:CUBAN4]
-Pas le temps pour un café! D'ailleurs, je viens d'en prendre un!
+[VIC3_AA:VIC3]
+~w~Vinnie ?
-[CUB4_L:CUBAN4]
-Faut qu'on liquide les Haïtiens!
+[VIC3_AB:VIC3]
+~w~C'est pas vrai, Toni ! J'peux pas avoir la paix !?
-[CUB4_M:CUBAN4]
-Tommy, tu sais comment on tue un serpent?
+[VIC3_AD:VIC3]
+~w~J'suis déjà assez constipé et t'es vraiment la dernière chose dont j'ai besoin !
-[CUB4_N:CUBAN4]
-Tu le mords au cul! Ahahaha!
+[VIC3_AE:VIC3]
+~w~Mais puisque t'es là, j'voulais te dire que j'ai toujours pas reçu de fric
-[CUB4_O:CUBAN4]
-Si tu le dis, Umberto.
+[VIC3_AF:VIC3]
+~w~de ce dealer. Et tu sais pourquoi ?
-[CUB4_P:CUBAN4]
-Tommy, va nous trouver une petite bagnole haïtienne!
+[VIC3_AG:VIC3]
+~w~Eclaire-moi.
-[CUB4_Q:CUBAN4]
-Dès que tu l'as, reviens récupérer mon petit
+[VIC3_AJ:VIC3]
+~w~Les Sindacco ont commencé à dealer et en plus, en territoire Leone !
-[CUB4_R:CUBAN4]
-Pepe et emmène-le chez les Haïtiens.
+[VIC3_AK:VIC3]
+~w~Tu vas accepter ça, Toni ?
-[CUB4_S:CUBAN4]
-Ensuite, tu vas au centre de retraitement des Haïtiens et tu te sers de leurs solvants comme explosif.
+[VIC3_AL:VIC3]
+~w~Je veux que tu fonces à Chinatown !
-[CUB4_T:CUBAN4]
-Boom! Et bye bye!
+[VIC3_AM:VIC3]
+~w~OK, 'chef', je m'en occupe !
-[CUB4_U:CUBAN4]
-Et toi, Umberto?
+[VIC3_AN:VIC3]
+~w~Bordel de merde ! Pourquoi y a jamais de PQ ici !
-[CUB4_V:CUBAN4]
-Oh, je reste en arrière, je surveille le café avec papa.
+[VIC3_AH:VIC3]
+~w~Parce qu'il est mort, crétin ! Y a un enfoiré qui l'a descendu.
-[CUB4_W:CUBAN4]
-Il ne se sent pas très bien, tu sais.
+[VIC3O4:VIC3]
+~r~Les Sindacco~w~ dealent dans tout Chinatown. Donne-leur une leçon qu'ils n'oublieront pas !
-[CUB4_02:CUBAN4]
-~g~Les bombes ont un retardateur de 45 secondes.
+{=================================== MISSION TABLE VIC4 ===================================}
-[CUB4_04:CUBAN4]
-~r~Tu as mis leur base en alerte! Plus question d'entrer, maintenant!
+[VIC4_H2:VIC4]
+~w~Suis la ~h~bombe de peinture~w~ sur le radar pour trouver le ~h~Pay 'n' Spray.
-[CUB4_07:CUBAN4]
-Les solvants sont à l'arrière, amigo.
+[VIC4_A2:VIC4]
+~w~Place-toi sur le ~h~repère~w~ pour voir les armes disponibles.
-[CUB4_08:CUBAN4]
-Hola, amigos.
+[VIC4_A3:VIC4]
+~w~Sélectionne différentes armes en utilisant~h~ ~k~ ~AMMOV~.
-[CUB4_09:CUBAN4]
-Bueno. Putains d'Haïtiens. Muerte.
+[VIC4_A4:VIC4]
+~w~Appuie sur ~h~~k~ ~AMBUY~~w~ pour acheter l'arme sélectionnée si t'as le cash nécessaire.
-[CUB4_10:CUBAN4]
-Vamos.
+[VIC4_A6:VIC4]
+~w~Tu peux utiliser jusqu'à huit types d'armes.
-[CUB4_11:CUBAN4]
-Si, vamos.
+[VIC4_A7:VIC4]
+~w~Tu ne peux porter qu'une arme de chaque type à la fois : un type de pistolet, un type de fusil à pompe, etc.
-[CUB4_12:CUBAN4]
-Hé, on a besoin d'une bagnole haïtienne!
+[VIC4_H1:VIC4]
+~w~Suis le ~h~flingue~w~ sur le radar pour trouver un ~h~Ammu-Nation.
-[CUB4_13:CUBAN4]
-Bueno, allons trouver ces muchachos!
+[VIC4_H3:VIC4]
+~w~Suis le ~h~flingue~w~ sur le radar pour retrouver un ~h~Ammu-Nation.
-[CUB4_14:CUBAN4]
-Suis mes amigos.
+[VIC4_AB:VIC4]
+~w~Difficile de l'oublier...
-[CUB4_15:CUBAN4]
-Ok, tu entres...
+[VIC4_AD:VIC4]
+~w~Le truc, c'est qu'il veut rejoindre les Leone maintenant.
-[CUB4_16:CUBAN4]
-Je vais poser la bombe, couvrez-moi!
+[VIC4_AE:VIC4]
+~w~Laisse tomber ! Il a fait son choix.
-[CUB4_17:CUBAN4]
-COURS!
+[VIC4_AG:VIC4]
+~w~T'as rien dans la tête ! Merde, Toni, Sal a dit que t'étais une brute,
-[CUB4_18:CUBAN4]
-Mec, c'est un quartier cool...
+[VIC4_AH:VIC4]
+~w~mais j'avais pas compris que t'étais aussi débile.
-[CUB4_19:CUBAN4]
-Cet endroit est une décharge, mec.
+[VIC4_AJ:VIC4]
+~w~Il sera notre homme dans la place.
-[CUB4_20:CUBAN4]
-J'avais une belle copine... Elle vivait dans le coin.
+[VIC4_AK:VIC4]
+~w~Juste un détail...
-[CUB4_21:CUBAN4]
-Tu sais, ils font de super pizzas, ici!
+[VIC4_AL:VIC4]
+~w~Y a un gros balaise de Sindacco qui le baby-sitte.
-[CUB4_22:CUBAN4]
-Hé, mec, tu conduis comme une putain de gonzesse!
+[VIC4_AM:VIC4]
+~w~Je veux que tu supprimes ce petit obstacle
-[CUB4_23:CUBAN4]
-T'es perdu, mec?
+[VIC4_AN:VIC4]
+~w~et que J.D. marche avec nous ! Capici ?
-[CUB4_24:CUBAN4]
-T'as laissé Pepe derrière, va le récupérer!
+[VIC4_2:VIC4]
+~w~Prends son ~g~téléphone portable~w~ comme preuve de l'exécution du boulot.
-[CUB4_03:CUBAN4]
-~g~Ne sors pas de la bagnole avant qu'elle soit garée en sécurité dans l'enceinte.
+[VIC4_BA:VIC4]
+~w~Toni... Waouh, tu m'as fait cadeau d'un super snuff movie !
-[CUB4_26:CUBAN4]
-~g~Emmène Pepe, file au nord dans Little Haïti et fauche une bagnole Vaudou.
+[VIC4_BB:VIC4]
+~w~J.D. ? T'as tout vu ? TU ME FILMES ?!
-[CUB4_27:CUBAN4]
-~g~Va retrouver Rico et les autres Cubains.
+[VIC4_BC:VIC4]
+~w~Euh, c'était juste... pour mon usage personnel !
-[CUB4_28:CUBAN4]
-~g~Va rejoindre les Cubains dans l'usine de dope haïtienne.
+[VIC4_BD:VIC4]
+~w~J'suis impatient de bosser avec toi !
-[CUB4_29:CUBAN4]
-~g~Marche sur chacun des marqueurs pour y poser une bombe.
+[VIC4_BE:VIC4]
+~w~T'excite pas trop... Tu me dois encore du fric.
-[CUB4_30:CUBAN4]
-~g~Une fois les trois bombes posées, sors de l'usine avant qu'elle n'explose.
+[VIC4_BF:VIC4]
+~w~Prends la caisse de ce connard de Sindacco en acompte, OK ?
-[CUB4_31:CUBAN4]
-~g~Sors de l'usine!
+[VIC4_BG:VIC4]
+~w~Repeins-la juste assez pour que personne la reconnaisse.
-[CUB4_32:CUBAN4]
-~g~Gare la bagnole à l'endroit du bip et descends.
+[VIC4_BH:VIC4]
+~w~Je vais m'occuper du corps.
-[CUB4_06:CUBAN4]
-~r~Tu ne t'es pas assez éloigné de la base et on a dû annuler l'explosion!
+[VIC4_CA:VIC4]
+~w~Hé, sors d'ici !
-{=================================== MISSION TABLE FINALE ===================================}
+[VIC4_CB:VIC4]
+~w~T'as rien à foutre là !
-[FIN_1A:FINALE]
-Amène-toi, putain de salopard de traître!
+[VIC4_61:VIC4]
+~w~Monte dans la ~b~caisse.
-[FIN_1B:FINALE]
-Tu vas crever, Judas de mes deux!
+[VIC4_62:VIC4]
+~w~Conduis jusqu'au Pay 'n' Spray.
-[FIN_1C:FINALE]
-C'est la dernière danse de Lance Vance!
+[VIC4_DC:VIC4]
+~r~J.D. t'a dit de faire repeindre la bagnole !
-[FIN_2B:FINALE]
-Ah ouais, c'est ce que tu crois?
+[VIC4_PR:VIC4]
+Dring dring...
-[FIN_2C:FINALE]
-J'ai dit que je l'avais assez entendu celle-là à l'école!
+[VIC4O1A:VIC4]
+~w~Va ~y~à l'intérieur.
-[FIN_3:FINALE]
-Plus personne pour couvrir ton cul, hein, Tommy?
+[VIC4_O2:VIC4]
+~w~Achète un pistolet.
-[FIN_4:FINALE]
-T'es plus que du passé, Tommy, du passé!
+[VIC4_O4:VIC4]
+~w~Tue le ~r~gros balaise de Sindacco.
-[FIN_5:FINALE]
-T'as choisi le mauvais camp, Lance...
+[VIC4_FA:VIC4]
+~r~Il ne te vendra plus d'arme maintenant !
-[FIN_11A:FINALE]
-Tu m'as volé quinze ans de ma vie, Sonny...
+[VIC4_O3:VIC4]
+~w~Va au ~y~chantier.
-[FIN_11B:FINALE]
-Et je viens te présenter l'addition!
+[VIC4_AC:VIC4]
+~w~Il gère actuellement un bar à nénettes contrôlé par les Sindacco, enfin, j'veux dire un club de gentlemen.
-[FIN_12A:FINALE]
-T'as encore rien compris!
+[VIC4_AA:VIC4]
+~w~Hé, tu te souviens de J.D. O'Toole ?
-[FIN_12B:FINALE]
-Tu m'appartiens, Tommy...
+[VIC4_AI:VIC4]
+~w~On peut utiliser J.D. pour en savoir plus sur les plans des Sindacco.
-[FIN_12C:FINALE]
-C'est moi qui devait les faire ces quinze années!
+[HELP42:VIC4]
+~w~En visant, appuie rapidement sur~h~ ~k~ ~FREE1~ ~w~pour passer en ~h~mode Visée libre~w~ et utilise ~h~ ~k~ ~FREE2~ ~w~pour ajuster ton tir.
-[FIN_13:FINALE]
-Attrapez-le, les mecs, il a jamais rien pigé.
+[VIC4_A1:VIC4]
+~w~Va à l'~y~Ammu-Nation~w~ local pour récupérer une arme.
-[FIN1_01:FINALE]
-Qu'est-ce qui se passe?
+[VIC4_O1:VIC4]
+~w~Retourne chez ~y~Ammu-Nation~w~ pour récupérer une arme.
-[FIN1_02:FINALE]
-Tommy! Ah, bien, bien. Ecoute, écoute... Euh, écoute.
+[VIC4_1:VIC4]
+~w~Le ~r~gros balaise des Sindacco~w~ est au fond du chantier. Tue-le !
-[FIN1_03:FINALE]
-J'aime bien les poissons. Ouais, j'adore le poisson!
+{=================================== MISSION TABLE VIC5 ===================================}
-[FIN1_04:FINALE]
-Je l'aime à toutes les sauces, dans le bocal ou dans l'assiette,
+[VIC5_H:VIC5]
+Leone
-[FIN1_05:FINALE]
-mais c'est pas parce que je l'aime que je veux dormir avec!
+[VIC5_I0:VIC5]
+~w~Ah, c'est toi...
-[FIN1_06:FINALE]
-Et maintenant, il y a tes cousins ritals qui s'amènent pour me coller les pieds dans le béton, et je...
+[VIC5_I1:VIC5]
+~w~Ouais, c'est moi, et alors ? T'as quelque chose à dire ?!
-[FIN1_07:FINALE]
-La ferme, Ken. Assis.
+[VIC5_I2:VIC5]
+~w~J'vais te dire ce que j'ai à te dire, petit.
-[FIN1_08:FINALE]
-Lance, bordel, qu'est-ce qui se passe?
+[VIC5_I3:VIC5]
+~w~Y a certains de nos gars qu'ont foiré un boulot tout fait.
-[FIN1_09:FINALE]
-C'est tes amis du nord, Tommy... Ils ont pas aimé ce que t'as fait à leur mec.
+[VIC5_I4:VIC5]
+~w~Ces cons sont même pas capables de réussir un raid tout ce qu'y a de plus simple.
-[FIN1_10:FINALE]
-Ils s'amènent aujourd'hui pour régler cette affaire.
+[VIC5_I5:VIC5]
+~w~Maintenant, ils se retrouvent cernés par les flics à Chinatown.
-[FIN1_11:FINALE]
-Ils ont mis plus de temps que je pensais...
+[VIC5_I6:VIC5]
+~w~Bordel ! Pourquoi je suis entouré de nazes pareils ?
-[FIN1_12:FINALE]
-Les mecs, faut en finir et faire comprendre à tout le monde que désormais, c'est mon business! LE MIEN!
+[VIC5_I7:VIC5]
+~w~J'sais pas... qui se ressemble s'assemble ?
-[FIN1_13:FINALE]
-Ken, prend la première production de faux dollars et mets-en pour vingt millions dans des porte-documents.
+[VIC5_I8:VIC5]
+~w~T'es vraiment un grand comique, toi !
-[FIN1_14:FINALE]
-Lance, tu rassembles tout le monde...
+[VIC5_I9:VIC5]
+~w~Tu vas avoir l'occasion de rigoler.
-[FIN2_01:FINALE]
-Tommy!
+[VIC5I10:VIC5]
+~w~Parce que c'est toi qui vas nettoyer ce merdier pour moi !
-[FIN2_02:FINALE]
-Quoi? T'embrasses pas ton vieux pote?
+[VIC5I11:VIC5]
+~w~Alors, fonce là-bas et ramène-moi ces débiles !
-[FIN2_03:FINALE]
-Ca fait quinze piges que je suis hors-circuit
+[VIC5_F1:VIC5]
+~r~Un homme du gang est mort.
-[FIN2_04:FINALE]
-et je suis un peu rouillé question étiquette.
+[VIC5_G0:VIC5]
+~w~Trouve une caisse à 4 places.
-[FIN2_05:FINALE]
-Toujours la haine, hein, Tommy!
+[VIC5_O1:VIC5]
+~w~Va sauver les ~b~hommes de Vincenzo.
-[FIN2_06:FINALE]
-Je te l'avais pas dit que ton sale caractère te causerait des emmerdes?
+[VIC5_O3:VIC5]
+~w~Sème les flics !
-[FIN2_07:FINALE]
-Il y a vingt millions là-dedans...
+[VIC5_O4:VIC5]
+~w~Conduis le gang chez ~y~Vincenzo.
-[FIN2_08:FINALE]
-Combien ils étaient déjà? Dix, non onze...
+[VIC5_O5:VIC5]
+~w~Les membres du ~b~gang~w~ doivent rester ensemble !
-[FIN2_09:FINALE]
-C'est pour ça qu'on t'a surnommé le boucher d'Hartwood! Hé hé hé!
+[VIC5_O6:VIC5]
+~w~T'as besoin d'un véhicule avec plus de places !
-[FIN2_10:FINALE]
-Tu m'avais envoyé buter un mec, un seul mec. Mais ils savaient que je venais, Sonny...
+[VIC5_G1:VIC5]
+~w~Qu'est-ce qu'on va faire ?
-[FIN2_11:FINALE]
-Fais gaffe à ce que tu dis...
+[VIC5_G2:VIC5]
+~w~On est foutu !
-[FIN2_12:FINALE]
-Quelqu'un pourrait penser que tu veux me coller sur le dos un malheureux concours de circonstances...
+[VIC5_G3:VIC5]
+~w~Je vais pas en taule pour ce bâtard de Vincenzo !
-[FIN2_13:FINALE]
-Prends simplement ce pognon...
+[VIC5_G4:VIC5]
+~w~Faut qu'on se tire d'ici !
-[FIN2_14:FINALE]
-Prendre le putain de fric?
+[VIC5_G5:VIC5]
+~w~Attends-moi !
-[FIN2_15:FINALE]
-Tu sais, Tommy, j'ai fait ce que je pouvais pour toi, j'ai tiré des ficelles et demandé des services.
+[VIC5_G6:VIC5]
+~w~Fonce, Toni !
-[FIN2_16:FINALE]
-J'étais ton pote, Tommy. J'espérais que tu entendrais raison et comprendrais ce qui est bon pour les affaires.
+[VIC5_E1:VIC5]
+~w~Alors, vous avez le fric ?
-[FIN2_17:FINALE]
-Je t'ai fait confiance, Tommy et je suis déçu...
+[VIC5_E2:VIC5]
+~w~On a tout, chef...
-[FIN2_18:FINALE]
-Mais il y a au moins un mec dans ton organisation de merde qui s'y connaît en business,
+[VIC5_E3:VIC5]
+~w~Hé, écoutez, on pouvait rien faire...
-[FIN2_19:FINALE]
-Pas vrai, Lance?
+[VIC5_E4:VIC5]
+~w~... vous pouviez rien faire...
-[FIN2_20:FINALE]
-Désolé, Tommy, On est à Vice City. C'est les affaires...
+[VIC5_E5:VIC5]
+~w~Tout a foiré... On aurait pas pu imaginer pire.
-[FIN2_21:FINALE]
-Tu nous as vendus...
+[VIC5_E6:VIC5]
+~w~Qu'est-ce que t'en penses... c'est pas pire, maintenant ?
-[FIN2_22:FINALE]
-Non, juste toi, Tommy, juste TOI.
+[VIC5_E7:VIC5]
+~w~Si jamais vous recommencez à déconner, ça deviendra pire pour vous aussi !
-[FIN2_23:FINALE]
-Le vrai pognon est en haut dans le coffre!
+[VIC5_E8:VIC5]
+~w~Maintenant, nettoyez-moi cette merde et dégagez le paysage !
-[FIN2_24:FINALE]
-Alors, Tommy, c'était quoi le grand plan?
+[VIC5_E9:VIC5]
+~w~J'ai un coup de fil à passer.
-[FIN2_25:FINALE]
-Tu croyais que j'allais simplement prendre les faux biftons?
+[VIC5E10:VIC5]
+~w~J'te jure, Toni, depuis que t'es revenu, ma chance a tourné en gros merdier.
-[FIN2_26:FINALE]
-Sauver la face et m'enfuir la queue entre les jambes?
+[VIC5E11:VIC5]
+~w~Tu me portes vraiment la poisse, enfoiré.
-[FIN2_27:FINALE]
-Non.
+{=================================== MISSION TABLE VIC6 ===================================}
-[FIN2_28:FINALE]
-Je voulais juste te faire chier avant de te buter.
+[VIC6_BA:VIC6]
+~w~On bouge plus !
-[FIN3_01:FINALE]
-Tommy?
+[VIC6_BB:VIC6]
+~w~Pas un geste, enfoiré !
-[FIN3_02:FINALE]
-Oh, mon Dieu, Tommy! Qu'est-ce qui s'est passé?
+[VIC6_P0:VIC6]
+~w~Récupère la ~b~caisse de Vincenzo.
-[FIN3_03:FINALE]
-A ton avis?
+[VIC6_P1:VIC6]
+~w~C'est un piège des flics, dégage la caisse de là !
-[FIN3_04:FINALE]
-On dirait que t'as niqué ton costard!
+[VIC6_P2:VIC6]
+~w~Sème les flics !
-[FIN3_05:FINALE]
-Sans compter qu'il était chouette, Tommy! Mais qu'est-ce qui s'est passé?
+[VIC6_P3:VIC6]
+~w~T'as semé les flics ! Maintenant ~w~conduis la caisse jusqu'au ~y~box de Vincenzo.
-[FIN3_06:FINALE]
-J'ai eu un désaccord avec un partenaire commercial, tu sais comment c'est.
+[VIC6_P4:VIC6]
+~w~Apprends à Vincenzo à plus jamais te chercher ! Va broyer sa ~b~caisse !
-[FIN3_07:FINALE]
-Tommy, moi, quand j'ai un désaccord avec un partenaire commercial, je lui envoie une lettre enflammée...
+[VIC6_P5:VIC6]
+~w~Remonte dans la ~b~caisse de Vincenzo !
-[FIN3_08:FINALE]
-A la rigueur, je pisse dans sa boite aux lettres... Mais je commence pas la troisième guerre mondiale!
+[VIC6_P6:VIC6]
+~w~Amène la caisse au ~y~box de Vincenzo.
-[FIN3_09:FINALE]
-Tu sais, tu devrais peut-être voir mon psy...
+[VIC6_PA:VIC6]
+~r~T'as détruit la caisse !
-[FIN3_10:FINALE]
-Ce sale con de Lance...
+[VIC6_D1:VIC6]
+~w~Monte dans la ~b~caisse.
-[FIN3_11:FINALE]
-Tommy. J'ai jamais pu blairer ce mec, tu sais?
+[VIC6_D3:VIC6]
+~w~Roule jusqu'au ~y~broyeur de caisses.
-[FIN3_12:FINALE]
-C'est un névrosé dangereux et égocentrique. Un vrai salopard!
+[VIC6_D4:VIC6]
+~w~Sors et attends que le broyeur ait fini le boulot.
-[FIN3_13:FINALE]
-Je suis bien content que tu l'aies liquidé!
+[VIC6_D5:VIC6]
+~r~Tu devais broyer la caisse !
-[FIN3_14:FINALE]
-Je crois pas qu'on doive s'attendre à plus d'emmerdes en provenance du nord...
+[VIC6_AA:VIC6]
+~w~Hé, Toni ! Alors, et ma caisse ?
-[FIN3_15:FINALE]
-... Parce qu'il y a plus de nord...
+[VIC6_AB:VIC6]
+~w~Sale fils de pute, Vinnie ! Tu m'as doublé !
-[FIN3_16:FINALE]
-Maintenant, il n'y a plus que le sud...
+[VIC6_AC:VIC6]
+~w~Doublé ? DOUBLE ?
-[FIN3_17:FINALE]
-Attends, est-ce que ça veut dire ce que je crois que ça veut dire, Tommy?
+[VIC6_AD:VIC6]
+~w~Quand t'es revenu en ville, t'avais rien ! RIEN !
-[FIN3_18:FINALE]
-Qu'est-ce que tu crois que ça veut dire?
+[VIC6_AE:VIC6]
+~w~J't'ai pas doublé, je t'ai tout donné, enfoiré d'ingrat !
-[FIN3_19:FINALE]
-Qu'on est au commandement... Enfin, que tu es au commandement. Oh, Tommy...
+[VIC6_AF:VIC6]
+~w~Oublie pas l'appartement et le job !
-[FIN3_20:FINALE]
-Tu sais, Ken, c'est peut-être le début d'une grande amitié en affaires...
+[VIC6_AG:VIC6]
+~w~C'est pour toute cette générosité que j'attends que tu prennes quelques risques...
-[FIN3_21:FINALE]
-Après tout, t'es un voleur minable un peu magouilleur sur les bords...
+[VIC6_AH:VIC6]
+~w~J'suis pas l'armée du Salut, OK ? Et pas ta mère non plus !
-[FIN3_22:FINALE]
-Et moi je suis un tueur psychotique doublé d'un dealer...
+[VIC6_AI:VIC6]
+~w~Les flics surveillaient la caisse ? Je m'en fous des flics !
-[FIN3_23:FINALE]
-Ouais. Si c'est pas grandiose!
+[VIC6_AJ:VIC6]
+~w~Quand j'te dis de faire un truc, tu le fais ! Capici ?
-[FIN_B1:FINALE]
-~g~Va tuer ~y~Vance~g~ le traître.
+[VIC6_AK:VIC6]
+~w~Ouais, j'ai compris, Vinnie...
-[FIN_B2:FINALE]
-~g~Trouve ~p~Sonni~g~ et règle-lui son compte pour de bon.
+[VIC6_AL:VIC6]
+~w~J'ai compris que tant que je bosserai pour toi, j'serai traité comme une merde.
-[FIN_B3:FINALE]
-~g~La mafia essaye de voler ton pognon. Défends le coffre.
+[VIC6_AM:VIC6]
+~w~Tu regardais encore sous les jupes des filles que je blanchissais déjà des millions.
-[FIN_B4:FINALE]
-~g~Tu es presque mort. Va chercher ~w~de quoi te soigner~g~ en bas.
+[VIC6_AN:VIC6]
+~w~J'te rends ton job de merde, 'boss', j'démissionne.
-[FIN_B5:FINALE]
-~g~La mafia te vole ton pognon. Défends le ~c~coffre.
+[VIC6_AO:VIC6]
+~w~Toni, tu fais une grosse...
-[FIN_B7:FINALE]
-~r~La mafia t'a volé tout ton pognon.
+[VIC6_D2:VIC6]
+~w~Arrête-toi sur le ~y~repère.
-[DEFSAFE:FINALE]
-~g~Retourne au coffre et protège-le.
+[HOTW_01:VIC6]
+Oui, m'man, j't'appelle plus tard.
-{=================================== MISSION TABLE FIRETRK ===================================}
+[HOTW_28:VIC6]
+Vincenzo !
-[F_PASS1:FIRETRK]
-Feu éteint!
+[HOTW_02:VIC6]
+Mais oui, bien sûr que j'suis un bon garçon...
-[F_FAIL2:FIRETRK]
-~r~T'arrives trop tard!
+[HOTW_03:VIC6]
+Je t'aime.
-[F_CANC:FIRETRK]
-~r~Mission pompier annulée!
+[HOTW_04:VIC6]
+Hé, Cheryl, poupée, c'est bon, arrête.
-[F_EXTIN:FIRETRK]
-INCENDIES :
+[HOTW_05:VIC6]
+Prends ça et casse-toi.
-[F_START:FIRETRK]
-~g~Véhicule en feu repéré dans le secteur ~a~. Va éteindre le feu.
+[HOTW_06:VIC6]
+Un petit cadeau pour toi.
-[SIREN_1:FIRETRK]
-Pour déclencher la sirène de ce véhicule, appuie brièvement sur la ~h~~k~~VEHICLE_HORN~~w~.
+[HOTW_11:VIC6]
+T'es dégueulasse, t'as aucun respect...
-[SIREN_2:FIRETRK]
-Pour déclencher la sirène de ce véhicule, appuie brièvement sur la ~h~~k~~VEHICLE_HORN~~w~.
+[HOTW_12:VIC6]
+Respect ? Je joins juste l'utile à l'agréable.
-[FIREPRO:FIRETRK]
-Mission Camion de pompiers niveau 12 réussie. T'es complètement ignifugé maintenant!
+[HOTW_15:VIC6]
+Parce que si c'est le cas, j'peux aussi demander à Ray pour toi...
-[F_FAIL1:FIRETRK]
-Mission Camion de pompiers achevée.
+[HOTW_16:VIC6]
+Va te faire foutre.
-[F_STAR1:FIRETRK]
-~g~Véhicules en flammes dans la zone ~a~. Va éteindre l'incendie.
+[HOTW_17:VIC6]
+Relax, j'me fous juste de ta gueule...
-[SPRAY_4:FIRETRK] { reVC update }
-Utilise la touche ~h~~k~~VEHICLE_FIREWEAPON~ ~w~pour tirer avec le canon à eau et le ~h~~k~~VEHICLE_TURRETLEFT~~w~ et ~h~~k~~VEHICLE_TURRETRIGHT~~w~ pour viser.
+[HOTW_18:VIC6]
+Ecoute, mec, faut que tu m'rendes un service.
-[SPRAY_1:FIRETRK] { reVC update }
-Utilise la touche ~h~~k~~VEHICLE_FIREWEAPON~ ~w~pour tirer avec le canon à eau et le ~h~~k~~VEHICLE_TURRETLEFT~~w~ et ~h~~k~~VEHICLE_TURRETRIGHT~~w~ pour viser.
+[HOTW_19:VIC6]
+J'ai des filles en manque et une caisse pleine de dope à Trenton.
-{=================================== MISSION TABLE GENERA1 ===================================}
+[HOTW_20:VIC6]
+Va la récupérer... et appelle-moi.
-[GEN1_A:GENERA1]
-Mr. Vercetti!
+[HOTW_21:VIC6]
+Tu m'prends pour qui ? Ton chauffeur ?
-[GEN1_B:GENERA1]
-Colonel.
+[HOTW_22:VIC6]
+Oh, allez, écoute...
-[GEN1_D:GENERA1]
-Non merci.
+[HOTW_23:VIC6]
+J'm'en occuperais bien moi-même, mais les Fédéraux m'ont à l'oeil.
-[GEN1_E:GENERA1]
-Ca me gêne beaucoup d'admettre que la cause d'un de nos problèmes communs semble être un homme en qui j'avais confiance.
+[HOTW_24:VIC6]
+Tu sais que j'te protège, fais-moi confiance.
-[GEN1_F:GENERA1]
-J'ai supporté Gonzalez pendant des années, mais son incompétence a atteint de nouveaux sommets.
+[HOTW_25:VIC6]
+Et oublie pas qu'il y a une hiérarchie à respecter, capici ? Allez, sois un bon petit gars !
-[GEN1_G:GENERA1]
-Vous avez le droit de tuer Gonzalez...
+[HOTW_07:VIC6]
+- Alors, qui c'est qui t'aime, bébé ? ~n~ - Toi, Vinnie.
-[GEN1_H:GENERA1]
-C'est lui qui m'a entubé? La seule chose qui m'intéresse, c'est le pognon!
+[HOTW_09:VIC6]
+- C'était ta mère au téléphone ? ~n~ - Ouais.
-[GEN1_I:GENERA1]
-Je vous récompenserai pour ce service et nous chercherons ensuite votre argent ensemble.
+[HOTW_13:VIC6]
+- Ca te pose un problème de te faire sucer par une bombasse ? ~n~ - Hein ?
-[GEN1_J:GENERA1]
-Il sera dans son appartement, probablement à moitié saoul. Servez-vous de ça...
+{=================================== MISSION TABLE VIC7 ===================================}
-[GEN1_06:GENERA1]
-Hé! Il a une tronçonneuse!
+[VIC7_VE:VIC7]
+~r~v1.01
-[GEN1_07:GENERA1]
-T'approche pas de moi, connard!
+[VIC7_1:VIC7]
+~w~Vinnie, j'suis là ! Merde, t'es où !? C'est quoi ces conneries ?
-[GEN1_08:GENERA1]
-Oh, mon Dieu, j'ai gâché ma vie et j'suis devenu un laidron!
+[VIC7_2:VIC7]
+~w~Toni ? Come sta ? J'savais que t'appellerais.
-[GEN1_10:GENERA1]
-Je vais t'faire fermer ta grande gueule une bonne fois pour toutes.
+[VIC7_3:VIC7]
+~w~Ecoute, j'suis à Portland docks.
-[GEN1_11:GENERA1]
-Essaye pas de t'enfuir, bâtard!
+[VIC7_3A:VIC7]
+~w~On a une grosse cargaison qui vient d'arriver. Amène-toi ! J'suis à bord du gros cargo.
-[GEN1_12:GENERA1]
-Laisse-toi faire et ça sera rapide!
+[VIC7_3B:VIC7]
+~w~J'sais pas, Vinnie... J'ai des trucs à faire.
-[GEN1_13:GENERA1]
-Arrête de gueuler, ça intéresse personne!
+[VIC7_3D:VIC7]
+~w~Mais à partir de maintenant, on est des associés... Mieux que ça, des frères !
-[GEN1_C:GENERA1]
-Merci d'être venu. Asseyez-vous. Du homard?
+[VIC7_3E:VIC7]
+~w~Alors, qu'est-ce que t'en dis ? C'est ce que veut Salvatore...
-[GEN1_05:GENERA1]
-~g~Va tuer Gonzales!
+[VIC7_3F:VIC7]
+~w~OK. Pour Salvatore.
-[GEN1_09:GENERA1]
-Je t'offre le double, Tommy, LE DOUBLE!
+[VIC7_3G:VIC7]
+~w~Mais me prends plus jamais de haut, ou t'es un homme mort.
-[GEN1_18:GENERA1]
-~r~Gonzalez a réussi à atteindre le poste de police vivant!
+[VIC7_4:VIC7]
+~w~Wahaahha ! J'vais t'étriper !
-[GEN1_19:GENERA1]
-~g~Les flics de Vice City te cherchent!
+[VIC7_4A:VIC7]
+~w~Retrouve Vincenzo au ~y~cargo.
-[GEN1_20:GENERA1]
-~g~Monte dans une bagnole.
+[VIC7_5:VIC7]
+~w~Crève !
-[GEN1_21:GENERA1]
-~g~Va au~h~ Pay 'N' Spray~g~ à~h~ Vice Point~g~.
+[VIC7_6:VIC7]
+~w~Ha ha ha ha ha !
-[GEN1_22:GENERA1]
-~g~Conduis ton véhicule à l'intérieur de l'atelier de peinture pour perdre ton ~h~indice de recherche~g~, ~h~réparer ~g~et ~h~repeindre ~g~ton véhicule. Coût : ~h~$100~g~. Cette coup-ci, c'est gratuit.
+[VIC7_7:VIC7]
+~w~Ca y est, ce connard est mort ?
-[GEN1_01:GENERA1]
-Quand tu cours, maintiens la~h~ ~k~~PED_FIREWEAPON~~w~ enfoncée pour préparer une attaque au corps à corps.
+[VIC7_8:VIC7]
+~w~Désolé de te décevoir, Vinnie.
-[GEN1_02:GENERA1]
-Quand tu cours, maintiens la~h~ ~k~~PED_FIREWEAPON~~w~ enfoncée pour préparer une attaque au corps à corps.
+[VIC7_9:VIC7]
+~w~Sale fils de pute ! Pourquoi tu veux pas crever ?
-[GEN1_03:GENERA1]
-Quand tu cours, maintiens la~h~ ~k~~PED_FIREWEAPON~~w~ enfoncée pour préparer une attaque au corps à corps.
+[VIC7_10:VIC7]
+~w~T'aurais jamais dû revenir, Toni.
-[GEN1_14:GENERA1]
-Relâche la~h~ ~k~~PED_FIREWEAPON~~w~ pour attaquer.
+[VIC710A:VIC7]
+~w~Moi, j'ai tout donné, tout sacrifié pour Salvatore.
-[GEN1_15:GENERA1]
-Relâche la~h~ ~k~~PED_FIREWEAPON~~w~ pour attaquer.
+[VIC710B:VIC7]
+~w~Et toi, tu rappliques en ville et tout à coup, il y en a plus que pour toi !
-[GEN1_16:GENERA1]
-Relâche la~h~ ~k~~PED_FIREWEAPON~~w~ pour attaquer.
+[VIC7_11:VIC7]
+~w~C'est ma ville, Toni ! MA VILLE !
-[GEN1_23:GENERA1]
-~g~Franchis à nouveau les portes pour revenir au rez-de-chaussée.
+[VIC711A:VIC7]
+~w~Tu me la voleras pas !
-{=================================== MISSION TABLE GENERA2 ===================================}
+[VIC7_12:VIC7]
+~w~J'vais me faire plaisir...
-[COL2_A:GENERA2]
-Tommy! Venez donc vous joindre à moi!
+[VIC7_4B:VIC7]
+~w~L'endroit a l'air désert. Monte à bord du ~y~bateau.
-[COL2_B:GENERA2]
-Ca a l'air bon, hein! Un peu de museau de tapir?
+[VIC7_13:VIC7]
+~w~Va vers la ~y~sortie.
-[COL2_C:GENERA2]
-Euh... Non. Non, merci.
+[VIC7_3C:VIC7]
+~w~Ecoute, Toni, j'sais que j'ai été con avec toi. Je m'excuse.
-[COL2_D:GENERA2]
-Tommy, vous êtes comme le vent de la pampa qui m'a purifié de la puanteur de la corruption.
+[VIC7HUL:VIC7]
+~w~Descends dans la ~y~coque.
-[COL2_E:GENERA2]
-Je dois cependant montrer que je pleure sa mort et continuer les affaires comme d'habitude.
+{=================================== MISSION TABLE SALS1 ===================================}
-[COL2_F:GENERA2]
-Ca me rapproche pas beaucoup de mon pognon...
+[SALS1_6:SALS1]
+Tue ~r~R.C. Hole, le maire !
-[COL2_G:GENERA2]
-Tommy, mon cher, vous n'êtes pas à Liberty. Ici, ça se passe autrement.
+[SALS1_7:SALS1]
+Récupère le ~g~portable du maire !
-[COL2_H:GENERA2]
-Je vais continuer mon enquête, mais en attendant, j'ai une bonne affaire à conclure.
+[SALS1_8:SALS1]
+~r~Le maire a fini son jogging.
-[COL2_I:GENERA2]
-Un service à rendre à un ami, Cortez.
+[SALS1_9:SALS1]
+~r~Le maire s'est échappé.
-[COL2_J:GENERA2]
-Vous êtes un ami, Tommy. Je savais que vous ne me laisseriez pas tomber.
+[SALS110:SALS1]
+Apporte le téléphone à ~y~Salvatore !
-[COL2_K:GENERA2]
-Il faut que vous rencontriez un coursier qui m'a obtenu une technologie intéressante...
+[SALS111:SALS1]
+Jette ton flingue ou je tire !
-[COL2_1:GENERA2]
-Ah, la pluie est très dense en cette saison...
+[SALS112:SALS1]
+Ils sont après toi ! Le ~r~maire~w~ essaie de s'enfuir !
-[COL2_2:GENERA2]
-Quoi?
+[SS1_AA:SALS1]
+Ouais, c'est Toni.
-[COL2_3:GENERA2]
-Ah, comment?
+[SS1_AB:SALS1]
+Ce salopard de maire essaie de me baiser et j'aime pas ces conneries !
-[COL2_4:GENERA2]
-Ecoute, Cortez m'envoie. File-moi ces putain de processeurs.
+[SS1_AC:SALS1]
+Du calme, Sal... Je vais voir si je peux le virer du tableau pour vous.
-[COL2_5:GENERA2]
-Oh... D'accord.
+[SS1_AD:SALS1]
+T'es un brave garçon, Toni. Tu fais honneur à la mémoire de ton père.
-[COL2_B1:GENERA2]
-~g~Retrouve le coursier au centre commercial.
+[SS1_AE:SALS1]
+Ecoute, ce gros con de maire doit faire son petit jogging quotidien dans le parc.
-[COL2_B2:GENERA2]
-~g~Le coursier se barre avec les processeurs de guidage. Ne le laisse pas filer!
+[SS1_AF:SALS1]
+Va lui couper le souffle... définitivement !
-[COL2_B3:GENERA2]
-~g~Ramène les processeurs de guidage au Colonel.
+[SS1_AG:SALS1]
+Et rapporte-moi son portable !
-[COL2_F1:GENERA2]
-~r~T'as buté le contact!
+[SS1_AH:SALS1]
+Comme ça, on saura à qui il a parlé.
-[COL2_F2:GENERA2]
-~r~Le coursier est mort. Récupère les processeurs.
+[SALS1AA:SALS1]
+Ouais, c'est Toni.
-[COL2_6A:GENERA2]
-Arrête, espèce de porc impérialiste d'américain! Ceci est la propriété du gouvernement français! Rendez-le!
+[SALS1AB:SALS1]
+Ce salopard de maire essaie de me baiser.
-[BLIPHLP:GENERA2]
-Le bip sur le radar est un triangle pointant vers le haut, ce qui signifie que la cible est plus élevée que toi.
+[SALS1AC:SALS1]
+J'aime pas ces conneries !
-[COL2_F3:GENERA2]
-~r~Les processeurs de guidage sont au fond de la mer.
+[SALS1AD:SALS1]
+Relax. Je vais lui régler son compte.
-[COL2_F4:GENERA2]
-~r~Le coursier s'est fait la malle! Tu n'as pas récupéré les processeurs de guidage!
+[SALS1AE:SALS1]
+T'es un brave gars, Toni.
-{=================================== MISSION TABLE GENERA3 ===================================}
+[SALS1AF:SALS1]
+Ce gros con devrait faire son jogging quotidien dans le parc.
-[GEN3_49:GENERA3]
-Santé de Lance:
+[SALS1AG:SALS1]
+Coupe-lui le souffle... définitivement !
-[GEN3_A:GENERA3]
-Merci d'être venu, Thomas.
+[SALS1AH:SALS1]
+Oh, et rapporte-moi son portable !
-[GEN3_B:GENERA3]
-Pardonnez-moi d'en venir directement au fait...
+[SALS1AI:SALS1]
+Comme ça, on verra à qui il a parlé...
-[GEN3_C:GENERA3]
-Diaz m'a demandé de superviser une petite transaction...
+[SALS1C1:SALS1]
+Baissez votre arme, monsieur !
-[GEN3_D:GENERA3]
-Espérons que ça se passera mieux que l'autre fois, n'est-ce pas?
+[SALS1C2:SALS1]
+Arrêtez ou je tire !
-[GEN3_E:GENERA3]
-C'est pour ça que j'ai pensé à vous, amigo.
+[SALS1C3:SALS1]
+On ne bouge plus !
-[GEN3_F:GENERA3]
-J'ai déposé une arme dans le parking à niveaux.
+[SALS1C4:SALS1]
+Doucement !
-[GEN3_G:GENERA3]
-Récupèrez-le et allez surveiller les hommes de Diaz au rendez-vous.
+[SALS113:SALS1]
+~r~Le téléphone du maire est H.S.
-[GEN3_H:GENERA3]
-Gracias, amigo...
+[SALS114:SALS1]
+Attention ! Ils te descendront si tu entres dans le parc avec une arme !
-[GEN3_1:GENERA3]
-On s'accapare toute l'action, à ce que je vois...
+{=================================== MISSION TABLE SALS2 ===================================}
-[GEN3_2:GENERA3]
-Ecoute, tu veux pas faire autre chose que de me suivre partout comme mon ombre? Pourquoi tu ne viens pas pour me montrer à quoi t'es bon?
+[SALS2_1:SALS2]
+~w~Va à la ~b~caisse.
-[GEN3_3:GENERA3]
-Pourquoi pas... Au fait, moi c'est Lance.
+[SALS2_2:SALS2]
+~w~Roule jusqu'au ~y~lieu du rendez-vous.
-[GEN3_5:GENERA3]
-Tu dois être le nouveau porte-flingues de Cortez.
+[SALS2_3:SALS2]
+~w~Remonte dans la ~b~caisse.
-[GEN3_6:GENERA3]
-Jusqu'à ce que de meilleures opportunités se présentent...
+[SALS2_4:SALS2]
+~r~Mickey s'est fait tuer !
-[GEN3_7:GENERA3]
-Ils seront là d'une minute à l'autre. On ferait mieux de se trouver une bonne planque...
+[SALS2_5:SALS2]
+~r~Un des hommes de Salvatore a été tué !
-[GEN3_8:GENERA3]
-OK! Je vais sur le balcon et toi tu t'mets sur le toit de l'autre côté de la cour.
+[SALS2AA:SALS2]
+Toni,
-[GEN3_9:GENERA3]
-J'suis vivant! Têtes de noeuds! Et ça c'est grâce à toi! C'est quoi ton nom?
+[SALS2AB:SALS2]
+Quelques-uns des gars passeront te voir plus tard.
-[GEN3_10:GENERA3]
-Tommy.
+[SALS2AC:SALS2]
+Sois dans le coin quand ils rappliqueront.
-[GEN3_11:GENERA3]
-On se reverra bientôt, je pense!
+[SALS2AD:SALS2]
+Ciao, Salvatore.
-[GEN3_12:GENERA3]
-Bon, où est passé Lance? Merde...
+[SALS2CA:SALS2]
+Salut Toni !
-[GEN3_14:GENERA3]
-Tommy! J'ai besoin d'un coup de main!
+[SALS2CC:SALS2]
+Allez, monte, c'est toi qui conduis !
-[GEN3_15:GENERA3]
-T'en fais pas, je te couvre!
+[SALS2CD:SALS2]
+Mickey, euh, y s'passe quoi, là ?
-[GEN3_16:GENERA3]
-Les hommes de Diaz se font massacrer!
+[SALS2CE:SALS2]
+Allez, Cipriani, quoi, t'as peur que j'te descende ?
-[GEN3_19:GENERA3]
-~g~Les haïtiens! Ils veulent foutre le deal en l'air! Protège Diaz!
+[SALS2BA:SALS2]
+Salvatore est juste là-bas...
-[GEN3_20:GENERA3]
-~g~Va au parking à niveaux où tu peux récupérer le flingue que le Colonel a laissé pour toi.
+[SALS2BC:SALS2]
+Toni, mon garçon,
-[GEN3_22:GENERA3]
-Santé de Diaz :
+[SALS2BD:SALS2]
+c'est ton jour de gloire, aujourd'hui !
-[GEN3_23:GENERA3]
-~g~T'as laissé Lance derrière! Va le chercher!
+[SALS2BE:SALS2]
+Salvatore... Mr Leone.
-[GEN3_25:GENERA3]
-~r~Lance est mort!
+[SALS2BF:SALS2]
+Ca fait longtemps que maman attendait ça.
-[GEN3_28:GENERA3]
-~g~Ramène la serviette à Diaz.
+[SALS2CB:SALS2]
+Allez, monte, on va faire un tour.
-[GEN3_29:GENERA3]
-~g~Récupère la serviette et ramène-la à Diaz.
+[SALS2BB:SALS2]
+Madon' mia, qu'est-ce que tu attends ?
-[GEN3_30:GENERA3]
-~r~Il s'est barré avec le pognon! Diaz va te couper les couilles!
+[SALS2AF:SALS2]
+Hé, merci, Toni. Je te recontacterai.
-[GEN3_33:GENERA3]
-~r~Tu es supposé surveiller Diaz et ses hommes, pas les flinguer!
+{=================================== MISSION TABLE SALS3 ===================================}
-[GEN3_34:GENERA3]
-~r~Ils ne vont pas pouvoir faire affaire si tu descends les cubains!
+[SALS3_2:SALS3]
+Dégâts
-[GEN3_35:GENERA3]
-~g~Il a volé le pognon de Diaz!
+[SALS313:SALS3]
+~r~Le conseiller du maire est mort !
-[GEN3_36:GENERA3]
-~g~Saute sur la moto, rattrape-le et récupère le pognon de Diaz!
+[SALS314:SALS3]
+~r~Salvatore est mort !
-[GEN3_37:GENERA3]
-~g~Voilà les Cubains. Surveille le deal en veillant à la sécurité de Diaz et de Lance.
+[SALS3AA:SALS3]
+Monte, Toni !
-[GEN3_38:GENERA3]
-~r~Diaz est mort! Tu devais le protéger!
+[SALS3AB:SALS3]
+Où on va ?
-[GEN3_39:GENERA3]
-~g~Prends position en haut des escaliers.
+[SALS3AC:SALS3]
+Parler avec l'assistant du maire à propos de Franco Forelli.
-[GEN3_44:GENERA3]
-~g~Va avec Lance au rendez-vous et protège Diaz.
+[SALS3BA:SALS3]
+Hé, sortez de mon bateau !
-[GEN3_40:GENERA3] { reVC update }
-Pour ~h~tirer droit devant ~w~lorsque tu es en ~h~moto~w~, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~.
+[SALS3BB:SALS3]
+Tu viens avec moi.
-[GEN3_41:GENERA3] { reVC update }
-Pour ~h~tirer droit devant ~w~lorsque tu es en ~h~moto~w~, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~.
+[SALS3BC:SALS3]
+Vous pouvez pas faire ça !
-[GEN3_46:GENERA3]
-Chiiiier!
+[SALS3BD:SALS3]
+Accélère, les services secrets vont pas tarder à rappliquer !
-[GEN3_47:GENERA3]
-Tommy!
+[SALS3CA:SALS3]
+Toni, fais gaffe ! Y a des tireurs sur ces rochers !
-[GEN3_48:GENERA3]
-Merde!
+[SALS3CB:SALS3]
+Des tireurs droit devant !
-[GEN3_50:GENERA3]
-~r~Tu as paumé le fric de Diaz! La prochaine fois, essaie de ne pas cramer le blé!
+[SALS3CC:SALS3]
+Fais gaffe à droite, Toni !
-[GEN3_51:GENERA3]
-Encore des Haïtiens dans un camion merdique!
+[SALS3CD:SALS3]
+A gauche, Toni, à gauche !
-[GEN3_54:GENERA3]
-s Restez pas plantés là, bande d'abrutis! Butez-moi ce Haïtien de merde!
+[SALS3CE:SALS3]
+Des tireurs sur la jetée !
-[GEN3_55:GENERA3]
-Tommy! Je reste là et je m'occupe de Diaz!
+[SALS3CF:SALS3]
+Bordel de merde, les services secrets s'amènent en hélico !
-[GEN3_18:GENERA3]
-~g~Voilà les Cubains. Reste près de Diaz. Surveille les opérations tout en t'assurant que Diaz et Lance sont en sécurité.
+[SALS3DA:SALS3]
+Le maire allait même pas aux chiottes sans demander à Franco !
-[GEN3_56:GENERA3]
-~r~Diaz a été pris dans une embuscade et s'est fait tuer! La prochaine fois, ne le quitte pas des yeux!
+[SALS3DB:SALS3]
+Personne ne contrôlait le maire !
-[GEN3_57:GENERA3]
-Le Kruger est un fusil d'assaut permettant de viser manuellement à la 1ere personne.
+[SALS3DC:SALS3]
+Aargh ! Attendez, OK, vous avez raison !
-[GEN3_58:GENERA3]
-Appuie sur la touche~h~ R1~w~ et maintiens-la enfoncée pour ~h~viser~w~ avec un fusil d'assaut.
+[SALS3DE:SALS3]
+Les Siciliens ? Pourquoi ?
-[GEN3_59:GENERA3]
-Appuie sur la touche~h~ L1~w~ et maintiens-la enfoncée pour ~h~viser~w~ avec un fusil d'assaut.
+[SALS3DF:SALS3]
+Ils contrôlent Franco et veulent déclencher une guerre entre les familles de Liberty.
-[GEN3_60:GENERA3]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour ~h~tirer~w~ avec un fusil d'assaut.
+[SALS3DG:SALS3]
+Quand la poussière retombera, ils s'empareront de la ville.
-[GEN3_61:GENERA3]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour ~h~tirer~w~ avec un fusil d'assaut.
+[SALS3DH:SALS3]
+Toni, je t'appelle plus tard.
-[GEN3_62:GENERA3]
-Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour ~h~tirer~w~ avec un fusil d'assaut.
+[SALS3DI:SALS3]
+Pour l'instant, faut que je balance ce connard au fond de la baie !
-[GEN3_63:GENERA3]
-Tu peux fusiller des types de côté sur une ~h~ moto ~w~, mais également ~h~tirer droit devant~w~.
+[SALS3DD:SALS3]
+Ce sont ces Siciliens... ils ont forcé la main à Franco.
-[GEN3_64:GENERA3] { reVC update }
-Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto.
+{=================================== MISSION TABLE SALS4 ===================================}
-[GEN3_65:GENERA3] { reVC update }
-Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto.
+[SALS4BA:SALS4]
+Ouais.
-[GEN3_66:GENERA3] { reVC update }
-Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto.
+[SALS4BB:SALS4]
+Grâce à Dieu, t'as décroché !
-[GEN3_67:GENERA3]
-Il te faut une mitrailleuse pour tirer droit devant toi sur une moto.
+[SALS4BC:SALS4]
+Quoi de neuf, Sal ?
-[GEN3_53:GENERA3]
-Mon argent!
+[SALS4BD:SALS4]
+J'étais en train d'espionner les Forelli à Fort Staunton quand tout a basculé.
-[GEN3_52:GENERA3]
-Ces Haitiens pensent qu'ils peuvent se payer Ricardo Diaz!
+[SALS4BE:SALS4]
+Les Sindacco ont déclaré la guerre aux Forelli,
-{=================================== MISSION TABLE GENERA4 ===================================}
+[SALS4BF:SALS4]
+et je suis coincé entre les tirs croisés !
-[DETON:GENERA4]
-DETONATION :
+[SALS4BG:SALS4]
+J'arrive.
-[COL4_3:GENERA4]
-CONVOI, HALTE!
+[SALS4BH:SALS4]
+Amène ma limo, elle est blindée. On va en avoir besoin !
-[COL4_6:GENERA4]
-ON EST SOUS LE FEU ENNEMI!
+[SALS4AA:SALS4]
+Allez, Toni, on se tire de là !
-[COL4_7:GENERA4]
-Civil, éloigne-toi du char!
+[SALS4AB:SALS4]
+Ramène-moi à la limo !
-[COL4_8:GENERA4]
-J'ai dit, dégage! IMMEDIATEMENT!
+[SALS4AE:SALS4]
+OK, j'ai une piaule à Newport. Conduis-moi là-bas !
-[COL4_9:GENERA4]
-POSITIONS DEFENSIVES!
+[SALS4AF:SALS4]
+Merci, Toni, je t'appelle.
-[COL4_11:GENERA4]
-Dégagez ce civil de notre chemin, soldat! -Chef, oui, chef!
+[SAL4_1:SALS4]
+Va prendre la ~b~limo de M. Leone.
-[COL4_12:GENERA4]
-Un civil dans le char! ARRETEZ-LE!
+[SAL4_2:SALS4]
+~r~T'as bousillé la voiture !
-[COL4_13:GENERA4]
-Ceci est un convoi militaire, ne bloquez pas la route!
+[SAL4_3:SALS4]
+Conduis la voiture à ~y~Fort Staunton.
-[COL4_14:GENERA4]
-Descendez-le, soldat.
+[SAL4_4:SALS4]
+~r~T'as laissé Salvatore mourir !
-[COL4_15:GENERA4]
-Dégagez ce véhicule civil de la route! -Chef, on déplace le véhicule, chef!
+[SAL4_6:SALS4]
+~b~Salvatore~w~ est au bout de la ruelle.
-[COL4_17:GENERA4]
-Ok, peloton, on dégage!
+[SAL4_9:SALS4]
+Va au ~y~garage.
-[COL4_18:GENERA4]
-Y'a quelqu'un dans le char, chef!
+[SAL4_11:SALS4]
+T'as abandonné ~b~Salvatore !
-[COL4_19:GENERA4]
-Trouvez-moi quelques beignets, soldat! -Chef, oui, chef!
+[SAL4_12:SALS4]
+C'est bloqué ! Laisse la limo ici et continue à pied.
-[COL4_20:GENERA4]
-Cible verrouillée, chef!
+[SAL4_13:SALS4]
+Retourne à la ~b~limo.
-[COL4_21:GENERA4]
-TIREUR D'ELITE!
+[SAL4_14:SALS4]
+Conduis Salvatore et la limo jusqu'au ~y~garage~w~ à Newport.
-[COL4_22:GENERA4]
-Je me tire d'ici.
+[SAL4_15:SALS4]
+Trouve ~b~Salvatore !
-[COL4_23:GENERA4]
-Objectif atteint! Peloton, rompez! -Allons manger quelques beignets!
+[SAL4_16:SALS4]
+Emmène Salvatore jusqu'à la ~b~limo.
-[COL4_24:GENERA4]
-Protocole de sécurité Delta India Echo déclenché! Autodestruction du véhicule initialisée!
+[SAL4_17:SALS4]
+Attends que ~b~Salvatore~w~ monte dans la limo !
-[COL4_26:GENERA4]
-Prépare-toi à crever, ordure communiste!
+{=================================== MISSION TABLE SALS5 ===================================}
-[COL4_B2:GENERA4]
-~r~Le char est parvenu sans problème à destination!
+[SALS5_1:SALS5]
+~w~Appuie sur~h~ ~k~ ~VEACC~ ~w~pour contrôler la caisse de Paul Sindacco.
-[COL4_B5:GENERA4]
-~r~Le char est détruit!
+[SALS5_2:SALS5]
+~w~Descends les ~r~Forelli~w~ au rendez-vous avant que Sindacco trouve le système de contrôle.
-[COL4_01:GENERA4]
-Diaz était très content et il veut vous voir.
+[SALS5_3:SALS5]
+~r~Paul Sindacco a été tué !
-[COL4_02:GENERA4]
-Et c'est une bonne chose?
+[SALS5_4:SALS5]
+~r~La camionnette de Salvatore a été détruite !
-[COL4_03:GENERA4]
-Evidemment! Même si je commence à penser que Diaz est responsable de notre malheureuse perte...
+[SALS5_5:SALS5]
+~r~Sindacco est arrivé au rendez-vous !
-[COL4_04:GENERA4]
-Qu'est-ce qui vous fait dire ça?
+[SALS5_6:SALS5]
+~w~Va à la ~b~camionnette.
-[COL4_05:GENERA4]
-On n'accuse pas comme ça un homme comme Diaz... Je ne faisais que penser à haute voix...
+[SALS5_7:SALS5]
+~w~Temps restant
-[COL4_06:GENERA4]
-Quoi qu'il en soit, j'ai une proposition qui devrait vous intéresser...
+[SALS5_8:SALS5]
+~r~Sindacco a trouvé le système de contrôle !
-[COL4_07:GENERA4]
-Je n'ai plus le temps de faire des commissions, Cortez.
+[SALS5_9:SALS5]
+~w~La commande satellite de la voiture de Sindacco aura un temps de réaction lent.
-[COL4_08:GENERA4]
-J'aurais pensé qu'un homme avec des dettes aussi délicates serait ouvert à toute opportunité. Mais écoutez quand même, Tommy.
+[SALS510:SALS5]
+Dégâts
-[COL4_09:GENERA4]
-Allez-y...
+[SALS5AA:SALS5]
+Allô !
-[COL410:GENERA4]
-J'ai un acheteur pour une pièce d'artillerie qui est emmenée à travers la ville. Récupèrez-la pour moi.
+[SALS5AB:SALS5]
+Toni, c'est moi, j'ai un truc pour toi...
-[COL411:GENERA4]
-Et une fois que vous l'aurez, je veux que vous m'appeliez de suite, et...
+[SALS5AC:SALS5]
+Tu vas adorer, ça va être génial.
-[COL4_B4:GENERA4]
-~g~Le char est verrouillé. Trouve le moyen d'en faire sortir les occupants.
+[SALS5AD:SALS5]
+Qu'est-ce que vous voulez que je fasse, Sal ?
-[COL4_1:GENERA4]
-Qu'est-ce qui se passe avec l'artilleur? - Aucune idée, chef!
+[SALS5AE:SALS5]
+Y a une camionnette pas loin.
-[COL4_4:GENERA4]
-Montez voir, soldat! - Chef, oui, chef!
+[SALS5AF:SALS5]
+Rappelle-moi quand tu l'auras trouvée.
-[COL4_B1:GENERA4]
-~g~Va faucher la pièce d'artillerie escortée à travers la ville.
+[SALS5BA:SALS5]
+OK, Sal, je suis dans la camionnette.
-[COL4_B3:GENERA4]
-~g~Amène le char dans le garage du colonel avant qu'il ne s'autodétruise.
+[SALS5BB:SALS5]
+Bon. On va s'amuser avec la caisse de Paulie Sindacco.
-[COL4_B6:GENERA4]
-~g~Trouve un moyen de piquer le char!
+[SALS5BC:SALS5]
+Qu'est-ce que je suis censé faire ?
-[COL4_B7:GENERA4]
-~g~Conduis le char dans le garage.
+[SALS5BD:SALS5]
+Paulie va rencontrer les Forelli...
-[COL4_B8:GENERA4]
-~g~Sors du char et du garage.
+[SALS5BE:SALS5]
+Il essaie de conclure une trêve.
-{=================================== MISSION TABLE GENERA5 ===================================}
+[SALS5BF:SALS5]
+Sers-toi du matos de la camionnette pour contrôler la voiture de Paulie.
-[COL5A_1:GENERA5]
-Les circonstances me forcent à un départ en hâte, amigo.
+[SALS5BG:SALS5]
+Et sème la pagaille dans ce rendez-vous !
-[COL5A_2:GENERA5]
-Quel est le problème?
+[SALS5CA:SALS5]
+Mais qu'est-ce que... ?
-[COL5A_3:GENERA5]
-Les français veulent récupérer leur technologie de missile et après le dernier incident,
+[SALS5CC:SALS5]
+Non ! Au secours !
-[COL5A_4:GENERA5]
-je crois que l'heure est venue de me mettre à l'abri.
+[SALS5CD:SALS5]
+Dégagez le passage !
-[COL5A_5:GENERA5]
-Ca serait pas plus sûr de partir en avion ?
+[SALS5CF:SALS5]
+Aidez-moi !
-[COL5A_6:GENERA5]
-Je serais mort avant d'avoir atteint l'enregistrement. D'ailleurs, il faut que je fasse sortir la marchandise du pays.
+[SALS5CG:SALS5]
+Ma voiture est possédée !
-[COL5A_7:GENERA5]
-Besoin d'un autre flingue?
+[SALS5CE:SALS5]
+Cette voiture veut ma mort !
-[COL5A_8:GENERA5]
-Vous, amigo, vous en valez dix... hahahaha.
+[SALS5CB:SALS5]
+Hé, mais qu'est-ce qui se passe ici ?
-[COL5B_1:GENERA5]
-Tommy, vous m'avez bien protégé et servi.
+{=================================== MISSION TABLE SALS6 ===================================}
-[COL5B_2:GENERA5]
-Mais maintenant, vous devez nous laisser avant qu'on arrive en pleine mer.
+[SALS601:SALS6]
+~w~Sal t'a laissé un ~b~bateau ~w~à la jetée sud-ouest. Tu dois arrêter le petit malin.
-[COL5B_4:GENERA5]
-Merci, Colonel.
+[SALS602:SALS6]
+~w~Il file le long de la côte ! Arrête-~r~le !
-[COL5B_5:GENERA5]
-Une dernière chose, pendant que je suis parti, pouvez-vous surveiller Mercedes pour moi?
+[SALS603:SALS6]
+~r~Il ~w~retourne voir Franco Forelli !
-[COL5B_6:GENERA5]
-Je crois qu'elle peut se surveiller tout seule, mais soyez tranquille, je garderai l'oeil ouvert.
+[SALS604:SALS6]
+~r~Le petit malin a regagné Fort Staunton.
-[COL5B_7:GENERA5]
-Merci, mon ami. Jusqu'à mon retour.
+[SALS605:SALS6]
+~r~Il a filé !
-[COL5B_8:GENERA5]
-Adios, amigo.
+[SALS606:SALS6]
+~r~Il ~w~se barre à pied !
-[COL5_7:GENERA5]
-Arrêtez de me tirer dessus!
+[SALS607:SALS6]
+~w~Il s'enfuit dans une ~r~caisse volée !
-[COL5_9:GENERA5]
-Tommy, empêchez-les de me tirer dessus!
+[SALS608:SALS6]
+~r~Tu peux pas le poursuivre sans bateau !
-[COL5_10:GENERA5]
-J'ai l'immunité diplomatique!
+[SALS6AA:SALS6]
+Allô ?
-[COL5_11:GENERA5]
-Ne tirez pas, je suis un Colonel!
+[SALS6AD:SALS6]
+Il vient de partir pour rencontrer Franco Forelli.
-[COL5_12:GENERA5]
-Tommy, descendez-les, mon pays vous en sera reconnaissant.
+[SALS6AE:SALS6]
+Il est de notre intérêt que Franco ne sache rien
-[COL5_13:GENERA5]
-Tommy, on est submergés par les Français!
+[SALS6AF:SALS6]
+et que cette guerre continue.
-[COL5_14:GENERA5]
-Tommy, il y a des Français partout! Je déteste ça!
+[SALS6AG:SALS6]
+Liquide cette grande gueule !
-[COL5_15:GENERA5]
-Tommy, comment ça va?
+[SALS6AH:SALS6]
+C'est comme si c'était fait, Sal.
-[COL5_16:GENERA5]
-Ca, c'est pour Piaf et Gainsbourg et votre saloperie de pain français!
+[SALS6AB:SALS6]
+Toni, un petit malin a découvert que les mafieux siciliens étaient derrière la querelle Forelli-Sindacco.
-[COL5_1:GENERA5]
-A bâbord! A bâbord!
+[SLS6_20:SALS6]
+~w~Il retourne voir Franco Forelli. Elimine-~r~le !
-[COL5_2:GENERA5]
-Ils attaquent à tribord!
+[SLS6_21:SALS6]
+~w~Elimine-~r~le !
-[COL5_3:GENERA5]
-Le pont devant!
+{=================================== MISSION TABLE NEDS1 ===================================}
-[COL5_4:GENERA5]
-Ils ont un hélico!
+[NEDS1_1:NEDS1]
+Le FBI est en route pour récupérer un rapport mensonger sur certaines stars du sport.
-[COL5_B1:GENERA5]
-~g~Protège le colonel et son yacht à tout prix.
+[NEDS1_2:NEDS1]
+Si le rapport tombe entre les mains du FBI, des innocents seront accusés.
-[COL5_B2:GENERA5]
-~g~Passe devant et dégage la route pour le yacht du colonel.
+[NEDS1_3:NEDS1]
+Il faut que tu l'interceptes et que tu me l'apportes pour que je le mette en lieu sûr.
-[COL5_B3:GENERA5]
-~r~Le colonel est mort!
+[NEDS1_4:NEDS1]
+Tu auras besoin d'un véhicule du FBI.
-[COL5_B4:GENERA5]
-~g~Abats l'hélicoptère vous tire dessus.
+[NEDS1_5:NEDS1]
+Une attaque à main armée a mal tourné sur l'autoroute. Le FBI est sur place.
-[COL5B_3:GENERA5]
-Je vous laisse ma vedette personnelle. Gardez-la en témoignage de ma gratitude!
+[NEDS1_6:NEDS1]
+Vole leur caisse et va au lieu du rendez-vous avant qu'il ne soit trop tard !
-[COL5_B5:GENERA5]
-~g~Descends les hélicos et protège bien le yacht.
+[NEDS1_8:NEDS1]
+Remonte dans la ~b~caisse du FBI !
-[COL5_B6:GENERA5]
-~g~Tu n'as plus de munitions, va en chercher d'autres dans les escaliers du pont supérieur.
+[NEDS1_9:NEDS1]
+Va au ~y~lieu du rendez-vous.
-[COL5_B7:GENERA5]
-~g~Ta santé diminue. Régénère-la dans les escaliers du pont supérieur.
+[NEDS111:NEDS1]
+Sème les flics !
-{=================================== MISSION TABLE HAIT1 ===================================}
+[NEDS113:NEDS1]
+J'ai ici le rapport que je t'avais promis...
-[HAM1_A:HAIT1]
-Bonjour? Y'a quelqu'un?
+[NEDS114:NEDS1]
+Qu'est-ce... Il y a déjà un agent ici !?
-[HAM1_B:HAIT1]
-Entre, mon petit, et repose ton esprit.
+[NEDS115:NEDS1]
+Une autre bagnole du FBI ? Hé ! Mais... T'es un imposteur !
-[HAM1_C:HAIT1]
-Tu dois être le grand méchant homme dont m'a parlé mon grand-père.
+[NEDS116:NEDS1]
+Arrête ~r~l'informateur !
-[HAM1_D:HAIT1]
-Il me dit des choses sur toi, tu sais, quand il me rend visite
+[NEDS117:NEDS1]
+Récupère le ~g~rapport.
-[HAM1_E:HAIT1]
-et aussi des choses sur les autres qui t'attendent.
+[NEDS118:NEDS1]
+Apporte le rapport au ~y~Liberty Tree.
-[HAM1_F:HAIT1]
-Bon, nous sommes tous morts depuis longtemps, mais toi,
+[NEDS119:NEDS1]
+~r~La caisse du FBI est foutue.
-[HAM1_G:HAIT1]
-je ne voudrais pas être à ta place, hé hé hé!
+[NEDS120:NEDS1]
+~r~T'es arrivé trop tard ! L'informateur a donné son rapport au FBI !
-[HAM1_H:HAIT1]
-J'ai reçu un message. De venir ici.
+[NEDS121:NEDS1]
+Bien joué, Toni, Dieu sera content de toi !
-[HAM1_I:HAIT1]
-Tu les entends?
+[NEDS122:NEDS1]
+Je veillerai à ce qu'il ne tombe pas entre de mauvaises mains.
-[HAM1_J:HAIT1]
-Ils crient ton nom, mon garçon, ils doivent vraiment te vouloir, tu ne crois pas?
+[NEDS123:NEDS1]
+Merci !
-[HAM1_K:HAIT1]
-Maintenant, si tu rends service à tata Poulet, peut-être qu'elle peut t'aider.
+[NEDS124:NEDS1]
+~r~Le rapport est détruit !
-[HAM1_L:HAIT1]
-Peut-être qu'elle peut te donner un petit grigri après tout ça.
+[NEDS1AA:NEDS1]
+Pardonnez-moi, mon Père, car j'ai péché...
-[HAM1_M:HAIT1]
-Te donner de la magie pour donner le mauvais oeil au policier, mmmm?
+[NEDS1AB:NEDS1]
+Merde, le Diable te lâche vraiment pas, Antonio.
-[HAM1_N:HAIT1]
-Ecoute, tout ça est très, hum... me donner quoi?
+[NEDS1AE:NEDS1]
+Un misérable pécheur a confessé avoir fabriqué un faux rapport de dopage sur nos meilleurs athlètes.
-[HAM1_O:HAIT1]
-Je... Je crois que je me suis planté d'adresse...
+[NEDS1AF:NEDS1]
+Si tu pouvais empêcher qu'il soit remis au FBI, tu sauverais la carrière d'innocents.
-[HAM1_P:HAIT1]
-Fais-ça pour moi, Tommy...
+[NEDS1AG:NEDS1]
+Ce sera fait, mon Père.
-[HAM1_Q:HAIT1]
-Les Cubains, ces vilains coqs arrogants, hum,
+[NEDS1BA:NEDS1]
+Vous êtes en avance.
-[HAM1_R:HAIT1]
-ont fait des ennuis à mes adorables garçons haïtiens.
+[NEDS1BB:NEDS1]
+Hé, je vous connais pas, où est John-O ?
-[HAM1_S:HAIT1]
-Et maintenant, ils ont dit au policier où je cachais mes poudres!
+[NEDS1BC:NEDS1]
+John-O ? Il a pas pu venir.
-[HAM1_T:HAIT1]
-Ils pensent que c'est des drogues, les idiots!
+[NEDS1BD:NEDS1]
+Hé, c'est John-O !
-[HAM1_U:HAIT1]
-Alors, sois un gentil garçon, Tommy, et va chercher les poudres de tata Poulet.
+[NEDS1BE:NEDS1]
+Donne-moi ça !
-[HAM1_V:HAIT1]
-Oui, d'accord, d'accord.
+[NEDS1BF:NEDS1]
+Enfoiré !
-[HAM1_1:HAIT1]
-~g~Les policiers se rapprochent des poudres! Va les récupérer avant eux!
+[NEDS1AD:NEDS1]
+Ah, la seconde option est plus dans mes cordes...
-[HAM1_2:HAIT1]
-~r~Les policiers ont trouvé la cachette les premiers!
+[NEDS1AC:NEDS1]
+Maintenant, soit tu t'en tires avec des Je vous Salue Marie, soit tu fais le sale boulot du Seigneur.
-[HAM1_3:HAIT1]
-~g~Ramène tout ça à la planque!
+[NEDS1_7:NEDS1]
+Va sur les lieux du crime, vole la ~b~caisse du FBI~w~ et rends-toi au lieu du rendez-vous avant ~1~:~1~.
-[HAM1_4:HAIT1]
-~g~Bien! Maintenant, la suivante!
+[NEDS125:NEDS1]
+Fonce sur les lieux du crime, vole une ~b~voiture du FBI~w~ et atteins le rendez-vous avant 0~1~:~1~ heures.
-[HAM1_6:HAIT1]
-~r~La cachette a été détruite, imbécile!
+[NEDS126:NEDS1]
+Fonce sur les lieux du crime, vole une ~b~voiture du FBI~w~ et atteins le rendez-vous avant 0~1~:0~1~ heures.
-[HAM1_7:HAIT1]
-~g~Les policiers ont les poudres! Récupère-les avant qu'ils filent!
+[NEDS127:NEDS1]
+Fonce sur les lieux du crime, vole une ~b~voiture du FBI~w~ et atteins le rendez-vous avant ~1~:0~1~ heures.
-[HAM1_8:HAIT1]
-~g~Les flics sont en route pour récupérer les poudres, magne-toi!
+{=================================== MISSION TABLE NEDS2 ===================================}
-[HAT_1A:HAIT1]
-~g~Bouge pas d'un poil, connard!
+[NEDS2AA:NEDS2]
+Pardonnez-moi, mon Père, car j'ai péché...
-{=================================== MISSION TABLE HAIT2 ===================================}
+[NEDS2AB:NEDS2]
+Merde, Toni, qu'est-ce que t'as encore foutu ?
-[HAT2_B1:HAIT2]
-~g~Va à la camionnette contenant les bombes volantes.
+[NEDS2AC:NEDS2]
+Hé ! Votre langage, mon Père...
-[HAT2_B2:HAIT2]
-Tue les Cubains...
+[NEDS2AD:NEDS2]
+Ah ouais, Je te salue Marie pleine de trucs...
-[HAT2_B4:HAIT2]
-... Et détruis leurs bateaux!
+[NEDS2AE:NEDS2]
+Une âme perdue a confessé un recel de diamants.
-[HAT2_B5:HAIT2]
-~g~Les Cubains essayent de s'enfuir! Ne les laisse pas faire!
+[NEDS2AF:NEDS2]
+Aide ce pèlerin à trouver le chemin de la rédemption. Prends les diamants et je veillerai à leur restitution...
-[HAT2_B6:HAIT2]
-~r~L'avion télécommandé est hors de portée!
+[NB2_2:NEDS2]
+Prends la ~g~mallette~w~ et tue tous les membres du gang.
-[HAT2_B7:HAIT2]
-~g~Un des Cubains s'échappe en voiture. Ne laisse aucun témoin!
+[NB2_3:NEDS2]
+Apporte la mallette aux ~y~bureaux de Liberty Tree.
-[HAT2_B8:HAIT2]
-~r~Tu n'as plus d'avions télécommandés!
+[NB2_4:NEDS2]
+Récupère la ~g~mallette !
-[HAT2_B9:HAIT2]
-Avions télécommandés :
+[NB2_1:NEDS2]
+C'est un piège !
-[HAT2_1:HAIT2]
-Oh, désolé, j'ai dû me tromper d'adresse...
+[NB2_6:NEDS2]
+Bute tous les ~r~gardes !
-[HAT2_2:HAIT2]
-Eh bien, entre donc te détendre en buvant un peu de thé.
+[NB2_7:NEDS2]
+Détruis ~r~l'hélicoptère !
-[HAT2_3:HAIT2]
-Tu as quelque chose pour moi, Tommy?
+[NB2_5:NEDS2]
+Détruis l'~r~hélicoptère~w~, tue les ~r~gardes~w~ et récupère la ~g~mallette.
-[HAT2_4:HAIT2]
-Ouais...
+{=================================== MISSION TABLE NEDS3 ===================================}
-[HAT2_5:HAIT2]
-Cet endroit me semble familier. Un vague souvenir d'enfance, un air de déjà vu...
+[NEDS3AA:NEDS3]
+Pardonnez-moi, mon Père, car j'ai péché...
-[HAT2_6:HAIT2]
-Tommy, je voudrais te demander de faire une petite commission pour moi...
+[NEDS3AB:NEDS3]
+Toni, mon fils, comparé aux dégénérés de cette ville, t'es un vrai saint !
-[HAT2_7:HAIT2]
-Tu me rappelles quelqu'un que...
+[NEDS3AC:NEDS3]
+Ils polluent nos enfants avec leurs gaz diaboliques ! Ils souillent le paradis !
-[HAT2_8:HAIT2]
-Les Cubains ont des bateaux très rapides qui leur servent à traverser les mers avec de la drogue.
+[NEDS3AD:NEDS3]
+Ramène ces pauvres pécheurs dans le droit chemin !
-[HAT2_9:HAIT2]
-C'est leur gagne-pain.
+[NEDS3_1:NEDS3]
+Conduis le camion de pompiers à travers la ville en causant le plus d'accidents, de collisions et de destructions que tu peux.
-[HAT2_10:HAIT2]
-Mon neveu a fabriqué quelques bombes volantes pour nous en débarrasser.
+[NEDS3_2:NEDS3]
+~w~Vole le ~b~camion de pompiers.
-[HAT2_11:HAIT2]
-Transforme leurs bateaux en allumettes!
+[NEDS3_3:NEDS3]
+~w~Tu as ~1~ secondes pour retourner au ~b~camion de pompiers.
-[HAT2_12:HAIT2]
-Bon, merci pour le thé.
+[NEDS3_4:NEDS3]
+Cote
-[HAT2_B3:HAIT2] { reVC update }
-Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour larguer une bombe ou sur ~h~~k~~VEHICLE_ENTER_EXIT~~w~ pour annuler.
+[NEDS3_5:NEDS3]
+Maintenant, va causer le plus d'accidents, de collisions et de destructions possibles !
-{=================================== MISSION TABLE HAIT3 ===================================}
+[NEDS3_6:NEDS3]
+Piéton écrasé !
-[HAM3_A:HAIT3]
-Salut, euh, je... Je cherche quelqu'un dans le coin...
+[NEDS3_7:NEDS3]
+Véhicule coulé !
-[HAM3_B:HAIT3]
-Tu as l'air d'avoir faim, Tommy.
+[NEDS3_8:NEDS3]
+Véhicule détruit !
-[HAM3_C:HAIT3]
-On se connait?
+[NEDS3_9:NEDS3]
+Véhicule retourné !
-[HAM3_D:HAIT3]
-Chut!
+[NEDS310:NEDS3]
+~r~Le camion de pompiers a été détruit.
-[HAM3_E:HAIT3]
-Encore une chose et je te laisse partir, Tommy.
+[NEDS311:NEDS3]
+Dérapage 360° !
-[HAM3_F:HAIT3]
-Mes garçons sont en guerre contre les Cubains.
+[NEDS312:NEDS3]
+Dérapage 720° !
-[HAM3_G:HAIT3]
-Mais pas de revolvers.
+[NEDS313:NEDS3]
+Dérapage 1080° !
-[HAM3_H:HAIT3]
-Hum, mais les Cubains ont une suprise qui les attend!
+[NEDS314:NEDS3]
+~r~T'as abandonné le camion de pompiers.
-[HAM3_I:HAIT3]
-Pendant qu'ils se battent dans les rues, prends ce fusil et tue-les dans la confusion!
+[NEDS315:NEDS3]
+Tonneau !
-[HAM3_J:HAIT3]
-Personne ne te verra, personne ne t'entendra!
+[NEDS316:NEDS3]
+Série de trois collisions !
-[HAM3_K:HAIT3]
-Si tu fais ça pour tata Poulet, Tommy, tu ne seras plus lié aux cordons de mon tablier!
+[NEDS317:NEDS3]
+Série de quatre collisions !
-[HAM3_1:HAIT3]
-~g~On doit gagner cette bataille! Si tous les Haïtiens meurent, c'est foutu!
+[NEDS318:NEDS3]
+Série de cinq collisions !
-[HAM3_3:HAIT3]
-~g~Les Cubains risquent de tricher, alors fais attention.
+[NEDS319:NEDS3]
+Bonus carambolage !
-[HAM3_4:HAIT3]
-~r~Tu as été repéré! C'est foutu!
+[NEDS320:NEDS3]
+~r~T'as pas fait assez de dégâts dans le temps imparti.
-[HAM3_5:HAIT3]
-~g~Tu dois tuer les cubains de loin. Ne te fais pas voir.
+[NEDS321:NEDS3]
+Bonus chute !
-[HAM3_8:HAIT3]
-~g~Les Haïtiens se font descendre! Vise mieux!
+[NEDS322:NEDS3]
+Bonus chute mortelle !
-[HAM3_7:HAIT3]
-~g~Fais gaffe! Les Cubains ont amené des renforts. Liquide-les tous!
+[NEDS323:NEDS3]
+Bonus voltige !
-[HAM3_2:HAIT3]
-~r~Les Haïtiens sont morts!
+[NEDS324:NEDS3]
+Bonus super voltige !
-[HAM3_L:HAIT3]
-Tata...
+[NEDS325:NEDS3]
+~w~T'as moins de 1 seconde pour retourner au ~b~camion de pompiers.
-{=================================== MISSION TABLE HOTEL ===================================}
+[NEDS326:NEDS3]
+Félicitations ! T'avais encore ~1~ secondes !
-[INTB_A:HOTEL]
-Tommy! Ca fait une paye!
+[NEDS327:NEDS3]
+~w~Maintenant, détruis le ~r~camion de pompiers~w~. Ne laisse aucune preuve !
-[INTB_B:HOTEL]
-Salut Sonny...
+[NEDS328:NEDS3]
+Des points de bonus récompensent les collisions, dérapages, tonneaux, retournements et destructions spectaculaires de véhicules.
-[INTB_C:HOTEL]
-Je sais, je sais, t'es submergé par l'émotion, hein?
+[NEDS329:NEDS3]
+Véhicule retourné x ~1~
-[INTB_D:HOTEL]
-Quinze piges et c'est comme si c'était hier!
+[NEDS330:NEDS3]
+Tonneau x ~1~
-[INTB_E:HOTEL]
-C'est une façon de voir les choses...
+[NEDS332:NEDS3]
+~w~Il te reste 1 seconde pour retourner au ~b~camion de pompiers.
-[INTB_F:HOTEL]
-Hé, bosser pour la famille, tu sais, c'est pas de la tarte,
+[NEDS333:NEDS3]
+Félicitations ! NOUVEAU MEILLEUR TEMPS avec ~1~ secondes restantes.
-[INTB_G:HOTEL]
-mais la famille veille toujours sur les siens, tu comprends?
+[NEDS334:NEDS3]
+~w~Maintenant, détruis le camion de pompiers. Ne laisse aucune preuve !
-[INTB_H:HOTEL]
-Bon, raconte un peu comment l'affaire s'est passée? Ca y est, t'es blindé?
+[NEDS335:NEDS3]
+Demi-tour à 180° !
-[INTB_I:HOTEL]
-Ecoute, Sonny, on s'est fait piéger. C'était une embuscade. Et ils ont buté Harry et Lee.
+[NEDS337:NEDS3]
+Conduis le camion de pompiers dans la ville en causant autant d'accidents, de collisions et de chaos que tu peux avant ~1~:~1~.
-[INTB_J:HOTEL]
-J'espère pour toi que tu rigoles, Tommy... Et t'as plutôt intérêt à toujours avoir le fric...
+[NEDS338:NEDS3]
+Conduis le camion de pompiers dans la ville en causant autant d'accidents, de collisions et de chaos que tu peux avant ~1~:0~1~.
-[INTB_K:HOTEL]
-... Non... Sonny... J'ai plus le fric...
+[NEDS339:NEDS3]
+Conduis le camion de pompiers dans la ville en causant autant d'accidents, de collisions et de chaos que tu peux avant 0~1~:~1~.
-[INTB_L:HOTEL]
-C'était mon fric, Tommy! MON FRIC!!!
+[NEDS340:NEDS3]
+Conduis le camion de pompiers dans la ville en causant autant d'accidents, de collisions et de chaos que tu peux avant 0~1~:0~1~.
-[INTB_M:HOTEL]
-Vaudrait mieux pas que t'essayes de me baiser Tommy, parce que je suis pas le genre à aimer ça...
+[NEDS341:NEDS3]
+Cause autant d'accidents, de collisions et de chaos que tu peux avant ~1~:~1~.
-[INTB_N:HOTEL]
-Attend Sonny...
+[NEDS342:NEDS3]
+Cause autant d'accidents, de collisions et de chaos que tu peux avant ~1~:0~1~.
-[INTB_O:HOTEL]
-Je te donne ma parole d'honneur que je vais récupérer ton fric et la dope.
+[NEDS343:NEDS3]
+Cause autant d'accidents, de collisions et de chaos que tu peux avant 0~1~:~1~.
-[INTB_P:HOTEL]
-Et en prime, je t'enverrai les couilles de ceux qui ont fait ça!
+[NEDS344:NEDS3]
+Cause autant d'accidents, de collisions et de chaos que tu peux avant 0~1~:0~1~.
-[INTB_Q:HOTEL]
-Ca, je le sais déjà... Tommy, t'es pas con, mais je te préviens, moi non plus...
+[NEDS331:NEDS3]
+Cause autant d'accidents, de collisions et de chaos que tu peux !
-[INTB_R:HOTEL]
-Et si c'était pas toi, tu serais déjà mort...
+{=================================== MISSION TABLE NEDS4 ===================================}
-[INTB_S:HOTEL]
-Mais j'ai un faible pour toi et en souvenir du passé, je vais te laisser t'en charger.
+[NEDS4_2:NEDS4]
+~w~Les trois célébrités se rendent à une station de radio dans le centre, pour une interview avant la première de ce soir.
-[INTB_T:HOTEL]
-T'en fais pas, Sonny, t'as ma parole!
+[NEDS4_3:NEDS4]
+~w~L'actrice, Faith W, arrivera du Francis Airport à bord de son hélicoptère privé.
-[INTB_U:HOTEL]
-Je te tiens au courant, ciao.
+[NEDS4_4:NEDS4]
+~w~Le gangster devenu acteur, DB-P, viendra par bateau de Portland.
-{=================================== MISSION TABLE ICECRE1 ===================================}
+[NEDS4_5:NEDS4]
+~w~L'acteur vieillissant et alcoolique, Black Lightman, sort de désintox et arrivera en limousine.
-[ICC1_4:ICECRE1]
-~g~Il n'y a aucun client dans ce secteur. Essaye ailleurs.
+[NEDS4_8:NEDS4]
+~w~Faith est morte.
-[ICC1_5:ICECRE1]
-Deals effectués :
+[NEDS4_9:NEDS4]
+~w~DB-P est mort.
-[ICC1_7:ICECRE1]
-~g~Tu reçois de l'argent pour chaque transaction faite, mais plus tu fais d'affaires, plus tu attires l'attention de la police.
+[NEDS410:NEDS4]
+~w~Black Lightman est mort.
-[ICC1_8:ICECRE1]
-~g~Pour effectuer une transaction, ~h~gare ta camionnette ~g~et appuie sur la ~h~~k~~VEHICLE_HORN~ ~g~pour jouer le jingle et attirer les clients.
+[NEDS411:NEDS4]
+~w~Les trois célébrités ont été liquidées. Retourne à l'~y~église~w~ et informe le Père.
-[ICC1_9:ICECRE1]
-~g~Les gangs locaux n'apprécient pas qu'on fasse des affaires sur leur territoire. Attends-toi à des représailles.
+[NEDS412:NEDS4]
+~r~Faith est arrivée à la station de radio !
-[ICC1_10:ICECRE1]
-~g~Tu as fait ~1~ deals!
+[NEDS413:NEDS4]
+~r~DB-P est arrivé à la station de radio !
-[ICC1_11:ICECRE1]
-~g~Tu as fait ~1~ deals!
+[NEDS414:NEDS4]
+~r~Black Lightman est arrivé à la station de radio !
-[ICC1_13:ICECRE1]
-~r~T'as fait aucun deal!
+[NEDS415:NEDS4]
+~w~Il va changer pour un Patriot blindé.
-[ICC1_14:ICECRE1]
-USINE DE CREME GLACEE OK
+[NEDS417:NEDS4]
+~w~Le Patriot est blindé.
-[ICC1_15:ICECRE1]
-~g~L'usine de crème glacée génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[NEDS418:NEDS4]
+~w~Attention au tireur !
-[ICC1_16:ICECRE1]
-~g~Utilise la camionnette de Mr Whoopee pour distribuer les produits Cherry Poppers dans Vice City.
+[NEDS421:NEDS4]
+~w~L'armurerie de Phil Cassidy est représentée par un drapeau sur le radar.
-[ICE_AT1:ICECRE1]
-USINE DE CREME GLACEE OK
+[NEDS4AA:NEDS4]
+Pardonnez-moi, mon Père, car j'ai encore péché.
-[ICE_AT2:ICECRE1]
-~g~L'usine Cherry Popper génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[NEDS4AB:NEDS4]
+Alors, tu dois de nouveau te racheter, mon fils.
-[ICC1_17:ICECRE1]
-Mission Distribution terminée
+[NEDS4AC:NEDS4]
+L'idolâtrie est allée trop loin !
-[ICC1_18:ICECRE1]
-Total des ventes de glaces : $~1~
+[NEDS4AD:NEDS4]
+Seules des créatures ayant vendu leur âme au Diable accordent une interview à la radio, sans donner l'exclu à un vrai journaliste !
-[ICC1_19:ICECRE1]
-Total de deals réalisés : ~1~
+[NEDS4AF:NEDS4]
+Elimine ces fausses idoles !
-{=================================== MISSION TABLE ICECUT ===================================}
+[NEDS4BA:NEDS4]
+J'ai fait ce que vous vouliez, mon Père.
-[ICC1_A:ICECUT]
-T'es qui toi?
+[NEDS4BB:NEDS4]
+Parfait ! Le tirage du journal a triplé depuis que tu as trouvé ton âme.
-[ICC1_B:ICECUT]
-Le nouveau proprio.
+[NEDS4BC:NEDS4]
+Hein ?
-[ICC1_C:ICECUT]
-Est-ce que t'as déjà été enfant?
+[NEDS4BD:NEDS4]
+Merci encore pour ton aide, Toni !
-[ICC1_D:ICECUT]
-Mais de quoi tu parles?
+[NEDS4BE:NEDS4]
+C'est quoi ces conneries ?
-[ICC1_E:ICECUT]
-As-tu été un gosse?
+[NEDS4BF:NEDS4]
+T'ES QUI, TOI !?
-[ICC1_F:ICECUT]
-Ouais! Vas-y, c'est quoi ton problème?
+[NEDS422:NEDS4]
+Va récupérer un lance-roquettes à l'armurerie de Phil Cassidy.
-[ICC1_G:ICECUT]
-Je le savais. Un chiard.
+[NEDS4_7:NEDS4]
+~w~Ne laisse aucune des ~r~célébrités~w~ atteindre la station de radio LCFR !
-[ICC1_H:ICECUT]
-Un putain de gosse pourri gâté, un chialeur, un emmerdeur, un bébé à sa maman!
+[NEDS416:NEDS4]
+~w~Ne laisse aucune des ~r~célébrités~w~ atteindre la station de radio LCFR !
-[ICC1_I:ICECUT]
-Un bébé... Un horrible et dégoûtant petit morveux. Ouin ouin.
+[NEDS419:NEDS4]
+~w~Tu trouveras des armes lourdes à l'armurerie de Phil Cassidy.
-[ICC1_J:ICECUT]
-Ta maman t'aime pas. Petite merde!
+[NEDS420:NEDS4]
+~w~Le Père Ned a commandé un lance-roquettes. Va le récupérer à l'armurerie Fully Cocked de Phil Cassidy.
-[ICC1_K:ICECUT]
-Hé! Calme-toi.
+[NEDS4_6:NEDS4]
+~w~Si tu as besoin d'artillerie lourde, va faire un tour à l'armurerie Fully Cocked de Phil Cassidy.
-[ICC1_L:ICECUT]
-Je HAIS les mouflets et les mômes.
+{=================================== MISSION TABLE DONS1 ===================================}
-[ICC1_M:ICECUT]
-Ce sont des putains de pourris gâtés, de chialeurs, d'emmerdeurs...
+[MORG_01:DONS1]
+2-2-3, 3-2-3, 4-2-3, 5-2-3-...
-[ICC1_N:ICECUT]
-Ca suffit maintenant!
+[MORG_02:DONS1]
+Antonio ! Quel plaisir de te voir !
-[ICC1_O:ICECUT]
-C'est quoi ton problème?
+[MORG_03:DONS1]
+Qu'est-ce qui se passe ?
-[ICC1_P:ICECUT]
-Tu confectionnes des glaces, non? C'est un truc pour les gosses.
+[MORG_04:DONS1]
+On donne une fête, mon cher, une fête.
-[ICC1_Q:ICECUT]
-T'es quoi comme genre de cinglé, toi?
+[MORG_05:DONS1]
+Eh oui, une 'morgue party' !
-[ICC1_R:ICECUT]
-Que je comprenne... A quoi ça sert de rendre les gosses heureux si tu les déteste?
+[MORG_08:DONS1]
+C'est quoi, ces conneries ? Une 'morgue party' ?
-[ICC1_S:ICECUT]
-Espèce d'abruti, petit curieux, fouinard-
+[MORG_09:DONS1]
+Je crois qu'on va passer une soirée d'enfer.
-[ICC1_T:ICECUT]
-La ferme!
+[MORG_10:DONS1]
+Mais d'abord, il faut aller chercher nos invités...
-[ICC1_U:ICECUT]
--de merde!
+[MORG_11:DONS1]
+Viens, avant qu'ils s'ennuient à mourir !
-[ICC1_V:ICECUT]
-Les glaces c'est une couverture.
+[MORG_12:DONS1]
+Sans mauvais jeu de mots...
-[ICC1_W:ICECUT]
-On fait aussi dans autre chose que les produits laitiers.
+[MORG_13:DONS1]
+Puisqu'ils sont déjà morts...
-[ICC1_X:ICECUT]
-Et si je vois un gosse, j'en fait mon affaire.
+[MORG_14:DONS1]
+Notre invité d'honneur est en visite dans un labo de pathologie.
-[ICC1_Y:ICECUT]
-N'est-ce pas, gamin? Ouais, c'est bien ça. Ta maman t'aime pas.
+[MORG_15:DONS1]
+Ne le faisons pas attendre !
-[ICC1_Z:ICECUT]
-Elle te DETESTE!
+[MORG_06:DONS1]
+- La première de la saison ! ~n~ - Ouh là, doucement...
-[ICC1_ZA:ICECUT]
-PROPRIETE ACQUISE!
+[DL1_A:DONS1]
+J'organise une Morgue Party et je veux que t'ailles chercher les 'invités'.
-{=================================== MISSION TABLE INTRO ===================================}
+[DL1_2:DONS1]
+~r~T'as détruit la voiture.
-[INT1_A:INTRO]
-Tommy Vercetti... Oh, merde!
+[DL1_3:DONS1]
+Les flics ont été alertés ! Fais baisser ton indice de recherche !
-[INT1_B:INTRO]
-J'pensais pas qu'ils le laisseraient sortir un jour...
+[DL1_4:DONS1]
+Conduis la caisse au ~y~garage de Donald !
-[INT1_C:INTRO]
-Il a gardé un profil bas, pour se faire oublier...
+[DL1_6:DONS1]
+~r~Le corbillard a atteint le poste de police.
-[INT1_D:INTRO]
-Mais les gens vont vite retrouver la mémoire
+[DL1_9:DONS1]
+Conduis la caisse à l'atelier de peinture.
-[INT1_E:INTRO]
-quand ils vont le voir débouler dans les rues du voisinage.
+[DL1_5:DONS1]
+Vole le ~b~corbillard~w~ avant qu'il n'arrive à destination.
-[INT1_F:INTRO]
-Et ça va pas être bon pour les affaires...
+{=================================== MISSION TABLE DONS2 ===================================}
-[INT1_G:INTRO]
-Et alors, qu'est-ce qu'on va faire, Sonny?
+[DONS2AA:DONS2]
+Don ?
-[INT1_H:INTRO]
-On le traite comme un vieil ami et on lui trouve de quoi s'occuper en-dehors de la ville. OK?
+[DONS2AB:DONS2]
+Toni !
-[INT1_I:INTRO]
-On parlait justement de s'étendre vers le sud... Pas vrai?
+[DONS2AC:DONS2]
+Comment se passe la campagne ?
-[INT1_J:INTRO]
-Vice City, c'est du 24 carats, maintenant.
+[DONS2AD:DONS2]
+C'est la phase finale et chaque vote va compter !
-[INT1_K:INTRO]
-Les colombiens, les mexicains... Putain,
+[DONS2AE:DONS2]
+Les partisans d'O'Donovan bossent dur pour gagner les dernières voix.
-[INT1_L:INTRO]
-même les réfugiés cubains se taillent une belle part du gâteau!
+[DONS2AF:DONS2]
+On a notre propre véhicule électoral, va donc répandre la bonne parole !
-[INT1_M:INTRO]
-Mais ils font tous dans la dope, Sonny!
+[DONS2BA:DONS2]
+Votez pour O'Donovan à la mairie !
-[INT1_N:INTRO]
-Aucune famille ne touche à cette merde!
+[DONS2BB:DONS2]
+Votez pour O'Donovan contre la corruption !
-[INT1_O:INTRO]
-Les temps changent...
+[DONS2BC:DONS2]
+O'Donovan, notre maire à tous !
-[INT1_P:INTRO]
-Les familles ne peuvent pas rester les bras croisés pendant que nos adversaires ramassent le jackpot.
+[DONS2BD:DONS2]
+Votez contre le crime ! Votez O'Donovan !
-[INT1_Q:INTRO]
-Alors, on envoie un mec là-bas faire le sale boulot
+[DONS2BE:DONS2]
+Votez pour la justice ! Votez O'Donovan!
-[INT1_R:INTRO]
-et pour nous en tailler une bonne part. OK?
+[DONS2CA:DONS2]
+O'Donovan a trois femmes !
-[INT1_S:INTRO]
-C'est qui, notre contact là-bas?
+[DONS2CB:DONS2]
+Qui a mangé les tartes ? O'Donovan !
-[INT1_T:INTRO]
-Ken Rosenberg, le con d'avocat...
+[DONS2CC:DONS2]
+O'Donovan est un drogué !
-[INT1_U:INTRO]
-Et comment il va faire pour tenir Vercetti en laisse?
+[DONS2CD:DONS2]
+O'Donovan croit en la sodomie obligatoire !
-[INT1_V:INTRO]
-Il aura pas besoin de faire ça.
+[DONS2CE:DONS2]
+O'Donovan est un communiste !
-[INT1_W:INTRO]
-On le lâche juste dans Vice City
+[DONS2CF:DONS2]
+O'Donovan porte les culottes de sa fille !
-[INT1_X:INTRO]
-et on lui refile un peu de cash pour commencer. OK?
+[DONS2CG:DONS2]
+O'Donovan barbote tout nu avec les porcs !
-[INT1_Y:INTRO]
-Donne-lui quelques mois...
+[DONS2CH:DONS2]
+O'Donovan déteste l'Amérique !
-[INT1_Z:INTRO]
-Et puis, on descendra
+[DONS2CI:DONS2]
+Love abandonnera l'impôt sur la fortune !
-[INT1_A1:INTRO]
-lui rendre une petite visite, tu saisis?
+[DONS2CJ:DONS2]
+Votez Love pour des cours de pathologie à l'école !
-[INT1_A2:INTRO]
-Histoire de voir comment il se débrouille...
+[DONS2CK:DONS2]
+Donald Love se battra pour l'accès à la morgue pour tous !
-[INT2_A:INTRO]
-Hey, salut les gars, c'est moi, Ken Rosenberg! Hé ! Super!
+[DONS2CL:DONS2]
+Donald Love est un héros de guerre !
-[INT2_B:INTRO]
-Bon, euh, je vais vous conduire au rendez-vous, ok?
+[DONS2CM:DONS2]
+Voter pour Love, c'est voter pour le bonheur !
-[INT2_C:INTRO]
-J'ai parlé avec les fournisseurs, ils sont très, hé hé,
+[DONS2CN:DONS2]
+Donald Love : l'ennemi des végétariens !
-[INT2_D:INTRO]
-très impatients de commencer cette affaire, et... euh,
+[DONS2_1:DONS2]
+~w~Monte dans la ~b~camionnette.
-[INT2_E:INTRO]
-si tout se passe sans accroc, on devrait... euh,
+[DONS2_3:DONS2]
+~w~O'Donovan a sorti ses ~r~camionnettes~w~ pour regagner des votes !
-[INT2_F:INTRO]
-s'en mettre plein les poches, ce qui est vraiment, vous savez...
+[DONS2_4:DONS2]
+~r~T'as pas gagné assez de votes !
-[INT2_G:INTRO]
-une bonne chose...
+[DONS2_6:DONS2]
+~w~Temps restant
-[INT2_H:INTRO]
-Ok. Bon, ils sont frères, ok.
+[DONS2_7:DONS2]
+~w~Remonte dans la ~b~camionnette~w~ et continue la mission !
-[INT2_I:INTRO]
-Il y en a un qui fait marcher... euh, l'affaire
+[DONS2_9:DONS2]
+~w~O'Donovan a envoyé une nouvelle ~r~camionnette~w~ !
-[INT2_J:INTRO]
-et l'autre qui s'occupe du transport en hélicoptère.
+[DONS210:DONS2]
+~w~Circonscriptions tenues
-[INT2_K:INTRO]
-Maintenant, ils opèrent du Mexique,
+[DONS211:DONS2]
+~r~Tu as perdu toutes les circonscriptions !
-[INT3_A:INTRO]
-Ok, c'est eux, dans l'hélico.
+[DONS212:DONS2]
+~r~Tu n'as pas réussi à décimer l'opposition !
-[INT3_B:INTRO]
-Bon, voilà le deal.
+[DONS2_2:DONS2]
+~w~Conduis à travers les ~y~points de passage des circonscriptions disputées~w~ pour gagner leur vote.
-[INT3_C:INTRO]
-Ils veulent un échange en terrain découvert.
+[DONS215:DONS2]
+~w~T'as perdu une ~y~circonscription~w~ au profit de O'Donovan !
-[INT3_D:INTRO]
-OK? Bon, allons-y et restez groupés.
+[DONS216:DONS2]
+~w~Ne laisse pas O'Donovan reprendre le contrôle de toutes les ~y~circonscriptions !
-[INT3_E:INTRO]
-Bon, personne s'énerve, maintenant.
+[DONS213:DONS2]
+~w~T'as maintenant assez de circonscriptions. Elimine les ~r~camionnettes de l'opposition~w~ pour stopper la progression de O'Donovan.
-[INT3_F:INTRO]
-Je suis ici! Le moteur tourne!
+[DONS2_8:DONS2]
+~w~Tu dois tenir au moins 5 ~y~circonscriptions.
-[INT3_G:INTRO]
-Tu l'as?
+[DONS214:DONS2]
+~w~Tu tiens moins de 5 ~y~circonscriptions~w~. Récupère-les !
-[INT3_H:INTRO]
-De la colombienne 100% pure, la meilleure qualité, amigo.
+[DONS217:DONS2]
+~w~Prends d'autres circonscriptions pour faire augmenter ta récompense.
-[INT3_I:INTRO]
-Les billets?
+[DONS2_5:DONS2]
+~r~La camionnette électorale a été détruite !
-[INT3_J:INTRO]
-Des 10 et des 20... usagés.
+[DONS218:DONS2]
+~w~Tu dois tenir au moins 5 ~y~circonscriptions~w~ avant ~1~:~1~ heures.
-[INT3_L:INTRO]
-Allez! Sors-nous de là! Roule!
+[DONS219:DONS2]
+~w~Tu dois tenir au moins 5 ~y~circonscriptions~w~ avant 0~1~:~1~ heures.
-[INTRO1:INTRO]
-Je sors la tête d'un caniveau pour une seconde de défonce, et le destin me chie de la merde plein la gueule!
+[DONS220:DONS2]
+~w~Tu dois tenir au moins 5 ~y~circonscriptions~w~ avant 0~1~:0~1~ heures.
-[INTRO2:INTRO]
-Va roupiller.
+[DONS221:DONS2]
+~w~Tu dois tenir au moins 5 ~y~circonscriptions~w~ avant ~1~:0~1~ heures.
-[INTRO3:INTRO]
-Qu'est-ce que tu vas faire?
+[DONS230:DONS2]
+~w~T'as maintenant assez de circonscriptions. Elimine la ~r~camionnette de l'opposition~w~ pour stopper la progression de O'Donovan.
-[INTRO4:INTRO]
-Je passerai à ton bureau demain et on essayera de trouver une solution à ce merdier.
+{=================================== MISSION TABLE DONS3 ===================================}
-[INT3_K:INTRO]
-Je crois que nous allons faire affaire, amigo, hé hé hé!
+[CAMP_01:DONS3]
+Antonio ! Que pasa, amigo ?
-[INT3_M:INTRO]
-Laisse-moi voir.
+[CAMP_02:DONS3]
+Il s'passe que j'suis italien, Don, pas espagnol.
-[INT2_L:INTRO]
-non, non, non, attends...
+[CAMP_03:DONS3]
+Evidemment, suis-je bête... Mais j'aime tellement les langues romantiques.
-{=================================== MISSION TABLE KENT1 ===================================}
+[CAMP_04:DONS3]
+Oh mais, c'est délicieux.
-[KPM1_A:KENT1]
-D'accord, mon vieux, je vais sauver ton petit ami.
+[CAMP_05:DONS3]
+Ca a le goût du poulet, mais en plus... comment dire... délicat...
-[KPM1_B:KENT1]
-De quoi tu m'causes?
+[CAMP_06:DONS3]
+Tu en veux ?
-[KPM1_C:KENT1]
-Tu connais ce branleur, Diaz, la grande gueule...
+[CAMP_07:DONS3]
+J'ai déjà mangé, merci.
-[KPM1_D:KENT1]
-Il a ton pote, Lance. Il paraît que celui-ci a essayé de lui sauter sur le poil.
+[CAMP_08:DONS3]
+Tant pis pour toi...
-[KPM1_E:KENT1]
-Mais il a pas sauté assez haut, si tu vois ce que je veux dire...
+[CAMP_09:DONS3]
+J'ai commandé quelques petites friandises supplémentaires...
-[KPM1_F:KENT1]
-Où il l'a emmené? Et tourne pas autour du pot!
+[CAMP_10:DONS3]
+Les libéraux s'en donneraient à coeur joie, évidemment,
-[KPM1_G:KENT1]
-T'énerve pas! Ils l'ont emmené de l'autre côté de la ville, à la décharge.
+[CAMP_11:DONS3]
+mais que savent-ils des vrais plaisirs de la vie !?
-[KPM1_H:KENT1]
-Putain... Pauvre cinglé...
+[CAMP_12:DONS3]
+Sophistication et démocratie n'ont jamais fait bon ménage.
-[KPM1_2:KENT1]
-~r~Tu étais supposé sortir Lance vivant de ce guêpier!
+[CAMP_13:DONS3]
+Ecoutez, Don, faut qu'on gagne cette élection.
-[KPM1_3:KENT1]
-SANTE DE LANCE :
+[CAMP_14:DONS3]
+Donc, il faut s'assurer qu'y a pas de cadavre dans les placards,
-[RESC_1:KENT1]
-Tu peux te servir d'un flingue?
+[CAMP_15:DONS3]
+si vous voyez c'que j'veux dire...
-[RESC_2:KENT1]
-Ouais... je pense... Content de te voir moi aussi.
+[CAMP_16:DONS3]
+Absolument.
-[RESC_3:KENT1]
-Sortons de là!
+[CAMP_17:DONS3]
+C'que j'veux dire, c'est que...
-[RESC_4:KENT1]
-Ca fout tous mes plans en l'air, tes conneries. Cette fois-ci, t'as vraiment merdé pour de bon, Lance!
+[CAMP_18:DONS3]
+Comment on s'occupe de ce O'Donovan qui sert de couverture aux...
-[RESC_5:KENT1]
-Il a descendu mon frère! Tu croyais que j'allais faire quoi? Lui tondre sa pelouse?
+[CAMP_19:DONS3]
+qui représente les Forelli ?
-[RESC_6:KENT1]
-Va falloir qu'on liquide ce connard de Diaz avant qu'il en fasse autant avec nous.
+[CAMP_20:DONS3]
+Ce type a pas mal de monde pour démarcher,
-[RESC_7:KENT1]
-Va récupérer et retrouve-moi sur le pont de Star Island. Ok?
+[CAMP_21:DONS3]
+tout un tas de gens influents dans l'erreur, si tu vois ce que je veux dire.
-[RESC_8:KENT1]
-OK.
+[CAMP_22:DONS3]
+Je crois qu'il faudrait... comment dire... secouer un peu leur foi en la démocratie.
-[KPM1_1:KENT1]
-~g~Lance est retenu prisonnier dans la décharge. Va le sauver!
+[CAMP_23:DONS3]
+Vous voulez que je leur colle la branlée du siècle ?
-[KPM1_4:KENT1]
-~g~Amène Lance à l'hosto!
+[CAMP_24:DONS3]
+Oh, quelle fougue, Antonio ! C'est... sublime.
-[M_PASSN:KENT1]
-MISSION TERMINEE!
+[CAMP_25:DONS3]
+C'est tellement... hum... Wagnérien ! Tu comprends ?! Arriverdici, amigo !
-[KPM1_5:KENT1]
-~g~Les mecs de Diaz sont après toi, amène Lance à l'hosto.
+[CAMP_26:DONS3]
+Humphries, apportez les abats !
-{=================================== MISSION TABLE KICKSTT ===================================}
+[DONS3_1:DONS3]
+Toni doit se débarrasser des employés électoraux de l'opposition pour affaiblir la campagne d'O'Donovan, le candidat des Forelli.
-[KICK1_2:KICKSTT]
-~r~Tu n'as pas récupéré la moto assez vite!
+[DONS3_2:DONS3]
+~w~Tue les ~r~employés électoraux de l'opposition.
-[KICK1_7:KICKSTT]
-~r~Tu as niqué la moto!
+[DONS3_3:DONS3]
+~r~Le temps imparti est écoulé.
-[KICK1_8:KICKSTT]
-~g~Monte sur la moto!
+[DONS3_4:DONS3]
+Ces trois ~r~partisans ~w~sont cuits. Occupe-toi des suivants !
-[KICK1_T:KICKSTT]
-TEMPS PRIS :
+[DONS3_5:DONS3]
+~w~Tue les ~r~employés électoraux~w~ de l'opposition avant ~1~:~1~.
-[KICKTM:KICKSTT]
-~b~TEMPS DE L'EPREUVE : ~1~:~1~
+[DONS3_6:DONS3]
+~w~Tue les ~r~employés électoraux~w~ de l'opposition avant ~1~:0~1~.
-[KICKTM2:KICKSTT]
-~b~TEMPS DE L'EPREUVE : ~1~:0~1~
+[DONS3_7:DONS3]
+~w~Tue les ~r~employés électoraux~w~ de l'opposition avant 0~1~:~1~.
-[GETBIKE:KICKSTT]
-~g~Il te reste ~1~ secondes pour retourner à une moto avant la fin de la mission.
+[DONS3_8:DONS3]
+~w~Tue les ~r~employés électoraux~w~ de l'opposition avant 0~1~:0~1~.
-[KICK1_1:KICKSTT]
-~g~Termine le parcours aussi vite que possible.
+{=================================== MISSION TABLE DONS4 ===================================}
-[KICK1_6:KICKSTT]
-~g~Bien joué!
+[DONS410:DONS4]
+Va à ~y~l'entrepôt des Forelli~w~ et mets le feu à leurs bulletins de vote !
-[KICK_10:KICKSTT]
-~g~Utilise la Sanchez pour terminer le parcours sans oublier aucun point de passage.
+[DONS411:DONS4]
+Brûle les ~r~bulletins de vote~w~ et détruis les ~r~presses à imprimer !
-[KICK_12:KICKSTT]
-~r~Tu t'es dégonflé!
+[DONS412:DONS4]
+Détruis la ~r~presse à imprimer !
-[KICK_13:KICKSTT]
-~r~T'as mis trop de temps!
+[DONS413:DONS4]
+Brûle TOUS les ~r~bulletins de vote !
-[KICK_11:KICKSTT]
-~g~Pour quitter la mission, marche sur le ~q~marqueur rose~g~.
+[DONS414:DONS4]
+Détruis les dernières ~r~camionnettes des Forelli !
-{=================================== MISSION TABLE LAWYER1 ===================================}
+[DONS416:DONS4]
+~r~T'as perdu une camionnette des Forelli ! Ils vont pouvoir truquer l'élection !
-[LAW1_A:LAWYER1]
-Va roupiller, qu'il m'a dit -
+[DONS418:DONS4]
+Il reste ~r~~1~ palettes~w~ de faux bulletins de vote.
-[LAW1_B:LAWYER1]
-- et je suis resté toute la nuit le cul vissé sur cette chaise dans le noir à boire du café!
+[DONS419:DONS4]
+Il reste ~r~1 palette~w~ de faux bulletins de vote !
-[LAW1_C:LAWYER1]
-C'est la merde. On est baisés jusqu'à l'os, mon pote!
+[DONS420:DONS4]
+Détruis la dernière ~r~camionnette des Forelli !
-[LAW1_D:LAWYER1]
-Ecoute-moi, ces balaises, ils vont débarquer ici pour m'arracher la tête! C'est pas possible!
+[DONS421:DONS4]
+Cette presse est détruite ! Occupe-toi de l'autre ~r~presse !
-[LAW1_E:LAWYER1]
-J'me suis pas tapé l'école de droit pour ça! Putain, qu'est-ce qu'on va faire maintenant?
+[DONS422:DONS4]
+La presse est détruite !
-[LAW1_F:LAWYER1]
-Ferme-la, pose ton cul et détends-toi. Je vais te dire ce qu'on va faire.
+[DONS423:DONS4]
+Maintenant, tire-toi de là !
-[LAW1_G:LAWYER1]
-Faut que tu trouves les types qui nous ont fauché la coke et après je les descends.
+[DONS424:DONS4]
+Détruis les ~r~presses à imprimer !
-[LAW1_H:LAWYER1]
-Bonne idée. Excellente idée. Laisse-moi réfléchir, laisse-moi réfléchir.
+[DS4_AA:DONS4]
+Tous ces votes et tout ce fric qui attendent d'être récoltés...
-[LAW1_I:LAWYER1]
-Je sais! Il y a ce Colonel à la retraite, le Colonel Juan Garcia Cortez.
+[DS4_AB:DONS4]
+Je ne prétends pas comprendre la politique.
-[LAW1_J:LAWYER1]
-C'est lui qui m'a aidé à organiser l'affaire
+[DS4_AC:DONS4]
+Personne ne la comprend, en fait. Tout n'est que bluff et corruption.
-[LAW1_K:LAWYER1]
-en-dehors des truands établis de Vice City. Ok?
+[DS4_AD:DONS4]
+Les Forelli détiennent une partie de la boîte qui fabrique les nouvelles machines à voter.
-[LAW1_L:LAWYER1]
-Maintenant, écoute. Il organise une fiesta dans la baie, sur son yatch du luxe
+[DS4_AE:DONS4]
+C'est pas bien, ça...
-[LAW1_M:LAWYER1]
-et tous les gros pontes de Vice City seront là!
+[DS4_AF:DONS4]
+On peut sûrement pas leur faire confiance.
-[LAW1_N:LAWYER1]
-J'ai une invitation, bien sûr que j'ai une invitation,
+[DS4_AG:DONS4]
+Il vaudrait mieux qu'elles déplorent toutes un grave dysfonctionnement, si tu me suis...
-[LAW1_O:LAWYER1]
-mais il est pas question que je sorte d'ici. Non, pas question!
+[DONS4H1:DONS4]
+Tu trouveras de l'artillerie lourde à l'armurerie Fully Cocked de Phil Cassidy.
-[LAW1_P:LAWYER1]
-Ferme-la, je t'ai dit! Je vais y aller moi-même...
+[DONS4AA:DONS4]
+Antonio, content de te voir !
-[LAW1_Q:LAWYER1]
-Attends deux secondes! Tu sais, moi aussi, j'aime bien 1978, mais là, c'est pas une soirée bière et striptease...
+[DONS4AB:DONS4]
+Je ne suis pas Démocrate, mais même moi, je ne fais pas dans le truquage d'urnes.
-[LAW1_R:LAWYER1]
-Je veux dire, sans vouloir t'offenser, hein, tu risque de te faire refouler à l'entrée, quoi...
+[DONS4AC:DONS4]
+Tu savais que les Forelli détenaient une partie de la boîte qui fabrique les nouvelles machines à voter ?
-[LAW1_S:LAWYER1]
-Y'a un problème avec mes fringues?
+[DONS4AD:DONS4]
+C'est pas bien, ça...
-[LAW1_T:LAWYER1]
-Bon, écoute. Fais un saut chez Rafael, dis-lui que tu viens de ma part et il te relookera.
+[DONS4AE:DONS4]
+On peut sûrement pas leur faire confiance.
-[LAW1_U:LAWYER1]
-Ok, allez, vas-y...
+[DONS4AF:DONS4]
+Il vaudrait mieux qu'elles déplorent toutes un grave dysfonctionnement, si tu me suis...
-[LAWP_1:LAWYER1]
-Buenas noches.
+[DONS4_8:DONS4]
+Va à l'armurerie Fully Cocked de Phil Cassidy.
-[LAWP_2:LAWYER1]
-Si je comprends bien, c'est M. Rosenberg qui vous envoie.
+[DONS4H2:DONS4]
+L'armurerie de Phil Cassidy est représentée par un drapeau sur le radar.
-[LAWP_3:LAWYER1]
-J'espère que de récents problèmes n'ont pas affecté sa santé, ou ... hum...
+[DONS427:DONS4]
+Maintenant, tire-toi de Fort Staunton !
-[LAWP_4:LAWYER1]
-son équilibre mental, M....?
+[DONS4_9:DONS4]
+Tu trouveras tout le matos nécessaire pour perturber la campagne des Forelli à l'armurerie Fully Cocked de Phil Cassidy.
-[LAWP_5:LAWYER1]
-Vercetti. Il fait simplement un peu... d'agoraphobie.
+[DONS417:DONS4]
+Il y a un autre lance-flammes à l'armurerie Fully Cocked de Phil Cassidy.
-[LAWP_6:LAWYER1]
-Excellent, excellent. Et vous?
+[DONS425:DONS4]
+Récupère le lance-flammes à l'armurerie Fully Cocked de Phil Cassidy.
-[LAWP_7:LAWYER1]
-Je veux juste ma marchandise.
+[DONS426:DONS4]
+~r~Le vendeur est de l'histoire ancienne !
-[LAWP_8:LAWYER1]
-Ah. C'est un malheureux concours de circonstances pour toutes les personnes impliquées...
+[DONS4H3:DONS4]
+Donald Love a commandé un lance-flammes. Va le récupérer à l'armurerie Fully Cocked de Phil Cassidy.
-[LAWP_9:LAWYER1]
-Bien entendu, j'ai de mon côté ordonné une enquête...
+{=================================== MISSION TABLE DONS5 ===================================}
-[LAWP_10:LAWYER1]
-Mais c'est un problème délicat qui nécessite du temps...
+[DONS5_7:DONS5]
+Protège la limousine de Donald !
-[LAWP_11:LAWYER1]
-Peut-être en reparlerons-nous plus tard, voulez-vous?
+[DONS5_9:DONS5]
+~r~Donald Love est mort !
-[LAWP_12:LAWYER1]
-En attendant, laissez-moi vous présenter ma fille...
+[DONS513:DONS5]
+Dégâts de la limo
-[LAWP_13:LAWYER1]
-Mercedes!
+[DONS516:DONS5]
+Monte dans la ~b~limo !
-[LAWP_14:LAWYER1]
-Caramia, pourrais-tu t'occuper de notre invité pendant que je m'occupe des autres convives?
+[DONS517:DONS5]
+T'as laissé tomber ~b~Donald Love !
-[LAWP_15:LAWYER1]
-D'accord, papa.
+[DONS519:DONS5]
+Amène Donald à la ~y~planque !
-[LAWP_16:LAWYER1]
-Veuillez m'excuser...
+[DONS520:DONS5]
+Tue les ~r~assaillants !
-[LAWP_17:LAWYER1]
-Mercedes?
+[DONS521:DONS5]
+Monte dans la ~b~limo !
-[LAWP_18:LAWYER1]
-Et il faut vivre avec ça...
+[DS5_AA:DONS5]
+Et dire que je déteste la publicité... mais ça fait partie du jeu, n'est-ce pas ?
-[LAWP_19:LAWYER1]
-Quoi qu'il en soit, laissez-moi vous montrer quelques uns de nos distingués invités...
+[DS5_AB:DONS5]
+Evidemment.
-[LAWP_20:LAWYER1]
-Celui-ci est le membre du congrès Alex Shrub accompagné par la star montante siliconée Candy Suxxx...
+[DS5_AC:DONS5]
+Les Forelli vont essayer de me descendre, pas vrai ?
-[LAWP_21:LAWYER1]
-Et connaissez-vous ma charmante femme Laura? Non?
+[DS5_AD:DONS5]
+Vous inquiétez pas, j'vous accompagne...
-[LAWP_22:LAWYER1]
-Eh bien, malheureusement, elle est en Alabama, voici Candy.
+[DS5_AE:DONS5]
+Bon, c'est là que tout se joue...
-[LAWP_23:LAWYER1]
-Et là-bas, nous avons l'ailier vedette des Mambas de Vice City, BJ.
+[DS5_BA:DONS5]
+Merde ! C'est pas vrai !
-[LAWP_24:LAWYER1]
-toujours aussi charmeur
+[DS5_BB:DONS5]
+Pas de panique ! Je m'occupe de ces cons !
-[LAWP_25:LAWYER1]
-Mais je l'ai plaqué et mis dans une chaise roulante!
+[DS5_BC:DONS5]
+Y a un fusil dans le coffre !
-[LAWP_26:LAWYER1]
-Ha ha! Excellent!
+[DS5_BD:DONS5]
+Verrouillez les portes ! Ca sera pas long !
-[LAWP_27:LAWYER1]
-En ce moment, je cherche une nouvelle propriété de luxe.
+[DS5_CA:DONS5]
+OK, on peut y aller.
-[LAWP_28:LAWYER1]
-Et ce molusque c'est Jezz Torrent,
+[DS5_CB:DONS5]
+On a un autre tueur après nous !
-[LAWP_29:LAWYER1]
-Le chanteur principal des Love Fist.
+[DS5_DA:DONS5]
+Difficile de faire campagne en se terrant comme un lâche.
-[LAWP_30:LAWYER1]
-Savez-vous... comment ils jouent au ping-pong, en Thaïlande?
+[DS5_DB:DONS5]
+Nous allons devoir repenser notre stratégie.
-[LAWP_31:LAWYER1]
-Je vais vous le dire...
+[DONS522:DONS5]
+Ramène Donald chez ~y~lui !
-[LAWP_32:LAWYER1]
-Ils n'utilisent pas de raquettes, si vous voyez ce que je veux dire!
+{=================================== MISSION TABLE DONS6 ===================================}
-[LAWP_33:LAWYER1]
-L'impotent.
+[DS6_00:DONS6]
+Suis la ~b~camionnette avec les bulletins !
-[LAWP_34:LAWYER1]
-Et le trio bavard.
+[DS6_01:DONS6]
+Attends que le ~b~coursier ~w~fasse l'échange !
-[LAWP_35:LAWYER1]
-Cette outre à sueur ronflante est le bras droit handicapé de papa, Gonzales.
+[DS6_02:DONS6]
+Récupère les bulletins auprès du ~r~coursier !
-[LAWP_36:LAWYER1]
-Les deux autres sont le Pasteur Richards
+[DS6_03:DONS6]
+Tue le ~r~coursier !
-[LAWP_37:LAWYER1]
-et un réalisateur pseudo intellectuel nommé Steve Scott.
+[DS6_04:DONS6]
+Prends le ~g~paquet !
-[LAWP_38:LAWYER1]
-...passion avec les envahisseuses nymphomanes,
+[DS6_05:DONS6]
+Suis ~b~la camionnette ~w~avec les bulletins !
-[LAWP_39:LAWYER1]
-Le requin géant s'amène et
+[DS6_06:DONS6]
+~r~T'as tué un coursier avant de procéder à l'échange !
-[LAWP_40:LAWYER1]
-il leur bouffe simplement les couilles!
+[DS6_07:DONS6]
+T'as manqué un échange ! Tu peux pas te permettre d'en rater un autre !
-[LAWP_41:LAWYER1]
-Ah, c'est là. Vous n'avez jamais vu un truc pareil avant, hein?
+[DS6_08:DONS6]
+~r~T'as manqué deux échanges, le vote ne peut pas être truqué !
-[LAWP_42:LAWYER1]
-Colonel!
+[DS6_09:DONS6]
+~r~Tu lui as fait peur !
-[LAWP_43:LAWYER1]
-Vos fêtes sont toujours aussi réussies, hahahahha!
+[DS6_10:DONS6]
+~r~La camionnette a été détruite !
-[LAWP_44:LAWYER1]
-Je ne puis que m'excuser de mon arrivée tardive.
+[DS6_11:DONS6]
+Le temps est écoulé !
-[LAWP_45:LAWYER1]
-Ah, de nada amigo. Comment allez-vous?
+[DS6_12:DONS6]
+~r~T'as pas rattrapé la camionnette !
-[LAWP_46:LAWYER1]
-Nos affaires sont très difficile - Les barbares sont aux portes de la ville.
+[DS6_13:DONS6]
+~r~La camionnette ne roule pas sans chauffeur !
-[LAWP_47:LAWYER1]
-L'heure est venue de récompenser les amis et de liquider les ennemis, amigo.
+[DS6_15:DONS6]
+~r~T'as fais peur au chauffeur ! Tu le rattraperas plus maintenant !
-[LAWP_48:LAWYER1]
-C'est qui, la grande gueule?
+[DS6_16:DONS6]
+~1~
-[LAWP_49:LAWYER1]
-Ricardo Diaz, c'est Mr.Coke.
+[DS6_17:DONS6]
+~w~Le chauffeur est mort ! Conduis la camionnette au ~y~garage de Donald.
-[LAWP_50:LAWYER1]
-Mercedes!
+[DONS6AA:DONS6]
+Mauvaise nouvelle, Toni !
-[LAWP_51:LAWYER1]
-Oh, je raccompagnais justement mon ami en ville.
+[DONS6AB:DONS6]
+Quoi ?
-[LAWP_52:LAWYER1]
-Une autre fois, Ricardo!
+[DONS6AC:DONS6]
+Les estimations nous donnent au coude à coude.
-[LAWP_53:LAWYER1]
-Partons d'ici!
+[DONS6AD:DONS6]
+Alors, on passe au plan B.
-[LAWP_54:LAWYER1]
-En fait, emmenez-moi plutôt au Pole Position club.
+[DONS6AE:DONS6]
+On vole quelques bulletins pas encore décomptés et on les remplace par les nôtres.
-[LAW1_2:LAWYER1]
-~g~Va au yatch du Colonel.
+[DONS6AF:DONS6]
+Vous disiez quoi à propos du truquage électoral ?
-[LAW1_4:LAWYER1]
-~r~Tu as tué la fille du Colonel!
+[DONS6AG:DONS6]
+Oh, la ferme !
-[LAW1_5:LAWYER1]
-Vous allez travailler pour mon père?
+[DS6_14:DONS6]
+Retourne chercher les ~g~bulletins~w~ ! Il nous les faut !
-[LAW1_6:LAWYER1]
-Peut-être.
+[DS6_66:DONS6]
+~r~Tu as détruit la voiture d'un coursier avant l'échange !
-[LAW1_7:LAWYER1]
-Ca vous ennuie si je pose ma main sur votre genou?
+[DS6_18:DONS6]
+T'as tué le coursier avant l'échange ! Ne recommence pas !
-[LAW1_8:LAWYER1]
-Peut-être...
+[DS6_21:DONS6]
+Magne-toi ! Il y a un autre échange en cours !
-[LAW1_9:LAWYER1]
-C'est trop dur d'avoir un père riche et puissant! Vamos!
+[DS6_22:DONS6]
+T'as raté le premier échange, t'as plus droit à l'erreur !
-[LAW1_10:LAWYER1]
-A plus tard, mon mignon!
+[DS6_23:DONS6]
+T'as raté le deuxième échange, t'as plus droit à l'erreur !
-[LAW1_11:LAWYER1]
-Sans aucun doute.
+[DS6_24:DONS6]
+T'as raté le troisième échange, t'as plus droit à l'erreur !
-[LAW1_12:LAWYER1]
-Mmmm... Chouette bécane.
+[DS6_25:DONS6]
+T'as raté le quatrième échange, t'as plus droit à l'erreur !
-[LAW1_13:LAWYER1]
-Non! Ma moto!
+[DS6_26:DONS6]
+T'as foutu la trouille à un coursier avant l'échange ! Ne recommence pas !
-[LAW1_3:LAWYER1]
-~g~Emmène la fille du Colonel au Pole Position Club.
+[DS6_28:DONS6]
+~r~T'as tout foiré ! Le vote ne peut plus être truqué !
-[HELP20:LAWYER1]
-Suis le ~h~point T-shirt~w~ sur le radar pour trouver Rafael.
+{=================================== MISSION TABLE DONS7 ===================================}
-[LAW1_14:LAWYER1]
-Mmmm, j'aime beaucoup ta grosse moto.
+[ELEC_01:DONS7]
+Salut, Don, j'ai réglé ce merdier pour vous.
-[LAW1_15:LAWYER1]
-Ouais, bébé, je viens de piquer ça à ce con
+[ELEC_02:DONS7]
+Tout devrait être cool maintenant.
-{=================================== MISSION TABLE LAWYER2 ===================================}
+[ELEC_03:DONS7]
+Vraiment ?
-[LAW2_A:LAWYER2]
-Ah! Eh bien, j'espère que tu t'es bien amusé! Parce que moi, je suis mort d'inquiétude! Qu'est-ce que t'as trouvé?
+[ELEC_04:DONS7]
+Vous avez plus aucun lien avec le crime organisé.
-[LAW2_B:LAWYER2]
-Qu'y'a plus de criminels dans cette ville qu'en taule. Faut qu'on trouve une piste dans la rue.
+[ELEC_05:DONS7]
+Vous êtes blanc comme neige. Vous pourriez même devenir pape.
-[LAW2_C:LAWYER2]
-Attends, laisse-moi réfléchir, voyons...
+[ELEC_07:DONS7]
+Bien qu'aucun lien n'ait pu être établi entre Donald Love
-[LAW2_D:LAWYER2]
-Ah! J'ai trouvé!
+[ELEC_08:DONS7]
+et le crime organisé de Liberty City,
-[LAW2_E:LAWYER2]
-Bon, il y a bien cet anglais, une espèce de déchet du biz de la musique,
+[ELEC_09:DONS7]
+il semblerait que son amitié avec des gangsters tels que Toni Cipriani,
-[LAW2_F:LAWYER2]
-il est connu sous le nom de Kent Paul.
+[ELEC_11:DONS7]
+pèse lourd dans l'esprit des électeurs.
-[LAW2_G:LAWYER2]
-Quoi qu'il en soit, il a le nez plongé dans la merde de Vice City depuis un moment
+[ELEC_12:DONS7]
+Les intentions de vote en sa faveur se sont effondrées en quelques heures.
-[LAW2_H:LAWYER2]
-et ça, si quelqu'un sait où sont les 20 kilos de coke,
+[ELEC_13:DONS7]
+Il est jugé, semble-t-il, indigne de servir...
-[LAW2_I:LAWYER2]
-c'est bien lui, ok? Il est toujours fourré au Malibu...
+[ELEC_14:DONS7]
+Indigne ! Par ta faute...
-[LAW2_J:LAWYER2]
-Je vais aller lui rendre une petite visite...
+[ELEC_15:DONS7]
+Ouais. C'est entièrement ta faute !
-[LAW2B_A:LAWYER2]
-D'où tu sors, toi?
+[ELEC_16:DONS7]
+Ma faute ?
-[LAW2B_B:LAWYER2]
-Je cherche un oiseau dans ton genre depuis une éternité...
+[ELEC_17:DONS7]
+Ouais.
-[LAW2B_C:LAWYER2]
-Kent Paul, mon pote. Ouais, dans le coin, c'est moi le patron.
+[ELEC_18:DONS7]
+Ma faute ?
-[LAW2B_D:LAWYER2]
-Je cherche un Anglais...
+[ELEC_19:DONS7]
+Avec tous les sacrifices que j'ai faits pour cette ville,
-[LAW2B_E:LAWYER2]
-Je résouds les problèmes, si tu vois ce que je veux dire?
+[ELEC_20:DONS7]
+tu sais quel a été mon seul point faible tout ce temps ?
-[LAW2B_F:LAWYER2]
-Je vais m'occuper de toi. Quoi que tu demandes, tu l'auras...
+[ELEC_21:DONS7]
+L'humilité ! Et maintenant, me voilà ruiné !
-[LAW2B_G:LAWYER2]
-Ne t'inquiéte absolument de rien.
+[ELEC_22:DONS7]
+La faillite ! 20 millions de dollars !
-[LAW2B_H:LAWYER2]
-Dégage, chérie!
+[ELEC_23:DONS7]
+Ratiboisé... ruiné... refait... C'est fini ! C'est la FAILLITE !
-[LAW2B_I:LAWYER2]
-Hé hé hé hé hé!
+[ELEC_06:DONS7]
+Pape ! Regarde plutôt ça !
-[LAW2B_J:LAWYER2]
-C'est toi, Kent Paul? Je suis un pote de Rosenberg...
+[DONS7_1:DONS7]
+O'Donovan peut prouver le lien entre Donald Love et Salvatore Leone. La carrière politique de Donald Love ne tient qu'à un fil. Toni doit détruire la preuve.
-[LAW2B_K:LAWYER2]
-Rosenberg...Rosenberg... Ah, ce cinglé qui poursuit les ambulances!
+[DONS7_2:DONS7]
+~w~Va voler la ~b~camionnette~w~ qui contient la preuve !
-[LAW2B_L:LAWYER2]
-Ce mec peut défendre un innocent jusqu'au couloir de la mort!
+[DONS7_3:DONS7]
+~r~T'as tué le contact !
-[LAW2B_M:LAWYER2]
-Donne-nous un autre verre!
+[DONS7_4:DONS7]
+~w~Conduis la camionnette au ~y~point de livraison !
-[LAW2B_N:LAWYER2]
-On est tous des comédiens.
+[DONS7_5:DONS7]
+~w~Remonte dans la ~b~camionnette !
-[LAW2B_O:LAWYER2]
-Ecoute-moi, il me manque vingt kilos et un gros tas de pognon...
+[DONS7_7:DONS7]
+Monte dans la ~b~voiture du contact.
-[LAW2B_P:LAWYER2]
-Une affaire de drogue? C'est toujours des pièges à con...
+[DONS7CA:DONS7]
+Ah, Toni !
-[LAW2B_Q:LAWYER2]
-Qu'est-ce que tu sais à ce propos?
+[DONS7CB:DONS7]
+La preuve est dans cette camionnette devant.
-[LAW2B_R:LAWYER2]
-Hé! Hé! Là où je voulais en venir,
+[DONS7CC:DONS7]
+Tu vas devoir te frayer un chemin.
-[LAW2B_S:LAWYER2]
-c'est à un cuisinier-trompettiste qui deale à l'extérieur de la cuisine d'un hôtel sur Ocean Drive.
+[DONS7CD:DONS7]
+Ramène la camionnette chez Donald !
-[LAW2B_T:LAWYER2]
-Il avait l'air très content de lui, ces derniers temps. Tu pourrais peut-être aller voir ça de plus près...
+[DONS7CE:DONS7]
+Bonne chance !
-[LAW2B_U:LAWYER2]
-Bon, je vais y aller. A plus tard.
+[DONS713:DONS7]
+~w~Gare la camionnette dans le ~y~garage.
-[LAW2B_V:LAWYER2]
-Ouais, c'est ça. Allez, dégage, imbécile ou je te botte le cul!
+[DONS714:DONS7]
+~r~T'as détruit la camionnette !
-[LAW2B_W:LAWYER2]
-Donne-moi à boire et putain, où est cette salope?
+[RMN_AA:DONS7]
+Chacun aura toutes les raisons de se réjouir ce soir, car la grève industrielle qui paralysait Liberty City,
-[LAW2C_A:LAWYER2]
-Ouais, c'est bien, massacre-le, ça devrait le rendre plus bavard.
+[RMN_AB:DONS7]
+est enfin terminée.
-[LAW2C_B:LAWYER2]
-T'en veux aussi?
+[RMN_AC:DONS7]
+Le trafic a repris sur toutes les lignes de ferries et de métros.
-[LAW2C_C:LAWYER2]
-Hé, relax, je veux la même chose que toi, mon frère.
+[RMN_AD:DONS7]
+Même le pont levant qui relie Staunton Island à Shoreside Vale a été rouvert au trafic.
-[LAW2C_D:LAWYER2]
-Ah ouais? Et c'est quoi?
+[RMN_AE:DONS7]
+Les grévistes ont rangé leurs pancartes et regagné leurs postes de travail,
-[LAW2C_E:LAWYER2]
-Ton fric et la blanche de mon regretté frère. Malheureusement, tu viens de refroidir notre piste.
+[RMN_AF:DONS7]
+suite aux promesses du nouveau maire O'Donovan, à l'occasion d'un rassemblement :
-[LAW2C_F:LAWYER2]
-C'était un accident. Dégage.
+[RMN_AG:DONS7]
+'Vous avez ma parole de maire qu'il y aura TOUJOURS un service de ferries à Liberty City.'
-[LAW2C_G:LAWYER2]
-Hé, hé! Pas la peine de jouer les justiciers solitaires avec moi!
+[RMN_AH:DONS7]
+Mais certains trouveront peut-être que cette promesse sonne creux,
-[LAW2C_H:LAWYER2]
-Voilà comment je vois les choses... On est deux mecs dans une ville étrange. Et on a besoin de veiller l'un sur l'autre.
+[RMN_AI:DONS7]
+les travaux du nouveau tunnel de Porter Road se poursuivant sans relâche.
-[LAW2C_I:LAWYER2]
-J'ai pas besoin de toi, mon frère...
+[DONS7_6:DONS7]
+~w~Retrouve l'~b~homme~w~ de Donald Love sous le pont autoroutier de Newport.
-[LAW2C_J:LAWYER2]
-T'en es sûr? Tiens, attrape!
+{=================================== MISSION TABLE RAYS1 ===================================}
-[LAW2C_K:LAWYER2]
-Suis-moi!
+[SAYO_01:RAYS1]
+Alors c'est toi, l'empêcheur de tourner en rond ?
-[LAW2_1:LAWYER2]
-Qu'est-ce que tu regardes?
+[SAYO_02:RAYS1]
+Pardon ?
-[LAW2_2:LAWYER2]
-Tu ferais mieux de commencer à causer...
+[SAYO_03:RAYS1]
+Y a plein de mecs importants qui t'en veulent.
-[LAW2_3:LAWYER2]
-Suce-moi, connard!
+[SAYO_04:RAYS1]
+Leon McAffrey, LCPD.
-[LAW2_4:LAWYER2]
-Par là!
+[SAYO_05:RAYS1]
+J'vois pas d'quoi vous voulez parler.
-[LAW2_5:LAWYER2]
-Je vais voir ce que je peux trouver. Je garde un oeil sur toi, Tommy.
+[SAYO_06:RAYS1]
+J'bosse dans la restauration.
-[LAW2_6:LAWYER2]
-~g~Va au Malibu Club et trouve Kent Paul.
+[SAYO_07:RAYS1]
+Comme tu veux, cow-boy...
-[LAW2_7:LAWYER2]
-~g~Trouve le cuisinier sur Ocean Drive.
+[SAYO_08:RAYS1]
+Si vous voulez tous vous entretuer, c'est pas mon problème.
-[LAW2_10:LAWYER2]
-~g~Retourne à l'hôtel.
+[SAYO_09:RAYS1]
+Tout c'que j'veux, c'est ma part.
-[LAW2_11:LAWYER2]
-~g~Ramasse son portable!
+[SAYO_12:RAYS1]
+Ma part ? Elle est où ?
-[LAW2_12:LAWYER2]
-Portable acquis! Tu peux maintenant recevoir des coups de fil.
+[SAYO_13:RAYS1]
+Dans ton cul, mon pote ! Me fais pas rire !
-[LAW2_13:LAWYER2]
-~g~Tu as laissé Lance derrière! Va le chercher!
+[SAYO_14:RAYS1]
+Tu continues à me faire chier et j'te descends avec tes potes et la famille de tes potes
-[LAW2_14:LAWYER2]
-On doit foutre le camp d'ici!
+[SAYO_15:RAYS1]
+et tous les enfoirés d'habitants de ta putain de ville natale.
-[GUN_2A:LAWYER2]
-Maintiens la ~h~~k~~PED_LOCK_TARGET~ ~w~enfoncée pour ~h~viser automatiquement~w~. Appuie sur la~h~ ~k~~PED_FIREWEAPON~~w~ pour ~h~tirer!
+[SAYO_16:RAYS1]
+Hé ! Va tirer un coup, ça te calmera !
-[GUN_2C:LAWYER2]
-Maintiens la ~h~~k~~PED_LOCK_TARGET~ ~w~enfoncée pour ~h~viser automatiquement~w~. Appuie sur la~h~ ~k~~PED_FIREWEAPON~~w~ pour ~h~tirer!
+[SAYO_17:RAYS1]
+On parle business. J'te propose un deal :
-[GUN_2D:LAWYER2]
-Maintiens la ~h~~k~~PED_LOCK_TARGET~ ~w~enfoncée pour ~h~viser automatiquement~w~. Appuie sur la~h~ ~k~~PED_FIREWEAPON~~w~ pour ~h~tirer!
+[SAYO_18:RAYS1]
+J'te garantis que les flics s'occupent pas d'toi, les Fédéraux, Rico...
-[HELP17:LAWYER2]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour attaquer le chef.
+[SAYO_19:RAYS1]
+Et toi, tu m'garantis que je recevrai c'que j'aime.
-[HELP18:LAWYER2]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~~w~ pour attaquer le chef.
+[SAYO_20:RAYS1]
+Et comment je sais que j'vais pas m'faire racketter
-[LAW3_11:LAWYER2]
-Place-toi sur le ~q~marqueur rose~w~ pour consulter les armes en vente.
+[SAYO_21:RAYS1]
+par tous les flics pourris entre ici et Vice City ?
-[LAW3_12:LAWYER2]
-Tu peux sélectionner des armes en appuyant sur ~h~gauche~w~ ou ~h~droite~w~ de la ~h~touche directionnelle.
+[SAYO_22:RAYS1]
+Je t'aiderai à t'emparer de cette ville.
-[LAW3_13:LAWYER2]
-Si tu as assez de blé, tu peux acheter des armes en appuyant sur la ~h~~k~~PED_SPRINT~.
+[SAYO_23:RAYS1]
+En échange, je veux juste un peu de thune et quelques services.
-[LAW3_14:LAWYER2]
-Tu peux sortir du magasin en appuyant sur la ~h~~k~~VEHICLE_ENTER_EXIT~.
+[SAYO_24:RAYS1]
+Allez, Toni, viens faire un tour avec moi...
-[LAW3_15:LAWYER2]
-Suis le ~h~point pistolet~w~ sur le radar pour trouver ~h~Ammu-Nation
+[SAYO_25:RAYS1]
+On va aller voir tes vieux potes, les Sindacco.
-[LAW2_15:LAWYER2]
-~g~Va chez Ammu-Nation.
+[SAYO_10:RAYS1]
+- J'aime bien les mecs à principes. ~n~ - Ben, moi aussi. Je vais à leur enterrement dans des caisses de sport avec des super canons.
-[LAW2_K:LAWYER2]
-calme-toi, maintenant.
+[RS1_YK:RAYS1]
+Dégâts
-[LAW2_16:LAWYER2]
-Il faut que tu comprennes un truc sur cette ville. Tu dois toujours avoir un flingue sur toi.
+[RS1_01:RAYS1]
+Liquide les ~r~Sindacco !
-[LAW2_17:LAWYER2]
-Allez, l'armurerie du coin n'est qu'à quelques pas d'ici.
+[RS1_02:RAYS1]
+~r~La voiture a été détruite !
-[LAW2_18:LAWYER2]
-Tommy, tout le monde a besoin de se la couler douce de temps en temps.
+[RS1_03:RAYS1]
+~r~Les Yakuzas se sont faits massacrer !
-[LAW2_19:LAWYER2]
-Voici le Pole Position Strip Club. Tu pourrais y passer de temps en temps.
+[RS1_04:RAYS1]
+~w~Descends quelques ~r~Sindacco ~w~pour attirer leur attention.
-{=================================== MISSION TABLE LAWYER3 ===================================}
+[RS1_05:RAYS1]
+~w~Monte dans la ~b~caisse de Leon.
-[LAW3_A:LAWYER3]
-Aaaaaah! Oh, nom de Dieu, c'est toi! Merde, je vais avoir besoin d'un nouveau pantalon!
+[RS1_06:RAYS1]
+~w~Dirige-toi vers le ~y~territoire des Sindacco.
-[LAW3_B:LAWYER3]
-Putain, ces psychopathes du nord ont téléphoné pour dire qu'ils rappliquaient bientôt...
+[RS1_07:RAYS1]
+~w~Retourne à la ~b~bagnole.
-[LAW3_C:LAWYER3]
-Alors, où est ce sacré pognon?
+[RS1_10:RAYS1]
+~r~T'as tué Leon !
-[LAW3_D:LAWYER3]
-Relax, relax, on n'en est pas encore là.
+[RAYS1AA:RAYS1]
+OK, moi, je prends le volant ! Toi, tu les flingues !
-[LAW3_E:LAWYER3]
-Je croyais vraiment que tu t'en occupais...
+[RAYS1AB:RAYS1]
+T'avais pas dit que les Yakuzas feraient le gros boulot ?
-[LAW3_F:LAWYER3]
-Et maintenant, ces mecs disent qu'il faut qu'on leur rende un service...
+[RAYS1AC:RAYS1]
+S'adapter et survivre, Cipriani. S'adapter et survivre...
-[LAW3_G:LAWYER3]
-Tu veux dire que JE dois leur rendre un service...
+[RAYS1BA:RAYS1]
+Merde, là, c'est un peu trop pour moi.
-[LAW3_H:LAWYER3]
-Ouais, évidemment! Est-ce que j'ai l'air de pouvoir impressionner un jury?
+[RAYS1BB:RAYS1]
+Va falloir que j'y aille, Toni, on se voit plus tard !
-[LAW3_I:LAWYER3]
-Je ne pourrais même pas faire peur à un gosse et crois-moi, j'ai essayé!
+[RAYS1CA:RAYS1]
+Juste devant, Toni !
-[LAW3_J:LAWYER3]
-Maintenant, écoute, c'est ça ou le cousin de Forelli, Georgio, se prend cinq ans pour escroquerie.
+[RAYS1CB:RAYS1]
+Derrière nous, Toni, derrière !
-[LAW3_K:LAWYER3]
-Faut que tu t'occupes de ces mecs!
+[RAYS1CC:RAYS1]
+Fais gaffe sur la gauche !
-[LAW3_L:LAWYER3]
-Je comprends. Demander au jury de changer d'opinion. T'en fais pas.
+[RAYS1CD:RAYS1]
+Sur la droite, Toni, la droite !
-[LAW3_M:LAWYER3]
-Non non non non! Ca, j'ai déjà essayé! Et l'affaire ne s'est pas arrangée!
+[RAYS1CE:RAYS1]
+Retourne à la voiture !
-[LAW3_N:LAWYER3]
-Tu dois les OBLIGER à changer d'opinion!
+[RAYS1CF:RAYS1]
+Fais gaffe à ce que tu fais !
-[LAW3_1:LAWYER3]
-Avec les compliments de Georgio...
+[RAYS1OS:RAYS1]
+Oh merde !
-[LAW3_2:LAWYER3]
-N'oublie pas que le mot 'coupable' est proscrit!
+{=================================== MISSION TABLE RAYS2 ===================================}
-[LAW3_3:LAWYER3]
-Il est innocent, jusqu'à ce que je dise le contraire.
+[RS2_02:RAYS2]
+~w~Vite, monte sur une ~b~moto !
-[LAW3_4:LAWYER3]
-Tu sais qu'il n'est pas coupable...
+[RS2_03:RAYS2]
+~w~Attire les motards dans la ~y~zone de tir !
-[LAW3_5:LAWYER3]
-Tu te souviens de Georgio? Et donc qu'il est innocent?
+[RS2_04:RAYS2]
+~w~Retourne là-bas, tu ne dois laisser aucun ~r~Forelli ~w~derrière toi !
-[LAW3_6:LAWYER3]
-Non coupable. C'est compris... bien.
+[RS2_05:RAYS2]
+~w~Remonte sur la ~b~moto !
-[LAW3_8:LAWYER3]
-~r~Tu as tué un juré!
+[RS2_06:RAYS2]
+~r~T'as besoin d'une moto pour attirer les Forelli.
-[LAW3_9:LAWYER3]
-~g~Bousille la voiture du juré pour le faire sortir!
+[RS2_07:RAYS2]
+~r~Les Yardies veulent faire couler le sang des Forelli eux-mêmes.
-[HELP40:LAWYER3]
-Tu peux bousiller les voitures avec le marteau ou un outil similaire.
+[RS2_08:RAYS2]
+~r~Tous les Yardies ont été tués !
-[LAW3_10:LAWYER3]
-~g~Tu peux aller à la ~h~quincaillerie~g~ pour acheter une arme de corps à corps.
+[RS2_09:RAYS2]
+~1~
-[LAW3_20:LAWYER3]
-~g~Bousille la voiture du juré!
+[RS2_10:RAYS2]
+~r~Ils peuvent pas te poursuivre sans motos !
-[LAW3_21:LAWYER3]
-Je n'arrive pas à le croire!
+[RAYS2AA:RAYS2]
+T'as pris ton temps, Toni.
-[LAW3_22:LAWYER3]
-Incroyable!
+[RAYS2AB:RAYS2]
+C'était pour que tu puisses réfléchir.
-[LAW3_23:LAWYER3]
-Ok! C'est bon, j'ai compris!
+[RAYS2AD:RAYS2]
+Très malin, bon, écoute.
-[LAW3_24:LAWYER3]
-~g~Ce marteau pourrait être utile.
+[RAYS2AE:RAYS2]
+Les Yardies convoitent le territoire des Forelli à Newport.
-[LAW3_7:LAWYER3]
-~g~Va intimider les deux jurés, mais NE LES TUE PAS!
+[RAYS2AF:RAYS2]
+Va là-bas et attire les troupes des Forelli jusqu'à l'hôpital de Rockford.
-[HELP23:LAWYER3]
-Tu peux suivre le ~h~marteau~w~ sur le radar si tu veux acheter des armes de corps à corps dans la quincaillerie.
+[RAYS2AG:RAYS2]
+Les Yardies les attendront là-bas.
-[LAW3_16:LAWYER3]
-de Pete de Floride.
+[RAYS2AH:RAYS2]
+Qu'est-ce que t'as à y gagner, toi ?
-[LAW3_17:LAWYER3]
-Casse-toi de là!
+[RAYS2AI:RAYS2]
+J'ai une dette envers eux. Salut.
-{=================================== MISSION TABLE LAWYER4 ===================================}
+[RS2_11:RAYS2]
+Ne tue aucun Forelli !
-[LAW4_A:LAWYER4]
-Avery, cela va sans dire... Ah, Tommy! Des nouvelles? Non, non, tu m'en parleras plus tard. Plus tard.
+[RS2_12:RAYS2]
+Elimine-~r~les !
-[LAW4_B:LAWYER4]
-Tommy, voici Avery Carrington. Je crois que vous vous êtes rencontrés à la fête?
+[RS2_01:RAYS2]
+~w~Va voler une des ~b~motos~w~ des Forelli, mais ne tue personne.
-[LAW4_C:LAWYER4]
-Pas directement.
+[RAYS2DB:RAYS2]
+Ouais. Allez, c'est parti !
-[LAW4_D:LAWYER4]
-Salut.
+[RS2_13:RAYS2]
+~r~Trop de Yardies se sont fait buter !
-[LAW4_E:LAWYER4]
-Avery a une proposition à nous faire.
+{=================================== MISSION TABLE RAYS3 ===================================}
-[LAW4_F:LAWYER4]
-On a pas déjà du pain sur la planche?
+[CRAZ_01:RAYS3]
+J'comprends pas ce que j'ai fait au bon Dieu pour t'mériter !
-[LAW4_G:LAWYER4]
-J'essaye de maintenir les loups au loin, alors lâche-moi un peu la grappe!
+[CRAZ_02:RAYS3]
+Ray, t'as 40 balais mais t'es aussi naïf qu'un môme !
-[LAW4_H:LAWYER4]
-Je suis tendu comme un cable et même si je dois crever avant la fin de la semaine, j'ai pas envie de mourir pauvre!
+[CRAZ_03:RAYS3]
+J'arrive pas à piger comment t'as tenu jusqu'ici.
-[LAW4_I:LAWYER4]
-Bon, vous énervez pas, tous les deux.
+[CRAZ_04:RAYS3]
+Incroyable que personne ait encore collé une balle dans ta tronche de Mère Teresa !
-[LAW4_J:LAWYER4]
-Ecoute, petit, tu me files un coup de main et le moindre latino qui te fait chier, je m'occupe de lui.
+[CRAZ_05:RAYS3]
+Fais gaffe à c'que tu dis, Leon...
-[LAW4_K:LAWYER4]
-Ok, qu'est-ce que je peux faire pour toi?
+[CRAZ_06:RAYS3]
+Je comprends pas qu'on soit en train de parler de ça.
-[LAW4_L:LAWYER4]
-Cette société de livraison a son dépôt sur un terrain très intéressant. Et ils ne veulent pas vendre.
+[CRAZ_07:RAYS3]
+Tu vas courir dans les jupes de ta mère ?
-[LAW4_M:LAWYER4]
-Ils s'accrochent à leur terrain comme des rats entêtés, alors va falloir exploser cette vermine.
+[CRAZ_08:RAYS3]
+Tu vas sauter sur les genoux de ton père ?
-[LAW4_N:LAWYER4]
-Va là-bas et mets le feu aux poudres.
+[CRAZ_09:RAYS3]
+Demander un gros câlin ?
-[LAW4_O:LAWYER4]
-La sécurité sera débordée et tu pourras te glisser dedans et en finir avec eux...
+[CRAZ_10:RAYS3]
+Salut, Toni !
-[LAW4_P:LAWYER4]
-Tu peux aussi passer chez Rafael pour changer de fringues. T'en as sans doute pour un moment, mais bon, fonce!
+[CRAZ_14:RAYS3]
+Il veut s'assurer que j'applique bien toutes les règles du manuel !
-[LAW4_Q:LAWYER4]
-Ca va être une vraie émeute.
+[CRAZ_15:RAYS3]
+Toni Cipriani, Ray Machowski.
-[LAW4_R:LAWYER4]
-Si tout se passe comme sur des roulettes, passe me voir au bureau...
+[CRAZ_16:RAYS3]
+Il est avec nous. Bon, on va aller combattre le crime organisé, maintenant.
-[LAW4_1:LAWYER4]
-Dispersez-vous! La direction n'écoutera vos revendications que dans les conditions appropriées!
+[CRAZ_17:RAYS3]
+Tu fonces au poste de police et tu tapes ton rapport.
-[LAW4_2:LAWYER4]
-Dispersez-vous! Retournez chez vous!
+[CRAZ_18:RAYS3]
+T'es un brave gars... Allez, en route, Toni !
-[LAW4_3:LAWYER4]
-Dispersez-vous! C'est inapproprié!
+[CRAZ_19:RAYS3]
+T'es qu'une grosse merde, Leon.
-[LAW4_4:LAWYER4]
-Dispersez-vous ou vous finirez tous à la rue!
+[CRAZ_11:RAYS3]
+- Bouge pas, connard ! ~n~ - Hé ! Hé ! Du calme ! J'te présente mon nouveau coéquipier M. Garde-à-vous !
-[LAW4_5:LAWYER4]
-Sortez vos bâtons, les mecs, on va briser quelques crânes de cocos!
+[RAYS3_1:RAYS3]
+Aide les Yakuzas à s'emparer du territoire tenu par les Forelli, à Belleville Park. Il faut tuer ~1~ Forelli uniquement au katana.
-[LAW4_13:LAWYER4]
-~g~Commence à te battre avec au moins 4 ouvriers pour déclencher une émeute.
+[RAYS3_2:RAYS3]
+~w~Tue ~1~ ~r~Forelli~w~ en utilisant seulement le katana.
-[LAW4_14:LAWYER4]
-~g~Détruis les camionnettes du complexe!
+[RAYS3_3:RAYS3]
+Victimes
-[HELP38:LAWYER4]
-Si tu butes quelqu'un qui porte une arme, il la lâche.
+[RAYS3_4:RAYS3]
+~w~Tu dois tuer les ~r~Forelli~w~ avec le katana.
-[HELP39:LAWYER4]
-Tu peux tirer sur les barils d'explosifs, mais garde tes distances.
+[RAYS3_5:RAYS3]
+~w~T'as pas de katana. Trouves-en ~g~un !
-{=================================== MISSION TABLE MIAMI_1 ===================================}
+[RAYS3_6:RAYS3]
+~r~ Le temps est écoulé.
-[T4X4_1A:MIAMI_1]
-~g~Tu as ~1~ secondes pour récupérer ~y~24~g~ points de passage. ~g~Fais-le dans ~y~N'IMPORTE QUEL ORDRE.
+[RAYS3_7:RAYS3]
+~w~Tue ~1~ ~r~Forelli~w~ à l'aide du katana uniquement avant ~1~:~1~.
-[T4X4_1B:MIAMI_1]
-~y~Passe A TRAVERS~g~ le premier point de passage pour déclencher le ~r~CHRONOMETRE.
+[RAYS3_8:RAYS3]
+~w~Tue ~1~ ~r~Forelli~w~ à l'aide du katana uniquement avant ~1~:0~1~.
-[T4X4_1C:MIAMI_1]
-~1~ sur 24!
+[RAYS3_9:RAYS3]
+~w~Tue ~1~ ~r~Forelli~w~ à l'aide du katana uniquement avant 0~1~:~1~.
-[GETBIK1:MIAMI_1]
-Tu as ~1~ secondes pour enfourcher une PCJ 600!
+[RAYS310:RAYS3]
+~w~Tue ~1~ ~r~Forelli~w~ à l'aide du katana uniquement avant 0~1~:0~1~.
-[GETBIK3:MIAMI_1]
-~r~Tu as besoin d'une PCJ 600 pour cette mission!
+{=================================== MISSION TABLE RAYS4 ===================================}
-{=================================== MISSION TABLE MM ===================================}
+[RAYS4_1:RAYS4]
+~w~Les Yardies sont attaqués à Newport. Liquide les assaillants ~r~Sindacco.
-[BLOD_04:MM]
-ETAT DE LA VOITURE :
+[RAYS4_2:RAYS4]
+~w~Va parler au ~b~chef des Yardies.
-[BLOD_05:MM]
-~g~TEMPS VISE : ~1~ minute
+[RAYS4_3:RAYS4]
+~w~Suis le ~b~chef des Yardies.
-[BLOD_06:MM]
-~g~TEMPS VISE : ~1~ minutes
+[RAYS4_4:RAYS4]
+~r~Un des Yardies a été tué !
-[BLOD_07:MM]
-NV meilleur tps : ~1~ secondes
+[RAYS4_5:RAYS4]
+~w~Protège les Yardies jusqu'à l'arrivée de l'ambulance !
-[BLOD_08:MM]
-Voitures détruites : ~1~
+[RAYS4_6:RAYS4]
+~w~Retourne là-bas et protège les Yardies !
-[BLOD_09:MM]
-$~1~
+[RAYS4_7:RAYS4]
+~w~Dégage le passage pour les Yardies jusqu'à l'ambulance !
-[BLOD_10:MM]
-VAINQUEUR!
+[RAYS4_8:RAYS4]
+~w~Va à la rencontre de ~y~l'ambulance !
-[BLOD_01:MM]
-Franchis les points de passage pour augmenter ton temps général.
+[RAYS4AA:RAYS4]
+Cipriani, on peut plus se rencontrer comme ça.
-[BLOD_02:MM]
-Tu as perdu si ton temps général est à zéro.
+[RAYS4AB:RAYS4]
+Ca roule pour moi.
-[BLOD_03:MM]
-Il faut que ton temps général soit supérieur au temps visé pour gagner!
+[RAYS4AC:RAYS4]
+Allez, relax, mec.
-{=================================== MISSION TABLE OVALRIG ===================================}
+[RAYS4AD:RAYS4]
+Qu'est-ce que t'as pour moi, McAffrey ?
-[HOTR_01:OVALRIG]
-~g~La course dure 12 tours. Seuls les trois premiers arrivés reçoivent une récompense.
+[RAYS4AE:RAYS4]
+Les Yardies ont quelques difficultés à tenir leur nouveau territoire à Newport.
-[HOTR_02:OVALRIG]
-~g~Tu es disqualifié si ta bagnole est détruite.
+[RAYS4AF:RAYS4]
+On dirait que les Sindacco veulent le reprendre.
-[HOTR_03:OVALRIG]
-~g~Si ta bagnole est bousillée, tu peux la faire réparer aux stands.
+[RAYS4BA:RAYS4]
+Mon pote Rudyard s'est fait allumer !
-[HOTR_04:OVALRIG]
-~g~C'est par là pour sortir du stade.
+[RAYS4BB:RAYS4]
+Faut lui dégotter une ambulance !
-[HOTR_05:OVALRIG]
-Etat de la voiture :
+[RAYS4BC:RAYS4]
+Merde, voilà d'autres tarés de Sindacco !
-[HOTR_06:OVALRIG]
-Tours :
+[RAYS4BD:RAYS4]
+Je vais chercher l'ambulance ! Toi, t'aides mes gars !
-[HOTR_10:OVALRIG]
-Temps de course :
+[RAYS4BE:RAYS4]
+Tirons-nous d'ici !
-[HOTR_09:OVALRIG]
-Position :
+[RAYS4BF:RAYS4]
+Voilà l'ambulance !
-[HOTR_12:OVALRIG]
-~r~Ta caisse est bousillée!
+[RAYS4BG:RAYS4]
+Merci, M. Cipriani, on a une dette envers vous !
-[HOTR_13:OVALRIG]
-~r~Tu n'as pas gagné la course!
+{=================================== MISSION TABLE RAYS5 ===================================}
-[HOTR_14:OVALRIG]
-~r~Tu as été disqualifié!
+[RAYS5AA:RAYS5]
+Alors quoi, pas de fleurs ?
-[HOTR_15:OVALRIG]
-Temps : ~1~:~1~
+[RAYS5AB:RAYS5]
+Je savais pas que c'était tes funérailles.
-[HOTR_16:OVALRIG]
-Temps : ~1~:0~1~
+[RAYS5AC:RAYS5]
+T'es un vrai comédien, Toni, un grand comique.
-[HOTR_17:OVALRIG]
-Meilleur temps : ~1~:~1~
+[RAYS5AD:RAYS5]
+Les Forelli plaisantent plus, là.
-[HOTR_18:OVALRIG]
-Meilleur temps : ~1~:0~1~
+[RAYS5AE:RAYS5]
+Ils trafiquent des armes et prélèvent une part de la marchandise...
-[HOTR_19:OVALRIG]
-Meilleur temps : aucun
+[RAYS5AF:RAYS5]
+en prévision des ennuis.
-[HOTR_20:OVALRIG]
-Nv meilleur tps : ~1~:~1~
+[RAYS5AG:RAYS5]
+Ils transportent les armes à Fort Staunton dans des camions.
-[HOTR_21:OVALRIG]
-Nv meilleur tps : ~1~:0~1~
+[RAYS5AH:RAYS5]
+C'était un plaisir...
-[HOTR_22:OVALRIG]
-Meilleur résultat : aucun
+[RAYS5AI:RAYS5]
+Ouais, pareil.
-[HOTR_23:OVALRIG]
-Meilleur résultat : 1er
+[RAY5_2:RAYS5]
+Ils ont appelé des renforts.
-[HOTR_24:OVALRIG]
-Meilleur résultat : 2e
+[RAY5_3:RAYS5]
+~r~Les Forelli ont les munitions !
-[HOTR_25:OVALRIG]
-Meilleur résultat : 3e
+[RAY5_4:RAYS5]
+C'est Cipriani !
-[HOTR_26:OVALRIG]
-Meilleur résultat : ~1~e
+[RAY5_5:RAYS5]
+Butez-le !
-[HOTR_27:OVALRIG]
-Meilleur tps au tr : ~1~.~1~ secondes
+[RAY5_6:RAYS5]
+Un de moins ! Maintenant, détruis l'autre ~r~camion !
-[HOTR_28:OVALRIG]
-Meilleur tps au tr : ~1~.0~1~ secondes
+[RAY5_1:RAYS5]
+Détruis les ~r~camions~w~ avant qu'ils n'arrivent à destination !
-[HOTR_29:OVALRIG]
-$~1~
+[RAY5_7:RAYS5]
+Détruis le ~r~camion~w~ avant qu'ils ne déchargent suffisamment de munitions.
-[HOTR_30:OVALRIG]
-1ERE PLACE
+[RAY5_8:RAYS5]
+~r~Tu n'as pas détruit le camion à temps !
-[HOTR_31:OVALRIG]
-2E PLACE
+{=================================== MISSION TABLE SALH1 ===================================}
-[HOTR_32:OVALRIG]
-3E PLACE
+[SLH1_F1:SALH1]
+~r~T'as tué un des Hoods.
-[HOTR_33:OVALRIG]
-Meilleur tps au tr : aucun
+[SLH1_F2:SALH1]
+~w~Attire les Forelli en bousillant leurs ~r~caisses.
-[HOTR_11:OVALRIG]
-Nv meilleur tps au tr : ~1~.~1~ secondes
+[SLH1_F3:SALH1]
+~w~Venge-toi des ~r~Forelli.
-[HOTR_34:OVALRIG]
-Nv meilleur tps au tr : ~1~.0~1~ secondes
+[SLH1_F4:SALH1]
+~w~Attire d'autres Forelli en bousillant une autre ~r~caisse.
-{=================================== MISSION TABLE PHIL1 ===================================}
+[SLH1_F5:SALH1]
+~w~Abandonne pas les ~b~Hoods !
-[PHI1_HP:PHIL1]
-Tu peux lancer une grenade à détonateur quelque part puis l'y faire exploser au moment souhaité.
+[SLH1_B0:SALH1]
+~w~OK, mec, on va exploser cette ville.
-[PHIL1_A:PHIL1]
-Phil?
+[SLH1_B1:SALH1]
+~w~Hé, reviens ici, connard !
-[PHIL1_B:PHIL1]
-COURS!
+[SLH1_B2:SALH1]
+~w~Oh, tu déconnes ou quoi ? J'vais jamais pouvoir carrer mon cul là-dedans !
-[PHIL1_C:PHIL1]
-Cours.
+[SLH1_B3:SALH1]
+~w~T'as raison, t'as absolument besoin de moi !
-[PHIL1_E:PHIL1]
-Merde, Phil, tu bois cette saloperie?
+[SLH1_B4:SALH1]
+~w~Ouah, trop fort, mec !
-[PHIL1_F:PHIL1]
-Putain, t'as pas besoin de la boire!
+[SLH1_B5:SALH1]
+~w~Merde, je supporte pas ces Ritals !
-[PHIL1_G:PHIL1]
-Tu la renifles juste un bon coup et t'exploses direct!
+[SLH1_B6:SALH1]
+~w~... sauf toi, Toni.
-[PHIL1_H:PHIL1]
-Ecoute, Phil, t'avais dit que tu pourrais t'occuper de ma puissance de feu...
+[SLH1_B7:SALH1]
+~w~Le moment est venu pour les Hoods de se lever et de réagir !
-[PHIL1_I:PHIL1]
-Pas de problème.
+[SLH1_B8:SALH1]
+~w~Allez ! On va les exploser !
-[PHIL1_J:PHIL1]
-Il y a ce mexicain qui trafique des armes, il a pas été réglo avec moi.
+[SLH1_C0:SALH1]
+~w~Mon frère !
-[PHIL1_K:PHIL1]
-Il fait sa tournée hebdomadaire, maintenant.
+[SLH1_C1:SALH1]
+~w~Yo ! Minus ! Où tu vas ?
-[PHIL1_L:PHIL1]
-Défonce l'arrière de son camion et sers-toi avant qu'il réagisse.
+[SLH1_C2:SALH1]
+~w~Et où c'est que j'suis supposé me mettre, moi ?
-[PHIL1_M:PHIL1]
-Et rends-moi un service au passage tant que tu y es.
+[SLH1_C3:SALH1]
+~w~T'as raison, t'as absolument besoin de moi !
-[PHIL1_N:PHIL1]
-Ensuite, règle-lui son compte...
+[SLH1_C4:SALH1]
+~w~Merde ! Ca rigole pas dans cette ville !
-[PHI1_01:PHIL1]
-~g~Va piquer les armes à l'arrière du camion du trafiquant.
+[SLH1_D0:SALH1]
+~w~Hé ! C'est ma caisse !
-[PHI1_02:PHIL1]
-~g~Le trafiquant a largué son chargement. Brise la caisse et ramasse l'artillerie.
+[SLH1_D1:SALH1]
+~w~Je la préfère comme ça !
-[PHI1_03:PHIL1]
-~g~On dirait qu'ils ont demandé des renforts...
+[SLH1_E0:SALH1]
+~w~Y se passe quoi ici ?
-[PHI1_04:PHIL1]
-~g~Va maintenant finir les trafiquants d'armes survivants.
+[SLH1_E1:SALH1]
+~w~On va vous virer de là, voilà ce qui se passe !
-[PHIL1_O:PHIL1]
-Yeeeeeeehhaaaaa!
+[SLH1_F0:SALH1]
+~w~Passe chercher les ~b~Hoods~w~ et attire l'attention des ~r~Forelli.
-[PHIL1_D:PHIL1]
-N'approche jamais une allumette enflammée du boomshine de Phil Cassidy!
+[RUFJ_01:SALH1]
+C'est votre avocat, M. Leone.
-{=================================== MISSION TABLE PHIL2 ===================================}
+[RUFJ_02:SALH1]
+J'sais parfaitement qui c'est...
-[PHIL2_A:PHIL2]
-Salut, Phil, ça roule?
+[RUFJ_03:SALH1]
+Allez, laisse-moi un peu tranquille.
-[PHIL2_B:PHIL2]
-Saluut Tommyyyy! Comment ça va? Ca fait tellement longtemps...
+[RUFJ_04:SALH1]
+Allez, petit, va faire un tour et dis bonjour à ta mère, capici ?
-[PHIL2_C:PHIL2]
-Je te jure que tu devrais arrêter le boomshine...
+[RUFJ_05:SALH1]
+D'accord... Vous avez 5 minutes.
-[PHIL2_D:PHIL2]
-Ca sent comme du décapant à peinture, j'ai les yeux qui brûlent...
+[RUFJ_06:SALH1]
+Bon, euh, Lionel, t'as l'air en forme.
-[PHIL2_E:PHIL2]
-Ferme-la, Tommy
+[RUFJ_07:SALH1]
+Regarde-moi !
-[PHIL2_F:PHIL2]
-et amène-toi par là. Y'a quelque chose que je veux te montrer... Quelque chose...
+[RUFJ_08:SALH1]
+Un membre honorable de la communauté, et j'me retrouve en taule.
-[PHIL2_G:PHIL2]
-Waou! Putain! C'est normal que je sente l'odeur d'ici? Je me sens tout drôle...
+[RUFJ_09:SALH1]
+Un vrai défi à ma nature philanthropique !
-[PHIL2_H:PHIL2]
-T'inquiète pas de l'odeur, Tommy, regarde juste ça.
+[RUFJ_10:SALH1]
+C'est sûr, M. Leone.
-[PHIL2_I:PHIL2]
-Putain de saloperies de piles bon marché! Il y en a d'autres sur le banc.
+[RUFJ_11:SALH1]
+On fait tout ce qu'on peut pour vous faire sortir d'ici et... euh...
-[PHIL2_J:PHIL2]
-TA-DAAA!
+[RUFJ_12:SALH1]
+pour que vous reveniez aider votre communauté le plus vite possible.
-[PHIL2_K:PHIL2]
-Oh merde!
+[RUFJ_13:SALH1]
+J'espère bien.
-[PHI2_01:PHIL2]
-~g~Vite, emmène Phil à l'hosto!
+[RUFJ_14:SALH1]
+Je ferai un procès à quelqu'un pour cette injustice !
-[PHI2_03:PHIL2]
-~r~Phil Cassidy est mort! Maintenant, qui va nous filer des flingues à Liberty?
+[RUFJ_15:SALH1]
+Ces connards de Sindacco ou ces enculés de Forelli, qui c'est qui m'a fait ça ?
-[PHI2_05:PHIL2]
-Pas à l'hosto, mec, c'est plein de flics et de vietcongs!
+[RUFJ_16:SALH1]
+Qui a craché le morceau ?
-[PHI2_06:PHIL2]
-Il y a un ancien chirurgien de l'armée qui me doit quelques services et une tondeuse...
+[RUFJ_18:SALH1]
+On va tous les attaquer.
-[PHI2_07:PHIL2]
-Il crêche à Little Havana, oh! Regarde! Un poisson géant!
+[RUFJ_19:SALH1]
+A mon avis, ils ont besoin d'une bonne branlée pour ce coup de pute !
-[PHI2_08:PHIL2]
-Fais gaffe! Charlie sur la ligne des arbres!
+[RUFJ_22:SALH1]
+Merci, Toni. Tu comptes beaucoup pour moi, tu le sais.
-[PHI2_09:PHIL2]
-C'est moi qui hallucine ou la route est vraiment toute molle?
+[RUFJ_23:SALH1]
+Ecoute, t'auras p'têt besoin d'renforts.
-[PHI2_10:PHIL2]
-Cuillère Brisée à Mère Poule, tu me reçois?
+[RUFJ_24:SALH1]
+Fais appel aux Hoods. OK ?
-[PHI2_11:PHIL2]
-Spooney Wooney Woo Woo Woooo!
+[RUFJ_25:SALH1]
+Tout c'que vous voudrez, M. Leone.
-[PHI2_12:PHIL2]
-La mort m'appelle, mon garçon!
+[RUFJ_26:SALH1]
+OK... Allez, barre-toi d'ici... Lionel.
-[PHI2_13:PHIL2]
-Des ailes noires qui battent tout autour...
+[RUFJ_20:SALH1]
+- Les enculés. ~n~ - Ce sera avec plaisir.
-[PHI2_14:PHIL2]
-C'est magnifique, mec, magnifique... Mais tellement froid...
+{=================================== MISSION TABLE SALH2 ===================================}
-[PHI2_15:PHIL2]
-10-4 On a un conducteur en état d'ivresse.
+[SALH2AA:SALH2]
+~w~Hé, Sal ! C'est moi... Toni.
-[PHI2_04:PHIL2]
-SANTE DE PHIL :
+[SALH2AB:SALH2]
+~w~Toni ! Ca fait plaisir d'entendre ta voix, petit.
-[PHI_AS1:PHIL2]
-CHEZ PHILS PLACE OK
+[SALH2AC:SALH2]
+~w~Ces abrutis me laissent voir personne !
-[PHI_AS2:PHIL2]
-~g~De nouvelles armes sont en vente chez Phils Place.
+[SALH2AD:SALH2]
+~w~Ecoute, j'ai des tas d'affaires à régler.
-{=================================== MISSION TABLE PIZZA ===================================}
+[SALH2AE:SALH2]
+~w~Paulie Sindacco, par exemple. Sa famille est finie dans cette ville.
-[PIZ1_01:PIZZA]
-~g~Va livrer ces pizzas. Tu dois les balancer aux clients. Roule à côté d'eux pour lancer les pizzas.
+[SALH2AF:SALH2]
+~w~Mais il croit pouvoir se tirer comme ça, comme s'il avait aucune dette.
-[PIZ1_02:PIZZA]
-~g~T'as balancé toutes tes pizzas, retourne en chercher d'autres.
+[SALH2AG:SALH2]
+~w~Je suis en taule à cause de cet enfoiré !
-[PIZ1_05:PIZZA]
-~g~Tu as 5 minutes pour livrer les commandes avant que que les clients n'appelent une autre pizzeria.
+[SALH2AH:SALH2]
+~w~Règle son compte à ce fils de pute.
-[PIZ1_07:PIZZA]
-~r~T'as tué le client! T'es viré!
+[SALH2O1:SALH2]
+~w~Intercepte Paulie Sindacco à la ~y~centrale de Cochrane Dam.
-[PIZ1_08:PIZZA]
-~r~T'es à la bourre! T'es viré!
+[SALH2F1:SALH2]
+~r~Il a filé ! Salvatore va pas être content !
-[PIZ1_09:PIZZA]
-~r~T'as bousillé notre bécane! T'es viré!
+[SALH2CA:SALH2]
+~w~Bande de nazes ! C'est Toni Cipriani ! Butez-le !
-[PIZ1_11:PIZZA]
-Hé! Retourne sur ta bécane!
+[SALH2BA:SALH2]
+~w~Hé, Toni ! Pourquoi tu viens pas à la nage me lécher le cul ?
-[PIZ1_12:PIZZA]
-Pizzas restantes :
+[SALH2BB:SALH2]
+~w~Hé, par ici, connard !
-[PIZ1_06:PIZZA]
-Appuie sur la~h~ ~k~~TOGGLE_SUBMISSIONS~~w~ quand tu es sur la moto pour annuler la mission.
+[SALH2BI:SALH2]
+~w~Salue Salvatore de ma part. Je lui enverrai une carte postale !
-[PIZ1_13:PIZZA]
-Effectue ces livraisons en vitesse.
+[SALH2BC:SALH2]
+~w~Qu'est-ce que tu vas faire, maintenant, toquard ?
-[PIZ1_14:PIZZA]
-Mon pote, un pizza pour toi!
+[SALH2BE:SALH2]
+~w~T'es mort !
-[PIZ1_15:PIZZA]
-Allez, mon vieux, livre ça en vitesse.
+[SALH2BF:SALH2]
+~w~T'es que dalle !
-[PIZ1_16:PIZZA]
-Qu'est-ce que t'attends, mon vieux? T'as des pizzas à livrer!
+[SALH2BG:SALH2]
+~w~Surprise ! Ordure !
-[PIZ1_17:PIZZA]
-Je sais que tu voulais pas faire ce boulot, mais je m'en tape!
+[SALH2BH:SALH2]
+~w~Avis à la populace, Paulie Sindacco vient de faire sa sortie !
-[PIZ1_18:PIZZA]
-Va livrer ça.
+[SALH2BD:SALH2]
+~w~T'as aucune chance de m'attraper, connard !
-[PIZ1_19:PIZZA]
-On a besoin de livrer ça.
+[SALH2O2:SALH2]
+~w~Tue ~r~Paulie Sindacco~w~. Ne le laisse pas s'enfuir !
-[PIZ1_20:PIZZA]
-Allez, mon vieux, livre ça ou t'es viré!
+[SALH2O3:SALH2]
+Trouve une caisse et tends une embuscade à ~r~Paulie~w~ depuis la côte.
-[PIZ1_21:PIZZA]
-Il y a des gens qui attendent, mon vieux.
+{=================================== MISSION TABLE SALH3 ===================================}
-[PIZ1_22:PIZZA]
-Mais qu'est-ce que t'attends? Faut livrer ça!
+[SALH3_1:SALH3]
+~w~Sal ? Comment ça va ?
-[PIZ1_23:PIZZA]
-Va livrer cette saloperie de bouffe!
+[SALH3_2:SALH3]
+~w~Je m'éclate à mort !
-[PIZ1_24:PIZZA]
-Les clients ont les crocs, mon vieux!
+[SALH3_3:SALH3]
+~w~Primo, le nouveau maire empêche ma remise en liberté sous caution.
-[PIZ1_25:PIZZA]
-Tu peux prendre ça, mon vieux?
+[SALH3_4:SALH3]
+~w~Secundo, on doit se battre contre les Triades et les Diablos.
-[PIZ1_26:PIZZA]
-Tiens, va livrer ça en vitesse, amigo.
+[SALH3_5:SALH3]
+~w~Tertio, y a ces putains de Yakuzas qui vont essayer de prendre le contrôle de la ville.
-[PIZ1_27:PIZZA]
-Magne-toi, on est débordés. Va livrer ça!
+[SALH3_6:SALH3]
+~w~A part ça, c'est le pied !
-[PIZ1_28:PIZZA]
-Encore toi? Qu'est-ce que t'attends? Va livrer ça!
+[SALH3_7:SALH3]
+~w~Après toutes ces années de contrôle de la famille, c'est la chasse et le fond des chiottes !
-[PIZ1_29:PIZZA]
-Perds pas de temps, cette fois-ci.
+[SALH38:SALH3]
+~w~J'peux m'occuper de tout ça, boss.
-[PIZ1_30:PIZZA]
-Espèce de bon à rien! Va livrer ça en vitesse!
+[SALH39:SALH3]
+~w~Les Yakuzas ont un stock d'armes à Aspatria.
-[PIZ1_31:PIZZA]
-T'auras jamais de promotion si tu traînes encore ce coup-ci.
+[SALH310:SALH3]
+~w~Plus rien peut les arrêter !
-[PIZ1_32:PIZZA]
-~r~La pizza est trop chaude ou quoi?
+[SALH311:SALH3]
+~w~C'est ce qu'on va voir.
-[PIZ1_33:PIZZA]
-~g~Retourne au restaurant pour d'autres commandes.
+[SALH3_A:SALH3]
+~w~Fais un tour au ~y~complexe des Yakuzas.
-[PIZ1_34:PIZZA]
-~g~Pizza livrée. Voilà ton fric.
+[SALH3C1:SALH3]
+~w~Trouve un accès au ~y~complexe.
-[PIZ_WON:PIZZA]
-Mission Pizza terminée. votre max de Santé passe à 150.
+[SALH3C2:SALH3]
+~w~Bordel de merde ! J'y crois pas !
+
+[SALH3C3:SALH3]
+~w~Détruis le ~r~blindé !
+
+[SALH3C4:SALH3]
+~w~Mais qu'est-ce que... ?
+
+[SALH3C5:SALH3]
+~w~Butez-le !
+
+[SALH3C6:SALH3]
+~w~Le ~r~blindé ~w~est à l'épreuve des armes normales. Elles ne lui feront même pas une égratignure !
+
+[SALH3G1:SALH3]
+~w~Hé, 'l'ami', t'as rien à faire là !
+
+[SALH3G2:SALH3]
+~w~Cette cour est réservée aux Yakuzas.
+
+[SALH3G3:SALH3]
+~w~Vire ton cul de là !
+
+[SALH3_B:SALH3]
+~w~Ils se sont fait avoir par la voiture des Yakuzas !
+
+[SALH3_C:SALH3]
+~w~Conduis jusqu'au ~y~complexe~w~ et va jeter un coup d'oeil.
+
+{=================================== MISSION TABLE SALH4 ===================================}
+
+[SALH4_1:SALH4]
+~w~Sal ? Vous êtes là ?
+
+[SALH4_2:SALH4]
+~w~Toni ! Je vais sortir !
+
+[SALH42A:SALH4]
+~w~C'est aujourd'hui la lecture de mon acte d'accusation !
+
+[SALH4_3:SALH4]
+~w~Super !
+
+[SALH44C:SALH4]
+~w~Ouais, Toni. Fais comme tu veux.
+
+[SALH44E:SALH4]
+~w~Bon, y a les gardiens qui s'amènent... Je te retrouve devant.
+
+[SALH4_5:SALH4]
+~w~Trouve une voiture de police !
+
+[SALH45A:SALH4]
+~w~T'as besoin d'une voiture de police pour pas alerter le convoi !
+
+[SALH4_6:SALH4]
+~w~Mets-toi en position au ~y~poste de police.
+
+[SALH4_7:SALH4]
+~w~Bordel de merde !
+
+[SALH4_8:SALH4]
+~w~Protège le ~b~fourgon~w~, il doit arriver en un seul morceau !
+
+[SALH4_9:SALH4]
+~w~Laisse pas trop de champ au ~b~fourgon !
+
+[SALH410:SALH4]
+~w~Tu vas perdre le ~b~fourgon !
+
+[SALH411:SALH4]
+~r~T'as perdu le fourgon ! Sal a été exécuté !
+
+[SALH412:SALH4]
+~r~Le fourgon a été détruit !
+
+[SALH413:SALH4]
+~w~Enerve pas les flics ou les chances de libération sous caution de Sal s'envoleront !
+
+[SALH416:SALH4]
+~w~Escorte le ~b~convoi~w~ jusqu'à sa destination.
+
+[SALH417:SALH4]
+~r~T'as tout foiré ! Les flics ont annulé l'audition au tribunal !
+
+[SALH420:SALH4]
+~r~Sal a été tué !
+
+[SALH421:SALH4]
+~r~T'as perdu le fourgon !
+
+[SALH422:SALH4]
+~w~Sème les flics ou tu vas attirer trop d'attention sur le convoi !
+
+[SALH424:SALH4]
+~w~Elimine le ~y~barrage routier !
+
+[SALH415:SALH4]
+~w~Ca fait du bien de se sentir libre.
+
+[SALH418:SALH4]
+~w~Bon, écoute, je vais rentrer à la maison et me débarrasser de ces fringues qui puent, OK ?
+
+[SALH419:SALH4]
+~w~Je te retrouve là-bas.
+
+[SALH414:SALH4]
+~w~Barrage routier hors-la-loi signalé dans le secteur...
+
+[SALH44A:SALH4]
+~w~Avec moi coincé ici, qui va les empêcher de prendre le contrôle ?
-{=================================== MISSION TABLE PORN1 ===================================}
+[SALH4_4:SALH4]
+~w~Ouais, mais j'ai comme l'impression que les Siciliens ne veulent pas que j'arrive jusqu'au tribunal.
-[POR1_A:PORN1]
-Action
+[SALH44B:SALH4]
+~w~Hé, ils devront d'abord me passer sur le corps, Sal.
-[POR1_B:PORN1]
-Ooooh! C'est un sacré morceau!
+[SALH44D:SALH4]
+~w~Débrouille-toi simplement pour que j'aie droit à mon procès !
-[POR1_C:PORN1]
-30 centimètres, c'est la taille réglementaire, bébé.
+{=================================== MISSION TABLE SALH5 ===================================}
-[POR1_D:PORN1]
-COUPEZ! Qui c'est cet abruti? Toi! Toi! T'es dans le champ? POURQUOI?
+[SALH51A:SALH5]
+~w~Fonce, Toni !
-[POR1_E:PORN1]
-Qu'est-ce que c'est que ces conneries?
+[SALH51B:SALH5]
+~w~Si je me trompe pas, les Siciliens vont s'en prendre au maire.
-[POR1_F:PORN1]
-Des aliens? Des cannes à pêche?
+[SALH51C:SALH5]
+~w~Il faut l'atteindre avant eux.
-[POR1_G:PORN1]
-J'ai jamais vu un requin aussi gros...
+[SALH511:SALH5]
+~w~C'est pas bon, ça...
-[POR1_H:PORN1]
-Faut que tout ça dégage!
+[SALH554:SALH5]
+~w~Accélère, Toni !
-[POR1_I:PORN1]
-Pourquoi t'es dans le métier, connard?
+[SALH512:SALH5]
+~w~T'as abandonné ~b~Sal~w~ ! Retourne le chercher !
-[POR1_J:PORN1]
-Hein?
+[SALH513:SALH5]
+~w~C'est pas vrai ! Y sont déjà là !
-[POR1_K:PORN1]
-Ben, pour les chattes, évidemment! Alors, qu'est-ce que c'est que ça?
+[SALH560:SALH5]
+~w~Massacre-les, Toni !
-[POR1_L:PORN1]
-Ceci est mon art - SECURITE!
+[SALH561:SALH5]
+~w~Je vais chercher le maire !
-[POR1_M:PORN1]
-Ecoute-moi, trou du cul arrogant, tu m'appartiens maintenant. Tout m'appartient ici.
+[SALH514:SALH5]
+~w~Ces enfoirés l'ont déjà emmené !
-[POR1_N:PORN1]
-On va révolutionner cet endroit...
+[SALH555:SALH5]
+~w~Vite, Toni ! Par là !
-[POR1_O:PORN1]
-Je vais faire ta fortune...
+[SALH515:SALH5]
+~w~Les voilà !
-[POR1_P:PORN1]
-Oh. Tu es... Tu... es Tommy Vercetti? Mais je croyais que tu étais...
+[SALH517:SALH5]
+~w~D'où ils sortent, ces bâtards ?
-[POR1_Q:PORN1]
-Exactement...
+[SALH556:SALH5]
+~w~Derrière nous, Toni !
-[POR1_R:PORN1]
-Va y avoir quelques changements dans le coin et on va commencer à se faire des ronds.
+[SALH562:SALH5]
+~w~Toni, juste devant !
-[POR1_S:PORN1]
-Au fait, as-tu jamais pensé à...
+[SALH519:SALH5]
+~w~Toni ! Descends l'hélico !
-[POR1_T:PORN1]
-Mais d'abord, on va avoir besoin de quelques putes bien foutues...
+[SALH522:SALH5]
+~w~Ils croient pouvoir se planquer dans le phare !
-[POR1_U:PORN1]
-Ouais, les filles c'est bien mais toi... waou!
+[SALH557:SALH5]
+~w~Bute ces connards !
-[POR1_02:PORN1]
-~g~Bute le mac de Candy, puis retourne la récupérer.
+[SALH558:SALH5]
+~w~Bien visé, Toni !
-[POR1_04:PORN1]
-Salut, Candy. Je cherche des actrices, ça te branche?
+[SALH559:SALH5]
+~w~Maintenant, finissons-en !
-[POR1_05:PORN1]
-Et comment! Mais faut causer à mon agent...
+[SALH526:SALH5]
+~w~Je conduis et toi, tu nous couvres !
-[POR1_06:PORN1]
-Putain qu'est-ce que tu fous?
+[SALH527:SALH5]
+~w~OK, Toni... On y est.
-[POR1_07:PORN1]
-Tu aurais mieux fait de rester à la maison, aujourd'hui!
+[SALH528:SALH5]
+~w~Ils sont combien ces bâtards sur ce rocher ?
-[POR1_7B:PORN1]
-J'arrive pas à croire ce trou du cul!
+[SALH553:SALH5]
+~w~Tu butes un de ces enfoirés et t'en as direct un autre sur le dos !
-[POR1_08:PORN1]
-Salut, Mercedes!
+[SALH523:SALH5]
+~r~T'as laissé Salvatore se faire buter par les Siciliens !
-[POR1_09:PORN1]
-Salut, Tommy! Tu viens faire la fête?
+[SALH524:SALH5]
+~r~Salvatore a été tué !
-[POR1_10:PORN1]
-Non, pas maintenant, chérie. Ca te dirait de faire du cinéma?
+[SALH552:SALH5]
+~r~Le maire a été tué !
-[POR1_11:PORN1]
-Evidemment! Mais seulement si c'est sordide et bon marché!
+[SALH573:SALH5]
+~r~T'as bousillé ton bateau ! Tu les as perdus !
-[POR1_13:PORN1]
-~g~Emmène les filles au studio y retrouver Steve.
+[SALH516:SALH5]
+~w~Liquide les gardes et suivons-les dans ce bateau !
-[POR1_14:PORN1]
-T'es engagé!
+[SALH518:SALH5]
+~w~Un autre ~r~bateau~w~ arrive...
-[POR1_15:PORN1]
-Hé tommy, tu viens pour un bout d'essai?
+[SALH525:SALH5]
+~w~Ha ! Ils ont laissé un lance-roquettes ici !
-[POR1_17:PORN1]
-Waou! Sympa le requin!
+[SALH520:SALH5]
+~y~Je vais me rapprocher de la rive pour plus de protection ! Descends-le !
-[POR1_18:PORN1]
-~r~Mercedes est morte!
+[SALH521:SALH5]
+~w~Bien joué ! En route !
-[POR1_20:PORN1]
-Tommy! Où tu vas? Reviens ici!
+[SALH53A:SALH5]
+~w~Torini... J'aurais dû m'en douter...
-[POR1_21:PORN1]
-Où tu vas?
+[SALH53B:SALH5]
+~w~Lâche-le !
-[POR1_22:PORN1]
-Tommy, quand c'est qu'on va pouvoir être un peu seuls ensemble?
+[SALH53C:SALH5]
+~w~Le maire est à moi !
-[POR1_01:PORN1]
-~g~Candy Suxxx serait parfaite pour un premier rôle!
+[SALH53D:SALH5]
+~w~Cette VILLE est à moi !
-[POR1_12:PORN1]
-~g~Emmène Candy avec toi pour rencontrer Mercedes.
+[SALH53E:SALH5]
+~w~Salvatore...
-[POR1_16:PORN1]
-Plus tard, peut-être, mon chou...
+[SALH53F:SALH5]
+~w~Les Siciliens voulaient pas questo schifo di citta.
-[POR1_24:PORN1]
-~g~Retourne chercher Candy.
+[SALH53G:SALH5]
+~w~Mais les tributs ont diminué, qu'est-ce qu'on pouvait faire...?
-[POR1_25:PORN1]
-~g~Tu as laissé Candy. Retourne la chercher!
+[SALH53H:SALH5]
+~w~Y avait rien de personnel...
-[POR1_23:PORN1]
-~g~Candy va s'occuper de l'affaire dans le ~h~Centre~g~.
+[SALH53I:SALH5]
+~w~Rien de personnel ?
-[POR1_26:PORN1]
-~g~Voilà Candy. On dirait qu'elle a encore eu rendez-vous avec le représentant du Congrès, Alex Shrub.
+[SALH53J:SALH5]
+~w~Après tout ce que j'ai subi !?
-[POR1_27:PORN1]
-Allez, partons d'ici!
+[SALH53K:SALH5]
+~w~J'vais t'arracher le coeur !
-[POR1_28:PORN1]
-Tommy, sois prudent! Mes implants ne sont pas encore assurés!
+[SALH5TD:SALH5]
+~w~Descends l'~r~hélicoptère de Massimo !
-[POR1_29:PORN1]
-Tu appelles ça conduire?
+[SALH5MO:SALH5]
+~r~Massimo~w~ se barre !
-[POR1_30:PORN1]
-Je pourrais plus faire du porno après ça!
+[SALH5GO:SALH5]
+~r~Massimo s'est tiré !
-[POR1_31:PORN1]
-Quoi? T'essaies de me tuer ou quoi? Je croyais que c'était moi, la star!
+[SALH571:SALH5]
+~w~Va à la ~y~jetée.
-{=================================== MISSION TABLE PORN2 ===================================}
+[SALH570:SALH5]
+~w~Descends ces ~r~gangsters siciliens !
-[POR2_A:PORN2]
-Comment ça se passe, Steve?
+[SALH572:SALH5]
+~w~Descends ce ~r~Sicilien !
-[POR2_B:PORN2]
-Eh ben, Candy est faite pour le rôle et la nouvelle fille est infatigable!
+[SALH510:SALH5]
+~w~Va à la ~y~mairie~w~. Et fais gaffe aux Siciliens que tu pourrais croiser !
-[POR2_C:PORN2]
-Elle s'est tapé la moitié du casting et des techniciens avant même que j'ai fini de régler les éclairages!
+[SICI_01:SALH5]
+Non, on en parlera plus tard...
-[POR2_D:PORN2]
-Enfin, demain, on va en extérieurs pour tourner les scènes du bateau...
+[SICI_04:SALH5]
+On est tous les deux de retour ! Toi et moi !
-[POR2_E:PORN2]
-Les scènes du bateau? Quelles scènes du bateau?
+[SICI_05:SALH5]
+On a réussi, pas vrai ?
-[POR2_F:PORN2]
-Les pêcheurs sont dans les filets de la passion quand ce requin géant arrive...
+[SICI_06:SALH5]
+Comme tu dis !
-[POR2_G:PORN2]
-Qu'est-ce que j'avais dit à propos du requin géant?
+[SICI_07:SALH5]
+On a nettoyé les Forelli.
-[POR2_H:PORN2]
-J'avais dit : PAS DE REQUIN GEANT! Ok?
+[SICI_08:SALH5]
+On a balancé les Sindacco à la baille.
-[POR2_I:PORN2]
-Laisse simplement les caméras braquées sur le pieu!
+[SICI_09:SALH5]
+Et là, j'ai les Siciliens au téléphone qui veulent faire la paix.
-[POR2_J:PORN2]
-Ok ok, Tommy, j'avais bien le droit d'essayer...
+[SICI_10:SALH5]
+On veut tous la paix ! Mais la mienne de paix, pas leur putain de paix à eux !
-[POR2_K:PORN2]
-Les prospectus sont imprimés?
+[SICI_11:SALH5]
+C'est moi le caïd, maintenant.
-[POR2_L:PORN2]
-Ouais, mais personne va nous laisser distribuer ces trucs, je veux dire...
+[SICI_12:SALH5]
+Et c'est pas un connard de Sicilien qui va me dire quoi faire.
-[POR2_M:PORN2]
-Ils sont un peu trop, hum, enfin, ils manquent un peu de poésie...
+[SICI_13:SALH5]
+J'leur ai dit d'aller se faire mettre.
-[POR2_N:PORN2]
-T'en fais pas pour ça!
+[SICI_14:SALH5]
+Vous avez fait ça ? Vous êtes sûr de votre coup ?
-[POR2_O:PORN2]
-J'ai mes propres plans pour la distribution...
+[SICI_15:SALH5]
+Hé, c'est moi le boss, maintenant. MOI !
-[POR2_P:PORN2]
-OK. Hé, Candy, amène-toi dans ma caravane!
+[SICI_16:SALH5]
+Allez, on va voir le maire pour l'abandon des charges contre moi...
-[POR2_01:PORN2]
-~g~Il y a un hydravion à l'arrière des studios qui servait pour la propagande des vieux films.
+[FIN1_01:SALH5]
+Hé ! M'sieur le maire !
-[POR2_02:PORN2]
-~g~Atteins l'un des points de contrôle pour commencer à larguer les prospectus.
+[FIN1_03:SALH5]
+Ouais, merci.
-[POR2_03:PORN2]
-~g~Largue les prospectus tout le long du chemin jusqu'au dernier point de contrôle.
+[FIN1_04:SALH5]
+Ce qui implique...
-[POR2_04:PORN2]
-~r~NIVEAU DE CARBURANT BAS!
+[FIN1_05:SALH5]
+Euh... que la ville vous est reconnaissante ?
-[POR2_05:PORN2]
-Utilise-le pour distribuer les prospectus dans la ville.
+[FIN1_06:SALH5]
+Essayez encore.
-[DILDO:PORN2]
-Kérosène :
+[FIN1_07:SALH5]
+Que vous travaillez pour moi ?
-[POR2_Q:PORN2]
-Oh, merde!
+[FIN1_08:SALH5]
+Ah, oui, que je travaille pour vous.
-[PORN2_9:PORN2]
-~g~Il te reste ~1~ secondes pour retourner à une Skimmer avant la fin de la mission.
+[FIN1_09:SALH5]
+Bene. N'appelez pas. On vous contactera.
-{=================================== MISSION TABLE PORN3 ===================================}
+[FIN1_10:SALH5]
+Maintenant, du balai, connard.
-[POR3_A:PORN3]
-Bon, c'est quoi le problème, maintenant?
+[FIN1_11:SALH5]
+Merci, M. Leone.
-[POR3_B:PORN3]
-Chuuuut!
+[FIN1_12:SALH5]
+Toni. On a réussi. On est aux commandes. Toi et moi.
-[POR3_C:PORN3]
-Eh bien, après l'intime rencontre avec les envahisseuses nymphomanes,
+[FIN1_13:SALH5]
+On fait une sacrée équipe, hein ?
-[POR3_D:PORN3]
-notre jeune héros se retrouve incapable de penser à autre chose que cette énorme montagne phallique
+[FIN1_14:SALH5]
+Bon, j'ai juste besoin que tu fasses un petit truc pour moi...
-[POR3_E:PORN3]
-et c'est là qu'on veut placer la scène avec la cuve de purée de patates, mais alors on...
+[FIN1_15:SALH5]
+J'ai quelques problèmes à régler...
-[POR3_F:PORN3]
-Ces conneries m'intéressent pas!
+[FIN2_01:SALH5]
+Salut, zio ! Comment va ?
-[POR3_G:PORN3]
-Continuez simplement le boulot, continuez...
+[FIN2_02:SALH5]
+T'as l'air en forme.
-[POR3_H:PORN3]
-Hé, Tommy...
+[FIN2_03:SALH5]
+Ahhhh Salvatore, nous ne souhaitons que la clarté.
-[POR3_I:PORN3]
-T'as évoqué un problème légal au téléphone...
+[FIN2_04:SALH5]
+Oui, zio, j'apprécie.
-[POR3_J:PORN3]
-Ah ouais! Le représentant du Congrès Alex Shrub a pris le train électoral en marche à la pêche des votes puritains...
+[FIN2_07:SALH5]
+Bene, bene.
-[POR3_K:PORN3]
-La rumeur laisse entendre qu'il soutient des mesures de restriction contre...
+[FIN2_08:SALH5]
+Petit bâtard sournois...
-[POR3_L:PORN3]
-Disons... les formes les plus charnelles de la grande industrie cinématographique de ce pays.
+[FIN2_09:SALH5]
+Impossible de faire confiance à ce mec.
-[POR3_M:PORN3]
-Super.
+[FIN2_23:SALH5]
+On ne sait jamais ce qui peut arriver...
-[POR3_N:PORN3]
-Candy! Tu connais Shrub.
+[FIN2_10:SALH5]
+Ouais, mais on a réussi.
-[POR3_O:PORN3]
-Vous faites des trucs bizarres tous les deux?
+[FIN2_11:SALH5]
+Ouais, on a tout nettoyé. T'as fait du bon boulot, Toni. Bien joué !
-[POR3_P:PORN3]
-Oh oui! Oui! Oh oui! Oui oui oui ouuuuuuuuuuuuuuuuuui!
+[FIN2_12:SALH5]
+J'ai toujours su que t'étais un gars bien. Tu m'as sauvé la peau plusieurs fois.
-[POR3_Q:PORN3]
-Dis-moi que t'as eu ça...
+[FIN2_13:SALH5]
+Et c'est le genre de loyauté que j'apprécie.
-[POR3_R:PORN3]
-Est-ce que ça faisait partie du... euh... Ou bien elle parlait à...
+[FIN2_14:SALH5]
+Merci.
-[POR3_S:PORN3]
-Impossible à dire... Dans tous les cas...
+[FIN2_15:SALH5]
+Un bon travailleur. J'aime ça. Ca mérite le respect.
-[POR3_T:PORN3]
-Tu ferais mieux de la suivre après le tournage
+[FIN2_19:SALH5]
+Pour toi, l'amitié a un prix ?
-[POR3_U:PORN3]
-et voir si elle te mènera pas à leur nouveau nid d'amour.
+[FIN2_20:SALH5]
+C'est ça, l'amitié qui nous unit, toi et moi ?
-[POR3_V:PORN3]
-T'as un appareil photo?
+[FIN2_21:SALH5]
+Tu devrais avoir honte. Amène-toi.
-[POR3_X:PORN3]
-Hé, file-lui un appareil photo!
+[FIN2_22:SALH5]
+T'es un brave gars, mais tu devrais avoir honte...
-[POR3_02:PORN3]
-~r~Tu as tué le représentant du Congrès! T'auras du mal à le faire chanter, maintenant!
+[SICI_02:SALH5]
+- Hé, Toni ! ~n~ - Sal ! Vous êtes de retour à la maison !
-[POR3_03:PORN3]
-~r~Tu as alerté la sécurité du représentant du Congrès, ils vont le faire sortir tout de suite.
+[FIN2_05:SALH5]
+- Alors, es-tu en paix avec la Sicile ? ~n~ - Bien entendu. Moi et tous mes gars.
-[POR3_04:PORN3]
-Candy, tu peux m'appeler Martha?
+[FIN2_16:SALH5]
+- Et ce demi million que je t'avais promis. ~n~ - Demi ? Hé ! J'croyais... euh... Vous aviez pas dit deux millions ?
-[POR3_05:PORN3]
-Oh Alex, enfin, je veux dire Martha. Comme tu veux...
+[FIN2_18:SALH5]
+J'ai dit un million de dollars ! Et alors ?
-[POR3_06:PORN3]
-Martha, il y a quelqu'un qui regarde... C'est pervers...
+[FIN1_02:SALH5]
+On vient de vous sauver d'une bande de tarés de Siciliens.
-[POR3_07:PORN3]
-Vous là-bas, donnez-moi cet appareil photo!
+{=================================== MISSION TABLE DONH1 ===================================}
-[POR3_01:PORN3]
-~g~Suis la ~h~Stretch~g~ de Candy.
+[DONH1JA:DONH1]
+~w~Toni, mon ancien mentor, Avery Carrington, arrive en ville par avion aujourd'hui...
-[POR3_15:PORN3]
-~r~T'as bousillé la Stretch de Candy!
+[DONH1JB:DONH1]
+~w~J'ai appris qu'il travaille pour la Panlantic Corporation.
-[POR3_17:PORN3]
-~g~Retourne aux Porn Studios avec la pellicule.
+[DONH1JC:DONH1]
+~w~Ils ne reculent devant rien pour acquérir de belles propriétés.
-[POR3_19:PORN3]
-~r~T'es à court de pellicule!
+[DONH1JD:DONH1]
+~w~Nous devons en apprendre plus sur leurs projets immobiliers.
-[POR3_21:PORN3]
-~g~T'as perdu la Stretch de Candy!
+[DONH1JE:DONH1]
+~w~Allez, Toni ! Suis-le !
-[POR3_22:PORN3]
-~g~Le WK Chariot Hotel de l'autre côté de ce balcon devrait être idéal, comme point de vue.
+[DONH1CA:DONH1]
+~w~Euh, Toni, un moyen de transport serait une aubaine.
-[POR3_23:PORN3]
-~g~Il y a une porte latérale qui te permettra d'accéder à l'hôtel.
+[DONH1DA:DONH1]
+~w~Va vers l'aéroport, Toni.
-[POR3_08:PORN3]
-Appuie sur la~h~ ~k~~PED_LOCK_TARGET~ ~w~et maintiens-la enfoncée pour ~h~cadrer~w~ la photo.
+[DONH1DB:DONH1]
+~w~On n'a pas une minute à perdre.
-[POR3_09:PORN3]
-Appuie sur la~h~ ~k~~PED_LOCK_TARGET~ ~w~et maintiens-la enfoncée pour ~h~cadrer~w~ la photo.
+[DONH1EA:DONH1]
+~w~Oh oui, c'est un de mes plus beaux plans, sans aucun doute...
-[POR3_10:PORN3]
-Appuie sur la~h~ ~k~~PED_SNIPER_ZOOM_IN~ ~w~pour faire un ~h~zoom avant~w~ et sur la~h~ ~k~~PED_SNIPER_ZOOM_OUT~ ~w~pour faire un ~h~zoom arrière~w~.
+[DONH1EB:DONH1]
+~w~Je n'aurais jamais cru avoir ça en moi...
-[POR3_11:PORN3]
-Appuie sur la~h~ ~k~~PED_SNIPER_ZOOM_IN~ ~w~pour faire un ~h~zoom avant~w~ et sur la~h~ ~k~~PED_SNIPER_ZOOM_OUT~ ~w~pour faire un ~h~zoom arrière~w~.
+[DONH1EC:DONH1]
+~w~Voilà qui va faire ma fortune...
-[POR3_12:PORN3]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour prendre une photo.
+[DONH1ED:DONH1]
+~w~Ouais, une vraie fortune...
-[POR3_13:PORN3]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour prendre une photo.
+[DONH1EE:DONH1]
+~w~Même Avery serait fier de moi.
-[POR3_14:PORN3]
-Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour prendre une photo.
+[DONH1GA:DONH1]
+~w~Le voilà !
-[POR3_20:PORN3]
-~g~Si tu as besoin de te déplacer, utilise la ~h~Sparrow~g~ garée derrière.
+[DONH1GB:DONH1]
+~w~Tue-le, Toni !
-[POR3_16:PORN3]
-~g~Il te faut trois bons clichés d'Alex Shrub avec Candy pour le faire chanter.
+[DONH1GC:DONH1]
+~w~Il me faut ces plans !
-[POR3_24:PORN3]
-PHOTOS PRISES :
+[DONH1HA:DONH1]
+~w~Vite, Toni... Il s'échappe !
-{=================================== MISSION TABLE PORN4 ===================================}
+[DONH1IA:DONH1]
+~w~Vite, c'est capital, Toni ! C-A-P-I-T-A-L !
-[POR4_A:PORN4]
-Je suis désolée, mais je ne peux pas avaler maintenant!
+[DONH1IB:DONH1]
+~w~Maintenant, allons mettre ça à l'abri, dans mon... hum... domicile.
-[POR4_B:PORN4]
-Oh, ALLEZ! Chérie!
+[DONH1O0:DONH1]
+~w~Conduis Donald Love à ~y~l'aéroport.
-[POR4_C:PORN4]
-Il décharge comme une baleine, par pitié
+[DONH1O1:DONH1]
+~w~Tue ~r~Avery Carrington~w~ et prends ses plans !
-[POR4_D:PORN4]
-comment tu fais pour ne pas saisir le rôle?
+[DONH1O2:DONH1]
+~r~Avery~w~ tente de filer ! Arrête-le !
-[POR4_E:PORN4]
-Mais Stevie...
+[DONH1O3:DONH1]
+~r~Avery~w~ a une autre caisse. Ne le laisse pas se barrer !
-[POR4_F:PORN4]
-Comment va mon réalisateur vedette?
+[DONH1O4:DONH1]
+~r~Avery~w~ essaie de se tirer ! Stoppe-le !
-[POR4_G:PORN4]
-Ah, mon pote, la lutte incessante entre l'intégrité artistique et
+[DONH1O5:DONH1]
+~w~Embarque ~b~Donald Love.
-[POR4_H:PORN4]
-l'éjaculation sous toutes ses formes est loin d'être terminée.
+[DONH1O6:DONH1]
+~w~Bien joué ! Récupère les ~g~plans.
-[POR4_I:PORN4]
-Et avant que tu me poses la question, je t'informe que les quatre vidéos sortiront dans les...
+[DONH1O7:DONH1]
+~w~Ramène Donald et les plans à ~y~l'asile de nuit.
-[POR4_J:PORN4]
-Chérie, veux-tu garder l'anaconda dans le champ, S'IL TE PLAIT.
+[DONH1O8:DONH1]
+~w~T'as laissé tomber les ~g~plans~w~! Retourne les chercher.
-[POR4_K:PORN4]
-Il prend plus de l'heure que toi!
+[DONH1OA:DONH1]
+~w~Ils t'ont repéré ! ~r~Avery~w~ essaie de s'enfuir ! Bute-le !
-[POR4_L:PORN4]
-Oh, pardon, Steve...
+[DONH1OB:DONH1]
+~w~T'as besoin d'un véhicule.
-[POR4_M:PORN4]
-Je me disais, faudrait monter un gros coup de pub pour la promo du film.
+[DONH1OC:DONH1]
+~w~Ne perds pas ~b~Donald !
-[POR4_N:PORN4]
-Un truc qui aurait vraiment de l'impact sur la ville... T'as pas une idée?
+[DONH1OD:DONH1]
+~w~Fais gaffe ! Les plans seront perdus si tu détruis la ~r~caisse d'Avery~w~ en même temps que lui !
-[POR4_O:PORN4]
-Eh ben, autrefois, on faisait des galas,
+[DONH1OE:DONH1]
+~r~Avery Carrington~w~ s'échappe. Rattrape-le !
-[POR4_P:PORN4]
-avec des vedettes, des limousines, la nuit éclairée par les projos...
+[DONH1F0:DONH1]
+~r~Les plans ont été détruits !
-[POR4_Q:PORN4]
-Des projecteurs? J'ai une idée!
+[DONH1F1:DONH1]
+~r~Avery Carrington s'est tiré !
-[POR4_R:PORN4]
-...Ouais, ouais, ouais! Le petit numéro de paillettes, les limousines, ah, les premières!
+[DONH1F2:DONH1]
+~r~Donald a été tué !
-[POR4_S:PORN4]
-Oh oui, chère madaaaame, bien sûr, chère madaaaame...
+[DONH1OF:DONH1]
+~r~Avery Carrington~w~ est presque arrivé à destination. Arrête-le !
-[POR4_T:PORN4]
-et la presse, et le barrage de lumières...
+[DONH1O9:DONH1]
+~w~N'abandonne pas ~b~Donald~w~ ! Ces Colombiens vont le tuer !
-[POR4_01:PORN4]
-~g~Va dans le ~y~Centre~g~ et ajuste le projecteur sur le toit du bâtiment.
+[DONH1FA:DONH1]
+~w~Hum... Panlantic a dû recruter le Cartel pour protéger Avery.
-[POR4_02:PORN4]
-~g~Une bécane rapide est nécessaire pour sauter de toit en toit. L'agent de sécurité a l'habitude de venir en ~y~PCJ 600~g~ au boulot...
+[LAND_01:DONH1]
+Je sais ce que tu penses, Toni... Comment j'ai pu en arriver là ?
-[POR4_03:PORN4]
-~g~Faut que tu montes sur les toits. Il devrait y avoir un ascenceur dans l'un des immeubles de bureaux.
+[LAND_02:DONH1]
+Mais c'est juste un faux pas... momentané...
-[POR4_06:PORN4]
-~g~Retourne à l'immeuble de bureaux du bas si tu as besoin d'accéder à nouveau au toit.
+[LAND_03:DONH1]
+OK.
+
+[LAND_04:DONH1]
+Oh, sois pas si susceptible.
+
+[LAND_05:DONH1]
+Je sais que j'ai pas été très sympa en disant que c'était ta faute,
+
+[LAND_06:DONH1]
+mais l'orgueil est un sentiment qui mine... comme les termites.
+
+[LAND_07:DONH1]
+Crois-moi, j'ai essayé les deux, récemment.
+
+[LAND_08:DONH1]
+Sois patient, on n'a pas dit notre dernier mot !
+
+[LAND_09:DONH1]
+Je me suis pas barré...
+
+[LAND_10:DONH1]
+On est ensemble sur ce coup, amigo.
+
+[LAND_11:DONH1]
+Non, c'est des conneries.
+
+[LAND_12:DONH1]
+S'il te plaît !
+
+[LAND_13:DONH1]
+S'il te plaît... S'il te plaît... Laisse tomber, mon pote.
+
+[LAND_18:DONH1]
+Viens, je t'en dirai plus en chemin.
+
+[LAND_19:DONH1]
+J'espère que t'as ta caisse. La mienne est... hum... au garage !
+
+[LAND_16:DONH1]
+- 10 % de quoi ? Ca ? Oh, t'es trop généreux. ~n~ - Pas de ça... de la grosse galette.
+
+[LAND_14:DONH1]
+- 'C'est entièrement ta faute.' Pathétique. ~n~ - 10 % ?
+
+{=================================== MISSION TABLE DONH2 ===================================}
+
+[DONH2_1:DONH2]
+~w~Va à ~y~l'église~w~ de Staunton Island.
+
+[DONH2_2:DONH2]
+~w~Frappe le ~r~journaliste ~w~ou menace-le avec un flingue pour lui extorquer les photos.
+
+[DONH2_3:DONH2]
+~w~T'as des photos de moi. Où elles sont ?
+
+[DONH2_4:DONH2]
+~w~Ne me faites pas de mal !
+
+[DONH2_5:DONH2]
+~w~Où sont ces putains de photos ?
+
+[DONH2_6:DONH2]
+~w~Je ne sais pas de quoi vous parlez !
+
+[DONH2_7:DONH2]
+~w~Où elles sont ?
+
+[DONH2_8:DONH2]
+~w~Non, je vous en prie !
+
+[DONH2_9:DONH2]
+~w~Allez, pauvre naze, file-les-moi !
+
+[DONH210:DONH2]
+~w~OK ! OK !
+
+[DONH2EX:DONH2]
+~w~Je vais vous donner les photos !
+
+[DONH211:DONH2]
+~w~... J'ai caché le film dans mon box !
+
+[DONH212:DONH2]
+~w~Va au ~y~box du journaliste.
+
+[DONH213:DONH2]
+~w~Au secours ! On m'enlève !
+
+[DONH214:DONH2]
+~w~Au secours ! Il va me tuer !
+
+[DONH215:DONH2]
+~w~... Je suis trop doué pour mourir !
+
+[DONH216:DONH2]
+~w~... Je peux pas mourir, j'ai pas fini mon roman !
+
+[DONH217:DONH2]
+~w~Mon éditeur ne m'avait rien dit de cette merde !
+
+[DONH218:DONH2]
+~w~Bouge pas d'un pouce, connard !
+
+[DONH219:DONH2]
+~w~Arrête-toi là, tête de con !
+
+[DONH220:DONH2]
+~w~Non mais tu vas arrêter d'essayer de te barrer ! ?
+
+[DONH221:DONH2]
+~w~Toni ! Enfin !
+
+[DONH222:DONH2]
+~w~Un journaliste nous a vus buter Avery !
+
+[DONH223:DONH2]
+~w~Il a pris des photos ! Putain, je suis fini !
+
+[DONH224:DONH2]
+~w~Du calme ! Il est où ce journaliste ?
+
+[DONH225:DONH2]
+~w~Oh, Toni, tu es formidable !
+
+[DONH226:DONH2]
+~w~Apparemment, il est en reportage sous couverture à l'église de Staunton Island.
+
+[DONH227:DONH2]
+~w~Récupère les photos et enterre-le !
+
+[DONH228:DONH2]
+~r~Ned a filé !
+
+[DONH230:DONH2]
+~w~Tue ~r~Ned Burner.
+
+[DONH231:DONH2]
+~r~Ned est mort avant de te donner les photos !
+
+[DONH229:DONH2]
+CONNERIES
+
+[DONCUTA:DONH2]
+~w~Les voilà... Prenez-les ! Je les ai pas encore tirées.
+
+[DONCUTB:DONH2]
+~w~Sale petite merde !
+
+[DONH2SM:DONH2]
+Trouillomètre
+
+[DONH233:DONH2]
+Continue à intimider le journaliste. Si son trouillomètre diminue trop, il essaiera de filer.
+
+[DONH2LB:DONH2]
+~w~T'as laissé le ~b~journaliste ~w~derrière toi. Retourne le chercher.
+
+[DONH2LC:DONH2]
+~r~T'as perdu le journaliste.
+
+{=================================== MISSION TABLE DONH3 ===================================}
+
+[DONH3I1:DONH3]
+~w~Je suis de retour !
+
+[DONH3I2:DONH3]
+~w~Revenu d'entre les morts, Toni ! Ressuscité, comme le phoenix de ses cendres !
+
+[DONH3I3:DONH3]
+~w~Comme Lazare... oui... Lazare Love !
+
+[DONH3I4:DONH3]
+~w~Ah, je vais redevenir riche !
+
+[DONH3I5:DONH3]
+~w~Panlantic va me payer une fortune pour conclure l'affaire !
+
+[DONH3I6:DONH3]
+~w~On a réussi, Toni !
+
+[DONH3I7:DONH3]
+~w~Mouais...
+
+[DONH3I8:DONH3]
+~w~L'heure est venue de faire une petite fête avec une liste d'invités exclusifs.
+
+[DONH3I9:DONH3]
+~w~Viens !
+
+[DONH3C1:DONH3]
+~w~Il nous faut un moyen de transport, Toni. On a pas beaucoup de temps.
+
+[DONH3L1:DONH3]
+~w~T'as besoin de ~b~Donald~w~. Retourne le chercher !
+
+[DONH3L2:DONH3]
+~w~Allez, Toni ! Le temps presse !
+
+[DONH3L3:DONH3]
+~w~Ramène le cadavre !
-[POR4_07:PORN4]
-~g~Tu as besoin d'une bécane pour sauter de bâtiment en bâtiment!
+[DONH3_5:DONH3]
+~w~Toni, je meurs d'envie de faire la fête.
-[POR4_08:PORN4]
-~g~Fonce à travers la fenêtre pour commencer. Tu as jusqu'à 07:00 avant que la lumière du jour ne risque de te faire découvrir.
+[DONH35D:DONH3]
+~w~Tout comme mes invités.
-[POR4_09:PORN4]
-~g~Les marqueurs t'indiquent sur quel bâtiment sauter ensuite.
+[DONH35A:DONH3]
+~w~Trouve un ~b~cadavre.
-[POR4_10:PORN4]
-~r~Il fait maintenant trop clair pour monter sans te faire voir.
+[DONH35B:DONH3]
+~w~Récupère le ~b~cadavre d'Avery.
-[POR4_11:PORN4]
-Retourne à l'escalier si tu as à nouveau besoin d'accéder au toit.
+[DONH35C:DONH3]
+~w~Récupère le ~b~cadavre de Ned.
-[POR4_05:PORN4]
-~g~Ces escaliers mènent à un bureau.
+[DONH3_6:DONH3]
+~w~Conduis Donald et Avery à ~y~l'aéroport.
-[POR_AS1:PORN4]
-STUDIO DE CINEMA OK
+[DONH36A:DONH3]
+~w~Hé ! Ramenez cette ambulance !
-[POR_AS2:PORN4]
-~g~Inter Global Films génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[DONH36B:DONH3]
+~w~Avery.
-{=================================== MISSION TABLE PROT1 ===================================}
+[DONH36C:DONH3]
+~w~Oh, Avery ! T'as pris de la bouteille depuis notre dernière rencontre.
-[PRO1_B:PROT1]
-Je supporte pas ce style. Tommy, qu'est-ce que t'en penses? Qu'est-ce que tu dirais qu'on mette un bar dans...
+[DONH36D:DONH3]
+~w~... toi qui aimais tant m'abreuver des gouttes de ta sagesse...
-[PRO1_D:PROT1]
-Ecoutez-moi...
+[DONH36E:DONH3]
+~w~... je vais enfin pouvoir boire à ma soif !
-[PRO1_E:PROT1]
-L'heure est venue de mettre la main sur cette ville! Le monde n'attend plus que nous!
+[DONH36F:DONH3]
+~w~... Bon Dieu ! Il porte une perruque !
-[PRO1_F:PROT1]
-Faut qu'on commence à s'emparer de territoires!
+[DONH36G:DONH3]
+~w~Toni ! Conduis-nous, Avery et moi, à son jet privé à l'aéroport.
-[PRO1_G:PROT1]
-Faut qu'on fasse comprendre à tout Vice City qu'on est les nouveaux maîtres du jeu! Tu vois ce que je veux dire?
+[DONH3_7:DONH3]
+~w~Conduis Donald et Ned à l'~y~aéroport.
-[PRO1_I:PROT1]
-Ce qu'il te faut, c'est une façade légale, Tommy! Une affaire officielle! Ca m'a jamais rapporté d'emmerdes!
+[DONH37F:DONH3]
+~w~Toni ! Conduis-nous, Ned et moi, à l'aéroport.
-[PRO1_J:PROT1]
-Faut qu'on commence à utiliser des balaises ou autant faire une croix sur tout le boulot qu'on s'est tapé jusque là.
+[DONH37A:DONH3]
+~w~Hé ! Ce mec vole le cadavre !
-[PRO1_K:PROT1]
-Les commerces locaux savent que Diaz est mort et ils refusent de payer pour leur protection!
+[DONH37B:DONH3]
+~w~Ah, Ned Burner, le grand journaliste.
-[PRO1_L:PROT1]
-Ah. On pourrait essayer la corruption...
+[DONH37C:DONH3]
+~w~Ah, Ned... Je souhaite t'accorder l'exclusivité pour
-[PRO1_M:PROT1]
-La corruption! Mon cul, la corruption! Je vais vous montrer comment on leur fait peur!
+[DONH37D:DONH3]
+~w~le reportage sur ma super fête.
-[PRO1_01:PROT1]
-~g~Défoule-toi sur les devantures des magasins et les proprios supplieront pour être protégés.
+[DONH37E:DONH3]
+~w~Tu sais que je n'inviterais pas n'importe qui à ma petite sauterie.
-[PRO1_03:PROT1]
-~r~C'était supposé être un raid éclair, pas une pause café.
+[DONH37G:DONH3]
+~w~Y en a qui seraient prêts à mourir pour être invités.
-[PRO1_04:PROT1]
-Mon gagne-pain est détruit!
+[DONH3_8:DONH3]
+~w~Conduis le cadavre d'Avery à l'~y~aéroport.
-[PRO1_05:PROT1]
-Tout est en ruines!
+[DONH3_9:DONH3]
+~w~Conduis le cadavre de Ned à l'~y~aéroport.
-[PRO1_06:PROT1]
-Je paye le prix fort pour ma protection!
+[DONH3A1:DONH3]
+~w~Ramène les vieux restes pourris et puants d'Avery ici, avant que la sécurité nous découvre.
-[PRO1_07:PROT1]
-Ma belle vitrine!
+[DONH3A2:DONH3]
+~w~Son autopsie est imminente.
-[PRO1_08:PROT1]
-Mon magasin! Mon beau magasin!
+[DONH3N1:DONH3]
+~w~Débrouille-toi pour amener le cadavre de Ned Burner ici, avant que la sécurité nous découvre. Ils vont bientôt l'enterrer.
-[PRO1_09:PROT1]
-Vercetti. Souvenez-vous de mon nom...
+[DONH3F1:DONH3]
+~r~Love est mort.
-[PRO1_10:PROT1]
-Je règne désormais sur cette ville. MOI!
+[DONH3F2:DONH3]
+~r~Tu as perdu le corps d'Avery !
-[BUYP1:PROT1]
-Tu peux désormais acheter des propriétés dans certaines zones de la carte.
+[DONH3F3:DONH3]
+~r~Tu as perdu le corps de Ned !
-[BUYP2:PROT1]
-Si tu vois un marqueur vert sur une propriété, c'est que tu peux l'acheter.
+[DONH3C2:DONH3]
+~w~La sécurité de l'aéroport fermera le hangar d'Avery Carrington à 22:00.
-[PRO1_N:PROT1]
-Je reviens dans cinq minutes...
+[DONH3F4:DONH3]
+~r~Trop tard ! La sécurité de l'aéroport a fermé le hangar !
-[PRO1_11:PROT1]
-~g~Va au ~y~Centre commercial de North Point~g~ dans ~y~Vice Point~g~.
+[DONH3F5:DONH3]
+~r~Trop tard ! La sécurité de l'aéroport a trouvé Donald et le cadavre d'Avery !
-[PRO1_12:PROT1]
-~g~Brise les vitrines de chaque magasin et les proprios supplieront pour une nouvelle protection.
+[DONH3W1:DONH3]
+~w~Vite ! La sécurité de l'aéroport fermera le hangar d'Avery Carrington à 22:00.
-[PRO1_A:PROT1]
-Ah, faut qu'on redécore cet endroit, faut qu'on lui donne un air plus vieux.
+[DONH3F6:DONH3]
+~r~Trop tard ! La sécurité de l'aéroport a trouvé Donald avec le cadavre de Ned !
-[PRO1_C:PROT1]
-T'es mon avocat, Rosenberg. Pas mon décorateur. Compris?
+{=================================== MISSION TABLE DONH4 ===================================}
-[BUYP3:PROT1]
-Tiens-toi sur le marqueur, puis appuie sur la touche ~h~~k~~PED_ANSWER_PHONE~~w~ pour acheter cette propriété.
+[DONH4A:DONH4]
+~w~Donald m'envoie chercher du... euh... matériel...
-[PRO1_13:PROT1]
-~g~Tu as cinq minutes pour tous les avoir.
+[DONH4B:DONH4]
+~w~OK.
-{=================================== MISSION TABLE PROT2 ===================================}
+[DON4EX1:DONH4]
+~w~J'ai ce qu'il vous faut, mais ça va vous coûter cher.
-[PRO2_A:PROT2]
-C'est quoi l'problème?
+[DON4EX2:DONH4]
+~w~Don a dit que t'allais me payer et qu'il te rembourserait ensuite.
-[PRO2_B:PROT2]
-Un bar refuse de payer.
+[DONH4C:DONH4]
+~w~Ben voyons...
-[PRO2_C:PROT2]
-Le boss considère qu'il est sous la protection d'un gang de voyous du coin...
+[DONH4D:DONH4]
+~w~Ouais, c'est ça, t'as qu'à le mettre à l'ordre de 'M. Va t'faire mettre' !
-[PRO2_D:PROT2]
-Mais t'en fais pas, Tommy, je peux m'en occuper.
+[DONH4E:DONH4]
+~w~Bon, où est le matos ?
-[PRO2_E:PROT2]
-C'est ça que t'appelles t'en occuper?
+[DONH4F:DONH4]
+~w~Hé, fiston, ce genre de matériel prend du temps à assembler !
-[PRO2_F:PROT2]
-Vous deux, levez vos culs de là...
+[DON4EX4:DONH4]
+~w~Je te tiens au courant.
-[PRO2_G:PROT2]
-Allons-y.
+[DONH4G:DONH4]
+Mission réussie !
-[PRO2_01:PROT2]
-~g~Liquide les gardes qui protègent le Front Page Bar et trouve qui les a approvisionnés.
+[DONH4PS:DONH4]
+~w~8-Ball te contactera lorsque le matériel sera prêt.
-[PRO2_10:PROT2]
-~g~Il y en a deux de plus qui se sont fait la malle. Finis-en avec eux.
+{=================================== MISSION TABLE DONH5 ===================================}
-[PRO2_11:PROT2]
-Montez dans la caisse, bons à rien.
+[DONH5_0:DONH5]
+Camionnette
-[PRO2_02:PROT2]
-Ta protection a besoin d'être légèrement renforcée.
+[DNH5_A0:DONH5]
+~w~Ecoute, cette camionnette est chargée à bloc. Tu vois ce que j'veux dire ? Alors, vas-y mollo.
-[PRO2_03:PROT2]
-Ah, non, pas encore! J'en ai marre!
+[DNH5_A1:DONH5]
+~w~Ouais ? Tout est OK.
-[PRO2_04:PROT2]
-Ces imbéciles opèrent dans le quartier à partir de DBP Security.
+[DNH5_A2:DONH5]
+~w~Ouais, j'vous le passe.
-[PRO2_05:PROT2]
-Réglez la question entre vous, les mecs.
+[DNH5_A3:DONH5]
+~w~Toni, on n'est qu'à un petit boulot de rien du tout d'une fabuleuse fortune.
-[PRO2_06:PROT2]
-Bon, à plus tard.
+[DNH5_A4:DONH5]
+~w~On a épluché les plans de Fort Staunton. Ses points faibles se trouvent le long du vieux métro qui passe sous le secteur.
-[PRO2_07:PROT2]
-Ouais, ouais, c'est ça.
+[DNH5_A5:DONH5]
+~w~Super, Don ! Tout ce que j'ai à faire, c'est d'éviter une centaine de cinglés d'Italiens.
-[PRO2_08:PROT2]
-~g~Les abrutis du DBP Security sauront que t'y vas, alors fonce et chope-les avant qu'ils décampent!
+[DNH5_A6:DONH5]
+~w~Longe simplement Porter Tunnel et tout ira comme sur des roulettes.
-[PRO2_09:PROT2]
-~g~Va parler au proprio du Front Page Bar.
+[DNH5_B0:DONH5]
+~w~Hé, vous ! Vous avez rien à faire ici !
-{=================================== MISSION TABLE PROT3 ===================================}
+[DNH5_B1:DONH5]
+~w~Dégagez de là !
-[PRO3_A:PROT3]
-Pauvre crétin! A quoi tu pensais?
+[DNH5_C0:DONH5]
+~w~Monte dans la ~b~camionnette.
-[PRO3_B:PROT3]
-Tu réalise ce qui aurait pu arriver?
+[DNH5_C4:DONH5]
+~w~Pose les ~y~explosifs !
-[PRO3_C:PROT3]
-On a failli tous se faire avoir!
+[DNH5_C5:DONH5]
+~w~Pose les ~y~explosifs~w~ restants !
-[PRO3_D:PROT3]
-Le retardateur a dû déconner...
+[DNH5_C6:DONH5]
+~w~Tire-toi par la ~y~bouche du métro !
-[PRO3_E:PROT3]
-Cet endroit était prêt à sauter comme une usine de feux d'artifice.
+[DNH5_D0:DONH5]
+~w~Les Forelli ? Qu'est-ce qu'ils font ici ?
-[PRO3_F:PROT3]
-Et pis quelqu'un a rencardé les flics...
+[DNH5_D1:DONH5]
+~w~Ne laisse pas les Forelli détruire la camionnette !
-[PRO3_G:PROT3]
-C'est quoi le problème, les mecs?
+[DNH5_1:DONH5]
+~w~Utilise un véhicule pour défoncer les portes.
-[PRO3_H:PROT3]
-Mike devait foutre le feu quelque part dans le centre commercial,
+[DONH5_2:DONH5]
+~w~Vas-y plus fort !
-[PRO3_I:PROT3]
-mais il a foiré son coup et maintenant, les flics grouillent, là-bas.
+[DNH5_X0:DONH5]
+~r~T'as bousillé la camionnette !
-[PRO3_J:PROT3]
-Faut qu'on récupère notre bordel et qu'on s'tire de là!
+[DNH5_C1:DONH5]
+~w~Remonte dans la ~b~camionnette.
-[PRO3_K:PROT3]
-Du calme, vous deux, laissez-moi réfléchir une seconde!
+[DNH5_C2:DONH5]
+~w~Dirige-toi vers l'une des ~y~entrées du Porter Road Tunnel.
-[PRO3_L:PROT3]
-Tommy Vercetti a pas l'habitude de mettre les bouts comme ça...
+[DNH5_C3:DONH5]
+~w~Suis le ~y~tunnel.
-[PRO3_M:PROT3]
-Les flics vont passer ce bâtiment au peigne fin, pas vrai?
+[DNH5_E0:DONH5]
+~w~Tue ces ~r~ouvriers en bâtiment.
-[PRO3_N:PROT3]
-Mais ça prend du temps...
+[DNH5_E1:DONH5]
+~w~Tue cet ~r~ouvrier en bâtiment.
-[PRO3_O:PROT3]
-On va entrer et foutre le feu nous-mêmes!
+[DNH5_E2:DONH5]
+~w~Les Forelli ont bloqué le passage. Trouve une autre ~y~issue.
-[PRO3_P:PROT3]
-Ouais, mais...
+[DNH5_E3:DONH5]
+~w~Utilise un véhicule pour dégommer les portes et atteindre la ~y~sortie.
-[PRO3_Q:PROT3]
-Il y a que les flics qui peuvent approcher à moins d'un kilomètre de là-bas!
+[DNH5_X1:DONH5]
+~r~Les Forelli ont bousillé la camionnette !
-[PRO3_R:PROT3]
-Alors, on ira en tant que flics!
+[DNH5_W1:DONH5]
+~w~Ne t'éloigne pas trop de la ~b~camionnette !
-[PRO3_S:PROT3]
-On va se dégotter des uniformes et il nous faut aussi une bagnole de patrouille.
+[DNH5_E4:DONH5]
+~w~Ne laisse aucun ~r~témoin.
-[PRO3_T:PROT3]
-Tout ça à cause de toi, Mike.
+{=================================== MISSION TABLE DONH6 ===================================}
-[PRO3_U:PROT3]
-Je suis désolé.
+[DONH6_V:DONH6]
+~r~v1.00
-[PRO3_V:PROT3]
-J'ai trouvé!
+[DONH6_1:DONH6]
+~w~Va au ~y~manoir.
-[PRO3_W:PROT3]
-Tout ce qu'on a à faire, c'est appâter les flics avec un doigt levé,
+[DONH6_5:DONH6]
+~w~Oh, non ! Toni ! Fais quelque chose !
-[PRO3_X:PROT3]
-de les prendre au piège
+[DONH6_6:DONH6]
+~w~Il te reste ~1~ secondes pour retourner dans le parc !
-[PRO3_Y:PROT3]
-et de leur sauter dessus!
+[DONH6_7:DONH6]
+Temps de Retour
-[PRO3_Z:PROT3]
-Super plan! En route!
+[DONH6_8:DONH6]
+~r~T'as pas réussi à rentrer au manoir... Donald a été exécuté !
-[PRO3_A1:PROT3]
+[DONH610:DONH6]
+~w~Trouve une caisse !
+
+[DONH611:DONH6]
+~w~Oh non, en voilà d'autres !
+
+[DONH624:DONH6]
+~w~Fonce, Toni !
+
+[DONH612:DONH6]
+~w~On a réussi !
+
+[DONH623:DONH6]
+~w~Conduis-moi au jet d'Avery. Ned et lui sont toujours à bord, alors je voyagerai pas seul.
+
+[DONH622:DONH6]
+~w~Va au ~y~jet d'Avery.
+
+[DONH613:DONH6]
+~w~Allons à l'aéroport.
+
+[DONH625:DONH6]
+~w~Fonce à ~y~l'aéroport.
+
+[DONH615:DONH6]
+~w~T'as abandonné ~b~Donald~w~ ! Retourne le chercher !
+
+[DONH619:DONH6]
+~r~Donald a été tué !
+
+[DONH6_9:DONH6]
+~w~Don ? Allez, en route !
+
+[DONH614:DONH6]
+~w~T'es sûr que c'est sans risque, Toni ?
+
+[DONH616:DONH6]
+~w~Oh... mon... JARDIN !
+
+[DOH616A:DONH6]
+~w~Tu as vu ce que tu as fait de mon beau jardin !?!
+
+[DONH617:DONH6]
+~w~Don... On contemple le paysage ou on dégage ? A vous de voir.
+
+[DONH618:DONH6]
+~w~Conduis-moi à l'aéroport !
+
+[DONH620:DONH6]
+~w~J'aime pas les 'au revoir', mon ami.
+
+[DOH620A:DONH6]
+~w~Disons-nous simplement 'adieu'.
+
+[DONH621:DONH6]
+~w~Don... Vous m'avez beaucoup appris.
+
+[DONH66S:DONH6]
+~w~Tu as ~1~ seconde pour retourner dans le parc !
+
+[DONH66A:DONH6]
+~w~Tue ces ~r~gangsters colombiens !
+
+[DONP_01:DONH6]
+Papillons... Pa... pillons... papi... non, ça va pas.
+
+[DONP_02:DONH6]
+Ohmmmmmmmm. Merde.
+
+[DONP_03:DONH6]
+C'est tellement... Oh, merde, si j'avais un truc froid pour me pelotonner tout contre,
+
+[DONP_06:DONH6]
+Antonio ! Oh, je cherche juste l'illumination spirituelle,
+
+[DONP_07:DONH6]
+si tu veux tout savoir, mais c'est pas pour aujourd'hui.
+
+[DONP_08:DONH6]
+Peut-être demain.
+
+[DONP_09:DONH6]
+Vous aviez l'air angoissé dans votre message.
+
+[DONP_10:DONH6]
+Angoissé ? Je médite... angoissé, moi ?
+
+[DONP_11:DONH6]
+Je ne fais qu'un avec l'univers. C'est impossible.
+
+[DONP_12:DONH6]
+Euh, bon, c'est vrai.
+
+[DONP_13:DONH6]
+Hum, y a une bande de Colombiens qui rapplique ici
+
+[DONP_14:DONH6]
+pour me descendre si je refuse de la fermer et de passer à la caisse.
+
+[DONP_15:DONH6]
+Oh, alors, j'comprends mieux pourquoi tous ces Colombiens traînent dehors.
+
+[DONP_16:DONH6]
+Oh merde ! Je t'en supplie, Antonio, tu dois m'aider à sortir d'ici !
+
+[DONP_17:DONH6]
+Je veux pas... S'il te plait ! Je veux pas mourir ! Je veux...
+
+[DONP_18:DONH6]
+L'univers et vous, vous êtes plus potes, c'est ça ?
+
+[DONP_19:DONH6]
+Merci, Toni ! Je te promets... T'auras pas à le regretter !
+
+[DONP_04:DONH6]
+- ce serait facile... ~n~ - Quoi d'neuf, Don ?
+
+{=================================== MISSION TABLE TOSH1 ===================================}
+
+[TOSH1AB:TOSH1]
+~w~Arrêtez-le !
+
+[TOSH1AC:TOSH1]
+~w~Chopez-le !
+
+[TOSH1AD:TOSH1]
+~w~Butez-le !
+
+[TOSH1AA:TOSH1]
+~w~Le voilà !
+
+[TOSH120:TOSH1]
+~w~Vole la ~b~cargaison d'armes~w~ des Yakuzas, à Bedford Point.
+
+[TOSH121:TOSH1]
+~w~Tu dois encore passer les ~r~gardes Yakuzas.
+
+[TOSH122:TOSH1]
+~w~Prends garde aux autres ~r~bateaux Yakuzas.
+
+[TOSH130:TOSH1]
+~w~Apporte les armes au ~y~contact de Toshiko.
+
+[TOSH131:TOSH1]
+~w~Retourne à la ~b~cargaison d'armes.
+
+[TOSH1BA:TOSH1]
+~w~C'est de la super artillerie qu'on a là, fiston !
+
+[TOSH1BB:TOSH1]
+~w~Tu sais, je fais tellement d'affaires sur ces docks que j'aurais dû m'installer ici,
+
+[TOSH1BC:TOSH1]
+~w~et pas à mi-chemin de cette saleté d'île !
+
+[TOSH1BD:TOSH1]
+~w~Bon, ben, c'était sympa !
+
+[TOSH1DB:TOSH1]
+~r~Les armes ont été détruites !
+
+[TOSH1PH:TOSH1]
+~w~Les Yakuzas garderont leur cargaison. Tu devras peut-être passer à l'armurerie de Phil Cassidy en chemin.
+
+[DEAD_01:TOSH1]
+Alors c'est ça, le dur à cuire ?
+
+[DEAD_02:TOSH1]
+Vous n'avez pas l'air si dur.
+
+[DEAD_03:TOSH1]
+... Merci.
+
+[DEAD_04:TOSH1]
+Savez-vous ce que c'est que de vivre sans amour, Toni-san ?
+
+[DEAD_05:TOSH1]
+C'est vivre avec la haine...
+
+[DEAD_06:TOSH1]
+Je vous crois sur parole.
+
+[DEAD_07:TOSH1]
+Mon voeu le plus cher est de détruire un homme, M. Cipriani.
+
+[DEAD_08:TOSH1]
+Le détruire... pas simplement le tuer...
+
+[DEAD_09:TOSH1]
+Je veux que lui et toute son organisation soient affaiblis et humiliés avant de mourir.
+
+[DEAD_10:TOSH1]
+Je veux qu'il souffre.
+
+[DEAD_11:TOSH1]
OK.
-[PRO3_01:PROT3]
-Ok Lance, attirons l'attention des flics!
+[DEAD_12:TOSH1]
+Cet homme que vous devez détruire est mon mari : Kazuki Kasen.
-[PRO3_02:PROT3]
-~g~Prends la bagnole des flics et va poser la bombe au Tarbrush Coffee Shop dans le centre commercial.
+[DEAD_13:TOSH1]
+Ne vous inquiétez pas.
-[PRO3_03:PROT3]
-~g~T'as laissé Lance derrière, va le récupérer!
+[DEAD_14:TOSH1]
+Vous serez généreusement récompensé pour vos services.
-[PRO3_04:PROT3]
-~g~Allons-y!
+[DEAD_15:TOSH1]
+Et si je refuse ?
-[PRO3_05:PROT3]
-~r~T'as buté Lance!
+[DEAD_16:TOSH1]
+Vous ne refuserez pas... Car sa mort vous est nécessaire...
-[PRO3_07:PROT3]
-~g~Tu as grillé ta couverture! Magne-toi de poser la bombe!
+[DEAD_17:TOSH1]
+En fait, vous lui avez déjà porté un sérieux coup, M. Cipriani.
-[PRO3_09:PROT3]
-Ligotons et bâillonnons-les!
+[DEAD_18:TOSH1]
+Mais il attend une autre livraison de munitions aujourd'hui.
-[PRO3_10:PROT3]
-Aaah! Il me va parfaitement!
+[DEAD_19:TOSH1]
+Je veux que vous lui voliez ces armes juste sous son stupide nez.
-[PRO3_11:PROT3]
-Mais quand même un peu serré au niveau des couilles...
+{=================================== MISSION TABLE TOSH2 ===================================}
-[PRO3_12:PROT3]
-Ah ouais? Le mien aussi, c'est pareil!
+[TOSH2AA:TOSH2]
+~w~Toni-san.
-[PRO3_13:PROT3]
-Du calme, mon pote! Les flics conduisent pas aussi mal!
+[TOSH2AL:TOSH2]
+~w~Vos actions ont rendu mon mari fou de rage.
-[PRO3_14:PROT3]
-Oublie pas... Faut sourire aux autres flics...
+[TOSH2AB:TOSH2]
+~w~Ses hommes et lui sont apparus tels qu'ils sont,
-[PRO3_15:PROT3]
-Salut officier. Bel insigne, bel insigne...
+[TOSH2AM:TOSH2]
+~w~une bande d'imbéciles.
-[PRO3_16:PROT3]
-Tout doux, Lance.
+[TOSH2AC:TOSH2]
+~w~J'adore faire plaisir. Quelle est la suite, princesse ?
-[PRO3_17:PROT3]
-Ok, les retardateurs sont programmés, 5 secondes et ça saute!
+[TOSH2AE:TOSH2]
+~w~Mon mari va transporter une grande quantité d'argent depuis son casino.
-[PRO3_18:PROT3]
-5 secondes? Putain faut dégager d'ici en vitesse!
+[TOSH2AF:TOSH2]
+~w~Je veux que vous détruisiez tout cet argent.
-[PRO3_19:PROT3]
-Maintenant, ils vont vraiment être fâchés...
+[TOSH2AG:TOSH2]
+~w~Je pourrais trouver un usage pour tout ce fric, poupée.
-[PRO3_20:PROT3]
-~g~Fais-toi suivre par deux flics dans le garage.
+[TOSH2AH:TOSH2]
+~w~Je veux que cet argent brûle dans la rue au vu de tous !
-[PRO3_21:PROT3]
-~g~Tu dois avoir un indice de recherche pour que les flics te suivent dans le piège.
+[TOSH2AI:TOSH2]
+~w~OK, OK... Quand est-ce que ce transfert doit avoir lieu ?
-[PRO3_22:PROT3]
-~g~La porte est bloquée! Dégage le passage pour qu'elle puisse être refermée.
+[TOSH2AJ:TOSH2]
+~w~Il a déjà commencé.
-[PRO3_23:PROT3]
-~g~Marche sur le marqueur pour poser la bombe.
+[TOSH2AK:TOSH2]
+~w~Ils sont en train de quitter le casino et vous n'avez pas beaucoup de temps.
-[PRO3_24:PROT3]
-~g~Tire-toi du café!
+[TOSH2O0:TOSH2]
+~w~Détruis TOUTES les ~r~camionnettes de sécurité~w~. Laisse personne atteindre le ~y~complexe des Yakuzas !
-[PRO_AS1:PROT3]
-PROTECTION OK
+[TOSH2O1:TOSH2]
+~w~Ils s'enfuient ! Ne laisse partir aucune ~r~camionnette !
-[PRO_AS2:PROT3]
-~g~Vercetti Estate génère désormais un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[TOSH2O2:TOSH2]
+~w~Tu les as alertés ! Ne laisse pas partir les ~r~camionnettes !
-[PRO3_08:PROT3]
-~g~ Retourne à ~h~Vercetti Estate~g~ sur ~h~Starfish Island~g~.
+[TOSH2E1:TOSH2]
+~w~Le ~r~convoi~w~ approche du ~y~complexe des Yakuzas !
-{=================================== MISSION TABLE RACES ===================================}
+[TOSH2E2:TOSH2]
+~w~Une ~r~camionnette~w~ est presque arrivée au ~y~complexe des Yakuzas !
-[RACES_2:RACES]
-~g~Il te faut un véhicule, c'est pas une course à pied!
+{=================================== MISSION TABLE TOSH3 ===================================}
-[RACES_3:RACES]
-3... 2... 1... PARTEZ!
+[TOSH3M1:TOSH3]
+~w~Y a quelqu'un ?
-[RACES_8:RACES]
-~r~Tu n'as pas gagné la course!
+[TOSH3M2:TOSH3]
+~w~Toni-san ? Un instant, je vous prie...
-[RACES00:RACES]
-Course ~1~ :
+[TOSH3M3:TOSH3]
+~w~Mon mari est furieux.
-[RACES01:RACES]
-Terminal Velocity
+[TOSH3EA:TOSH3]
+~w~Il se demande comment vous avez pu l'attaquer avec autant de précision.
-[RACES02:RACES]
-Ocean Drive
+[TOSH3M4:TOSH3]
+~w~A moins d'être très bête, il le découvrira bientôt.
-[RACES03:RACES]
-Border Run
+[TOSH3M5:TOSH3]
+~w~Peut-être devrions-nous l'aider... Ses hommes jacassent comme de vieilles pies.
-[RACES04:RACES]
-Capital Cruise
+[TOSH3EB:TOSH3]
+~w~Donnons-leur matière à parler.
-[RACES05:RACES]
-Virée!
+[TOSH3M6:TOSH3]
+~w~Où on va ?
-[RACES06:RACES]
-Endurance V.C.
+[TOSH3M7:TOSH3]
+~w~A l'opéra.
-[RACES07:RACES]
-Participation : ~1~$
+[TOSH3M8:TOSH3]
+~w~L'opéra ? Avec moi ? Vous plaisantez ?
-[RACES08:RACES]
-Meilleur temps : ~1~:~1~
+[TOSH3M9:TOSH3]
+~w~Ne soyez pas ridicule, Toni-san ! Tout le monde aime l'opéra !
-[RACES09:RACES]
-Meilleure perf : 1er
+[TOSH3A:TOSH3]
+~w~Si vous allez chercher ma voiture, nous pourrons passer prendre votre smoking.
-[RACES10:RACES]
-Meilleure perf : 2e
+[TOSH3EC:TOSH3]
+~w~Nous n'avons pas beaucoup de temps, le spectacle va bientôt commencer.
-[RACES11:RACES]
-Meilleure perf : 3e
+[TOSH3B:TOSH3]
+~w~Va chercher la ~b~voiture de Toshiko.
-[RACES12:RACES]
-Meilleure perf : 4e
+[TOSH3C:TOSH3]
+~w~Passe prendre ~b~Toshiko.
-[RACES13:RACES]
-Longueur circuit : ~1~.~1~ km
+[TOSH3C2:TOSH3]
+~w~Récupère un smoking chez ~y~M. Benz.
-[RACES15:RACES]
-Meilleur temps : NA
+[TOSH3B3:TOSH3]
+~w~Reconduis Toshiko à son ~y~appartement.
-[RACES16:RACES]
-Meilleure perf : NA
+[TOSH3B4:TOSH3]
+~r~T'as oublié Toshiko !
-[RACES18:RACES]
-TU AS GAGNE : $~1~
+[TOSH3B2:TOSH3]
+Remonte dans la ~b~voiture de Toshiko.
-[RACES19:RACES]
-Tu n'as pas assez de moyens pour participer.
+[TOSH3C3:TOSH3]
+~w~Va à l'~y~opéra.
-[RACES22:RACES]
-Meilleur temps : ~1~:0~1~
+[TOSH3D:TOSH3]
+~w~Où allez-vous !? Nous allons être en retard !
-[RACES23:RACES]
-Longueur circuit : ~1~.~1~ miles
+[TOSH3D2:TOSH3]
+~w~Je vous en prie, ne m'abandonnez pas, Toni-san !
-[RACES_1:RACES]
-~g~Trouve un bolide et rends-toi sur la grille de départ.
+[TOSH3Z1:TOSH3]
+~w~Vous pensez que je suis une mauvaise personne, Toni-san ?
-[RACEHLP:RACES]
-~w~Appuie sur la~h~ ~k~~PED_SPRINT~~w~ pour commencer la course choisie. Appuie sur la~h~ ~k~~VEHICLE_ENTER_EXIT~~w~ pour quitter.
+[TOSH3Z2:TOSH3]
+~w~J'suis pas un ange moi non plus, princesse.
-{=================================== MISSION TABLE RCHELI1 ===================================}
+[TOSH3Z3:TOSH3]
+~w~Non... Mais un ange ne me serait guère utile.
-[WRECKED:RCHELI1]
-Ton véhicule est mort!
+[TOSH3Z4:TOSH3]
+~w~Mon mari est un Samouraï, Toni-san.
-[RCH1_4:RCHELI1]
-Points de passage restants :
+[TOSH3Z5:TOSH3]
+~w~Il est très fort... et très mauvais.
-[RCH1_6:RCHELI1]
-~g~Utilise l'hélico télécommandé pour passer les points de passage à travers l'aéroport.
+[TOSH3Z6:TOSH3]
+~w~Il m'a épousée uniquement pour devenir waka-gashira, à Liberty City.
-[RCH1_7:RCHELI1]
-~g~Il y a 20 points de passage en tout.
+[TOSH3Z7:TOSH3]
+~w~Il ne m'a jamais aimée... Il préfère la compagnie de ses hommes.
-[RCH1_12:RCHELI1]
-~g~L'hélicoptère télécommandé est presque hors de portée!
+[TOSH3Z8:TOSH3]
+~w~Vous comprenez ?
-[RCH1_13:RCHELI1]
-~r~L'hélicoptère radiocommandé est hors de portée!
+[TOSH3Z9:TOSH3]
+~w~Vous savez qu'il vous tuera quand il découvrira ce que vous faites.
-[RCH1_8:RCHELI1] { reVC update }
-~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~g~ pour faire exploser ton hélicoptère radiocommandé.
+[TOSH3Z0:TOSH3]
+~w~Vivre ou mourir, ça n'a plus aucune importance pour moi... Seule ma liberté compte.
-{=================================== MISSION TABLE RCPLNE1 ===================================}
+[TOSH3ZB:TOSH3]
+~w~C'est une façon très zen de voir les choses.
-[RCPL1_4:RCPLNE1]
-~g~Fais une COURSE DE POINTS DE PASSAGE avec 3 autres avions télécommandés.
+[TOSH3E:TOSH3]
+~w~Le sang italien se mélange pas avec le sang japonais !
-[RCPL1_5:RCPLNE1]
-~g~Passe par les points de passage dispersés dans Vice City.
+[TOSH3F:TOSH3]
+~w~Mais ça va très bien se mélanger sur le trottoir !
-[RCPL1_6:RCPLNE1] { reVC update }
-~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~g~ pour faire exploser ton avion radiocommandé.
+[TOSH3G:TOSH3]
+~w~Protège Toshiko et échappe-toi dans sa ~b~voiture.
-[RCPL1_8:RCPLNE1]
-~g~Ton avion RC va sortir du périmètre!
+[TOSH3H:TOSH3]
+~w~Protège ~b~Toshiko~w~ et ramène-la à son ~y~appartement.
-[RCPL1_9:RCPLNE1]
-~r~Ton avion RC est sorti du périmètre!
+[TOSH3S1:TOSH3]
+~w~Ma voiture !
-{=================================== MISSION TABLE RCRACE1 ===================================}
+[TOSH3S2:TOSH3]
+~w~Sauvez-nous, Toni !
-[RCR1_4:RCRACE1]
-Tours restants :
+[TOSH3S3:TOSH3]
+~w~Allez, Toni !
-[RCR1_1:RCRACE1]
-~g~Fais une course de points de passage contre 3 autres voitures RC.
+[TOSH3S4:TOSH3]
+~w~Sortez-nous de là !
-[RCR1_2:RCRACE1]
-~g~Sois le premier à boucler 2 tours de circuit pour gagner!
+[TOSH3S5:TOSH3]
+~w~SAUVEZ-MOI !
-[RCR1_6:RCRACE1]
-~g~Ta voiture RC va sortir du périmètre!
+[TOSH3S6:TOSH3]
+~w~A L'AIDE !
-[RCR1_7:RCRACE1]
-~r~Ta voiture RC est sortie du périmètre!
+[TOSH3S7:TOSH3]
+~w~On va pas s'en sortir !
-{=================================== MISSION TABLE ROCK1 ===================================}
+[TOSH3S8:TOSH3]
+~w~AU SECOURS !
-[RBM1_A:ROCK1]
-Okaaaaaaaaaay!
+[TOSH3S9:TOSH3]
+~r~Toshiko est morte !
-[RBM1_B:ROCK1]
-Grandiose! Vraiment génial!
+[TOSH310:TOSH3]
+~r~La voiture de Toshiko a été détruite !
-[RBM1_D:ROCK1]
-Hé, t'as déjà rencontré les Love Fist?
+[TOSH311:TOSH3]
+~r~Le temps est écoulé !
-[RBM1_E:ROCK1]
-Non, mais j'adore votre musique!
+[TOSH3_1:TOSH3]
+NONE
-[RBM1_F:ROCK1]
-Laisse-moi te présenter au groupe.
+[TOS3NE1:TOSH3]
+~w~Protège Toshiko et tue les ~r~Forelli.
-[RBM1_G:ROCK1]
-Voici P, Percy, Dick et Willy est aux chiottes et Jezz était dans la cabine tout à l'heure...
+[TOS3NE2:TOSH3]
+~w~Tire-toi dans la voiture de ~b~Toshiko.
-[RBM1_H:ROCK1]
-Les mecs, je veux vous présenter un bon ami à moi.
+[TOSH3EI:TOSH3]
+~w~L'opéra commence à 20:00. Ne sois pas en retard !
-[RBM1_I:ROCK1]
-Voici Tommy. Ca fait un bail qu'on se connait.
+{=================================== MISSION TABLE TOSH4 ===================================}
-[RBM1_J:ROCK1]
-Ok, mon pote.
+[TOSH4O2:TOSH4]
+~w~L'hélico de Kazuki se dirige vers le ~y~casino !
-[RBM1_K:ROCK1]
-Ah, euh... C'est quoi déjà, ton nom?
+[TOSH4O4:TOSH4]
+~w~Tue ~r~Kazuki !
-[RBM1_L:ROCK1]
-Arrête-ça Jezz tu t'en souviens,
+[TOSH4O5:TOSH4]
+~w~Va à l'~y~appartement de Toshiko.
-[RBM1_M:ROCK1]
-et essaye pas de jouer au plus malin avec moi,
+[TOSH4_3:TOSH4]
+~w~Kazuki arrive dans cet hélico. Va à l'héliport et tue-le !
-[RBM1_N:ROCK1]
-je suis trop intelligent, mon mignon!
+[TOSH4Y1:TOSH4]
+~w~Chopez-le !
-[RBM1_O:ROCK1]
-Tu vois, le problème, Tom, c'est que ces garçons ont besoin d'aide.
+[TOSH4Y2:TOSH4]
+~w~Tuez-le !
-[RBM1_P:ROCK1]
-Ils n'ont pas beaucoup de contacts ici et ils savent pas à qui s'adresser.
+[TOSH4CA:TOSH4]
+~w~Mes hommes m'ont déshonoré...
-[RBM1_Q:ROCK1]
-On a besoin de drogue, mon pote!
+[TOSH4CB:TOSH4]
+~w~mais il est juste que je te tue moi-même.
-[RBM1_R:ROCK1]
-Faut qu'on réveille la vieille fureur de Love Fist, tu vois?
+[TOSH4CC:TOSH4]
+~w~Vous deux ! Laissez-nous !
-[RBM1_S:ROCK1]
-Et bien, ici, c'est Vice City, quel est le problème?
+[TOSH4CD:TOSH4]
+~w~C'est avec grand plaisir que je vais te faire goûter à mon sabre...
-[RBM1_U:ROCK1]
-Du Love Juice, mec!
+[TOSH4CE:TOSH4]
+~w~Ouais, on m'a prévenu.
-[RBM1_V:ROCK1]
-Du Love Juice?
+[TOSH4K1:TOSH4]
+~w~Descendez-le !
-[RBM1_W:ROCK1]
-Ouais, deux doses de boomshine, une dose de trompette, 5 bombes fizz et un litre d'essence.
+[TOSH4K2:TOSH4]
+~w~Tuez-le !
-[RBM1_X:ROCK1]
-Tu peux nous aider, mon pote?
+[TOSH4_7:TOSH4]
+~w~Apporte le sabre de Kazuki à Toshiko comme preuve de sa mort.
-[RBM1_Y:ROCK1]
-Ah, ça rendrait tellement service aux garçons!
+[TOSH4_8:TOSH4]
+~w~T'as fait peur à Kazuki ! Il s'échappe ! T'as raté ta chance de le liquider !
-[RBM1_Z:ROCK1]
-Tu peux faire ça pour les garçons, pas vrai?
+[TOSH4_C:TOSH4]
+Kazuki
-[RBM1_8:ROCK1]
-~r~Mercedes est morte!
+[TOSH4AA:TOSH4]
+~w~Hello ?
-[RBM1_10:ROCK1]
-~r~Imbécile! Tu as détruit la marchandise!
+[TOSH4AB:TOSH4]
+~w~Je prends un bain, Toni-san.
-[RBM1_13:ROCK1]
-~g~Amène le Love Juice et Mercedes au groupe avant qu'ils n'entrent sur scène.
+[TOSH4AC:TOSH4]
+~w~Nous n'avons pas beaucoup de temps.
-[RBM1_15:ROCK1]
-~r~Tu as perdu le dealer, notre cash et la drogue!
+[TOSH4AD:TOSH4]
+~w~Mon mari sait qui est vraiment à l'origine de ses pertes.
-[RBM1_17:ROCK1]
-~g~Tue le dealer et prends la drogue!
+[TOSH4AE:TOSH4]
+~w~Il vient me tuer... et vous aussi.
-[MOB_07A:ROCK1]
-Salut, mon vieux, les gars auraient besoin d'un peu de compagnie, si tu vois ce que je veux dire...
+[TOSH4AF:TOSH4]
+~w~Bon, alors, je vais pas l'attendre ici. Où est-il ?
-[MOB_07B:ROCK1]
-Je connais justement la fille qu'il faut.
+[TOSH4AG:TOSH4]
+~w~A Belleville, en train de rassembler ses hommes.
-[ROK1_5:ROCK1]
-Salut Mercedes!
+[TOSH4AJ:TOSH4]
+~w~Mais il sera bientôt là.
-[ROK1_6:ROCK1]
-Salut, Tommy. Comment vas-tu?
+[TOSH4AH:TOSH4]
+~w~Sayonara, poupée.
-[ROK1_7:ROCK1]
-Ca roule. Ecoute, les Love Fist, ça te branche?
+[TOSH4AI:TOSH4]
+~w~Mes prières vous accompagnent, Toni-san. Bonne chance !
-[ROK1_8:ROCK1]
-Ok, mais c'est un service qu'il faudra me retourner...
+[TOSH4F1:TOSH4]
+~r~Kazuki se moque de toi !
-[RBM1_14:ROCK1]
-~g~T'as besoin d'une bagnole ou d'une bécane!
+[TOSH4OA:TOSH4]
+~w~Bute les ~r~gardes de Kazuki !
-[RBM1_1:ROCK1]
-~g~Va prendre Mercedes à son appartement.
+[TOSH4OB:TOSH4]
+~w~Retourne chez ~y~Kazuki !
-[RBM1_12:ROCK1]
-~g~Va récupérer les ingrédients du Love Juice chez le dealer.
+[TOSH4OC:TOSH4]
+~w~Attention ! Voilà d'autres ~r~Yakuzas !
-[ROK1_2:ROCK1]
-PLUS NECESSAIRE
+[TOSH4DA:TOSH4]
+~w~Butez-le !
-[ROK1_3:ROCK1]
-PLUS NECESSAIRE
+[TOSH4DB:TOSH4]
+~w~Tuez-le !
-[MERC_39:ROCK1]
-A plus tard, champion.
+[TOSH4DC:TOSH4]
+~w~Tuez-le, bande de nazes !
-[RBM1_C:ROCK1]
-Hé, Tommy! Content que t'aies réussi!
+[TOSH4O1:TOSH4]
+~w~Va chez ~y~Kazuki~w~ et tue-le !
-[ROK1_1A:ROCK1]
-Tu cherches quelque chose de spécial? J'ai ce qu'il te faut!
+[TOSH4O3:TOSH4]
+~w~Va à l'~y~héliport !
-[ROK1_9:ROCK1]
-Merci pour le pognon, suce boules!
+[CASH_01:TOSH4]
+Hum... Bon... Toshiko. C'est terminé.
-[RBM1_T:ROCK1]
-On a besoin de Love Juice, mec, tu vois?
+[CASH_02:TOSH4]
+Oui, oui, je le savais. Bonjour, Toni-san.
-{=================================== MISSION TABLE ROCK2 ===================================}
+[CASH_03:TOSH4]
+Hé... Alors, euh... Vous avez gagné...
-[RBM2_A:ROCK2]
-Tommy, mon pote, je suis content de te voir!
+[CASH_04:TOSH4]
+Vous avez ce que vous vouliez, tout a marché comme convenu.
-[RBM2_B:ROCK2]
-Qu'est-ce qui se passe?
+[CASH_06:TOSH4]
+Merveilleux, oui, merveilleux...
-[RBM2_C:ROCK2]
-Des mauvaises vibrations, Tommy...
+[CASH_07:TOSH4]
+Et maintenant c'est l'heure de la paye, ma poule...
-[RBM2_E:ROCK2]
-Il y a ce chat, on le connaît pas, mais lui il nous connaît.
+[CASH_08:TOSH4]
+Nous sommes tous deux des tueurs fous, Toni-san.
-[RBM2_F:ROCK2]
-C'est comme ce chat. Il nous connaît tous.
+[CASH_09:TOSH4]
+J'imagine...
-[RBM2_G:ROCK2]
-Il sait que Willy a un faible pour les culottes de ses femmes, hé hé!
+[CASH_10:TOSH4]
+Ne pensez-vous pas que notre esprit paye un lourd tribut au monde, Toni-san ?
-[RBM2_H:ROCK2]
-Ou que Percy aime bien Duran Duran!
+[CASH_11:TOSH4]
+Possible...
-[RBM2_K:ROCK2]
-Ouais, le truc de la fusée d'amour, c'est vrai. Mais écoute, ce chat...
+[CASH_12:TOSH4]
+Mais vous êtes libre maintenant. Je veux dire, d'aller au Costa Rica, à Aruba ou ailleurs.
-[RBM2_L:ROCK2]
-ouais, ouais, ce gars, il veut voir les Love Fist morts!
+[CASH_13:TOSH4]
+Tout recommencer, c'est ce dont vous rêviez.
-[RBM2_M:ROCK2]
-Morts, Tommy.
+[CASH_14:TOSH4]
+Je ne crois pas être prête pour les vacances à la plage, Toni-san.
-[RBM2_N:ROCK2]
-Les Love Fist disparus. Tu sais ce qu'on dit, les meilleurs meurent jeunes...
+[CASH_15:TOSH4]
+J'ai tout perdu, par ma seule volonté.
-[RBM2_O:ROCK2]
-Tommy, faut que tu sauves les Love Fist!
+[CASH_16:TOSH4]
+Il m'a été accordé ce que je demandais.
-[RBM2_P:ROCK2]
-On a une séance d'autographes dans deux heures et je pense que...
+[CASH_17:TOSH4]
+Désormais, je n'aspire plus qu'à la vraie liberté.
-[RBM2_Q:ROCK2]
-Et les garçons pensent que le mec va essayer quelque chose de très vilain là-bas.
+[CASH_18:TOSH4]
+Au revoir, Toni-san.
-[RBM2_1:ROCK2]
-~g~Conduis la limousine à la séance d'autographes et essaye de démasquer le psychopathe .
+{=================================== MISSION TABLE COPCAR ===================================}
-[RBM2_2:ROCK2]
-~r~T'as bousillé la bagnole du groupe!
+[C_COMP1:COPCAR]
+~w~Mission Autodéfense : niveau 12 terminé ! La protection pare-balles est encore plus efficace !
-[RBM2_3:ROCK2]
-~g~Va à la séance d'autographes!
+[C_BREIF:COPCAR]
+~r~Suspect~w~ aperçu pour la dernière fois dans le secteur : ~a~.
-[RBM2_4:ROCK2]
-~g~Attrape le psychopathe! Ne le laisse pas s'échapper!
+[C_BREIG:COPCAR]
+~r~Suspects~w~ aperçus pour la dernière fois dans le secteur : ~a~.
-[RBM2_5:ROCK2]
-~r~Tu l'as perdu, imbécile!
+[C_RANGE:COPCAR]
+~r~La radio de la police ne capte plus rien ! Rapproche-toi d'un poste de police !
-[RBM2_7:ROCK2]
-~r~Les fans ont été attaqués, le psychopathe ne se montrera pas!
+[C_TIMEA:COPCAR]
+~w~Bonus temps ! +~1~ secondes
-[RBM2_8:ROCK2]
-~r~Les agents de sécurité ont été attaqués, le psychopathe ne se montrera pas!
+[COPCART:COPCAR]
+~w~T'as ~1~ secondes pour monter dans un véhicule de police avant la fin de la mission.
-[PSYCH_1:ROCK2]
-Je veux voir les Love Fist morts!
+[COPCARU:COPCAR]
+~w~T'as ~1~ seconde pour monter dans un véhicule de police avant la fin de la mission.
-[PSYCH_2:ROCK2]
-Les Love Fist ont gâché ma vie!
+[C_CANC:COPCAR]
+~r~Mission Autodéfense annulée !
-[RBM2_I:ROCK2]
-Ferme-la un peu. C'est pas parce que Jezz encule les moutons...
+[C_TIME:COPCAR]
+~r~T'as fait ton temps comme flic. C'est fini !
-[RBM2_R:ROCK2]
-Oh, ferme-la!
+[C_PASS3:COPCAR]
+~w~MENACE ELIMINEE ! Récomp. : ~1~$
-[RBM2_D:ROCK2]
-Je plaisante pas. C'est pas des conneries, mec, tu piges?
+[C_LEVEL:COPCAR]
+~r~T'as laissé les criminels s'enfuir !
-[RBM2_J:ROCK2]
-C'est le truc de la fusée d'amour, tu sais?
+[C_RANG2:COPCAR]
+~r~La radio de la caisse des flics ne fonctionne pas dans le métro !
-{=================================== MISSION TABLE ROCK3 ===================================}
+{=================================== MISSION TABLE CARS ===================================}
-[RBM3_A:ROCK3]
-Tommy! Le psychopathe est de retour!
+[CARS_10:CARS]
+~w~Monte dans une caisse pour partir en balade ou quitte les lieux pour annuler la mission.
-[RBM3_B:ROCK3]
-Qu'est-ce qui se passe?
+[CARS_12:CARS]
+~w~Ta mission sera un échec si tu descends de voiture.
-[RBM3_C:ROCK3]
-Ce psychopathe ne laissera jamais les Love Fist tranquilles!
+[CARS_1:CARS]
+~w~Emmène un des clients en balade.
-[RBM3_D:ROCK3]
-Tu l'as pas tué, mon pote et il est revenu.
+[CARS_2:CARS]
+~w~Tu dois trouver ce que chaque client attend des performances de la voiture.
-[RBM3_E:ROCK3]
-Ouais, ouais et le truc c'est que...
+[CARS_3:CARS]
+~w~Ensuite, sers-toi de tes talents de conducteur pour leur montrer que c'est la caisse de leurs rêves.
-[RBM3_F:ROCK3]
-Le truc, c'est qu'on a besoin de quelqu'un de confiance pour conduire la limousine,
+[CARS_5:CARS]
+~w~Impressionne le client.
-[RBM3_G:ROCK3]
-parce que ce timbré continue à nous menacer!
+[CARS_6:CARS]
+~w~Le client est à terre ! Choisis une autre caisse !
-[RBM3_I:ROCK3]
-On chie tous dans nos frocs, mec.
+[CARS_30:CARS]
+~w~Retourne chez le ~y~concessionnaire~w~ conclure l'affaire !
-[RBM3_J:ROCK3]
-Ok, les gars, du calme, je vais m'en occuper...
+[CARS_C1:CARS]
+~w~Alors, mec, t'aimes bien larguer les flics ?
-[RBM3_K:ROCK3]
-Normalement, j'ai mieux à foutre que de faire le taxi pour une bande d'Ecossais bisexuels bourrés,
+[CARS_C2:CARS]
+~w~Ouais ! Ca lui apprendra !
-[RBM3_L:ROCK3]
-mais dans votre cas, je vais faire une exception.
+[CARS_P1:CARS]
+~w~Waou ! Cette caisse est supersonique !
-[ROK3_03:ROCK3]
-Autant pas faire dans la demi-mesure, alors.
+[CARS_P2:CARS]
+~w~Waou ! Trop cool !!
-[ROK3_04:ROCK3]
-Hé, Tommy, change la musique!
+[CARS_P3:CARS]
+~w~Tu conduis comme ma tante !
-[ROK3_08:ROCK3]
-Ca commence à me faire chier, cette histoire.
+[CARS_P4:CARS]
+~w~Cette voiture a des airbags ?
-[ROK3_09:ROCK3]
-Garde juste le pied au plancher!
+[CARS_M1:CARS]
+~w~Ah, un petit tour bien tranquille...
-[ROK3_61:ROCK3]
-Faut qu'on trouve la bombe!
+[CARS_M2:CARS]
+~w~Vous savez que la vitesse est limitée ?
-[ROK3_28:ROCK3]
-Je vais bientôt jouer de la basse en enfer...
+[CARS_M3:CARS]
+~w~Oh mon Dieu, vous allez nous tuer !
-[ROK3_30:ROCK3]
-Que quelqu'un fasse quelque chose!
+[CARS_O1:CARS]
+~w~Oh ouais, plus de macadam pour nous retenir !
-[ROK3_32:ROCK3]
-Ok, toi monsieur le dur à cuire, fais quelque chose!
+[CARS_O2:CARS]
+~w~Jusqu'au ciel, mon pote !
-[ROK3_34:ROCK3]
-Willy pourrait juste sucer le boomshine à la paille.
+[CARS_O3:CARS]
+~w~Trop cool, le tonneau !!
-[ROK3_37:ROCK3]
-Passez une paille à Willy!
+[CARS_SC:CARS]
+~w~Vente terminée. Commission : ~1~$ Bonus temps : ~1~ secondes
-[ROK3_41:ROCK3]
-Quel fil, Tommy?
+[CARS_SD:CARS]
+~w~Niveau ~1~ terminé. Commission : ~1~$ Bonus temps : ~1~ secondes
-[ROK3_42:ROCK3]
-Le vert.
+[CARS_IR:CARS]
+~1~ A LA SUITE ! Bonus ! ~1~$
-[ROK3_43:ROCK3]
-Y'en a pas de vert. Ou alors celui-la est vert?
+[CARS_RE:CARS]
+~w~Une petite prime pour notre meilleur vendeur !
-[ROK3_44:ROCK3]
-Est-ce qu'un de ces fils te semble vert?
+[CARSIC1:CARS]
+~w~J'ai besoin d'une caisse dure à rattraper, mec.
-[ROK3_49:ROCK3]
-Ca fait des années que je te supporte!
+[CARSIC2:CARS]
+~w~J'ai besoin d'une caisse capable de dégommer ces connards de piétons.
-[ROK3_51:ROCK3]
-Une grosse poufiasse hurlante...
+[CARSIP1:CARS]
+~w~Ce bébé a l'air rapide !
-[ROK3_52:ROCK3]
-Ouais!
+[CARSIP2:CARS]
+~w~Oh mec ! J'parie que ce truc peut voler !
-[ROK3_53:ROCK3]
-Ferme-la et arrache un fil!
+[CARSIM1:CARS]
+~w~Il paraît que c'est une voiture très rassurante.
-[ROK3_54:ROCK3]
-Lequel?
+[CARSIM2:CARS]
+~w~Depuis mon opération, j'ai besoin d'une voiture plus lente.
-[ROK3_55:ROCK3]
-Celui-là...
+[CARSIO1:CARS]
+~w~L'adhérence est bonne, sortons de la route !
-[ROK3_56:ROCK3]
-Non!
+[CARSIO2:CARS]
+~w~Mon pote réussit à faire des tonneaux avec sa caisse, et j'adore ça !
-[ROK3_57:ROCK3]
-Hé, on est ok, on a pas sauté, les potes! Tommy, mon pote bravo. Et Rock and Roll!
+[CARS_N1:CARS]
+~w~J'achète pas cette poubelle !
-[ROK3_58:ROCK3]
-On a pas un concert où aller? Un racket à faire? Des fans à insulter?
+[CARS_N2:CARS]
+~w~J'arrive pas à croire que vous avez voulu me faire acheter cette épave !
-[ROK3_59:ROCK3]
-LOVE FIST!
+[CARS_N3:CARS]
+~w~Vous autres, les vendeurs de caisses d'occasion, vous êtes tous pareils !
-[ROK3_60:ROCK3]
-T'as fini avec cette bouteille?
+[CARS_Y1:CARS]
+~w~Je l'achète !
-[RBM3_4:ROCK3]
-~r~Tu as tué les Love Fist!
+[CARS_Y2:CARS]
+~w~C'est la voiture de mes rêves !
-[RBM3_6:ROCK3]
-DETONATION :
+[CARS_Y3:CARS]
+~w~Affaire conclue !
-[RBM3_1:ROCK3]
-~g~Conduis les Love Fist jusqu'au concert.
+[CARS_R1:CARS]
+~w~J'aime bien la voiture, mais pas la couleur.
-[RBM3_2:ROCK3]
-Si tu essayes de quitter la voiture tant que la bombe est armée, elle explosera.
+[CARS_R2:CARS]
+~w~Fais repeindre la voiture !
-[RBM3_3:ROCK3]
-Si la jauge de détonation devient pleine, la bombe explose.
+[CARS_D1:CARS]
+~w~J'aime bien, mais elle est pas en bon état...
-[RBM3_8:ROCK3]
-Plus tu conduis vite, plus la jauge de détonation diminue.
+[CARS_D2:CARS]
+~w~Fais réparer cette caisse !
-[RBM3_7:ROCK3]
-~g~BOMBE DESAMORCEE!
+[CARS_F1:CARS]
+~r~T'as bousillé la caisse !
-[ROK3_6A:ROCK3]
-~g~Love Fist. Vous avez fini de polluer les ondes!
+[CARS_F2:CARS]
+~r~T'as tué le client !
-[ROK3_6B:ROCK3]
-~g~Je vous ai donné l'occasion de devenir mes amis. Je vais maintenant vous offrir celle de mourir!
+[CARS_F3:CARS]
+~r~T'as trop traîné ! Le client en a eu marre !
-[ROK3_62:ROCK3]
-alors on a pensé te montrer notre Temple du rock-
+[CARS_F4:CARS]
+~r~Le client n'aime pas la caisse !
-[ROK3_63:ROCK3]
-Que tu te fasses une idée de la fureur des Love Fist!
+[CARS_F5:CARS]
+~r~Ta carrière de vendeur de voitures est terminée.
-[ROK3_64:ROCK3]
-Ecoute-toi toi même, mon pote. C'est de la daube!
+[CARS_F6:CARS]
+~r~Le client aime pas la caisse ! Tu l'as crashée !
-[ROK3_65:ROCK3]
-Hé, à tous les gosses, c'est un temple et nous sommes les prêtres!
+[CARS_F7:CARS]
+~r~Le client aime pas la caisse ! T'as roulé trop vite !
-[ROK3_66:ROCK3]
-Ouais, eh ben, si les gosses aiment leurs prêtres à moitié saouls et complètement sourds,
+[CARS_F8:CARS]
+~r~Le client aime pas la caisse ! T'as pas roulé assez vite !
-[ROK3_67:ROCK3]
-c'est leur problème.
+[CARS_SA:CARS]
+Vente
-[ROK3_68:ROCK3]
-Ah, merde, la bande de la cassette est encore bouffée.
+[CARS_7:CARS]
+~w~Monte dans une ~b~caisse !
-[ROK3_69:ROCK3]
-Si ça continue, faudra jouer en live.
+[CARS_RF:CARS]
+~w~Capital Autos est désormais sous ta 'protection'. Pense à encaisser régulièrement les paiements.
-[ROK3_70:ROCK3]
-Ooooh merde! Mes intestins...
+{=================================== MISSION TABLE BIKE ===================================}
-[ROK3_74:ROCK3]
-Ah, tiens, qu'est-ce que c'est que ça? Tommy, mets cette cassette.
+[BIKE_10:BIKE]
+~w~Grimpe sur la moto pour partir en balade ou quitte l'allée pour annuler la mission.
-[ROK3_01:ROCK3]
-Mon pote, c'est enfin l'heure d'un verre bien mérité.
+[BIKE_12:BIKE]
+~w~Ta mission est un échec si tu descends de moto.
-[ROK3_02:ROCK3]
-La salle de concert est à une centaine de mètres plus loin.
+[BIKE_1:BIKE]
+~w~Emmène un des clients en balade.
-[ROK3_05:ROCK3]
-Je me sens bizarre quand ma tête ne tambourine pas.
+[BIKE_2:BIKE]
+~w~Tu dois découvrir ce que chaque client recherche en matière de performances.
-[ROK3_07:ROCK3]
-Tommy, faut que tu sauves le groupe!
+[BIKE_3:BIKE]
+~w~Ensuite, sers-toi de tes talents pour leur montrer que c'est la moto de leurs rêves.
-[ROK3_29:ROCK3]
-Tommy, continue de foncer, mec!
+[BIKE_5:BIKE]
+~w~Impressionne le client.
-[ROK3_31:ROCK3]
-Que quelqu'un fasse quelque chose... C'est quoi ces conneries? J'ai déjà vu des minettes plus courageuses.
+[BIKE_30:BIKE]
+~w~Retourne au ~y~magasin de motos~w~ pour conclure l'affaire !
-[ROK3_33:ROCK3]
-Ecoute, mec. Moi, je joue d'un instrument, j'y connais rien aux bombes.
+[BIKE_C1:BIKE]
+~w~OK, mec, faut donner une leçon aux flics, hein !
-[ROK3_35:ROCK3]
-Ouais, j'ai entendu dire que t'étais doué pour ce genre de trucs!
+[BIKE_C2:BIKE]
+~w~Ouais ! Bien fait pour ce minable !
-[ROK3_38:ROCK3]
-Une paille? Hé, ici, c'est le bus de tournée des Love Fist!
+[BIKE_P1:BIKE]
+~w~Ouais ! Cette moto est géniale !
-[ROK3_39:ROCK3]
-Où c'est que tu veux que je trouve une paille?
+[BIKE_P2:BIKE]
+~w~Ouais !
-[ROK3_46:ROCK3]
-J'aurais dû te larguer quand j'en avais l'occasion.
+[BIKE_P3:BIKE]
+~w~Allez, elle peut pas aller plus vite ?
-[ROK3_47:ROCK3]
-Capitaliste!
+[BIKE_P4:BIKE]
+~w~Attention !
-[ROK3_48:ROCK3]
-Arriviste!
+[BIKE_M1:BIKE]
+~w~Ah, un petit tour tranquille...
-[ROK3_73:ROCK3]
-Jezz écoute la cassette,
+[BIKE_M2:BIKE]
+~w~Vous savez que la vitesse est limitée ?
-[RBM3_9:ROCK3]
-Si tu t'arrêtes ou conduis trop lentement, la jauge de détonation augmente.
+[BIKE_M3:BIKE]
+~w~Oh mon Dieu, vous allez nous tuer !
-[ROK3_50:ROCK3]
-Ferme-la, pauvre abruti!
+[BIKE_O1:BIKE]
+~w~Ouais, vive la liberté tout terrain !
-[ROK3_36:ROCK3]
-Hé, j'étais raide défoncé cette nuit-là, et tu le sais bien!
+[BIKE_O2:BIKE]
+~w~Le ciel nous appartient, mec !
-[RBM3_H:ROCK3]
-Je chie dans mon froc, mec. Je veux ma maman!
+[BIKE_O3:BIKE]
+~w~Ouais, d'enfer, les cascades !
-[ROK3_45:ROCK3]
-Oh, je vois la mort dans les cartes! Tout est vert!
+[BIKE_SC:BIKE]
+~w~Vente terminée. Commission : ~1~$ Bonus temps : ~1~ secondes
-[ROK3_6C:ROCK3]
-~g~Si tu ralentis, la limousine explosera et les GROS TOCARDS CHEVELUS avec!
+[BIKE_IR:BIKE]
+~1~ A LA SUITE ! Bonus ! ~1~$
-[ROK3_71:ROCK3]
-On doit continuer. Merci encore, Tommy! T'as assuré, mec! A plus!
+[BIKE_RE:BIKE]
+~w~Une petite prime pour notre meilleur vendeur !
-[ROK3_1:ROCK3]
-Enfin, mec, voici l'heure d'un verre bien mérité. La salle est juste à quelques mètres d'ici.
+[BIKE_RF:BIKE]
+~w~Hogs 'n' Cogs est désormais sous ta 'protection'. Pense à encaisser régulièrement les paiements.
-[ROK3_2:ROCK3]
-Tu m'en sers un grand alors. Hé, Tommy, change de musique, mec.
+[BIKEIC1:BIKE]
+~w~J'ai besoin de quelque chose de difficile à courser, mec.
-[ROK3_3:ROCK3]
-Je pète les plombs si je secoue pas la tête. Hé, regarde, c'est quoi ça? Tommy, mets cette cassette.
+[BIKEIC2:BIKE]
+~w~J'veux une moto pour régler leurs comptes à ces enfoirés de piétons !
-[ROK3_4:ROCK3]
-Love Fist. Vous avez fini de polluer les ondes. Je vous ai donné une chance de devenir mes amis.
+[BIKEIP1:BIKE]
+~w~Cette moto a l'air rapide !
-[ROK3_5:ROCK3]
-Maintenant vous allez mourir. Essayez de freiner et c'est la fin! Paf, plus de limousine et plus de GROS NASES CHEVELUS non plus.
+[BIKEIP2:BIKE]
+~w~J'veux une moto qu'impressionne les filles !
-[ROK3_6:ROCK3]
-Tommy, mec, tu dois sauver le groupe! J'en ai marre de ces conneries. Enlève pas ton pied de la pédale, mec!
+[BIKEIM1:BIKE]
+~w~Il paraît que ces motos assurent une conduite tranquille.
-[ROK3_7:ROCK3]
-On doit trouver la bombe! On peut pas continuer à rouler toute la journée? Ouais, quoi, on a plein de trucs à boire...
+[BIKEIM2:BIKE]
+~w~J'suis encore un peu patraque, il me faut une moto plus lente.
-[ROK3_8:ROCK3]
-La bombe, elle serait pas dans le moteur? Va falloir qu'on s'arrête pour la désamorcer! Merde, mec, on va tous crever! J'vais m'bourrer la gueule!
+[BIKEIO1:BIKE]
+~w~Super, l'adhérence ! On sors de la route !
-[ROK3_9:ROCK3]
-Hé, on est dans la mouise, mon pote! Tu trouveras pas ta réponse dans la boisson! Tire-toi de là!
+[BIKEIO2:BIKE]
+~w~Ces motos peuvent faire des super cascades, pas vrai !?
-[ROK3_10:ROCK3]
-Hé, y'a des fils qui sortent de la bouteille de vodka! C'est pas de la vodka, c'est du BOOMSHINE!
+[BIKE_N1:BIKE]
+~w~J'achète pas cette merde !
-[ROK3_11:ROCK3]
-AAAAAHHHHHH! Elle va exploser! AAAAAAAAAAAHHHHH!!!!!!!!!!
+[BIKE_N2:BIKE]
+~w~Vous êtes malade si vous avez cru que j'achèterais cette épave !
-[ROK3_12:ROCK3]
-On m'avait prévenu que l'alcool me perdrait. J'ai déjà vu ça à la télé. Il suffit de tirer un de ces fils, mais lequel? J'en sais foutre rien, mec!
+[BIKE_N3:BIKE]
+~w~Vous, les vendeurs de motos, vous êtes tous les mêmes !
-[ROK3_13:ROCK3]
-Putain, j'en sais rien! Willy, dis quelque chose. J'vais jouer de la basse en enfer.
+[BIKE_Y1:BIKE]
+~w~Je la prends !
-[ROK3_14:ROCK3]
-Tommy, mec, continue de rouler à fond la caisse. Que quelqu'un fasse quelque chose! Ouais, c'est ça.
+[BIKE_Y2:BIKE]
+~w~C'est la moto qu'il me faut !
-[ROK3_15:ROCK3]
-'Que quelqu'un fasse quelque chose'. Putain, c'est quoi ces conneries. J'ai connu des tantes plus braves. Vas-y le gros dur, fais quelque chose!
+[BIKE_Y3:BIKE]
+~w~Parfait, je l'achète !
-[ROK3_16:ROCK3]
-Ecoute, mec, je suis musicien moi, j'sais pas comment ça fonctionne les bombes. Willy a qu'à sucer le boomshine à la paille.
+[BIKE_R1:BIKE]
+~w~La moto est bien, mais j'aime pas la couleur.
-[ROK3_17:ROCK3]
-Ouais, on m'a dit que ça, tu savais faire. J'étais tout émoustillé ce soir-là, comme tu le sais!
+[BIKE_R2:BIKE]
+~w~Fais repeindre la moto !
-[ROK3_18:ROCK3]
-T'as qu'à filer une paille à Willy! Une paille? C'est le bus de tournée des Love Fist!
+[BIKE_D1:BIKE]
+~w~Elle me plaît, mais l'état est pas terrible...
-[ROK3_19:ROCK3]
-Où est-ce que je vais bien pouvoir trouver une paille? Quel fil, Tommy? Le vert. Y'en a pas de vert.
+[BIKE_D2:BIKE]
+~w~Fais réparer la moto !
-[ROK3_20:ROCK3]
-Où peut-être qu'il est vert celui-là? T'en vois un vert, toi?
+[BIKE_F1:BIKE]
+~r~T'as bousillé la moto !
-[ROK3_21:ROCK3]
-Oh non! On va crever! Je vois la vie en vert! J'aurais dû me débarrasser de toi qu'en j'en avais l'occasion.
+[BIKE_F2:BIKE]
+~r~T'as tué le client !
-[ROK3_22:ROCK3]
-Chasse la gloire! Capitaliste! Ca fait des années que je te soutiens. Ferme-là, tafiole!
+[BIKE_F3:BIKE]
+~r~Trop tard ! Le client en a eu marre !
-[ROK3_23:ROCK3]
-Une grosse chialeuse, ouais, ferme-là et tire le putain de fil! Lequel? Celui-là...
+[BIKE_F4:BIKE]
+~r~Le client aime pas la moto !
-[ROK3_24:ROCK3]
-NON! On est pas morts. On a pas sauté, mec!
+[BIKE_F5:BIKE]
+~r~Ta carrière de vendeur de motos est terminée.
-[ROK3_25:ROCK3]
-Tommy, bien joué, mec. Rock and roll, mon pote! On a pas un concert à donner, nous?
+[BIKE_F6:BIKE]
+~r~T'as bousillé la moto ! Le client en veut pas !
-[ROK3_26:ROCK3]
-Amasser du blé? Abuser des minettes? LOVE FIST!
+[BIKE_F7:BIKE]
+~r~T'as été trop vite ! Le client... est plus client !
-[ROK3_27:ROCK3]
-T'as fini avec cette bouteille?
+[BIKE_F8:BIKE]
+~r~T'as roulé trop lentement ! Le client achète pas !
-{=================================== MISSION TABLE SERG1 ===================================}
+[BIKE_B1:BIKE]
+~w~T'as ~1~ secondes pour remonter sur la ~b~moto !
-[TEX1_A:SERG1]
-Entre et pose ton cul sur une des banquettes.
+[BIKE_B2:BIKE]
+~w~Attends que le ~b~client~w~ remonte sur la moto !
-[TEX1_B:SERG1]
-Putain, mon père avait l'habitude de dire qu'à cheval donné, on ne regarde pas les dents et il l'a jamais fait!
+[BIKE_B3:BIKE]
+~w~Laisse le ~b~client~w~ monter sur la moto !
-[TEX1_C:SERG1]
-Tu veux une larme de bon vieux whisky?
+[BIKE_SA:BIKE]
+Vente
-[TEX1_D:SERG1]
-Non merci.
+[BIKE_7:BIKE]
+~w~Monte sur une ~b~moto !
-[TEX1_E:SERG1]
-Un mec qui aime avoir les idées claires, c'est bien.
+[BIKE_S1:BIKE]
+~w~T'as vendu toutes les Freeway qu'on avait en stock!
-[TEX1_F:SERG1]
-En ce moment, mes affaires tournent pas comme elles le devraient...
+[BIKE_S2:BIKE]
+~w~T'as vendu toutes les PCJ 600 qu'on avait en stock !
-[TEX1_G:SERG1]
-C'est la merde! Et je veux nettoyer une partie de cette merde! T'es avec moi?
+[BIKE_S3:BIKE]
+~w~T'as vendu toutes les Faggio qu'on avait en stock !
-[TEX1_H:SERG1]
-Euh, ouais.
+[BIKE_S4:BIKE]
+~w~T'as vendu toutes les Sanchez qu'on avait en stock !
-[TEX1_I:SERG1]
-En fait, j'ai besoin d'un mec obstiné pour me débarrasser d'une merde.
+[BIKE_SN:BIKE]
+~w~Un nouveau stock a été livré !
-[TEX1_J:SERG1]
-T'as l'air du genre persuasif.
+{=================================== MISSION TABLE RAC1 ===================================}
-[TEX1_K:SERG1]
-La persuasion c'est ma spécialité.
+[RAC1_A0:RAC1]
+~w~Si tu veux prouver que ta caisse est pas un veau, présente-toi au départ de la prochaine course urbaine.
-[TEX1_L:SERG1]
-Bon, ce mec sera au country club du golf.
+{=================================== MISSION TABLE RAC2 ===================================}
-[TEX1_M:SERG1]
-Ils autorisent pas les flingues, alors ses gardes du corps en auront pas.
+[RAC2_A0:RAC2]
+~w~Hé, il paraît qu'il va y avoir une course urbaine ! Amène ta caisse sur la ligne de départ.
-[TEX1_N:SERG1]
-Va me massacrer ce salopard.
+{=================================== MISSION TABLE RAC3 ===================================}
-[TEX1_O:SERG1]
-Tiens, voilà ta carte de membre, mais va falloir te trouver des fringues plus appropriées.
+[RAC3_A0:RAC3]
+~w~Y a pas de caisse plus rapide, ni de meilleur pilote !
-[TEX1_2:SERG1]
-~g~Maintenant, direction le Leaf Links Golf Club.
+[RAC3_A1:RAC3]
+~w~On se retrouve pour la prochaine course... dans mon rétro !
-[TEX1_0:SERG1]
-~g~La cible est à ta portée, en train de jouer au golf. Fais en sorte que ce soit sa dernière partie!
+{=================================== MISSION TABLE BIK1 ===================================}
-[TEX1_3:SERG1]
-C'est qui ce mec? Occupez-vous de lui!
+[BIK1_A0:BIK1]
+~w~Tu crois que tu peux me battre ? Tu délires !
-[TEX1_6:SERG1]
-Quel beau cul!
+[BIK1_A1:BIK1]
+~w~Amène ta bécane sur la ligne de départ et réglons ça !
-[TEX1_7:SERG1]
-C'est moi, ça?
+{=================================== MISSION TABLE BIK2 ===================================}
-[TEX1_8:SERG1]
-Chaque fois que tu ouvres ton caddie, tu reçois automatiquement un club de golf si ton emplacement d'arme de corps à corps est vide.
+[BIK2_A0:BIK2]
+~w~Tu rêves si tu crois pouvoir me battre ! Le réveil va être brutal !
-[TEX1_9:SERG1]
-Attrapez-le!
+[BIK2_A1:BIK2]
+~w~On se retrouve sur la ligne de départ.
-[TEX1_10:SERG1]
-Tuez-moi ce dingue!
+{=================================== MISSION TABLE BIK3 ===================================}
-[TEX1_1:SERG1]
-~g~Va chercher des fringues de golfeur chez Jocksport's.
+[BIK3_A0:BIK3]
+~w~C'est hyper simple. Sur deux roues, j'suis imbattable ! On va régler ça dans la rue.
-{=================================== MISSION TABLE SERG2 ===================================}
+{=================================== MISSION TABLE TT1 ===================================}
-[TEXEXIT:SERG2]
-~g~Maintenant, casse-toi de Little Haiti!
+[TT1_A0:TT1]
+~w~~k~ ~AMBUY~ ~w~pour participer. ~n~~k~ ~AMEXI~ ~w~pour quitter.
-[TEX_2A:SERG2]
-~g~Parfait! Ils t'ont repéré!
+[TT1_0:TT1]
+Temps
-[TEX_2B:SERG2]
-~r~Imbécile! Les gens doivent VOIR un cubain faire le coup!
+[TT1_1:TT1]
+~w~Nouveau record au tour : ~1~:~1~
-[TEX_2C:SERG2]
-~g~Va te trouver des fringues de cubain dans Little Havana!
+[TT1_1A:TT1]
+~w~Nouveau record au tour : ~1~:0~1~
-[TEX_2D:SERG2]
-~g~Maintenant, liquide le chef de gang haïtien au salon funéraire Romero!
+[TT1_C1:TT1]
+~w~3
-[TEX2_A:SERG2]
-Tommy, voici Donald Love. Donald, Tommy Vercetti,
+[TT1_C2:TT1]
+~w~2
-[TEX2_B:SERG2]
-la dernière crapule à débarquer ici.
+[TT1_C3:TT1]
+~w~1
-[TEX2_C:SERG2]
-Ouais... Euh...
+[TT1_C4:TT1]
+~w~GO !!
-[TEX2_D:SERG2]
-Donald, ferme-la et écoute, t'apprendras peut-être quelque chose.
+[TT1_D1A:TT1]
+~w~Hauteur saut : ~1~ pieds
-[TEX2_E:SERG2]
-Bon. Il y a rien de mieux qu'une bonne guerre des gangs pour faire baisser les prix de l'immobilier.
+[TT1_D2:TT1]
+~w~Tour ~1~ Temps : ~1~:~1~
-[TEX2_F:SERG2]
-A part une catastrophe, peut-être, comme une peste biblique ou un truc dans le genre.
+[TT1_D3:TT1]
+~w~Tour ~1~ Temps : ~1~:0~1~
-[TEX2_G:SERG2]
-Mais ça serait aller un peu trop loin, dans le cas présent.
+[TT1_D4:TT1]
+~w~Tour
-[TEX2_H:SERG2]
-Tu piges, tête de gland?
+[TT1_F2:TT1]
+~r~T'as quitté le circuit !
-[TEX2_I:SERG2]
-Un chef du gang haïtien est mort y'a pas longtemps. C'est apparemment un coup des Cubains, mais personne en est sûr.
+[TT1_F3:TT1]
+~r~T'as détruit la moto !
-[TEX2_J:SERG2]
-Alors on va arranger ça! Tu te déguises en Cubain
+[TT1_D5A:TT1]
+~w~Hauteur saut : ~1~ pieds - 10$ de bonus!
-[TEX2_K:SERG2]
-et tu fonces foutre le bordel aux funérailles. Tu leur balances la sauce et tu dégages vite fait.
+[TT1_D1:TT1]
+~w~Hauteur saut : ~1~ mètres
-[TEX2_L:SERG2]
-T'as compris, Donald?
+[TT1_D5:TT1]
+~w~Hauteur saut : ~1~ mètres - 10$ de bonus !
-[TEX2_M:SERG2]
-C'est comme faire entrer le renard dans le poulailler, hein?
+[TT1_2:TT1]
+~w~T'as battu le temps cible ! Nouveau circuit débloqué : 100$ de bonus !
-[TEX2_N:SERG2]
-Et puis on attend tranquillement que les prix s'écroulent.
+[TT1_3:TT1]
+~w~T'as battu le temps cible ! 100$ de bonus !
-{=================================== MISSION TABLE SERG3 ===================================}
+[TTDONE:TT1]
+~w~Tous les circuits terminés ! T'as débloqué la Manchez.
-[TEX3_A:SERG3]
-Regarde un peu, mon pote. J'ai un problème et je compte sur ton aide.
+[TT1_2A:TT1]
+~r~T'as pas battu le temps cible.
-[TEX3_B:SERG3]
-Je suis pas constructeur.
+[TT1_2B:TT1]
+~r~T'as pas battu le record du circuit.
-[TEX3_C:SERG3]
-Ben, je pensais surtout à tes talents de démolisseur.
+{=================================== MISSION TABLE RCR ===================================}
-[TEX3_D:SERG3]
-Bon, là, c'est le développement prévu, et ça,
+[RCRACE3:RCR]
+~w~Essaie de battre les autres véhicules radiocommandés dans une course en ~1~ tour(s), autour du parc.
-[TEX3_E:SERG3]
-c'est la propriété sur laquelle on a des vues.
+[RCRACE4:RCR]
+~w~Essaie de battre les autres véhicules radiocommandés dans une course en ~1~ tour(s), autour de l'aéroport.
-[TEX3_F:SERG3]
-T'essayes de me dire que ce nouveau bloc de bureaux est comme qui dirait sur le chemin.
+[RCRACE7:RCR]
+~w~Prêt ?
-[TEX3_G:SERG3]
-T'as tout compris.
+[RCRLAP5:RCR]
+~w~Nouveau record au tour de ~1~ secondes !
-[TEX3_H:SERG3]
-Bon, je vais aller faire un tour en ville pendant un moment
+[RCRLAP6:RCR]
+~w~Encore ~1~ tours !
-[TEX3_I:SERG3]
-et si la construction de ces bureaux devait faire face à de subits et insurmontables problèmes structurels, alors je...
+[RCRLAP7:RCR]
+~w~Dernier tour !
-[TEX3_J:SERG3]
-En tant qu'honnête citoyen, vous vous sentiriez obligé d'intervenir
+[RCRLTME:RCR]
+Temps au tour
-[TEX3_K:SERG3]
-pour la réhabilitation d'un important secteur de la ville?
+[RCRLOSE:RCR]
+~r~T'as perdu ! T'es qu'un loser !
-[TEX3_L:SERG3]
-Où on peut en trouver d'autres, des mecs dans ton genre?
+[RCRLOS2:RCR]
+~r~Tu gagneras jamais la course si t'arrives pas à rester sur le circuit !
-[TEX3_1:SERG3]
-~g~Utilise l'hélico télécommandé pour transporter des bombes sur les quatre cibles du bâtiment que tu dois détruire.
+[RCRTIME:RCR]
+~w~T'as ~h~~1~ ~w~secondes pour revenir sur le circuit !
-[TEX3_2:SERG3]
-~g~Tu dois larguer une bombe sur chaque cible, et ce, dans n'importe quel ordre.
+[RCRWIN1:RCR]
+~w~Bravo, t'as GAGNE ! Mais t'as pas battu le meilleur temps au tour.
-[TEX3_5:SERG3]
-~g~Si tu largues une bombe sans succès, tu peux la récupérer pour un nouvel essai.
+[RCRWIN2:RCR]
+~w~Ta prochaine course sera en ~1~ tours !
-[TEX3_7:SERG3]
-~g~Tu a alors 7 minutes pour larguer toutes les autres bombes!
+[RCRWIN3:RCR]
+~w~Course RC de Belleville Park, à Staunton, maintenant disponible.
-[TEX3_8:SERG3]
-~g~Tu as raté la cible! Récupère la bombe et réessaye!
+[RCRWIN4:RCR]
+~w~Course RC de Shoreside Airport maintenant disponible.
-[TEX3_10:SERG3]
-~g~Largue la bombe sur la cible.
+[RCRWIN5:RCR]
+~w~T'as fini tous les niveaux ! Recommence pour battre tes meilleurs temps au tour !
-[TEX3_11:SERG3]
-Cibles restantes:
+[RCR1:RCR]
+~w~1
-[TEX3_17:SERG3]
-~r~Tu as dépassé le temps imparti et le bâtiment n'est pas détruit.
+[RCR2:RCR]
+~w~2
-[TEX3_18:SERG3]
-~r~Ton hélico télécommandé a été détruit! Comment vas-tu faire pour transporter les bombes, maintenant?
+[RCR3:RCR]
+~w~3
-[TEX3_19:SERG3]
-~r~Tu as largué ta bombe dans l'eau! Tu as besoin des 4 bombes pour détruire le bâtiment!
+[RCRGO:RCR]
+~w~GO !
-[TEX3_20:SERG3]
-~g~Ton hélico télécommandé est presque hors de portée! Retourne au bâtiment et termine le travail!
+[RCBLAP:RCR]
+Meilleur temps au tour : ~1~:~1~
-[TEX3_21:SERG3]
-~r~Ton hélico télécommandé est hors de portée!
+[RCBLAP1:RCR]
+Meil. temps/tour : ~1~:0~1~
-[TEX3_24:SERG3]
-Appuie sur ~h~~k~~VEHICLE_LOOKLEFT~ ~w~pour faire pivoter l'hélico dans le sens inverse des aiguilles d'une montre.
+[RCBLA2:RCR]
+Temps record au tour : ~1~:~1~
-[TEX3_25:SERG3]
-Appuie sur ~h~~k~~VEHICLE_LOOKLEFT~ ~w~pour faire pivoter l'hélico dans le sens des aiguilles d'une montre.
+[RCBLA3:RCR]
+Record temps/tour : ~1~:0~1~
-[TEX3_27:SERG3]
-~g~L'escalier central mène à tous les étages du bâtiment.
+[RCRRLA1:RCR]
+~w~Nouveau record temps au tour : ~1~:~1~
-[TEX3_31:SERG3]
-~r~Tu as détruit la camionnette qui contenait l'hélico télécommandé et les bombes!
+[RCRRLA2:RCR]
+~w~Nouv. record temps/tour : ~1~:0~1~
-[TEX3_32:SERG3]
-Tu peux ~h~regarder derrière~w~ toi en ~h~appuyant simultanément sur ~k~~VEHICLE_LOOKLEFT~ et ~k~~VEHICLE_LOOKRIGHT~~w~.
+[RCRACEA:RCR]
+Thrashin' RC
-[TEX3_4:SERG3] { reVC update }
-~g~Pour larguer une bombe, appuie sur la~h~ ~k~~VEHICLE_FIREWEAPON~~w~.
+[RCRACEB:RCR]
+Ragin' RC
-[TEX3_29:SERG3] { reVC update }
-Pour larguer une bombe, appuie sur la~h~ ~k~~VEHICLE_FIREWEAPON~.
+[RCRACEC:RCR]
+Chasin' RC
-[TEX3_26:SERG3]
-Appuie sur la ~h~~k~~VEHICLE_BRAKE~ ~w~pour réduire la vitesse du rotor et ainsi faire~h~ descendre l'hélicoptère.
+[RCLE11:RCR]
+Thrashin' RC NIVEAU 1
-[TEX3_22:SERG3]
-Appuie sur la ~h~~k~~VEHICLE_ACCELERATE~ ~w~pour augmenter la vitesse du rotor et ainsi faire~h~ monter l'hélicoptère.
+[RCLE12:RCR]
+Thrashin' RC NIVEAU 2
-[TEX3_16:SERG3]
-~g~Va jusqu'au camion ~w~TOPFUN ~g~ près du bâtiment à démolir.
+[RCLE13:RCR]
+Thrashin' RC NIVEAU 3
-[TEX3_33:SERG3]
-Une fois que tu as ramassé une bombe, le radar t'indique la position de la cible par rapport à l'hélico.
+[RCLE21:RCR]
+Ragin' RC NIVEAU 1
-[TEX3_34:SERG3]
-Le ~h~point triangulaire vers le haut ~w~indique que la cible se trouve ~h~au-dessus ~w~de l'hélicoptère radiocommandé.
+[RCLE22:RCR]
+Ragin' RC NIVEAU 2
-[TEX3_35:SERG3]
-Le ~h~point triangulaire vers le bas ~w~indique que la cible se trouve ~h~en dessous ~w~de l'hélicoptère radiocommandé.
+[RCLE23:RCR]
+Ragin' RC NIVEAU 3
-[TEX3_36:SERG3]
-Le ~h~point carré ~w~indique que la cible se trouve ~h~au même niveau ~w~que l'hélicoptère radiocommandé.
+[RCLE31:RCR]
+Chasin' RC NIVEAU 1
-[TEX3_6:SERG3]
-~g~Une fois que tu as ramassé une bombe pour la première fois, le compte à rebours s'enclenche.
+[RCLE32:RCR]
+Chasin' RC NIVEAU 2
-[TEX3_28:SERG3]
-Pour ~h~ramasser une bombe~w~, manoeuvre l'hélico radiocommandé à côté. Il ne peut transporter qu'une seule bombe à la fois.
+[RCLE33:RCR]
+Chasin' RC NIVEAU 3
-[TEX3_30:SERG3]
-~g~Pour ramasser une bombe, manoeuvre l'hélico radiocommandé à côté. Il ne peut transporter qu'une seule bombe à la fois.
+[RCRACE2:RCR]
+~w~Essaie de battre les autres véhicules radiocommandés dans une course en ~1~ tour(s), autour du chantier !
-[TEX3_12:SERG3]
-~g~Bombe posée! Plus que 3 cibles! Va chercher une autre bombe!
+[RCRWIN6:RCR]
+~w~Recommence la course pour battre ton meilleur temps au tour !
-[TEX3_13:SERG3]
-~g~Bombe posée! Plus que 2 cibles! Va chercher une autre bombe!
+[RCQUIT:RCR]
+~r~Tes batteries sont à plat ?
-[TEX3_14:SERG3]
-~g~Bombe posée! Plus qu'une cible! Va chercher une autre bombe!
+[RCRFAIL:RCR]
+~r~T'es pas arrivé premier !
-[TEX3_15:SERG3]
-~r~Compte à rebours enclenché! ~g~Tu dois poser les ~w~4 bombes ~g~avant la fin du temps imparti!
+[RCRLAP1:RCR]
+~c~1ER ~w~TOUR
-[TEX3_37:SERG3]
-Pousse le ~h~joystick analogique droit vers le haut ~w~pour vitesse la vitesse du rotor et ainsi faire ~h~ monter l'hélicoptère.
+[RCRLAP2:RCR]
+~c~2E ~w~-TOUR
-[TEX3_38:SERG3] { reVC update }
-{Pousse le ~h~~k~~VEHICLE_ACCELERATE~ ~w~pour augmenter la réduire du rotor et ainsi faire ~h~ descendre l'hélicoptère.}
-Pousse le ~h~joystick analogique droit vers la bas ~w~pour augmenter la réduire du rotor et ainsi faire ~h~ descendre l'hélicoptère.
+[RCRLAP3:RCR]
+~c~3E ~w~TOUR
-[TEX3_39:SERG3]
-~g~Appuie sur la touche ~h~~k~~VEHICLE_HANDBRAKE~ ~g~pour larguer une bombe.
+[RCRLAP4:RCR]
+~c~4E ~w~TOUR
-[TEX3_40:SERG3]
-Appuie sur la touche ~h~~k~~VEHICLE_HANDBRAKE~ ~w~pour larguer une bombe.
+[RCRWIN:RCR]
+~w~Bravo, t'as gagné et inscrit le meilleur temps au tour, avec ~1~:~1~ ! Voici un bonus de 500$ !
-[TEX3_23:SERG3]
-Appuyer sur les touches ~h~~k~~VEHICLE_TURRETUP~~w~ et ~h~~k~~VEHICLE_TURRETDOWN~~w~ pour orienter l'hélicoptère dans la direction souhaitée.
+[RCRWINB:RCR]
+~w~Bravo, t'as gagné et inscrit le meilleur temps au tour, avec ~1~:0~1~ ! Voici un bonus de 500$ !
-{=================================== MISSION TABLE TAXI1 ===================================}
+{=================================== MISSION TABLE TOUR ===================================}
-[FARES:TAXI1]
-CLIENTS:
+[TOUR_H1:TOUR]
+~w~Astuces photo : place-toi ~h~face~w~ au touriste, ~h~mais pas trop loin~w~. Veille à ce que ~h~le touriste et le décor~w~ soient bien sur la photo.
-[TAXI1:TAXI1]
-Cherche une course.
+[TOUR_I2:TOUR]
+~w~Tu obtiens des primes pour les photos de grande qualité !
-[TSCORE2:TAXI1]
-~1~$
+[TOUR_S0:TOUR]
+~w~Il te reste ~h~~1~~w~ photos à prendre.
+
+[TOUR_S1:TOUR]
+~w~Il te reste une photo ! Tâche de pas la rater !
+
+[TOUR_S2:TOUR]
+~w~Ne gâche pas tes photos ! Il t'en reste ~h~~1~.
+
+[TOUR_S4:TOUR]
+~w~Tu dois bien cadrer le ~b~touriste~w~ ! Il te reste ~h~~1~~w~ photos à prendre.
+
+[TOUR_F1:TOUR]
+~r~Le touriste est mort !
+
+[TOUR_F2:TOUR]
+~r~T'as perdu le touriste !
+
+[TOUR_F3:TOUR]
+~r~T'as pas pris de photo du touriste !
+
+[TOUR_F4:TOUR]
+~r~T'avais plus assez de temps !
+
+[TOUR_F5:TOUR]
+~r~Mission Touriste annulée.
+
+[TOUR_F6:TOUR]
+~r~L'agresseur s'est tiré avec l'appareil photo du touriste !
+
+[TOUR_O1:TOUR]
+~w~Emmène le touriste sur le ~y~lieu touristique.
+
+[TOUR_O2:TOUR]
+~w~Ne laisse pas tomber le ~b~touriste !
+
+[TOUR_O3:TOUR]
+~w~Suis le ~b~touriste~w~ à pied jusqu'au lieu de la photo.
+
+[TOUR_O4:TOUR]
+~w~Utilise l'appareil photo du ~b~touriste~w~ pour prendre le cliché.
+
+[TOUR_O5:TOUR]
+~w~Ramène le touriste à l'~y~aéroport.
+
+[TOUR_O6:TOUR]
+~w~Vite ! T'as plus beaucoup de temps !
+
+[TOUR_O7:TOUR]
+~w~Récupère le ~b~touriste.
+
+[TOUR_O8:TOUR]
+~w~Récupère le ~b~touriste~w~ suivant avant la fin du chrono.
+
+[TOUR_O9:TOUR]
+~w~Tu devrais suivre le ~b~touriste~w~. Tu perds du temps !
+
+[TOUR_OA:TOUR]
+~w~Le ~b~touriste~w~ t'attend pour prendre la photo. Dépêche-toi, t'as plus beaucoup de temps !
+
+[TOUR_W1:TOUR]
+~w~Paie reçue : ~h~~1~$~w~ Désolé, pas de bonus cette fois-ci.
+
+[TOUR_W2:TOUR]
+~w~Paie reçue : ~h~~1~$~w~ plus ~h~~1~$~w~ de bonus pour une bonne photo !
+
+[TOUR_W3:TOUR]
+~w~Paie reçue : ~h~~1~$~w~ plus ~h~~1~$~w~ de bonus pour une super photo !
+
+[TOUR_W4:TOUR]
+~w~Paie reçue : ~h~~1~$~w~ plus ~h~~1~$~w~ de bonus pour une excellente photo !
+
+[TOUR_W5:TOUR]
+~w~Bien joué ! T'as terminé toutes les missions 'Sights before Flights'. ~1~$ de bonus !
+
+[TOURDAM:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~emmène ce touriste à Cochrane Dam et prends une photo attestant de sa présence !
+
+[TOURBRI:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~cette dame veut voir Callahan Bridge, depuis Portland.
+
+[TOURDRK:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~prends une photo de cette fan de cinéma devant la maison de l'acteur Black Lightman, sur Cedar Grove, à Shoreside Vale.
+
+[TOURSTA:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~prends une photo de cette fan de sport devant le Liberty Memorial Coliseum, sur Staunton.
-[IN_ROW:TAXI1]
-~1~ DE SUITE! Bonus : ~1~$
+[TOURCHU:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~emmène ce pèlerin à la célèbre Liberty Cathedral, sur Staunton.
-[TAXI3:TAXI1]
-~r~Ton client est parti terrorisé!
+[TOURBCH:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~montre le merveilleux panorama de Portland Rock et de son phare depuis Portland Beach à cette touriste.
-[TAXI7:TAXI1]
-~r~Ta voiture est endommagée. Fais-la réparer.
+[TOURCHI:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~l'ambiance orientale de Chinatown Plaza, à Portland, est la destination exotique que recherche ce touriste.
-[TAXI4:TAXI1]
-La course est finie!
+[TOURSHO:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~cette touriste veut que ses amies pensent qu'elle a fait son shopping au très chic Staunton Shopping Mall. Emmène-la sur place et prends-la en photo !
-[TAXI5:TAXI1]
-BONUS DE VITESSE!
+[TOURCAS:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~ce joueur invétéré veut que tu prennes sa photo devant le célèbre Casino sur Staunton.
-[TAXI6:TAXI1]
-La mission taxi est finie
+[TOURMUS:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~cette universitaire veut visiter le Liberty City Museum sur Staunton, et obtenir une photo qui montre la taille impressionnante du bâtiment.
-[TAXIH1:TAXI1]
-Arrête-toi près d'un piéton mis en évidence pour qu'il monte, puis conduis-le à destination avant la fin du temps imparti.
+[TOURHAL:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~ce touriste veut visiter l'hôtel de ville sur Staunton, une dernière fois avant de partir.
-[FARE1:TAXI1]
-~g~Destination ~w~'le Pole Position Club' ~g~à Ocean Beach.
+[TOURRED:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~les amis de ce touriste prétendent qu'il n'a pas assez de cran pour visiter un club de striptease du quartier Red Light de Portland. Prouve-leur le contraire !
-[FARE3:TAXI1]
-~g~Destination ~w~'le Marina' ~g~à Ocean Beach.
+[TOURMU0:TOUR]
+~w~L'~r~agresseur~w~ a volé l'appareil photo ! Récupère-le !
-[FARE4:TAXI1]
-~g~Destination ~w~'Ammu-Nation' ~g~à Ocean Beach.
+[TOURMU1:TOUR]
+~w~Ca fait un criminel de moins dans les rues ! Ramasse l'~g~appareil photo !
-[FARE5:TAXI1]
-~g~Destination ~w~'la quincaillerie' ~g~à Washington Beach.
+[TOUR00:TOUR]
+~w~Emmène le touriste au ~y~Cochrane Dam~w~, à Shoreside Vale.
-[FARE6:TAXI1]
-~g~Destination ~w~'le centre commercial de North Point' ~g~à Vice Point.
+[TOUR01:TOUR]
+~w~Emmène la touriste au ~y~Liberty Memorial Coliseum~w~, sur Staunton.
-[MFARE1:TAXI1]
-~g~Destination ~w~'Ammu-Nation' ~g~dans le Centre.
+[TOUR02:TOUR]
+~w~Emmène le touriste au ~y~Chinatown Plaza~w~, à Portland.
-[MFARE2:TAXI1]
-~g~Destination ~w~'le Terminal' ~g~à l'aéroport International Escobar.
+[TOUR03:TOUR]
+~w~Emmène le touriste à la ~y~Liberty Cathedral~w~, sur Staunton.
-[WFARE3:TAXI1]
-~g~Destination ~w~'Sunshine Autos' ~g~dans Little Havana.
+[TOUR06:TOUR]
+~w~Emmène le touriste au ~y~club de striptease~w~ du Red Light District de Portland.
-[WFARE4:TAXI1]
-~g~Destination ~w~'les taxis Kaufman' ~g~dans Little Haiti.
+[TOUR07:TOUR]
+~w~Emmène le touriste au ~y~Liberty City Museum~w~, sur Staunton.
-[WFARE5:TAXI1]
-~g~Destination ~w~'la quincaillerie' ~g~dans Little Havana.
+[TOUR08:TOUR]
+~w~Emmène le touriste au ~y~casino~w~, sur Staunton.
-[WFARE6:TAXI1]
-~g~Destination ~w~'Howlin Petes Bike Emporium' ~g~dans le Centre.
+[TOUR10:TOUR]
+~w~Emmène le touriste à l'~y~hôtel de ville~w~ de Staunton.
-[FARE7:TAXI1]
-~g~Destination ~w~'Les bijoutiers' ~g~à Vice Point.
+[TOUR11:TOUR]
+~w~Emmène le touriste à ~y~Portland Beach.
-[FARE8:TAXI1]
-~g~Destination ~w~'la plage' ~g~à Ocean Beach.
+[TOUR04:TOUR]
+~w~Emmène la touriste au ~y~Callahan Bridge~w~, côté Portland.
-[FARE9:TAXI1]
-~g~Destination ~w~'la plage' ~g~à Washington Beach.
+[TOUR09:TOUR]
+~w~Emmène la touriste voir la maison de l'acteur ~y~Black Lightman~w~, sur Cedar Grove, à Shoreside Vale.
-[FARE10:TAXI1]
-~g~Destination ~w~'la plage' ~g~à Vice Point.
+[TOUR_I1:TOUR]
+~w~Escorte des touristes jusqu'aux hauts lieux de Liberty City.
-[FARE11:TAXI1]
-~g~Destination ~w~'l'hôpital' ~g~à Ocean Beach.
+[TOUR_IA:TOUR]
+~w~Une fois sur place, prends-les en photo.
-[FARE12:TAXI1]
-~g~Destination ~w~'l'hôpital' ~g~à Vice Point.
+[TOUR_IB:TOUR]
+~w~Puis ramène-les avant que leur avion ne décolle.
-[FARE13:TAXI1]
-~g~Destination ~w~'le commissariat de police' ~g~à Washington Beach.
+[TOURMEM:TOUR]
+~w~LIEU TOURISTIQUE ~1~ : ~w~ce vétéran veut rendre hommage à ses compagnons disparus au Liberty City War Memorial, à Belleville Park, sur Staunton.
-[FARE14:TAXI1]
-~g~Destination ~w~'le commissariat de police' ~g~à Vice Point.
+[TOUR05:TOUR]
+~w~Emmène le touriste au ~y~Liberty City War Memorial~w~ à Belleville Park, sur Staunton.
-[FARE15:TAXI1]
-~g~Destination ~w~'le restaurant de pizza' ~g~à Vice Point.
+{=================================== MISSION TABLE PIZZA ===================================}
-[WFARE7:TAXI1]
-~g~Destination ~w~'le commissariat de police' ~g~à Little Havana.
+[PIZ1_06:PIZZA]
+~w~Appuie sur~h~ ~k~ ~TGSUB~ ~w~une fois sur la mob pour annuler la mission.
-[WFARE8:TAXI1]
-~g~Destination ~w~'le commissariat de police' ~g~à Downtown.
+[PIZ1_02:PIZZA]
+~w~T'as plus de pizza ! Retourne chez ~y~Joe's Pizza~w~ pour en prendre d'autres.
-[WFARE9:TAXI1]
-~g~Destination ~w~'l'hôpital' ~g~à Downtown.
+[PIZ1_07:PIZZA]
+~r~T'as tué le client ! T'es viré !
-[WFARE10:TAXI1]
-~g~Destination ~w~'l'hôpital' ~g~à Little Havana.
+[PIZ1_08:PIZZA]
+~r~T'as plus de temps... ni de boulot !
-[WFARE11:TAXI1]
-~g~Destination ~w~'le stade' ~g~à Downtown.
+[PIZ1_09:PIZZA]
+~r~T'as bousillé notre mob ! Tire-toi !
-[WFARE12:TAXI1]
-~g~Destination ~w~'le restaurant de pizza' ~g~à Little Haiti.
+[PIZ1_11:PIZZA]
+~w~Il te faut la ~b~mob~w~ Pizza pour livrer les commandes !
-[WFARE13:TAXI1]
-~g~Destination ~w~'le restaurant de pizza' ~g~à Downtown.
+[PIZ1_12:PIZZA]
+Pizzas
-[WFARE14:TAXI1]
-~g~Destination ~w~'les docks' ~g~à Viceport.
+[PIZ1_13:PIZZA]
+~w~Pizza ! Chaude et prête à emporter ! J'adore !
-[WFARE15:TAXI1]
-~g~Destination ~w~'la pharmacie' ~g~à Little Haiti.
+[PIZ1_14:PIZZA]
+~w~Prêtes pour livraison ! ... Alors va livrer !
-[FARE2:TAXI1]
-~g~Destination ~w~'le Malibu club' ~g~à Vice Point.
+[PIZ1_15:PIZZA]
+~w~Avec un supplément de sauce piquante !
-{=================================== MISSION TABLE TAXICUT ===================================}
+[PIZ1_16:PIZZA]
+~w~Sors-toi les doigts du cul et va les livrer, fissa !
-[TAXC_A:TAXICUT]
-J'imagine que t'es le nouveau proprio.
+[PIZ1_17:PIZZA]
+~w~Faut livrer ces pizzas aujourd'hui... pas l'an prochain !
-[TAXC_B:TAXICUT]
-D'où tu sors? La Mafia? Le Cartel? T'as pas l'air mexicain...
+[PIZ1_18:PIZZA]
+~w~Tu veux pas te rabaisser à livrer des pizzas ? Mille excuses, monseigneur !
-[TAXC_C:TAXICUT]
-Quoi qu'il en soit, tu ferais mieux de continuer avec le barratin comme quoi les choses vont changer,
+[PIZ1_19:PIZZA]
+~w~Bon, tu vas les livrer ou pas ?
-[TAXC_D:TAXICUT]
-peut-être même menacer des conducteurs...
+[PIZ1_20:PIZZA]
+~w~T'es viré ! ... Je plaisante. Mais t'as intérêt à ce qu'elles soient livrées à temps !
-[TAXC_E:TAXICUT]
-Vas-y mollo avec Ted là-bas, on vient juste de lui soigner son hernie.
+[PIZ1_21:PIZZA]
+~w~Chaudes les pizzas ! Allez ! On a des obèses qu'attendent !
-[TAXC_F:TAXICUT]
-Eh bien, ouais. Les choses vont changer dans le coin, madame.
+[PIZ1_22:PIZZA]
+~w~T'as craché sur les pizzas ? Non ? ... Tu devrais ! Ca donne du goût !
-[TAXC_G:TAXICUT]
-Arrête tes conneries, petit. Vaut mieux que tu me laisses faire.
+[PIZ1_23:PIZZA]
+~w~Non mais tu crois qu'elles vont se livrer toutes seules ?
-[TAXC_H:TAXICUT]
-Ca fait des années que je suis dans ce genre de biz.
+[PIZ1_24:PIZZA]
+~w~Si elles sont froides en arrivant, tu vas t'attirer tout un tas de problèmes !
-[TAXC_I:TAXICUT]
-Ecoutez tous.
+[PIZ1_25:PIZZA]
+~w~Et bouge-toi un peu cette fois !
-[TAXC_J:TAXICUT]
-On a une nouvelle direction et les choses vont encore changer dans le coin.
+[PIZ1_26:PIZZA]
+~w~Hé, va livrer ces pizzas !
-[TAXC_K:TAXICUT]
-Notre nouvelle direction, la...
+[PIZ1_27:PIZZA]
+~w~OK, va les livrer et reviens en chercher d'autres !
-[TAXC_L:TAXICUT]
-Tu fais partie de quel gang?
+[PIZ1_28:PIZZA]
+~w~Nos pizzas assurent ! Alors, assure, toi aussi, sinon t'auras des emmerdes !
-[TAXC_M:TAXICUT]
-En fait, je fais pas partie d'un gang...
+[PIZ1_29:PIZZA]
+~w~T'en redemandes ? Mais t'es un vrai morfal !
-[TAXC_N:TAXICUT]
-C'est quoi ton foutu nom, petit?
+[PIZ1_30:PIZZA]
+~w~Je crois que j'ai éternué sur une de ces pizzas... Pas grave... Va les livrer !
-[TAXC_O:TAXICUT]
-Vercetti, Tommy Vercetti.
+[PIZ1_31:PIZZA]
+~w~Je déteste ce job ! Mais au moins, ça me donne le droit de te maltraiter...
-[TAXC_P:TAXICUT]
-Notre nouvelle direction, le gang Vercetti,
+[PIZ1_3A:PIZZA]
+~w~Si ces pizzas arrivent pas à l'heure, tu peux faire une croix sur ta thune !
-[TAXC_Q:TAXICUT]
-va veiller à nous éviter les emmerdes.
+[PIZ1_32:PIZZA]
+~r~Nos pizzas sont pas digestes ?
-[TAXC_R:TAXICUT]
-Capiche? Terminé!
+[PIZ1_33:PIZZA]
+~w~Retourne chez ~y~Joe's Pizza~w~ pour de nouvelles commandes.
-[TAXC_S:TAXICUT]
-Qu'est-ce que t'as pensé du 'capiche'? Moi, j'ai bien aimé le 'capiche'.
+[PIZ1_34:PIZZA]
+~w~Une livraison égale plus de pognon !
-[TAXC_T:TAXICUT]
-Bon, alors c'est comme ça que ça marchait avant
+[PIZ_WON:PIZZA]
+~w~Défi Pizza terminé ! Bien joué ! Ta santé maximale a augmenté !
-[TAXC_U:TAXICUT]
-et on va continuer à faire tourner l'entreprise comme ça.
+[PIZ_WO1:PIZZA]
+~w~Joe's Pizza Restaurant est désormais sous ta 'protection'. Pense à encaisser régulièrement les paiements.
-[TAXC_V:TAXICUT]
-Si on a des ennuis avec une compagnie concurrente, tu leur flanques une dérouillée.
+[PIZ1_01:PIZZA]
+~w~Livre ces pizzas à nos ~b~clients~w~ aussi vite que possible.
-[TAXC_W:TAXICUT]
-Puis ils nous flanquent une dérouillée.
+[PIZ1_05:PIZZA]
+~w~Passe en mob à côté d'un client pour lui filer sa pizza.
-[TAXC_X:TAXICUT]
-puis tu leur flanques une dérouillée,
+{=================================== MISSION TABLE TAXI ===================================}
-[TAXC_Y:TAXICUT]
-et cetera et cetera. T'as pigé?
+[TAXI1:TAXI]
+~w~Cherche une ~b~course.
-[TAXC_Z:TAXICUT]
-Euh, ouais, je crois...
+[TAXI1A:TAXI]
+~w~Il n'y a pas de course par ici. Continue à chercher !
-[TAXC_A1:TAXICUT]
-Prends simplement un taxi au garage si tu te sens de bosser.
+[TAXI2:TAXI]
+~r~T'as plus le temps !
-{=================================== MISSION TABLE TAXIWA1 ===================================}
+[TAXI3:TAXI]
+~w~Ton passager s'est enfui, terrorisé !
-[OUTTIME:TAXIWA1]
-~r~T'es trop lent, mec, trop lent!
+[TAXI4:TAXI]
+~w~Course terminée : ~1~$
-[TAX1_1:TAXIWA1]
-Ok, on a un client rupin qui a besoin d'être ramassé à Starfish island, ça intéresse quelqu'un?
+[TAXI4A:TAXI]
+~w~Course terminée : ~1~$ + bonus ~1~ A LA SUITE ! ~1~$
-[TAX1_2:TAXIWA1]
-Ici, Tommy, je prends!
+[TAXI5:TAXI]
+~w~BONUS VITESSE : ~1~$
-[TAX1_3:TAXIWA1]
-C'est mon client, dégage!
+[TAXI5A:TAXI]
+~w~BONUS VITESSE : ~1~$ + bonus ~1~ A LA SUITE ! ~1~$
-[TAX1_4:TAXIWA1]
-Allez, vite, monte!
+[TAXI7:TAXI]
+~w~Va faire réparer ton épave !
-[TAX1_5:TAXIWA1]
-Ok, ok, mais ne me faites pas de mal!
+[TAXI8:TAXI]
+~r~Mission Taxi annulée.
-[TAXW1_1:TAXIWA1]
-~g~Va prendre le V.I.P. sur Starfish Island.
+[TAXI9:TAXI]
+~r~Ton taxi est en ruine !
-[TAXW1_2:TAXIWA1]
-~g~Ramène le V.I.P.! Bousille l'autre bagnole!
+[FARES:TAXI]
+Courses
-[TAXW1_3:TAXIWA1]
-~r~Le V.I.P. est mort!
+[TIP:TAXI]
+Pourboire
-[TAXW1_4:TAXIWA1]
-~r~Le V.I.P. a été déposé!
+[FARE9:TAXI]
+~w~Destination : ~y~Portland Docks.
-[TAXW1_6:TAXIWA1]
-~g~Emmène le V.I.P. à l'aéroport!
+[FARE20:TAXI]
+~w~Destination : ~y~parc~w~, Belleville.
-{=================================== MISSION TABLE TAXIWA2 ===================================}
+[FARE22:TAXI]
+~w~Destination : ~y~Cochrane Dam.
-[TAX2_1:TAXIWA2]
-Appel à toutes les voitures, on perd des clients dans toute la ville! Qu'est-ce que vous foutez, les gars?
+[FARE2:TAXI]
+~w~Destination : ~y~Head Radio~w~, Harwood.
-[TAX2_2:TAXIWA2]
-Les taxis VC nous les prennent! Ils ont trop de voitures, on peut pas rivaliser!
+[FARE3:TAXI]
+~w~Destination : ~y~port des ferrys~w~, Harwood.
-[TAX2_3:TAXIWA2]
-Vercetti, si t'es en ville en train d'écouter, va falloir mettre quelques taxis VC hors circuit ou c'est la faillite!
+[FARE4:TAXI]
+~w~Destination : ~y~hôpital~w~, Portland View.
-[TAXW2_1:TAXIWA2]
-~g~Détruis 3 taxis concurrents!
+[FARE7:TAXI]
+~w~Destination : ~y~chantier~w~, Hepburn Heights.
-{=================================== MISSION TABLE TAXIWA3 ===================================}
+[FARE8:TAXI]
+~w~Destination : ~y~Cipriani Restaurant~w~, Saint Mark's.
-[TAX3_1:TAXIWA3]
-Voiture 13, on a une demoiselle Cortez à prendre dans le centre, elle vous a spécialement demandé.
+[FARE10:TAXI]
+~w~Destination : ~y~Punk Noodles~w~, Chinatown.
-[TAX3_2:TAXIWA3]
-Ok, je prends. Voiture 13 en course!
+[FARE12:TAXI]
+~w~Destination : ~y~port des ferrys~w~, Rockford.
-[TAX3_3:TAXIWA3]
-Hmmmm, aucun signe de Mercedes...
+[FARE13:TAXI]
+~w~Destination : ~y~église~w~, Bedford Point.
-[TAXW3_3:TAXIWA3]
-~g~Bousille le taxi leader!
+[FARE14:TAXI]
+~w~Destination : ~y~bureaux de Liberty Tree~w~, Bedford Point.
-[TAXW3_2:TAXIWA3]
-~g~Reste vivant jusqu'à la fin du temps imparti.
+[FARE15:TAXI]
+~w~Destination : ~y~université de Liberty~w~, Liberty Campus.
-[TAX_AS1:TAXIWA3]
-COMPAGNIE DE TAXIS ACQUISE
+[FARE16:TAXI]
+~w~Destination : ~y~Hogs 'n' Cogs~w~, Belleville Park Area.
-[TAX_AS2:TAXIWA3]
-~G~Les taxis Kaufman génère dorénavant un revenu de $~1~ maximum. Pense à récupérer le fric régulièrement.
+[FARE17:TAXI]
+~w~Destination : ~y~tribunal~w~, Belleville Park Area.
-[TAX3_4:TAXIWA3]
-L'heure est venue pour l'ange gardien des taxis Kaufman de froisser de la tôle!
+[FARE18:TAXI]
+~w~Destination : ~y~M. Benz~w~, Bedford Point.
-[TAX3_5:TAXIWA3]
-Hé mec, j'vais te bousiller ta caisse!
+[FARE19:TAXI]
+~w~Destination : ~y~Joe's Pizza~w~, Bedford Point.
-{ reVC updates }
-{ new languages }
-[FEL_JAP]
-JAPONAIS
+[FARE21:TAXI]
+~w~Destination : ~y~Terminal A~w~, Francis International Airport.
-[FEL_POL]
-POLONAIS
+[FARE23:TAXI]
+~w~Destination : ~y~manoir~w~, Cedar Grove.
-[FEL_RUS]
-RUSSE
+[FARE24:TAXI]
+~w~Destination : ~y~hôpital~w~, Pike Creek.
-{ new display menus }
-[FET_GFX]
-GRAPHICS SETUP
+[FARE25:TAXI]
+~w~Destination : ~y~parc~w~, Shoreside Vale.
-[FED_MIP]
-MIP MAPPING
+[FARE26:TAXI]
+~w~Destination : ~y~North West Towers~w~, Wichita Gardens.
-[FED_AAS]
-ANTI ALIASING
+[FARE27:TAXI]
+~w~Destination : ~y~dépôt de bus~w~, Trenton.
-[FED_FIL]
-TEXTURE FILTERING
+[FARE28:TAXI]
+~w~Destination : ~y~M. Benz~w~, Chinatown.
-[FED_BIL]
-BILINEAR
+[FARE29:TAXI]
+~w~Destination : ~y~M. Benz~w~, Pike Creek.
-[FED_TRL]
-TRILINEAR
+[FARE30:TAXI]
+~w~Destination : ~y~Terminal C~w~, Francis International Airport.
-[FED_WND]
-WINDOWED
+[FARE31:TAXI]
+~w~Destination : ~y~AM Petroleum~w~, Pike Creek.
-[FED_FLS]
-FULLSCREEN
+[FARE32:TAXI]
+~w~Destination : ~y~Liberty Pharmaceuticals~w~, Pike Creek.
-[FEM_CSB]
-CUTSCENE BORDERS
+[FARE11:TAXI]
+~w~Destination : ~y~armurerie Phil Cassidy Fully Cocked~w~, Bedford Point.
-[FEM_SCF]
-SCREEN FORMAT
+[FARE1A:TAXI]
+~w~Destination : ~y~Paulie's Revue Bar~w~, Red Light District.
-[FEM_ISL]
-MAP MEMORY USAGE
+[FARE1C:TAXI]
+~w~Destination : ~y~Sex Club Seven~w~, Red Light District.
-[FEM_LOW]
-LOW
+[FARE5:TAXI]
+~w~Destination : ~y~Ammu-Nation~w~, Red Light District.
-[FEM_MED]
-MEDIUM
+[FARE6:TAXI]
+~w~Destination : ~y~Capital Autos~w~, Saint Mark's.
-[FEM_HIG]
-HIGH
+{=================================== MISSION TABLE AMBU ===================================}
-[FEM_2PR]
-PS2 ALPHA TEST
+[A_FAIL2:AMBU]
+~r~Ton manque d'empressement a été fatal au patient !
-[FEC_FRC]
-FREE CAM
+[A_FAIL3:AMBU]
+~r~Le patient est mort !
-{ Linux joy detection }
-[FEC_JOD]
-DETECT JOYSTICK
+[ATUTOR4:AMBU]
+~w~Chaque secousse réduit les chances de survie du patient !
-[FEC_JPR]
-Press any key on the joystick of your choice that you want to use on the game, and it will be selected.
+[A_TIME:AMBU]
+~w~Patient embarqué ! +~1~ secondes
-[FEC_JDE]
-Detected joystick
+[A_TIME2:AMBU]
+~w~Bonus ! +~1~ secondes
-{ mission restart }
-[FET_RMS]
-REJOUER MISSION
+[AREWARD:AMBU]
+~w~Niveau ~1~ terminé ! Récomp. : ~1~$
-[FESZ_RM]
-REJOUER?
+[A_RANGE:AMBU]
+~r~La radio de l'ambulance ne capte plus rien ! Rapproche-toi d'un hôpital !
-[FED_VPL]
-VEHICLE PIPELINE
+[ATUTOR5:AMBU]
+~w~Va chercher un ~b~patient.
-[FED_PRM]
-PED RIM LIGHT
+[ATUTOR6:AMBU]
+~w~Emmène le patient à l'~y~hôpital !
-[FED_RGL]
-ROAD GLOSS
+[ATUTOR7:AMBU]
+~w~Cherche d'autres ~b~patients~w~ ou emmène celui-ci à l'~y~hôpital.
-[FED_CLF]
-COLOUR FILTER
+[A_FULL:AMBU]
+~w~Ton ambulance est pleine ! Va déposer tes patients à l'~y~hôpital.
-[FED_WLM]
-WORLD LIGHTMAPS
+[A_RANG2:AMBU]
+~r~La radio de l'ambulance ne fonctionne pas dans le métro !
-[FED_MBL]
-MOTION BLUR
+{=================================== MISSION TABLE TV ===================================}
-[FEM_SIM]
-SIMPLE
+[TV_01:TV]
+Slash TV
-[FEM_NRM]
-NORMAL
+[TV_02:TV]
+~w~Tue tous les psychopathes... Il en arrive de partout !
-[FEM_MOB]
-MOBILE
+[TV_03:TV]
+~w~La difficulté augmente avec chaque niveau : plus d'ennemis à tuer et plus de prix à remporter !
-[FED_MFX]
-MATFX
+[TV_04:TV]
+~w~NIVEAU ~1~
-[FED_NEO]
-NEO
+[TV_10:TV]
+~w~T'as gagné un prix spécial !
-[FEM_PS2]
-PS2
+[TV_09:TV]
+Montant gagné dans ce mini-jeu : ~1~$ !
-[FEM_XBX]
-XBOX
+[TV_05:TV]
+~w~NIVEAU TERMINE !
-[FEC_IVP]
-INVERT PAD VERTICALLY
+[TV_06:TV]
+~w~Tu as gagné un prix de ~1~$ !
-[FEM_NON]
-NONE
+[TV_07:TV]
+~w~A VOS MARQUES...
+
+[TV_08:TV]
+~w~GO!
+
+{=================================== MISSION TABLE NOODLE ===================================}
+
+[NDL1_02:NOODLE]
+~w~Oh... Plus de nouilles ! Retourne chez ~y~Punk Noodles~w~ pour en récupérer.
+
+[NDL1_06:NOODLE]
+~w~Appuie sur~h~ ~k~ ~TGSUB~ ~w~quand t'es sur ta mob pour annuler la mission.
+
+[NDL1_07:NOODLE]
+~r~T'as tué un client ! T'es viré !
+
+[NDL1_08:NOODLE]
+~r~T'as plus de temps ! T'es viré !
+
+[NDL1_09:NOODLE]
+~r~T'as bousillé notre mob ! T'es viré !
+
+[NDL1_11:NOODLE]
+~w~Remonte sur la ~b~mob !
+
+[NDL1_12:NOODLE]
+Nouilles
+
+[NDL1_13:NOODLE]
+~w~Des nouilles ! Des tonnes de nouilles à livrer !
+
+[NDL1_14:NOODLE]
+~w~Nos clients adorent mes nouilles !
+
+[NDL1_15:NOODLE]
+~w~J'ai des nouilles à livrer !
+
+[NDL1_16:NOODLE]
+~w~Tâche de livrer ces nouilles à temps !
+
+[NDL1_17:NOODLE]
+~w~Hé ! Faut livrer ces nouilles !
+
+[NDL1_18:NOODLE]
+~w~Va livrer ces nouilles ! Et vite !
+
+[NDL1_19:NOODLE]
+~w~Nos clients veulent des nouilles chaudes, pas froides !
+
+[NDL1_20:NOODLE]
+~w~Tu supportes pas la chaleur de la cuisine ? Confucius a dit : éteins la cuisinière.
+
+[NDL1_21:NOODLE]
+~w~Va livrer ces nouilles, tu veux ?
+
+[NDL1_22:NOODLE]
+~w~Et encore des nouilles à livrer !
+
+[NDL1_23:NOODLE]
+~w~Des nouilles, des nouilles, des nouilles ! Faut les livrer bien chaudes !
+
+[NDL1_24:NOODLE]
+~w~Nos clients attendent ! Pourquoi tant de haine ?
+
+[NDL1_25:NOODLE]
+~w~Cette commande est pas encore partie ?
+
+[NDL1_26:NOODLE]
+~w~Qu'est-ce que t'attends ? Le Nouvel An chinois ?
+
+[NDL1_27:NOODLE]
+~w~Ces nouilles refroidissent ! Dépêche-toi !
+
+[NDL1_28:NOODLE]
+~w~Je voulais être astronaute. Mais ce boui-boui est à mon père... Qu'est-ce que je pouvais faire ?
+
+[NDL1_29:NOODLE]
+~w~Si tu veux garder ton job, bouge-toi et va livrer ces nouilles !
+
+[NDL1_30:NOODLE]
+~w~Des nouilles sautées et croustillantes... J'adore ça !
+
+[NDL1_31:NOODLE]
+~w~J'aurais parié que t'étais plutôt du genre à livrer des pizzas...
+
+[NDL1_3A:NOODLE]
+~w~Ils en veulent toujours plus. Reviens quand tu auras fini !
+
+[NDL1_32:NOODLE]
+~r~Qu'est-ce qui se passe ? T'aimes pas les nouilles ?
+
+[NDL1_33:NOODLE]
+~w~Retourne au ~y~Punk Noodles~w~ pour de nouvelles commandes.
+
+[NDL1_34:NOODLE]
+~w~Nouilles livrées, thune encaissée !
+
+[NDL_WON:NOODLE]
+~w~Félicitations ! Défi Nouilles terminé ! Ta santé maximale a augmenté !
+
+[NDL_WO1:NOODLE]
+~w~Punk Noodles est maintenant sous ta 'protection'. Pense à encaisser régulièrement les paiements.
+
+[NDL1_01:NOODLE]
+~w~Livre ces nouilles à nos ~b~clients~w~ et plus vite que ça !
+
+[NDL1_05:NOODLE]
+~w~Passe en mob à côté d'un client pour lui lancer les nouilles.
+
+{=================================== MISSION TABLE MPSURV ===================================}
+
+[SAL01:MPSURV]
+~w~Maria, je vais à l'hosto pour me faire soigner mon "tu-sais-quoi".
+
+[SAL02:MPSURV]
+~w~Quand je sortirai, l'étalon porcin reprendra du service comme jamais...
+
+[SAL04:MPSURV]
+~w~PS : prépare-toi pour mon grand retour, bébé !
+
+[SAL05:MPSURV]
+~w~PPS : ... Et laisse pas traîner ce message n'importe où !
+
+[SAL03:MPSURV]
+~w~Tâche de pas t'attirer d'ennuis en mon absence, parce que y a plein de mecs qui meurent d'envie de prendre le pouvoir...
+
+[SAL03A:MPSURV]
+~w~Littéralement !
+
+{=================================== MISSION TABLE JDREF ===================================}
+
+[JDT1_BA:JDREF]
+~w~Pas question que je bosse pour un Leone !
+
+[JDT1_BB:JDREF]
+~w~... Hé, Toni, reviens quand tu te feras moins remarquer.
+
+[CHNGOUT:JDREF]
+~w~Enlève ton costume Leone, sinon J.D. pourra pas être vu en train de te parler.
+
+{=================================== MISSION TABLE CRED01 ===================================}
+
+[CR01_01:CRED01]
+~n~ ~n~ ~n~ ~n~CREDITS
+
+[CR01_02:CRED01]
+~n~ ~n~ ~n~ ~n~ROCKSTAR NORTH
+
+[CR01_03:CRED01]
+~n~ ~n~ ~n~ ~n~Producer ~n~Leslie Benzies
+
+[CR01_04:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Aaron Garbut
+
+[CR01_05:CRED01]
+~n~ ~n~ ~n~ ~n~Technical Direction ~n~Obbe Vermeij, Adam Fowler
+
+[CR01_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~Written By ~n~Dan Houser, James Worrall ~n~ & David Bland
+
+[CR01_07:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Alexander Roger, Alexander Illes, ~n~Andrzej Madajczyk, Barane Chan, ~n~Derek Payne, Derek Ward,
+
+[CR01_08:CRED01]
+~n~ ~n~Gordon Yeoman, Graeme Williamson, ~n~Greg Smith, James Broad, ~n~John Gurney, John Whyte,
+
+[CR01_09:CRED01]
+~n~ ~n~Keith McLeman, Mark Nicholson, ~n~Shaun McKillop
+
+[CR01_10:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Programmer ~n~Matthew Smith
+
+[CR01_11:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Design and Mastering ~n~Allan Walker
+
+[CR01_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Cut Scene Animator ~n~Mondo Ghulam
+
+[CR01_13:CRED01]
+~n~ ~n~ ~n~ ~n~Cut Scene Animator ~n~Dermot Bailie
+
+[CR01_14:CRED01]
+~n~ ~n~ ~n~ ~n~Character Animator ~n~Felipe Busquets
+
+[CR01_15:CRED01]
+~n~ ~n~ ~n~ ~n~In-Game Animation ~n~Gus Braid, Terry Kenny
+
+[CR01_16:CRED01]
+~n~ ~n~ ~n~ ~n~Characters Artist ~n~Ian McQue
+
+[CR01_17:CRED01]
+~n~ ~n~ ~n~ ~n~Vehicle Artist ~n~Joylon Orme
+
+[CR01_18:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Art ~n~Rick Stirling, Alisdair Wood
+
+[CR01_19:CRED01]
+~n~ ~n~ ~n~ ~n~Music Producer ~n~Craig Conner
+
+[CR01_20:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Design and Dialogue Editor ~n~Will Morton
+
+[CR01_21:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Dialogue Editor ~n~Jon McCavish
+
+[CR01_22:CRED01]
+~n~ ~n~ ~n~ ~n~Development Support ~n~Milly Cottam
+
+[CR01_23:CRED01]
+~n~ ~n~ ~n~ ~n~Graphic Designers ~n~Stuart Petri, Steve Walsh
+
+[CR01_24:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~William Mills
+
+[CR01_25:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Chris Rothwell, Andy Duthie, ~n~Chris McMahon, Neil Ferguson
+
+[CR01_26:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Craig Arbuthnott
+
+[CR01_27:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Test ~n~Neil Corbett
+
+[CR01_28:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Test ~n~David Murdoch, Neil Meikle, ~n~Alex Bazlinton, Brenda Carey
+
+[CR01_29:CRED01]
+~n~ ~n~ ~n~ ~n~Build Engineer / Lead Test ~n~Neil Walker
+
+[CR01_30:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Test ~n~George Williamson
+
+[CR01_31:CRED01]
+~n~ ~n~ ~n~ ~n~Test ~n~Brian Kelly, Lindsay Robertson, ~n~Sundram Soosay, Eugene Kuczerepa, ~n~Christopher Soosay, Ben Abbott,
+
+[CR01_32:CRED01]
+~n~ ~n~Oliver Elliott, Louis Dinan, ~n~Bobby Wright, Thomas Philips, ~n~Nick Rees, Ivor Williams
+
+[CR01_33:CRED01]
+~n~ ~n~ ~n~ ~n~Test Tools Programming ~n~James Whitcroft, Alex Carter
+
+[CR01_34:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Lorraine Roy
+
+[CR01_35:CRED01]
+~n~ ~n~ ~n~ ~n~IT Support ~n~Christine Chalmers, Dave Bruce
+
+[CR01_36:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Andrew Semple
+
+[CR01_37:CRED01]
+~n~ ~n~ ~n~ ~n~Office Administration ~n~Kim Gurney
+
+[CR01_38:CRED01]
+~n~ ~n~ ~n~ ~n~Administration Support ~n~Charlene Maguire, Kim Wilson
+
+[CR02_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LEEDS
+
+[CR02_02:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Gordon Hall
+
+[CR02_03:CRED01]
+~n~ ~n~ ~n~ ~n~Head of Development ~n~David Box
+
+[CR02_04:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Programming ~n~Andrew Greensmith, Matthew Shepcar ~n~ ~n~ ~n~ ~n~Console Programming ~n~Nigel Conroy, Richard Frankish, ~n~Andrew Greensmith, Robin Mangham, ~n~Damian McKenna, Finlay Munro, ~n~Stuart Roskell, Matthew Shepcar
+
+[CR02_05:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Jon Bellamy, Ross Childs, ~n~Nigel Conroy, Neil Dodwell, ~n~Alastair Dukes, David Huebner,
+
+[CR02_06:CRED01]
+~n~ ~n~Robin Mangham, Jason McGann, ~n~Warren Merrifield, Stephen McGreal
+
+[CR02_07:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Programming ~n~Finlay Munro, Charles Waddington
+
+[CR02_08:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Ian Bowden
+
+[CR02_09:CRED01]
+~n~ ~n~ ~n~ ~n~Art Department Director ~n~Chris Smart
+
+[CR02_10:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Character Artist ~n~Paul Smith
+
+[CR02_11:CRED01]
+~n~ ~n~ ~n~ ~n~Character Artist ~n~Chris Allison
+
+[CR02_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead City Artist ~n~Dan Roberts
+
+[CR02_13:CRED01]
+~n~ ~n~ ~n~ ~n~City Artists ~n~Paul McKee, James McHale, ~n~Siu Lee
+
+[CR02_14:CRED01]
+~n~ ~n~ ~n~ ~n~Cutscene Interiors ~n~Izzy Stewart
+
+[CR02_15:CRED01]
+~n~ ~n~ ~n~ ~n~Concept Artist ~n~John Wigley
+
+[CR02_16:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Character Animation ~n~Alan Bowker
+
+[CR02_17:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Artists ~n~Andy Walker, Jason Gee, ~n~Chris Edwards, Lee Clark
+
+[CR02_18:CRED01]
+~n~ ~n~ ~n~ ~n~Design Director ~n~David Bland
+
+[CR02_19:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~John Li
+
+[CR02_20:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Level Design ~n~Tony Gowland, Martyn Bramall
+
+[CR02_21:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Sam Hackett, Stephen Robertson, ~n~Tom Kingsley, Chris Edwards, ~n~Kris Gormley
+
+[CR02_22:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Designer ~n~Mark McGinley
+
+[CR02_23:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Paul Colls
+
+[CR02_24:CRED01]
+~n~ ~n~ ~n~ ~n~QA ~n~Jody Cobb, ~n~ ~n~Luke Brown, Nick Robey, ~n~Matthew Haven
+
+[CR02_25:CRED01]
+~n~ ~n~ ~n~ ~n~Company Secretary ~n~Naomi Martin
+
+[CR02_26:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Chris Waring
+
+[CR03_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC
+
+[CR03_02:CRED01]
+~n~ ~n~ ~n~ ~n~Executive Producer ~n~Sam Houser
+
+[CR03_03:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Creative ~n~Dan Houser
+
+[CR03_04:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Development ~n~Jamie King
+
+[CR03_05:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Alex Horton
+
+[CR03_06:CRED01]
+~n~ ~n~ ~n~ ~n~Chief Technology Officer ~n~Gary J. Foreman
+
+[CR03_07:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Producer ~n~Rich Rosado
+
+[CR03_08:CRED01]
+~n~ ~n~ ~n~ ~n~Director of Quality Assurance ~n~Jeff Rosa
+
+[CR03_09:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Analyst ~n~Lance Williams
+
+[CR03_10:CRED01]
+~n~ ~n~ ~n~ ~n~Project Lead ~n~Jameel Vega
+
+[CR03_11:CRED01]
+~n~ ~n~ ~n~ ~n~Rockstar Test Team ~n~Ethan Abeles, William Rompf, ~n~Christopher Mansfield, Chris Choi, ~n~Mike Hong, Tamara Carrion,
+
+[CR03_12:CRED01]
+~n~ ~n~Rich Huie, Mike Nathan, ~n~Vance Wallace, Marc Rodriguez, ~n~Adam Tetzloff
+
+[CR03_13:CRED01]
+~n~ ~n~ ~n~ ~n~Business Development Director ~n~Sean Macaluso
+
+[CR03_14:CRED01]
+~n~ ~n~ ~n~ ~n~Soundtrack Supervision ~n~Heinz Henn, Ivan Pavlovich, ~n~Tim Sweeney
+
+[CR04_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUT SCENES & DIALOGUE
+
+[CR04_02:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Director ~n~Navid Khonsari
+
+[CR04_03:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Performed by ~n~Danny Mastrogiorgio, Jeffrey C. Hawkins, ~n~Bruce MacVittie, David Zayas, ~n~Peter Appel, Hannah Moon, ~n~Alyssa Truppelli, Joe Lotruglio
+
+[CR04_04:CRED01]
+~n~ ~n~ ~n~ ~n~Voices Performed by ~n~Salvatore Leone - Frank Vincent ~n~Toni Cipriani - Danny Mastrogiorgio ~n~Donald Love - Will Janowitz
+
+[CR04_05:CRED01]
+~n~ ~n~ Vincenzo Cilli - Joe Lotruglio ~n~Maria Latore - Fiona Gallagher ~n~JD O'Toole - Greg Wilson
+
+[CR04_06:CRED01]
+~n~ ~n~Leon McAffrey - Ron Orbach ~n~Ray Machowski - Peter Appel ~n~Toshiko Kasen - Hannah Moon
+
+[CR04_07:CRED01]
+~n~ ~n~ Ned Burner - Peter Bradbury ~n~Ma Cipriani - Sondra James ~n~Giovanni Casa - Joel Jones
+
+[CR04_08:CRED01]
+~n~ ~n~Kazuki Kasen - Keenan Shimizu, ~n~Massimo Torini - Duccio Faggella ~n~Mickey Hamfists - Chris Tardio
+
+[CR04_09:CRED01]
+~n~ ~n~Jane Hopper - Gordana Rashovich ~n~Mayor O'Donovan - John Braden ~n~8 Ball - Guru
+
+[CR04_10:CRED01]
+~n~ ~n~Radio Newscaster - Sharon Washington ~n~TV Reporter - Brooke Alexander
+
+[CR04_11:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Dialogue ~n~Una Cruickshank, Gregory Johnson, ~n~Sanford Santacroce, Ayana Osada
+
+[CR04_12:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Voices ~n~Jamie Hector, Jackson Loo, ~n~Bruce MacVittie, Jeff Gurner, ~n~Jamie Hector, Andrea Kessler,
+
+[CR04_13:CRED01]
+~n~ ~n~Lynne Horton, Phil Mikkelson, ~n~Koji Nonoyama, Devin Bennett, ~n~Jay Capozello, Mike Nathan,
+
+[CR04_14:CRED01]
+~n~ ~n~Ethan Abeles, Lance Williams, ~n~Natalya Wilson, Jay Gladstone, ~n~Craig Blair, Dave Edwards,
+
+[CR04_15:CRED01]
+~n~ ~n~Gregory Johnson, John Zurhellen, ~n~Blair Sadler, Georgia Sadler, ~n~Nicole Sadler, Judy Henderson,
+
+[CR04_16:CRED01]
+~n~ ~n~Kim Graham, Kerry Shaw, ~n~Tamara Carrion, Franceska Clemens, ~n~Navid Khonsari, Noelle Sadler,
+
+[CR04_17:CRED01]
+~n~ ~n~Nicholas Mongomery, Anthony Macbain, ~n~Ryan Rayhill, Josh Slater, ~n~Carmelo Gaeta, Hikari Yokoyama,
+
+[CR04_18:CRED01]
+~n~ ~n~Chris Jobin, Michael Rothstein, ~n~Stacey Rachels, Jennifer Koontz, ~n~Dan Merrill, Ali Khonsari,
+
+[CR04_19:CRED01]
+~n~ ~n~Ellen Rose, Chris Standal, ~n~Lorie Goodman, Neal Johnston, ~n~Son Garth, James Larsen,
+
+[CR04_20:CRED01]
+~n~ ~n~Karl Weibel, Ramin Khonsari, ~n~Ed. Thomas Jr., Stanton Sargent, ~n~Oswald Greene, Audrey Amey,
+
+[CR04_21:CRED01]
+~n~ ~n~Sanford Santacroce, Jeff Madrick, ~n~Ben Weaver, Andrea Kessler, ~n~CS Lee, Yoshi Amao,
+
+[CR04_22:CRED01]
+~n~ ~n~ Jackson Loo, Martha Morrison, ~n~Sarah Bloodsworth, Adam Deher, ~n~Billy Gonzalez
+
+[CR04_23:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Motion Graphics ~n~Maryam Parwana
+
+[CR04_24:CRED01]
+~n~ ~n~ ~n~ ~n~Dialogue Recording & Mixing ~n~Nicholas Montgomery
+
+[CR04_25:CRED01]
+~n~ ~n~ ~n~ ~n~Foley Recording ~n~Bryan Scibinico
+
+[CR04_26:CRED01]
+~n~ ~n~ ~n~ ~n~Foley recorded at Dig It Studios
+
+[CR04_27:CRED01]
+~n~ ~n~ ~n~ ~n~Production Team ~n~Noelle Sadler, Eli Weissman, ~n~Kerry Shaw, John Zurhellen, ~n~Peter Adler, Anthony Carvalho,
+
+[CR04_28:CRED01]
+~n~ ~n~Phil Poli, Jaesun Celebre, ~n~Franceska Clemens, Anthony Litton
+
+[CR04_29:CRED01]
+~n~ ~n~ ~n~ ~n~Casting ~n~Judy Henderson and Associates
+
+[CR04_30:CRED01]
+~n~Motion Capture recorded at Perspective Studios
+
+[CR05_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO
+
+[CR05_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ Banter, Talk Radio, Commercials and Imaging written by ~n~Dan Houser and Lazlow
+
+[CR05_03:CRED01]
+~n~ ~n~ ~n~ ~n~Production by ~n~Lazlow
+
+[CR05_04:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LCFR
+
+[CR05_05:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Smith Harrison, Karen Saltus
+
+[CR05_06:CRED01]
+~n~ ~n~ ~n~ ~n~Heartland Values with Nurse Bob ~n~Nurse Bob - Chuck Montgomery
+
+[CR05_07:CRED01]
+~n~ ~n~ ~n~ ~n~Guests and Callers ~n~Ayana Osada, Nick Montgomery, ~n~Russell Lewis, Nick Born, ~n~Sean Macaluso, Kerry Shaw,
+
+[CR05_08:CRED01]
+~n~ ~n~Chad Johnson, Craig Conner, ~n~Mary Elizabeth, Rob Cross, ~n~Josh Bitney
+
+[CR05_09:CRED01]
+~n~ ~n~ ~n~ ~n~Electron Zone ~n~Steve - Ptolemy Slocum ~n~Bill - Michael Urichek
+
+[CR05_10:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Alice Saltzman, Jeremy Wheaton, ~n~Ryan Rayhill, Maine Anderson, ~n~Patton Oswalt, Wil Wheaton, ~n~Anthony Cumia, Madena Parwana
+
+[CR05_11:CRED01]
+~n~ ~n~ ~n~ ~n~Breathing World ~n~Lee Chowder - Ashley Albert ~n~Crow - Gregg Martin
+
+[CR05_12:CRED01]
+~n~ ~n~ ~n~ ~n~Coq 'O' Vin ~n~Richard Goblin - Mike Shapiro
+
+[CR05_13:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Ben Krech
+
+[CR05_14:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Franceska Clemins, Sarah Bloodsworth, ~n~Adam Deher, Martha Morrison, ~n~Carmelo Gaeta
+
+[CR05_15:CRED01]
+~n~ ~n~ ~n~ ~n~Chatterbox ~n~Lazlow as himself
+
+[CR05_16:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Susan Lewis, Ben Weaver, ~n~Jacky Bam Bam, Ben Sparks, ~n~Deanna Moyer, Liezl Jacinto,
+
+[CR05_17:CRED01]
+~n~ ~n~Joshua Batista, Gregg Opie Hughes, ~n~Sondra James, Elizabeth Satterwhite
+
+[CR06_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~HEAD RADIO
+
+[CR06_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Michael Hunt - Russ Mottla
+
+[CR06_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jeff Berlin, Katelyn Hutchinson
+
+[CR06_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jeff Berlin
+
+[CR06_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Train" ~n~Conor & Jay ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Guitars by Jon McCavish ~n~Vocals by Julie Wemyss and Craig Conner
+
+[CR06_06:CRED01]
+~n~ ~n~ ~n~ ~n~"The One For Me" ~n~Cloud Nineteen ~n~Written & Produced by ~n~Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Guitars by Allan Walker & Chris Morton ~n~Lead Vocals by Raff ~n~Backing Vocals by Paul Mackie & Raff
+
+[CR06_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Take The Pain" ~n~Purser ~n~Written & Produced by ~n~Will Morton, Chris Morton ~n~Additional Lyrics by Paul Mackie ~n~Lead Vocals by Paul Mackie ~n~Additional Vocals by Will Morton
+
+[CR06_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Free Yourself" ~n~L-Marie featuring Raff ~n~Written & Produced by Craig Conner ~n~Vocals by L-Marie and Raff ~n~Backing Vocals by Craig Conner
+
+[CR06_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Drive" ~n~15 Ways ~n~Written & Produced by Colin Entwistle ~n~Vocals by Paul Mackie
+
+[CR06_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Welcome To The Real World" ~n~Rosco Stow ~n~Written & Produced by Craig Conner ~n~Guitars Written, Produced and Performed by Allan Walker ~n~Lead Vocals by Andy Dorrat ~n~Backing Vocals by Craig Conner, ~n~Anna Stuart and Kim Gurney
+
+[CR06_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Keep Dreaming" ~n~Vanilla Smoothie ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Allan Walker ~n~Vocals by Fiona Stoddart
+
+[CR07_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LIPS 106
+
+[CR07_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJs ~n~Cliff - Ed McMann ~n~Andee - Shelley Miller
+
+[CR07_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jonathan Hanst
+
+[CR07_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jonathan Hanst
+
+[CR07_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Funk In Time" ~n~Rudy La Fontaine ~n~Written & Produced by Jon McCavish ~n~Guitars by Julian Pais ~n~Vocals by Julian Pais
+
+[CR07_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Love Is The Feeling" ~n~Sawarr ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Vocals by Julie Wemyss
+
+[CR07_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Mine Until Monday" ~n~Sunshine Shine ~n~Written & Produced by Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Vocals by Paul Mackie & Raff
+
+[CR07_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Get Down" ~n~Credit Check ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Martyn Livingstone ~n~Bass by Andy Wilson ~n~Vocals by Louise Ferrier
+
+[CR07_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Tonight" ~n~Cool Timers ~n~Written & Produced by Craig Conner ~n~Vocals by Julie Wemyss
+
+[CR07_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Bassmatic" ~n~Nina Barry ~n~Written & Produced by Jon McCavish ~n~Vocals by Riz Maslen
+
+[CR07_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Into Something (C'mon Get Down)" ~n~The Jackstars ~n~Written & Produced By ~n~Craig Conner ~n~Vocals by Lucie Danti-Juan ~n~Backing vocals by ~n~Kevin Stacey & Craig Conner
+
+[CR08_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~DOUBLE CLEF FM
+
+[CR08_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Sergio Boccino - Robert Blumenfeld
+
+[CR08_03:CRED01]
+~n~ ~n~ ~n~ ~n~Caller ~n~Gerald Cosgrove
+
+[CR08_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Anvil Chorus" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~& Munich State Opera Choir ~n~Courtesy of Point Classics, LLC
+
+[CR08_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Tacea la notte placida" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra & ~n~Munich State Opera Choir ~n~(Eva Illes, Soprano) ~n~Courtesy of Point Classics, LLC
+
+[CR08_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Nabucco: Chorus of the Hebrew Slaves" ~n~Composed by Giuseppe Verdi ~n~Performed by Philharmonia Slavonica ~n~Courtesy of Point Classics, LLC
+
+[CR08_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Così fan tutte: È amore un ladroncello" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~Bratislava Opera Soloists, ~n~Choir and Orchestra ~n~(Ida Kirilova "Dorabella") ~n~Courtesy of Point Classics, LLC
+
+[CR08_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Marriage of Figaro: Overture" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~London Philharmonic Orchestra ~n~Courtesy of Point Classics, LLC
+
+[CR08_09:CRED01]
+~n~ ~n~ ~n~ ~n~"I Pagliacci: Vesti la giubba" ~n~Composed by Ruggiero Leoncavallo ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~(José Maria Perez, Tenor) ~n~Courtesy of Point Classics, LLC
+
+[CR09_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RISE FM
+
+[CR09_02:CRED01]
+~n~ ~n~ ~n~ ~n~Engineered by Mike Callaghan
+
+[CR09_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Boy Sanchez - Oliver Vaquer
+
+[CR09_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~DJ Andre, Lupus Thunder, ~n~Andi Hanley, Mat Ckillz, ~n~Couzin Ed, Lazlow,
+
+[CR09_05:CRED01]
+~n~ ~n~Terry Donovan, Bill Brissette, ~n~Juan Aller, Ed Andrews, ~n~Xeni Jardin, Matthew Orr, ~n~Jeff Berlin
+
+[CR09_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Sing It Back ~n~(Boris Musical Mix)" ~n~Moloko ~n~Written by M. Brydon, R. Murphy ~n~Published by Chrysalis Music (ASCAP) ~n~Remix and Additional Production by ~n~Boris Dlugosch ~n~(p) + © 1998 The Echo Label ~n~Courtesy of Chrysalis Music Limited
+
+[CR09_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Free" ~n~Ultra Nate ~n~Written by U. Nate, L. Springsteen, ~n~J. Ciafone ~n~Published by Warner/ Chappell Music/ BMG Music ~n~(p) + © 1997 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
+
+[CR09_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I Believe" ~n~Happy Clappers ~n~Written by C. Scott, G. Ripley, M. Knotts, M. Topham ~n~Published by All Boys Music Ltd ~n~(p) + © 1994 C J Scott Productions ~n~Courtesy of C J Scott Productions
+
+[CR09_09:CRED01]
+~n~ ~n~ ~n~ ~n~"House Music" ~n~Eddie Amador ~n~Written by Eddie Amador ~n~Published by ~n~Deep Dish Music ~n~(p) + © 1998 Yoshitoshi Records ~n~Courtesy of ~n~Deep Dish Recordings, Inc. ~n~by arrangement with ~n~Nasseri Music Business Solutions
+
+[CR09_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Feel What You Want" ~n~Kristine W ~n~Written by R. Dougan, R. Armstrong, ~n~K. Weitz ~n~Published by BMG Music/Weitz House Publishing (ASCAP)/ EMI Music Publishing ~n~(p) + © 1996 RCA/ BMG ~n~Courtesy of Sony BMG Entertainment
+
+[CR09_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Hideaway ~n~(Deep Dish Vocal Remix)" ~n~De'Lacy ~n~Written by K. Hedge, J. Milan ~n~Published by ~n~Warner-Tamerlane Publishing Corp ~n~Remix and Additional Production by ~n~Deep Dish ~n~(p) 1995 Easy Street Recordings Inc ~n~© 1998 Kickin Music Ltd ~n~Courtesy of Easy Street Recordings Inc. and Slip n' Slide Records
+
+[CR09_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Spin Spin Sugar ~n~(Armand's Dark Garage Mix)" ~n~Sneaker Pimps ~n~Written by I. Pickering, L. Coverdale Howe, C. Corner ~n~Remix and Additional Production by ~n~Armand Van Helden ~n~Published by BMG Songs, Inc ~n~(p) + © 1997 Clean Up Records Ltd ~n~Courtesy of EMI Music / ~n~One Little Indian, Ltd
+
+[CR09_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Plastic Dreams" ~n~Jaydee ~n~Written by R. Albers ~n~Published by TBM Holland ~n~(p) 1992 R & S Records ~n~© Robin Albers ~n~Courtesy of Robin "Jaydee" Albers
+
+[CR09_14:CRED01]
+~n~ ~n~ ~n~ ~n~"Altered States" ~n~Ron Trent ~n~Written by R. Trent ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
+
+[CR09_15:CRED01]
+~n~ ~n~ ~n~ ~n~"There Will Come A Day (Half Tab Dub)" ~n~The Absolute featuring Suzanne Palmer ~n~Written by M. Pichiotti, C.J. Snider ~n~Published by Much Noyse Music/ ~n~Hoobini Music (ASCAP) ~n~(p) + © 1995 Mark Productions, Inc ~n~Courtesy of Mark Productions, Inc
+
+[CR09_16:CRED01]
+~n~ ~n~ ~n~ ~n~"Positive Education" ~n~Slam ~n~Written by S. McMillan, O. Meikle, ~n~G. Gibbons, J. Muotone ~n~Published by EMI Music Publishing ~n~(p) + © 1997 Soma Recordings Ltd ~n~Courtesy of Soma Recordings Ltd
+
+[CR09_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Flash" ~n~Green Velvet ~n~Written by C. Jones ~n~Published by Curtis A. Jones Music (ASCAP) ~n~(p) 1995 Relief Records ~n~© 2000 Warner Bros. Records and N.E.W.S. Records and Relief Records ~n~Courtesy of Warner Strategic Marketing, N.E.W.S. Records, Relief Records
+
+[CR09_18:CRED01]
+~n~ ~n~ ~n~ ~n~"Circus Bells (Hardfloor Remix)" ~n~Robert Armani ~n~Written by R. Armani ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse/ ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
+
+[CR09_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Higher State Of Consciousness" ~n~Wink ~n~Written by J. Wink ~n~Published by Strictly Rhythm Publishing, Inc. (ASCAP) / Warner/Chappell Music / Wink Inc. (ASCAP) / EMI Music Publishing ~n~(p) + © 1995 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO DEL MUNDO
+
+[CR10_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Panjit Gavaskar - Hajaz Akram
+
+[CR10_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jessica Wachsman
+
+[CR10_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Raghupati (Folk Tune)" ~n~Ananda Shankar ~n~Arranged by A. Shankar, Lewinson, Hassilev ~n~Published by Warner Chappell Inc ~n~(p) + © 1970 Reprise Records for the U.S. and WEA International Inc ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Dum Maro Dum" ~n~Asha Bhosle ~n~Written by RD Burman, Anand Bakshi ~n~Published by Saregama India Ltd ~n~(p) + © 1971 Saregama India Ltd ~n~Courtesy of Saregama India Ltd
+
+[CR10_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Neeve Nanna (Only You Were Mine)" ~n~Vijaya Anand ~n~Written by Vijaya Anand ~n~Published by Shake Boom! (ASCAP)/ ~n~Luaka Bop Inc ~n~(p) 1988 Lahari/Audiovision ~n~© 1992 Sire Records Company ~n~Courtesy of ~n~Luaka Bop Records
+
+[CR10_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Kidda" ~n~Natacha Atlas ~n~Written by N. Atlas, J. Reynolds, J. Adams ~n~Published by Warner Chappell Music Ltd ~n~(p) + © 1997 Nation Records Ltd/ ~n~Beggars Banquet Records Ltd ~n~Courtesy of Nation Records Ltd/ ~n~Beggars Banquet Records Ltd
+
+[CR10_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Hebeena Hebeena" ~n~Farid El Atrache ~n~Written by Barakat, Atrache ~n~Published by Voices Of Lebanon ~n~(p) + © 1974 Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
+
+[CR10_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Aini Bet Ref" ~n~Ahmed Mneimneh ~n~Written by A. Alishaan ~n~Published by D. Dersahakian (ASCAP) ~n~(p) + © Voice of Stars & ~n~Lys Records ~n~Courtesy of Voice of Stars & ~n~Lys Records
+
+[CR10_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Im Nin'Alu" ~n~Ofra Haza ~n~Traditional, Arranged by I. Ashdot, B. Nagari ~n~Published by Blue Lake Music ~n~ (p) + © 1988 Sire Records Company ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ballaa Tsoubou Hal Kahwa" ~n~Samira Tawfic ~n~Written by R. Al Khylani, J. Al A'ss ~n~Published by Copyright Control ~n~(p) + © Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
+
+[CR11_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~K-JAH
+
+[CR11_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Natalee Walsh Davis - Pascale Armand
+
+[CR11_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Karl Weibel, Pat McKay
+
+[CR11_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
+
+[CR11_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Pick a Sound" ~n~Selah Collins, Ruddy Ranks, Redeye ~n~Written by S. Collins, H. Burke, ~n~E. Donaldson ~n~Published by Copyright Control/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_06:CRED01]
+~n~ ~n~ ~n~ ~n~"What a Wonderful Feeling" ~n~Errol Bellot, Ruddy Ranks, Redeye ~n~Written by E. Bellot, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_07:CRED01]
+~n~ "Watch How the People Dancing" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by K. Wright ~n~Published by Jetstar ~n~Courtesy of Honest Jons Records
+
+[CR11_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Lean Boot" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson ~n~Published by Westbury Music/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Ready For the Dancehall Tonight" ~n~Peter Bouncer, Ruddy Ranks, Redeye ~n~Written by Peter McKenzie, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_10:CRED01]
+~n~ ~n~ ~n~ ~n~"You Ha Fe Cool" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson. ~n~Published by Westbury Music/MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ring My Number" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson. ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Run Come Call Me" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR12_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THE LIBERTY JAM
+
+[CR12_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~DJ Clue as himself
+
+[CR12_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jay Wright, Tom Yankowski, Chris Mercado, Vanessa Grullon
+
+[CR12_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
+
+[CR12_05:CRED01]
+~n~ ~n~ ~n~ ~n~"All I Need" ~n~Method Man ~n~Written by C. Smith, R. Diggs ~n~Published by Sony BMG Music ~n~(p) + © 1994 Def Jam Recordings ~n~Courtesy of Def Jam Recordings/ UME
+
+[CR12_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Shook Ones Pt. II" ~n~Mobb Deep ~n~Written by A. Johnson, K. Muchita ~n~Published by ~n~BMG Songs Inc. (ASCAP) ~n~(p) + © 1995 BMG Music ~n~Courtesy of RCA Records by arrangement with Sony BMG Ent
+
+[CR12_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Incarcerated Scarface" ~n~Raekwon ~n~Written by R. Diggs, C. Woods, A. Tilman ~n~Published by ~n~Careers-BMG Music Publishing Inc./ ~n~Wu Tang Publishing (BMI)/ ~n~Bridgeport Music ~n~(p) + © 1995 BMG Music
+
+[CR12_08:CRED01]
+Courtesy of RCA Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "You're Getting A Little Too Smart" as performed by The Detroit Emeralds. Courtesy of Westbound Records. Used by permission. All rights reserved
+
+[CR12_09:CRED01]
+~n~ ~n~ ~n~ ~n~"N.O.R.E." ~n~Noreaga ~n~Written by V. Santiago, J. Olivier, ~n~S. Barnes ~n~Published by Suite 1202 Music/ Jose Luis Gotcha Music (BMI)/ Slamuwell Productions/ Jelly's Jam LLC (ASCAP)/ ~n~12 & Under Music/
+
+[CR12_10:CRED01]
+Jumping Bean Songs LLC (BMI) ~n~(p) + © 1998 Penalty Recordings ~n~Courtesy of Warner Strategic Marketing
+
+[CR12_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Shut 'Em Down (Remix)" ~n~Onyx featuring Noreaga & Big Pun ~n~Written by F. Scruggs, K. Jones, T. Taylor, E. Hinson, E. Simmons ~n~Published by Universal Music/ ~n~Let Me Show You Music/ ~n~Jelly Jams Music/
+
+[CR12_12:CRED01]
+III Posse Music/ Ill Hill Billy'z Music/ Warner-Tamerlane Music ~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Beware" ~n~Big Pun ~n~Written by C. Rios, J. Tineo ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP), ~n~Administered by Jelly Jams Music (BMI)/ ~n~P.H.D. Music (ASCAP)
+
+[CR12_14:CRED01]
+(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent
+
+[CR12_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Twinz (Deep Cover 98)" ~n~Big Pun ~n~Written by C. Rios, J. Cartegena, ~n~C. Brodus, A. Young, C. Wolfe ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP)/ ~n~Jelly Jams Music (BMI)/ ~n~Sony Tunes Inc. (ASCAP)
+
+[CR12_16:CRED01]
+~n~(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "Deep Cover" as performed by Dr. Dre. Courtesy of Solar Records. Used by permission. All rights reserved
+
+[CR12_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Get At Me Dog" ~n~DMX featuring Sheek of The Lox ~n~Written by E. Simmons, D. Blackman, ~n~A. Fields, S. Taylor ~n~Published by Universal Music Publishing/ EMI April Music/ ~n~Sony ATV Tunes
+
+[CR12_18:CRED01]
+~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Ruff Ryders Anthem (Remix)" ~n~DMX featuring DJ Clue, Jadakiss, Styles, Drag-On & Eve ~n~Written by J. Phillips, M.J. Smalls, E. Shaw, K. Ifill, E. Simmons, K. Dean, E. Jeffers ~n~Published by Universal Music Publishing/ EMI Music Publishing
+
+[CR12_20:CRED01]
+(p) + © 1998 Roc-a-Fella Records ~n~Courtesy of Universal Music Enterprises
+
+[CR12_21:CRED01]
+~n~ ~n~ ~n~ ~n~"Do What You Feel" ~n~Redman featuring Method Man ~n~Written by P. Michael, R. Noble, C. Smith ~n~Published by Careers BMG/ Sony ATV Tunes/ Famous Music ~n~(p) + © 1996 Def Jam ~n~Courtesy of Universal Music Enterprises
+
+[CR12_22:CRED01]
+~n~ ~n~ ~n~ ~n~"Chain Gang Freestyle" ~n~The Lox & Black Rob ~n~Written by Frierson, Phillips, Styles, Jacobs, Ross, Shaw ~n~Published by EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_23:CRED01]
+~n~ ~n~ ~n~ ~n~"Chest2chest Freestyle" ~n~The Lox ~n~Written by Phillips, Styles, Jacobs, Shaw, Barnes, Lemay, Montgomery ~n~Published by Taggie Music (BMI)/ ~n~Universal Polygram Int'l. (ASCAP)/ ~n~EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_24:CRED01]
+This track contains a sample of "Next Level" as performed by Showbiz & AG. Courtesy of Universal Music Enterprises. Used by permission. All rights reserved
+
+[CR13_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~MSX 98
+
+[CR13_02:CRED01]
+~n~ ~n~ ~n~ ~n~MC ~n~Codebreaker as himself
+
+[CR13_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Timecode
+
+[CR13_04:CRED01]
+~n~ ~n~ ~n~ ~n~Station Production ~n~Timecode
+
+[CR13_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Renegade Snares" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Terrorist" ~n~Renegade ~n~Written, Produced & Engineered by ~n~A. Dookith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Finest Illusion (Legal Mix)" ~n~Foul Play ~n~Written, Produced & Engineered by ~n~J. Morrow, S. Bradshaw, ~n~S. Gurley ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future (FBD Project Remix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Stay Calm (Foul Play Remix)" ~n~DJ Pulse ~n~Written, Produced & Engineered by ~n~A. Brown ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Disturbance (Tango Remix)" ~n~Hyper-On Experience ~n~Written, Produced & Engineered by ~n~A. Banks, D. Demierre ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Cold Fresh Air" ~n~Higher Sense ~n~Written, Produced & Engineered by ~n~A. Miles, DJ Rhythm ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Thru The Vibe (2 on 1 Mix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_14:CRED01]
+~n~ ~n~ ~n~ ~n~"The Helicopter Tune" ~n~Deep Blue ~n~Written, Produced & Engineered by ~n~S. O'Keefe ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Dred Bass" ~n~Dead Dred ~n~Written, Produced & Engineered by ~n~W. Smith, L. Smith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR14_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~FLASHBACK FM
+
+[CR14_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Reni Wassulmaier - Barbara Rosenblatt
+
+[CR14_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Mike Shapiro
+
+[CR14_04:CRED01]
+~n~ ~n~ ~n~ ~n~"First Hand Experience ~n~In Second Hand Love" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_05:CRED01]
+~n~ ~n~ ~n~ ~n~"I Wanna Rock You" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~K. Forsey ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_06:CRED01]
+~n~ ~n~ ~n~ ~n~"E=MC2" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Chase" ~n~Giorgio Moroder ~n~Written by G. Moroder ~n~Published by Warner/ Chappell Music ~n~(p) + © 1978 Casablanca Films/ ~n~Columbia Pictures ~n~Courtesy of Sony Pictures Entertainment
+
+[CR14_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I'm Left, You're Right, She's Gone" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_09:CRED01]
+~n~ ~n~ ~n~ ~n~"From Here To Eternity" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Casablanca Records ~n~Courtesy of Universal Music Enterprises
+
+[CR15_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~COMMERCIAL VOICES
+
+[CR15_02:CRED01]
+~n~ ~n~ ~n~ ~n~Alex Anthony, Anouchka Benson, ~n~Audrey Amey, Bill Smith, ~n~Billy Gonzalez, Brian Thomas,
+
+[CR15_03:CRED01]
+~n~ ~n~Chris Jobin, Chris Silvestro, ~n~Craig Blair, Dan Houser, ~n~Dan Merrill, Ed Thomas,
+
+[CR15_04:CRED01]
+~n~ ~n~Ethan Abeles, Garth Johnston, ~n~Gregg Martin, Gregory Johnson, ~n~Hikari Yokoyama, James Ferrante,
+
+[CR15_05:CRED01]
+~n~ ~n~James Larson, Jay Capozello, ~n~Jayson Gladstone, Jeff Berlin, ~n~Jen Sweeney, Jessica Wachsman,
+
+[CR15_06:CRED01]
+~n~ ~n~ JJ Adler, Jonathan Hanst, ~n~Joshua Batista, Karen Saltus, ~n~Koji Nonoyami, Lance Williams,
+
+[CR15_07:CRED01]
+~n~ ~n~Lazlow, Lynne Horton, ~n~Michael Nathan, Mike Ferrante Jr., ~n~Chris Ferrante, Mike Shapiro,
+
+[CR15_08:CRED01]
+~n~ ~n~Natalya Wilson, Noelle Sadler, ~n~Phil Mikkelson, Ron Reeve, ~n~Smith Harrison, Stacy Rachels,
+
+[CR15_09:CRED01]
+~n~ ~n~ Steve Carlesi, Julie Wemyss, ~n~Kim Gurney
+
+[CR16_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUTSCENE MUSIC
+
+[CR16_02:CRED01]
+~n~ ~n~ ~n~ ~n~"Japanese Geisha" ~n~Sonia Slany ~n~Written by Sonia Slany ~n~Published by West One Music ~n~Courtesy of APM Music, LLC
+
+[CR16_03:CRED01]
+~n~ ~n~ ~n~ ~n~"The Heist" ~n~Bugz in the Attic ~n~Written by K. Tatham ~n~Published by Copyright Control ~n~(p) 2005 Bugz In The Attic ~n~Courtesy of Bugz In The Attic ~n~www.bugzintheattic.co.uk
+
+[CR16_04:CRED01]
+~n~ ~n~ ~n~ ~n~"A Dark March" ~n~Danger Mouse ~n~Written by Danger Mouse ~n~Published by ~n~Underground Animals (ASCAP)
+
+[CR17_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC PUBLISHING TEAM
+
+[CR17_02:CRED01]
+~n~ ~n~ ~n~ ~n~Terry Donovan, Jenefer Gross, ~n~Jennifer Kolbe, Devin Winterbottom, ~n~Adam Tedman, Michael Elkind,
+
+[CR17_03:CRED01]
+~n~ ~n~Paul Yeates, Hosi Simon, ~n~Daniel Einzig, Marlene Yamaguchi, ~n~Gauri Khindaria, Stanton Sarjeant,
+
+[CR17_04:CRED01]
+~n~ ~n~Jordan Chew, Ryan Rayhill, ~n~Devin Bennett, Todd Zuniga, ~n~Thomas O'Donnell, Maria Tabia,
+
+[CR17_05:CRED01]
+~n~ ~n~Anthony Carvalho, Lyonel Tollemache, ~n~John Notarfrancesco, Jerry Luna, ~n~Stuart Petri, Stephen Walsh,
+
+[CR17_06:CRED01]
+~n~ ~n~Michael Carnevale, Andrea Borzuku, ~n~John Schuhmann, Alice Chuang, ~n~Mike Torok, Mayumi Kobayashi,
+
+[CR17_07:CRED01]
+~n~ ~n~Elizabeth Satterwhite, Bruce Dugan, ~n~Eli Weissman, Phil Poli, ~n~Jaesun Celebre, Russell Lewis,
+
+[CR17_08:CRED01]
+~n~ ~n~Sean Mackenzie, Megan Henretta, ~n~Angus Wong, Kristine Severson
+
+[CR17_09:CRED01]
+~n~ ~n~ ~n~ ~n~Cover Art ~n~Steven Olds, Stephen Bliss, ~n~Anthony Macbain
+
+[CR17_10:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LONDON PD
+
+[CR17_11:CRED01]
+~n~ ~n~ ~n~ ~n~ Chris Madgwick, Chris Wood, ~n~Daimion Pinnock, David McCarthy, ~n~Graham Ainsley, Jurgen Mol,
+
+[CR17_12:CRED01]
+~n~ ~n~ Laura Battistuzzi, Maike Köhler, ~n~Shino Hori, Lucien King
+
+[CR18_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LINCOLN
+
+[CR18_02:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Mark Lloyd
+
+[CR18_03:CRED01]
+~n~ ~n~ ~n~ ~n~Deputy QA Manager ~n~Tim Bates
+
+[CR18_04:CRED01]
+~n~ ~n~ ~n~ ~n~QA Supervisor ~n~Kevin Hobson
+
+[CR18_05:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Tester ~n~Eddie Gibson ~n~ ~n~ ~n~ ~n~Secondary Lead Tester ~n~Mike Bennett
+
+[CR18_06:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Jonathan Stones, Mike Emeny, ~n~Andy Mason, Lee Johnson, ~n~Carl Young, Matthew Lunnon, ~n~Dan Goddard, Steve McGagh, ~n~Craig Reeve, Joby Luckett
+
+[CR18_07:CRED01]
+~n~ ~n~ ~n~ ~n~Localization Team ~n~ ~n~ ~n~ ~n~Localization Supervisor ~n~Chris Welsh
+
+[CR18_08:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Antoine Cabrol, Dominic Garcia, ~n~Paolo Ceccotti, Ferruccio Cinquemani, ~n~Nicolas Klimoff, Jesús Pérez Rosales ~n~ ~n~ ~n~ ~n~IT Support ~n~Nick McVey
+
+[CR19_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~SPECIAL THANKS
+
+[CR19_02:CRED01]
+~n~ ~n~ ~n~ ~n~Scooter, Ross Wallace, ~n~Steve Taylor, Kevin Wong, ~n~Kevin Bolt, John Haime,
+
+[CR19_03:CRED01]
+~n~ ~n~Dave Watson, Thomas French, ~n~James Arthur, Martin Connor, ~n~Brendon McDonald, Julie Wemyss,
+
+[CR19_04:CRED01]
+~n~ ~n~Raff Crolla, James Duffy, ~n~Kim Gurney, Andrew Ness, ~n~Andy Brooks (Gearbox), Alan Mcgregor,
+
+[CR19_05:CRED01]
+~n~ ~n~Chris McCallum, Fred, Narns, ~n~Alan, Taruki, Red, ~n~Big Foot, Rita Liberator, ~n~Elliot Torres
+
+[CR19_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THANKS
+
+[CR19_07:CRED01]
+~n~ ~n~ ~n~ ~n~Deborah Mannis-Gardner ~n~and Mark Schwartz. ~n~Randy Acker, Karen Adams, ~n~Mark Ainley, Robin Albers,
+
+[CR19_08:CRED01]
+~n~ ~n~Duncan Baker, Armen Boladian, ~n~Tanya Bridges, Richard Brown, ~n~Matt Brookman, Elena Byington,
+
+[CR19_09:CRED01]
+~n~ ~n~Ed Butts, Rob Cairns, ~n~Mike Callaghan, Joseph Carlone, ~n~Kevin Carson, Jason Chin,
+
+[CR19_10:CRED01]
+~n~ ~n~Allison Cipris, Alimah Deen, ~n~James Ellis, Helen English, ~n~Nasko Fejza, Scott Gardner,
+
+[CR19_11:CRED01]
+~n~ ~n~Jochem Gerrits, ~n~Laurie Goldstein Thomas Golubic, ~n~Nick Guarino, Jon Handle, ~n~Millie Hysu, Robert Jo,
-[FEC_DS2]
-DUALSHOCK 2
+[CR19_12:CRED01]
+~n~ ~n~Paul Johannes, Gavin Johnson, ~n~Curtis A. Jones, Jennifer Justice, ~n~Rod Kotler, Diana La Pointe,
-[FEC_DS3]
-DUALSHOCK 3
+[CR19_13:CRED01]
+~n~ ~n~Michael Lau, Jim Long, ~n~Alex De Maegd, John Massa, ~n~Kendall Minter, Steve Morgan,
-[FEC_DS4]
-DUALSHOCK 4
+[CR19_14:CRED01]
+~n~ ~n~Giorgio Moroder, Suzanne Moss, ~n~Melissa Munana, Kirin Murphy, ~n~Kurosh Nasseri,
-[FEC_360]
-XBOX 360 CONTROLLER
+[CR19_15:CRED01]
+~n~ ~n~Gwen Niles Sean Ogden ~n~aka DJ Nightshade, ~n~Robin Orlowski, Jonathan Palmer, ~n~Tanvi Patel, Jane Peterer,
-[FEC_ONE]
-XBOX ONE CONTROLLER
+[CR19_16:CRED01]
+~n~ ~n~Mark Picchiotti, Rob Playford, ~n~Dan Quan, R. Ramnarayan, ~n~Mary Beth Roberts, ~n~Virgil Roberts, Lindsay Rodman,
-[FEC_NSW]
-NINTENDO SWITCH CONTROLLER
+[CR19_17:CRED01]
+~n~ ~n~Jim Romano, Craig Roseberry, ~n~Gerry Rosenblatt, RZA, ~n~Ali Samii, Alan Scholefield,
-[FEC_TYP]
-GAMEPAD TYPE
+[CR19_18:CRED01]
+~n~ ~n~Christopher Scott, Suzi Scott, ~n~Fredro Scruggs, Jennefer Showalter, ~n~Alan Skiena, Saskia Slegers,
-[FET_AGS]
-GAMEPAD SETTINGS
+[CR19_19:CRED01]
+~n~ ~n~Fran Spero, Lem Springsteen, ~n~David Steel, Jane Ventom, ~n~Christian Wiseman, Debi Wylde,
-[FEM_AUT] { aspect ratio related }
-AUTO
+[CR19_20:CRED01]
+~n~ ~n~Donna Young, Richie Zito
[FEM_PED]
PED DENSITY
diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt
index 27e91def..2867b1c6 100644
--- a/utils/gxt/german.txt
+++ b/utils/gxt/german.txt
@@ -1,1719 +1,1517 @@
-{
- New strings are at the bottom of file.
- Do not change the order of strings.
- You can fix the typos of existing translation but please refrain from
- unnecessary edits like rephasing because you think it suits better for your taste.
-}
+[LETTER1]
+abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"$,.'-?!!SDBF
-[RAMPAGE]
-AMOKLAUF!!
-
-[RAMP_F]
-AMOKLAUF FEHLGESCHLAGEN!!
-
-[RAMP_P]
-AMOKLAUF BESTANDEN!!
-
-[RAMP_A]
-ALLE AMOKLÄUFE BESTANDEN!!
-
-[PAGE_01]
-Dein Job: ~1~ Gang-Mitglieder in 2 Minuten!
-
-[PAGE_02]
-Zerstöre ~1~ Fahrzeuge in 2 Minuten!
-
-[PAGE_03]
-Erledige ~1~ Gang-Mitglieder in 2 Minuten im Vorbeifahren!
-
-[PAGE_04]
-Überfahre ~1~ Gang-Mitglieder in 2 Minuten!
-
-[PAGE_05]
-Dein Job: ~1~ Gang-Mitglieder in 2 Minuten!
-
-[SENTXS]
-Sentinel XS
-
-[MAP_LEG]
-Legende
-
-[VCNMAV]
-VCN Maverick
-
-[LG_01]
-Position des Spielers
-
-[LG_02]
-Avery Carrington
-
-[LG_03]
-Biker-Kontaktpunkt
-
-[LG_04]
-Colonel Cortez
-
-[LG_05]
-Ricardo Diaz
-
-[LG_06]
-Kent Paul
-
-[LG_07]
-Rechtsanwalt
-
-[LG_08]
-Phil Cassidy
-
-[LG_09]
-Bootswerft
-
-[LG_10]
-Malibu Club
-
-[LG_11]
-Kubaner
-
-[LG_12]
-Filmstudio
-
-[LG_13]
-AmmuNation
-
-[LG_14]
-Haitianer
+[DEFNAM]
+Claude----------------------
-[LG_15]
-Eisenwarenladen
+[IN_VEH]
+~w~Hey! Zurück ins ~b~Fahrzeug!
-[LG_16]
-Versteck
+[IN_VEH2]
+~w~Du brauchst eine Karre für diesen Job!
-[LG_17]
-Eiscreme
+[IN_BOAT]
+~w~Du brauchst ein Boot für diesen Job!
-[LG_18]
-Kaufman-Taxis
+[HEY]
+~w~Keine Alleingänge. Halt die Gang beisammen!
-[LG_19]
-Love Fist
+[HEY2]
+~w~Nicht aufteilen. Halt die Leute zusammen!
-[LG_20]
-Druckerei
+[HEY3]
+~w~Du hast deinen besten Mann verloren. Los, zurück! Hol 8-Ball!
-[LG_21]
-Immobilie
+[HEY6]
+~w~Du stehst mit deiner Ehre für den Yakuza Kanbu ein. Du musst ihn beschützen!
-[LG_22]
-Pay 'n' Spray
+[HEY7]
+~w~Ein Mann mehr kann nicht schaden. Los, zurück. Hol deinen Kontaktmann ab!
-[LG_23]
-Bekleidungsgeschäft
+[HEY9]
+~w~Du willst wissen, was so geredet wird? Sprich mit deinem Kontaktmann!
-[LG_24]
-Tommys Villa
+[GATE_1]
+~w~Die Sindaccos öffnen die Tore nur für Sindacco-Wagen.
-[LG_25]
-Telefon
-
-[LG_26]
-Radiosender Wildstyle
-
-[LG_27]
-Radiosender Flash FM
-
-[LG_28]
-Radiosender KChat
+[HELPA]
+~w~Das ist dein ~h~Versteck.
-[LG_29]
-Radiosender Fever 105
+[HELPB]
+~w~Bist du nicht auf einer Mission, kannst du speichern, indem du das ~h~Speicher-Icon~w~ aufnimmst - die Uhr wird dann um 6 Stunden vorgestellt.
-[LG_30]
-Radiosender VRock
+[HELPC]
+~w~Fahrzeuge in der ~h~Garage nebenan~w~ werden beim Speichern für dich aufbewahrt.
-[LG_31]
-Polizeifunk-Zentrale
+[HELPD]
+Zum Verlassen des Verstecks, stell dich in die ~h~Markierung.
-[LG_32]
-Radiosender Espantoso
+[HELP0]
+~w~Drücke~h~ ~k~ ~VEEE~~w~, um in ein Fahrzeug ein- oder auszusteigen.
-[LG_33]
-Radiosender Emotion 98.3
+[HELP1]
+~w~Halte in der Mitte der ~h~gelben Markierung.
-[LG_34]
-Radiosender Wave 103
+[HELP3]
+~w~Du kannst nur kurze Zeit sprinten, ohne zu ermüden.
-[LG_36]
-Sun Yard
+[HELP4]
+~w~Benutze~h~ ~k~ ~VEACC~ ~w~zum ~h~Beschleunigen. Benutze~h~ ~k~ ~VESTR~ ~w~zum Steuern.
-[LG_37]
-Stripper-Bar
+[HELP5]
+~w~Drücke~h~ ~k~ ~VEBRK~ ~w~zum ~h~Bremsen~w~, oder zum ~h~Zurücksetzen~w~.
-[MAP_YAH]
-DU BIST HIER
+[HELP6]
+~w~Drücke die~h~ ~k~ ~VEHB~~w~, um die ~h~Handbremse~w~ anzuziehen.
-[TAXSHRT]
-~g~Du kannst dieses Kaufman-Taxi nehmen, statt selbst Auto zu fahren. Das kostet dich $9.
+[HELP7]
+~w~Halte~h~ ~k~ ~PDLT~~w~, um mit einem Präzisionsgewehr zu zielen.
-[MOB_09D]
-Vielleicht hab ich Leo ja erledigt und mir sein Handy genommen. Hast du schon mal daran gedacht, du Penner?
+[HELP8]
+~w~Mit~h~ ~k~ ~SNZI~ ~w~und~h~ ~k~ ~SNZO~ ~w~kannst du beim Zielen ~h~heran- und herauszoomen.
-[FE_MLG]
-KARTENLEGENDE
+[HELP10]
+~w~Der ~h~gelbe Stern~w~ zeigt an, dass du ~h~gesucht wirst~w~ - Die Polizei wird versuchen, dich zu verhaften.
-[FED_RDR]
-RADAR-MODUS
+[HELP11]
+~w~Je mehr Sterne, umso energischer werden Gesetzeshüter gegen dich vorgehen.
-[FED_HUD]
-HUD-MODUS
+[HELP12]
+~w~Stell dich in die ~h~gelbe Markierung~w~, um eine Mission zu starten.
-[FED_RDL]
-GROSS
+[HELP13]
+~w~Achte auf Wege, die nicht auf dem ~h~Radar~w~ angezeigt werden und nutze sie zu deinem Vorteil!
-[FED_RDB]
-NUR SYMBOLE
+[HELP14]
+~w~Benutze das ~h~Radar~w~, um dich zu orientieren - folge dem ~h~gelben Punkt~w~, um das ~h~Versteck~w~ zu finden.
-[FED_HUF]
-INFOS EIN- & AUSBLENDEN
+[HELP16]
+~w~Benutze~h~ ~k~ ~VESTR~ ~w~zum Steuern.
-[FEST_HV]
-Höchstes Bürgerwehr-Missions-Level
+[HELP17]
+~w~Phil Cassidy's - Ware von größerem Kaliber: Demnächst neue Lieferung!
-[BRIBE1]
-Du hast soeben Polizei-Bestechungsgeld aufgenommen, dein Fahndungslevel verringert sich damit um einen Stern.
+[HELP18]
+~w~Phil Cassidy's Fully Cocked Gun Shop hat neue Ware geliefert bekommen!
-[CLOHELP]
-Saubere Klamotten!!
+[HELP18B]
+~w~Phil Cassidy's hat jetzt die ~h~Minigun~w~ vorrätig!
-[SUNSHIN]
-Sunshine Autos
+[HELP19A]
+~w~Um ein ~h~Drive-by~w~ auszuführen, halte die~h~ ~k~ ~VELL~ ~w~oder die~h~ ~k~ ~VELR~ ~w~und feuere mit~h~ ~k~ ~VEWEP~.
-[CHERRYP]
-Cherry Popper Eiscreme
+[HELP19C]
+~w~Ein Drive-by kannst du nur ausführen, wenn du eine ~h~Maschinenpistole~w~ hast.
-[KAUFCAB]
-Kaufman-Taxis
+[HELP19D]
+~h~Auf Motorrädern ~w~kannst du durch Drücken von~h~ ~k~ ~VEWEP~ nach vorn schießen~w~.
-[BOATYAR]
-Die Bootswerft
+[HELP19F]
+~w~Du kannst nur nach vorn schießen, wenn du eine ~h~Maschinenpistole~w~ hast.
-[WANT_L]
-Dein Fahndungslevel ist bis auf weiteres aufgehoben. Solltest du ein Verbrechen begehen, während die Sterne blinken, wird dein volles Fahndungslevel wieder aktiv.
+[HELP20]
+~w~Du hast ~h~Polizeischmiergeld~w~ gefunden. Das verringert deinen ~h~Fahndungslevel~w~ um einen Stern!
-[PICK1]
-Kugelsichere Weste im Ocean View Hotel angeliefert!
+[HELP21]
+~w~Drücke~h~ ~k~ ~PDCWE~~w~, um zu Fuß Waffen zu wechseln.
-[HOTRNG]
-HOTRING
+[HELP22]
+~w~Um ~h~Vincenzos Lagerhaus~w~ zu finden, folge dem ~h~V~w~ auf dem Radar.
-[BLODRNG]
-CHAOS-DERBY
+[HELP23]
+~w~Ein ~h~nach unten zeigendes Dreieck~w~ bedeutet, dass sich das ~h~Ziel in geringerer Höhe~w~ als du befindet.
-[DIRTRNG]
-DIRTRING
+[HELP24]
+~w~Halte~h~ ~k~ ~VELL~ ~w~oder~h~ ~k~ ~VELR~~w~, um im Fahrzeug nach ~h~links oder rechts~w~ zu sehen. Halte beide, um nach ~h~hinten~w~ zu sehen.
-[FEC_ABR]
-Beschleunigen, Bremsen oder Zurücksetzen
+[HELP25]
+~w~Drücke die~h~ ~k~ ~CVEIW~~w~, um den ~h~Blickwinkel~w~ zu verändern.
-[FEI_BTU]
-; = -
+[HELP26]
+~w~Spring auf ein Boot und drücke~h~ ~k~ ~VEEE~~w~, um hinein zu gelangen.
-[FEI_SCR]
-Scrollen
+[HELP27]
+~w~In der Nähe eines Boots drücke~h~ ~k~ ~VEEE~~w~, um an Bord zu gehen.
-[SKUMBUY]
-Skumole Shack gekauft: $ ~1~
+[HELP29]
+~w~Drücke~h~ ~k~ ~VEHN~~w~, um zu ~h~hupen.
-[SKUM_L]
-Drücke die ~h~L1-Taste~w~, um Skumole Shack zu kaufen. Preis: $~1~
+[HELP30]
+~w~Mit der~h~ ~k~ ~VECRS~ ~w~kannst du verschiedene ~h~Radiosender~w~ einstellen.
-[SKUM_T]
-Drücke die ~t~"-Taste~w~, um Skumole Shack zu kaufen. Preis: $~1~
+[HELP33]
+~w~Jetzt, wo die Killer angeheuert worden sind, werden sie den Job durchziehen, egal wie lange es dauert.
-[SKUM_C]
-Drücke die ~o~|-Taste~w~, um Skumole Shack zu kaufen. Preis: $~1~
+[HELP34]
+~w~Halte~h~ ~k~ ~VELB~~w~, um in einem Auto nach hinten zu sehen.
-[LG_35]
-Ziel
+[HELP38]
+~w~Erledigst du jemanden, der eine Waffe hat, wird er sie fallen lassen.
-[IN_VEH]
-~g~Hey! Zurück ins Auto!!
+[HELP40]
+~w~Gehst du zu Fuß, benutze~h~ ~k~ ~PDLOO~~w~, um dich umzusehen.
-[HEY]
-~g~Keine Alleingänge. Halt die Gang beisammen!
+[HELP58]
+~w~Halte~h~ ~k~ ~PDLT~~w~, um ~h~ein Ziel zu erfassen~w~, und drücke~h~ ~k~ ~PDFW~ ~w~zum Feuern!
-[HELP3]
-Du kannst nur kurze Zeit sprinten, ohne müde zu werden.
+[HELP59]
+~w~Hast du ein Ziel erfasst, drücke~h~ ~k~ ~PDCTL~~w~, um es zu wechseln.
-[HELP4_D]
-Drücke den~h~ rechten Analog-Stick nach oben, um zu ~h~beschleunigen.
+[HELP60]
+~w~Manche Fässer explodieren, wenn du auf sie schießt - aber halte Abstand!
-[HELP5_D]
-Zieh den ~h~rechten Analog-Stick~w~ zurück, um zu ~h~bremsen~w~, oder um ~h~zurückzusetzen~w~, wenn das Fahrzeug steht.
+[TANK]
+~h~~k~ ~VEWEA~~w~, um mit der Kanone des Rhino zu zielen.~h~ ~k~ ~VEWEP~ ~w~zum Feuern.
-[HELP7_A]
-Halte die~h~ ~k~~PED_LOCK_TARGET~ ~w~gedrückt, um mit dem Präzisionsgewehr zu zielen.
+[ANSWER]
+~w~Drücke die~h~ ~k~ ~ANS~~w~, um an dein Handy zu gehen und~h~ ~k~ ~VEEE~~w~, um aufzulegen.
-[HELP7_D]
-Halte die~h~ ~k~~PED_LOCK_TARGET~ ~w~gedrückt, um mit dem Präzisionsgewehr zu zielen.
+[BOMB]
+~w~Fährst du in die Bombenwerkstatt, wird 8-Ball für ~h~$500~w~ eine ~h~Bombe~w~ an deinem Wagen anbringen.
-[HELP10]
-Dieser Stern zeigt an, dass du von der Polizei gesucht wirst.
+[BRIDGE1]
+~w~Callahan Bridge: Im Bau. Geplante Fertigstellung: Mai 1998
-[HELP11]
-Je mehr Sterne, desto dringender wirst du gesucht.
+[STRIK_1]
+~w~Wenn der Streik beendet ist, wirst du mit der ~h~Fähre~w~ nach Staunton Island fahren können.
-[HELP13]
-Manchmal musst du vielleicht Wege finden, die das Radar nicht zeigt.
+[SPRAY]
+~w~Beim ~h~Pay 'n' Spray~w~ wirst du deinen ~h~Fahndungslevel~w~ los und dein Fahrzeug wird ~h~repariert ~w~und ~h~umgespritzt~w~. Kostenpunkt: ~h~$100.
-[TIMER]
-Diese Mission hat ein Zeitlimit. Du musst sie beendet haben, bevor die Zeit um ist.
+[S_TRN_1]
+~w~Mit der ~h~U-Bahn~w~ kannst du in Liberty City herumfahren. Drücke~h~ ~k~ ~VEEE~~w~, um in eine U-Bahn ~h~ein- ~w~oder ~h~auszusteigen~w~.
-[HORN]
-~g~Drück auf die Hupe.
+[TUBE1]
+~w~Wenn der Bahnhof öffnet, kannst du eine ~h~U-Bahn~w~ nach Staunton Island nehmen.
-[NOMONEY]
-~g~Du brauchst mehr Cash!
+[TUBE2]
+~w~Du kannst zum ~h~Francis International Airport ~w~fahren, wenn dieser Bahnhof öffnet.
-[REWARD]
-BELOHNUNG $~1~
+[TUBE_2]
+~w~Um in eine ~h~U-Bahn~w~ zu steigen, drücke~h~ ~k~ ~VEEE~.
-[M_FAIL]
-MISSION FEHLGESCHLAGEN!
+[SPRAY1]
+~w~Parkst du im ~h~Pay 'n' Spray~w~, so wirst du deinen ~h~Fahndungslevel~w~ los und dein Fahrzeug wird ~h~repariert ~w~und ~h~umgespritzt~w~. Normalerweise kostet das ~h~$100~w~ - diesmal gratis.
-[M_PASS]
-MISSION ERFÜLLT! $~1~
+[HELPE31]
+~w~Während des Spiels werden stets neue Outfits für den Spieler verfügbar und müssen bei Mr. Benz abgeholt werden.
-[DEAD]
-AUSSER GEFECHT!
+[HELPE32]
+~w~Während des Spiels hat der Spieler die Möglichkeit, bei Ammu-Nation großkalibrigere Waffen zu kaufen.
-[BUSTED]
-VERHAFTET!
+[HELPCOM]
+~w~Neue Outfits im Versteck freigeschaltet!
-[WEATHE1]
-WETTER AUF SONNIG UMSTELLEN
+[HELP41]
+~w~Parke im ~h~Pay 'n' Spray~w~, um dein Auto reparieren und umspritzen zu lassen. Die ~h~Sprühdose~w~ auf dem Radar führt dich zum ~h~Pay 'n' Spray.
-[WEATHE2]
-WETTER AUF SEHR SONNIG UMSTELLEN
+[PAGEB1]
+~w~Die ~h~Pistole~w~ ist jetzt in deinem Versteck verfügbar!
-[WEATHE3]
-WETTER AUF BEWÖLKT UMSTELLEN
+[PAGEB10]
+~w~Du hast alle versteckten Päckchen gefunden! Hier hast du einen ~h~$50.000-Bonus!
-[WEATHE4]
-WETTER AUF REGNERISCH UMSTELLEN
+[EXPO_W]
+~w~Love Media braucht einen von denen!
-[WEATHE5]
-WETTER AUF NEBLIG UMSTELLEN
+[FERRY_2]
+~w~Komm wieder, wenn eine Fähre angelegt hat.
-[WEATHE6]
-WETTER NORMAL
+[FERRY_3]
+~w~Dein Fahrzeug passt nicht auf die Fähre!
-[NUMBER]
-~1~
+[FERRY_4]
+~w~Gesuchte Verbrecher dürfen nicht auf die Fähre!
-[LOADCAR]
-LADE FAHRZEUG... (ABBRECHEN MIT L1)
+[FERRY_5]
+~w~Du brauchst ~h~$25~w~ für ein Fährticket. Komm wieder, wenn du genug Geld hast.
-[CARSOFF]
-Deaktivierte Fahrzeuge.
+[FERRY_6]
+~w~Während einer Mission kannst du nicht die Fähre nehmen.
-[CARS_ON]
-Aktivierte Fahrzeuge.
+[FERR_SK]
+~w~Drücke~h~ ~k~ ~TRSK~~w~, um den Rest der Fahrt zu überspringen.
-[TEXTXYZ]
-Schreibe Koordinaten in Datei...
+[FERR_C1]
+~w~Fähre nach Staunton. Fahrpreis: ~h~$25~w~. Drücke~h~ ~k~ ~TGSUB~~w~, um ein Ticket zu kaufen.
-[CHEATON]
-Cheat Modus AN
+[FERR_C2]
+~w~Fähre nach Portland. Fahrpreis: ~h~$25~w~. Drücke~h~ ~k~ ~TGSUB~~w~, um ein Ticket zu kaufen.
-[CHEATOF]
-Cheat Modus AUS
+[A_H1]
+~w~~k~ ~AMBUY~ ~w~zum Kaufen. ~n~~k~ ~AMEXI~ ~w~zum Beenden.
-[IMPORT1]
-Geh nach draußen und warte auf dein Fahrzeug.
+[A_UZI_A]
+~w~Ammu-Nation hat jetzt Micro SMGs auf Lager!
-[PAGEB11]
-Flammenwerfer in Versteck angeliefert.
+[AMMU]
+~w~Wenn eine neue Lieferung eintrifft, gibt es wieder Waffen bei ~h~Ammu-Nation~w~. Sorry, dass Sie umsonst hier waren.
[WANT_A]
-Verhaftet wirst du nur, wenn die Polizei nach dir ~h~fahndet.
+~w~Wirst du ~h~'verhaftet'~w~, so wirst du zum nächsten Polizeirevier gebracht.
[WANT_B]
-Dein ~h~Fahndungslevel~w~ wird durch die Reihe von Sternen oben rechts auf dem Bildschirm dargestellt.
+~w~Passiert dir das auf einer Mission, ist diese fehlgeschlagen und die Cops nehmen dir alle Waffen weg und kassieren Schmiergeld von dir.
[WANT_C]
-Du hast jetzt einen ~h~Fahndungslevel~w~ von eins...
+~w~Du wirst nur ~h~'verhaftet'~w~, wenn du einen ~h~Fahndungslevel~w~ hast - dargestellt durch eine Reihe von Sternen am oberen Bildschirmrand.
[WANT_D]
-zwei...
+~w~Je mehr Sterne du hast, desto entschiedener werden die Gesetzeshüter dich verfolgen.
[WANT_E]
-drei...
+~w~Es gibt Wege, deinen Fahndungslevel zu verringern - halte die Augen danach offen.
[WANT_F]
-Steigt dein ~h~Fahndungslevel~w~, wirst du von besser ausgebildeten Polizisten gejagt.
+~w~Bist du mit einem Fahrzeug unterwegs, wirst du deinen Fahndungslevel bei einem ~h~Pay 'n' Spray~w~ los.
-[WANT_G]
-Wirst du ~h~verhaftet~w~, wirst du zum nächsten Polizeirevier gebracht.
-
-[WANT_H]
-Die Cops werden dir alle Waffen abnehmen und kassieren ein wenig Bestechungsgeld von dir.
-
-[WANT_I]
-Wenn dir das auf einer Mission passiert, ist die Mission fehlgeschlagen.
-
-[WANT_J]
-Im Verlauf des Spiels wirst du Möglichkeiten entdecken, deinen Fahndungslevel zu reduzieren.
-
-[WANT_K]
-Wenn du in einem Wagen sitzt, werden ~h~LACKIEREREIEN~w~ den Fahndungslevel ~h~annullieren.
+[HEAL_A]
+~w~Wenn du ~h~'außer Gefecht'~w~ bist, wirst du zur nächsten Klinik gebracht.
[HEAL_B]
-Wenn du ~h~'außer Gefecht'~w~ bist, wirst du zur nächsten Klinik gebracht.
+~w~Du verlierst alle Waffen und eine etwaige Mission ist fehlgeschlagen. Außerdem musst du die Behandlung bezahlen.
[HEAL_C]
-Du verlierst alle Waffen, und die Ärzte knöpfen dir ein wenig Cash für die Behandlung ab.
+~w~Dein ~h~Gesundheitszustand~w~ wird durch den roten Balken oben rechts angezeigt.
-[HEAL_E]
-Je länger du spielst, desto mehr Wege wirst du finden, dich selbst zu verarzten oder zu schützen.
+[HEAL_D]
+~w~Es gibt Möglichkeiten, sich zu kurieren oder zu schützen - halte die Augen danach offen.
-[SAVE1]
-Stell dich in die Markierung. So kannst du dein ~h~Spiel speichern~w~. Während einer Mission kannst du nicht speichern.
+[H_WE_01]
+~w~Gehe über eine Waffe, um sie aufzuheben. Du kannst Waffen nur zu Fuß an dich nehmen.
-[SAVE2]
-Jedes Fahrzeug, das in dieser Garage abgestellt wird, wird für dich aufbewahrt, wenn das Spiel gespeichert wird.
+[H_WE_02]
+~w~Hast du bereits eine Waffe dieses Typs, dann drücke~h~ ~k~ ~PUCF~~w~, um sie durch die neue zu ersetzen.
-[AMMU]
-Betritt den Ammu-Nation, um eine Waffe zu kaufen.
+[PU_CF]
+~w~Drücke die~h~ ~k~ ~PUCF~~w~, um diese Waffe an dich zu nehmen. Eine etwaige Waffe gleichen Typs geht verloren.
-[R_TIME]
-ZEIT:
+[CLOTHA]
+Benutze~h~ ~k~ ~AMMOV~~w~, um Bekleidung anzusehen. Umziehen ~n~mit~h~ ~k~ ~AMBUY~~w~. Abbrechen mit~h~ ~k~ ~AMEXI~~w~.
-[PROP_1]
-Du hast nicht genug Cash für dieses Objekt.
+[CLOTHB]
+~w~Du kannst hier jederzeit deine Kleidung wechseln.
-[PROP_2]
-Während einer Mission kannst du keine Objekte kaufen.
+[SIREN_1]
+~w~Um die ~h~Sirene eines Einsatzfahrzeuges~w~ ein- oder auszuschalten, drücke schnell die~h~ ~k~ ~VEHN~.
-[IND_ZON]
-Vice City Beach
-
-[COM_ZON]
-Vice City Mainland
+[FHOSE_1]
+~w~Halte~h~ ~k~ ~VEWEP~~w~, um die Löschkanone einzusetzen.
-[BEACH1]
-Ocean Beach
+[PHOTO1]
+~w~Halte~h~ ~k~ ~PDLT~~w~, um durch den Sucher der Kamera zu schauen.
-[BEACH2]
-Washington Beach
+[PHOTO2]
+~w~Während du die Kamera benutzt, kannst du mit~h~ ~k~ ~SNZI~ ~w~und~h~ ~k~ ~SNZO~ ~w~heran- und heraus~h~zoomen~w~.
-[BEACH3]
-Vice Point
+[PHOTO3]
+~w~Drücke~h~ ~k~ ~PDFW~~w~, um ein anvisiertes Motiv zu fotografieren.
-[GOLFC]
-Leaf Links Golfclub
+[BENZ_H1]
+~w~Das ~h~Hemdensymbol~w~ auf dem Radar führt dich zu ~h~Mr. Benz' Bekleidungsgeschäft.
-[STARI]
-Starfish Island
+[BENZ_LE]
+~w~Der ~h~Leone-Anzug~w~ ist jetzt im Versteck verfügbar.
-[DOCKS]
-Viceport
+[BENZ_GU]
+~w~Das ~h~Avenging Angel-Kostüm~w~ ist jetzt im Versteck verfügbar.
-[HAVANA]
-Little Havana
+[BENZ_CH]
+~w~Die ~h~Chauffeurslivree~w~ ist jetzt im Versteck verfügbar.
-[HAITI]
-Little Haiti
+[BENZ_TU]
+~w~Der ~h~Smoking~w~ ist jetzt im Versteck verfügbar.
-[PORNI]
-Prawn Island
+[ATUTOR]
+~w~Zum Ein- und Ausschalten von Krankenwagen-Missionen drücke~h~ ~k~ ~TGSUB~.
-[DTOWN]
-Downtown
+[CTUTOR]
+~w~Zum Ein- und Ausschalten von Bürgerwehr-Missionen drücke~h~ ~k~ ~TGSUB~.
-[VICE_C]
-Vice City
+[FTUTOR]
+~w~Zum Ein- und Ausschalten von Feuerwehr-Missionen drücke~h~ ~k~ ~TGSUB~.
-[A_PORT]
-Escobar Inter. Airport
+[TRATUT1]
+~w~Zum Ein- und Ausschalten von Müllabfuhr-Missionen drücke~h~ ~k~ ~TGSUB~.
-[JUNKY]
-Schrottplatz
+[TTUTOR]
+~w~Zum Ein- und Ausschalten von Taxi-Missionen drücke~h~ ~k~ ~TGSUB~.
-[PISTOL]
-Pistole
+[A_COMP2]
+~w~Krankenwagen-Mission: Level 12 abgeschlossen! Laufen ermüdet dich nie mehr!
-[PYTHON]
-.357
+[FIREPRO]
+~w~Feuerwehr-Mission: Level 12 abgeschlossen! Du bist jetzt feuerfest!
-[UZI]
-Uz-1
+[RCHELP]
+~w~Zum ~h~Sprengen~w~ deines ferngesteuerten Autos drücke~h~ ~k~ ~VEWEP~.
-[TEC9]
-Tec 9
+[TAXIH1]
+~w~Halte neben einem ~h~markierten Fußgänger~w~, um ihn einsteigen zu lassen, dann bring ihn schnell an sein Fahrtziel.
-[M4]
-M4
+[TIPHLP]
+~w~Der ~h~Trinkgeld-Balken~w~ sinkt mit zunehmender ~h~Fahrtzeit~w~ und wenn dein Taxi ~h~beschädigt~w~ wird.
-[INGRAM]
-Mac
+[ANG_E3]
+~w~Suche in Chinatown nach anderen Avenging Angels.
-[MP5]
-MP
+[ANGOUT]
+~w~Komm wieder, wenn du ein ~h~Avenging Angel~w~-Kostüm trägst.
-[RUGER]
-Kruger
+[ANGCOM2]
+~w~Avenging Angel-Missionen Staunton: Level 15 abgeschlossen! Du verlierst nun kein Geld mehr, wenn du verhaftet wirst!
-[SNIPE]
-Präzisionsgewehr
+[ANGCOM3]
+~w~Avenging Angel-Missionen Shoreside: Level 15 abgeschlossen! In deinem Versteck wartet ein 'Spezial-Fahrzeug' auf dich!
-[GRENADE]
-Granaten
+[TVOHELP]
+~w~Komm wieder, wenn du die ~h~Hockey-Maske~w~ trägst.
-[SHOTGN1]
-Schrotflinte
+[TIMER]
+Diese Mission hat ein Zeitlimit. Du musst sie beendet haben, bevor die Zeit um ist.
-[SHOTGN2]
-S.P.A.S. 12
+[GARAGE]
+Fahr den Wagen in die Garage, dann geh nach draußen.
-[SHOTGN3]
-Abgesägte Schrotflinte
+[TRASH]
+~g~Du hast dein Fahrzeug ziemlich geschrottet! Lass es reparieren!
-[ARMOUR]
-Kugelsichere Weste
+[WRECKED]
+~r~Das Fahrzeug ist Schrott!
-[LASER]
-.308 Präzisionsgewehr
+[SPOOK]
+SCHRECK-O-METER
-[BASEBAT]
-Baseballschläger
+[SPOTTED]
+~r~Sie haben dich bemerkt!
-[HAMMER]
-Hammer
+[REWARD]
+~w~Belohnung: $~1~
-[SCREWD]
-Schraubenzieher
+[GAMEOVR]
+GAME OVER
-[CLEVER]
-Fleischerbeil
+[Z]
+Z-Achse Wert: ~1~
-[MACHETE]
-Machete
+[DEAD]
+AUSSER GEFECHT!
-[KNIFE]
-Messer
+[BUSTED]
+VERHAFTET!
-[KATANA]
-Katana
+[GOODBOY]
+~w~$50 Braver-Bürger-Bonus!
-[CHAINSA]
-Kettensäge
+[NUMBER]
+~1~
-[G_COST]
+[SCORE]
$~1~
-[CAR_1]
-Krankenwagen
-
-[MALIBU]
-Malibu Club
-
-[MANSION]
-Diaz' Haus
-
-[TMANS]
-Vercetti Estate
-
-[STRIP]
-Pole Position Club
-
-[MALL1]
-North Point Einkaufszentrum
-
-[BANKINT]
-El Banco Corrupto Grande
-
-[RANGE]
-Schießstand
-
-[POL_HQ]
-Vice City Polizeihauptquartier
-
-[INT_B]
-Ein alter Freund
-
-[INTB_1]
-~g~Begib dich in die Anwaltskanzlei.
-
-[LAW_1]
-Die Party
-
-[LAW_2]
-Dunkle Gassen
-
-[LAW_3]
-Die Geschworenen
-
-[LAW_4]
-Aufruhr
-
-[COL_1]
-Der Verräter
-
-[COL_2]
-Kugelhagel im Einkaufszentrum
-
-[COL_3]
-Die Schutzengel
-
-[COL_4]
-Zu Befehl, Sir!
-
-[COL_5]
-Alle Mann an Deck!
-
-[COK_1]
-Die Jagd
-
-[COK_2]
-Phnom Penh '86
-
-[COK_3]
-Das schnellste Boot
-
-[COK_4]
-Angebot & Nachfrage
-
-[KENT_1]
-Die Befreiungsaktion
-
-[ASS_1]
-Pizza Mortale
-
-[BUD_1]
-Fette Beute
-
-[BUD_2]
-Zoff in der Bar
-
-[BUD_3]
-Cop-Land
-
-[CAP_1]
-Der Eintreiber
-
-[FIN_1]
-Freunde und andere Feinde
-
-[BANK_1]
-Kein Entkommen?
-
-[BANK_2]
-Der Scharfschütze
-
-[BANK_3]
-Der Fahrer
+[LOADCAR]
+LADE FAHRZEUG... (ABBRECHEN MIT L-Taste)
-[BANK_4]
-Der Coup
+[CARSOFF]
+Deaktivierte Fahrzeuge.
-[CNT_1]
-Der Singvogel
+[CARS_ON]
+Aktivierte Fahrzeuge.
-[CNT_2]
-Der Kurier
+[TEXTXYZ]
+Schreibe Koordinaten in Datei...
-[PORN_1]
-Alle meine Pferdchen
+[CHEATON]
+Cheat Modus AN
-[PORN_2]
-Der Dildo-Jet
+[CHEATOF]
+Cheat Modus AUS
-[PORN_3]
-Ein Mann namens Martha
+[IMPORT1]
+Geh nach draußen und warte auf dein Fahrzeug.
-[PORN_4]
-Heiße Lightshow
+[KE_PLYR]
+Spieler
-[TAX_1]
-Kaufman-Taxis
+[KE_CTCS]
+Kontaktleute
-[TAXI_1]
-V.I.P
+[KE_WEPS]
+Waffen
-[TAXI_2]
-Konkurrentenjagd
+[KE_ADR]
+Adrenalin
-[TAXI_3]
-Das Taxi-Inferno
+[KE_BRIB]
+Schmiergeld
-[ICE_1]
-Eiscreme und andere Leckereien
+[KE_HLTH]
+Gesundheit
-[TEX_1]
-Schlagende Argumente
+[KE_KILF]
+Spezialauftrag
-[TEX_2]
-Das Begräbnis
+[KE_ARM]
+Panzerung
-[TEX_3]
-Schutt und Asche
+[KE_USJ]
+M-Stunt
-[PHIL_1]
-Der Waffenschieber
+[KE_PKG]
+Verstecktes Päckchen
-[PHIL_2]
-TNT-Whiskey
+[KE_INFO]
+Information
-[BIKE_1]
-Wheels of Steel
+[DAM]
+Schaden
-[BIKE_2]
-Chaos-City
+[KILLS]
+Hits
-[BIKE_3]
-Big Bakers Bike
+[TIME]
+Timer
-[ROCK_1]
-Love Juice
+[STOPS]
+Stops
-[ROCK_2]
-Der Psychokiller
+[BULL]
+Goldbarren
-[ROCK_3]
-Die PR-Tour
+[EVID]
+Beweismittel
-[ROCK_4]
-Love Fist!
+[HEALTH]
+Auto
-[HAT_1]
-Mysteriöses Pulver
+[COLLECT]
+Gesammelt
-[HAT_2]
-Fliegende Bomben
+[LEVEL]
+Level
-[HAT_3]
-Schmutzige Methoden
+[SALES]
+Verkäufe
-[CUB_1]
-Stunt-Boot-Action
+[CITYZON]
+Liberty City
-[CUB_2]
-Kanonenfutter
+[VICE_C]
+Liberty City
-[CUB_3]
-Die Seeschlacht
+[IND_ZON]
+Portland
-[CUB_4]
-Trojanisches Voodoo
+[PORT_W]
+Callahan Point
-[JOB_1]
-Der Pizza-Lieferant
+[PORT_S]
+Atlantic Quays
-[JOB_2]
-Ein bedauerlicher Unfall
+[PORT_E]
+Portland Harbor
-[JOB_3]
-Die rasende Schrottfabrik
+[PORT_I]
+Trenton
-[JOB_4]
-Trouble am Check-In
+[S_VIEW]
+Portland View
-[JOB_5]
-Gefeuert!
+[CHINA]
+Chinatown
-[ANSWER]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Anruf auf deinem Handy entgegenzunehmen.
+[EASTBAY]
+Portland Beach
-[MOB_01A]
-Hey, mein Alter! Paul hier. Ich hätte da vielleicht was für dich, aber das müssen wir unter vier Augen besprechen.
+[LITTLEI]
+Saint Mark's
-[MOB_01B]
-Ich bin im Malibu und lass es mir gutgehen.
+[REDLIGH]
+Rotlichtviertel
-[MOB_01C]
-Ich denke, ich hab einen gut bei dir, wenn du das hörst, Kumpel. Bis gleich.
+[TOWERS]
+Hepburn Heights
-[MOB_02A]
-Hey! Hallo, Tommy? Tommy!
+[HARWOOD]
+Harwood
-[MOB_02B]
-In der Druckerei ist irgendwas im Busch. Fahr mal rüber und kümmere dich darum.
+[ROADBR1]
+Callahan Bridge
-[MOB_02C]
-Es scheint ziemlichen Ärger zu geben. Ich muss Schluss machen.
+[ROADBR2]
+Callahan Bridge
-[MOB_03A]
-Mr. Vercetti? Ich habe hier einen unterschriebenen Wisch,
+[TUNNELP]
+Porter Tunnel
-[MOB_03B]
-der besagt, dass Sie alle Schulden von 'BJ's Autos' übernehmen.
+[BOMB1]
+8-Balls Werkstatt
-[MOB_03C]
-Nach BJ's plötzlichem Verschwinden hab ich keine andere Wahl,
+[COM_ZON]
+Staunton Island
-[MOB_03D]
-als Sie für seine Verbindlichkeiten zur Rechenschaft zu ziehen.
+[STADIUM]
+Aspatria
-[MOB_03E]
-Bis Sie die volle Summe beglichen haben,
+[STADIU2]
+Aspatria
-[MOB_03F]
-sollte Ihnen klar sein, dass Vice City ein heißes Pflaster für Sie ist.
+[STADIU3]
+Aspatria
-[MOB_04A]
-Wie geht's, mein Alter?
+[HOSPI_2]
+Rockford
-[MOB_04B]
-Ich hab vergessen, dir zu sagen, dass wir für das Konzert noch ein paar Ordner brauchen.
+[UNIVERS]
+Liberty Campus
-[MOB_04C]
-Da gibt's so 'ne Biker-Gang, die wär super für die Publicity.
+[CONSTRU]
+Fort Staunton
-[MOB_04D]
-Wenn du mir das arrangierst, besorg ich dir 'n VIP-Pass für den Abend. Ok?
+[PARK]
+Belleville Park
-[MOB_05A]
-Gut gemacht, Tommy. Schön, den Ofen wiederzuhaben.
+[COM_EAS]
+Newport
-[MOB_05B]
-Sag Mr. Kent Paul, dass er seine Ordner für das Konzert kriegt.
+[SHOPING]
+Bedford Point
-[MOB_05C]
-Du hast mein Wort darauf.
+[SHOP2]
+Bedford Point
-[MOB_05D]
-Halt die Ohren steif.
+[SHOP3]
+Bedford Point
-[MOB_06A]
-Tommy, man hört so allerlei über dich, mein Junge.
+[YAKUSA]
+Torrington
-[MOB_06B]
-Wenn du willst, kocht Tante Poulet dir ein leckeres Süppchen, dann kannst du mal abschalten, hm?
+[SUB_ZON]
+Shoreside Vale
-[MOB_06C]
-Komm doch die Tage mal bei mir vorbei, ok, Tommy?
+[AIRPORT]
+Francis Intl. Airport
-[MOB_08A]
-Tommy, ich dachte mir, du könntest meinen Rat als Geschäftsmann brauchen.
+[PROJECT]
+Wichita Gardens
-[MOB_08B]
-Wenn du ein Unternehmen am Laufen hast, musst du einmal pro Woche die Einnahmen kassieren gehen.
+[SUB_IND]
+Pike Creek
-[MOB_08C]
-Sonst werden deine Leute übermütig und versuchen, in die eigene Tasche zu wirtschaften. Ok?
+[SWANKS]
+Cedar Grove
-[MOB_08D]
-Hey, ich weiß selbst, wie man so was macht, Ken, ok?
+[BIG_DAM]
+Cochrane Dam
-[MOB_08E]
-Ok, ok. Ich weiß ja, dass du Bescheid weißt.
+[SUB_ZO2]
+Shoreside Vale
-[MOB_08F]
-Ich meinte ja nur, damit du weißt, dass ich im Zweifelsfall auch Bescheid weiß.
+[SUB_ZO3]
+Shoreside Vale
-[MOB_08G]
-Nur für alle Fälle, mein Alter!
+[CAR_1]
+Krankenwagen
-[MOB_08H]
-Wenn du meinst, Ken...
+[CAR_2]
+Feuerwehrwagen
-[MOB_09A]
-Hey, Leo! Ich hab Arbeit für dich!
+[CAR_3]
+Streifenwagen
-[MOB_09B]
-Hier ist nicht Leo.
+[CAR_4]
+Enforcer
-[MOB_09C]
-Hey, wenn Leo erfährt, dass du mit seinem Handy telefonierst, bist du fällig.
+[CAR_5]
+Barracks
-[MOB_09E]
-Du hast Leo erledigt? Du musst Mumm haben - willst du für mich arbeiten?
+[CAR_6]
+Rhino
-[MOB_09F]
-Komm ins Café von meinem Vater in Little Havana, dann können wir reden.
+[CAR_7]
+FBI Cruiser
-[MOB_10A]
-Tommy! Du musst mir einen Gefallen tun.
+[CAR_8]
+Securicar
-[MOB_10B]
-Steve! Was machen die Dreharbeiten?
+[CAR_9]
+Moonbeam
-[MOB_10C]
-Gut. Ich- äh, WIR brauchen noch eine Autoverfolgungsjagd, aber unser Budget ist knapp.
+[CAR_10]
+Coach
-[MOB_10D]
-Ich hab in der Stadt verteilt ein paar Karren stehen. Du weißt, was zu tun ist.
+[CAR_11]
+Flatbed
-[MOB_10E]
-Ok, Steve, ich halt die Augen offen. Bis dann.
+[CAR_12]
+Linerunner
-[MOB_11A]
-Hallo, Söhnchen. Ich wollte dir kurz 'nen kleinen Tipp geben.
+[CAR_13]
+Trashmaster
-[MOB_11B]
-Hi, Avery. Worum geht's denn?
+[CAR_14]
+Patriot
-[MOB_11C]
-Man kann in dieser Stadt viel Geld machen, wenn man die richtigen Immobilien hat. Klingelt's?
+[CAR_15]
+Mr Whoopee
-[MOB_11D]
-Ich denke schon.
+[CAR_16]
+Mule
-[MOB_11E]
-Also, halt die Augen offen, dann könnte sich dir die ideale Gelegenheit bieten. Bis bald.
+[CAR_17]
+Yankee
-[MOB_11F]
-Ciao, Avery.
+[CAR_18]
+Pony
-[MOB12_A]
-Hey, Tommy. Avery hier. Hör mal, ich hab gerade alle Hände voll zu tun,
+[CAR_19]
+Bobcat
-[MOB12_B]
-und ein Bevollmächtigter von mir müsste zu den Gator Keys eskortiert werden.
+[CAR_20]
+Rumpo
-[MOB12_C]
-Ich will da ein Stück Land kaufen und schick ihn hin, um den Deal abzuschließen.
+[CAR_21]
+Blista
-[MOB12_D]
-Könntest du dafür sorgen, dass er gut dort ankommt?
+[CAR_22]
+Dodo
-[MOB12_E]
-Mach ich doch glatt, Avery. Wo soll ich ihn abholen?
+[CAR_23]
+Bus
-[MOB12_F]
-Er hat gerade noch an der Baustelle zu tun. Hol ihn doch am besten dort ab.
+[CAR_24]
+Sentinel
-[MOB12_G]
-Kein Problem. Bis dann, Avery.
+[CAR_25]
+Cheetah
-[MOB13_A]
-Vercetti? VERCETTI!! Verdammt, Mann, Sie müssen mir helfen!
+[CAR_26]
+Banshee
-[MOB13_B]
-Mr. Moffat? Wie geht's der Familie?
+[CAR_27]
+Stinger
-[MOB13_C]
-Zur Hölle mit Ihnen, hören Sie!
+[CAR_28]
+Infernus
-[MOB13_D]
-Tja, war nett, mit Ihnen zu plaudern...
+[CAR_29]
+Esperanto
-[MOB13_E]
-WARTEN SIE! Vercetti - Tommy, kann ich Tommy zu Ihnen sagen?
+[CAR_30]
+Kuruma
-[MOB13_F]
-Wir sind beide Geschäftsleute. Sie erkennen doch ein gutes Geschäft sofort, oder?
+[CAR_31]
+Stretch Limo
-[MOB13_G]
-Ich hab keine Zeit für Palaver. Kommen Sie zum Punkt.
+[CAR_32]
+Perennial
-[MOB13_H]
-GELD. Geld ist der Punkt, verdammt!
+[CAR_33]
+Landstalker
-[MOB13_I]
-Ich bin den Kerlen nochmal entwischt, aber sie sitzen mir im Nacken. Die machen sich einen Spaß daraus!
+[CAR_34]
+Manana
-[MOB13_J]
-Ich bin in einer Telefonzelle, irgendwo in diesem verdammten Loch.
+[CAR_35]
+Idaho
-[MOB13_K]
-Holen Sie mich hier raus, bevor sie mich schnappen und-... oh Gott...
+[CAR_36]
+Stallion
-[MOB13_L]
-Ich bin leider ausgebucht bis-...
+[CAR_37]
+Taxi
-[MOB13_M]
-Nein! Verarschen Sie mich nicht, haben Sie Erbarmen! Kein Mensch hat das verdient!
+[CAR_38]
+Cabbie
-[MOB13_N]
-Ich flehe Sie an, Tommy, auf den Knien flehe ich Sie an! Bitte...
+[CAR_39]
+Buggy
-[MOB13_O]
-Naja, ich könnte 'nen kurzen Abstecher machen. Vielleicht finde ich Sie...
+[SINDACO]
+Sindacco Argento
-[MOB13_P]
-Oh Gott, sie kommen! Um Himmels Willen, beeilen Sie sich!
+[HEARSE]
+Hearse
-[MOB_14A]
-Hey, Tommy, hör zu, das wird dir gefallen.
+[LANDSTK]
+Landstalker
-[MOB_14B]
-Ein Vögelchen hat mir gesteckt, dass das Vice City-Spezialkommando in einem renommierten Finanzinstitut ein Schließfach hat.
+[IDAHO]
+Idaho
-[MOB_14C]
-Da sind die Schmiergelder drin, die sie über die Jahre kassiert haben.
+[STINGER]
+Stinger
-[MOB_14D]
-So 'ne Art Altersversorgung für die ganze Mannschaft.
+[LINERUN]
+Linerunner
-[MOB_14E]
-Sollte dir diese Info je helfen, dir was von dem Kuchen anzueignen,
+[PEREN]
+Perennial
-[MOB_14F]
-würdest du dich sicher verpflichtet fühlen, mir 'n Stück davon abzugeben?
+[SENTINL]
+Sentinel
-[MOB_14G]
-Ich werd dich nicht vergessen. Danke, Kent.
+[PATRIOT]
+Patriot
-[MOB_14H]
-'Paul'heiße ich, Scherzkeks. Ich KOMME aus Kent, Nähe London.
+[FIRETRK]
+Feuerwehrwagen
-[MOB_14I]
-Mein geographisches Wissen über England ist eben nicht mehr, was es war.
+[TRASHM]
+Trashmaster
-[MOB15_A]
-Tommy, Alter. Hier ist Paul aus Kent.
+[STRETCH]
+Stretch Limo
-[MOB15_B]
-Unten im Malibu, da sind ein paar Keulen, die haben ein Auge auf dich geworfen.
+[MANANA]
+Manana
-[MOB15_C]
-Ich verstehe nur Bahnhof.
+[INFERNS]
+Infernus
-[MOB15_D]
-Hasen. Miezen. Na, Puppen, eben. Coole Babes, keine Professionellen, oder so.
+[BLISTA]
+Blista
-[MOB15_E]
-Du solltest mal kommen und sie dir ansehen.
+[PONY]
+Pony
-[MOB16_A]
-Tommy, hier Paul. Wie geht's, mein Freund?
+[MULE]
+Mule
-[MOB16_B]
-Was willst du, Paul? Ich brauch keine getürkten Designer-Klamotten.
+[CHEETAH]
+Cheetah
-[MOB16_C]
-Sehr witzig. Du weißt, dass ich mit getürkter Ware nichts am Hut habe.
+[AMBULAN]
+Krankenwagen
-[MOB16_D]
-Wollte nur hören, ob ich nicht 'ne Rolle in einem von deinen Filmen kriegen könnte.
+[FBICAR]
+FBI Cruiser
-[MOB16_E]
-In England habe ich viel einschlägiges Zeug gedreht.
+[MOONBM]
+Moonbeam
-[MOB16_F]
-Ich hab mehr zu bieten als du, mein Alter.
+[ESPERAN]
+Esperanto
-[MOB16_G]
-Paul, danke für das Angebot. Ich komm auf dich zurück.
+[TAXI]
+Taxi
-[MOB16_H]
-Lass mich nicht hängen. Denk dran, was ich alles für dich getan habe.
+[KURUMA]
+Kuruma
-[MOB16_I]
-Das versuch ich ja grade zu vergessen.
+[BOBCAT]
+Bobcat
-[MOB17_A]
-Tommy Vercetti. Wie geht's, großer Meister?
+[WHOOPEE]
+Mr Whoopee
-[MOB17_B]
-Man hört so einiges über dich. Bist jetzt 'ne große Nummer in der Stadt, hä?
+[BFINJC]
+BF Injection
-[MOB17_C]
-Paul, du bist betrunken.
+[POLICAR]
+Streifenwagen
-[MOB17_D]
-Nein, du Trottel, ich bin nicht betrunken.
+[ENFORCR]
+Enforcer
-[MOB17_E]
-Hab mir nur ein paar Ladungen Stoff gegeben, war seit ein paar Tagen nicht im Bett.
+[SECURI]
+Securicar
-[MOB17_F]
-Und du brauchst mich nicht dumm anzureden.
+[BANSHEE]
+Banshee
-[MOB17_G]
-Ich bin nicht irgendwer. Wer hat dir denn in dieser Stadt den Weg geebnet? Ich!
+[PREDATR]
+Predator
-[MOB17_H]
-Tatsächlich?
+[BUS]
+Bus
-[MOB17_I]
-Tatsächlich!
+[RHINO]
+Rhino
-[MOB17_J]
-Paul, reg dich ab. Ich hatte viel zu tun. Sei kein Idiot.
+[BARRCKS]
+Barracks OL
-[MOB17_K]
-Ich bin kein Idiot. Das haben sie schon im Jugendknast gesagt.
+[BARRACK]
+Barracks OL
-[MOB17_L]
-Wenn du Ärger haben willst, Freundchen, den kannst du haben!
+[TRAIN]
+Zug
-[MOB17_M]
-Tommy, bitte! Du warst meine große Hoffnung. Bitte, mach dich nicht lustig über mich!
+[HELI]
+Helikopter
-[MOB17_N]
-Paul, schlaf mal 'ne Runde. Im Ernst.
+[DODO]
+Dodo
-[MOB18_A]
-Tommy, hier Paul. Wie geht's, Alter? Hey, ich dachte mir, das musst du hören...
+[COACH]
+Coach
-[MOB18_B]
-Echt der Hammer. Du glaubst nicht, was mir für 'ne Puppe über den Weg gelaufen ist.
+[CABBIE]
+Cabbie
-[MOB18_C]
-'ne Bordsteinschwalbe, oder sowas. Unten in Little Havana.
+[STALION]
+Stallion
-[MOB18_D]
-Sagt, sie heißt Mercedes oder so ähnlich. Wahnsinn, Alter. Die Puppe musst du dir geben.
+[RUMPO]
+Rumpo
-[MOB18_E]
-Da würde 'nen Toter Hormonkoller kriegen. Sie sagt, ich wär der beste, den sie je hatte.
+[RCBANDT]
+RC Bandit
-[MOB18_F]
-Halt die Augen nach ihr offen. Bis dann.
+[BELLYUP]
+Triaden-Fisch-Van
-[MOB19_A]
-Tommy, hier KP - Kent Paul. Ich hab läuten hören, dass jemand dich leimen will.
+[MRWONGS]
+Mr Wongs
-[MOB19_B]
-Also, sei wachsam, mein Freund. Und kein Sterbenswörtchen, dass du das von mir weißt.
+[MAFIACR]
+Leone Sentinel
-[MOB_20A]
-Hallo, Tommy. Hier Paul. Ich höre, dass du ein paar Leuten auf den Schlips getreten bist.
+[YARDICR]
+Yardie Lobo
-[MOB_20B]
-Irgendjemand sieht es anscheinend nicht gern, dass du auf einmal den großen Zampano spielst.
+[YAKUZCR]
+Yakuza Stinger
-[MOB_20C]
-Also, sag nicht, ich hätte dich nicht gewarnt. Es rächt sich, wenn man's übertreibt.
+[DIABLCR]
+Diablo Stallion
-[MOB_20D]
-Jedenfalls ist angeblich ein Kopfgeld auf dich ausgesetzt und es ist schon jemand hinter dir her.
+[COLOMCR]
+Kartell Cruiser
-[MOB_20E]
-Also pass auf dich auf. Und vergiss mich nicht ganz.
+[HOODSCR]
+Hoods Rumpo XL
-[MOB71_A]
-Tommy, Thomas, hier Cortez. Wie geht's?
+[AEROPL]
+Flugzeug
-[MOB71_B]
-Es bleibt spannend. Und selbst?
+[SPEEDER]
+Speeder
-[MOB71_C]
-Ein ewiger Kampf, Tommy. Entschuldigen Sie die schlechte Verbindung, wir hatten wieder einen Putschversuch.
+[REEFER]
+Reefer
-[MOB71_D]
-Es gibt keine anspruchsvollere Geliebte als das Volk.
+[PANLANT]
+Panlantic
-[MOB71_E]
-Seit ich aus Vice City zurück bin, gab's drei Revolutionen und vier Staatsstreiche.
+[FLATBED]
+Flatbed
-[MOB71_F]
-Zum Glück bin ich jedesmal befördert worden.
+[YANKEE]
+Yankee
-[MOB71_G]
-Ich wollte Sie wegen Mercedes etwas fragen.
+[BORGNIN]
+Bickle '76
-[MOB71_H]
-OK. Was ist mit ihr?
+[TOYZ]
+TOYZ
-[MOB71_I]
-Ich hör Geschichten über sie und weiß nicht, was ich davon halten soll.
+[MCLARN]
+Lancer MF1
-[MOB71_J]
-Vielleicht wollen mich alle demütigen.
+[SHELBY]
+Hellenbach GT
-[MOB71_K]
-Vielleicht wird sie übermütig, seit ich weg musste, sagen Sie mir nur eins, Tommy. Ist das wahr?.
+[SUBARU]
+Impreza WRX
-[MOB71_L]
-sagen Sie mir nur eins, Tommy. Ist das wahr?
+[SUPRA]
+Supra
-[MOB71_M]
-Ist was wahr?
+[SKYLINE]
+Skoiloine
-[MOB71_N]
-Die Geschichten, die ich höre? Will sie wirklich Anwältin werden?
+[CYCLONE]
+Cyclone GT
-[MOB71_O]
-Welche Schande, Tommy. Wir Cortez sind eine stolze Familie und würden nie einer Tochter erlauben, Anwältin zu werden.
+[ESPRIT]
+V8 Ghost
-[MOB71_P]
-Sagen Sie mir, dass es nicht wahr ist. Das ertrage ich nicht.
+[MINI]
+Tommy
-[MOB71_Q]
-Colonel, ich versichere Ihnen, dass Mercedes niemals Anwältin wird. Keine Angst.
+[HOTROD]
+Thunder-Rodd
-[MOB71_R]
-Danke, Tommy - das wäre zu viel der Schande. Sie ist eine Dame, keine Schmarotzerin.
+[CAMPVAN]
+Wahlkampf-Rumpo
-[MOB71_S]
-Ich weiß, Colonel
+[BALLOT]
+Stimmzettel-Van
-[MOB71_T]
-Tommy, Sie müssen jetzt entschuldigen, gerade kommt der neue Innenminister.
+[GHOST]
+Ghost
-[MOB71_U]
-Ich hab seinen Vater vor Jahren bei einem Putschversuch erledigt. Ich muss mich gut mit ihm stellen. Wiederhören.
+[ANGEL]
+Angel
-[MOB22_A]
-Tommy, Sie erweisen sich als sehr nützlich, mein Freund.
+[ANGEL2]
+Avenger
-[MOB22_B]
-Danke, Cortez. Was ist mit meinem Deal?
+[PIZZABO]
+Pizzaboy
-[MOB22_C]
-Tommy, ich mühe mich ohne Unterlass, um diesem Sumpf von elenden Lügen und Intrigen auf den Grund zu gehen.
+[NOODLBO]
+Nudelboy
-[MOB22_D]
-Sie haben mein Wort darauf. Einstweilen möchte ich
+[FAGGIO]
+Faggio
-[MOB22_E]
-Ihnen den Dank meines Volkes aussprechen, für das Sie so viel getan haben.
+[FREEWAY]
+Freeway
-[MOB_25A]
-Tommy, hier Cortez. Die Franzosen machen mir Ärger. Und wie.
+[SANCHEZ]
+Sanchez
-[MOB_25B]
-Verdammte Heuchler! Jahrhundertelang beuten sie arme Länder aus und mich schimpfen sie einen Dieb!
+[SANCH2]
+Manchez
-[MOB_25C]
-Ich brauche dingend Ihre Hilfe.
+[F_PASS1]
+~w~Feuer gelöscht! Belohnung: $~1~
-[MOB_25D]
-Beeilen Sie sich. Ich brauche Sie. Ich hasse die Franzosen.
+[F_RANGE]
+~r~Du bist außer Reichweite des Feuerwehrfunks. Fahr näher an eine Feuerwache heran!
-[MOB_26A]
-Hallo, Tommy?
+[C0TGSUB]
+die R3-Taste
-[MOB_26B]
-Ja?
+[C0VESTR]
+den linken Analog-Stick oder die Richtungstasten Links und Rechts
-[MOB_26C]
-Baker hier. Wollte dir nur sagen, der Gig hat Spaß gemacht.
+[C1VESTR]
+den linken Analog-Stick
-[MOB_26D]
-Danke, auch im Namen der Gang. Eins sollst du wissen:
+[C2VESTR]
+linken Analog-Stick oder Richtungstasten Links und Rechts
-[MOB_26E]
-Du hast unsern Respekt. Halt die Nase im Wind, Junge.
+[C3VESTR]
+linken Analog-Stick
-[MOB_29A]
-Hallo? Spreche ich mit Mr. Tommy Vercetti?
+[C2VEHB]
+~T~
-[MOB_29B]
-Ja.
+[C3VEHB]
+L1-Taste
-[MOB_29C]
-Ich hab mir sagen lassen, du wärst der richtige Mann, wenn man Kroppzeug am Hals hat.
+[C0VEHN]
+L3-Taste
-[MOB_29D]
-Vielleicht...
+[C0VELL]
+L2-Taste
-[MOB_29E]
-Tja, ich hab 'ne regelrechte Plage am Hals. Haitianer, überall.
+[C1VELL]
+L2-Taste
-[MOB_29F]
-Mein Name ist Umberto Robina und es wär mir recht, wenn du baldmöglichst ins Café Robina kämst.
+[C2VELL]
+L2-Taste
-[MOB_29G]
-Diesmal haben's die Haitianer nämlich zu weit getrieben.
+[C3VELL]
+L2-Taste
-[MOB_29H]
-Test
+[C0VELR]
+R2-Taste
-[MOB_30A]
-Tommy, hier Umberto Robina.
+[C1VELR]
+R2-Taste
-[MOB_30B]
-Wie läuft das Café?
+[C2VELR]
+R2-Taste
-[MOB_30C]
-Oh, bestens. Sagenhaft, Tommy, sagenhaft. Keine Memmen, Tommy, nur echte Männer. Und wunderschöne Frauen!
+[C3VELR]
+R2-Taste
-[MOB_30D]
-Ich wollte nur sagen, für mich und Paps bist du jetzt einer von uns. Ein Kubaner.
+[C0VELB]
+die L2-Taste + die R2-Taste
-[MOB_30E]
-Du bist ein ganzer Kerl. Du hast Mumm in den Knochen.
+[C1VELB]
+die L2-Taste + die R2-Taste
-[MOB_30F]
-Danke, Umberto. Seit ich aus dem Knast raus bin, hat das keiner zu mir gesagt. Bis dann.
+[C2VELB]
+L2-Taste + R2-Taste
-[MOB_33A]
-Tommy, Phil hier. Spar dir die sentimentalen Worte, hör mir einfach zu, ok?
+[C3VELB]
+L2-Taste + R2-Taste
-[MOB_33B]
-Also, ich brau hier 'nen extra starken TNT-Whiskey und ich wollte fragen, ob du mal 'nen Schluck probieren willst.
+[C0VECRS]
+L1-Taste
-[MOB_33C]
-Im Ernst, Tommy, wenn du 'nen Drink willst, oder 'ne Wand abbeizen musst - das Zeug macht einen Mann aus dir.
+[C1VECRS]
+SELECT-Taste
-[MOB_33D]
-Bei mir hat's jedenfalls gewirkt, auch wenn ich jetzt auf einem Auge nichts mehr sehe. Ich warte auf dich.
+[C0VEWEI]
+dem linken Analog-Stick oben/unten oder den Richtungstasten Oben und Unten
-[MOB_34A]
-Tommy, war ein Vergnügen, mit dir zu arbeiten. So einen Spaß hatte ich seit Vietnam nicht mehr.
+[C1VEWEI]
+dem linken Analog-Stick oben/unten
-[MOB_34B]
-Also, falls du je irgendwas brauchst, ruf mich an, ok?
+[C2VEWEI]
+linken Analog-Stick oben/unten oder Richtungstasten Oben und Unten
-[MOB_34C]
-Ich vergesse keinen, mit dem ich in der Schlacht war.
+[C3VEWEI]
+linken Analog-Stick oben/unten
-[MOB_34D]
-Und ich kann dir bestimmt irgendwann helfen, ok?
+[C0PDCWE]
+die L2-Taste und die R2-Taste
-[MOB_35A]
-Tommy, die Wunde verheilt gut. Ist nur komisch:
+[C1PDCWE]
+die L2-Taste und die R2-Taste
-[MOB_35B]
-da hab ich auf 6 Schlachtfeldern gekämpft und nie 'n Kratzer abgekriegt und dann das!
+[C0PUCF]
+L1-Taste
-[MOB_35C]
-Jetzt bin ich der einarmige Phil. Hab aber 'n gutes Arsenal an Handfeuerwaffen, also bin ich auch mit Arm ab nicht arm dran.
+[C1PUCF]
+L1-Taste
-[MOB_35D]
-Also hör auf mit der sentimentalen Scheiße und hol dir 'nen Drink, ok!
+[C2PUCF]
+~T~
-[MOB_36A]
-Tommy, hier Phil. Wollte mich bedanken, dass du mich da rausgehauen hast.
+[C3PUCF]
+~O~
-[MOB_36B]
-Verdammte Vietnamesen. Wo du hinschaust ein Hinterhalt.
+[C0PDLT]
+die R1-Taste
-[MOB_36C]
-Die Wunde heilt gut. Und jetzt kassiere ich meine Versehrtenrente endlich völlig zurecht. Danke, Kumpel.
+[C1PDLT]
+die R1-Taste
-[MOB_40A]
-Hey, Tommy, hier Sonny. Was macht die Sonnenbräune?
+[C2PDLT]
+R1-Taste
-[MOB_40B]
-Ich hab keine Sonnenbräune.
+[C3PDLT]
+L1-Taste
-[MOB_40C]
-Naja, mein Geld hast du jedenfalls auch nicht. Daher frag ich mich,
+[C0PDCTL]
+die L2-Taste und die R2-Taste
-[MOB_40D]
-was treibst du eigentlich die ganze Zeit, Tommy? Sag doch mal?
+[C1PDCTL]
+die L2-Taste und die R2-Taste
-[MOB_40E]
-Ich bin auf der Suche nach deinem Geld, Sonny. Keine Sorge.
+[C2PDCTL]
+L2-Taste und R2-Taste
-[MOB_40F]
-Ich mach mir aber Sorgen, Tommy, ich kann nicht anders.
+[C3PDCTL]
+L2-Taste und R2-Taste
-[MOB_40G]
-Ich hab nämlich anscheinend mit zu viel unzuverlässigen Menschen zu tun.
+[C0CVEIW]
+SELECT-Taste
-[MOB_40H]
-Sei du bitte kein unzuverlässiger Mensch, Tommy.
+[C1CVEIW]
+Richtungstasten Oben und Unten
-[MOB_40I]
-Tu dir und mir einen Gefallen. Ich freu mich, von dir zu hören.
+[C2CVEIW]
+SELECT-Taste
-[MOB_41A]
-Tommy, kennst du mich noch?
+[C3CVEIW]
+SELECT-Taste
-[MOB_41B]
-Hey, Sonny.
+[C0PDBAK]
+R3-Taste
-[MOB_41C]
-Ja genau, Sonny. Wir sind doch alte Freunde,
+[C1PDBAK]
+R3-Taste
-[MOB_41D]
-aber du schreibst nie, rufst nie an. Willst du denn nicht mehr mein Freund sein?
+[C2PDBAK]
+R3-Taste
-[MOB_41E]
-Ich hab alle Hände voll zu tun, die Sache zu regeln. Und du bist auch keine große Hilfe.
+[C3PDBAK]
+R3-Taste
-[MOB_41F]
-Ach, ich bin also schuld? Ja, ich hab gehört, dass du zu tun hast...
+[C0PDLO1]
+L-Taste
-[MOB_41G]
-Musst Drogenbarone erledigen, ihre Geschäfte übernehmen.
+[C1PDLO1]
+L-Taste
-[MOB_41H]
-Vergiss mich nicht, Tommy. Ich verspreche dir nämlich, dass ich dich nicht vergesse...
+[C2PDLO1]
+L-Taste
-[MOB_42A]
-Tommy.
+[C3PDLO1]
+L-Taste
-[MOB_42B]
-Sonny.
+[C0PDLO2]
+Analog-Pad
-[MOB_42C]
-Anscheinend hörst du neuerdings schlecht, deshalb frag ich dich jetzt nochmal:
+[C2PDLO2]
+Analog-Pad
-[MOB_42D]
-Tommy, wo ist die verdammte Kohle? Wo ist der verdammte Stoff und wo ist mein Anteil an deinem neuen Geschäft?
+[C0ANS]
+L1-Taste
-[MOB_42E]
-Du hältst mich zum Narren, Tommy, ich find's bloß nicht zum Lachen.
+[C1ANS]
+L1-Taste
-[MOB_43A]
-Tommy, Tommy, Tommy, Sonny hat gerade angerufen, dämmert dir was?
+[C2ANS]
+L1-Taste
-[MOB_43B]
-Ich weiß nicht, wie das mit dir ist, aber wenn mir jemand droht, dass er meine Familie umbringt,
+[C3ANS]
+L1-Taste
-[MOB_43C]
-dann macht mir das eine Scheißangst. Was gedenkst du zu unternehmen?
+[WEATHER]
+WETTER ÄNDERN
-[MOB_43D]
-Nur die Ruhe, Ken, alles wird cool.
+[WEATHE2]
+WETTER NORMAL
-[MOB_43E]
-Ich BIN ruhig. So ruhig wie man sein kann, wenn man um sein Leben fürchtet!
+[GA_4]
+~w~Autobomben kosten $500 pro Stück.
-[MOB_43F]
-Ken, ich muss mich gerade auf was anderes konzentrieren.
+[GA_5]
+~w~In deinem Fahrzeug ist schon eine Autobombe.
-[MOB_43G]
-Wir kümmern uns zu gegebener Zeit um Forelli.
+[GA_6]
+~w~Park die Karre, mach sie durch Drücken von~h~ ~k~ ~PED_FIREWEAPON~ ~w~scharf, und dann HAU AB!
-[MOB_43H]
-Ich bin ruhig. Hör ich mich nicht ruhig an? Muss die Todesangst sein, die auf die Stimme schlägt.
+[GA_7]
+~w~Mach die Bombe mit ~h~ ~k~ ~PED_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird.
-[MOB45_A]
-Tommy, wir müssen miteinander reden.
+[GA_8]
+~w~Benutze den Zünder, um die Bombe hochgehen zu lassen.
-[MOB45_B]
-Wo liegt das Problem, Lance?
+[GA_9]
+Du hast ~1~ von zehn Spezialautos beschafft.
-[MOB45_C]
-Bei dir, mein Freund: Ich finde, du gibst mir keinen fairen Anteil.
+[GA_10]
+Hübsche Karre. Hier sind deine $~1~.
-[MOB45_D]
-Noch dazu hast du mich vor den Jungs blamiert. Das kann ich nicht auf mir sitzen lassen.
+[GA_11]
+Das Modell haben wir schon. Das können wir nicht gebrauchen!
-[MOB45_E]
-Lance, das siehst du falsch. Du hast Fehler gemacht.
+[GA_12]
+Bombe ist scharf
-[MOB45_F]
-Tommy, ich bin nicht dein Laufbursche. Nicht dein Lakai.
+[GA_13]
+Saubere Arbeit. Wenn du alle auf der Liste abgeliefert hast, kriegst du einen Bonus.
-[MOB45_G]
-Lance, alles ist ok, solange du keinen Mist baust. Und sollte ICH Mist bauen, steh ich dafür gerade.
+[GA_14]
+Du hast alle Karren geliefert. SEHR GUT! Hier, für dich.
-[MOB45_H]
-Tommy, ich hab alles für dich getan und du trittst mich mit Füßen. Mach das doch nicht.
+[GA_15]
+~w~Hoffentlich gefällt dir die neue Farbe.
-[MOB45_I]
-Lance, ich betrüg dich nicht und falle dir nicht in den Rücken, ok?
+[GA_17]
+~w~Neuer Motor und neue Lackierung!
-[MOB45_J]
-Reiß dich zusammen. Es ist schwer genug, ohne dass du mir die Ohren vollheulst.
+[GA_19]
+An dem Modell haben wir kein Interesse.
-[MOB45_K]
-Vertrau mir, hörst du. Hörst du?
+[GA_20]
+Von der Sorte haben wir mehr als genug. Da kommen wir nicht ins Geschäft.
-[MOB45_L]
-Ja, Tommy, aber ich halt das nicht mehr lange aus.
+[GA_22]
+~w~In ein Motorrad kannst du keine Bombe einbauen.
-[MOB45_M]
-Lance, komm mir bloß nicht so, ich warne dich.
+[GA_23]
+~w~Autobombe eingebaut - Material und Arbeit: $500
-[MOB45_N]
-Reg dich ab, mach ein paar Tage frei, dann unterhalten wir uns, ok?
+[GA_24]
+~w~Autobombe eingebaut - die geht aufs Haus!
-[MOB46_A]
-Tommy - Lance.
+[CR_1]
+~w~Der Kran kann dieses Fahrzeug nicht anheben.
-[MOB46_B]
-Ja?
+[PU_MONY]
+~w~Du hast nicht genug Geld.
-[MOB46_C]
-Kein 'Schön, dass du anrufst, Lance!' Kein freundliches Wort? Was soll das?
+[PAUSED]
+PAUSE
-[MOB46_D]
-Ich habe gerade zu tun, Lance. Was willst du?
+[FEB_STA]
+Statistiken
-[MOB46_E]
-Nichts. Ich wollte dir nur sagen, wir kriegen das hin.
+[FEB_MAP]
+Karte
-[MOB46_F]
-Du und ich, ohne Probleme. Du verstehst mich?
+[FEB_BRI]
+Infos
-[MOB46_G]
-Wir müssen es hinkriegen. Sonst sind wir erledigt, Lance.
+[FEB_CON]
+Steuerung
-[MOB46_H]
-Wir stecken schon viel zu tief drin. Aber danke für den Anruf. Du hörst von mir.
+[FEB_AUD]
+Audio
-[MOB_47A]
-Tommy - Lance. Wir stecken in der Patsche. Du musst sofort kommen.
+[FEB_DIS]
+Anzeige
-[MOB52_A]
-Hey, Leo, ich glaube, wir haben einen Käufer für Diaz' Ware.
+[FEB_LAN]
+Sprache
-[MOB52_B]
-Du musst ihn anrufen und den Deal in die Wege leiten, ok?
+[FEP_STA]
+STATISTIKEN
-[MOB52_C]
-Wo bist du gerade?
+[FEP_MAP]
+KARTE
-[MOB52_D]
-Ist irgendwas, Leo? Du hörst dich so komisch an.
+[FEP_BRI]
+INFOS
-[MOB52_E]
-Sag mir, wo du bist.
+[FEP_CON]
+STEUERUNG
-[MOB52_F]
-Verdammt, wer ist da dran? Gib mir Leo!
+[FEP_AUD]
+AUDIO
-[MOB52_G]
-Leo ist 'ne Weile verreist, ich vertrete ihn.
+[FEP_DIS]
+ANZEIGE
-[MOB52_H]
-Zum Teufel mit dir!
+[FEP_LAN]
+SPRACHE:
-[MOB54_A]
-Hi, Tommy!
+[FEF_ST1]
+Wer ist der Härteste?
-[MOB54_B]
-Hi, Mercedes. Wie geht's?
+[FEF_ST2]
+Wie viel Chaos hast du angerichtet?
-[MOB54_C]
-Ich hab 'ne neue Wohnung in Vice Point.
+[FEF_BR1]
+Du blickst nicht mehr durch?
-[MOB54_D]
-Vielleicht kommst du mich ja mal besuchen.
+[FEF_CO1]
+Taste dich ran, Mann!
-[MOB54_E]
-Klar, gern. Also, bis später.
+[FEF_SA1]
+Keep your place in the pile!
-[MOB55_A]
-Tommy, ich bin's.
+[FEF_SA2]
+Spiele laden und speichern
-[MOB55_B]
-Hi, Mercedes.
+[FEF_AU1]
+Volle Dröhnung gefällig?
-[MOB55_C]
-Tommy, mir ist so langweilig. Wann hast du denn mal Zeit für mich?
+[FEF_AU2]
+Radiosender und Soundeffekte auswählen
-[MOB55_D]
-Was soll denn das heißen?
+[FEF_DI1]
+Andere Optik?
-[MOB55_E]
-Ich weiß, du hast so viel zu tun, musst Leute beseitigen und bestechen.
+[FEF_DI2]
+Spiel für deinen Fernseher optimieren
-[MOB55_F]
-Aber ich will mal wieder Spaß haben. Also vergiss mich nicht, hörst du?
+[FEF_LA1]
+Was für ein Gefasel!
-[MOB56_A]
-Tommy, es heißt, du hast Ricardo Diaz erledigt.
+[FEF_LA2]
+Welches Idiom liegt dir denn so?
-[MOB56_B]
-In seinem Haus ist ein Feuer ausgebrochen.
+[FEM_ON]
+EIN
-[MOB56_C]
-Ich glaube, er hatte ein Acrylhemd an und ist verbrannt.
+[FEM_OFF]
+AUS
-[MOB56_D]
-Tommy, ich bin so stolz auf dich. Ich wusste, du bist ein echter Mann.
+[FEM_YES]
+Ja
-[MOB56_E]
-Und er war ein Mistkerl. Ich bin so stolz, dass du mein Freund bist.
+[FEM_NO]
+Nein
-[MOB56_F]
-Ich weiß, du hast zu tun, du musst schließlich die Stadt erobern.
+[FEM_NON]
+Kein(e)
-[MOB56_G]
-Aber vergiss mich nicht, hörst du?
+[FEI_SEL]
+Auswahl
-[MOB57_A]
-Ich bin's, Mercedes. Ich liebe dich nicht mehr, Tommy.
+[FEI_TAR]
+Ziel An/Aus
-[MOB57_B]
-Wirklich nicht mehr. Du bist nicht mehr nett zu Mercedes.
+[FEI_BAC]
+Zurück
-[MOB57_C]
-Du behandelst mich nicht mehr wie eine Dame. Du ignorierst mich und ich hasse dich.
+[FEI_RES]
+Fortsetzen
-[MOB57_D]
-Ich bestehe darauf, dass du sofort zu mir kommst!
+[FEI_NAV]
+Bewegen
-[MOB58_A]
-Tommy.
+[FEI_BTX]
+/
-[MOB58_B]
-Hey, Mercedes.
+[FEI_BTT]
+"
-[MOB58_C]
-Selber hey, du toller Hecht. Ich bin sauer auf dich, Tommy.
+[FEI_STA]
+START
-[MOB58_D]
-Schick mich nie mehr zu diesem Jezz Torrent.
+[FEI_BTD]
+analog
-[MOB58_E]
-So ein Jammerlappen. Mittendrin fängt er an zu weinen wegen seinem Hündchen,
+[FEI_BTU]
+;=
-[MOB58_F]
-das gestorben ist, als er 7 war, und dass seine Mama ihn nie lieb hatte.
+[FEI_R1B]
+L \ R
-[MOB58_G]
-Und Tommy - privat läuft er in Perücke und BH rum.
+[FEI_SCR]
+Scrollen
-[MOB58_H]
-Ich bin nicht gut auf dich zu sprechen!
+[FEI_ZOO]
+Zoom
-[MOB59_A]
-Oh, Tommy. Ich bin's, Mercedes.
+[FEH_STA]
+STATISTIKEN
-[MOB59_B]
-Ich wollte dir nur sagen, es ist ganz toll beim Film.
+[FEH_CON]
+STEUERUNG
-[MOB59_C]
-Wenn du nochmal etwas für mich hast, sag Bescheid.
+[FEH_AUD]
+AUDIO
-[MOB59_D]
-Wirklich. Ich wollte immer Schauspielerin werden.
+[FEH_LAN]
+SPRACHE
-[MOB59_E]
-Ich denke, ich lerne viel über die Dramaturgie.
+[FEH_SGA]
+NEUES SPIEL STARTEN
-[MOB59_F]
-Es ist so lehrreich! Vielen, vielen Dank. Bis bald. Adios.
+[FET_SG]
+SPIEL SPEICHERN
-[MOB_99]
-Geh zu der Telefonzelle vor Ort.
+[FEH_BRI]
+INFO
-[MOB_98]
-Geh zu der Telefonzelle vor Ort.
+[FEH_DIS]
+ANZEIGE
-[MOB_97]
-Geh zu der Telefonzelle vor Ort.
+[FEH_MAP]
+KARTE
-[MOB_96]
-Geh zu der Telefonzelle vor Ort.
+[FEM_OK]
+OK
-[MOB_95]
-Geh zu der Telefonzelle vor Ort.
+[FEC_CRO]
+Ducken
-[A_TIME]
-+~1~ Sekunden
+[FE_MLG]
+KARTENLEGENDE
-[F_RANGE]
-~g~Du bist außer Reichweite des Feuerwehrfunks. Fahr näher an eine Feuerwache heran!
+[MAP_LEG]
+LEGENDE:
-[DODO_FT]
-Du bist ~1~ Sekunden geflogen!
+[LG_01]
+Position des Spielers
-[GA_8]
-Benutze den Zünder, um die Bombe hochgehen zu lassen.
+[LG_13]
+Ammu-Nation
-[GA_10]
-Hübsche Karre. Hier sind deine $~1~.
+[LG_16]
+Versteck
-[GA_11]
-So eine Karre haben wir schon. Die können wir nicht gebrauchen.
+[LG_22]
+Pay 'n' Spray
-[GA_12]
-Bombe ist scharf.
+[LG_23]
+Mr. Benz
-[GA_13]
-Auf dich ist Verlass. Wenn du alle, die auf der Liste stehen, abgeliefert hast, kriegst du einen Bonus.
+[LG_25]
+Telefon
-[GA_14]
-Du hast alle georderten Karren geliefert. Sehr gut. Hier, für dich.
+[LG_26]
+Radiosender Wildstyle
-[GA_15]
-Hoffentlich gefällt dir die neue Farbe.
+[LG_27]
+Radiosender Flash FM
-[GA_16]
-Das Umspritzen ist gratis.
+[LG_28]
+Radiosender KChat
-[GA_19]
-An dem Modell haben wir kein Interesse.
+[LG_29]
+Radiosender Fever 105
-[GA_20]
-Von der Sorte haben wir schon mehr als genug. Sorry, da kommen wir nicht ins Geschäft.
+[LG_30]
+Radiosender VRock
-[CHASE]
-Größtes Medieninteresse bisher
+[LG_31]
+VCPR Radio Station
-[CHASE1]
-Null
+[LG_32]
+Radiosender Espantoso
-[CHASE2]
-Minimal
+[LG_33]
+Radiosender Emotion 98.3
-[CHASE3]
-Vages Interesse
+[LG_34]
+Radiosender Wave 103
-[CHASE4]
-Lokalblatt Seite 7
+[LG_35]
+Ziel
-[CHASE5]
-Lokalblatt Titelseite
+[LG_36]
+Sun Yard
-[CHASE6]
-Vice Courier einspaltig
+[LG_37]
+Strip Club
-[CHASE7]
-Vice Courier Titelseite
+[LG_38]
+8-Ball
-[CHASE8]
-Lokalsender 3-Uhr-Nachrichten
+[LG_39]
+Kirche zum Beichten
-[CHASE9]
-Lokalsender 20-Uhr-Nachrichten
+[LG_40]
+Ma Cipriani
-[CHASE10]
-Lokalsender Live-Berichterstattung
+[LG_41]
+Donald Love
-[CHASE11]
-UFA Today Seite 12
+[LG_42]
+JD O'Toole
-[CHASE12]
-UFA Today Seite 4
+[LG_43]
+Salvatore Leone
-[CHASE13]
-Foto in UFA Today
+[LG_44]
+Maria
-[CHASE14]
-Landesweites TV 4-Uhr-News
+[LG_45]
+McAffrey
-[CHASE15]
-Landesweites TV 20-Uhr-News
+[LG_46]
+Toshiko Kasen
-[CHASE16]
-Landesweite Live-Berichterstattung
+[LG_47]
+Vincenzo Cilli
-[CHASE17]
-Internationale Berichterstattung
+[LG_48]
+Bombenwerkstatt
-[CHASE18]
-Nationale Krise
+[LG_49]
+Bekleidungsgeschäft
-[CHASE19]
-Internationale Krise
+[LG_50]
+Phil Cassidy's
-[CHASE20]
-Weltereignis
+[LG_51]
+Bedrohung
-[CHASE21]
-Stoff aus dem Legenden sind
+[LG_52]
+Freund
-[CR_1]
-Kran kann dieses Fahrzeug nicht anheben.
+[LG_53]
+Gegenstand
-[PU_MONY]
-Du hast nicht genug Geld.
+[LG_54]
+Spieler-Ziel
-[CO_ALL]
-Du hast sie alle geliefert. Hier, für dich.
+[FEO_CON]
+Steuerungs-Setup
-[FEM_ON]
-AN
+[FEO_AUD]
+Audio-Setup
-[FEM_OFF]
-AUS
+[FEO_DIS]
+Anzeigen-Setup
-[FEM_YES]
-Ja
+[FEO_LAN]
+Sprachen-Setup
-[FEM_NO]
-Nein
+[FEO_PLA]
+Spieler-Setup
-[FEM_RET]
-Wiederholen
+[FEB_PMB]
+Vorherige Missionsinfos:
[FEC_NA]
-Nicht verfügbar
+Nicht belegt
[FEC_CWL]
Eine Waffe nach links
@@ -1721,8 +1519,11 @@ Eine Waffe nach links
[FEC_CWR]
Eine Waffe nach rechts
-[FEC_LOF]
-Nach vorne sehen
+[FEC_CW]
+Waffenauswahl
+
+[FEC_CT]
+Zielauswahl
[FEC_TAR]
Zielen
@@ -1731,7 +1532,7 @@ Zielen
Bewegung
[FEC_CAM]
-Blickwinkel
+Blickwinkel ändern
[FEC_PAU]
Pause
@@ -1743,22 +1544,28 @@ In Fahrzeug einsteigen
Springen
[FEC_ATT]
-Angreifen oder Waffe abfeuern
+Angreifen/Feuern
[FEC_RUN]
Rennen
[FEC_FPC]
-Subjektive Kamera
+Umherschauen
[FEC_LL]
-Nach links sehen
+Nach links schauen
+
+[FEC_LB1]
+Schau
+
+[FEC_LB2]
+nach hinten
[FEC_LB]
-Nach hinten sehen
+Nach hinten schauen
[FEC_LR]
-Nach rechts sehen
+Nach rechts schauen
[FEC_HOR]
Hupe
@@ -1766,8 +1573,11 @@ Hupe
[FEC_VES]
Fahrzeugsteuerung
+[FEC_RSC]
+Radiosender wechseln
+
[FEC_BRA]
-Bremsen oder rückwärts fahren
+Bremsen/Zurücksetzen
[FEC_HAB]
Handbremse
@@ -1778,47 +1588,104 @@ Fahrzeugwaffe
[FEC_ACC]
Beschleunigen
+[FEC_SMT]
+Spezialmission
+
[FEC_CCF]
-Konfiguration :
+KONFIGURATION:
[FEC_CF1]
-Konfig. 1
+KONFIG. 1
[FEC_CF2]
-Konfig. 2
+KONFIG. 2
[FEC_CF3]
-Konfig. 3
+KONFIG. 3
[FEC_CF4]
-Konfig. 4
+KONFIG. 4
[FEC_CDP]
-Controller-Anzeige :
+TYP:
[FEC_ONF]
-Zu Fuß
+ZU FUSS
[FEC_INC]
-Im Auto
+IM FAHRZEUG
[FEC_VIB]
-Vibration :
+VIBRATION:
+
+[FEC_ILU]
+KAMERA INVERTIEREN:
+
+[FEC_SWP]
+SPIELER-BEWEGUNG:
+
+[FEC_AS]
+Analog-Pad
+
+[FEC_DP]
+Richtungstasten
+
+[FEA_SFX]
+LAUTSTÄRKE SFX:
+
+[FEA_OUT]
+Tonausgabe:
+
+[FEA_ST]
+Stereo
+
+[FEA_MNO]
+Mono
+
+[FEA_CTD]
+Achtung! Für dieses Feature muss DTS-kompatible Hardware angeschlossen sein. Weiter?
+
+[FEA_DTS]
+DTS
+
+[FEA_RSS]
+RADIOSENDER:
+
+[FEA_NON]
+Radio aus
+
+[FED_BRI]
+HELLIGKEIT:
+
+[FED_TRA]
+UNSCHÄRFE-FX:
+
+[FED_RDR]
+RADAR-MODUS:
+
+[FED_HUD]
+HUD-MODUS:
+
+[FED_RDM]
+KARTE & SYMBOLE
+
+[FED_RDB]
+NUR SYMBOLE
[FEL_ENG]
-Englisch
+ENGLISCH
[FEL_FRE]
-Französisch
+FRANZÖSISCH
[FEL_GER]
-Deutsch
+DEUTSCH
[FEL_ITA]
-Italienisch
+ITALIENISCH
[FEL_SPA]
-Spanisch
+SPANISCH
[FED_DBG]
Menu Debug
@@ -1832,6 +1699,9 @@ Reload IPL
[FED_PAH]
Parse Heap
+[FED_RCD]
+CCullZones::RecalculateCullZoneData
+
[FED_DFL]
CTheScripts::DbgFlag
@@ -1853,6 +1723,90 @@ Debug Streaming Requests
[FED_SCP]
gbShowCollisionPolys
+[FEM_MCM]
+Memory Card Menu
+
+[FEM_RMC]
+Register MemCard One
+
+[FEM_TFM]
+Test Format MemCard One
+
+[FEM_TUM]
+Test UnFormat MemCard One
+
+[FEM_CRD]
+Create Root Dir
+
+[FEM_CLI]
+Create And Load Icons
+
+[FEM_FFF]
+Fill First File with Guff
+
+[FEM_SOG]
+Save Only The Game
+
+[FEM_CES]
+Check Every 0kB4 Save
+
+[FEM_STG]
+Das Spiel speichern
+
+[FEM_STS]
+Save The Game under GTA3 name
+
+[FEM_CPD]
+Create copy protected mag directory
+
+[FEM_MC2]
+Memory Card Menu 2
+
+[FEM_TS]
+Test Save:
+
+[FEM_TL]
+Test Load:
+
+[FEM_TD]
+Test Delete:
+
+[FEM_SL0]
+Spielstand 0
+
+[FEM_SL1]
+Spielstand 1 nicht vorhanden
+
+[FEM_SL2]
+Spielstand 2 nicht vorhanden
+
+[FEM_SL3]
+Spielstand 3 nicht vorhanden
+
+[FEM_SL4]
+Spielstand 4 nicht vorhanden
+
+[FEM_SL5]
+Spielstand 5 nicht vorhanden
+
+[FEM_SL6]
+Spielstand 6 nicht vorhanden
+
+[FEM_SL7]
+Spielstand 7 nicht vorhanden
+
+[FES_LOA]
+SPIEL LADEN
+
+[ST_TIME]
+Spielzeit bei diesem Spiel
+
+[ST_OVTI]
+Gesamtspielzeit
+
+[NUMSHV]
+Wie oft gespeichert
+
[PL_STAT]
Spielerstatistiken
@@ -1862,15 +1816,45 @@ Von dir abservierte Personen
[PE_WSOT]
Von anderen abservierte Personen
+[CAR_EXP]
+Explodierte Autos
+
+[BOA_EXP]
+Zerstörte Boote
+
[TM_BUST]
Zahl deiner Verhaftungen
+[M_WASTE]
+Männliche Zivilisten
+
+[F_WASTE]
+Weibliche Zivilisten
+
+[PIG_WST]
+Cops
+
[GNG_WST]
Gang-Mitglieder
+[MED_WST]
+Sanitäter
+
+[FIRE_WS]
+Feuerwehrmänner
+
[DED_CRI]
Kriminelle
+[DED_DED]
+Schnorrer
+
+[DED_HOK]
+Girls
+
+[HEL_DST]
+Zerstörte Helikopter
+
[PER_COM]
Absolviert (in Prozent)
@@ -1880,128 +1864,173 @@ Sprengstoffverbrauch in kg
[ACCURA]
Treffsicherheit
-[ST_WEAP]
-Waffen-Budget
+[ELBURRO]
+Beste Turismo-Zeit in Sekunden
-[ST_PROP]
-Budget für Objekte
+[CAR_CRU]
+Verschrottete Fahrzeuge
-[ST_AUTO]
-Budget für Autoreparaturen und Lackierung
+[HED_EX]
+Köpfe
-[ST_PHOT]
-Von dir gemachte Fotos
+[ST_HEAD]
+Entscheidende Treffer
-[ST_LOAN]
-Besuche von Kredithaien
+[BUL_FIR]
+Abgefeuerte Kugeln
-[ST_STOR]
-Geknackte Läden
+[BUL_HIT]
+Kugeln, die trafen
-[ST_MOVI]
-Film-Stunts
+[SPRAYIN]
+Anzahl Lackierungen
-[ST_PIZZ]
-Gelieferte Pizzas
+[TM_DED]
+Krankenhausbesuche
-[ST_GARB]
-Getätigte Müllfuhren
+[ST_GANG]
+Unbeliebteste Gang
-[ST_ICEC]
-Verkaufte Eiscreme
+[ST_GNG1]
+Leones
-[TOP_SHO]
-Beste Schießstand-Punktzahl
+[ST_GNG2]
+Triaden
-[SHO_RAN]
-Schießstand-Rangliste
+[ST_GNG3]
+Diablos
-[SEAGULL]
-Abgeschossene Möwen
+[ST_GNG4]
+Yakuza
-[PROPOWN]
-Objekte in deinem Besitz
+[ST_GNG5]
+Yardies
-[ST_TIME]
-Gespielte Zeit
+[ST_GNG6]
+Kolumbianer
-[ST_FTIM]
-Flugstunden
+[ST_GNG7]
+Hoods
+
+[ST_GNG8]
+Forellis
+
+[ST_GNG9]
+Sindaccos
+
+[DAYSPS]
+Im Spiel verstrichene Tage
-[ST_PRAN]
-Piloten-Rating
+[MMRAIN]
+Regenfälle in mm
-[ST_RAN0]
-Anfänger
+[ST_STAR]
+Anzahl angehäufter Fahndungssterne
-[ST_RAN1]
-Navigator
+[ST_STGN]
+Anzahl losgewordener Fahndungssterne
-[ST_RAN2]
-Co-Pilot
+[TOT_DIS]
+Zurückgelegte Entfernung in Meilen
-[ST_RAN3]
-Halb-Profi
+[TOTDISM]
+Zurückgelegte Entfernung in Metern
-[ST_RAN4]
-Könner
+[DISTBIK]
+Mit Motorrad zurückgel. Meilen
-[ST_RAN5]
-Profi
+[DISTBIM]
+Mit Motorrad zurückgelegte Meter
-[ST_RAN6]
-Ass
+[DISTHEL]
+Mit Helikopter zurückgel. Meilen
-[ST_RAN7]
-Roter Baron
+[DISTHEM]
+Mit Helikopter zurückgel. Meter
-[ST_DRWN]
-Gefütterte Fische
+[DISTBOA]
+Mit Boot zurückgel. Meilen
+
+[DISTBOM]
+Mit Boot zurückgelegte Meter
+
+[ST_WHEE]
+Längste 'Wheelie' Zeit (Sek.)
+
+[ST_STOP]
+Längste 'Stoppie' Zeit (Sek.)
+
+[ST_2WHE]
+Längste Zeit auf zwei Rädern (Sek.)
+
+[ST_WHED]
+Längste 'Wheelie' Distanz (m)
+
+[ST_STOD]
+Längste 'Stoppie' Distanz (m)
+
+[ST_2WHD]
+Längste Distanz auf zwei Rädern (m)
+
+[ST_FAPD]
+Längster 'Flug' nach Motorradsturz (m)
+
+[FEST_HV]
+Höchstes Bürgerwehr-Missions-Level
+
+[FIRELVL]
+Höchstes Feuerwehr-Missions-Level
+
+[ST_STOR]
+Stores Knocked Off
+
+[ST_ASSI]
+Erfolgreich ausgeführte Attentate
+
+[ST_FTIM]
+Flugstunden
[ST_FASH]
-Kleidungsbudget
+Fashion Budget
-[ST_DAMA]
-Zerstörte Objekte
+[ST_WEAP]
+Waffenbudget
-[TM_DED]
-Krankenhausbesuche
+[ST_PROP]
+Budget für Immobilien
-[DAYSPS]
-Im Spiel verstrichene Tage
+[ST_DAMA]
+Gesamtwert zerstörter Sachen
-[NUMSHV]
-Besuche in Versteck
+[ST_AUTO]
+Budget für Reparaturen und Lackierung
[MXCARD]
-Weitester IRRSINNS-Sprung (in Fuß)
+Weitester Irrsinns-Sprung (in Fuß)
[MXCARJ]
-Höchster IRRSINNS-Sprung (in Fuß)
+Höchster Irrsinns-Sprung (in Fuß)
[MXCARDM]
-Weitester IRRSINNS-Sprung (m)
+Weitester Irrsinns-Sprung (m)
[MXCARJM]
-Höchster IRRSINNS-Sprung (m)
+Höchster Irrsinns-Sprung (m)
[MXFLIP]
-Max. Anzahl Salti
+Max. Anzahl Saltos bei Irrsinns-Sprung
[MXJUMP]
-Max. Drehungen im Sprung
+Max. Drehung bei Irrsinns-Sprung
-[BUL_FIR]
-Verschossene Kugeln
-
-[BUL_HIT]
-Kugeln, die trafen
+[FST_MFR]
+Bevorzugter Radiosender
-[SPRAYIN]
-Anzahl Lackierungen
+[FST_LFR]
+Unbeliebtester Radiosender
[BSTSTU]
-Bester IRRSINNS-Stunt bisher
+Bester Irrsinns-Stunt bisher:
[INSTUN]
Irrsinns-Stunt
@@ -2033,461 +2062,737 @@ Bisher keine Irrsinns-Stunts geschafft
[NOUNIF]
Monster-Stunts geschafft
+[NOUNGM]
+Monster-Stunts insgesamt
+
[NMISON]
Begonnene Missionen
+[NMMISP]
+Erfüllte Missionen
+
[PASDRO]
-Ans Ziel beförderte Fahrgäste
+Beförderte Fahrgäste
[MONTAX]
Mit Taxi verdientes Geld
+[CARSLD]
+Verkaufte Autos
+
+[MONCAR]
+Einnahmen aus Autoverkäufen
+
+[BIKESLD]
+Verkaufte Motorräder
+
+[MONBIKE]
+Einnahmen aus Motorradverkäufen
+
+[CARSEXP]
+Für Love Media gefundene Autos
+
+[SLTVLVL]
+Höchstes Slash-TV Missions-Level
+
+[SLTVKIL]
+Bei Slash-TV erledigte Gegner
+
+[MONTRS]
+Einnahmen aus Müllabfuhr
+
+[HTMKLD]
+Killer erledigt
+
+[GDAMSP]
+Anzahl absolvierter Avenging Angel-Missionen
+
+[HGAJD]
+Opfer bei Avenging Angel-Missionen
+
+[BNDRACE]
+RC-Rennen
+
+[FSTTRT]
+Höchste Restzeit bei 'Triaden-Trial'
+
+[HGHTRC]
+Höchste Einnahmen bei 'Triaden-Trial'
+
+[FSTHRT]
+Bestzeit bei Helikopter-Rennen
+
+[BHLPOS]
+Bestplatzierung bei Helikopter-Rennen
+
+[TMSOUT]
+Kleidungswechsel
+
+[BSRPS0]
+'Low Rider Rumble'
+
+[BSRPS1]
+'Deimos Dash'
+
+[BSRPS2]
+'Wi-Cheetah Run'
+
+[BSRPS3]
+'Rotlicht-Racing'
+
+[BSRPS4]
+'Torrington TT'
+
+[BSRPS5]
+'Gangsta GP'
+
+[DBIKE0]
+Kurs 1
+
+[DBIKE1]
+Kurs 2
+
+[DBIKE2]
+Kurs 3
+
+[DBIKE3]
+Kurs 4
+
+[DBIKE4]
+Kurs 5
+
+[DBIKE5]
+Kurs 6
+
+[DBIKE6]
+Kurs 7
+
+[DBIKE7]
+Kurs 8
+
+[DBIKE8]
+Kurs 9
+
+[DBIKE9]
+Kurs 10
+
+[DBIKEHE]
+Krasses Gelände
+
+[DBIKEBP]
+Beste Platzierung
+
+[DBIKEFL]
+Schnellste Runde
+
+[DBIKEFT]
+Bestzeit
+
+[ST_PHOT]
+Geknipste Fotos
+
+[ST_PIZZ]
+Ausgelieferte Pizzas
+
+[ST_NOOD]
+Ausgelieferte Nudelsnacks
+
+[MO_TOUR]
+Einnahmen durch Touristen
+
+[TA_TOUR]
+Zu Sehenswürdigkeiten geführte Touristen
+
+[SC_SCRA]
+High-Score bei 'Schrottplatz-Challenge'
+
+[SC_9MM]
+High-Score bei 'Jagdszenen in 9mm'
+
+[SC_SCOO]
+High-Score bei 'Scooter Shooter'
+
[DAYPLC]
-Tagesetat für Polizei
+Tagesetat der Polizei
+
+[SEAGULL]
+Abgeschossene Möwen
[CRIMRA]
-Rang:
+RANG
-[STPR_1]
-Malibu Club
+[CHASE]
+Größtes Medieninteresse bisher
-[STPR_2]
-Druckerei
+[CHASE1]
+Keins
-[STPR_3]
-Filmstudio
+[CHASE2]
+Minimal
-[STPR_4]
-Eiscremefabrik
+[CHASE3]
+Vages Interesse
-[STPR_5]
-Autohaus
+[CHASE4]
+Lokalblatt Seite 7
-[STPR_6]
-Taxiunternehmen
+[CHASE5]
+Lokalblatt Titelseite
-[STPR_7]
-Bootswerft
+[CHASE8]
+Lokal-TV 3-Uhr-News
+
+[CHASE9]
+Lokal-TV 20-Uhr-News
+
+[CHASE10]
+Lokal-TV Live-Berichterstattung
+
+[CHASE11]
+UFA Today Seite 12
+
+[CHASE12]
+UFA Today Seite 4
+
+[CHASE13]
+Foto in UFA Today
+
+[CHASE14]
+Landesweites TV 4-Uhr-News
+
+[CHASE15]
+Landesweites TV 20-Uhr-News
+
+[CHASE16]
+Landesweite Live-Berichterstattung
+
+[CHASE17]
+Internationale Berichterstattung
+
+[CHASE18]
+Nationale Krise
+
+[CHASE19]
+Internationale Krise
+
+[CHASE20]
+Weltereignis
+
+[CHASE21]
+Stoff aus dem Legenden sind
+
+[WHEEL01]
+~w~ZWEIRAD BONUS: $~1~ Distanz: ~1~,~1~m Zeit: ~1~ Sekunden
+
+[WHEEL02]
+~w~ZWEIRAD BONUS: $~1~ Distanz: ~1~ Fuß Zeit: ~1~ Sekunden
+
+[WHEEL06]
+~w~WHEELIE BONUS: $~1~ Distanz: ~1~,~1~m Zeit: ~1~ Sekunden
+
+[WHEEL07]
+~w~WHEELIE BONUS: $~1~ Distanz: ~1~ Fuß Zeit: ~1~ Sekunden
+
+[WHEEL11]
+~w~STOPPIE BONUS: $~1~ Distanz: ~1~,~1~m Zeit: ~1~ Sekunden
+
+[WHEEL12]
+~w~STOPPIE BONUS: $~1~ Distanz: ~1~ Fuß Zeit: ~1~ Sekunden
+
+[GMSTOR]
+Game Store
+
+[PREBRF]
+Vorherige Missionsinfos
+
+[CNTLS]
+Steuerung
+
+[MUSMEN]
+Musik/SFX
+
+[GAMSET]
+Spieleinstellungen
+
+[LANGUA]
+Sprache
+
+[DSPLAY]
+Anzeige
+
+[DEBUGM]
+Debug Menu
+
+[QUITOP]
+Optionen verlassen
+
+[CONTRL]
+Konfiguration d. Steuerung
[SET1EN]
Konfig. 1 aktiviert
-[GMSAVE]
-Spiel speichern
+[SET1]
+Konfig. 1
-[FEDS_TB]
+[SET2EN]
+Konfig. 2 aktiviert
+
+[SET2]
+Konfig. 2
+
+[SET3EN]
+Konfig. 3 aktiviert
+
+[SET3]
+Konfig. 3
+
+[SET4EN]
+Konfig. 4 aktiviert
+
+[SET4]
+Konfig. 4
+
+[GOBACK]
Zurück
-[FEST_OO]
-von
+[SOUND]
+SOUND
-[FEC_TUC]
-Geschützsteuerung
+[MUSVOL]
+Lautstärke Musik
-[FEC_RS3]
-Radiosender auswählen (L3-Taste)
+[SFXVOL]
+Lautstärke SFX
-[FEC_HO3]
-Hupe (L3-Taste)
+[SCROPT]
+BILDSCHIRMOPTIONEN
-[C_FAIL]
-Bürgerwehr-Mission beendet!
+[CTRSCR]
+Bildschirm zentrieren
-[C_ESCP]
-~r~Der Verdächtige ist entwischt!
+[SCRFOR]
+Bildschirmformat
-[C_VIGIL]
-BÜRGERWEHR BONUS!!
+[GMSVLQ]
+SPEICHERN/LADEN/BEENDEN
-[HEAL_A]
-Dein ~h~Gesundheitszustand~w~ wird rechts oben auf dem Bildschirm in Orange angezeigt.
+[GMREST]
+Spiel neu starten
-[WRONGCD]
-Falsche DVD. Bitte legen Sie die richtige DVD ein.
+[GMLOAD]
+Spiel laden
-[NOCD]
-Die DVD-Lade ist leer. Bitte DVD einlegen.
+[GMSAVE]
+Spiel speichern
-[OPENCD]
-Die DVD-Lade ist offen. Bitte schließen.
+[NOGMSV]
+Du kannst nur in deinem Versteck speichern.
-[CDERROR]
-Fehler beim Lesen der 'Grand Theft Auto: Vice City' DVD.
+[DLFILE]
+Grand Theft Auto Dateien löschen
-[RESTART]
-Neues Spiel wird gestartet
+[CHFILE]
+ZU LADENDE DATEI AUSWÄHLEN
-[GA_3]
-Keine Gratisjobs mehr. Umspritzen kostet $100!
+[CHFIDL]
+ZU LÖSCHENDE DATEI AUSWÄHLEN
-[GA_1]
-Hey, so was heißes rühre ich nicht an!
+[SVCONF]
+SPEICHERBESTÄTIGUNG
-[GA_1A]
-Komm wieder, wenn du nicht so viel zu tun hast...
+[SVFNAM]
+Dateiname des gespeicherten Spiels:
-[HELP9_C]
-Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um das Präzisionsgewehr ~h~abzufeuern~w~.
+[LANGSL]
+SPRACHAUSWAHL
-[TAXI2]
-~r~Die Zeit ist um!
+[ENGLIS]
+Englisch
-[PAGEB13]
-Gesundheits-Powerups in Versteck angeliefert.
+[GERMAN]
+Deutsch
-[PAGEB14]
-Adrenalin in Versteck vorrätig.
+[ITALIA]
+Italienisch
-[FESZ_CA]
-Abbrechen
+[FRENCH]
+Französisch
-[FES_NGA]
-Neues Spiel
+[SPAIN]
+Spanisch
-[FES_CAN]
-Abbrechen
+[RELIDE]
+ReLoadIde
-[FESZ_QL]
-Alle nicht gespeicherten Daten des aktuellen Spiels werden verloren gehen. Ladevorgang fortsetzen?
+[RELIPE]
+ReLoadIpl
-[FESZ_QD]
-Dieses gespeicherte Spiel wirklich löschen?
+[PARSHP]
+Parse Heap
-[FESZ_QO]
-Dieses gespeicherte Spiel wirklich überschreiben?
+[DBGFON]
+CTheScripts::DbgFlag On
-[FESZ_QR]
-Wirklich ein neues Spiel beginnen? Alle Daten seit dem letzten Speichern werden verloren gehen. Weiter?
+[DBFOFF]
+CTheScripts::DbgFlag Off
-[T4X4_1]
-'PCJ Rallye'
+[BGWHON]
+Big White Debug Light Switched On
-[BMX_1]
-'Krasses Gelände'
+[BGWOFF]
+Big White Debug Light Switched Off
-[BMX_2]
-'Teststrecke'
+[DSTRON]
+Debug Streaming Requests On
-[BMXFAIL]
-~r~Du hast es nicht geschafft, einen neuen Rekord aufzustellen!
+[DSTROFF]
+Debug Streaming Requests Off
-[BMX_REC]
-~g~Neuer Rekord:~1~ !!
+[PDRGON]
+ShowPedRoadGroups On
-[T4X4_3]
-'CHECKPOINT FIEBER'
+[PRGOFF]
+ShowPedRoadGroups Off
-[MM_1]
-'PYLONEN-RALLYE'
+[CRRGON]
+ShowCarRoadGroups On
-[T4X4_F]
-~r~Du hast gekniffen! Schon überfordert?
+[CRGOFF]
+ShowCarRoadGroups Off
-[LANDSTK]
-Landstalker
+[CLZOON]
+Show Cull Zones On
-[IDAHO]
-Idaho
+[CLZOOF]
+Show Cull Zones Off
-[STINGER]
-Stinger
+[SHPLON]
+gbShowCollisionPolys On
-[LINERUN]
-Linerunner
+[SHPLOF]
+gbShowCollisionPolys Off
-[PEREN]
-Perennial
+[CULREC]
+CCullZones::RecalculateCullZoneData()
-[SENTINL]
-Sentinel
+[FORMM1]
+FormatMemCard 1 (teststuff)
-[RIO]
-Rio
+[UNFRM1]
+UnFormatMemCard 1 (teststuff)
-[PATRIOT]
-Patriot
+[GORLEV]
+Gewalt-Level
-[FIRETRK]
-Feuerwehrwagen
+[SICASS]
+Mittel
-[TRASHM]
-Trashmaster
+[SICSIC]
+Hoch
-[STRETCH]
-Stretch Limo
+[SCASSL]
+Gewalt-Level 'mittel' gewählt
-[MANANA]
-Manana
+[SCSCSL]
+Gewalt-Level 'hoch' gewählt
-[INFERNS]
-Infernus
+[PRVMEN]
+Vorherige Missionsinfos
-[VOODOO]
-Voodoo
+[FORMEN]
+Formatierungsmenü
-[PONY]
-Pony
+[MEMTST]
+MemoryCardTest screen
-[MULE]
-Mule
+[REGCAR]
+Register MemoryCard One
-[CHEETAH]
-Cheetah
+[TEFONE]
+Test Format MemCard One
-[AMBULAN]
-Krankenwagen
+[TEUFON]
+Test UnFormat MemCard One
-[FBICAR]
-FBI Washington
+[CRROOT]
+CreateRootDir
-[MOONBM]
-Moonbeam
+[CRLDIC]
+Create and Load Icons
-[ESPERAN]
-Esperanto
+[FLFSGF]
+Fill First File With Guff
-[TAXI]
-Taxi
+[PUSAVE]
+Save Only the game
-[WASHING]
-Washington
+[CHEVOK]
+CheckEveryOkB4Save
-[BOBCAT]
-Bobcat
+[SVGMON]
+SaveTheGame
-[WHOOPEE]
-Mr Whoopee
+[CNTSAV]
+Spiel kann nicht gespeichert werden. Mitten in Mission.
-[BFINJC]
-BF Injection
+[CNCSAV]
+Spiel kann nicht gespeichert werden. Du bist im Auto.
-[HUNTER]
-Hunter
+[CRMGSV]
+Create copy protected magazine directory
-[POLICAR]
-Polizei
+[MGSVCN]
+MagazineDirectory Created
-[ENFORCR]
-Enforcer
+[MGSVNC]
+MagazineDirectory Not Created
-[SECURI]
-Securicar
+[YES]
+Ja
-[BANSHEE]
-Banshee
+[NO]
+Nein
-[PREDATR]
-Predator
+[X]
+x
-[BUS]
-Bus
+[LAST]
+Letzte Nachricht.
-[RHINO]
-Rhino
+[GS_STYL]
+SPIEL-STIL:
-[BARRCKS]
-Barracks OL
+[GS_FFAL]
+JEDER FÜR SICH
-[CUBAN]
-Kubanischer Hermes
+[GS_LOC]
+SPIEL-ORT:
-[HELI]
-Helikopter
+[GS_SLMT]
+SCORE-LIMIT:
-[DODO]
-Dodo
+[GS_KLMT]
+HIT-LIMIT:
-[COACH]
-Coach
+[GS_TLMT]
+ZEIT-LIMIT:
-[CABBIE]
-Cabbie
+[GS_ULMT]
+KEIN LIMIT
-[STALION]
-Stallion
+[GS_PRUP]
+POWERUPS:
-[RUMPO]
-Rumpo
+[GS_RACE]
+RENNEN:
-[RCBANDT]
-RC Bandit
+[GS_LAPS]
+RUNDEN:
-[ROMERO]
-Romeros Leichenwagen
+[GS_OK]
+OK
-[PACKER]
-Packer
+[FEH_MP]
+MULTIPLAYER
-[ADMIRAL]
-Admiral
+[FEMP_J]
+Mitspielen
-[SQUALO]
-Squalo
+[FEMP_CS]
+CHARAKTER:
-[SEASPAR]
-Sea Sparrow
+[FEMP_PS]
+SPIELER-EINSTELLUNGEN
-[PIZZABO]
-Pizza Boy
+[FEMP_GS]
+SPIELAUSWAHL
-[GANGBUR]
-Gang Burrito
+[FEMP_NG]
+EIN NEUES SPIEL STARTEN
-[TROPIC]
-Tropic
+[SVRLIST]
+HOST-LISTE
-[SPEEDER]
-Speeder
+[SVRINFO]
+HOST-DETAILS
-[REEFER]
-Reefer
+[SVRNAME]
+NAME:
-[FLATBED]
-Flatbed
+[NO_SVRS]
+SUCHE NACH HOSTS
-[YANKEE]
-Yankee
+[NO_PLRS]
+SUCHE NACH SPIELERN
-[CADDY]
-Caddy
+[NO_NAME]
+KEIN NAME
-[ZEBRA]
-Zebra Cab
+[NO_WIFI]
+Um ein Multiplayer-Spiel zu spielen, musst du den WLAN-Schalter zuerst auf AN stellen.
-[TOPFUN]
-Top Fun
+[FEMP_SG]
+SPIEL STARTEN
-[SKIMMER]
-Skimmer
+[FEMP_S]
+Start
-[PCJ600]
-PCJ 600
+[FEMP_WS]
+Warte darauf, dass Host Spiel startet...
-[PHOENIX]
-Phoenix
+[SVRLOST]
+Verbindung mit Host wurde unterbrochen.
-[FAGGIO]
-Faggio
+[NOSVRS]
+Konnte keinen Host finden.
-[FREEWAY]
-Freeway
+[MP_WARN]
+Bei Start eines Multiplayer-Spiels gehen alle Fortschritte seit der letzten Speicherung verloren.
-[RCBARON]
-RC Baron
+[FEDS_XB]
+Auswählen
-[RCRAIDE]
-RC Raider
+[FEDS_TB]
+Zurück
-[GLENDAL]
-Glendale
+[FEDS_ST]
+START-Taste - WEITER
-[OCEANIC]
-Oceanic
+[FEST_OO]
+von
-[SANCHEZ]
-Sanchez
+[FED_SUB]
+UNTERTITEL:
-[SPARROW]
-Sparrow
+[FEC_TUC]
+Geschützsteuerung
-[LOVEFIS]
-Love Fist
+[FEC_SM3]
+Spezialmission aktivieren (R3-Taste)
-[COASTG]
-Küstenwache
+[FEC_RS3]
+Radiosender auswählen (L3-Taste)
-[DINGHY]
-Dinghy
+[FEC_HO3]
+Hupe (L3-Taste)
-[HERMES]
-Hermes
+[FIRST]
+~g~1.
-[SABRE]
-Sabre
+[SECOND]
+~g~2.
-[SABRETU]
-Sabre Turbo
+[THIRD]
+~g~3.
-[WALTON]
-Walton
+[FOURTH]
+~g~4.
-[REGINA]
-Regina
+[NOCONTE]
+Bitte stecken Sie einen Analog Controller (DUALSHOCK®) oder einen Analog Controller (DUALSHOCK®2) in Controller-Anschluss 1 um fortzufahren.
-[COMET]
-Comet
+[WRCONT]
+Der Controller in Controller-Anschluss 1 wird nicht unterstützt. GTA: Liberty City Stories benötigt einen Analog Controller (DUALSHOCK®) oder einen Analog Controller (DUALSHOCK®2).
-[DELUXO]
-Deluxo
+[WRCONTE]
+Der Controller in Controller-Anschluss 1 wird nicht unterstützt. GTA: Liberty City Stories benötigt einen Analog Controller (DUALSHOCK®) oder einen Analog Controller (DUALSHOCK®2).
-[BURRITO]
-Burrito
+[WRONGCD]
+Falsche DVD/CD-ROM. ~n~Bitte die DVD/CD-ROM für GTA:Liberty City Stories einlegen.
-[SPAND]
-Spandex Express
+[NOCD]
+Die DVD/CD-Lade ist leer. ~n~Bitte die DVD/CD-ROM für GTA:Liberty City Stories einlegen.
-[MARQUIS]
-Marquis
+[OPENCD]
+Die DVD/CD-Lade ist offen. Bitte die DVD/CD-Lade schließen.
-[BAGGAGE]
-Baggage Handler
+[RESTART]
+Neues Spiel wird gestartet.
-[KAUFMAN]
-Kaufman-Taxi
+[GA_3]
+~w~Umspritzen kostet $100!
-[COASTMA]
-Küstenwachen-Maverick
+[GA_1A]
+~w~Komm wieder, wenn du nicht so viel zu tun hast...
-[MAVERIC]
-Maverick
+[AWAY]
+~r~Er ist verschwunden!
-[RANCHER]
-Rancher
+[GA_6B]
+~w~Park die Karre, mach sie durch Drücken von~h~ ~k~ ~PDFW~ ~w~scharf, und dann HAU AB!
-[FBIRANC]
-FBI Rancher
+[GA_7B]
+Mach die Bombe mit~h~ ~k~ ~PDFW~~w~ scharf. Sie geht hoch, wenn der Wagen angelassen wird.
-[VIRGO]
-Virgo
+[FESZ_CA]
+Abbrechen
-[GREENWO]
-Greenwood
+[FESZ_QU]
+Beenden
-[HOTRING]
-Hotring Racer
+[FESZ_L1]
+Spiel gespeichert!
-[BLISTAC]
-Blista Compact
+[FESZ_L2]
+Spiel gespeichert unter:
-[FEST_DF]
-Zu Fuß zurückgel. Strecke (Meilen)
+[FESZ_OK]
+OK
-[FEST_DC]
-Mit Auto gefahrene Strecke (Meilen)
+[FES_LGA]
+Spiel laden
-[FESTDFM]
-Zu Fuß zurückgelegte Strecke (Meter)
+[FES_DGA]
+SPIELDATEN LÖSCHEN
-[FESTDCM]
-Mit Auto gefahrene Strecke (Meter)
+[FES_NGA]
+NEUES SPIEL
-[TOT_DIS]
-Insgesamt zurückgel. Strecke (Meilen)
+[FES_CAN]
+Abbrechen
-[TOTDISM]
-Insgesamt zurückgel. Strecke (Meter)
+[FESZ_QL]
+Alle nicht gespeicherten Daten des aktuellen Spiels werden verloren gehen. Laden fortsetzen?
-[DISTHEL]
-Mit Helikopter geflogene Strecke (Meilen)
+[FESZ_QD]
+Diesen Spielstand wirklich löschen?
-[DISTHEM]
-Mit Helikopter geflogene Strecke (Meter)
+[FESZ_QO]
+Diesen Spielstand wirklich überschreiben?
-[DISTBOA]
-Mit Boot zurückgel. Strecke (Meilen)
+[FESZ_QR]
+Wirklich ein neues Spiel beginnen? Alle Daten seit dem letzten Speichern werden verloren gehen. Weiter?
-[DISTBOM]
-Mit Boot zurückgel. Strecke (Meter)
+[FESZ_QS]
+SPEICHERN FORTSETZEN?
+
+[T4X4_2A]
+~g~Du hast ~y~2 Minuten~g~, um ~y~12~g~ Checkpoints abzufahren! ~g~Die ~y~REIHENFOLGE IST BELIEBIG.
+
+[T4X4_2B]
+~1~ von 12!
+
+[T4X4_2C]
+~y~PASSIERE~g~ den ersten Checkpoint, dann läuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~10 SEKUNDEN~g~.
+
+[T4X4_F]
+~r~Du hast gekniffen! Schon überfordert?
+
+[UPSIDE]
+~r~Du hast dich überschlagen!
+
+[FEST_DF]
+Zu Fuß zurückgel. Meilen
+
+[FEST_DC]
+Mit Auto zurückgel. Meilen
+
+[FESTDFM]
+Zu Fuß zurückgelegte Meter
+
+[FESTDCM]
+Mit Auto zurückgelegte Meter
[FEST_LS]
Mit Krankenwagen gerettete Menschen
@@ -2498,14 +2803,23 @@ Kriminelle bei Bürgerwehr-Mission
[FEST_FE]
Gelöschte Feuer gesamt
+[FEST_LF]
+Längster Flug in Dodo
+
+[FEST_BD]
+Bestzeit Bombenentschärfung
+
[FEST_RP]
-Bestandene Amokfahrten
+Erfüllte Spezialaufträge
-[FEST_MP]
-Erledigte Missionen
+[FEST_CN]
+Höchste Restzeit bei 'Karmageddon'
-[FEST_BB]
-Schnelle Autos, Schnelles Geld:
+[FEST_TR]
+Meiste Hits bei 'RC Triaden-Terror'
+
+[FEST_MP]
+Erfüllte Missionen
[FEST_H0]
Meiste Checkpoints
@@ -2513,12207 +2827,14630 @@ Meiste Checkpoints
[FEST_GC]
Geschrottete Gang-Autos:
-[FEST_H1]
-Im Dschungel der Diablos
+[USJ]
+~w~MONSTER-STUNT-BONUS!
-[FEST_H2]
-Mafia-Massaker
+[USJ_FAL]
+~w~MONSTER-STUNT MISSGLÜCKT
-[FEST_H3]
-Der Casino-Coup
+[HM1_1]
+~g~Fertige 20 Purple Nines in 2 Min. 30 Sek. ab.
-[FEST_H4]
-Rock'n'Roll mit Rumpo
+[KM1_8A]
+Drücke~h~ ~k~ ~PDFW~ ~w~zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung!
-[USJ]
-MONSTER-STUNT-BONUS!
+[KM1_8D]
+Drücke~h~ ~k~ ~PDFW~ ~w~zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung!
[RATNG1]
-Unbescholtener Bürger
+UNBESCHOLTENER BÜRGER
[RATNG2]
-Durchschnittstyp
+DURCHSCHNITTSTYP
[RATNG3]
-Falschparker
+FALSCHPARKER
[RATNG4]
-Ladendieb
+LADENDIEB
[RATNG5]
-Rowdy
+ROWDY
[RATNG6]
-Laufbursche
+LAUFBURSCHE
[RATNG7]
-Taschendieb
+TASCHENDIEB
[RATNG8]
-Kleptomane
+KLEPTOMANE
[RATNG9]
-Informant
+INFORMANT
[RATNG10]
-Spitzel
-
-[RATNG11]
-Verräter
+SPITZEL
[RATNG12]
-Hochstapler
+HOCHSTAPLER
[RATNG13]
-Betrüger
+BETRÜGER
[RATNG14]
-Schieber
+SCHIEBER
[RATNG15]
-Falschspieler
+FALSCHSPIELER
[RATNG16]
-Schläger
+SCHLÄGER
[RATNG17]
-Straßengauner
+STRASSENGAUNER
[RATNG18]
-Gauner
+GAUNER
[RATNG19]
-Halunke
+HALUNKE
[RATNG20]
-Outlaw
+OUTLAW
[RATNG21]
-Schurke
+SCHURKE
[RATNG22]
-Kurier
+KURIER
[RATNG23]
-Gangster
+GANGSTER
[RATNG24]
-Obergangster
+OBERGANGSTER
[RATNG25]
-Galgenvogel
+GALGENVOGEL
[RATNG26]
-Ex-Knacki
+EX-KNACKI
[RATNG27]
-Schwerer Junge
+SCHWERER JUNGE
[RATNG28]
-Profi
+PROFI
[RATNG29]
-Drahtzieher
+DRAHTZIEHER
[RATNG30]
-Fahrer
+FAHRER
[RATNG31]
-Soldat
+SOLDAT
[RATNG32]
-Gorilla
+GORILLA
[RATNG33]
-Kopfgeldjäger
+KOPFGELDJÄGER
[RATNG34]
-Mann fürs Grobe
+MANN FÜRS GROBE
[RATNG35]
-Ronin
+RONIN
[RATNG36]
-Abräumer
+ABRÄUMER
[RATNG37]
-Hit-Man
+HIT-MAN
[RATNG38]
-Partner
+PARTNER
[RATNG39]
-Butcher
+METZGER
[RATNG40]
-Troubleshooter
+TROUBLESHOOTER
[RATNG41]
-Attentäter
+ATTENTÄTER
[RATNG42]
-Adjutant
+ADJUTANT
[RATNG43]
-Gemachter Mann
+GEMACHTER MANN
[RATNG44]
-Rechte Hand
+RECHTE HAND
[RATNG45]
-Vollstrecker
+VOLLSTRECKER
[RATNG46]
-Leutnant
+LEUTNANT
[RATNG47]
-Vize-Boss
+VIZE-BOSS
[RATNG48]
-Capo
+CAPO
[RATNG49]
-Boss
+BOSS
[RATNG50]
-Oberboss
+OBERBOSS
[RATNG51]
-Don
+DON
[RATNG52]
-King of the City
+PATE
+
+[TRAIN_1]
+Kurowski Station
+
+[TRAIN_2]
+Rothwell Station
+
+[TRAIN_3]
+Baillie Station
+
+[SUBWAY1]
+Portland Station
+
+[SUBWAY2]
+Rockford Station
+
+[SUBWAY3]
+Staunton South Station
+
+[SUBWAY4]
+Shoreside Terminal
+
+[DETON]
+DETONATION
+
+[RCBOMB1]
+RC Triaden-Terror
+
+[RECORD]
+~w~Neuer Rekord - ~1~ Opfer!
+
+[NRECORD]
+~r~Du hast den bisherigen Rekord von ~1~ Opfern nicht verbessert!
+
+[RCBOMBF]
+~r~Du bist aus dem Van gestiegen!
+
+[RC_2]
+Du hast 2 Minuten, um so viele Mafia-Autos wie möglich zu sprengen!
+
+[RC_3]
+Du hast 2 Minuten, um so viele Yakuza-Autos wie möglich zu sprengen!
+
+[RC_4]
+Du hast 2 Minuten, um so viele Yardie-Autos wie möglich zu sprengen!
+
+[RC_5]
+Du hast 2 Minuten, um so viele Hood-Autos wie möglich zu sprengen!
+
+[RC_6]
+Du hast 2 Minuten, um so viele Kartell-Autos wie möglich zu sprengen!
+
+[RAMPKA]
+~w~Du brauchst ein Fahrzeug für diesen Spezialauftrag.
[PAGE_00]
-..
+.
+
+[TURTXT]
+Bleihaltige 'Spritztour'!
+
+[TURPASS]
+~w~'Spritztour' vorbei!
+
+[TUR3D]
+~w~Auto
+
+[FTFRENZ]
+Feuerwehr-Spezialauftrag
[WELCOME]
WILLKOMMEN IN
[TSCORE]
-EINKÜNFTE: $~1~
+~w~GESAMTEINKÜNFTE: $~1~
-[PBOAT_2] { reVC update }
-Drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~, um die Bordkanonen abzufeuern.
+[PBOAT_1]
+Drücke~h~ ~k~ ~VEWEP~~w~, um die Bordkanonen abzufeuern.
-[HJSTAT]
-Distanz: ~1~.~1~m Höhe: ~1~.~1~m Saltos: ~1~ Drehungen: ~1~_
+[HM2_1]
+Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke~h~ ~k~ ~VEWEP~~w~.
-[HJSTATW]
-Distanz: ~1~.~1~m Höhe: ~1~.~1~m Saltos: ~1~ Drehungen: ~1~_ Und was für eine Landung!
+[HM2_1A]
+Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke~h~ ~k~ ~VEWEP~~w~.
-[ATUTOR]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Krankenwagen-Missionen an- oder abzuschalten.
+[HM2_2]
+~r~Du hast nicht alle gepanzerten Fahrzeuge zerstört!
+
+[HM2_6]
+~g~Gepanzertes Fahrzeug zerstört!
+
+[FESZ_UC]
+ABBRECHEN
+
+[FEDS_SM]
+L1, R1-MENÜ WECHSELN
+
+[FEDS_AS]
+;=-AUSWAHL ÄNDERN
+
+[FEDSAS2]
+<>-AUSWAHL ÄNDERN
+
+[FEDS_SS]
+L1, R1-AUSWAHL ÄNDERN
+
+[FEDSSC1]
+;-SCHNELLER BILDLAUF
+
+[FEDSSC2]
+=-BILDLAUF STOP
+
+[FES_LOF]
+Laden fehlgeschlagen.
+
+[FES_SLO]
+GESPEICHERTE DATEI
+
+[FES_ISC]
+IST BESCHÄDIGT
+
+[FESZ_TI]
+Z1 SPEICHERN
+
+[FESZ_SA]
+Spiel speichern
+
+[MC_LDFL]
+Laden fehlgeschlagen!
+
+[MC_NWRE]
+Spiel wird neu gestartet.
+
+[BIFP_1]
+~w~Autsch! 'Flug'-Weite: ~1~,~1~m
+
+[BIFP_1F]
+~w~Autsch! 'Flug'-Weite: ~1~ Fuß
+
+[DIAB1_5]
+ZEIT:
+
+[F_FAIL1]
+~r~Feuerwehr-Mission beendet.
+
+[F_CANC]
+~r~Feuerwehr-Mission abgebrochen!
+
+[F_FAIL3]
+~r~Du kommst zu spät!
+
+[F_FAIL4]
+~r~Einer der Insassen ist gestorben!
+
+[F_FAIL5]
+~r~Eins der Autos wurde zerstört!
+
+[F_FAIL6]
+~r~Das Auto wurde zerstört!
+
+[F_EXTIN]
+Brände
+
+[A_CANC]
+~r~Krankenwagen-Mission abgebrochen!
+
+[ALEVEL]
+~w~Krankenwagen-Mission Level ~1~
+
+[A_FAIL1]
+~r~Krankenwagen-Mission beendet.
[FEST_HA]
-Höchster Krankenwagen-Missions-Level
+Höchstes Krankenwagen-Missions-Level
+
+[A_SAVES]
+~w~GERETTETE MENSCHEN: ~1~
[C_KILLS]
-KRIMINELLE: ~1~
+~w~ERLEDIGTE KRIMINELLE: ~1~
-[HJSTATF]
-Distanz: ~1~Fuß Höhe: ~1~Fuß Saltos: ~1~ Drehungen: ~1~_
+[F_START]
+~b~Brennendes Fahrzeug ~w~in der Gegend von ~a~ gemeldet. Lösche den Brand.
-[HJSTAWF]
-Distanz: ~1~Fuß Höhe: ~1~Fuß Saltos: ~1~ Drehungen: ~1~_ Und was für eine Landung!
+[F_STAR1]
+~b~Brennende Fahrzeuge ~w~in der Gegend von ~a~ gemeldet. Lösche die Brände.
-[CRED001]
-ROCKSTAR NORTH
+[F_REWAR]
+~w~BRAND GELÖSCHT! Level ~1~ abgeschlossen! Belohnung: $~1~
-[CRD001A]
-STUDIO DIRECTOR
+[CINCAM]
+Cinematic-Kamera
-[CRD001B]
-ANDREW SEMPLE
+[FEDS_AM]
+<>-MENÜ WECHSELN
-[CRED002]
-PRODUCER
+[KABOOM]
+KA-WUMM!
-[CRD002A]
-DEVELOPMENT DIRECTOR
+[SPLAT]
+PLATT!
-[CRED003]
-LESLIE BENZIES
+[PANCAK]
+IM EIMER!
-[CRED004]
-ART DIRECTOR
+[SOAKED]
+FERTIG!
-[CRED005]
-AARON GARBUT
+[HEAD]
+Head Radio
-[CRED006]
-TECHNICAL DIRECTORS
+[DBL_CLF]
+Double Clef FM
-[CRED007]
-OBBE VERMEIJ
+[FLASHB]
+Flashback FM
-[CRED008]
-ADAM FOWLER
+[RISE]
+Rise FM
-[CRED010]
-ANDREW DUTHIE
+[LIPS]
+Lips 106
-[CRED011]
-CRAIG FILSHIE
+[CHAT]
+Chatterbox FM
-[CRED012]
-WILLIAM MILLS
+[K_JAH]
+K-Jah Radio
-[CRED013]
-CHRIS ROTHWELL
+[GAM_FM]
+Game Radio FM
-[CRD013A]
-IMRAN SARWAR
+[MSX_FM]
+MSX FM
-[CRD013B]
-JAMES WORRALL
+[GA_2]
+~w~Neuer Motor und neue Lackierung: $100
-[CRD013C]
-JOHN HAIME
+[PERPIC]
+Gefundene versteckte Päckchen
-[CRED014]
-WRITTEN BY
+[GA_21]
+~w~In dieser Garage bringst du keine Fahrzeuge mehr unter.
-[CRED015]
-JAMES WORRALL
+[CHEAT1]
+Cheat aktiviert
-[CRED016]
-PAUL KUROWSKI
+[CHEAT2]
+Waffen-Cheat
-[CRED017]
-DAN HOUSER
+[CHEAT3]
+Health-Cheat
-[CRED018]
-LEAD CHARACTER DESIGNER
+[CHEAT4]
+Panzerungs-Cheat
-[CRD018A]
-CHARACTER DESIGNER
+[CHEAT5]
+Fahndungslevel-Cheat
-[CRED019]
-IAN MCQUE
+[CHEAT6]
+Geld-Cheat
-[CRD019A]
-TOKS SOLARIN
+[CHEAT7]
+Wetter-Cheat
-[CRD019B]
-ALAN DAVIDSON
+[FEDS_BA]
+"-Taste - ZURÜCK
-[CRED020]
-LEAD ANIMATOR
+[FED_WIS]
+BREITWAND:
-[CRED021]
-ALEX HORTON
+[USJ_ALL]
+~w~ALLE MONSTER-STUNTS ABSOLVIERT!
-[CRD022A]
-ANIMATORS
+[JAN]
+Jan
-[CRED022]
-LEE MONTGOMERY
+[FEB]
+Feb
-[CRD022B]
-DUNCAN SHIELDS
+[MAR]
+Mär
-[CRD022C]
-GUS BRAID
+[APR]
+Apr
-[CRED023]
-VEHICLE DESIGNERS
+[MAY]
+Mai
-[CRD023A]
-JOLYON ORME
+[JUN]
+Jun
-[CRD023B]
-ALAN DUNCAN
+[JUL]
+Jul
-[CRD024A]
-LEAD VEHICLE DESIGNER
+[AUG]
+Aug
-[CRED024]
-PAUL KUROWSKI
+[SEP]
+Sept
-[CRED025]
-MAP DESIGNERS
+[OCT]
+Okt
-[CRED026]
-ADAM COCHRANE
+[NOV]
+Nov
-[CRED027]
-NIK TAYLOR
+[DEC]
+Dez
-[CRED028]
-GARY MCADAM
+[DEFDT]
+--:---:---- --:--:--
-[CRED029]
-KEIRAN BAILLIE
+[BONUS]
+~g~BONUS $~1~
-[CRED030]
-ALISDAIR WOOD
+[TAXI_M]
+'Taxifahrer'
-[CRED031]
-ANDREW SOOSAY
+[COP_M]
+'Bürgerwehr'
-[CRD031A]
-STEVEN MULHOLLAND
+[FIRE_M]
+'Feuerwehrmann'
-[CRD031B]
-WAYLAND STANDING
+[AMBUL_M]
+'Sanitäter'
-[CRD031C]
-CAMPBELL J. DICK
+[HJ_IS]
+~w~IRRSINNS-STUNT-BONUS: $~1~
-[CRD031D]
-GRAPHIC DESIGNER
+[HJ_PIS]
+~w~SUPER IRRSINNS-STUNT-BONUS: $~1~
-[CRD031E]
-STUART PETRI
+[HJ_DIS]
+~w~DOPPELTER IRRSINNS-STUNT-BONUS: $~1~
-[CRED032]
-LEAD PROGRAMMER
+[HJ_PDIS]
+~w~SUPER-DOPPEL-IRRSINNS-STUNT-BONUS: $~1~
-[CRD032A]
-PROGRAMMERS
+[HJ_TIS]
+~w~DREIFACHER IRRSINNS-STUNT-BONUS: $~1~
-[CRED033]
-ALEXANDER ROGER
+[HJ_PTIS]
+~w~SUPER-DREIFACH-IRRSINNS-STUNT-BONUS: $~1~
-[CRED034]
-GRAEME WILLIAMSON
+[HJ_QIS]
+~w~VIERFACHER IRRSINNS-STUNT-BONUS: $~1~
-[CRED035]
-BARANE CHAN
+[HJ_PQIS]
+~w~SUPER-VIERFACH-IRRSINNS-STUNT-BONUS: $~1~
-[CRED036]
-DEREK PAYNE
+[HJBAD]
+~w~Grausige Landung - fast hättest du $~1~ gewonnen!
-[CRED037]
-GORDON YEOMAN
+[HJUP]
+Takeoff health: ~1~
-[CRD037A]
-ALAN CAMPBELL
+[HJDOWN]
+Landing health: ~1~
-[CRD037B]
-MARK HANLON
+[FESZ_LS]
+Laden erfolgreich.
-[CRD037C]
-ANDRZEJ MADAJCZYK
+[CEDBUG1]
+!!Debug Event!!
-[CRED038]
-LEAD MUSIC PRODUCER
+[CEDBUG2]
+!!Player is dead or not playing!!
-[CRED039]
-CRAIG CONNER
+[CEDBUG3]
+!!Player is in INDUSTRIAL level!!
-[CRED040]
-STUART ROSS
+[CEDBUG4]
+Trying to make COLLECTIVE with ~1~
-[CRED041]
-LEAD AUDIO ENGINEER
+[CEDBUG5]
+Debug Value: ~1~
-[CRED042]
-ALLAN WALKER
+[CEDBUG6]
+Debug Values: A: ~1~ B: ~1~
-[CRD041A]
-AUDIO ENGINEER
+[CEDBUG7]
+Debug Values: A: ~1~ B: ~1~ C: ~1~
-[CRD041B]
-AUDIO
+[LINE]
+This is Line ~1~
-[CRD042A]
-WILL MORTON
+[MRACE08]
+~w~Komm wieder, wenn du eine Karre hast!
-[CRED043]
-AUDIO PROGRAMMER
+[MRACE01]
+~w~Warte auf ein paar Gegner und dann hupe, um das Rennen zu starten!
-[CRED044]
-RAYMOND USHER
+[MRACE02]
+~w~Das Rennen beginnt, wenn der erste Spieler hupt.
-[CRED045]
-TEST MANAGER
+[MRACE05]
+~r~DU HAST VERLOREN!
-[CRED046]
-CRAIG ARBUTHNOTT
+[MRACE07]
+~r~Du bist tot! Du Loser!
-[CRED047]
-LEAD QA
+[MRACE06]
+~r~Du Flasche hast aufgegeben!
-[CRED048]
-NEIL CORBETT
+[MRACE09]
+~w~Fahr das Rennen weiter!
-[CRED049]
-KEVIN WONG
+[MRACE10]
+~w~Du hast (ein Rennen ohne Gegner) gewonnen!
-[CRED050]
-QA
+[MRACEPO]
+Platzierung
-[CRED051]
-DAVID BEDDOES
+[MRCPU03]
+DU HAST ALLEN EINGEHEIZT!
-[CRED052]
-DAVID WATSON
+[MRCPU04]
+DU STEHST IN FLAMMEN! ( ------- TRASHMASTER ODD-JOB MISSION ------- )
-[CRED053]
-BARRY CLARK
+[TRASH1]
+Turbo-Müll
-[CRED054]
-ROSS SPARROW
+[TRASH1A]
+~w~Hole die Tonnen ab und bring den Müll zur Mülldeponie.
-[CRED055]
-JAMES ALLAN
+[TRASH1C]
+~w~Die Zeit läuft, wenn du die erste Tonne abholst. Die REIHENFOLGE IST BELIEBIG.
-[CRED056]
-NEIL MEIKLE
+[TRASH1G]
+~r~Überfordert? Das war eine Leistung für den Müll!
-[CRD056A]
-GEORGE WILLIAMSON
+[TRASH1H]
+~r~Die Zeit ist um!
-[CRD056B]
-MATT JONES
+[TRASH1J]
+~r~Du bist zu weit von deiner Route abgewichen!
-[CRD056C]
-ROB HARBOUR
+[TRASH1K]
+~w~Hol die ~g~Tonnen~w~ ab!
-[CRD056D]
-TOM WHITTAKER
+[TRASH1L]
+~w~Fahr zurück zur ~y~Mülldeponie!
-[CRED057]
-LEAD TECHNICAL SUPPORT
+[TRASH1M]
+~w~Müll abgeholt! +~1~ Sekunden
-[CRED058]
-LORRAINE ROY
+[PCJINFO]
+~w~Fahr alle 25 ~y~Checkpoints~w~ in ~1~ Sekunden ab.
-[CRD057A]
-TECHNICAL SUPPORT
+[PCJFAIL]
+~r~Du hast die Zeit von ~1~ Sek. nicht schlagen können!
-[CRED059]
-CHRISTINE CHALMERS
+[PCJPROM]
+~w~Du hast ~1~ Sekunden, um wieder auf das ~b~Motorrad~w~ zu steigen!
-[CRD060A]
-OFFICE SUPPORT
+[PCJPRO1]
+~w~Du hast ~1~ Sekunde, um wieder auf das ~b~Motorrad~w~ zu steigen!
-[CRD060B]
-KIM GURNEY
+[PCJDEST]
+~r~Motorrad zerstört!
-[CRD060C]
-CASSIE OLIVER
+[PCJRET]
+~r~Du bist nicht wieder aufs Motorrad gestiegen.
-[CRED060]
-ROCKSTAR NEW YORK
+[PCJTIME]
+~r~Die Zeit ist um!
-[CRED061]
-EXECUTIVE PRODUCER
+[PCJCHEC]
+~w~Checkpoint ~1~ von ~1~
-[CRED062]
-SAM HOUSER
+[TRRACE1]
+~w~Für jeden abgefahrenen Checkpoint erhältst du einen Zeitbonus...
-[CRED063]
-PRODUCER
+[TRRACE3]
+~w~Du bist mit einer Restzeit von ~1~ Sek. ins Ziel gekommen!
-[CRED064]
-DAN HOUSER
+[TRRACE4]
+~w~Du hast ~1~ von ~1~ Checkpoints als Erster erreicht.
-[CRED065]
-VP OF DEVELOPMENT
+[TRRACE5]
+~w~Das bringt dir $~1~ ein!
-[CRED066]
-JAMIE KING
+[TRRACE6]
+~w~SUPER! Du hast alle Checkpoints als Erster erreicht! Das bringt $1000 Bonus!
-[CRED067]
-CHIEF TECHNOLOGY OFFICER
+[TRRACE7]
+~r~Du hast die Strecke verlassen!
-[CRED068]
-GARY J. FOREMAN
+[TRRACE8]
+~r~Dein Motorrad wurde zerstört!
-[CRED069]
-ASSOCIATE PRODUCER
+[TRRACE9]
+~r~Du bist nicht rechtzeitig zu deinem Motorrad zurückgekehrt!
-[CRED070]
-JEREMY POPE
+[TRRAC10]
+~r~Du hast dein Motorrad verloren!
-[CRD071A]
-DIRECTOR OF QUALITY ASSURANCE
+[TRRAC11]
+~r~Die Zeit ist um!
-[CRD072A]
-JEFF ROSA
+[ANG]
+Avenging Angels
-[CRED071]
-MUSIC SUPERVISOR
+[ANG_1]
+~w~Hey, Kumpel! Wir säubern diese Stadt vom Verbrechen!
-[CRED072]
-TERRY DONOVAN
+[ANG_2A]
+Drücke~h~ ~k~ ~TGSUB~~w~, um dich den Avenging Angels anzuschließen.
-[CRED073]
-PRODUCTION TEAM
+[ANG_3]
+~w~Du und ich könnten diese Stadt alleine aufmischen, aber, äh... holen wir lieber Hilfe, für alle Fälle.
-[CRED074]
-TERRY DONOVAN
+[ANG_3A]
+~w~Bleib neben anderen Avenging Angels stehen, damit sie sich deiner Truppe anschließen.
-[CRED075]
-JENNIFER KOLBE
+[ANG_4]
+~w~Yo! Ich bin bei diesem Sauhaufen, um Gesocks aufzumischen. Also los!
-[CRED076]
-JENEFER GROSS
+[ANG_5]
+~w~Ich bin dabei...
-[CRED077]
-LAURA PATERSON
+[ANG_6]
+~w~Machen wir ein paar Dreckschweine fertig!
-[CRED078]
-JEFF CASTANEDA
+[ANG_7]
+~w~Gesocks aufmischen ist geil!
-[CRED079]
-JERONIMO BARRERA
+[ANG_7A]
+~w~Ist das nicht der Hammer?!
-[CRED080]
-CARLY SLATER
+[ANG_7B]
+~w~Wir dulden keine Schläger-Gangs auf unseren Straßen!
-[CRED081]
-JUNG KWAK
+[ANG_7C]
+~w~Nicht vor meiner Haustür!
-[CRED082]
-BRIAN WOOD
+[ANG_7D]
+~w~Wird Zeit, dass wir zurückschlagen!
-[CRED083]
-RENAUD SEBANNE
+[ANG_7E]
+~w~Wir sind das Gesetz in dieser Stadt!
-[CRED084]
-RICHARD KRUGER
+[ANG_8]
+Zeit
-[CRD084A]
-DANIEL EINZIG
+[ANG_9]
+~w~Zeit verlängert!
-[CRD084B]
-JACEN BURROWS
+[ANG_10]
+~r~Die Zeit ist um!
-[CRD084C]
-LINN PR
+[ANG_11]
+~w~In der Nähe lungert 'ne Meute von 'unerwünschten Elementen' rum... erteilen wir ihnen eine Lektion.
-[CRD084D]
-COVER ART
+[ANG_12]
+~w~Ein Lynchmob macht Terz auf der Straße! Stellen wir die Idioten ruhig!
-[CRD084E]
-STEPHEN BLISS
+[ANG_13]
+~w~Was ist aus dieser Stadt geworden? Denken die Leute, wir hätten Versammlungsfreiheit? Denen zeigen wir's!
-[CRED085]
-KENT PAUL'S 80 NOSTALGIA ZONE
+[ANG_13A]
+~w~Eine üble Gang wurde beobachtet, wie sie auf der Straße Leute schikaniert hat...
-[CRED086]
-WRITTEN BY DAN HOUSER
+[ANG_14]
+~w~Es wurde wieder ein Verbrechen gemeldet... los!
-[CRD086A]
-PRODUCED BY ADAM TEDMAN
+[ANG_16]
+~w~Es wurden Leute beim Falschparken beobachtet! LOS, KOMMT!
-[CRED087]
-WWW.KENTPAUL.COM AND WWW.VICECITY.COM
+[ANG_16A]
+~w~Ich kenn ein paar Typen, die führen immer was im Schilde. Wird Zeit, dass wir denen eine Abreibung verpassen!
-[CRED088]
-CREATED BY
+[ANG_OBJ]
+~w~Zieh die unruhestiftende ~r~Gang~w~ aus dem Verkehr.
-[CRD088A]
-ADAM TEDMAN
+[ANG_17]
+~w~Gute Arbeit, Kumpel! Dank dir ist diese Gegend sicher. Fürs Erste jedenfalls...
-[CRD088B]
-DAVID YU
+[ANG_18]
+~w~Sie hauen ab!
-[CRD088C]
-JERRY LUNA
+[ANG_19]
+~w~Suche einen Avenging Angel und stell dich neben ihn, um deine nächste Mission zu erhalten.
-[CRD088D]
-STUART PETRI
+[ANG_20]
+~w~Sie suchen das Weite!
-[CRD088E]
-MICHAEL CARNEVALE
+[ANG_21]
+~w~Sie dürfen nicht entkommen!
-[CRD088F]
-GREG LAU
+[VIC1]
+Home Sweet Home
-[CRD088G]
-FUTABA HAYASHI
+[VIC2]
+Slacker
-[CRED089]
-QA MANAGER
+[VIC3]
+Payback-Time
-[CRED090]
-CRAIG ARBUTHNOTT
+[VIC4]
+Snuff-Movie
-[CRED091]
-LEAD ANALYST
+[VIC5]
+Eingekesselt
-[CRED092]
-ADAM DAVIDSON
+[VIC6]
+Hot Wheels
-[CRD092A]
-JOE HOWELL
+[VIC7]
+Portland Kettensägen-Maskerade
-[CRD092B]
-MARC FERNANDEZ
+[MAR1]
+Shopping-Koller
-[CRED093]
-GAME ANALYST
+[MAR2]
+Immer Ärger mit Maria
-[CRED094]
-RICHARD HUIE
+[MAR3]
+Preis-Titten
-[CRED095]
-ROCKSTAR TEST TEAM
+[MAR4]
+Biker-Trouble
-[CRED096]
-LANCE WILLIAMS
+[MAR5]
+Überdosis Trouble
-[CRED097]
-JOE GREENE
+[SAL1]
+Das Angebot
-[CRED098]
-BRIAN PLANER
+[SAL2]
+Nutten-Express
-[CRD098A]
-ELIZABETH SATTERWHITE
+[SAL3]
+Einschüchterungstaktik
-[CRD098B]
-JAMEEL VEGA
+[SAL4]
+Achterbahnfahrt
-[CRD098C]
-MIKE HONG
+[SAL5]
+Gratis Stoff
-[CRED099]
-LEE CUMMINGS
+[SAL6]
+Sindacco-Sabotage
-[CRED100]
-STORY
+[SAL7]
+Trouble mit den Triaden
-[CRED101]
-JAMES WORRALL
+[SAL8]
+Mr. Leone und sein Chauffeur
-[CRED102]
-DAN HOUSER
+[JDT1]
+Pferdchenkontrolle
-[CRED103]
-ADAM TEDMAN
+[JDT2]
+Die Razzia
-[CRED104]
-PAUL YEATES
+[JDT3]
+Eine brisante Situation
-[CRED105]
-JENEFER GROSS
+[JDT4]
+Explodierende 'Dolls'
-[CRED106]
-LAURA PATERSON
+[JDT5]
+Salvatores Rettung
-[CRED107]
-CUT SCENES
+[JDT6]
+Die Kanonen von Leone
-[CRED108]
-WRITTEN BY DAN HOUSER AND JAMES WORRALL
+[JDT7]
+Ruhe vor dem Sturm
-[CRED109]
-AUDIO DIRECTED BY DAN HOUSER AND NAVID KHONSARI
+[JDT8]
+Der Capo in spe
-[CRED110]
-PRODUCED BY JAMIE KING
+[MAC1]
+Das Riesen-'Baby'
-[CRD110A]
-TALENT PROCUREMENT: JAMIE KING, SEAN MACALUSO
+[MAC2]
+Big Stress in Little China
-[CRED111]
-CAST
+[MAC3]
+Too Much-o Sucho
-[CRD111A]
-SUPPORTING CHARACTERS
+[MAC4]
+'Schweine'-Fleisch
-[CRED112]
-TOMMY VERCETTI - RAY LIOTTA
+[MAC4_0]
+Casa
-[CRED113]
-KEN ROSENBERG - WILLIAN FICHTNER
+[MAC5]
+Der verstoßene Sohn
-[CRED114]
-SONNY FORELLI - TOM SIZEMORE
+[SALH1]
+Kurzer Prozess
-[CRED115]
-STEVE SCOTT - DENNIS HOPPER
+[SALH2]
+Arrivederci, Paulie!
-[CRED116]
-AVERY CARRINGTON - BURT REYNOLDS
+[SALH3]
+Shogun Showdown
-[CRED117]
-RICARDO DIAZ - LUIS GUZMAN
+[SALH4]
+Salvatores Gerichtstermin
-[CRED118]
-LANCE VANCE - PHILIP MICHAEL THOMAS
+[SALH4_V]
+~r~v1.1
-[CRED119]
-COLONEL JUAN CORTEZ - ROBERT DAVI
+[SALH5]
+Das Sizilianische Gambit
-[CRED120]
-UMBERTO ROBINA - DANNY TREJO
+[SALH5_V]
+~r~v1.1
-[CRED121]
-PHIL CASSIDY - GARY BUSEY
+[DONH1]
+Bauherrenmodell Panlantic
-[CRED122]
-MITCH BAKER - LEE MAJORS
+[DONH2]
+Presse-Pressing
-[CRED123]
-MERCEDES CORTEZ - FAIRUZA BALK
+[DONH3]
+Auferstehung bis zum Abwinken
-[CRED124]
-KENT PAUL - DANNY DYER
+[DONH4]
+Bastelzaster
-[CRED125]
-JEZZ TORRENT - KEVIN MCKIDD
+[DONH5]
+Fall auf Knall
-[CRED126]
-TAXI CONTROLLER - DEBORAH HARRY
+[DONH6]
+Love auf der Flucht
-[CRED127]
-CANDY SUXX - JENNA JAMESON
+[TOSH1]
+Waffen raffen
-[CRED128]
-BJ SMITH - LAWRENCE TAYLOR
+[TOSH2]
+Knetenfete
-[CRED129]
-AUNTIE POULET - YOUREE CLEOMILI HARRIS
+[TOSH2F0]
+~r~Ein Van hat den Yakuza-Komplex erreicht!
-[CRED130]
-SUPPLIER - ARMANDO RIESCO
+[TOSH2F1]
+~r~Der Konvoi hat den Yakuza-Komplex erreicht!
-[CRED131]
-COUGAR - BLAYNE PERRY
+[TOSH2F2]
+~r~Du hast die Geldtransporter nicht zerstört!
-[CRED132]
-HILARY - CHARLES TUCKER
+[TOSH2M0]
+~w~Einer weniger!
-[CRED133]
-CONGRESSMAN ALEX SHRUB - CHRIS LUCAS
+[TOSH2M1]
+~w~Noch einer weniger!
-[CRED134]
-OLD MAN KELLY - GEORGE DICENZO
+[TOSH3]
+Rendezvous mit dem Tod
-[CRD134A]
-CAM JONES - GREG SIMS
+[TOSH4]
+Kazukis Kassensturz
-[CRD134B]
-PSYCHO - HUNTER PLATIN
+[PO_MOB1]
+~w~Toni? Hier ist deine Ma!
-[CRD134C]
-MAUDE THE ICE CREAM LADY - JANE GENNARO
+[POMOB1A]
+~w~Wie lange bist du schon wieder in der Stadt?
-[CRD134D]
-JETHRO - JOHN ZURHELLEN
+[POMOB1B]
+~w~Wieso kommst du mich nicht besuchen?
-[CRD134E]
-GONZALES - JORGE PUPO
+[POMOB1C]
+~w~Was ist nur los mit dir?
-[CRD134F]
-DWAYNE - NAVID KHONSARI
+[POMOB1D]
+~w~Ich bin deine Mutter, Himmel noch mal! Wirklich!
-[CRD134G]
-DICK - PETER MCKAY
+[PO_MOB2]
+~w~Hallo, Fiffi! Hier Maria.
-[CRD134H]
-MIKE THE GOON & PORN GUY - ROBERT CIHRA
+[PO_MOB3]
+~w~Hey, Toni! Hier JD.
-[CRD134I]
-PERCY - RUSSELL FOREMAN
+[POMOB3A]
+~w~Es heißt überall, dass du bald 'ne große Nummer wirst.
-[CRED135]
-MOTION CAPTURE
+[POMOB3B]
+~w~Ich hoffe, du vergisst deinen alten Kumpel JD nicht, wenn du ganz oben bist. Okay?
-[CRED136]
-ANIMATED BY
+[POMOB4A]
+~w~Was willst du, verflucht?
-[CRD136A]
-TECHNICAL DIRECTION BY ALEX HORTON
+[POMOB4B]
+~w~Jemand, der dir deine Wäsche abholt? Oder dir den Arsch abwischt?
-[CRED137]
-DIRECTED BY
+[POMOB4C]
+~w~Hab dich nicht so. Hör mal, mir tut das alles Leid...
-[CRD137A]
-DIRECTED BY NAVID KHONSARI
+[POMOB4F]
+~w~Ein schönes Stück Arsenkuchen?
-[CRED138]
-PRODUCED BY
+[POMOB4G]
+~w~Vergiss es.
-[CRD138A]
-PRODUCED BY JAMIE KING
+[POMOB4I]
+~w~Salvatore hat davon erfahren und meinte, wir sollten beide erwachsen werden.
-[CRD138B]
-RENAUD SEBBANE
+[POMOB4J]
+~w~Und das versuch ich hiermit gerade. Es tut mir Leid. Komm!
-[CRED139]
-RECORDED AT PERSPECTIVE STUDIOS, BROOKLYN
+[PO_MOB5]
+~w~Toni? Hier Salvatore.
-[CRED140]
-MOTION CAPTURE ACTORS
+[POMOB5A]
+~w~Wir haben schweren Ärger! Beweg deinen Arsch her, pronto!
-[CRD140A]
-BLAYNE PERRY
+[PO_MOB6]
+~w~Anthony? Hier Salvatore.
-[CRD140B]
-JONATHON SALE
+[POMOB6A]
+~w~Hast du Maria gesehen?
-[CRD140C]
-CHARLES TUCKER
+[ST_MOB8]
+~w~Ja?
-[CRD140D]
-EDDIE MARRERO
+[STMOB8A]
+~w~Toni? Hier Sal.
-[CRD140E]
-WILLIAM MCCALL
+[STMOB8B]
+~w~Ich muss mit dir reden. Aber diesen Scheiß-Handys trau ich nicht.
-[CRD140F]
-JORGE PUPO
+[STMOB8C]
+~w~Ich ruf dich in der Telefonzelle vor dem Gericht an.
-[CRD140G]
-ROBERT JACKSON
+[ST_MOB1]
+~w~Toni. Donald hier.
-[CRD140H]
-TARA RADCLIFFE
+[STMOB1A]
+~w~Da wäre eine dringende Sache, bei der ich deine... besonderen Talente brauche.
-[CRD140I]
-JENIFER GAMBETESE
+[STMOB1B]
+~w~Komm bitte baldmöglichst zu mir ins Büro.
-[CRD140J]
-KRIS ACHEVARRIA
+[ST_MOB2]
+~w~Ja?
-[CRD140K]
-ALI ORDOUBADI
+[STMOB2A]
+~w~Cipriani? Ich bin's, McAffrey.
-[CRD140L]
-KAHLEEM POOLE
+[STMOB2B]
+~w~Ich hab Neuigkeiten, die Salvatore interessieren könnten.
-[CRED141]
-PEDESTRIAN DIALOGUE
+[STMOB2C]
+~w~Komm zu unserem üblichen Treffpunkt.
-[CRD141A]
-WRITTEN BY DAN HOUSER, MARC FERNANDEZ, GILLIAN TELLING AND NAVID KHONSARI
+[ST_MOB3]
+~w~Ja?
-[CRD141B]
-WITH HELP FROM JEREMY POPE, LANCE WILLIAMS, AND JENNY JEMISON
+[STMOB3A]
+~w~Sal hier.
-[CRED142]
-WRITTEN BY
+[STMOB3B]
+~w~Hör zu, die Forellis hatten Bürgermeister Hole in der Tasche.
-[CRD142A]
-DAN HOUSER AND JAMES WORRALL
+[STMOB3D]
+~w~Ich kenn 'nen Geschäftsmann - große Nummer - der würd alles tun, um Bürgermeister zu werden.
-[CRED143]
-DIRECTED BY DAN HOUSER, CRAIG CONNER, MARC FERNANDEZ, AND ALLAN WALKER
+[STMOB3E]
+~w~Er ist ein komplettes Arschloch, also geeignet für das Amt.
-[CRED144]
-PRODUCED BY RENAUD SEBANNE
+[STMOB3F]
+~w~Ich hab ihm gesagt, du sorgst dafür, dass er die Wahl gewinnt... für uns!
-[CRED145]
-PEDESTRIANS
+[ST_MOB4]
+~w~Hallo.
-[CRED146]
-ADAM DAVIDSON, ADAM WATKINS, ALEJANDRO K. BROWN, ALEX ANTHONY SIOUKAS, ALEX GARCIA,
+[STMOB4A]
+~w~Toni. Ich bin's, Sal.
-[CRED147]
-ALICE SALTZMAN, ALISON CIHRA, AMY SALIMA, AMY SALZMAN, ANDREA VIDELA, ANTHONY ATTI,
+[STMOB4B]
+~w~Ich riech, dass die Forellis hinter der Scheiße stecken, in der ich sitze.
-[CRED148]
-ANTHONY RIVERA, BIJAN SHAMS, BLAYNE PERRY, BRETT BISOGNO, BREYE MATA, BRIAN PANEN,
+[STMOB4C]
+~w~Was ich wissen will, ist: warum haben sie dafür gesorgt, dass mir der Bürgermeister die Hölle heiß macht?
-[CRED149]
-BROCK VODER, CAREY BERTINI, CHARISSE LAMBERT, CHRIS DIFAT, CHRIS REISENBERGER,
+[STMOB4D]
+~w~Hör zu, wir treffen uns unten am Pier.
-[CRED150]
-CHRISTOPHER BRODAY, CHRISTOPHER CARRO, CYNTHIA GREENE, DAMARIES LOPEZ, DAN LEE,
+[STMOB4E]
+~w~Und betreiben ein bisschen Recherche.
-[CRED151]
-DAN SCHNEIDER, DAN TOYAMA, DAVID DEAN CHALTFIELD, JR., DAVID HARRISON, DAVID WILEY,
+[ST_MOB5]
+~w~Yo!
-[CRED152]
-DEBORAH COLLINS, DEBRANDA CHANEY-GILES, DEMETRA KOUKOULAS, DENISE ROSADO,
+[STMOB5B]
+~w~Fahr rüber zur Telefonzelle in Torrington.
-[CRED153]
-DEVIN BENNETT, DEVIN WINTERBOTTOM, DORIS WOO, DOUGLAS HARRISON, DUNCAN COUTTS,
+[STMOB5C]
+~w~Wir müssen reden.
-[CRED154]
-DUPE AJAYI, EDWIN AVELLANEDA, ELIZABETH HOWELL, ELIZABETH SATTERWHITE, ERIC NAGLE,
+[STMOB5D]
+~w~Fahr auf dem Weg noch bei einem Geschäftsfreund von mir in Aspatria vorbei.
-[CRED155]
-ESTEBAN KARPLUS, F. FONT, FUTABA HAYASHI, GENE HILGREEN, GERALD COSGROVE,
+[STMOB5E]
+~w~Er wird uns helfen, die Sindaccos und Forellis unter Druck zu setzen.
-[CRED156]
-GERARD LUNA, GILLIAN TELLING, GREGG CARLUCCI, GREGORY CLERVOIX, GREGORY SCHWEIZER,
+[ST_MOB6]
+~w~Ja?
-[CRED157]
-HADLEY TOMICKI, J. ROSSETT, JAMEEL VEGA, JASON JONES, JEFF ROSA, JENNIFER JEMISON,
+[STMOB6A]
+~w~Toni? Hier Sal.
-[CRED158]
-JEREMY TAGGERT, JESSICA RIDER, JOSEPH GREENE,JOSEPH HOWELL, KATE DUKICH,
+[STMOB6B]
+~w~Fahr zur Telefonzelle auf dem Liberty Campus.
-[CRED159]
-KEL O'NEILL, KEVIN HOPKINS, LADAWN JAMES, LANCE WILLIAMS, LAURA BUBBLES,
+[STMOB6C]
+~w~Es ist wichtig.
-[CRED160]
-LAURA PATTERSON, LEE CUMMINGS, LETICIA L. YOUNG, LINDSAY KENNEDY, LISA ORITZ,
+[ST_MOB7]
+~w~Ja?
-[CRED161]
-LORNA JORDAN, LUCIO AMADIO, MARCO FERNANDEZ, MARIKO TANAKA, MARLON MATTHEWS,
+[STMOB7A]
+~w~Toni? Sal hier.
-[CRED162]
-MARY TELLING, MASAYOSHI MITSUYAMA, MATTHEW CHUNG, MAX ALLSTADT, MAX BOGDANOV,
+[STMOB7B]
+~w~Fahr rüber nach Belleville, zu der Telefonzelle dort.
-[CRED163]
-MELISSA ALVAREZ, MICHAEL MAY, MICHAEL ROTHSTEIN, MIGUEL VIDAL, MIKE FEDERLINE,
+[STMOB7C]
+~w~Du musst dringend was für mich erledigen.
-[CRED164]
-NATALIE DESCALZO, N'GAI MEMBERS, NICOLAS MALLO, NOELLE SADLER, NORBERT MORIVAN,
+[ST_MOB9]
+~w~Hier Toni Cipriani.
-[CRED165]
-OSWALD GREENE, JR., PETER MCKAY, PETER APPEL, PRESTON SAVARESE, RAFAEL GONZALES,
+[STMOB9A]
+~w~Toni? Hier ist deine Ma.
-[CRED166]
-RANDY JOHNSON, REY CONCEPCION, RICHARD KROGER, ROB TIBBS, ROBERT JACKSON,
+[STMOB9B]
+~w~Ich hab's eben gehört. Du bist Capo geworden.
-[CRED167]
-ROBERT SCHULER, ROSS A. MCINTYRE, RUSSELL FOREMAN, RUTH NUNEZ, SALVADORE SUAZO,
+[STMOB9C]
+~w~...Ich habe keine Sekunde an dir gezweifelt, mein Sohn!
-[CRED168]
-SAM WHITE, SANTOS GONZALES, SCOTT SMITH, SEYMOUR FRAILMAN, SPELMAN BRAUMAN,
+[STMOB9D]
+~w~...und wo du dich jetzt endlich bewährt hast,
-[CRED169]
-STEPHANIE TELLING, STEVE KNEZEVICH, STEVE ROBERT, SUMIKO YASUDA, SUSAN LEWIS,
+[STMOB9E]
+~w~ruf ich die Killer zurück, die ich auf dich angesetzt hatte.
-[CRED170]
-SYLVIA COLACIOS, TOMOKO MIYAZAKI, TRON, VERDEL HALE, YVES MONDESIR, ZENO LEINFELDER,
+[STMOB9F]
+~w~Vergessen wir das Ganze.
-[CRED171]
-DAVID BEDDOES, CHRISTINE CHALMERS, BARRY CLARK, NEIL CORBETT, KIM GURNEY, NEIL MEIKLE,
+[STMOB9G]
+~w~Schließlich hab ich ja nur dein Bestes gewollt.
-[CRED172]
-CASSIE OLIVER, LORRAINE ROY, DAVID WATSON, KEVIN WONG, WILL MORTON
+[STMOB9H]
+~w~Ah, was sind das für Söhne, die ihre Mutter so weit bringen?
-[CRED175]
-ADAM DAVIDSON
+[STMOB9I]
+~w~Bis bald, mein Sohn. Vergiss deine alte Ma nicht.
-[CRED176]
-LANCE WILLIAMS
+[STMO10]
+~w~Ja?
-[CRED177]
-NEIL MCCAFFREY
+[STMO10A]
+~w~Hey, Großmaul. McAffrey hier.
-[CRED178]
-LAURA PATERSON
+[STMO10B]
+~w~Das FBI ist deinem Boss Salvatore draufgekommen.
-[CRED179]
-REY CONCEPCION
+[STMO10C]
+~w~Und die sind stinksauer.
-[CRED180]
-CHARLES HEROLD
+[STMO10D]
+~w~Die hängen ihm jetzt ungefähr jedes Verbrechen in dieser Stadt an.
-[CRED181]
-ANDREW GREENWALD
+[STMO10E]
+~w~Also, wir kennen uns nicht. Klar?
-[CRED182]
-JAMES MIELKE
+[SH_MOB1]
+~w~Toni...?
-[CRED183]
-PETER SUCIU
+[SHMOB1A]
+~w~Sal? Bist du das?
-[CRED184]
-ALEX ODULIO
+[SHMOB1B]
+~w~Hey, Schnauze! Ich sprech mit meinem Anwalt!
-[CRED185]
-DON NKRUMAH
+[SHMOB1C]
+~w~Toni? ...Ich meine, äh... Lionel?
-[CRED186]
-KENDALL PITTMAN
+[SHMOB1D]
+~w~Hör zu. Sie haben mich erwischt. Ist das zu fassen?
-[CRED187]
-SAL SUAZO
+[SHMOB1E]
+~w~Ich steck schwer in der Scheiße.
-[CRED188]
-EREK MATEO
+[SHMOB1F]
+~w~Also beweg deinen Arsch hierher, du musst was für mich erledigen.
-[CRED189]
-CHRIS DIFATE
+[SHMOB1G]
+~w~...Lionel?
-[CRED190]
-LEILA MILTON
+[SH_MOB2]
+~w~Ja?
-[CRED191]
-DARREN ZOLTOWSKI
+[SHMOB2A]
+~w~Toni? Hier Donald.
-[CRED192]
-VIRGINIA SMITH
+[SHMOB2B]
+~w~Nein, warte! Leg nicht auf!
-[CRED193]
-KEVIN CASSIN
+[SHMOB2C]
+~w~Ich hab ein sehr verlockendes Angebot für dich...
-[CRED194]
-JASON SHIGEMORI
+[SHMOB2D]
+~w~Komm bitte zu meinem augenblicklichen... ähm... Wohnsitz und ich erklär dir alles.
-[CRED195]
-KELLY KINSELLA
+[SHMOB2E]
+~w~Toni...?
-[CRED196]
-MOLLIE STICKNEY
+[SHMOB2F]
+~w~Bitte, Toni, hab Erbarmen. Ich ruf mit meinem letzten Groschen a-...
-[CRED197]
-STANTON SARJEANT
+[SH_MOB3]
+~w~Ist da Mr. Cipriani?
-[CRED198]
-LAURA WALSH
+[SHMOB3A]
+~w~Wer ist da? Woher haben Sie meine Nummer?
-[CRED199]
-MARK GARONE
+[SHMOB3B]
+~w~Geht man mit dem nötigen Willen zu Werke, so erreicht man allerlei.
-[CRED200]
-JOANNA SLY
+[SHMOB3C]
+~w~Das brauche ich ja Ihnen nicht zu sagen, Mr. Cipriani.
-[CRED201]
-ELIZABETH HOWELL
+[SHMOB3D]
+~w~Ich benötige Ihre Hilfe in einer delikaten Angelegenheit.
-[CRED202]
-ANA HERCULES
+[SHMOB3E]
+~w~Und für diese Hilfe werden Sie reich belohnt.
-[CRED203]
-SHIRLEY IRICK
+[SHMOB3F]
+~w~Alles Weitere, wenn Sie bei meiner Wohnung in Torrington eintreffen.
-[CRED204]
-KASHONA FIELDS
+[SH_MOB4]
+~w~Toni! Hier ist Sal!
-[CRED205]
-JOEL M. LILJE
+[SHMOB4A]
+~w~Du hast es geschafft! Nicht zu fassen!
-[CRED206]
-JOHN DIBENEDETTO
+[SHMOB4B]
+~w~Wir sind fast aus dem Schneider!
-[CRED207]
-NANCY GILES
+[SHMOB4C]
+~w~Komm zu mir. Wir müssen nur noch ein paar Kleinigkeiten regeln.
-[CRED208]
-RYAN CROY
+[SH_MOB5]
+~w~Toni? Donald hier.
-[CRED209]
-JENNIFER KOLBE
+[SHMOB5A]
+~w~Wenn der Panlantic-Deal zustande kommen soll, müssen wir, ähm...
-[CRED210]
-LIAM BURKE
+[SHMOB5B]
+~w~wie drück ich das am vorsichtigsten aus...
-[CRED211]
-SIGRID PREISSL
+[SHMOB5C]
+~w~ein kleines Areal in Fort Staunton 'räumen'.
-[CRED212]
-ANITA FITZSIMONS
+[SHMOB5D]
+~w~Mit 'wir' meinen Sie mich, stimmt's?
-[CRED213]
-PHILIPPA RASELLI
+[SHMOB5E]
+~w~Toni, du hast mich durchschaut.
-[CRED214]
-WIL QUESNEL
+[SHMOB5F]
+~w~Fahr zu 8-Ball. Er kann uns das nötige Werkzeug sicher beschaffen.
-[CRED215]
-FALKO BURKERT
+[SHMOB5G]
+~w~I'm sure he can provide us with the necessary hardware.
-[CRED216]
-SARA SEWELL
+[SH_MOB6]
+~w~Mein Alter? Hier ist 8-Ball.
-[CRED217]
-RADIO STATIONS AND MUSIC
+[SHMOB6A]
+~w~Dein Werkzeug liegt abholbereit.
-[CRED218]
-MUSIC CONSULTANCY
+[AHIT_H0]
+~w~Hast du nicht mehr drauf, Arschgesicht?
-[CRD218A]
-HEINZ HENN
+[AHIT_H1]
+~w~Zum Kuckuck! Wann geben die Idioten endlich auf?
-[CRD218B]
-STUART ROSS
+[AHIT_H2]
+~w~Leck mich am Arsch, Wichskopf!
-[CRED219]
-SOUNDTRACK CO-ORDINATOR
+[AHIT_H3]
+~w~Langsam geht ihr mir auf den Sack!
-[CRED220]
-TERRY DONOVAN
+[AHIT_BI]
+~w~Sei auf der Hut! Einer von Mas Killern ist in der Nähe!
-[CRED221]
-PRODUCER FOR ROCKSTAR GAMES
+[AHIT_TA]
+~w~Halte die Augen offen! Einer von Mas gedungenen Mördern ist in der Nähe!
-[CRED222]
-DAN HOUSER AND LAZLOW
+[AHIT_BU]
+~w~Pass auf! Einer von Mas Killern ist im Anmarsch!
-[CRED223]
-PRODUCER FOR ROCKSTAR NORTH
+[AHIT_AM]
+~w~Vorsicht! Einer von Mas Auftragskillern hat dich gesehen!
-[CRED224]
-CRAIG CONNER
+[AHIT_VA]
+~w~Sei wachsam! Einer von Mas Killern ist in der Gegend!
-[CRED225]
-ALLAN WALKER
+[AHIT_PO]
+~w~Gib Acht! Einer von Mas Killern will dich aufs Korn nehmen!
-[CRED226]
-LAZLOW
+[AHIT_CA]
+~w~Pass auf! Einer von Mas Attentätern nähert sich dir!
-[CRED227]
-DJ BANTER AND IMAGING
+[K_TKT]
+Schrottplatz-Challenge
-[CRED228]
-WRITTEN BY DAN HOUSER AND LAZLOW
+[K_TK2]
+~w~Fahr durch die Markierungen, um Punkte zu sammeln.
-[CRED229]
-FLASH FM
+[K_TK4]
+~w~Sammle möglichst viele Punkte, bevor die Zeit abgelaufen ist!
-[CRD229A]
-TONI-MARIA CHAMBERS
+[K_CD]
+~w~Du hast ~1~ Sekunden, um zu deinem ~b~Motorrad~w~ zurückzukehren!
-[CRD229B]
-IMAGING VOICE AND PRODUCTION-JEFF BERLIN
+[K_TKP1]
+~w~1 Punkt!
-[CRED230]
-SPECIAL THANKS TO
+[K_TKP2]
+~w~2 Punkte!
-[CRED231]
-TOMMY MOTTOLA,
+[K_TKP3]
+~w~3 Punkte!
-[CRED232]
-MICHELLE ANTHONY,
+[K_SC]
+Punkte
-[CRED233]
-STEVE BARNETT,
+[K_SCX]
+~w~Du hast ~1~ Punkte erzielt!
-[CRED234]
-CHUCK FLECKENSTEIN,
+[K_SCX1]
+~w~Du hast 1 Punkt erzielt!
-[CRED235]
-RITA LIBERATOR
+[K_HSC1]
+~w~Neuer High Score von ~1~ Punkten!
-[CRED236]
-MARTIN & CLAIRE LOGAN
+[K_HSC2]
+~r~Du konntest den High Score von ~1~ Punkten nicht übertreffen.
-[CRED237]
-SANDRA HUTTON
+[KRUSH]
+Du bekommst nun viermal so viel Geld, wenn du die Schrottpresse benutzt.
-[CRED238]
-CHRISTINE DAVIDSON
+[KRUSH2]
+Du bekommst nun achtmal so viel Geld, wenn du die Schrottpresse benutzt.
-[CRED239]
-ALAN, RED & BIGFOOT
+[TURFAIL]
+~r~JOB BEENDET!
-[CRED240]
-LE T
+[TKR1]
+Jagdszenen in 9mm
-[CRED241]
-COLIN DONALD
+[TKR2]
+Scooter Shooter
-[CRED242]
-KERRY STALLWOOD
+[TCKILL]
+Hits
-[CRED243]
-ALAN MCGREGOR
+[TCHEAL]
+Schaden
-[CRED244]
-CHRIS MORTON
+[TC2_1]
+~r~Du hast deinen Fahrer umgebracht!
-[CRED245]
-EMIL BUSSE
+[TC2_2]
+~r~Fahrzeug zerstört!
-[CRED246]
-EMILY BAILLIE
+[TC2_3]
+~r~Die Zeit ist um!
-[CRED247]
-KEVIN ARCHIBALD
+[TC_T_E]
+~w~Ziel eliminiert! $~1~
-[CRED248]
-MORAG KERR
+[TUP_BR]
+~w~Eliminiere so viele ~r~Ziele ~w~wie möglich innerhalb des Zeitlimits.
-[CRED249]
-CATH WALKER
+[TUP_BR2]
+~w~Eliminiere mehr als ~1~ ~r~Ziele ~w~für einen neuen High Score!
-[CRED250]
-ISO BAR
+[TUP_AD]
+~w~Du hast 3 Adrenalin-Pillen. Drücke die R1-Taste, um eine zu nehmen.
-[CRED251]
-WATERLINE
+[TUPSC1]
+~w~Neuer High Score von ~1~ Hits!
-[CRED252]
-NEWS CAFE
+[TUPSC2]
+~r~Du konntest den High Score von ~1~ Hits nicht übertreffen.
-[CRD251A]
-THE POND
+[MPWCS1]
+The Wedding List
-[CRD252A]
-PIVO
+[MPWCS2]
+Hey, wie geht's?
-[CRED253]
-BUDGET VIDEO RENTALS
+[MPWCS3]
+Hör mal, mein Sohn Joey heiratet!
-[CRED254]
-LORNA'S SCOOTER
+[MPWCS4]
+Ich hab ein klasse Mädchen für ihn ausgesucht, genau wie meine Maria... Kann's kaum erwarten, die beiden bekannt zu machen.
-[CRED255]
-GARETH MURFIN
+[MPWCS5]
+Ich will nur nicht, dass sie ihn mit einem von den Schrottkarren rumfahren sieht, die er in seiner Werkstatt zusammenflickt.
-[CRED256]
-ADDITIONAL ART
+[MPWCS6]
+Deshalb gehst du mal in der Stadt nach einem anständigen Auto schauen.
-[CRED257]
-TONY PORTER
+[MPWCS7]
+Soll dein Schaden nicht sein.
-[CRED258]
-CRAIG MOORE
+[MPTCS1]
+Tanks for the Memories
-[CRED259]
-CUT SCENE LIP-SYNC ANIMATION
+[MPTCS2]
+Hier Sal. Ich brauch einen, der die Bullen ablenkt und das machst du.
-[CRED260]
-COSGROVE HALL FILMS
+[MPTCS3]
+Ich hab am anderen Ende der Stadt einen Panzer stehen. Richte ordentlich Verwüstung damit an!
-[CRED261]
-PRODUCER - OWEN BALLHATCHET
+[MPTCS4]
+Die Leute sollen denken, sie hätten auf General Pattons Grab gepinkelt.
-[CRED262]
-SENIOR ANIMATOR - JON TURNER
+[MPTCS5]
+Dieses Ablenkungsmanöver ist sehr wichtig. Deshalb hab ich auch noch andere engagiert, um das Ding zu fahren.
-[CRED263]
-ANIMATORS - RICHARD DRUMM
+[MPTCS6]
+...aber ich zahl nur den, der am längsten hinterm Steuer hockt.
-[CRED264]
-DAVE BROWN
+[MPRCS1]
+Street Rage
-[CRED265]
-MAIR THOMAS
+[MPRCS2]
+Hier spricht Salvatore Leone! Euer nimmermüder Wohltäter.
-[CRED266]
-PRASHANT PATEL
+[MPRCS3]
+Glaubt dem Staatsanwalt kein Wort!
-[CRED267]
-AUDIO TECHNOLOGY CONSULTANT
+[MPRCS4]
+Ich bin ein guter und großzügiger Freund Liberty Citys. Deshalb sponsere ich dieses tolle Rennen heute.
-[CRED268]
-RIK EDE FOR GAMESOUND LTD.
+[MPRCS5]
+Wie viel kostet mich der Scheiß?
-[CRED269]
-DTS INTEGRATION SUPPORT
+[MPRCS6]
+WAS?! Holt den Notarzt! Ich hab Herzstechen!
-[CRED270]
-TED LAVERTY FOR DTS
+[MPHPCS2]
+Hier Sal... das FBI hat mein Telefon angezapft, deshalb kein Klartext
-[CRED271]
-CHRIS GREER FOR DTS
+[MPHPCS3]
+Unter dem Telefon ist eine Aktentasche voller Präsidentenporträts und eine Liste mit Namen. Jetzt rate, was ich will...
-[CRED272]
-JASON PAGE FOR SCEE
+[MPHPCS4]
+Warte! Nicht, dass du jetzt das Geld an die Wichser auf der Liste verteilst!
-[CRED273]
-RESEARCH AND ANALYSIS
+[MPHPCS5]
+Ich meine... der Anblick von RADIESCHEN, der hat doch was...
-[CRED274]
-VROCK
+[MPHPCS6]
+Warte! Nicht, dass du jetzt Radieschen kaufst! Die sollen sich die von... ähm...
-[CRED275]
-DJ: LAZLOW AS HIMSELF
+[MPHPCS7]
+Ach, leg die Wichser auf der Liste einfach alle um!
-[CRED276]
-IMAGING VOICE-JOE KELLY
+[DEB0]
+DEBUG 0
-[CRED277]
-IMAGING PRODUCTION-JONATHAN HANST
+[DEB1]
+DEBUG 1
-[CRED278]
-WAVE 103
+[DEB2]
+DEBUG 2
-[CRED279]
-DJ: ADAM FIRST-JAMIE CANFIELD
+[DEB3]
+DEBUG 3
-[CRED280]
-IMAGING VOICE-JEN SWEENEY
+[DEB4]
+DEBUG 4
-[CRED281]
-IMAGING PRODUCTION-JONATHAN HANST
+[NUM0]
+DEBUG 0 (~1~)
-[CRED282]
-FEVER 105
+[NUM1]
+DEBUG 1 (~1~)
-[CRED283]
-DJ: OLIVER 'LADYKILLER' BISCUIT-JULIUS DYSON
+[NUM2]
+DEBUG 2 (~1~)
-[CRED284]
-IMAGING VOICE MALE-ED MCMANN
+[NUM3]
+DEBUG 3 (~1~)
-[CRED285]
-IMAGING VOICE FEMALE-SHAWNEE SMITH
+[NUM4]
+DEBUG 4 (~1~)
-[CRED286]
-IMAGING PRODUCTION- LISTEN KITCHEN
+[CARS]
+'Autohändler'
-[CRED287]
-EMOTION 98.3
+[BIKE]
+'Motorradhändler'
-[CRED288]
-DJ: FERNANDO- FRANK CHAVEZ
+[RACE_0]
+Platzierung
-[CRED289]
-IMAGING VOICE-JEN SWEENEY
+[RACE_FL]
+~w~LETZTE RUNDE
-[CRED290]
-IMAGING PRODUCTION-JONATHAN HANST
+[RACE_X0]
+~w~Schnapp dir ein Auto und fahr zur ~y~Startlinie!
-[CRED291]
-RADIO ESPANTOSO
+[RACE_X1]
+~w~Schnapp dir ein Motorrad und fahr zur ~y~Startlinie!
-[CRED292]
-DJ: PEPE-TONY CHILRODES
+[RACE_X2]
+~w~Du brauchst ein Auto für dieses Rennen!
-[CRED293]
-WILDSTYLE
+[RACE_X3]
+~w~Du brauchst ein Motorrad für dieses Rennen!
-[CRED294]
-DJ: MISTER MAGIC AS HIMSELF
+[RACE_X4]
+~w~Du hast ~1~ Sekunden, um ein Auto zu finden.
-[CRED295]
-IMAGING VOICE-FRANK SILVESTRO
+[RACE_X5]
+~w~Du hast ~1~ Sekunden, um ein Motorrad zu finden.
-[CRED296]
-IMAGING PRODUCTION-LAZLOW
+[RACE_X6]
+~w~Du hast 1 Sekunde, um ein Auto zu finden.
-[CRED297]
-KCHAT
+[RACE_X7]
+~w~Du hast 1 Sekunde, um ein Motorrad zu finden.
-[CRED298]
-WRITTEN BY DAN HOUSER AND LAZLOW
+[RACE_T0]
+~r~Du bist nicht Erster geworden!
-[CRED299]
-PRODUCED AND EDITED BY LAZLOW
+[RACE_T1]
+~r~Du wirst disqualifiziert, weil du dein Auto verlassen hast.
-[CRED300]
-DJ AMY SHECKENHAUSEN -LEYNA WEBER
+[RACE_T2]
+~r~Einer der Fahrer ist gestorben - das Rennen wird abgeblasen!
-[CRED301]
-JEZ TORRENT-KEVIN MCKIDD
+[RACE_T3]
+~r~Du wirst disqualifiziert, weil du dein Motorrad verlassen hast.
-[CRED302]
-MANDY -COLLEEN CORBETT
+[RACE_Y3]
+~w~3
-[CRED303]
-MICHELLE CARAPADIS-MARY BIRDSONG
+[RACE_Y2]
+~w~2
-[CRED304]
-MR.ZOO-CARL DOWLING
+[RACE_Y1]
+~w~1
-[CRED305]
-GETHSEMANEE-LYNN LIPTON
+[RACE_Y]
+~w~LOS!
-[CRED306]
-CLAUDE MAGINOT-JOHN MAUCERI
+[RACE_Z1]
+~w~1. PLATZ
-[CRED307]
-BJ SMITH-LAWRENCE TAYLOR
+[RACE_Z2]
+~w~2. PLATZ
-[CRED308]
-THOR-FRANK FAVA
+[RACE_Z3]
+~w~3. PLATZ
-[CRED309]
-RADIO CALLERS
+[RACE_Z4]
+~w~LETZTER PLATZ
-[CRED310]
-COUZIN ED, JOSH CLARK, JASON BUHRMESTER, JUAN ALLER, WAYNE OLIVER, SUSAN LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN, DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP, KEITH BROADAS
+[RACE_R1]
+~w~REKORD: ~1~:~1~~1~ NEUER REKORD!
-[CRED311]
-LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN,
+[RACE_R2]
+~w~NEUER REKORD!
-[CRED312]
-DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP,
+[RACE_S0]
+~w~ZEIT: ~1~:~1~~1~
-[CRED313]
-KEITH BROADAS
+[RACE_S1]
+~w~BESTE RUNDE: ~1~:~1~~1~
-[CRED314]
-VCPR
+[RAC1]
+Low Rider Rumble
-[CRED315]
-WRITTEN BY DAN HOUSER AND LAZLOW
+[RAC2]
+Deimos Dash
-[CRED316]
-PRODUCED BY LAZLOW
+[RAC3]
+Wi-Cheetah Run
-[CRED317]
-MAURICE CHAVEZ-PHILLIP ANTHONY RODRIGUEZ
+[BIK1]
+Rotlicht-Racing
-[CRED318]
-JONATHAN FREELOADER- PATRICK OLSEN
+[BIK2]
+Torrington TT
-[CRED319]
-MICHELLE MONTANIUS-KELLY GUEST
+[BIK3]
+Gangsta GP
-[CRED320]
-REP. ALEX SHRUB- CHRIS LUCAS
+[TT1]
+Krasses Gelände
-[CRED321]
-CALLUM CRAYSHAW- SEAN MODICA
+[TT1_A1]
+~w~< STRECKE ~1~ >
-[CRED322]
-JOHN F. HICKORY- LJ GANSEN
+[TT1_B1]
+~w~Strecken-Ziel: ~1~:~1~
-[CRED323]
-PASTOR RICHARDS- DAVID GREEN
+[TT1_B1A]
+~w~Strecken-Ziel: ~1~:0~1~
-[CRED324]
-JAN BROWN- MAUREEN SILLIMAN
+[TT1_B2]
+~w~Streckenbestzeit: ~1~:~1~
-[CRED325]
-BARRY STARK- RENAUD SEBBANE
+[TT1_B2A]
+~w~Streckenbestzeit: ~1~:0~1~
-[CRED326]
-JENNY LOUISE CRAB- MARY BIRDSONG
+[TT1_B3]
+~w~Rundenbestzeit: ~1~:~1~
-[CRED327]
-KONSTANTINOS SMITH- KONSTANTINOS.COM
+[TT1_B3A]
+~w~Rundenbestzeit: ~1~:0~1~
-[CRED328]
-JEREMY ROBARD-PETER SILVESTRO
+[TT1_B4]
+~w~~1~:~1~
-[CRED329]
-RADIO COMMERCIALS
+[TT1_B4A]
+~w~~1~:0~1~
-[CRED330]
-WRITTEN BY DAN HOUSER AND LAZLOW
+[TT1_B5]
+~w~Neuer Streckenrekord! ~1~:~1~
-[CRED331]
-PRODUCED BY LAZLOW
+[TT1_B5A]
+~w~Neuer Streckenrekord! ~1~:0~1~
-[CRED332]
-ADDITIONAL JINGLES PRODUCED BY CRAIG CONNER
+[TT1_L]
+~r~Nicht verfügbar.
-[CRED333]
-COMMERCIAL VOICES:
+[A_PISTO]
+~w~< Pistole >
-[CRED334]
-ADAM DAVIDSON, ALEX ANTHONY, ALICE SALTZMAN, AMY SALZMAN, KATE DUKICH,
+[A_UZI]
+~w~< Micro SMG >
-[CRED335]
-ARAN RONICLE, BARB JONES, BEN KRECH, BRIAN THOMAS, BROCK YODER, CHRIS
+[A_AK]
+~w~< AK >
-[CRED336]
-FERRANTE, CRAIG CONNER, DAVE RYAN, DAVID GREEN, DORIS WOO, DOUGLAS
+[A_SNIPE]
+~w~< Präzisionsgewehr >
-[CRED337]
-HARRISON, ED MCMANN, FRANK CHAVEZ, FRANK FAVA, GENE HILGREEN, GREG
+[A_GRENA]
+~w~< Granaten >
-[CRED338]
-SCHWEIZER, HUNTER PLATIN, JAMES FERRANTE, JEFF BERLIN, JEFF ROSA, JOE KELLY,
+[A_ARMOU]
+~w~< Kugelsichere Weste >
-[CRED339]
-JOHN MAUCERI, JOSH CLARK, JULIE WEMYSS, KEVIN STRALEY, KIM GURNEY, LANCE
+[A_ROCKE]
+~w~< Raketenwerfer >
-[CRED340]
-WILLIAMS, LAURA PATERSON, LAZLOW, LISA ORTIZ, LORNA JORDAN, LUCIEN JONES,
+[A_SHOTG]
+~w~< Schrotflinte >
-[CRED341]
-MAUREEN SILLIMAN, MIKE FERRANTE JR., PETE GUSTIN, PETER SILVESTRO, RAFF
+[A_M4]
+~w~< M4 >
-[CRED342]
-CROLLA, RANDY JOHNSON, RICHARD KRUGER, RON REEVE, SHELLEY MILLER, SKY, TJ ALLARD
+[A_FLAME]
+~w~< Flammenwerfer >
-[CRD344A]
-AUDIO RECORDED AT DIGITAL ARTS STUDIOS,
+[A_MINIG]
+~w~< Minigun >
-[CRED344]
-NYC, TRACK 9 STUDIOS, NYC,
+[A_COST]
+~w~Preis: ~h~$~1~
-[CRED345]
-WEDDINGTON MULTIMEDIA, LOS ANGELES,
+[A_COST2]
+~w~Preis: ~h~$~1~ ~n~ ~r~Deine augenblickliche Waffe wird durch diese ersetzt.
-[CRD345A]
-SYNC SOUND, NYC AND RADIO LAZLOW, LONG ISLAND.
+[A_COST3]
+~w~Preis: ~h~$~1~ ~n~ ~r~Deine kugelsichere Weste ist in guter Verfassung.
-[CRED346]
-THANKS TO AXEL ERICSON AND WON LEE AT DIGITAL ARTS, PAUL VASQUEZ AT TRACK 9 STUDIOS, JOHN BOWEN AND JOHN HASSLER AT SYNC SOUND
+[A_COST4]
+~w~Preis: ~h~$~1~ ~n~ ~r~Das kannst du dir nicht leisten.
-[CRED347]
-MARK LLOYD
+[A_STOCK]
+~r~Nicht vorrätig.
-[CRED348]
-TIM BATES
+[A_VIC4]
+~w~Eine Pistole kostet normalerweise $240, aber die geht auf Vincenzo.
-[CRED349]
-KIT BROWN
+[A_DONS4]
+~w~Donald Love hat dafür schon bezahlt.
-[CRED350]
-ANDY MASON
+[A_NEDS4]
+~w~Irgendein Kirchentyp hat einen davon für dich reservieren lassen.
-[CRED351]
-PHIL DEANE
+[A_TALK1]
+~w~Ich hab alles, was man zur Selbstverteidigung braucht.
-[CRED352]
-PHIL ALEXANDER
+[A_TALK2]
+~w~Brauchen Sie auch 'nen Waffenschein?
-[CRED353]
-MATT HEWITT
+[A_TALK3]
+~w~Ausweis ist nicht nötig. Sie sehen vertrauenswürdig aus.
-[CRED354]
-DENBY GRACE
+[A_TALK4]
+~w~Probieren Sie doch unseren Schießstand hinterm Haus aus.
-[CRED355]
-ANTOINE CABROL
+[BENZ_GO]
+~w~Wechsle deine Kleidung!
-[CRED356]
-JONATHAN STONES
+[PIZ_B01]
+~w~Du hast ~1~ Sekunde, um zu dem ~b~Pizza-Moped~w~ zurückzukehren!
-[CRED357]
-MIKE BLACKBURN
+[PIZ_B02]
+~w~Du hast ~1~ Sekunden, um zu dem ~b~Pizza-Moped~w~ zurückzukehren!
-[CRED358]
-TIM MCGAFF
+[PIZ_F04]
+~r~Du bist nicht rechtzeitig zu dem Pizza-Moped zurückgekehrt!
-[CINCAM]
-Cinematic-Kamera
+[NDL_B01]
+~w~Du hast ~1~ Sekunde, um zu dem ~b~Nudel-Moped~w~ zurückzukehren!
-[RC4]
-'ROCK'N ROLL MIT RUMPO'
+[NDL_B02]
+~w~Du hast ~1~ Sekunden, um zu dem ~b~Nudel-Moped~w~ zurückzukehren!
-[LEGAL]
-~g~Schalte die kriminelle Bedrohung aus!
+[NDL_F04]
+~r~Du bist nicht rechtzeitig zu dem Nudel-Moped zurückgekehrt!
-[GA_2]
-Neuer Motor und neue Lackierung. Die Cops werden dich nicht identifizieren!
+[EXPO_D]
+~w~Hier, Finderlohn: $~1~! Wenn du alle auf der Liste abgeliefert hast, gibt's einen Bonus!
-[HELP15]
-Wenn zu Fuß unterwegs, drücke die ~h~~k~~PED_LOOKBEHIND~~w~, um ~h~nach hinten zu sehen~w~. Benutze den ~h~rechten Analog-Stick~w~, um dich ~h~umzusehen~w~.
+[PUPSPN]
+~w~POWERUP ERSCHIENEN!
-[FEC_LB4]
-Nach hinten sehen (R3-Taste)
+[PUPMEGA]
+~y~MEGA-SCHADEN!
-[PERPIC]
-Versteckte Päckchen gefunden
+[PUPREGN]
+~y~SCHNELLERHOHLUNG!
-[CO_ONE]
-Verstecktes Päckchen ~1~ von ~1~
+[PUPINVS]
+~y~UNSICHTBARKEIT!
-[GA_21]
-In dieser Garage bringst du keine Autos mehr unter.
+[PUPFREZ]
+~y~RAKETEN-SPECIAL!
-[CHEAT1]
-Cheat aktiviert
+[MPK]
+erledigte
-[CHEAT2]
-Waffen-Cheat
+[MPKHEAD]
+mit einem entscheidenden Treffer!
-[CHEAT3]
-Health-Cheat
+[MPNEED]
+braucht nur noch
-[CHEAT4]
-Panzerungs-Cheat
+[MPNAME]
+Name
-[CHEAT5]
-Fahndungslevel-Cheat
+[MPSCORE]
+Score
-[CHEAT6]
-Geld-Cheat
+[MPPING]
+Ping
-[CHEAT7]
-Wetter-Cheat
+[MPCPS]
+Checkpoints
-[USJ_ALL]
-ALLE MONSTER-STUNTS ABSOLVIERT!
+[MPTIME]
+Zeit
-[JAN]
-Jan
+[MPBONUS]
+Bonus
-[FEB]
-Feb
+[MPQG]
+Spiel beenden?
-[MAR]
-Mär
+[MPQUIT]
+Beenden
-[APR]
-Apr
+[MPCONT]
+Fortsetzen
-[MAY]
-Mai
+[MPHIGH]
+Längste Zeit
-[JUN]
-Jun
+[MPBY]
+von
-[JUL]
-Jul
+[MPOVER]
+Game Over
-[AUG]
-Aug
+[MPFIRST]
+war als Erster fertig
-[SEP]
-Sept
+[MPWITH]
+siegt mit $
-[OCT]
-Okt
+[MPHP05]
+~w~5 Sekunden, bis einer markiert wird.
-[NOV]
-Nov
+[MPHP04]
+~w~4 Sekunden, bis einer markiert wird.
-[DEC]
-Dez
+[MPHP03]
+~w~3 Sekunden, bis einer markiert wird.
-[DEFDT]
---:---:---- --:--:--
+[MPHP02]
+~w~2 Sekunden, bis einer markiert wird.
-[BONUS]
-~g~BONUS $~1~
+[MPHP01]
+~w~1 Sekunde, bis einer markiert wird.
+
+[RCRANGE]
+~w~Außer Reichweite!
+
+[CAD5_AA]
+Sal hier.
+
+[CAD5_AB]
+Diese Forellis haben mich geärgert! Dafür werden sie bezahlen!
+
+[CAD5_AC]
+Ich will, dass du ihre edelsten Karren klaust...
+
+[CAD5_AD]
+...und sie zu ihren Hauptkonkurrenten beim Sindacco-Autohof bringst.
+
+[CAD5_AE]
+Aber sorg dafür, dass die Forellis nicht aus Rache irgendwelche Sindacco-Karren klauen.
+
+[CAD5_AF]
+Capiche?
+
+[CAD4_AA]
+Ich bin's, Sal.
+
+[CAD4_AB]
+Ich bin Franco Forelli was schuldig, und du wirst mir helfen, die Schuld zu begleichen.
+
+[CAD4_AC]
+Drüben im Sindacco-Autohof haben sie ein paar richtig edle Karren.
+
+[CAD4_AD]
+Ich will, dass du die alle klaust und sie zum Forelli-Parkplatz bringst.
+
+[CAD4_AE]
+Und sorg dafür, dass keine Forelli-Fahrzeuge gestohlen werden, während du dort bist.
+
+[CAD4_AF]
+Hey, vermassle das bloß nicht.
+
+[MPC_000]
+Toni
+
+[MPC_001]
+'Lionel'
+
+[MPC_002]
+Cipriani
+
+[MPC_003]
+Chauffeur
+
+[MPC_004]
+13.
+
+[MPC_005]
+Smoking Toni
+
+[MPC_006]
+Fury
+
+[MPC_007]
+The King
+
+[MPC_008]
+Cocks
+
+[MPC_009]
+Flitzer
+
+[MPC_010]
+'T'
+
+[MPC_011]
+Dragon
+
+[MPC_012]
+JD
+
+[MPC_013]
+Der Sexsklave
+
+[MPC_014]
+Avery
+
+[MPC_015]
+Choc-Choc
+
+[MPC_016]
+8-Ball
+
+[MPC_017]
+Maria
+
+[MPC_018]
+'Hamfists'
+
+[MPC_021]
+Nr. 1
+
+[MPC_023]
+Hung Lo
+
+[MPC_025]
+Yamazaki
+
+[MPC_031]
+Officer '69'
+
+[MPC_032]
+Der Spezialist
+
+[MPC_034]
+G.I. Jones
+
+[MPC_035]
+Sam
+
+[FEA_FM0]
+HEAD RADIO
+
+[FEA_FM1]
+DOUBLE CLEF FM
+
+[FEA_FM2]
+K-JAH
+
+[FEA_FM3]
+RISE FM
+
+[FEA_FM4]
+LIPS 106
+
+[FEA_FM5]
+RADIO DEL MUNDO
+
+[FEA_FM6]
+MSX 98
+
+[FEA_FM7]
+FLASHBACK FM
+
+[FEA_FM8]
+THE LIBERTY JAM
+
+[FEA_FM9]
+LCFR
+
+[MRACELA]
+Runde
+
+[DTB_01]
+~w~Verteidige eure Basis gegen feindliche Angreifer.
+
+[DTB_02]
+~w~Verteidige eure Autos unter allen Umständen.
+
+[CAD2_AB]
+~w~Gute Nachrichten - die Forellis und die Sindaccos gehen sich gerade wieder an die Gurgel!
+
+[CAD2_AC]
+~w~Beide wollen sämtliche Autohäuser in Liberty übernehmen.
+
+[CAD2_AD]
+~w~Und da wir vorige Woche den Forellis 'assistiert' haben...
+
+[CAD2_AE]
+~w~...sollen jetzt die Sindaccos zu ihrem Recht kommen.
+
+[CAD2_AF]
+~w~Hilf den Sindaccos, den Forelli-Autohof auszuräumen.
+
+[POMOB6B]
+~w~Ich schwör's dir, die Schlampe lässt sich nur blicken, wenn sie wieder Geld braucht!
+
+[POMOB2A]
+~w~Salvatore hat mir deine Nummer gegeben... naja, ich hab sie in seinem Adressbuch gefunden. Aber egal!
+
+[POMOB2B]
+~w~Du bist doch sein neuer Fiffi, oder? Und ich will mit dir Gassi gehen.
+
+[POMOB2C]
+~w~Ich erwarte dich in Kürze.
+
+[GS_RGUN]
+MIT WAFFEN STARTEN:
+
+[TUSHTK]
+Angel auf Abwegen
+
+[SC_WICH]
+High-Score bei 'Angel auf Abwegen'
+
+[NE_WIFI]
+Ein Netzwerkfehler ist aufgetreten. Der WLAN-Schalter ist AUS. Bitte schalte den WLAN-Schalter AN, um Multiplayer-Spiele zu spielen.
+
+[BNDRAC0]
+Thrashin' RC
+
+[BNDRAC1]
+Ragin' RC
+
+[BNDRAC2]
+Chasin' RC
+
+[GS_G1]
+LIBERTY CITY SURVIVOR
+
+[GS_G2]
+STREET RAGE
+
+[GS_G3]
+PROTECTION RACKET
+
+[GS_G4]
+GET STRETCH
+
+[GS_G5]
+TANKS FOR THE MEMORIES
+
+[GS_G6]
+THE HIT LIST
+
+[GS_G7]
+THE WEDDING LIST
+
+[TRCR1]
+~w~1
+
+[TRCR2]
+~w~2
+
+[TRCR3]
+~w~3
+
+[TRCRGO]
+~w~LOS!
+
+[GA_16]
+~w~Das Umspritzen ist gratis.
+
+[NEW_TAX]
+~w~Taxi-Mission abgeschlossen! Mean Street Taxis haben ein neues Fahrzeug zu ihrem Depot in Trenton geliefert bekommen!
+
+[EXPO_2]
+~w~Wenn du ihnen die Fahrzeuge, die sie brauchen, in gutem Zustand lieferst, erhältst du eine Belohnung.
+
+[FEMP_NC]
+Netzwerkverbindungen werden aufgebaut...Bitte warten
+
+[C1TGSUB]
+die R3-Taste
+
+[C2TGSUB]
+R3-Taste
+
+[C3TGSUB]
+~S~
+
+[C2VEHN]
+R1-Taste
+
+[C2VECRS]
+L3-Taste
+
+[C3VECRS]
+~O~
+
+[C2PDCWE]
+L2-Taste und R2-Taste
+
+[C3PDCWE]
+L2-Taste und R2-Taste
+
+[BENZ_LA]
+~w~Die ~h~Anwalts-Aufmachung~w~ ist jetzt im Versteck verfügbar.
+
+[BENZ_TR]
+~w~Deine ~h~Freizeitkleidung~w~ ist jetzt im Versteck verfügbar.
+
+[SLH1_OU]
+~w~Du wirst eine ~h~Anwalts-Aufmachung~w~ brauchen, um zu Sal gelassen zu werden.
+
+[SLH1_OR]
+~w~Du brauchst eine ~h~Anwalts-Aufmachung~w~, um Sal besuchen zu können.
+
+[L_TRN_1]
+~w~Mit der ~h~Hochbahn~w~ kannst du in Portland herumfahren. Drücke~h~ ~k~ ~VEEE~~w~, um in einen Zug ein- oder auszusteigen.
+
+[HELP2]
+~w~Drücke~h~ ~k~ ~PDSPR~~w~, um zu ~h~sprinten.
+
+[STMOB5A]
+~w~Toni, Sal.
+
+[SCH_TK7]
+~r~Du hast den Schrottplatz verlassen.
+
+[STMOB3C]
+~w~Aber jetzt tanzt das Rathaus bald nach unserer Pfeife.
+
+[SALH3A]
+~w~Besorg ein Fahrzeug für Donald.
+
+[MPCASH]
+Geld
+
+[MPCARS]
+Autos
+
+[CRUSHED]
+Schrottwert $~1~
+
+[BENZ_BO]
+~w~Zieh dir im Versteck frische ~h~Unterwäsche~w~ an.
+
+[BENZ_EL]
+~w~Der ~h~King-Overall~w~ ist jetzt im Versteck verfügbar.
+
+[BENZ_CO]
+~w~Ein ~h~Cox-Maskottchen-Kostüm~w~ ist jetzt im Versteck verfügbar.
+
+[BENZ_HE]
+~w~Avenging Angel-Mission: Shoreside - Level 15 abgeschlossen! Das ~h~Superheldenkostüm~w~ ist jetzt im Versteck verfügbar.
+
+[BENZ_DR]
+~w~Das ~h~Dragon-Outfit~w~ ist jetzt im Versteck verfügbar.
+
+[TRTIT]
+Triaden-Trial
+
+[TRRACE2]
+~w~Vorsicht! Die Wong-Brüder sehen fies aus...
+
+[MPTOTAL]
+Gesamtzeit
+
+[TOUR_W6]
+~w~Einzigartiger gepanzerter Landstalker in deinem Versteck angeliefert. Du solltest ihn in deiner Garage aufbewahren!
+
+[OUTFITS]
+Freigeschaltete Outfits
+
+[MPHPMAR]
+ist als Ziel markiert worden.
+
+[FEC_CWT]
+Waffen/Ziele auswählen
+
+[EXPO_1]
+~w~Love Media braucht Preise zum Verschenken für ihre 'Koole-Karren- Verschenk'-Konkurrenz!
-[HORN1]
-Drück die ~h~~k~~VEHICLE_HORN~~w~, um zu ~h~hupen.
+[PCJLAP]
+~w~Neuer Rekord von ~1~ Sekunden!
-[HORN2]
-Drück die ~h~~k~~VEHICLE_HORN~~w~, um zu ~h~hupen.
+[MPBLCAR]
+Blaues Auto:
-[HORN3]
-Drück die ~h~~k~~VEHICLE_HORN~~w~, um zu ~h~hupen.
+[MPRDCAR]
+Rotes Auto:
+
+[RAMP_A]
+~w~ALLE SPEZIALAUFTRÄGE ERFÜLLT! $~1~
+
+[FET_SAV]
+Spiel speichern
+
+[FET_WRN]
+Achtung! Einer oder mehrere Cheats wurden aktiviert. Dies könnte Auswirkungen auf den Spielstand haben. Es wird empfohlen, dieses Spiel nicht zu speichern.
+
+[HELP39]
+~w~Mit~h~ ~k~ ~VEWEI~ ~w~verlagerst du dein Gewicht auf einem Motorrad.
[FEC_EXV]
-In Fahrzeug ein- und aussteigen.
+Fahrzeug verlassen
-[TAXI_M]
-'TAXIFAHRER'
+[MPCOLL]
+PKW ZU SAMMELN:
-[COP_M]
-'BÜRGERWEHR'
+[FEMP_HG]
+SPIEL HOSTEN
-[FIRE_M]
-'FEUERWEHRMANN'
+[FEMP_JG]
+MITSPIELEN
-[AMBUL_M]
-'SANITÄTER'
+[K_TK3]
+~w~1 Punkt für ~g~grün~w~, 2 Punkte für ~y~gelb~w~ und 3 Punkte für ~r~rot.
-[HJ_IS]
-IRRSINNS-STUNT-BONUS: $~1~
+[FEMP_GJ]
+SPIEL ZUM MITSPIELEN AUSWÄHLEN
-[HJ_PIS]
-SUPER IRRSINNS-STUNT-BONUS: $~1~
+[FEMP_H]
+HOST:
-[HJ_DIS]
-DOPPELTER IRRSINNS-STUNT-BONUS: $~1~
+[FEMP_P]
+SPIELER:
-[HJ_PDIS]
-SUPER-DOPPEL-IRRSINNS-STUNT-BONUS: $~1~
+[FEMP_HN]
+EIN NEUES SPIEL HOSTEN
-[HJ_TIS]
-DREIFACHER IRRSINNS-STUNT-BONUS: $~1~
+[PO_MOB4]
+~w~Hey, ich bin's, Vincenzo.
-[HJ_PTIS]
-SUPER-DREIFACH-IRRSINNS-STUNT-BONUS: $~1~
+[POMOB4D]
+~w~Los. Komm bei mir vorbei. Ich hab was für dich.
-[HJ_QIS]
-VIERFACHER IRRSINNS-STUNT-BONUS: $~1~
+[POMOB4E]
+~w~Ach, ja? Was denn? Ein Paar Zementstiefel?
-[HJ_PQIS]
-SUPER-VIERFACH-IRRSINNS-STUNT-BONUS: $~1~
+[POMOB4H]
+~w~Nein. Komm, Toni, was da passiert ist, tut mir echt Leid.
-[FESZ_LS]
-Ladevorgang beendet.
+[FEMP_F]
+VOLL
-[HELI_1A]
-Teste dein Können mit dem 'Sparrow'. Probiere, wie schnell du den Kurs abfliegen kannst.
+[FEMP_R]
+STANDARD WIEDERHERSTELLEN
-[HELI_1B]
-Kurs absolviert!
+[YOU]
+DU
-[HELIODD]
-Helikopter-Jobs
+[NE_POW]
+Ein Netzwerk-Fehler ist aufgetreten. Der POWER-/HOLD-Schalter wurde AUSGESCHALTET.
-[LAW]
-DIE ANWALTSMISSIONEN
+[FEMP_SQ]
+Wirklich ein Multiplayer-Spiel starten?
-[LAW1_1]
-~g~Besorge dir neue Sachen in Rafaels Shop.
+[BIKETXT]
+~w~Hogs & Cogs hat nur zwischen 08:00 Uhr und 18:00 Uhr offen. Komm dann wieder!
-[LAW4_6]
-Nieder mit der Geschäftsleitung!
+[RACE_2]
+Zeit
-[LAW4_7]
-Tod den Bossen!
+[FEF_CO2]
+Wähle das Steuerungs-Setup, das zu deinem Spielstil am besten passt
-[LAW4_8]
-Kampf, Kampf, Kampf, Kampf!
+[TYREPOP]
+Zerschossene Reifen
-[LAW4_9]
-Mehr Urlaub, weniger Arbeit!
+[FE_INIP]
+Initialisiere und lade Pausenmenü. Bitte warten.
-[LAW4_11]
-Kampf, Kampf, Kampf, Kampf!
+[DON4EX3]
+~w~Nimmst du Schecks?
-[LAW4_12]
-Es lebe die Revolution!
+[CRUSH]
+~w~Mach Geld mit Schrott! Bestimmte Fahrzeuge werden verschrottet, wenn sie in der von Reifen markierten Zone abgestellt werden.
-[GENERAL]
-DIE COLONEL-MISSIONEN
+[ANG_15]
+~w~Eine Bande Idioten hat einem armen Kerl das Auto geklaut... denen zeigen wir's!
-[GEN3_4]
-Tommy Vercetti. Los, komm...
+[CDERROR]
+Bitte warten...
-[GEN3_13]
-Was ist los, Mann?! Steig auf das Dach gegenüber im Hof bevor sie kommen!
+[FEC_LOF]
+Nach vorne schauen
-[GEN3_17]
-Mist! Willst du mich umbringen?!
+[FEC_LFA]
+Schauen/Feinzielen
-[GEN3_21]
-~g~Er hat Diaz' Geld! Stelle ihn und hole es zurück!
+[MPHELP]
+HILFE
-[GEN3_24]
-~r~Diaz hat's erwischt! Du hast versagt!
+[C1VEHN]
+L1-Taste
-[GEN3_26]
-~r~Du hast Diaz erwischt!
+[C3VEHN]
+L3-Taste
-[GEN3_27]
-~r~Du hast Diaz' Bodyguards erwischt!
+[MPOBJ]
+MISSIONSZIEL:
-[GEN3_31]
-~g~Begib dich zum Übergabeort und pass auf Diaz auf.
+[MPLEG]
+RADARLEGENDE:
-[GEN3_32]
-~g~Begib dich zu deinem Beobachtungsposten auf dem Dach des Gebäudes gegenüber von Lance.
+[GS_O1]
+Jeder für sich! Erledige die anderen Spieler!
-[COKE]
-DIE KOKS-BARON-MISSIONEN
+[GS_O2]
+Fahr die Checkpoints ab und erreiche die Ziellinie als Erster.
-[COK1_3]
-Ich hoffe, du brichst dir das Genick!
+[GS_OD3]
+Verteidige die vier Limos in eurer Basis vor heranrückenden Angreifern.
-[COK1_6]
-Ich hab diese Idioten satt!
+[GS_O6]
+Erledige schnellstmöglich den 'markierten' Spieler. Der 'Markierte' muss überleben, so lange er kann.
-[COK2_7]
-Siehst du diese Bojen? Versuch, die Lichter auszuschießen.
+[GS_O7]
+Schnapp dir über die Stadt verstreute Autos, dann fahr sie in die bereitstehenden Container.
-[COK2_10]
-Eines ist sicher: Du schießt besser als du laberst.
+[FHOSE_2]
+~h~~k~ ~VEWEA~~w~, um mit der Kanone zu zielen.
-[COK2_11]
-Danke. Du bist ein echter Charmeur.
+[MPI01]
+POWERUP
-[COK2_12]
-Ich weiß, Tommy.
+[MPI02]
+GESUNDHEIT
-[COK2_18]
-Stehst du auf Kenny Loggins?
+[MPI03]
+PANZERUNG
-[COK2_19]
-Mann, ich liebe diese Scheibe.
+[MPI04]
+WAFFE
-[COK2_26]
-~r~Du hast Lance erwischt!
+[SPIDER]
+Deimos SP
-[COK3_1]
-Nicht schießen, Mann!
+[PONTIAC]
+Phobos Vt
-[COK3_2]
-Was ist in dem Zeug drin?
+[FORELLI]
+Forelli ExSess
-[COK3_3]
-Er klaut das Boot. Mist!
+[AHIT_LO]
+Fürs Erste bist du ihn vielleicht los, aber er wird wiederkommen, um den Job zu beenden.
-[COK3_4]
-Hilfe! Irgendein Irrer stiehlt das Boot, Mann!
+[FEM_ROF]
+Radio aus
-[COK4_W]
-Uff! Das ist der letzte.
+[GA_1]
+~w~Das soll wohl 'n Witz sein! Das Ding rühr ich nicht an!
-[COK4_X]
-Ich lass die Mühle an.
+[TRA_NEX]
+Nächster Halt:
-[COK4_Y]
-Ich glaube, wir haben ein paar neue Freunde.
+[TRA_CUR]
+Derzeitiger Halt:
-[COK4_2]
-Ja.
+[PAGEB2]
+~w~Die ~h~Schrotflinte~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_6]
-Weißt du, wo's lang geht?
+[PAGEB3]
+~w~Die ~h~Kugelsichere Weste~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_7]
-Haben wir uns verfahren?
+[PAGEB4]
+~w~Die ~h~SMG~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_8]
-Wir haben Konkurrenz bekommen!
+[PAGEB5]
+~w~Die ~h~.357~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_9]
-Knöpf sie dir vor!
+[PAGEB6]
+~w~Das ~h~M4~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_9A]
-Zeit für den Lance Vance Dance!
+[PAGEB7]
+~w~Das ~h~Präzisionsgewehr mit Laservisier~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_10]
-Die sind Kleinholz! Und Fischfutter.
+[PAGEB8]
+~w~Der ~h~Flammenwerfer~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_11]
-Geschafft! Die anderen Schiffchen taugen nicht viel.
+[PAGEB9]
+~w~Der ~h~Raketenwerfer~w~ ist jetzt in deinem Versteck verfügbar!
-[COK4_17]
-Die wollen's wissen!
+[PAGE_01]
+Erledige ~1~ Triaden in 2 Minuten!
-[COK4_18]
-Ich hab nasse Füße! WIR KRIEGEN WASSER INS BOOT!
+[PAGE_02]
+Sprenge ~1~ Fahrzeuge in 2 Minuten!
-[COK4_21]
-Achtung, Brücke!
+[PAGE_03]
+Heize ~1~ Diablos in 2 Minuten ein!
-[COK4_22]
-Raus! Das Ding geht hoch!
+[PAGE_04]
+Erledige ~1~ Leone-Mafiosi in 2 Minuten!
-[COK4_23]
-Gut geschossen.
+[PAGE_05]
+Fackle ~1~ Fahrzeuge in 2 Minuten ab!
-[COK4_29]
-~r~Du hast Lance erwischt!
+[PAGE_06]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[ASS1_6]
-Geh nur, Tommy, ich komm schon zurecht!
+[PAGE_07]
+Zerstöre ~1~ Fahrzeuge in 2 Minuten!
-[ASS1_7]
-Das ist für euch, ihr verdammten Mörder!!
+[PAGE_08]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[ASS1_8]
-Ich komm hier nicht weg!
+[PAGE_09]
+Heize ~1~ Yakuza in 2 Minuten ein!
-[ASS1_9]
-Ich bin da, Tommy!
+[PAGE_10]
+Erledige ~1~ Forellis in 2 Minuten!
-[ASS1_10]
-Hey, das ist aber ein herzallerliebstes Beet.
+[PAGE_11]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[ASS1_11]
-Hey Tommy, krieg ich ein Zimmer mit Blick auf die Bucht?
+[PAGE_12]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[ASS1_12]
-Schön hohe Decken hat's hier...
+[PAGE_13]
+Erledige ~1~ Yakuza in 2 Minuten!
-[ASS1_3]
-Lance! Ich brauche Deckung!
+[PAGE_15]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[ASS1_4]
-Diaz muss drinnen sein!
+[PAGE_16]
+Zerstöre ~1~ Fahrzeuge in 2 Minuten!
-[ASS1_5]
-Lance!
+[PAGE_17]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[ASS1_15]
-~g~Stürme die Villa und erledige Diaz!
+[PAGE_18]
+Zerstöre ~1~ Fahrzeuge in 2 Minuten!
-[ASS1_17]
-~g~Es führen mehrere Wege in die Villa.
+[PAGE_20]
+Dein Job: ~1~ Fußgänger in 2 Minuten!
-[TAXWAR]
-TAXI-KRIEG-MISSIONEN
+[MPI05]
+FEIND
-[NOTAXI]
-~g~Du brauchst ein Kaufman-Taxi, um diese Mission zu aktivieren.
+[MPI07]
+CHECKPOINT
-[TAXW1_5]
-~g~Du musst in einem Kaufman-Taxi sitzen!
+[MPI08]
+NÄCHSTER
-[TAX2_4]
-Auf geht's, Tommy.
+[MPI09]
+ZIELLINIE
-[TAX2_5]
-Polier ihm die Visage.
+[MPI10]
+FAHRER
-[TAX2_6]
-Der hat nicht mal eine Lizenz.
+[MPI11]
+BASIS
-[TAX2_7]
-Verdammte Limo-Services.
+[MPI12]
+FEINDBASIS
-[TAXW3_1]
-~g~Hole Mercedes ab.
+[MPI13]
+PANZER
-[RACE1]
-~g~3...2...1...LOS, LOS, LOS!
+[MPI14]
+DER MARKIERTE
-[RACE2]
-~g~3
+[MPI15]
+AUTO
-[RACE3]
-~g~2
+[MPI16]
+CONTAINER
-[RACE4]
-~g~1
+[FEI_LEG]
+Legende An/Aus
-[RACE5]
-~g~LOS!
+[SR_ON]
+Jetzt da du dir im Straßenrennzirkus einen Namen gemacht hast, achte auf Herausforderer, die dich kontaktieren wollen.
-[FIRST]
-~b~1.
+[FEC_FRA]
+Manuelles Zielen
-[SECOND]
-~b~2.
+[KAR_ON]
+Schnapp dir das Feuerwehrauto wieder, wenn du versuchen willst, deine Bestzeit zu unterbieten.
-[THIRD]
-~b~3.
+[DON2EX5]
+~w~8-Ball rührt keinen Finger, solange du ihm nicht $20.000 zahlst
-[FOURTH]
-~b~4.
+[PCJTIT]
+VORWÄRTS, Faggio!
-[RACETM]
-~b~ZEIT: ~1~:~1~
+[FEA_MUS]
+LAUTSTÄRKE RADIO:
-[RACETM2]
-~b~ZEIT: ~1~:0~1~
+[FEST_GO]
+Bestzeit bei 'Vorwärts Faggio'
-[RACEFA]
-~r~Du hast das Rennen verloren!
+[RC_1]
+~w~Erledige mehr als ~1~ Triaden - jeder einzelne bringt dir einen Zeitbonus!
-[TEX1_5]
-~r~Er ist entkommen!
+[EXPO_C]
+~w~Danke! Du hast alle geliefert. Vor deiner Wohnung in Newport wartet ein netter Bonus auf dich!
-[SEG3_1]
-ZEIT:
+[TRRACE0]
+~w~Rase durch die ~y~Checkpoints~w~ und komm lebendig am Streckenende an!
-[SEG3_2]
-~g~Begib dich zu dem Transporter mit dem RC Raider und den Zeitzünder-Bomben.
+[RACE_P1]
+~w~1.
-[SEG3_3]
-~g~Du musst den RC Raider benutzen, um 4 Bomben zu 4 Zielzonen auf dem Grundstück zu bringen.
+[RACE_P2]
+~w~2.
-[SERG3_5]
-~g~Du kannst immer nur 1 Bombe transportieren und kannst erfolgreich platzierten Bomben nicht wieder aufnehmen.
+[RACE_P3]
+~w~3.
-[SEG3_7]
-~g~Sobald du die ERSTE Bombe platziert hast, läuft der Timer des Zeitzünders an. Du musst dann alle Bomben innerhalb dieses Zeitraums platzieren.
+[RACE_P4]
+~w~4.
-[SEG3_8]
-~g~Alle 4 Bomben müssen in den 4 Zielzonen platziert werden, um die Mission zu erfüllen und das Gebäude zu demolieren.
+[OUTF_00]
+~w~Freizeitkleidung
-[SEG3_9]
-~g~Zielzone getroffen! Noch 3 Bomben.
+[OUTF_01]
+~w~Leone-Anzug
-[SEG3_10]
-~g~Zielzone getroffen! Noch 2 Bomben.
+[OUTF_03]
+~w~Avenging Angels-Tarnanzug
-[SEG3_11]
-~g~Zielzone getroffen! Noch 1 Bombe.
+[OUTF_04]
+~w~Chauffeurslivree
-[SEG3_12]
-~r~Ziel verfehlt. Hol dir eine Bombe!
+[OUTF_05]
+~w~Anwaltsanzug
-[SEG3_13]
-~g~Wirf die Bombe in einer Zielzone ab.
+[OUTF_06]
+~w~Smoking
-[SEG3_14]
-~r~Die Zeit ist um. Demolierung des Gebäudes fehlgeschlagen.
+[OUTF_07]
+~w~'The King'-Overall
-[SEG3_15]
-~r~Dein RC Raider ist zerstört. Wie willst du jetzt die Bomben transportieren?
+[OUTF_08]
+~w~Cox-Maskottchen-Kostüm
-[AVERY]
-AVERY-MISSIONEN
+[OUTF_09]
+~w~Unterwäsche
-[ASM]
-ATTENTÄTERMISSIONEN
+[OUTF_10]
+~w~Superheldenkostüm
-[ASM_1]
-ATTENTÄTERMISSION 1
+[OUTF_11]
+~w~'Dragon'-Overall
-[ASM1_1]
-~g~Mr. Teal, Ihre Hilfe bei der Beseitigung der Landeier war äußerst wertvoll. Ich habe noch mehr Arbeit, die eine eher 'zupackende' Art verlangt. Ihr nächster Job klebt unter dem Telefon.
+[SLTVMON]
+Bei Slash-TV insgesamt verdientes Geld
-[ASM1_2]
-~g~Begib zu dich dem Fernsprecher vor dem Einkaufszentrum in Washington.
+[DBIKEAI]
+Größte Sprunghöhe (m)
-[ASM1_3]
-~g~Carl Pearson, Pizza-Lieferant. Er darf seine Lieferungen nicht durchführen.
+[MPC_039]
+Vincenzo
-[ASM1_4]
-~g~Schalte den Pizza-Lieferanten aus, bevor er seine Lieferungen abschließt.
+[MPC_040]
+Salvatore
-[ASM_2]
-ATTENTÄTERMISSION 2
+[MPC_041]
+Toshi
-[ASM_3]
-ATTENTÄTERMISSION 3
+[MPC_042]
+Toshiko
-[ASM3_A]
-Marcus Hammond, Franco Carter, Dick Tanner, Nick Kong und Stuntman Driver gehören zu einem europäischen Syndikat und planen einen Überfall.
+[MPC_043]
+Ophelia Lardaz
-[ASM3_B]
-Sie sind alle bereits in Position. Schalten Sie sie aus, bevor es losgeht. Sie haben 9 Minuten. Ich habe in der Nähe Waffen deponiert, die Sie brauchen werden.
+[MPC_044]
+Ed Banger
-[ASM3_1]
-~g~Hol dir die Waffe, die Mr. Black für dich deponiert hat.
+[MPC_045]
+Robin Emblind
-[ASM3_2]
-~g~Geh nicht zu dicht an die Zielperson heran, sonst bemerkt sie dich.
+[MPC_046]
+Mrs. Menalot
-[ASM3_3]
-~g~Es geht schneller, wenn du dir eine günstige Position nahe ihrem Standort suchst und zuschlägst, ohne gesehen zu werden.
+[MPC_047]
+Hugh Jazz
-[ASM3_4]
-~g~Er hat dich gesehen. Du musst ihn irgendwie ausschalten!
+[MPC_048]
+Wayne
-[ASM3_5]
-~g~Marcus Hammond befindet sich bei den Werbetafeln in Washington Beach.
+[MPC_049]
+Paulie
-[ASM3_6]
-~g~Franco Carter befindet sich bei DBP Security nahe dem Ocean Drive.
+[MPC_050]
+Anne Job
-[ASM3_7]
-~g~Dick Tanner ist in der Nähe des Juweliers in Vice Point.
+[MPC_051]
+Randy Boner
-[ASM3_8]
-~g~Nick Kong befindet sich nähe Washington Beach.
+[MPC_052]
+Owen Monie
-[ASM3_9]
-~g~Stuntman Driver ist in Washington.
+[MPC_053]
+Ekant Sing
-[ASM3_10]
-Du hast nicht alle ausgeschaltet.
+[MPC_054]
+M.T. Head
-[ASM_4]
-ATTENTÄTERMISSION 4
+[MPC_055]
+Rick O'Shea
-[ASM4_1]
-~g~Hol dir das Gewehr, das im Laub vor dem Flughafen-Terminal für dich deponiert wurde.
+[MPC_056]
+Arden Long
-[ASM4_2]
-~g~Verfehle dein Ziel nicht, du alarmierst sonst die Leibwächter. Und bleib auf Distanz, damit er dich nicht bemerkt.
+[MPC_057]
+Ann Thrax
-[ASM4_3]
-~g~Beobachte die Frau über den Check-in-Schaltern im Terminal. TU IHR NICHTS.
+[MPC_058]
+Fay Slift
-[ASM4_4]
-~g~Erledige den Mann, dem sie den Aktenkoffer gibt, aber erst, NACHDEM ER IHN GENOMMEN HAT. Hole den Koffer und bringe ihn ins Ammu-Nation Downtown.
+[MPC_059]
+Mona Lott
-[ASM4_5]
-Hol dir den Aktenkoffer.
+[C0VEACC]
+~X~
-[ASM4_6]
-~g~Bring den Aktenkoffer ins Ammu-Nation Downtown.
+[C1VEACC]
+~X~
-[ASM4_7]
-~r~Du hast die Frau erwischt, du Idiot!
+[C2VEACC]
+~X~
-[ASM4_8]
-~r~Die Zielperson hat gehört, wie du geschossen hast. Der Deal ist geplatzt!
+[C3VEACC]
+rechten Analog-Stick oben
-[ASM4_9]
-~r~Die Zielperson hat das Flugzeug bestiegen!
+[C0VEBRK]
+~S~
-[ASM4_11]
-~r~Die Zielperson hat dich gesehen! Der Deal ist geplatzt!
+[C1VEBRK]
+~S~
-[ASM4_13]
-~g~Er hat dich bemerkt und flieht. Schalte ihn aus und hol dir den Aktenkoffer!
+[C2VEBRK]
+~S~
-[ASM4_14]
-~g~Der Distanz-Balken am oberen rechten Bildschirmrand zeigt dir, wie nahe du der Zielperson bist. Lass ihn nicht voll werden, sonst sieht sie dich.
+[C3VEBRK]
+rechten Analog-Stick unten
-[ASM_5]
-ATTENTÄTERMISSION 5
+[C0VEHB]
+R1-Taste
-[KICK]
-KICKSTART
+[C1VEHB]
+R1-Taste
-[KICK1_3]
-~g~Anzahl, wie oft der Fuß abgesetzt wurde: ~1~
+[C0VEEE]
+~T~
-[KICK1_4]
-~g~Zeitstrafe: ~1~ Sekunden
+[C1VEEE]
+~T~
-[BANK]
-BANK-MISSIONEN
+[C2VEEE]
+L1-Taste
-[BANK1]
-BANK-MISSION 1
+[C3VEEE]
+~T~
-[BANK2]
-BANK-MISSION 2
+[C0VEWEP]
+~O~
-[BJM2_21]
-~g~Triff so viele Ziele als möglich, solange deine Munition reicht.
+[C1VEWEP]
+~O~
-[BANK3]
-BANK-MISSION 3
+[C2VEWEP]
+~O~
-[BJM3_1]
-~g~Besorg dir ein schnelles Auto und fahre an den Start.
+[C3VEWEP]
+R1-Taste
-[BNK4_2A]
-Die Mechaniker haben das Baby super hergerichtet.
+[C0PDSPR]
+~X~
-[BNK4_3G]
-Oh, Mist, jetzt haben wir die Cops am Hals!
+[C1PDSPR]
+~X~
-[BNK4_3H]
-Und wir sind noch nicht mal da.
+[C0SNZI]
+~S~
-[BNK4_3K]
-Also, erst mal müssen wir die Cops abschütteln...
+[C1SNZI]
+~S~
-[BNK4_3L]
-Großer Gott, Tommy, willst du uns alle umbringen?!
+[C0SNZO]
+~X~
-[BNK4_3N]
-Alles, was ich gern habe, geht kaputt!
+[C1SNZO]
+~X~
-[BNK4_26]
-Verdammt! Da sind sie schon!
+[C0PDFW]
+~O~
-[BNK4_32]
-Spreng die Schließfächer mit Sprengstoff auf.
+[C1PDFW]
+~O~
-[BNK4_36]
-Wo ist Cam?
+[C0TRSK]
+~X~
-[BNK4_37]
-In der Hölle.
+[C1TRSK]
+~X~
-[BNK4_38]
-Das ist der letzte! LOS! LOS! LOS!
+[C2TRSK]
+~X~
-[BNK_39]
-Shit! Wo bleibt Hilary?
+[C3TRSK]
+~X~
-[BK4_40A]
-Ich werd was für seine Verlustängste tun!
+[C0AMBUY]
+~X~
-[BNK4_42]
-Hey, Jungs! Los, rein! Ich geb euch Deckung!
+[C1AMBUY]
+~X~
-[BNK4_43]
-Ich hab alles im Griff! FAHR!
+[C2AMBUY]
+~X~
-[BNK4_44]
-Geschafft! Wir sind reich! REICH!
+[C3AMBUY]
+~X~
-[BNK4_45]
-Ein Jammer, dass Cam es nicht gepackt hat. Er war 'n guter Kerl.
+[C0AMEXI]
+~T~
-[BNK4_46]
-Ja. Andererseits, so bleibt mehr für uns!
+[C1AMEXI]
+~T~
-[BNK4_47]
-Sehr richtig! YEEEEHAAAH!
+[C2AMEXI]
+~T~
-[BNK4_48]
-Tommy, eine Massage gefällig?
+[C3AMEXI]
+~T~
-[BNK4_49]
-Hi, Mercedes. Ja, ich bin ein bisschen verspannt...
+[C2PDSPR]
+~O~
-[BNK450A]
-Was hab ich gesagt, Tommy? Korrupte Bullen müssen sich vorsehen, wenn Kent Paul in der Stadt ist.
+[C3PDSPR]
+~X~
-[BNK450B]
-Komm, gib mir 'nen größeren Batzen ab. Na komm. Ich brauch neue Klamotten.
+[C2SNZI]
+~T~
-[BNK4_51]
-Ich finde, du siehst ok aus.
+[C3SNZI]
+~S~
-[KENT]
-KENT PAUL-MISSIONEN
+[C2SNZO]
+~S~
-[KENT1]
-KENT PAUL-MISSION 1
+[C3SNZO]
+~X~
-[COUNT]
-FÄLSCHER-MISSIONEN
+[C2PDFW]
+~X~
-[COUNT1]
-FÄLSCHER-MISSION 1
+[C3PDFW]
+R1-Taste
-[COUNT2]
-FÄLSCHER-MISSION 2
+[MPC_020]
+Rico Garlik
-[BIKE]
-DIE BIKER GANG-MISSIONEN
+[MPC_022]
+Lou Scannon
-[BIKE1]
-BIKER-MISSION 1
+[MPC_024]
+Cruz Vormen
-[BIKE2]
-BIKER-MISSION 2
+[MPC_026]
+Busta Moves
-[BIKE3]
-BIKER-MISSION 3
+[MPC_027]
+Juan Kerr
-[GOAWAY1]
-Komm wieder, wenn du die Haiti-Gang-Missionen abgeschlossen hast.
+[MPC_028]
+Nick Yakar
-[HAIT]
-DIE HAITI-GANG-MISSIONEN
+[MPC_029]
+Lou Bricant
-[HAIT1]
-HAITI-MISSION 1
+[MPC_030]
+Lance Urwell
-[HAIT2]
-HAITI-MISSION 2
+[MPC_033]
+Agent Ochre
-[HAIT3]
-HAITI-MISSION 3
+[MPC_036]
+Papi Love
-[HAM3_6]
-~g~Verwende das Präzisionsgewehr, das ich für dich besorgt habe.
+[MPC_037]
+Lucy Lastic
-[ROCK]
-DIE ROCKBAND-GANG-MISSIONEN
+[MPC_038]
+Bill Durzbum
-[ROK1_4]
-~g~Ok, ich glaube, das ist es, was du suchst...
+[MPISCOL]
+Pickup aufgenommen
-[ROK1_1E]
-~g~Das kostet mehr als du hast!
+[MPSTART]
+Spiel wird gestartet...
-[ROK1_1F]
-~g~Komm wieder, wenn du die Kohle hast.
+[MRACEC1]
+~w~1...
-[RBM2_6]
-~g~Wow! Die ist 'n Kerl! Halt ihn auf!
+[MRACEC2]
+~w~2...
-[ROCK3]
-ROCKBAND-MISSION 3
+[MRACEC3]
+~w~3...
-[ROK3_6D]
-~r~und IHR UND EUER KOPFPUTZ mit dazu!
+[MPC_019]
+Phil DeGirth
-[ROK3_40]
-Neben dem Kühler für die Babynahrung?
+[GDA_HL]
+Höchstes Avenging Angel-Level
-[RBM3_5]
-~g~Bring Love Fist zu ihrem Auftritt.
+[MP_SNEW]
+Bitte lade oder starte ein neues Singleplayer- oder Multiplayer-Spiel.
-[CUBANM]
-DIE KUBA-GANG-MISSIONEN
+[DON2EX9]
+~r~Ned~w~ haut ab! Lass dich nicht abhängen!
-[CUBAN1]
-KUBA-MISSION 1
+[FEI_CHA]
+Team wechseln
-[CUBAN2]
-KUBA-MISSION 2
+[FES_RES]
+SPIELEINSTELLUNGEN ZURÜCKSETZEN
-[CUB2_10]
-~r~Du sollst Haitianer ausschalten, keine Kubaner!
+[FESZ_QT]
+Wirklich alle Einstellungen für Steuerung, Audio und Anzeige zurücksetzen? Fortfahren?
-[CUBAN3]
-KUBA-MISSION 3
+[FEH_LOA]
+SPIEL
-[CUBAN4]
-KUBA-MISSION 4
+[MPEMPTY]
+Leer
-[CUB4_04]
-~r~Du hast die Basis alarmiert. Jetzt kommen wir niemals rein!
+[FEMP_SN]
+SPIEL STARTEN (2 oder mehr Spieler benötigt)
-[CUB4_05]
-~r~Du solltest doch im Auto bleiben. Jetzt lassen sie uns niemals rein.
+[JD_SUIT]
+~w~JD kann dir keine Arbeit geben, wenn du wie ein Leone angezogen bist!
-[CUB4_25]
-Okay, los geht's.
+[SAVD_SH]
+Versteck.
-[PROT]
-SCHUTZGELD-MISSIONEN
+[SAVD_DY]
+Tag
-[PRO1_02]
-~g~Verlasse das Einkaufszentrum.
+[SAVD_CO]
+absolviert.
-[PRO3_06]
-~g~Häng die Cops ab.
+[SAVD_AL]
+Portland safehouse. Day 71, $57640. 17% complete.
-[PORN]
-PORNO-MISSIONEN
+[SAV_SLT]
+Neuer Spielstand
-[PORN1]
-PORNO-MISSION 1
+[POMOB6C]
+~w~Komm gleich mal bei mir vorbei. Ich hab Arbeit für dich.
-[POR1_03]
-~r~Candy ist erledigt!
+[ANG_2]
+~w~Drücke~h~ ~k~ ~TGSUB~~w~, um Avenging Angel-Missionen an- oder abzuschalten.
-[PORN2]
-PORNO-MISSION 2
+[TVHELP]
+~w~Drücke~h~ ~k~ ~TGSUB~~w~, um SLASH TV-Missionen an- oder abzuschalten.
-[PORN3]
-PORNO-MISSION 3
+[PAGERA]
+~w~Das ~h~M60~w~ ist jetzt in deinem Versteck verfügbar!
-[POR3_18]
-Man hat dich bemerkt!
+[CO_ALL]
+~w~Alle versteckten Päckchen gefunden!
-[PORN4]
-PORNO-MISSON 4
+[CO_ONE]
+~w~Verstecktes Päckchen ~1~ von ~1~ gefunden!
-[POR4_04]
-~g~Die Büros liegen auf der anderen Seite dieses Tors.
+[PAGE_14]
+Erledige ~1~ kolumbianische Gangster in 2 Minuten!
-[PHIL]
-PHIL-MISSIONEN
+[PAGE_19]
+Dein Job: ~1~ kolumbianische Gangster in 2 Minuten!
-[PHIL1]
-PHIL-MISSION 1
+[ANG_22]
+~r~Avenging Angel-Missionen abgebrochen.
-[PHIL2]
-PHIL-MISSION 2
+[SLATVQO]
+~r~Slash TV-Mission abgebrochen.
-[PIZ1_A]
-PIZZABOTEN-MISSION
+[C0FREE1]
+L3-Taste
-[PIZ1_03]
-~g~Fahr zurück zum Pizza-Service für weitere Bestellungen.
+[C1FREE1]
+L3-Taste
-[PIZ1_04]
-~g~Hier sind die neuen Bestellungen.
+[C2FREE1]
+L3-Taste
-[PIZ1_10]
-Drücke die ~h~R3-Taste~w~, um die Pizza-Missionen abzubrechen.
+[C3FREE1]
+L3-Taste
-[CNTBUY1]
-Druckerei gekauft: $ ~1~
+[C0FREE2]
+linken Analog-Stick
-[CARBUY]
-Autohaus gekauft: $ ~1~
+[C2FREE2]
+linken Analog-Stick
-[PORNBUY]
-Filmstudio gekauft: $ ~1~
+[ANGCOM1]
+~w~Avenging Angel-Mission: Portland - Level 15 abgeschlossen! Das einzigartige 'Avenger'-Motorrad wurde in deinem Versteck angeliefert!
-[ICEBUY]
-Eiscremefabrik gekauft: $ ~1~
+[K_CE]
+~w~Du hast ~1~ Sekunde, um zu deinem ~b~Motorrad~w~ zurückzukehren!
-[TAXIBUY]
-Taxiunternehmen gekauft: $ ~1~
+[HELP31]
+~w~Wirst du während einer Mission ~h~'verhaftet'~w~ oder ~h~'außer Gefecht'~w~ gesetzt, erscheint dieses ~h~Taxi~w~.
-[BANKBUY]
-Malibu Club gekauft: $ ~1~
+[LOSER]
+~y~VERLIERER!
-[BOATBUY]
-Bootswerft gekauft: $ ~1~
+[RCRHELP]
+~w~Drücke~h~ ~k~ ~TGSUB~~w~, um das ~h~Rennen zu beenden~w~.~h~ ~k~ ~VEWEP~~w~, um dein ferngesteuertes Auto zum letzten Checkpoint zurückzusetzen.
-[PRNT_NO]
-Zurzeit kannst du die Druckerei nicht kaufen. Komm später wieder.
+[SRC_ON]
+Jetzt, da du dir im Underground- Autorennzirkus einen Namen gemacht hast, werden Herausforderer versuchen, dich zu kontaktieren.
-[CAR_NO]
-Zurzeit kannst du das Autohaus nicht kaufen. Komm später wieder.
+[SRB_ON]
+Jetzt, da du dir im Underground- Motorradrennzirkus einen Namen gemacht hast, werden Herausforderer versuchen, dich zu kontaktieren.
-[PORN_NO]
-Zurzeit kannst du das Filmstudio nicht kaufen. Komm später wieder.
+[RACE_R0]
+~w~BISHERIGER REKORD: ~1~:~1~~1~
-[ICE_NO]
-Zurzeit kannst du die Eiscremefabrik nicht kaufen. Komm später wieder.
+[POMOB3C]
+~w~Hey, schau mal wieder vorbei, Alter.
-[TAXI_NO]
-Zurzeit kannst du das Taxiunternehmen nicht kaufen. Komm später wieder.
+[MPHPCS1]
+The Hit List
-[BANK_NO]
-Zurzeit kannst du den Malibu Club nicht kaufen. Komm später wieder.
+[MPWLGOC]
+Steig aus dem Auto.
-[BOAT_NO]
-Zurzeit kannst du die Bootswerft nicht kaufen. Komm später wieder.
+[MPWLLTC]
+Verlass den Container.
-[PRNT_R3]
-Drücke R3, um die Druckerei zu kaufen. Preis: $~1~
+[MPWLDTC]
+Liefere das Auto ab.
-[CAR_R3]
-Drücke R3, um das Autohaus zu kaufen. Preis: $~1~
+[MPWLCD]
+Auto geliefert.
-[PORN_R3]
-Drücke R3, um das Filmstudio zu kaufen. Preis: $~1~
+[MPWLNGC]
+Jetzt schnapp dir die Autos.
-[ICE_R3]
-Drücke R3, um die Eiscremefabrik zu kaufen. Preis: $~1~
+[MPAUTO]
+EINMAL ABSPIELEN
-[TAXI_R3]
-Drücke R3, um das Taxiunternehmen zu kaufen. Preis: $~1~
+[MRACEGO]
+~w~LOS
-[BANK_R3]
-Drücke R3, um den Malibu Club zu kaufen. Preis: $~1~
+[MRACE04]
+DU BIST DER SIEGER
-[BOAT_R3]
-Drücke R3, um die Bootswerft zu kaufen. Preis: $~1~
+[MRACEWI]
+hat das Rennen gewonnen
-[COL2_6]
-Keine Bewegung, amerikanisches Imperialistenschwein!
+[MRCPU01]
+~y~SOFORT-REPARATUR
-[COL2_6B]
-Das ist Eigentum des französischen Staates.
+[DTB01]
+müssen die Autos verteidigen
-[COL2_6C]
-Her damit!
+[DTB02]
+müssen die Autos zerstören
-[COL3_A]
-Thomas, schön, dass Sie da sind.
+[DTB03]
+haben ein Auto verloren
-[COL3_B]
-Verzeihen Sie, dass ich direkt zum Geschäftlichen komme.
+[DTB04]
+haben ein Auto zerstört
-[COL3_C]
-Diaz bat mich, eine kleine Transaktion für ihn zu überwachen.
+[MPWIN]
+gewinnt
-[COL3_D]
-Hoffentlich läuft es diesmal besser als zuletzt.
+[MPKSELF]
+ist außer Gefecht
-[COL3_E]
-Deshalb wende ich mich ja an Sie, mein Freund.
+[MPMORE]
+Hits
-[COL3_F]
-Ich habe im Parkhaus ein wenig Artillerie deponiert.
+[MP1MORE]
+Hit
-[COL3_G]
-Holen Sie sich die und beschützen Sie Diaz' Männer bei der Übergabe.
+[MPSTRT]
+gestartet
-[COL4_2]
-Ich weiß nicht, Sir!
+[MPTANK]
+hat den Panzer
-[COL4_5]
-Sir, zu Befehl, Sir!
+[MPONE]
+muss nur noch ein Auto beschaffen
-[COL4_10]
-Gehen wir ein paar Donuts essen.
+[MPDEL]
+hat ein Auto geliefert
-[COL4_16]
-Fahrzeug wird weggeschafft, Sir!
+[MPGOCAR]
+Finde das Auto
-[COL4_25]
-Selbstzerstörung des Fahrzeugs eingeleitet!
+[MPGOGAR]
+Liefere das Auto ab
-[COL5_6]
-Mercedes - dieses Kind bringt mich noch ins Grab.
+[MPDEST]
+Zielfahrzeug zerstört
-[COL5_8]
-Verdammte Bande!
+[MPLEFT]
+hat das Spiel verlassen
-[COL5_5]
-Nehmt das, Franzosenschweine!
+[MPHPGO2]
+~w~Du bist als Ziel markiert worden
-[CNT2_1]
-Macht ihn fertig!
+[MPHPKI]
+~w~Du hast einen Killer erledigt
-[CNT2_2]
-Hol die Platten!
+[LOCKON]
+Anvisiert
-[CNT2_3]
-Beschütze den Kurier!
+[MPHPGO]
+~w~Eliminiere den Markierten
-[FINKILL]
-Ok, Jungs, macht ihn fertig!
+[MPTNK]
+Schnapp dir den Panzer
-[FIN_1A]
-Komm her, du hinterhältiger Dreckskerl!
+[MRCPU02]
+DU HAST ALLEN DIE REIFEN GEPLÄTTET
-[FIN_1B]
-Jetzt bist du fällig, du mieser Verräter!
+[MRCPU05]
+DEINE REIFEN SIND KAPUTT
-[FIN_1C]
-Das wird dein letzter 'Dance', Lance Vance!
+[MRCPU06]
+~y~Gute Reifen
-[FIN_2B]
-Ach, wirklich?
+[WINNER]
+~Y~SIEGER
-[FIN_2C]
-Der dumme Spruch war schon im Kindergarten alt!
+[MPDRAW]
+~w~UNENTSCHIEDEN
-[FIN_3]
-Keiner da, um dich rauszuhauen, diesmal, hä, Tommy?
+[MPDADDY]
+JETZT BIST DU DER KING.
-[FIN_4]
-Du bist am Ende, Tommy.
+[MPRUN]
+BEHERRSCHEN DIESE STADT.
-[FIN_5]
-Du hast dich auf die falsche Seite geschlagen, Lance...
+[MPBITCH]
+WER IST HIER DER KING, TÖLE?
-[FIN_6]
-Sonny ist oben am Safe mit MEINEM Geld...
+[FEMP_SM]
+Grand Theft Auto mit Freunden oder zufällig in der Nähe stehenden, schrägen Fremdlingen spielen.
-[FIN_10]
-Sonny? SONNY! Jetzt bist du fällig!
+[MPYL]
+DU LOSER!
-[FIN_11A]
-Du hast mir 15 Jahre gestohlen, Sonny.
+[MPTMWIN]
+SIND JETZT DIE OBERMACKER!
-[FIN_11B]
-Und das wirst du mir jetzt büßen!
+[GS_SCAR]
+FAHRZEUG:
-[FIN_12A]
-Du kapierst es immer noch nicht, oder?
+[GS_MIN]
+Minute
-[FIN_12B]
-Dein Arsch gehört mir, Tommy.
+[GS_MINS]
+Minuten
-[FIN_12C]
-Diese 15 Jahre hast du anstelle von mir abgesessen!
+[MPTNKGA]
+Du hast den Panzer, harter Bursche.
-[FIN_13]
-Schnappt ihn euch. Er hat nie was begriffen.
+[MPTNKGB]
+Jetzt sieh zu, dass du ihn behältst.
-[RACES_4]
-3
+[GS_TYPE]
+SZENARIO:
-[RACES_5]
-2
+[CLILOST]
+Verbindung zu anderen Spielern ist unterbrochen.
-[RACES_6]
-1
+[ONEHPC]
+100 Prozent absolviert! In Fort Staunton wartet ein kleines Geschenk auf dich.
-[RACES_7]
-LOS!
+[MPBLTM]
+sindaccos
-[RACES_9]
-Zeit: ~1~:~1~
+[MPRDTM]
+forellis
-[RACES]
-ZEIT:
+[MTN_1]
+Sindaccos
-[RACES17]
-Neue Bestzeit: ~1~:~1~
+[MTN_2]
+Forellis
-[RACES18]
-PREISGELD: $~1~
+[MPRDCAP]
+Auto wurde erobert
-[RACES20]
-Neue Bestzeit: ~1~:0~1~
+[MPBLCAP]
+Auto wurde erobert
-[RACES21]
-Zeit: ~1~:0~1~
+[MPRDST]
+Auto wurde gestohlen
-[RCH1_1]
-~g~Benutze den ferngesteuerten Helikopter, den RC Raider, um die Checkpoints zu PASSIEREN.
+[MPBLST]
+Auto wurde gestohlen
-[RCH1_2]
-~g~Die CHECKPOINTS sind überall auf dem Flughafen verteilt.
+[MPBLEST]
+Auto wurde gestohlen
-[RCH1_3]
-~g~Du hast ~c~8 MINUTEN~g~, um alle ~c~20 zu passieren!
+[MPRDRET]
+haben ihr Auto wieder
-[RCH1_5]
-Zeit
+[MPBLRET]
+haben ihr Auto wieder
-[RCRC1_2]
-~g~Begib dich zur Startlinie!
+[MPRDPOS]
+Auto ist außer Position
-[RCRC1_4]
-~g~3
+[MPBLPOS]
+Auto ist außer Position
-[RCRC1_5]
-~g~2
+[GS_TEAM]
+GANG BEITRETEN:
-[RCRC1_6]
-~g~1
+[FEMP_TS]
+DEINE GANG:
-[RCRC1_7]
-~g~LOS!
+[MPTEAM]
+Gang
-[RCRC1_8]
-~g~Absolvierte Zeit: ~1~ Sekunden
+[GS_OA3]
+Zerstöre in der Basis der feindlichen Gang vier Limos.
-[RCPL1_1]
-~g~Liefere dir mit 3 anderen RC Barons ein CHECKPOINT-RENNEN.
+[GS_O4]
+Klau das Auto der feindlichen Gang und bring es zu eurer Basis. Verteidige gleichzeitig das Auto eurer Gang.
-[RCPL1_2]
-~g~Du musst durch die ~o~MITTLERE MARKIERUNG ~g~hindurch, um einen Checkpoint zu passieren.
+[MPI06]
+GANG-MITGLIED
-[RCPL1_3]
-~g~Begib dich zur Startlinie!
+[FEMP_ST]
+SPIEL STARTEN (1 oder mehr Spieler pro Gang benötigt)
-[ICC1_O]
-Was ist denn in Sie gefahren?
+[HELP32]
+~w~Gegen eine kleine Gebühr (falls du kein Geld hast auch gratis) bringt es dich zum ~h~Kontaktpunkt~w~ deiner letzten Mission.
-[FEA_2SP]
-2 Boxen
+[BENZ_HO]
+~w~Die ~h~Latzhose~w~ ist jetzt im Versteck verfügbar. Komm abends in der Latzhose hierher zurück, um bei SlashTV teilzunehmen.
-[FEA_4SP]
-Mehr als 2 Boxen
+[SLATXT]
+~w~Komm zwischen 18:00 Uhr und 5:00 Uhr in der Latzhose hierher zurück, um bei SlashTV teilzunehmen.
-[FEA_EAR]
-Kopfhörer
+[OUTF_02]
+~w~Latzhose
-[FEA_NAH]
-KEINE AUDIO HARDWARE
+[CAN_CON]
+~w~Drücke nochmal~h~ ~k~ ~TGSUB~~w~, um die Mission abzubrechen.
-[FET_APP]
-ÜBERNEHMEN
+[GNG1]
+LEONES
-[FES_SKN]
-SKIN-NAME
+[GNG2]
+TRIADEN
-[FES_DAT]
-DATUM
+[GNG3]
+DIABLOS
-[FES_SET]
-Skin verwenden
+[GNG4]
+YAKUZA
-[FET_DEF]
-Standard wiederherst.
+[GNG5]
+YARDIES
-[FESZ_QZ]
-Dieses Spiel wirklich speichern?
+[GNG6]
+KOLUMBIANER
-[FES_SCG]
-Laufendes Spiel speichern?
+[GNG7]
+HOODS
-[FES_LCG]
-Spiel laden und weiterspielen?
+[GNG8]
+SINDACCOS
-[FEC_FIR]
-Feuern
+[GNG9]
+FORELLIS
-[FEC_NWE]
-Nächste Waffe
+[GNG0]
+SIZILIANER
-[FEC_PWE]
-Vorherige Waffe
+[MP_GNG1]
+GANG 1:
-[FEC_FOR]
-Vorwärts
+[MP_GNG2]
+GANG 2:
-[FEC_BAC]
-Rückwärts
+[GS_TEMS]
+GANG-KRIEG
-[FEC_LEF]
-Links
+[CARS_O]
+~w~Capital Autos in Harwood sucht einen neuen Verkäufer, falls du dir was nebenbei verdienen willst.
-[FEC_RIG]
-Rechts
+[CARTXT]
+~w~Capital Autos hat nur zwischen 08:00 Uhr und 18:00 Uhr offen. Komm dann wieder!
-[FEC_ZIN]
-Heranzoomen
+[GS_TO1]
+Erledige die feindliche Gang!
-[FEC_ZOT]
-Hinauszoomen
+[MPTNEED]
+brauchen nur noch
-[FEC_EEX]
-Ein-/Aussteigen
+[MPTWIN]
+gewinnen
-[FEC_RAD]
-Radio
+[BADTEAM]
+Eine der Gangs hat keine Spieler mehr übrig.
-[FEC_SUB]
-Spezialmission
+[RACELAP]
+Runde
-[FEC_CMR]
-Blickwinkel ändern
+[GS_D1]
+ERLEBE DEN GAME-SHOW-KLASSIKER NEU! DER URBANE DARWINISMUS IST WIEDER DA.
-[FEC_JMP]
-Springen
+[GS_D2]
+WER KANN AM BESTEN FAHREN (ODER BESCHEISSEN)?
-[FEC_SPN]
-Sprinten
+[GS_D3]
+SCHÜTZE EURE AUTOS VOR FIESLINGEN UND VANDALEN.
-[FEC_HND]
-Handbremse
+[GS_D4]
+KLAU DAS AUTO DER FEINDLICHEN GANG UND VERLACHE SIE.
-[FEC_LOL]
-Nach links sehen
+[GS_D5]
+WER IST AM SCHÄRFSTEN AUF DEN PANZER?
-[FEC_LOR]
-Nach rechts sehen
+[GS_D6]
+DER MARKIERTE MUSS ERLEDIGT WERDEN.
-[FEC_NTR]
-Nächstes Ziel
+[GS_D7]
+MACH KOHLE MIT AUTOHANDEL.
-[FEC_PTT]
-Vorheriges Ziel
+[HELP61]
+~w~Wenn das ~h~Dreieck nach oben zeigt~w~, ist das ~h~Ziel über dir~w~. Ein ~h~Rechteck~w~ bedeutet, das ~h~Ziel ist in gleicher Höhe mit dir.
-[FEC_LBA]
-Nach hinten sehen
+[ST_DRWN]
+Gefütterte Fische
-[FEC_CEN]
-Kamera zentrieren
+[RACE_T4]
+~r~Du wurdest disqualifiziert, weil du kein Auto gefunden hast.
-[FET_CCN]
-Classic
+[RACE_T5]
+~r~Du wurdest disqualifiziert, weil du kein Motorrad gefunden hast.
-[FET_SCN]
-Standard
+[PCJ600]
+PCJ-600
-[FET_CFT]
-ZU FUSS
+[FEC_HBB]
+Handbremse~h~ ~k~ ~VEACC~ ~w~und~h~ ~k~ ~VEBRK~
-[FET_CCR]
-IN FAHRZEUG
+[HJSTAT]
+~w~Distanz: ~1~,~1~m Höhe: ~1~,~1~m Saltos: ~1~ Drehung: ~1~°
-[FET_CAC]
-AKTION
+[HJSTATW]
+~w~Distanz: ~1~,~1~m Höhe: ~1~,~1~m Saltos: ~1~ Drehung: ~1~° Und was für eine Landung!
-[FEC_IBT]
--
+[HJSTATF]
+~w~Distanz: ~1~,~1~ Fuß Höhe: ~1~,~1~ Fuß Saltos: ~1~ Drehung: ~1~°
-[FEC_MXO]
-MXB1
+[HJSTAWF]
+~w~Distanz: ~1~,~1~ Fuß Höhe: ~1~,~1~ Fuß Saltos: ~1~ Drehung: ~1~° Und was für eine Landung!
-[FEC_MXT]
-MXB2
+[MPUNLK]
+Neuer Multiplayer-Inhalt freigeschaltet. Beschäme andere Spieler mit dem ganzen Zeug, das du freigeschaltet hast!
-[FEC_UNB]
-NICHT BEL.
+[MPUNLKA]
+Alle Multiplayer-Inhalte freigeschaltet. Beschäme andere Spieler mit dem ganzen Zeug, das du freigeschaltet hast!
-[FEC_TFL]
-Links sehen + Geschütz L
+[TOUR]
+Erst knipsen, dann starten
-[FEC_TFR]
-Rechts sehen + Geschütz R
+[NDL1_A]
+Nudel-Dödel
-[FEC_MWF]
-MAUSRAD AUFW.
+[PIZ1_A]
+Pizza-Flitzer
-[FEC_MWB]
-MAUSRAD ABW.
+[GS_SCUT]
+INTRO ABSPIELEN:
-[FEC_ORR]
-oder
+[TR_00]
+RENNEN EINS
-[FEC_NUS]
-NICHT VERWENDET
+[TR_01]
+RENNEN ZWEI
-[FEC_LUD]
-Aufw. sehen
+[TR_02]
+RENNEN DREI
-[FEC_LDU]
-Abw. sehen
+[TR_03]
+RENNEN VIER
-[FEC_CMP]
-COMBO: L+R SEHEN
+[TR_04]
+RENNEN FÜNF
-[LAW_1A]
-law_1a
+[TR_05]
+RENNEN SECHS
-[LAW_1B]
-law_1b
+[TR_06]
+RENNEN SIEBEN
-[LAW_2A]
-law_2a
+[TR_07]
+RENNEN ACHT
-[LAW_2B]
-law_2b
+[CHSE]
+VERFOLGUNGSJAGD
-[FEH_STA]
-STATISTIKEN
+[NOCHANG]
+Während dieser Mission kannst du keine Outfits wechseln.
-[FEH_LOA]
-LADEN
+[OUTF_12]
+Antonio
-[FEH_CON]
-STEUERUNG
+[OUTF_13]
+Trainingsklamotten
-[FEH_AUD]
-AUDIO
+[OUTF_14]
+Goodfella
-[FEH_DIS]
-ANZEIGE
+[OUTF_15]
+Mr. Smart
-[FEH_LAN]
-SPRACHE
+[BENZ_AN]
+~w~Das ~h~Antonio-Outfit~w~ ist jetzt im Versteck verfügbar.
-[FEH_SGA]
-NEUES SPIEL STARTEN
+[BENZ_SW]
+~w~Die ~h~Trainingsklamotten~w~ sind jetzt im Versteck verfügbar.
-[FEO_CON]
-Controller-Setup
+[BENZ_GD]
+~w~Das ~h~Goodfella-Outfit~w~ ist jetzt im Versteck verfügbar.
-[FEO_AUD]
-Audio-Setup
+[BENZ_WI]
+~w~Das ~h~Mr. Smart-Outfit~w~ ist jetzt im Versteck verfügbar.
-[FEO_DIS]
-Anzeigen-Setup
+[RAMPAGE]
+SPEZIALAUFTRAG
-[FEO_LAN]
-Sprachen-Setup
+[GS_TTGT]
+PANZER-ZEIT:
-[FEO_PLA]
-Spieler-Setup
+[GS_O5]
+Du gewinnst, wenn du am längsten im Panzer überlebst. Beschädige den Panzer, um ihn einem anderen Spieler wegzunehmen.
-[FEA_OUT]
-Ausgabe
+[HELP28]
+~w~Um eine ~h~Explosivwaffe~w~ zu werfen, drücke~h~ ~k~ ~PDFW~. ~w~Je länger du~h~ ~k~ ~PDFW~ ~w~gedrückt hältst, umso weiter fliegt die Waffe.
-[FEA_ST]
-Stereo
+[RATNG53]
+Ehrloser Schuft
-[FEA_DTS]
-DTS
+[RATNG54]
+Betrügerische Ratte
-[FEA_RSS]
-Radiosender
+[RATNG55]
+Hai
-[FEA_NON]
-RADIO AUS
+[RATNG56]
+Falscher Fuffziger
-[FEA_FM0]
-WILDSTYLE
+[RATNG57]
+Der Pate aller Lügner
-[FEA_FM1]
-FLASH FM
+[RATNG11]
+BLUTSAUGER
-[FEA_FM2]
-KCHAT
+[CHASE6]
+Liberty Tree Seite 2
-[FEA_FM3]
-FEVER 105
+[CHASE7]
+Liberty Tree Titelseite
-[FEA_FM4]
-VROCK
+[AUTOLD]
+Es wird vom Memory Stick™ geladen, bitte Memory Stick™ nicht entfernen oder System ausschalten.
-[FEA_FM5]
-VCPR
+[LDFAIL]
+Laden fehlgeschlagen. Gespeicherte Daten sind beschädigt.
-[FEA_FM7]
-EMOTION 98.3
+[MEMCHKA]
+Memory Stick™ wurde nicht gefunden. Mindestens
-[FEA_FM8]
-WAVE 103
+[MEMCHKB]
+wird benötigt, um Spieldaten zu speichern.
-[FED_BRI]
-Helligkeit
+[MEMCHKC]
+Nicht genug Speicherplatz auf dem Memory Stick™. Mindestens
-[FED_TRA]
-Unschärfe-FX
+[MEMCHKD]
+wird benötigt, um Spieldaten zu speichern.
-[FED_SUB]
-Untertitel
+[M_FAIL]
+MISSION FEHLGESCHLAGEN!
-[FED_WIS]
-Breitbild
+[M_OVER]
+MISSION BEENDET!
-[FED_POS]
-Anzeige-Position
+[M_PASS]
+~Y~MISSION ERFÜLLT! ~n~$~1~
-[FEP_RES]
-Fortsetzen
+[M_PASSN]
+~Y~MISSION ERFÜLLT!
-[FEP_STG]
-Spiel starten
+[MRACE11]
+~w~Beschaff dir ein Fahrzeug, um das Rennen zu beenden
-[FEP_STA]
-Statistiken
+[FEI_LE1]
+Legende an
-[FEP_BRI]
-Missionsinfos
+[FEI_LE2]
+Legende aus
-[FEP_OPT]
-Optionen
+[FEI_TA1]
+Spieler-Ziel an
-[FEP_QUI]
-Spiel beenden
+[FEI_TA2]
+Spieler-Ziel aus
-[FES_LOA]
-Spiel laden
+[C1FREE2]
+linken Analog-Stick
+
+[C3FREE2]
+linken Analog-Stick
+
+[FEA_MP3]
+EIGENE SONGS:
+
+[FEA_NA]
+NICHT VERFÜGBAR
+
+[MPC_060]
+Antonio
+
+[MPC_061]
+Training Toni
+
+[MPC_062]
+Goodfella
+
+[MPC_063]
+Mr. Smart
+
+[MPC_064]
+Kazuki
+
+[NUMDBL1]
+DEBUG 1 (~1~) (~1~)
+
+[SVRMBRS]
+SPIELER-LISTE:
+
+[RAMP_P]
+SPEZIALAUFTRAG ERFÜLLT!
+
+[RAMP_F]
+SPEZIALAUFTRAG GESCHEITERT!
+
+[MPWLPAC]
+hat sich ein Ziel-Auto geschnappt.
+
+[MPWLDAC]
+hat ein Ziel-Auto abgeliefert.
+
+[LDWAIT]
+Drücke ~X~, um fortzufahren.
+
+[LOADING]
+Ladevorgang... Bitte warten.
+
+[RACEP1]
+1.
+
+[RACEP2]
+2.
+
+[RACEP3]
+3.
+
+[RACEP4]
+4.
+
+[RACEP5]
+5.
+
+[RACEP6]
+6.
+
+[FEA_UT]
+Unbekannter Track
+
+[LOADIN2]
+Ladevorgang...
+
+[DNH5_X2]
+~r~Du hast nicht alle Bomben angebracht.
+
+[MRACE12]
+DU HAST
+
+[MRACE13]
+SEKUNDEN, UM EIN FAHRZEUG ZU FINDEN
+
+[MRACE14]
+SEKUNDE, UM EIN FAHRZEUG ZU FINDEN
+
+[DTB_03]
+~w~Das Team, das seine Autos am längsten verteidigt, gewinnt.
+
+[PUPCOL]
+hat ein Powerup aufgenommen.
+
+[TNKCSE]
+Beschädige den Panzer, um ihn einem anderen Spieler wegzunehmen.
+
+[TNKTM]
+Du gewinnst, wenn du am längsten im Panzer überlebst.
+
+[MPFAIL]
+FEHLGESCHLAGEN
+
+[GS_LOC2]
+SPIEL-ORT:
+
+[DTBSWPA]
+So lange wurden die Sindaccos abgewehrt:
+
+[DTBSWPB]
+Jetzt zerstöre ihre Autos in kürzerer Zeit.
+
+[DTBSWPC]
+So lange hat es gedauert, die Forelli-Autos zu zerstören:
+
+[DTBSWPD]
+Jetzt verteidige eure Autos länger.
+
+[CHANOP]
+Option ändern
+
+[MPSSCT]
+CASH-VORGABE:
+
+[F_RANG2]
+~r~Der Feuerwehrfunk funktioniert nicht in der U-Bahn!
+
+[T_RANG2]
+~r~In der U-Bahn gibt es keinen Müll abzuholen!
+
+[T_RANGE]
+~r~Hier gibt es keinen Müll abzuholen!
+
+[FEU_YES]
+JA
+
+[FEU_NO]
+NEIN
+
+[HELP43]
+~w~Mit der Handbremse kannst du das Boot schneller wenden.
+
+[RACE_T6]
+~r~Eines der Fahrzeuge wurde zerstört - das Rennen wird abgeblasen!
+
+[FED_POS]
+BILDSCHIRMPOSITION
+
+[FES_DSS]
+Zu löschenden Spielstand auswählen:
+
+[FES_LSS]
+Zu ladenden Spielstand auswählen:
+
+[FES_DSC]
+Löschen erfolgreich. Zum Fortfahren OK wählen.
[FES_DEL]
Spiel löschen
-[FEC_CSU]
-Controller-Setup
+[FES_DGM]
+SPIEL LÖSCHEN
-[FEC_RED]
-Steuerung ändern
+[ITBEG]
+Am Anfang...
-[FEC_MOU]
-Maus-Einstellg.
+[FET_LG]
+SPIEL LADEN
-[DISTGOL]
-Mit Golfwagen zurückgel. Entfernung (Meilen)
+[FES_SCG]
+Aktuelles Spiel speichern?
-[DISTGOM]
-Mit Golfwagen zurückgel. Entfernung (Meter)
+[FESZ_QZ]
+Dieses Spiel wirklich speichern?
-[ST_FAVR]
-Lieblings-Radiosender
+[FES_SSC]
+Speichern erfolgreich. Zum Fortfahren OK wählen.
-[ST_WSTR]
-Unbeliebtester Radiosender
+[FEM_NTF]
+Die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 ist nicht formatiert.
-[ST_FAVV]
-Lieblingsfahrzeug
+[FES_CFM]
+Formatiert Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1. Memory Card (8MB) (für PlayStation®2) und Controller nicht entfernen und die Konsole nicht zurückstellen oder abschalten.
-[ST_STAR]
-Anzahl angehäufter Fahndungssterne
+[FES_LOQ]
+Laden gescheitert! Der Spielstand auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 ist nicht mit diesem Spiel kompatibel. Bitte einen anderen Spielstand laden. Spiel wird jetzt neu gestartet.
-[ST_HEAD]
-Anzahl Köpfe
+[FEM_NTH]
+Keine Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 eingelegt.
-[ST_GANG]
-Unbeliebteste Gang
+[FES_CMP]
+Speichern gescheitert! Bitte überprüfen Sie die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und versuchen Sie es noch einmal.
-[ST_STGN]
-Anzahl losgewordener Fahndungssterne
+[FESZ_FO]
+Die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 ist nicht formatiert. Möchten Sie sie jetzt formatieren?
-[TYREPOP]
-Zerschossene Reifen
+[FES_NOC]
+Keine Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 eingelegt.
-[TYRESLA]
-Aufgeschlitzte Reifen
+[FES_LOE]
+Laden gescheitert! Bitte überprüfen Sie die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und versuchen Sie es noch einmal. Spiel wird jetzt neu gestartet.
-[ST_BRK]
-Erledigte Gegner im Chaos-Derby
+[FES_DEE]
+Löschen gescheitert! Bitte überprüfen Sie die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und versuchen Sie es noch einmal.
-[ST_LTBR]
-Längste Zeit im Chaos-Derby (Sekunden)
+[SLONFM]
+Formatieren gescheitert! Bitte überprüfen Sie die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und versuchen Sie es noch einmal.
-[ST_GNG1]
-Kubaner
+[SLONDR]
+Ungenügend Speicherplatz auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1. Bitte legen Sie eine Memory Card (8MB) (für PlayStation®2) mit mindestens 330 KB freiem Speicherplatz in MEMORY CARD-Steckplatz 1 ein, um Spieldaten zu speichern.
-[ST_GNG2]
-Haitianer
+[SLNSP]
+Ungenügend Speicherplatz auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1. Zum Speichern der Spieldaten werden auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 mindestens 101 KB zusätzlicher freier Speicherplatz benötigt.
-[ST_GNG3]
-Möchtegern-Gangster
+[SLONNF]
+Die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 ist nicht formatiert. Möchten Sie sie jetzt formatieren?
-[ST_GNG4]
-Diaz' Gang
+[FESZ_FF]
+Formatieren gescheitert! Bitte überprüfen Sie die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und versuchen Sie es noch einmal.
-[ST_GNG5]
-Sicherheitsbeamte
+[MCDNSP]
+Keine Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 eingelegt. Zum Speichern der Spieldaten legen Sie bitte eine Memory Card (8MB) (für PlayStation®2) mit mindestens 330 KB freiem Speicherplatz ein. Wollen Sie das Spiel trotzdem starten?
-[ST_GNG6]
-Biker-Gang
+[MCGNDP]
+Ungenügend Speicherplatz auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1. Zum Speichern der Spieldaten werden mindestens 330 KB freier Speicherplatz benötigt. Wollen Sie das Spiel trotzdem starten?
-[ST_GNG7]
-Vercetti-Gang
+[MCGNSP]
+Ungenügend Speicherplatz auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1. Zum Speichern der Spieldaten werden auf der Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 mindestens 101 KB zusätzlicher freier Speicherplatz benötigt. Wollen Sie das Spiel trotzdem starten?
-[ST_GNG8]
-Golfer
+[FESZ_WR]
+Speichert Daten. Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und Controller nicht entfernen und die Konsole nicht zurückstellen oder abschalten.
-[FEA_FM6]
-ESPANTOSO
+[FELD_WR]
+Lädt Daten. Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und Controller nicht entfernen und die Konsole nicht zurückstellen oder abschalten.
-[ST_ASSI]
-Ausgeführte Attentätermissionen
+[FEDL_WR]
+Löscht Daten. Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und Controller nicht entfernen und die Konsole nicht zurückstellen oder abschalten.
-[DISTBIK]
-Mit Motorrad zurückgel. Strecke (Meilen)
+[C0VEWEA]
+Rechter Analog-Stick
-[DISTBIM]
-Mit Motorrad zurückgel. Strecke (Meter)
+[C1VEWEA]
+Rechter Analog-Stick
-[HOTEL]
-Ocean View Hotel
+[C2VEWEA]
+Rechter Analog-Stick
-[KICK1_9]
-VERBLEIBENDE CHECKPOINTS:
+[C3VEWEA]
+Richtungstasten
-[FIN_B6]
-Du hast nicht genug Geld, um diese Mission zu beginnen.
+[C0PDLOO]
+den rechten Analog-Stick
-[TEX3_9]
-~g~Steuere den Helikopter über eine Bombe, um sie aufzunehmen.
+[C1PDLOO]
+den rechten Analog-Stick
-[HELP22]
-Begib dich zu dem grünen Haus-Symbol auf dem Radar.
+[C2PDLOO]
+Rechter Analog-Stick
-[FES_SSC]
-Daten wurden gespeichert. Weiter mit OK.
+[C3PDLOO]
+Rechter Analog-Stick
-[FES_DSC]
-Daten wurden gelöscht. Weiter mit OK.
+[C0AMMOV]
+den linken Analog-Stick oder die Richtungstasten
-[FESZ_QC]
-Dieses beschädigte Spiel überschreiben?
+[C1AMMOV]
+den linken Analog-Stick oder die Richtungstasten
-[FES_CHE]
-Achtung! Ein oder mehrere Cheats sind aktiviert, dies kann sich auf die Speicherung auswirken. Es wird empfohlen, dieses Spiel nicht zu speichern.
+[C2AMMOV]
+Linker Analog-Stick oder Richtungstasten
-[FET_SG]
+[C3AMMOV]
+Linker Analog-Stick oder Richtungstasten
+
+[FEC_ACB]
+Beschleunigen/Bremsen
+
+[FEM_SL8]
+Spielstand 8 nicht vorhanden
+
+[FES_SAV]
SPIEL SPEICHERN
-[FEH_BRI]
-MISSIONSINFO
+[FES_FMS]
+Formatieren erfolgreich.
-[FEH_MAP]
-KARTE
+[MCDNCK]
+Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 wird überprüft. Memory Card (8MB) (für PlayStation®2) und Controller nicht entfernen und die Konsole nicht zurückstellen oder abschalten.
-[FEM_OK]
-OK
+[FESZ_QC]
+Diese beschädigte Datei wirklich überschreiben?
-[FEC_CRO]
-Ducken
+[NOCONT]
+Bitte schließen Sie einen Analog Controller (DUALSHOCK®) oder einen Analog Controller (DUALSHOCK®2) an Controller-Anschluss 1 an, um fortzufahren.
-[FEC_CR3]
-Ducken (L3-Taste)
+[FES_LCF]
+Laden gescheitert! Bitte überprüfen Sie die Memory Card (8MB) (für PlayStation®2) in MEMORY CARD-Steckplatz 1 und versuchen Sie es noch einmal.
-[FEC_SMT]
-Spezialmission
+[DBGHELP]
+~h~DEBUG MENU~w~ Select Item with ~h~left button & right button. ~w~Press ~h~X button ~w~to launch. Press ~h~TRIANGLE button ~w~to quit menu.
-[FEC_SM3]
-Spezialmission (R3-Taste)
+[DBGSEL1]
+Level Skip Menu
-[FEC_RSC]
-Radiosender
+[DBGSEL2]
+Car Viewer
-[ST_PR01]
-Flieger
+[DBGSEL3]
+Character Viewer
-[ST_PR02]
-Luftwaffensoldat
+[DBGSEL4]
+Building Viewer
-[ST_PR03]
-Gefreiter
+[DBGSEL5]
+Weapon Cheat
-[ST_PR04]
-Unteroffizier
+[DBGSEL6]
+Player Cheat
-[ST_PR05]
-Leutnant
+[DBGSEL7]
+Weather and Time Changer
-[ST_PR06]
-Stabsunteroffizier
+[DBGSEL8]
+Marketing Camera
-[ST_PR07]
-Hauptmann
+[DBGSEL9]
+MoCap Menu
-[ST_PR08]
-Könner
+[DBGSE10]
+USJ Editor
-[ST_PR09]
-Profi
+[DBGSE11]
+Toggle Player Coordinates
-[ST_PR10]
-Roter Baron
+[DBGFIL0]
+Ped Selector
-[ST_PR11]
-Wildgans
+[DBGFIL1]
+Car Selector
-[ST_PR12]
-Viper
+[PLCHLD]
+Placeholder: mission will complete in 5 seconds
-[ST_PR13]
-Falke
+[PLCHLD2]
+Placeholder Cutscene
-[ST_PR14]
-Adler
+[PLCHLD3]
+Placeholder (MOCAP) Cutscene
-[ST_PR15]
-Blitz
+[LS_MAC]
+Ma Cipriani stream
-[ST_PR16]
-Tornado
+[LS_JDT]
+J.D. O'Toole stream
-[ST_PR17]
-Taifun
+[LS_SAL]
+Salvatore stream
-[ST_PR18]
-Luftwaffengeneral
+[LS_COMP]
+Completed all Missions in this stream
-[ST_PR19]
-Ass
+[TEMP1]
+Number: ~1~
-[FET_LG]
-SPIEL LADEN
+[LS2_H1]
+Use ~h~analog up & down ~w~to select story stream. Use ~h~analog left & right ~w~to select mission. Use ~h~L button & R button ~w~to select an island. Press ~h~X button ~w~to start mission. Press ~h~TRIANGLE button ~w~to exit.
-[CAR_EXP]
-Straßenfahrzeuge zerstört
+[LS2_H2]
+You cannot use levelskip when you are ~h~on a mission.
-[BOA_EXP]
-Boote zerstört
+[LS2_VIC]
+~y~Vincenzo Cilli -~g~ ~a~
-[HEL_DST]
-Flugzeuge & Helikopter zerstört
+[LS2_MAC]
+~y~Ma Cipriani -~g~ ~a~
-[STFT_01]
-Schnellste Zeit bei 'Wheels of Steels'
+[LS2_JDT]
+~y~J.D. O'Toole -~g~ ~a~
-[STFT_02]
-Schnellste Zeit bei 'Der Fahrer'
+[LS2_SAL]
+~y~Salvatore -~g~ ~a~
-[STFT_03]
-Schnellste Zeit auf Geländemotorradstrecke
+[LS2_MAR]
+~y~Maria -~g~ ~a~
-[STFT_04]
-Schnellste Zeit bei Modellflugzeug-Rennen
+[LS2_NED]
+~y~Ned Burner -~g~ ~a~
-[STFT_05]
-Schnellste Zeit mit den ferngesteuerten Autos
+[LS2_DON]
+~y~Donald Love -~g~ ~a~
-[STFT_06]
-Schnellste Zeit bei Helikopter-Rennen
+[LS2_RAY]
+~y~Ray Machowski -~g~ ~a~
-[STFT_07]
-Schnellste Zeit bei 'Todeskaracho'
+[LS2_TOS]
+~y~Toshiko Kasen -~g~ ~a~
-[STFT_08]
-Schnellste Zeit bei 'Ocean Drive'
+[FREEON]
+Time Frozen
-[STFT_09]
-Schnellste Zeit bei 'Küsten-Rallye'
+[FREEOFF]
+Time Unfrozen
-[STFT_10]
-Schnellste Zeit bei 'Capital Cruise'
+[WTC_INS]
+Use ~h~analog up & down ~w~to change weather. Use ~h~analog left & right ~w~to change hour. Press ~h~TRIANGLE button ~w~to exit. Press ~h~SQUARE button ~w~to freeze time.
-[STFT_11]
-Schnellste Zeit bei 'Tour!'
+[WTC_TIM]
+TIME: ~1~:00
-[STFT_12]
-Schnellste Zeit bei 'V.C. Endurance'
+[WTC_WE0]
+WEATHER: CLOUDY
-[STHC_01]
-High-Score bei Schießstand-Mission
+[WTC_WE1]
+WEATHER: EXTRA COLOURS
-[STHC_02]
-Beste Trefferquote am Schießstand (in Prozent)
+[WTC_WE2]
+WEATHER: EXTRA SUNNY
-[STHC_03]
-Anzahl getätigter Drogendeals
+[WTC_WE3]
+WEATHER: FOGGY
-[HELP24]
-Du kannst jetzt Aufträge vom Colonel annehmen.
+[WTC_WE4]
+WEATHER: HURRICANE
-[HELP25]
-Du kannst jetzt Aufträge von Avery Carrington annehmen.
+[WTC_WE5]
+WEATHER: RAINY
-[HELP29]
-Außerhalb eine Mision kannst du zu dem Bekleidungsgeschäft gehen.
+[WTC_WE6]
+WEATHER: SNOW
-[HELP30]
-Wenn du neue Klamotten kaufst, reduziert sich dein Fahndungslevel auf null.
+[WTC_WE7]
+WEATHER: SUNNY
-[ASM4_24]
-Entfernung:
+[CVHELP]
+Use ~h~up button and down button ~w~to change character. Use ~h~left button and right button ~w~to rotate camera. HOLD ~h~SQUARE ~w~to zoom in (toggles upper and lower body). Press ~h~TRIANGLE ~w~to quit character viewer.
-[RBM1_6]
-~g~Bring Mercedes und den 'Love Juice' zu der Band ins Aufnahmestudio.
+[VMENU1]
+--------- Select a Viewer --------- --- ~h~Car~w~ - Character - Building --
-[RBM1_3]
-NICHT MEHR BENÖTIGT
+[VMENU2]
+--------- Select a Viewer --------- --- Car - ~h~Character~w~ - Building --
-[HAM1_5]
-NICHT MEHR BENÖTIGT
+[VMENU3]
+--------- Select a Viewer --------- --- Car - Character - ~h~Building~w~ --
-[RBM1_11]
-NICHT MEHR BENÖTIGT
+[CV_C]
+COMPARISON MODEL
-[HELP31]
-Um aus dem fahrenden Fahrzeug zu schießen, sieh zuerst mit ~k~~VEHICLE_LOOKLEFT~ oder ~k~~VEHICLE_LOOKRIGHT~ nach links oder rechts.
+[CV_0]
+ROW: -- MODEL: player
-[HELP34]
-Du brauchst eine Maschinenpistole für einen 'Drive-By'.
+[CV_1]
+ROW: 114 MODEL: cop
-[STRIP_1]
-~r~Nicht genug Cash, du windiger Geizhals!
+[CV_2]
+ROW: 115 MODEL: swat
-[EXIT_1]
-~k~~PED_SPRINT~ zum Beenden.
+[CV_3]
+ROW: 116 MODEL: fbi
-[ASM1_B]
-Ihr nächster Auftrag klebt unter dem Telefon.
+[CV_4]
+ROW: 117 MODEL: army
-[ASM1_C]
-Ich habe noch mehr Arbeit, die eine eher 'zupackende' Art verlangt.
+[CV_5]
+ROW: 118 MODEL: medic
-[SCARF]
-Apartment 3c
+[CV_6]
+ROW: 119 MODEL: fireman
-[LAW4_10]
-Reiche Manager sind Schweine!
+[CV_7]
+ROW: 71 MODEL: male01
-[RCH1_6]
-~g~Benutze den ferngesteuerten Helikopter, um Checkpoints überall auf dem Flughafen abzufliegen.
+[CV_9]
+ROW: 120 MODEL: taxi_d
-[RCH1_9]
-~b~GESAMTZEIT: ~1~:~1~
+[CV_10]
+ROW: 2 MODEL: pimp
-[RCH1_10]
-~b~GESAMTZEIT: ~1~:0~1~
+[CV_11]
+ROW: 13 MODEL: criminal01
-[WHEEL01]
-ZWEIRAD DOPPELBONUS: $ ~1~ Distanz: ~1~.~1~m Zeit: ~1~ Sekunden
+[CV_12]
+ROW: 14 MODEL: criminal02
-[WHEEL02]
-ZWEIRAD DOPPELBONUS: $ ~1~ Distanz: ~1~ Fuß Zeit: ~1~ Sekunden
+[CV_13]
+ROW: 15 MODEL: male02
-[WHEEL03]
-ZWEIRAD BONUS: $ ~1~ Zeit: ~1~ Sekunden
+[CV_14]
+ROW: 16 MODEL: male03
-[WHEEL04]
-ZWEIRAD BONUS: $ ~1~ Distanz: ~1~.~1~m
+[CV_15]
+ROW: 121 MODEL: fatmale01
-[WHEEL05]
-ZWEIRAD BONUS: $ ~1~ Distanz: ~1~ Fuß
+[CV_16]
+ROW: 17 MODEL: fatmale02
-[WHEEL06]
-WHEELIE BONUS: $ ~1~ Distanz: ~1~.~1~m Zeit: ~1~ Sekunden
+[CV_17]
+ROW: 18 MODEL: female01
-[WHEEL07]
-WHEELIE BONUS: $ ~1~ Distanz: ~1~ Fuß Time: ~1~ Sekunden
+[CV_18]
+ROW: 19 MODEL: female02
-[WHEEL08]
-WHEELIE BONUS: $ ~1~ Zeit: ~1~ Sekunden
+[CV_19]
+ROW: 20 MODEL: female03
-[WHEEL09]
-WHEELIE BONUS: $ ~1~ Distanz: ~1~.~1~m
+[CV_20]
+ROW: 21 MODEL: fatfemale01
-[WHEEL10]
-WHEELIE BONUS: $ ~1~ Distanz: ~1~.~1~ Fuß
+[CV_21]
+ROW: 22 MODEL: fatfemale02
-[WHEEL11]
-VOLLBREMSUNGSBONUS: $ ~1~ Distanz: ~1~.~1~m Zeit: ~1~ Sekunden
+[CV_22]
+ROW: 23 MODEL: prostitute
-[WHEEL12]
-VOLLBREMSUNGSBONUS: $ ~1~ Distanz: ~1~ Fuß Zeit: ~1~ Sekunden
+[CV_23]
+ROW: 24 MODEL: prostitute2
-[WHEEL13]
-VOLLBREMSUNGSBONUS: $ ~1~ Zeit: ~1~ Sekunden
+[CV_24]
+ROW: 25 MODEL: p_man1
-[WHEEL14]
-VOLLBREMSUNGSBONUS: $ ~1~ Distanz: ~1~.~1~m
+[CV_25]
+ROW: 26 MODEL: p_man2
-[WHEEL15]
-VOLLBREMSUNGSBONUS: $ ~1~ Distanz: ~1~ Fuß
+[CV_26]
+ROW: 27 MODEL: p_wom1
-[ROK3_72]
-Love Fist!
+[CV_27]
+ROW: 28 MODEL: p_wom2
-[ROK3_74]
-Ah, seht mal, was ist das? Hey, Tommy, leg mal dieses Band ein.
+[CV_28]
+ROW: 29 MODEL: ct_man1
-[POR1_19]
-Hey!
+[CV_29]
+ROW: 30 MODEL: ct_man2
-[DESPERA]
-Desperado
+[CV_30]
+ROW: 31 MODEL: ct_wom1
-[MOB_99A]
-Begib dich zu dem Fernsprecher neben dem Einkaufszentrum in Washington Beach.
+[CV_31]
+ROW: 32 MODEL: ct_wom2
-[MOB_98A]
-Begib dich zu dem Fernsprecher in Vice Point.
+[CV_32]
+ROW: 33 MODEL: li_man1
-[MOB_96A]
-Begib dich zu dem Fernsprecher beim Flughafen-Terminal.
+[CV_33]
+ROW: 34 MODEL: li_man2
-[MOB_95A]
-Begib dich zu dem Fernsprecher in Little Havana.
+[CV_34]
+ROW: 35 MODEL: li_wom1
-[BNK1_1]
-Kann ich Ihnen helfen, Sir?
+[CV_35]
+ROW: 36 MODEL: li_wom2
-[BNK1_2]
-Der Typ ist verkleidet!
+[CV_36]
+ROW: 37 MODEL: docker1
-[BNK1_3]
-Er ist verrückt geworden!
+[CV_37]
+ROW: 38 MODEL: docker2
-[BNK1_4]
-Wer zum Teufel sind Sie?
+[CV_38]
+ROW: 39 MODEL: scum_man
-[BNK1_5]
-Wo ist Ihre Dienstmarke?
+[CV_39]
+ROW: 40 MODEL: scum_wom
-[BNK1_6]
-Da sind sie! Feuer frei!
+[CV_40]
+ROW: 41 MODEL: worker1
-[MOB_24A]
-Hallo, spricht da Mr. Vercetti?
+[CV_41]
+ROW: 42 MODEL: worker2
-[MOB_24B]
-Ja.
+[CV_42]
+ROW: 43 MODEL: b_man1
-[MOB_24C]
-Hier Cortez. Sie waren bei meiner Party.
+[CV_43]
+ROW: 44 MODEL: b_man2
-[MOB_24D]
-Ja. Ich erinnere mich.
+[CV_44]
+ROW: 67 MODEL: b_man3
-[MOB_24E]
-Mr. Vercetti, es war höchst unglücklich, was da bei der Abwicklung Ihres Geschäfts vorgefallen ist.
+[CV_45]
+ROW: 45 MODEL: b_wom1
-[MOB_24F]
-Ich weiß.
+[CV_46]
+ROW: 46 MODEL: b_wom2
-[MOB_24G]
-Sie sollen wissen, dass ich und meine Leute alles tun, um der Sache auf den Grund zu gehen.
+[CV_47]
+ROW: 70 MODEL: b_wom3
-[MOB_24H]
-Falls Sie mit mir persönlich sprechen wollen, finden Sie mich auf dem Schiff. Guten Tag, Senor.
+[CV_48]
+ROW: 47 MODEL: mod_man
-[BNK2_6]
-Der Typ ist geisteskrank!
+[CV_49]
+ROW: 48 MODEL: mod_wom
-[ANGEL]
-Angel
+[CV_50]
+ROW: 49 MODEL: st_man
-[CUBJET]
-Kubanischer Jetmax
+[CV_51]
+ROW: 50 MODEL: st_wom
-[SANDKIN]
-Sandking
+[CV_52]
+ROW: 51 MODEL: fan_man1
-[POLMAV]
-Polizei-Maverick
+[CV_53]
+ROW: 52 MODEL: fan_man2
-[BOXVILL]
-Boxville
+[CV_54]
+ROW: 53 MODEL: fan_wom
-[BENSON]
-Benson
+[CV_55]
+ROW: 54 MODEL: hos_man
-[HOTRINA]
-Hotring Racer
+[CV_56]
+ROW: 55 MODEL: hos_wom
-[HOTRINB]
-Hotring Racer
+[CV_57]
+ROW: 56 MODEL: const1
-[BLOODRA]
-Chaos-Derby Banger
+[CV_58]
+ROW: 57 MODEL: const2
-[BLOODRB]
-Chaos-Derby Banger
+[CV_59]
+ROW: 58 MODEL: shopper1
-[MAFIACR]
-Mafia Cruiser
+[CV_60]
+ROW: 59 MODEL: shopper2
-[COP_M2]
-'EINSATZ IN VICE CITY'
+[CV_61]
+ROW: 60 MODEL: shopper3
-[COP_M3]
-'DONNER ÜBER VICE CITY'
+[CV_62]
+ROW: 61 MODEL: stud_man
-[BNK3_2]
-Ich fahre nicht für dich, niemals. Das erzähle ich in der Therapie.
+[CV_63]
+ROW: 62 MODEL: stud_wom
-[FEM_SL1]
-Datei 1 nicht vorhanden
+[CV_64]
+ROW: 63 MODEL: cas_man
-[FEM_SL2]
-Datei 2 nicht vorhanden
+[CV_65]
+ROW: 64 MODEL: cas_wom
-[FEM_SL3]
-Datei 3 nicht vorhanden
+[CV_79]
+ROW: 123 MODEL: gang01 LEONE_A
-[FEM_SL4]
-Datei 4 nicht vorhanden
+[CV_80]
+ROW: 124 MODEL: gang02 LEONE_B
-[FEM_SL5]
-Datei 5 nicht vorhanden
+[CV_81]
+ROW: 69 MODEL: gang03 TRIAD_A
-[FEM_SL6]
-Datei 6 nicht vorhanden
+[CV_82]
+ROW: 3 MODEL: gang04 TRIAD_B
-[FEM_SL7]
-Datei 7 nicht vorhanden
+[CV_83]
+ROW: 4 MODEL: gang05 DIABLO_A
-[FEM_SL8]
-Datei 8 nicht vorhanden
+[CV_84]
+ROW: 5 MODEL: gang06 DIABLO_B
-[FEA_CHA]
-Tonausgabe wird auf STEREO umgeschaltet. Bitte warten...
+[CV_85]
+ROW: 68 MODEL: gang07 YAKUZA_A
-[FEA_CHD]
-Achtung! Sie schalten die Tonausgabe von STEREO auf DTS um. Bitte warten...
+[CV_86]
+ROW: 6 MODEL: gang08 YAKUZA_B
-[FEI_SEL]
-Auswahl
+[CV_87]
+ROW: 7 MODEL: gang09 YARDIE_A
-[FEI_BAC]
-Zurück
+[CV_88]
+ROW: 8 MODEL: gang10 YARDIE_B
-[FEI_RES]
-Weiter
+[CV_89]
+ROW: 9 MODEL: gang11 COLOMBIAN_A
-[FEI_NAV]
-Navigieren
+[CV_90]
+ROW: 10 MODEL: gang12 COLOMBIAN_B
-[FEI_BTX]
-/-Taste -
+[CV_91]
+ROW: 11 MODEL: gang13 HOOD_A
-[FEI_BTT]
-"-Taste -
+[CV_92]
+ROW: 12 MODEL: gang14 HOOD_B
-[FEI_STA]
-START-Taste -
+[CV_93]
+ROW: 89 MODEL: gang15 Forelli thug1
-[FEI_BTD]
-; = > < -
+[CV_94]
+ROW: 90 MODEL: gang16 Forelli thug2
-[FEI_STO]
-Stop
+[CV_95]
+ROW: 88 MODEL: gang17 Sindacco thug1
-[MOB_68A]
-Tommy, Alter, ich hab eine Überraschung für dich.
+[CV_96]
+ROW: 89 MODEL: gang18 Sindacco thug2
-[MOB_68B]
-Ich bin im Aufnahmestudio mit ein paar super Musikern.
+[CV_109]
+ROW: 65 MODEL: SAL_01 Salvatore (Mob Don)
-[MOB_68C]
-Warum kommst du nicht kurz vorbei?
+[CV_110]
+ROW: 66 MODEL: RAY_01 Ray (Bad Cop)
-[MOB_68D]
-Kannst dir denken, dass es sich lohnt, oder? Bis dann.
+[CV_111]
+ROW: 72 MODEL: VINC_01 Vincenzo Cilli
-[OUTFT1]
-Straße
+[CV_112]
+ROW: 73 MODEL: GRDANG1 Avenging Angel
-[OUTFT2]
-Abendgarderobe
+[CV_113]
+ROW: 74 MODEL: NED_01 Ned Burner (Reporter)
-[OUTFT3]
-Overall
+[CV_114]
+ROW: 75 MODEL: MASTOR Massimo Torrini (Assassin)
-[OUTFT4]
-Country Club
+[CV_115]
+ROW: 76 MODEL: TOOL_01 JD O'Toole
-[OUTFT5]
-Havana
+[CV_116]
+ROW: 77 MODEL: Not used Fthr Kenny
-[OUTFT6]
-Cop
+[CV_117]
+ROW: 78 MODEL: GRDANG2 Avenging Angel 2
-[OUTFT7]
-Bankräuber
+[CV_118]
+ROW: 79 MODEL: M_HOLE Mayor RC Hole
-[OUTFT8]
-Freizeit
+[CV_119]
+ROW: 80 MODEL: FRANFOR Franco Forelli
-[OUTFT9]
-Mr. Vercetti
+[CV_120]
+ROW: 81 MODEL: KAZUKI Kazuki Kasen
-[OUTFT10]
-Trainingsanzug
+[CV_121]
+ROW: 82 MODEL: PAULIE Paulie Sindacco
-[OUTFT13]
-MC Tommy
+[CV_122]
+ROW: 83 MODEL: HOPPER Jane Hopper
-[CAR_AS1]
-AUTOHAUS ERWORBEN
+[CV_123]
+ROW: 84 MODEL: AVERY Avery Carrington
-[CAR_AS2]
-~g~Sunshine Autos generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[CV_124]
+ROW: 85 MODEL: CASA Giovanni Casa
-[BUYSAVE]
-~g~Außerhalb einer Mission kannst du dein Spiel hier umsonst speichern.
+[CV_125]
+ROW: 86 MODEL: BABY Giovanni Casa (baby)
-[BUYGARG]
-~g~Du kannst in dieser Garage auch Autos abstellen.
+[CV_126]
+ROW: 87 MODEL: MCAFFRY Det. Leon McAffrey
-[STRPBUY]
-Pole Position Club gekauft: $ ~1~
+[CV_127]
+ROW: 92 MODEL: EIGHT 8Ball
-[STRP_R3]
-Drücke R3, um den Pole Position Club zu kaufen. Preis: $~1~
+[CV_128]
+ROW: 93 MODEL: MAR_01 Maria
-[NBMN_R3]
-Drücke R3, um Elswanko Casa zu kaufen. Preis: $~1~
+[CV_129]
+ROW: 94 MODEL: LOVE_01 Donald Love
-[GA_4]
-Autobomben kosten $1000 pro Stück.
+[CV_130]
+ROW: 95 MODEL: MICKEYH Mickey H
-[GA_5]
-In deinem Wagen ist schon eine Autobombe.
+[CV_131]
+ROW: 96 MODEL: WAYNE Wayne (Biker Dude)
-[GA_6] { reVC update }
-Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf und dann HAU AB!
+[CV_132]
+ROW: 97 MODEL: BIKER1 Biker Dude 1
-[GA_7] { reVC update }
-Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird.
+[CV_133]
+ROW: 98 MODEL: BIKER2 Biker Dude 2
-[GA_6B] { reVC update }
-Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf und dann HAU AB!
+[CV_134]
+ROW: 99 MODEL: DONOVAN O'Donovan
-[GA_7B] { reVC update }
-Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird.
+[CV_135]
+ROW: 100 MODEL: KAS_01 Toshiko Kasen (kimono)
-[MOB_70A]
-Tommy, ich bin's, Colonel Cortez. Hören Sie, Sie sind doch ein Mann, der Dinge zu erledigen weiß.
+[CV_136]
+ROW: 101 MODEL: WKAS_01 Toshiko Kasen (western)
-[MOB_70B]
-Sie finden mich auf dem Boot.
+[CV_137]
+ROW: 104 MODEL: JDMADE JD O'Toole - Made Man
-[PICK2]
-.357 in Verstecken angeliefert!
+[CV_138]
+ROW: 106 MODEL: THUG_01 Sicilian Thug 1
-[PICK3]
-Kettensägen in Verstecken angeliefert!
+[CV_139]
+ROW: 107 MODEL: THUG_02 Sicilian Thug 2
-[PICK4]
-Flammenwerfer in Verstecken angeliefert!
+[CV_140]
+ROW: 109 MODEL: CAMP_MAN Campaign Worker
-[PICK5]
-.308 Präzisionsgewehr in Verstecken angeliefert!
+[CV_141]
+ROW: 110 MODEL: CAMP_WOM Campaign Worker 2
-[PICK6]
-Mini-Kanonen in Verstecken angeliefert!
+[CV_142]
+ROW: 111 MODEL: MIGUEL Miguel
-[PICK7]
-Raketenwerfer in Verstecken angeliefert!
+[CV_143]
+ROW: 112 MODEL: DELIASS Deli Assistant
-[PICK8]
-Sea Sparrow jetzt bei Vercetti Estate verfügbar!
+[CV_144]
+ROW: 113 MODEL: HOBO_01 Donald Love 2
-[PICK9]
-Panzer jetzt in Army-Kaserne verfügbar!
+[CV_68]
+ROW: 122 MODEL: HITMAN Hitman
-[PICK10]
-Hunter jetzt in Army-Kaserne verfügbar!
+[CV_146]
+ROW: 125 MODEL: HOLEJOG Mayor RC Hole (Jogging outfit)
-[CLOTH1]
-Abendgarderobe bei Rafaels in Ocean Beach erhältlich.
+[CV_147]
+ROW: 126 MODEL: Chauff Chauffeur
-[CLOTH2]
-Straßenkleidung in Verstecken angeliefert.
+[CV_148]
+ROW: 128 MODEL: plr2 (Lawyer)
-[CLOTH3]
-Overall bei 'Tooled Up' im North Point Einkaufszentrum erhältlich.
+[CV_149]
+ROW: 129 MODEL: plr3 (Travel clothes)
-[CLOTH4]
-Country Club-Bekleidung beim Golf Club in Leaf Links erhältlich.
+[CV_150]
+ROW: 130 MODEL: plr4 (Chauffeur)
-[CLOTH5]
-Havana-Outfit bei 'Little Havana Streetwear' in Little Havana erhältlich.
+[CV_151]
+ROW: 131 MODEL: plr5 (Hockey mask)
-[CLOTH6]
-Polizeiuniform bei Polizeistation in Washington Beach erhältlich.
+[CV_152]
+ROW: 132 MODEL: plr6 (Tuxedo)
-[CLOTH7]
-Freizeitbekleidung bei 'Gash' im North Point Einkaufszentrum erhältlich.
+[CV_153]
+ROW: 133 MODEL: plr7 (Avenging Angel)
-[CLOTH8]
-Mr. Vercetti-Outfit bei 'Collar & Cuffs'in Ocean Beach erhältlich.
+[CV_154]
+ROW: 134 MODEL: plr8 (The King of Rock'n Roll)
-[CLOTH9]
-Trainingsanzug bei 'Jocksport' in Downtown erhältlich.
+[CV_155]
+ROW: 135 MODEL: plr9 (Cock's Mascot)
-[CLOTH10]
-Bankräuber-Outfit beim Malibu Club in Vice Point erhältlich.
+[CV_156]
+ROW: 136 MODEL: plr10 (Boxer Shorts)
-[MOB_62A]
-Tommy, hier Ricardo Diaz. Ich wollte dir danken, dass du mich gerettet hast.
+[CV_157]
+ROW: 137 MODEL: plr11 (Bad Super Hero)
-[MOB_62B]
-Ich hab den Trottel von Cortez gefragt. Er meint, du wärst ein Mann für alle Fälle. Komm doch mal bei mir vorbei.
+[CV_158]
+ROW: 138 MODEL: plr12 (Dragon)
-[MOB_62C]
-Ich brauche einen Kerl wie dich. Ich hab nämlich nur Schwachköpfe.
+[CV_159]
+ROW: 139 MODEL: PHILC Phil Cassidy
-[MOB_62D]
-Nur lauter Schwachköpfe. Ich mache dich schwer reich.
+[CV_160]
+ROW: 140 MODEL: GREASE Grease Zuko
-[GOAWAY2]
-Komm wieder, wenn du die Biker Gang-Missionen abgeschlossen hast.
+[CV_161]
+ROW: 141 MODEL: GUN_ASS Gun assistant
-[COL2_9]
-Du amerikanischer Idiot! Sie sind dir hierher gefolgt!
+[CV_162]
+ROW: -- MODEL: JD_shot JD shot dead
-[LOADCOL]
-Lade...
+[CV_163]
+ROW: -- MODEL: BODYBAG bodybag
-[STFT_17]
-Schnellste Zeit bei 'PCJ Rallye'
+[CV_164]
+ROW: 142 MODEL: SAL_CON Sal Convict
-[STFT_18]
-Schnellste Zeit bei 'Krasses Gelände'
+[VV_131]
+ID:131 MODEL: Landstalker (TBC)
-[STFT_19]
-Schnellste Zeit bei 'Teststrecke'
+[VV_135]
+ID:135 MODEL: Perenial (TBC)
-[NEW_REC]
-Neuer Rekord!! ~1~ Minuten und ~1~ Sekunden.
+[VV_138]
+ID:138 MODEL: Firetruck
-[BMX_HOW]
-~g~Fahr zwei Runden auf der Geländemotorradstrecke. ~y~Passiere dabei ~g~die ~y~CHECKPOINTS~g~!
+[VV_141]
+ID:141 MODEL: Manana (TBC)
-[BMXREW1]
-~g~Jedes Mal wenn du deine bisherige Bestzeit für die zwei Runden verbesserst,
+[VV_148]
+ID:148 MODEL: FBI Car (TBC)
-[BMXREW2]
-~g~bekommst du eine noch höhere ~y~BELOHNUNG~g~!
+[VV_152]
+ID:152 MODEL: Kuruma (TBC)
-[BMXRAIN]
-~g~Sieht nach Regen aus...
+[VV_164]
+ID:164 MODEL: Dodo (TBC)
-[ITBEG]
-Am Anfang...
+[VV_169]
+ID:169 MODELL: Rc Bandit
-[NBMNBUY]
-El Swanko Casa gekauft: $ ~1~
+[VV_170]
+ID:170 MODEL: BellyUp (Triad) (TBC)
-[LNKVBUY]
-Links View Apartment gekauft: $ ~1~
+[VV_172]
+ID:172 MODEL: Leone Sentinel (TBC)
-[HYCOBUY]
-Hyman Condo gekauft: $ ~1~
+[VV_174]
+ID: 174 MODEL: Yakuza (TBC)
-[BUYGARS]
-~g~Du kannst in diesen Garagen auch Autos abstellen.
+[VV_179]
+ID:179 MODEL: Flatbed (TBC)
-[OCHEBUY]
-Ocean Heights Apartment gekauft: $ ~1~
+[VV_181]
+ID:181 MODEL: Borgnine Taxi (TBC)
-[WASHBUY]
-1102 Washington Street gekauft: $ ~1~
+[VV_188]
+ID: 188 MODEL: Sindacco Argento (TBC)
-[VCPTBUY]
-3321 Vice Point gekauft: $ ~1~
+[VV_189]
+ID: 189 MODEL: Forelli Lexcess (TBC)
-[HELP6_C]
-Drücke die ~h~~k~~VEHICLE_HANDBRAKE~~w~, um die Handbremse anzuziehen.
+[VV_192]
+ID:192 MODEL: Speeder (TBC)
-[HELP2_A]
-Drücke die ~h~~k~~PED_SPRINT~~w~, um zu ~h~sprinten.
+[BV_H1]
+Press CIRCLE to swap building model.
-[HELP4_A]
-Drücke die ~h~~k~~VEHICLE_ACCELERATE~~w~, um zu beschleunigen.
+[BV_0A]
+ROW: 2 - Portland. Safehouse Exterior. Press CIRCLE to swap.
-[HELP5_A]
-Drücke die ~h~~k~~VEHICLE_BRAKE~~w~, um zu bremsen, oder um zurückzusetzen, wenn das Fahrzeug steht.
+[BV_0B]
+ROW:24 - Portland. Safehouse Interior. Press CIRCLE to swap.
-[HELP8_A]
-Drücke die ~h~~k~~PED_SNIPER_ZOOM_IN~~w~, um an das Ziel heranzuzoomen und die ~x~/-Taste~w~,um herauszuzoomen.
+[BV_1]
+ROW: 3 - Portland. Ferry Terminal.
-[PBOAT_1] { reVC update }
-Drücke die~h~ ~k~~VEHICLE_FIREWEAPON~~w~, um die Bordkanonen abzufeuern.
+[BV_2A]
+ROW: 4 - Portland. Callahan Bridge 1. Press CIRCLE to swap.
-[SEG3_4] { reVC update }
-~g~Um Bomben aufzunehmen, steuere den RC Raider einfach nahe an sie heran. Um eine abzuwerfen, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~-Taste.
+[BV_2B]
+ROW: 4 - Portland. Callahan Bridge 2. Press CIRCLE to swap.
-[RCR1_3] { reVC update }
-~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~, um dein Auto zu sprengen.
+[BV_3]
+ROW: 5 - Portland. Les Cargo Freighter.
-[HELP32] { reVC update }
-Dann feuere mit der ~h~~k~~VEHICLE_FIREWEAPON~.
+[BV_4A]
+ROW: 6 - Portland. Doll's House Brothel 1. Press CIRCLE to swap.
-[HELP33] { reVC update }
-Dann feuere mit der ~h~~k~~VEHICLE_FIREWEAPON~.
+[BV_4B]
+ROW: 6 - Portland. Doll's House Brothel 2. Press CIRCLE to swap.
-[TTUTOR]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Taxi-Missionen an- oder abzuschalten.
+[BV_5]
+ROW: 7 - Portland. Tower Block.
-[TTUTOR2]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Taxi-Missionen an- oder abzuschalten.
+[BV_6]
+ROW: 8 - Portland. Eddie's Garage.
-[FTUTOR]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Feuerwehrwagen-Missionen an- oder abzuschalten.
+[BV_7]
+ROW: 9 - Portland. Bowler's Fist Pub.
-[FTUTOR2]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Feuerwehrwagen-Missionen an- oder abzuschalten.
+[BV_8]
+ROW:10 - Portland. Hepburn Heights.
-[CTUTOR]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Bürgerwehr-Missionen zu aktivieren oder zu deaktivieren.
+[BV_9]
+ROW:11 - Portland. Short Stay Hotel.
-[CTUTOR2]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Bürgerwehr-Missionen zu aktivieren oder zu deaktivieren.
+[BV_10]
+ROW:12 - Portland. Car Dealership.
-[HELP8_B]
-Drücke die~h~ ~k~~PED_SNIPER_ZOOM_IN~~w~, um ~h~an das Ziel heranzuzoomen ~w~und die~h~ ~k~~PED_SNIPER_ZOOM_OUT~~w~, um ~h~herauszuzoomen~w~.
+[BV_11]
+ROW:13 - Portland. Bus Graveyard.
-[ATUTOR3]
-Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Krankenwagen-Missionen an- oder abzuschalten.
+[BV_12A]
+ROW:14 - Portland. Drugs Warehouse 1 (awaiting approval). Press CIRCLE to swap.
-[GUN_H1]
-~w~Drück die~h~ ~k~~PED_SPRINT~~w~, um zu kaufen. ~w~Drück die~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, um zu gehen.
+[BV_12B]
+ROW:14 - Portland. Drugs Warehouse 2 (awaiting approval). Press CIRCLE to swap.
-[PU_CF3] { reVC update }
-Drück die ~h~~k~~PED_ANSWER_PHONE~~w~, um die augenblickliche Waffe in diesem Slot auszutauschen.
+[BV_13]
+ROW:15 - Portland. Ma Cipriani's Restaurant.
-[PU_CF4] { reVC update }
-Drück die ~h~~k~~PED_ANSWER_PHONE~~w~, um die augenblickliche Waffe in diesem Slot auszutauschen.
+[BV_14]
+ROW:17 - Portland. Basketball Court, Callahan.
-[HELP9_B]
-Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um das Präzisionsgewehr ~h~abzufeuern~w~.
+[BV_15]
+ROW:18 - Portland. Bike Shop.
-[HELP37]
-Wenn du doch nicht in ein Auto einsteigen willst, das du im Begriff bist, zu klauen, drück die ~h~~k~~PED_SPRINT~.
+[BV_16]
+ROW:19 - Portland. Building near Basketball Court.
-[HELP6_A]
-Drücke die ~h~~k~~VEHICLE_HANDBRAKE~~w~, um die Handbremse anzuziehen.
+[BV_17A]
+ROW:20 - Portland. Luigi's Nightclub 1.
-[HELP6_D]
-Drücke die ~h~~k~~VEHICLE_HANDBRAKE~~w~, um die Handbremse anzuziehen.
+[BV_17B]
+ROW:20 - Portland. Luigi's Nightclub 2.
-[HELP26]
-Drücke die ~h~~k~~VEHICLE_ENTER_EXIT~~w~, um in ein Fahrzeug ein- oder auszusteigen.
+[BV_17C]
+ROW:20 - Portland. Luigi's Nightclub 3.
-[HELP27]
-Drücke ~h~~k~~VEHICLE_TURRETUP~~w~ oder ~h~~k~~VEHICLE_TURRETDOWN~~w~ um dein Gewicht auf einem Motorrad zu verlagern.
+[BV_18]
+ROW:21 - Portland. Casa's Gourmet Deli.
-[HELP28]
-Drücke ~h~~k~~VEHICLE_TURRETUP~~w~ oder ~h~~k~~VEHICLE_TURRETDOWN~~w~ um dein Gewicht auf einem Motorrad zu verlagern.
+[BV_19]
+ROW:22 - Portland. Rusty Ship.
-[HELP35]
-Benutze die ~h~~k~~GO_LEFT~~w~ oder ~h~~k~~GO_RIGHT~~w~ um das Fahrzeug zu steuern.
+[BV_20]
+ROW:23 - Portland. Door for Shopfront.
-[HELP36]
-Benutze die ~h~~k~~GO_LEFT~~w~ oder ~h~~k~~GO_RIGHT~~w~ um das Fahrzeug zu steuern.
+[BV_21]
+ROW:25 - Staunton. Casino.
-[HELP42]
-Folge dem ~q~rosa Symbol~w~, um zum Hotel zu kommen.
+[BV_22]
+ROW:26 - Staunton. Phil Cassidy's Store.
-[HELP19]
-Stell dich in die ~q~rosa Markierung~w~, um weiterzumachen.
+[BV_23]
+ROW:27 - Staunton. Zip store.
-[HELP1]
-Halte in der Mitte der ~q~rosa Markierung.
+[BV_24]
+ROW:28 - Staunton. Container Park.
-[HELP12]
-Geh ins Zentrum der ~q~rosa Markierung~w~, um eine Mission zu starten.
+[BV_25]
+ROW:29 - Staunton. Ferry Terminal.
-[SEG3_6]
-~g~Um eine Zielzone zu treffen, musst du die Bombe innerhalb der ~q~rosa Markierung~g~ abwerfen. Die Reihenfolge spielt dabei keine Rolle.
+[BV_26A]
+ROW:30 - Staunton. Fort Staunton 1 NORTH.
-[S_PROMP]
-Außerhalb einer Mission kannst du dein Spiel speichern, indem du das ~h~Cassetten-Symbol aufnimmst.
+[BV_26B]
+ROW:30 - Staunton. Fort Staunton 2 NORTH.
-[HELP16]
-Geh durch die Eingangstür, um das ~h~Ocean View Hotel~w~ zu betreten.
+[BV_27A]
+ROW:30 - Staunton. Fort Staunton 1 SOUTH.
-[HELP43]
-~g~Begib dich zum ~h~Ocean View Hotel~g~ am Ocean Drive.
+[BV_27B]
+ROW:30 - Staunton. Fort Staunton 2 SOUTH.
-[HELI_F1]
-~r~Heli-Ceckpoint-Mission abgebrochen!
+[BV_28]
+ROW:31 - Ferry - Not Visible At Present.
-[AMMUHLP]
-Wenn du Waffen brauchst, geh zu ~h~AmmuNation~w~. Das ~h~Pistolensymbol~w~ auf dem Radar zeigt dir den Weg.
+[BV_29A]
+ROW:32 - Staunton. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[HELI_1]
-Downtown Heli-Checkpoint
+[BV_29B]
+ROW:32 - Staunton. Safehouse Interior. Press CIRCLE to swap.
-[HELI_2]
-Ocean Beach Heli-Checkpoint
+[BV_30]
+ROW:33 - Staunton. Steps Added To Building.
-[HELI_3]
-Vice Point Heli-Checkpoint
+[BV_31]
+ROW:34 - Portland. Outbuilding.
-[HELI_4]
-Little Haiti Heli-Checkpoint
+[BV_32A]
+ROW:34 - Shoreside. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[FST_MFR]
-Lieblings-Radiosender
+[BV_32B]
+ROW:34 - Shoreside. Safehouse Interior. Press CIRCLE to swap.
-[FST_LFR]
-Unbeliebtester Radiosender
+[BV_33]
+Not in Doc - Staunton - Warehouse Interior (not internally approved).
-[FEI_HOL]
-Halten
+[BV_34A]
+Not in Doc - Staunton - Church Exterior. Press CIRCLE to swap.
-[FEI_ZOO]
-Zoom
+[BV_34B]
+Not in Doc - Staunton - Church Interior for scripted cutscene. Press CIRCLE to swap.
-[FEI_BTR]
-> < -
+[MODWOR]
+Modify World Speed
-[FEI_NA]
-Nicht verfügbar
+[MODTIT]
+Changing World Speed
-[MESA]
-Mesa Grande
+[NEDS2]
+Himmelfahrt und Hochkaräter
-[STRP_NO]
-Zurzeit kannst du die Stripper-Bar nicht kaufen. Komm später wieder.
+[NEDS3]
+Karmageddon
-[CHSE]
-VERFOLGUNGSJAGD
+[NEDS4]
+Götzendämmerung
-[NBMN_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um El Swanko Casa zu kaufen. Preis: $~1~
+[DONS1]
+Der Leichenhauskandidat
-[NBMN_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um El Swanko Casa zu kaufen. Preis: $~1~
+[GAR_WIL]
+Fahr das Auto in die Garage.
-[NBMN_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um El Swanko Casa zu kaufen. Preis: $~1~
+[DONS2]
+Stimmenfang
-[LNKV_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Links View Apartment zu kaufen. Preis: $~1~
+[DONS3]
+Wahlkrampf
-[LNKV_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Links View Apartment zu kaufen. Preis: $~1~
+[DONS4]
+'Glimm'-Zettel
-[LNKV_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Links View Apartment zu kaufen. Preis: $~1~
+[DONS5]
+Love & Blei
-[HYCO_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Hyman Condo zu kaufen. Preis: $~1~
+[DONS6]
+Zettelwirtschaft
-[HYCO_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Hyman Condo zu kaufen. Preis: $~1~
+[DONS7]
+Schlechtes Vitamin B
-[HYCO_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Hyman Condo zu kaufen. Preis: $~1~
+[DONS7AA]
+Toni, du musst mir helfen!
-[OCHE_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Ocean Heights Apartment zu kaufen. Preis: $~1~
+[DONS7AB]
+O'Donovan hat Beweise für meine Verbindung zu Salvatore. Es ist aus!
-[OCHE_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Ocean Heights Apartment zu kaufen. Preis: $~1~
+[DONS7AC]
+Ruhig Blut. Beweise verschwinden jeden Tag.
-[OCHE_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Ocean Heights Apartment zu kaufen. Preis: $~1~
+[DONS7AD]
+Und Richter, Zeugen und Geschworene sowieso.
-[WASH_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um 1102 Washington Street zu kaufen. Preis: $~1~
+[DONS7AE]
+Gut, dass du das so siehst.
-[WASH_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um 1102 Washington Street zu kaufen. Preis: $~1~
+[DONS7AF]
+Einer meiner Leute ist dem Mann mit dem Beweismaterial gefolgt.
-[WASH_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um 1102 Washington Street zu kaufen. Preis: $~1~
+[DONS7AG]
+Er erwartet dich unter der Überführung in Newport.
-[VCPT_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um 3321 Vice Point zu kaufen. Preis: $~1~
+[SALS1]
+Auf ins Grüne
-[VCPT_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um 3321 Vice Point zu kaufen. Preis: $~1~
+[SALS2]
+Feuertaufe für Toni
-[VCPT_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um 3321 Vice Point zu kaufen. Preis: $~1~
+[SALS3]
+In Flagranti
-[PRNT_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Druckerei zu kaufen. Preis: $~1~
+[SALS4]
+Rettungsdienste
-[PRNT_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Druckerei zu kaufen. Preis: $~1~
+[SALS5]
+Friedensmisshandlungen
-[PRNT_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Druckerei zu kaufen. Preis: $~1~
+[SALS6]
+Sarg für 'nen Singvogel
-[CAR_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Autohaus zu kaufen. Preis: $~1~
+[RAYS1]
+Sayonara Sindaccos
-[CAR_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Autohaus zu kaufen. Preis: $~1~
+[RAYS2]
+Yardie-'Party'
-[CAR_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Autohaus zu kaufen. Preis: $~1~
+[RAYS3]
+Crazy '69'
-[PORN_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Filmstudio zu kaufen. Preis: $~1~
+[RAYS4]
+Yardie-Schutzengel
-[PORN_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Filmstudio zu kaufen. Preis: $~1~
+[RAYS5]
+Waffenschiebung
-[PORN_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Filmstudio zu kaufen. Preis: $~1~
+[MC_01]
+MOCAP Scenes
-[ICE_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Eiscremefabrik zu kaufen. Preis: $~1~
+[MC_02]
+Während du den Cutscene-Selector benutzt, kannst du keine Mission ausführen.
-[ICE_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Eiscremefabrik zu kaufen. Preis: $~1~
+[MC_04]
+Wähle die gewünschte Cutscene aus und drücke X. Drücke DREIECK zum Abbrechen.
-[ICE_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Eiscremefabrik zu kaufen. Preis: $~1~
+[MC_03]
+~g~Cutscene-Name - Script-Name~w~
-[TAXI_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Taxiunternehmen zu kaufen. Preis: $~1~
+[MC_S01]
+1. Biker - mar4
-[TAXI_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Taxiunternehmen zu kaufen. Preis: $~1~
+[MC_S02]
+2. Bonevoy - jdt1
-[TAXI_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um das Taxiunternehmen zu kaufen. Preis: $~1~
+[MC_S03]
+3. Campain - dons3
-[BANK_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Malibu Club zu kaufen. Preis: $~1~
+[MC_S04]
+4. Cashchp - tosh4
-[BANK_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Malibu Club zu kaufen. Preis: $~1~
+[MC_S05]
+5. Contban - sal5
-[BANK_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Malibu Club zu kaufen. Preis: $~1~
+[MC_S06]
+6. Crazy69 - rays3
-[BOAT_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Bootswerft zu kaufen. Preis: $~1~
+[MC_S07]
+7. Cuttest - none
-[BOAT_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Bootswerft zu kaufen. Preis: $~1~
+[MC_S08]
+8. Deadly - tosh1
-[BOAT_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um die Bootswerft zu kaufen. Preis: $~1~
+[MC_S09]
+9. Donprob - donh6
-[STRP_L]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Pole Position Club zu kaufen. Preis: $~1~
+[MC_S10]
+10. Drivnmr - sal8
-[STRP_T]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Pole Position Club zu kaufen. Preis: $~1~
+[MC_S11]
+11. Electon - dons7
-[STRP_C]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~, um den Pole Position Club zu kaufen. Preis: $~1~
+[MC_S12]
+12. Homswet - vic1
-[STOCK]
-~r~nicht vorrätig
+[MC_S13]
+13. Hotwhel - vic6
-[HELP14]
-Um das Büro des Anwalts zu finden, folge dem ~h~'L'~w~ auf dem Radar.
+[MC_S14]
+14. Kidnapp - jdt5
-[BOAT_AS]
-~g~Die Bootswerft generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[MC_S15]
+15. Landgrb - donh1
-[BOAT_A2]
-BOOTSWERFT-MISSIONEN ERFÜLLT
+[MC_S16]
+16. Morgue - dons1
-[BOAT_N]
-Checkpoint Charlie
+[MC_S17]
+17. Overdos - mar5
-[BOAT_P]
-~g~Sammle die Päckchen ein, ehe die Zeit um ist.
+[MC_S18]
+18. Rufjust - salh1
-[FEI_R1B]
-R1- \ R2-Taste -
+[MC_S19]
+19. Sayonar - rays1
-[HELP9_A]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Präzisionsgewehr abzufeuern.
+[MC_S20]
+20. sicilan - salh5
-[HELP21]
-Drücke die ~h~~k~~VEHICLE_ENTER_EXIT~~w~-Taste, um in ein Fahrzeug ein- oder auszusteigen.
+[MC_S21]
+21. Theofer - sal1
-[CREAM]
-Stoff-Auslieferung
+[MC_S22]
+22. Intro
-[UMBERTO]
-Café Robina
+[MC_S23]
+23. Final
-[PU_CF1]
-Drück die ~h~~k~~PED_ANSWER_PHONE~~w~-Taste, um diese Waffe aufzunehmen. Falls du schon eine Waffe von diesem Typ hast, wird sie durch die neue ersetzt.
+[MC_S24]
+24. Final_2
-[FED_RDM]
-KARTE & SYMBOLE
+[NEDS1]
+L.C. Confidential
-[FEC_ILU]
-Kamera invertieren :
+[WILGAR2]
+Steig aus dem Auto und geh nach draußen.
-[NITRO]
-Alle Taxis haben jetzt einen Jumper-Turbo! Du musst nur die Taste für die Hupe drücken.
+{=================================== MISSION TABLE SAL1 ===================================}
-[RATNG53]
-Windei
+[SAL1_M1:SAL1]
+~w~Salvatore will mit Ihnen reden.
-[RATNG54]
-Niete
+[SAL1_M2:SAL1]
+~w~Ich spiele Salvatores Spielchen nicht mit.
-[RATNG55]
-Hacker
+[SAL1_M3:SAL1]
+~w~Danke für die Spende, Kleiner... bis bald mal.
-[RATNG56]
-Mogelpaket
+[SAL1_M5:SAL1]
+~w~Hey!
-[RATNG57]
-Totaler Lügner
+[SAL1_D1:SAL1]
+~w~Hey! Streikbrecher!
-[STHC_04]
-High-Score beim Fußball-Hochhalten
+[SAL1_D2:SAL1]
+~w~Schnappt ihn euch!
-[STHC_05]
-Bestes Hotring-Resultat
+[SAL1_D3:SAL1]
+~w~Da ist er!
-[STFT_13]
-Schnellste Zeit bei Downtown Heli-Checkpoint
+[SAL1_D4:SAL1]
+~w~Er ist da drüben!
-[STFT_14]
-Schnellste Zeit Ocean Beach Heli-Checkpoint
+[SAL1_E1:SAL1]
+~w~Flüchte von den Docks!
-[STFT_15]
-Schnellste Zeit bei Vice Point Heli-Checkpoint
+[SAL1_A1:SAL1]
+~w~Triff dich mit der Gewerkschaftsvorsitzenden, Jane Hopper, bei den ~y~Portland Docks.
-[STFT_16]
-Schnellste Zeit bei Little Haiti Heli-Checkpoint
+[THEO_01:SAL1]
+Ey, Boss, geht's gut?
-[STFT_21]
-Schnellste Zeit bei Hotring
+[THEO_02:SAL1]
+Sehe ich so aus?
-[STFT_22]
-Schnellste Rundenzeit bei Hotring
+[THEO_03:SAL1]
+Nein.
-[STFT_20]
-Schnellste Zeit bei 'Pylonen-Rallye'
+[THEO_04:SAL1]
+Sag mal, hast du nur Scheiße im Hirn?
-[HELP44]
-Halte in der ~q~rosa Markierung.
+[THEO_05:SAL1]
+Immer sagst du, was sowieso klar ist.
-[HELP45]
-Drücke die ~h~~k~~PED_DUCK~~w~ um dich zu ducken. Dadurch erhöht sich die Treffsicherheit der Waffen, die du hältst.
+[THEO_06:SAL1]
+Unglaublich, mit was für Typen ich mich abgeben muss.
-[RCR1_5]
-RC Bandit-Rennen
+[THEO_07:SAL1]
+Entschuldigung.
-[RCPL1_7]
-RC Baron-Rennen
+[THEO_08:SAL1]
+Ich entschuldige mich. Du bist einer meiner getreuesten Verbündeten.
-[RCH1_11]
-RC Raider Checkpoint-Jagd
+[THEO_09:SAL1]
+Was du getan hast, macht dich wie einen Sohn für mich. Mehr als mein Sohn,
-[FEA_CTD]
-Achtung! Für diesen Modus muss DTS-kompatible Hardware angeschlosen sein. Fortfahren?
+[THEO_10:SAL1]
+mehr als jeder Sohn.
-[FEM_STE]
-AUF STEREO EINSTELLEN
+[THEO_11:SAL1]
+Deine Mutter ist zu beneiden.
-[FEM_UDY]
-AUF DTS EINSTELLEN
+[THEO_12:SAL1]
+So sagt man.
-[GREET]
-Grüße aus...
+[THEO_13:SAL1]
+Anthony, Männer wie wir sind passé.
-[LANCE_1]
-Hey, Mann, fahr vorsichtiger!
+[THEO_14:SAL1]
+Wir sind Dinosaurier. Dodos. Dildos. Oder sowas.
-[LANCE_2]
-Hey, pass doch auf, was du machst!
+[THEO_15:SAL1]
+Sogar in meiner eigenen Familie habe ich das Gefühl, von 12 Judassen umgeben zu sein.
-[LANCE_3]
-Hey, wo fahren wir jetzt hin?
+[THEO_16:SAL1]
+Ich meine, hör dir das an:
-[LANCE_4]
-Was machen wir jetzt?
+[THEO_17:SAL1]
+Da bitte ich 'nen Gewerkschaftsboss, noch dazu 'ne Tussi, um 'nen Gefallen
-[LAW4_15]
-Mehr Geld!
+[THEO_18:SAL1]
+und sie verlangt Geld von mir!
-[MERC_5]
-Schönes Auto, Mr. Vercetti.
+[THEO_19:SAL1]
+Dabei wollte ich nur für 24 Stunden Zugang zu den Docks, während der Streik lief -
-[MERC_26]
-SCHNELLER, SCHNELLER, SCHNELLER!
+[THEO_20:SAL1]
+den ich mitorganisiert hatte, damit meine Jungs Drogen entladen konnten -
-[MERC_27]
-Vorsichtig, Tommy, ich hab mir erst letzten Monat die Nase korrigieren lassen.
+[THEO_21:SAL1]
+und jetzt bringt sie diese Scheiße!
-[MERC_28]
-Tommy, fahr vorsichtig.
+[THEO_22:SAL1]
+Dabei sind das Leute, für die ich persönlich gekämpft habe,
-[MERC_29]
-Tommy, fahr langsamer.
+[THEO_23:SAL1]
+für die ich getötet habe. Ehrliche Leute.
-[MERC_30]
-Tommy, bring jemand anders um, aber bitte nicht mich.
+[THEO_26:SAL1]
+Eine Schande. Wir sind erledigt, wir Ehrenmänner wie du und ich.
-[MERC_31]
-Tommy, Baby, bring mich nicht um!
+[THEO_27:SAL1]
+Hör zu, Toni, ich möchte, dass du ihr etwas bringst.
-[MERC_32]
-Tommy, ich bin froh, dass du dieses Auto gestohlen hast!
+[THEO_28:SAL1]
+Sie lassen sich sowas von 'ner Tussi bieten?
-[MERC_40]
-Ich hatte so viel Spaß.
+[THEO_29:SAL1]
+Was bleibt mir vorerst übrig?
-[MERC_43]
-Adios, mein Engel.
+[THEO_30:SAL1]
+Hör mal, bring ihr die Knete und sag ihr, dass ich sie sprechen will.
-[MERC_44]
-Und mach schön weiter Bodybuilding, hörst du?
+[THEO_31:SAL1]
+Los.
-[MERC_45]
-Ciao, mein Hübscher.
+[THEO_24:SAL1]
+- Und so danken sie es mir? ~n~ - Beleidigend ist das.
-[COL5_17]
-Oh, Gott, sie haben einen Helikopter!
+{=================================== MISSION TABLE SAL2 ===================================}
-[COL5_18]
-Schießt den Helikopter ab!
+[SAL2_N:SAL2]
+Girls
-[COL5_19]
-Tommy, schießen Sie den Helikopter ab!
+[SAL2_A0:SAL2]
+~w~Ist das einer von deinen neuen Fiffis, Sal?
-[COL5_20]
-Da kommt er wieder! Schießt den Helikopter ab!
+[SAL2_A1:SAL2]
+~w~Mr. Leone?
-[COL5_21]
-Sieh dir diesen riesigen Helikopter an!
+[SAL2_A2:SAL2]
+~w~Toni! Come sta?
-[COL5_22]
-Da kommt er wieder!
+[SAL2_A3:SAL2]
+~w~Schön, dass du da bist. Du musst etwas für mich erledigen...
-[FEA_DSM]
-Achtung! Dieses Spiel ist auf DTS-Tonausgabe eingestellt. Dazu muss DTS-kompatible Hardware angeschlossen sein. Bitte wählen Sie, ob Sie mit DTS oder STEREO-Tonausgabe fortfahren wollen.
+[SAL2_A4:SAL2]
+~w~Wenn die Schlampe von der Gewerkschaft nicht will, dann aber vielleicht ihre Jungs. Capiche?
-[STFT_23]
-Schnellste Zeit bei Checkpoint Carlie
+[SAL2_A:SAL2]
+~w~Sammle 6 ~b~Nutten~w~ auf und bring sie zu den Streikposten bei den Portland Docks.
-[HELP50]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~-Taste, um die Spielerfigur von hinten zu sehen.
+[SAL2_B0:SAL2]
+~w~Süßer, ich steh nicht auf so'n 'Zwei-für-einen'-Scheiß!
-[HELP51]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~-Taste, um die Spielerfigur von hinten zu sehen.
+[SAL2_B1:SAL2]
+~w~Wenn du mehr Platz hast, dann kannst du mal auf mir Platz nehmen! Ich fahr nicht auf dem Dachgepäckträger!
-[HELP52]
-Drücke die ~h~~k~~PED_ANSWER_PHONE~~w~-Taste, um die Spielerfigur von hinten zu sehen.
+[SAL2_D0:SAL2]
+~w~Bist du allein, Sweetie?
-[HELP53]
-Benutze die ~h~~k~~PED_CYCLE_WEAPON_LEFT~~w~-Taste und die ~h~~k~~PED_CYCLE_WEAPON_RIGHT~~w~-Taste, um zwischen deinen Waffen zu wechseln.
+[SAL2_D1:SAL2]
+~w~Hey, Hübscher, hast du Lust auf ein bisschen Spaß?
-[HELP46]
-Es gibt acht verschiedene Waffentypen.
+[SAL2_D2:SAL2]
+~w~Schnuckelchen... wie wär's denn mit uns beiden?
-[HELP47]
-Du kannst von jedem Waffentyp immer nur eine bei dir tragen - also einen Typ Pistole, einen Typ Schrotflinte, usw.
+[SAL2_D3:SAL2]
+~w~Lust auf 'ne kleine Privatparty, Süßer?
-[HELP54]
-~w~Preis: $~1~ ~r~Deine augenblickliche Waffe wird ersetzt, wenn du diese kaufst.
+[SAL2_D4:SAL2]
+~w~Hey, Baby, willst du dich amüsieren?
-[HELP2A2]
-Drücke die ~h~~k~~PED_SPRINT~~w~-Taste, um zu ~h~sprinten.
+[SAL2_D5:SAL2]
+~w~Hi, Süßer! Ich bin Candy!
-[HLPSN_A]
-Das Präzisionsgewehr ermöglicht dir, an dein Ziel heranzuzoomen und auf größere Distanz mit hoher Genauigkeit zu schießen.
+[SAL2_F0:SAL2]
+~w~Hey! Ich komm auch mit!
-[HLPSN_B]
-Halte die~h~ ~k~~PED_LOCK_TARGET~~w~-Taste gedrückt, um mit dem Präzisionsgewehr zu ~h~zielen~w~.
+[SAL2_F1:SAL2]
+~w~Also, nur wir zwei Hübschen, hä?
-[HLPSN_C]
-Halte die~h~ ~k~~PED_LOCK_TARGET~~w~-Taste gedrückt, um mit dem Präzisionsgewehr zu ~h~zielen~w~.
+[SAL2_F2:SAL2]
+~w~Machen wir's jetzt, oder was?
-[HLPSN_D]
-Drücke die ~h~~k~~PED_SNIPER_ZOOM_IN~~w~-Taste, um ~h~an das Ziel heranzuzoomen ~w~und die~h~ ~k~~PED_SNIPER_ZOOM_OUT~~w~,um ~h~herauszuzoomen~w~.
+[SAL2_F3:SAL2]
+~w~Lust auf 'ne kleine Privatparty?
-[HLPSN_E]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Präzisionsgewehr ~h~abzufeuern~w~.
+[SAL2_F4:SAL2]
+~w~Oh, Mann, jetzt hab dich nicht so.
-[HLPSN_F]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Präzisionsgewehr ~h~abzufeuern~w~.
+[SAL2_F5:SAL2]
+~w~Ich will nur ein bisschen Fez mit dir machen!
-[HLPSN_G]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Präzisionsgewehr ~h~abzufeuern~w~.
+[SAL2_G0:SAL2]
+~w~Bring sie zu den ~y~Streikposten!
-[PLANE_H]
-Benutze die ~h~~k~~VEHICLE_ACCELERATE~~w~-Taste, um zu beschleunigen. Links bzw. Rechts für Richtungswechsel.
+[SAL2_G1:SAL2]
+~w~Bring die Girls zu den ~y~Streikposten!
-[PLANE_4] { reVC update }
-{Benutze die ~h~~k~~VEHICLE_ACCELERATE~~w~-Taste, um zu beschleunigen. Links bzw. Rechts für Richtungswechsel.}
-Benutze den rechten Analog-Stick, um zu beschleunigen. Ziehe den linken Analog-Stick, um zu steigen oder drücke ihn nach vorn, um zu sinken. Links bzw. Rechts für Richtungswechsel.
+[SAL2_G2:SAL2]
+~w~Kümmere dich um den ~r~Freier!
-[HELP55]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um den Küchenchef anzugreifen.
+[SAL2_G3:SAL2]
+~w~Kümmere dich um die ~r~Freier!
-[STPR_8]
-Pole Position Club
+[SAL2_G4:SAL2]
+~w~Hol mehr ~b~Girls!
-[STPR_9]
-3321 Vice Point
+[SAL2_H:SAL2]
+~w~Lust auf 'ne kleine Privatparty, Süßer?
-[STPR_10]
-Links View Apartment
+[SAL2_P:SAL2]
+~w~Viel Spaß, Jungs! Das spendiert Salvatore Leone!
-[STPR_11]
-El Swanko Casa
+[SAL2_I0:SAL2]
+~w~Such dir selber 'n Girl, Arschgesicht! Die gehört mir!
-[STPR_12]
-1102 Washington Street
+[SAL2_I1:SAL2]
+~w~Hey! Bist du ein Spanner, oder was!
-[STPR_13]
-Ocean Heights Apartment
+[SAL2_I3:SAL2]
+~w~Hey! Wer ist das, verdammt? Den schnappen wir uns!
-[STPR_14]
-Skumole Shack
+[SAL2_I5:SAL2]
+~w~Hey, Freundchen, hinten anstellen! Wir waren zuerst da.
-[STPR_15]
-Hyman Condo
+[SAL2_I7:SAL2]
+~w~Du bist der Beste! Nicht aufhören... oh, ja, Daddy!
-[RCCANX]
-~r~Flugzeug-Mission abgebrochen.
+[SAL2_I9:SAL2]
+~w~Also, an die Arbeit...
-[CLT_HL2]
-Wenn du neue Kleider aufnimmst, werden dadurch Fahndungslevel von einem bis zwei Sternen annulliert.
+[SAL2_K0:SAL2]
+~w~Leg dich nie mit Toni Cipriani an!
-[CRED009]
-MISSION DESIGN
+[SAL2_K1:SAL2]
+~w~Komm! Mach schon!
-[CRED359]
-LEE JOHNSON
+[SAL2_K2:SAL2]
+~w~Mach schon, Mädchen! Beweg den Arsch!
-[CRED360]
-HENDRIK LESSER
+[SAL2_C0:SAL2]
+~w~Hey! Komm zurück, Baby! ...Ich beiß nicht!
-[CRED361]
-PASQUALE STACCHIOTTI
+[SAL2_C1:SAL2]
+~w~Hey! Baby! Wo willst du hin?
-[CRED362]
-ENRIQUE FERNANDEZ
+[SAL2_L0:SAL2]
+~w~Ich warte hier nicht den ganzen Tag, Arschloch!
-[CRED363]
-PAUL BYERS
+[SAL2_L1:SAL2]
+~w~Schätzchen, meine Zeit kostet Geld!
-[CRED364]
-MIKE EMENY
+[SAL2_X0:SAL2]
+~r~Die Zeit ist um!
-[CRED365]
-ROB DUNKIN
+[SAL2_X1:SAL2]
+~r~Du hast zu viele Nutten erledigt!
-[CRED366]
-CHARLIE KINLOCH
+[SAL2_X2:SAL2]
+~r~Du hast die Dockarbeiter angegriffen. Jetzt vertrauen sie dir nie mehr!
-[CRED367]
-KEVIN HOBSON
+[SAL2_X3:SAL2]
+~r~Du hast die Girls der Dockarbeiter angegriffen. Jetzt vertrauen sie dir nie mehr!
-[CRED368]
-JIM CREE
+[SAL2_G5:SAL2]
+~w~Sieht so aus, als hättest du einen Verehrer.
-[MOB_66A]
-Tommy, Tommy, Tommy, wieso bist du wieder zurückgekommen?
+[SAL2_I8:SAL2]
+~w~Süße, du willst doch nicht ins Kittchen, oder?
-[MOB_66B]
-Ich hab dir doch gesagt, wir wollen dich hier nicht mehr sehen.
+[SAL2_I6:SAL2]
+~w~Ja! Ja! ...
-[MOB_67A]
-Tommy, ich glaube, du solltest dich hier nicht mehr blicken lassen, hörst du?
+[SAL2_M:SAL2]
+~w~Versuch, sie möglichst nicht umzubringen. Finde ein anderes ~b~Girl!
-[MOB_67B]
-Die Haitianer sind nicht sehr gut auf dich zu sprechen.
+[SAL2_W1:SAL2]
+~w~Du hast nur bis 0~1~:~1~ Uhr Zeit, bevor die Streikposten Schichtwechsel haben!
-[MOB_18A]
-Tommy, hier Paul. Wie geht's, Alter? Hey, ich dachte mir, das musst du hören...
+[SAL2_W2:SAL2]
+~w~Du hast nur bis ~1~:~1~ Uhr Zeit, bevor die Streikposten Schichtwechsel haben!
-[MOB_18B]
-Echt der Hammer. Du glaubst nicht, was mir für 'ne Puppe über den Weg gelaufen ist.
+[SAL2_G6:SAL2]
+~w~Halte in der ~y~gelben Markierung~w~, um die Girls abzusetzen.
-[MOB_18C]
-'ne Bordsteinschwalbe, oder sowas. Unten in Little Havana.
+[SAL2_G7:SAL2]
+~w~Störe den Freier, damit das ~b~Girl~w~ aus dem Auto steigt.
-[MOB_18D]
-Sagt, sie heißt Mercedes oder so ähnlich.
+[SAL2_B:SAL2]
+~w~Es passen keine Girls mehr in dein Auto.
-[MOB_18E]
-Wahnsinn, Alter. Die Puppe musst du dir geben.
+{=================================== MISSION TABLE SAL3 ===================================}
-[MOB_18F]
-Da würde 'nen Toter Hormonkoller kriegen. Sie sagt, ich wär der beste, den sie je hatte.
+[SAL3_A0:SAL3]
+~w~Toni! Wie geht's dir, mein Junge?
-[MOB_18G]
-Halt die Augen nach ihr offen. Bis dann.
+[SAL3_A1:SAL3]
+~w~Du siehst mager aus. Kocht dir deine Mama nichts Anständiges?
-[MOB_72A]
-Tommy, ich bin's, Lance. Du hältst jetzt mal den Rand, Tommy, ich hab nämlich keine Zeit für Geschwätz.
+[SAL3_A2:SAL3]
+~w~Mir geht's gut, Mr. Leone.
-[MOB_72B]
-Interessiert mich auch nicht, was du zu sagen hast. Warum auch? Ich bin dir doch sowieso scheißegal, stimmt's?
+[SAL3_A3:SAL3]
+~w~Hör mal, diese Gewerkschaftler - die nerven mich langsam.
-[MOB_72C]
-Du solltest dich mehr um mich kümmern. Mir einen fairen Anteil geben. Weißt du...
+[SAL3_A5:SAL3]
+~w~aber wir müssen ein paar von den 'weniger einsichtigen' Gewerkschaftsfunktionären mehr Druck machen.
-[MOB_72D]
-Tommy... hör mal, Mann, es tut mir leid. Nur...
+[SAL3_B0:SAL3]
+~w~Jag den ~r~Gewerkschaftsfunktionären~w~ Angst ein, damit sie kapieren!
-[MOB_72E]
-ich werd schon mein Leben lang immer nur von oben herab behandelt, wie ein kleines Kind.
+[SAL3_B3:SAL3]
+~w~Die sollen ab jetzt tun, was sie gesagt bekommen.
-[MOB_72F]
-Mein Bruder hat das auch immer gemacht. Bitte, mein Alter, mach du das nicht.
+[SAL3_BA:SAL3]
+~w~Sie sind verrückt, Mann! Ich will keinen Ärger mehr!
-[MOB_72G]
-Ich muss auflegen.
+[SAL3_CA:SAL3]
+~w~Was soll das? Sind Sie verrückt?
-[MOB_63A]
-Tommy, hier Earnest. Earnest Kelly.
+[SAL3_DA:SAL3]
+~w~Das Auto war bis auf zwei Raten abbezahlt! Du Hurensohn!
-[MOB_63B]
-Wie geht's?
+[SAL3_BB:SAL3]
+~w~Ab sofort tust du, was man dir sagt!
-[MOB_63C]
-Ganz gut. Werd zum Laufen 'nen Stock brauchen, müsste aber bald wieder arbeiten können.
+[SAL3_CB:SAL3]
+~w~Misch dich nicht in Leone-Angelegenheiten!
-[MOB_63D]
-Gut.
+[SAL3_A4:SAL3]
+~w~Anscheinend kommen zwar manche inzwischen zur Vernunft,
-[MOB_63E]
-Ich hab das mit Lance gehört. Was für ein Schwein, hä?
+[SAL3_A6:SAL3]
+~w~Verstehst du, was ich meine?
-[MOB_63F]
-Ja.
+[SAL3_B1:SAL3]
+~w~Wie willst du dein Argument anbringen, wenn sie alle tot sind? Bring keine weiteren ~r~Gewerkschaftsbosse~w~ um!
-[MOB_63G]
-Trau nie einem Mann, der im Pyjama auf der Straße herumläuft. Gut, dass du ihn erledigt hast. Ich hoffe, es war nicht kurz und schmerzlos.
+[SAL3_B2:SAL3]
+~r~Du solltest sie einschüchtern, nicht umbringen!
-[MOB_63H]
-Eher nicht. Ich hätte nur nicht gedacht, dass er so einer ist...
+[SAL3_B4:SAL3]
+~w~Such dir einen anderen ~r~Gewerkschaftsboss~w~, um ihm Vernunft beizubringen.
-[MOB_63I]
-Tommy, für einen wildgewordenen Irren bist du ziemlich naiv. Ich bin bald wieder an der Arbeit, dann bring ich dir mal ein paar Sachen übers Leben bei, ok?
+{=================================== MISSION TABLE SAL5 ===================================}
-[MOB_63J]
-Lass dir Zeit, Earnest. Pass auf dich auf.
+[SAL5_D3:SAL5]
+~w~Fahr das ~h~Fahrzeug ~w~in die Garage.
-[MOB_16A]
-Tommy, hier Paul. Wie geht's, mein Freund?
+[SAL5_D4:SAL5]
+~w~Steig aus und lass das Fahrzeug in der ~h~Garage.
-[MOB_16B]
-Was willst du, Paul? Ich brauch keine getürkten Designer-Klamotten.
+[SAL5_B:SAL5]
+~w~Beschaff dir einen Viersitzer und lade ein paar Mann als ~b~Verstärkung~w~ ein.
-[MOB_16C]
-Sehr witzig. Du weißt, dass ich mit getürkter Ware nichts am Hut habe. Wollte nur hören, ob ich nicht 'ne Rolle in einem von deinen Filmen kriegen könnte.
+[SAL5_C:SAL5]
+~w~Du brauchst einen Viersitzer.
-[MOB_16D]
-In England habe ich damals viel einschlägiges Zeug gedreht. Ich hab mehr zu bieten als du, mein Alter.
+[SAL5_C0:SAL5]
+~w~Hol dir ~b~Verstärkung.
-[MOB_16E]
-Paul, danke für das Angebot. Ich komm auf dich zurück.
+[SAL5_C1:SAL5]
+~w~Du brauchst ein Fahrzeug mit mehr Sitzplätzen für mehr ~b~Verstärkung.
-[MOB_16F]
-Lass mich nicht hängen. Denk dran, was ich alles für dich getan habe.
+[SAL5_C2:SAL5]
+~w~Fahr zu den ~y~Portland Docks.
-[MOB_16G]
-Das versuch ich ja grade zu vergessen.
+[SAL5_AA:SAL5]
+~w~Heeey... Alter... ich warte schon seit Stunden auf dich!
-[MOB_17A]
-Tommy Vercetti. Wie geht's, großer Meister? Man hört so einiges über dich. Bist jetzt 'ne große Nummer in der Stadt, hä?
+[SAL5_AB:SAL5]
+~w~Hör auf zu meckern, Miguel. Hast du den Stoff?
-[MOB_17B]
-Paul, du bist betrunken.
+[SAL5_AG:SAL5]
+~w~...hast du unser Geld?
-[MOB_17C]
-Nein, du Trottel, ich bin nicht betrunken. Hab mir nur ein paar Ladungen Stoff gegeben, war seit ein paar Tagen nicht im Bett.
+[SAL5_AH:SAL5]
+~w~Klar...
-[MOB_17D]
-Und du brauchst mich nicht dumm anzureden. Ich bin nicht irgendwer. Wer hat dir denn in dieser Stadt den Weg geebnet? Ich!
+[SAL5_AI:SAL5]
+~w~Was?
-[MOB_17F]
-Tatsächlich?
+[SAL5_AJ:SAL5]
+~w~Du scheiß Latinoarsch!
-[MOB_17G]
-Komm mir nicht so! Ich hab dich mit den ganzen Leuten bekanntgemacht. Hab dir gezeigt, wie der Hase läuft, hab alles mögliche für dich getan, und so dankst du es mir?!
+[SAL5_C8:SAL5]
+~w~Steig in das ~b~Drogenfahrzeug~w~ und dann nichts wie weg hier!
-[MOB_17H]
-Du ignorierst mich. Du gibst mir keine Chance, mitzumischen, nach allem, was ich für dich getan habe! Hältst du mich für einen Schwachkopf?
+[SAL5_C9:SAL5]
+~w~Bring das Fahrzeug zu ~y~Salvatores Garage.
-[MOB_17I]
-Paul, reg dich ab. Ich hatte viel zu tun. Sei kein Idiot.
+[SAL5_D1:SAL5]
+~w~Steig wieder in das ~b~Fahrzeug!
-[MOB_17J]
-Ich bin kein Idiot. Das haben sie schon im Jugendknast gesagt. Wenn du Ärger haben willst, Freundchen, den kannst du haben!
+[SAL5_D2:SAL5]
+~r~Die Drogen wurden zerstört!
-[MOB_17K]
-Tommy, bitte! Du warst meine große Hoffnung. Bitte, mach dich nicht lustig über mich!
+[SAL5_AF:SAL5]
+~w~Hehehe! Ich mag dich, Toni. Du hast große Eier - wie ein Stier!
-[MOB_17L]
-Paul, schlaf mal 'ne Runde. Im Ernst.
+[SAL5_C3:SAL5]
+~w~Schüttle die Cops ab!
-[MOB_73A]
-Tommy, hier Steve.
+[SAL5_D5:SAL5]
+~r~Die Drogen wurden beschlagnahmt!
-[MOB_73B]
-Hey, Steve.
+[SAL5_AD:SAL5]
+~w~Hey, ich bin ein vielbeschäftigter Mann, Toni. Das nächste Mal verkauf ich an 'nen anderen!
-[MOB_73C]
-Hey, aber wie! Du bist ein Genie! Ich bin ein Genie! Sie lieben uns alle. Wir brechen alle Rekorde, mein Alter.
+[SAL5_AE:SAL5]
+~w~Ja. Ich bezweifle, dass du einen findest, der so viel zahlt wie wir.
-[MOB_73D]
-Uns winken ganz große Filmpreise. Jetzt kann ich endlich meinen alten Herrn ins Heim stecken und ihm sagen, er soll die Klappe halten.
+[SAL5_D6:SAL5]
+~w~Erledige die ~r~Drogendealer.
-[MOB_73E]
-Äh, das ist cool, Steve.
+[CONT_01:SAL5]
+Halt's Maul, undankbares Miststück.
-[MOB_73F]
-Cool? Mann, das ist heiß! Heiß! H.E.I.ß! Er hat nie an mich geglaubt. Hat immer gedacht, ich wäre kein Künstler, und jetzt hab ich's geschafft!
+[CONT_06:SAL5]
+Sonst fasst du mich ja in letzter Zeit nicht an.
-[MOB_73G]
-Ich bin der größte Porno-Regisseur aller Zeiten, mein Freund. Wollte dir nur sagen, es ist mir eine Freude, dich kennengelernt zu haben.
+[CONT_07:SAL5]
+Warum sollte ich dich Miststück anfassen?
-[MOB_73H]
-Danke, Steve.
+[CONT_08:SAL5]
+Ich mag keine Gebrauchtwaren.
-[MOB_73I]
-Ich liebe dich, Baby. Bleib bloß genau so wie du bist, ok?
+[CONT_09:SAL5]
+Du ekelst mich an.
-[MOB_73J]
-Werd's mir merken. Ciao, Steve.
+[CONT_12:SAL5]
+Bitte! Weißt du, was?
-[BOLLOX]
-Drücke die ~o~R1~w~-Taste, um eine Bombe abzuwerfen. Drücke die ~t~"~w~-Taste zum Abbrechen.
+[CONT_15:SAL5]
+Hallo, Toni.
-[BRID_OP]
-Sturmwarnung vorüber. Alle Brücken zum Festland sind wieder geöffnet.
+[CONT_16:SAL5]
+Ich will meine Kohle, alter Sack!
-[BRID_CL]
-Sturmwarnung: Alle Brücken zum Festland sind gesperrt.
+[CONT_17:SAL5]
+Hau ab, du Flittchen.
-[LG_38]
-Ziel
+[CONT_18:SAL5]
+Hey, Anthony, du Retter in der Not.
-[ASSET_C]
-POLE POSITION ERWORBEN!
+[CONT_19:SAL5]
+Weiber - was will man machen, hm?
-[ASSET_D]
-~g~Der Pole Position Club sorgt nun für ein Einkommen von bis zu $~1~ pro Tag. Hol dir dein Geld regelmässig!
+[CONT_20:SAL5]
+Zum Glück kann ich einem im Leben trauen - dir, Toni.
-[ST_WHEE]
-Längste 'Wheelie' Zeit (sekunden)
+[CONT_21:SAL5]
+Du bedeutest mir wirklich viel. Hab ich dir das je gesagt?
-[ST_STOP]
-Längste 'Stoppie' Zeit (sekunden)
+[CONT_22:SAL5]
+Krieg erst mal einen hoch, alter Drecksack!
-[ST_2WHE]
-Längste 2 Rad Zeit (sekunden)
+[CONT_23:SAL5]
+Bei dir Schlampe nicht. Öffentliche Klos machen mich nicht an.
-[ST_WHED]
-Längste 'Wheelie' Distanz (m)
+[CONT_24:SAL5]
+Es ist wichtig, also hör zu. Wir beide haben jetzt allein das Sagen.
-[ST_STOD]
-Längste 'Stoppie' Distanz (m)
+[CONT_25:SAL5]
+Wir haben diese Idioten vertrieben.
-[ST_2WHD]
-Längste 2 Rad Distanz (m)
+[CONT_26:SAL5]
+Woher willst du das wissen? Du bist doch lieber mit Kerlen zusammen!
-[OUTFT11]
-Trainer
+[CONT_27:SAL5]
+Und du bist nur zufrieden, wenn du mit runtergezogenem Schlüpfer
-[OUTFT12]
-Frankie
+[CONT_28:SAL5]
+gegen 'ne Wand gelehnt stehst!
-[RELOAD]
-~g~Du hast die schnell Nachladefähigkeit gewonnen!
+[CONT_29:SAL5]
+Mensch, es gibt Karnickel, die weniger rammeln als du!
-[APACHE]
-Hunter zur Heli Landeplattform am Ocean Beach geliefert.
+[CONT_33:SAL5]
+Jedenfalls erwarte ich 'ne Lieferung du weißt schon was.
-[CRED369]
-JOHN MCCARDLE
+[CONT_34:SAL5]
+Die Sache wird uns - dich und mich - ganz groß machen.
-[CRED370]
-DAVID MURDOCH
+[CONT_35:SAL5]
+Es dürfte alles glatt laufen.
-[CRED371]
-CHRIS BROWN
+[CONT_36:SAL5]
+Ich brauche nur jemanden, dem ich vertrauen kann, der's für mich abwickelt.
-[CRED372]
-PAUL GREEN
+[CONT_37:SAL5]
+Na gut, Toni, wir sprechen uns später.
-[CRED373]
-KYLE MILNE
+[CONT_38:SAL5]
+Und noch was - mir ist noch nie 'ne Puppe mit 'nem Hydraulik-Slip untergekommen.
-[CUNTY]
-Neue Kleider wurden zum Vercetti Estate geliefert!
+[CONT_39:SAL5]
+Nicht zu fassen! Warum hab ich sie geheiratet?
-[GOODBOY]
-$50 'Guter Bürger' Bonus!
+[CONT_40:SAL5]
+Ich wollte 'ne Schlampe und heirate 'ne Nutte!
-[NEWCONT]
-Neuer Kontaktpunkt am Jachthafen am Ocean Beach!!
+[CONT_41:SAL5]
+In 'nem früheren Leben hab ich jemanden echt sauer gemacht,
-[FIRELVL]
-Feuerwehr-Mission Level ~1~
+[CONT_42:SAL5]
+so viel steht fest.
-[HELP56]
-Drücke die ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~-Taste, um den Blickwinkel zu ändern.
+[CONT_02:SAL5]
+- Noch ein Wort und ich schick dich für 'ne Woche ins Krankenhaus. ~n~ - Ja klar, du Flachwichser.
-[HELP57]
-Drücke die ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~-Taste, um den Blickwinkel zu ändern.
+[CONT_04:SAL5]
+- Willst du mal wieder zuschlagen? ~n~ - Ich sollte dir...
-[HELP58]
-Beim Zielen kann durch Drücken der ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~-Taste zwischen Zielen hin- und her gewechselt werden.
+[CONT_10:SAL5]
+- Ich ekel dich an?! ~n~ - Jawohl!
-[HELP59]
-Beim Zielen kann durch Drücken der ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~-Taste zwischen Zielen hin- und her gewechselt werden.
+[CONT_13:SAL5]
+- Mein Vater hatte Recht damit, dass du nur ein widerlicher Fettsack bist... ~n~ - Ja, ja, ja...
-[HELP60]
-Wenn du während eines Autodiebstahls die ~h~~k~~PED_SPRINT~ ~w~-Taste drückst, steigst du nicht in das Fahrzeug ein.
+[CONT_43:SAL5]
+- Hör zu, es ist wichtig... ~n~ - Ach, leck mich doch, Salvatore Leone,
-[HELP61]
-Du hast jetzt unbegrenzt Munition und doppelte Health für alle Fahrzeuge.
+[CONT_31:SAL5]
+- du schwanzloser, prügelnder, italienischer Scheißkerl! ~n~ - Lecken soll ich dich? Bestimmt nicht. Das macht doch sonst jeder!
-[CRED374]
-KEVIN YUN
+{=================================== MISSION TABLE SAL4 ===================================}
-[CRED375]
-ERICK COBBS
+[SAL4_I1:SAL4]
+~w~Dieser Streik geht weiter, bis die Stadt uns Garantien gibt!
-[CRED376]
-RANDY BLAKE
+[SAL4_I2:SAL4]
+~w~Mafiosi! Denken, die Gewerkschaft würde nach ihrer Pfeife tanzen - von wegen!
-[CRED377]
-BRANDON LIM
+[SAL4_I3:SAL4]
+~w~Mir machen die keine Angst!
-[CRED378]
-BRANDON FENOL
+[SAL4_I4:SAL4]
+~w~Ich hab mehr Mumm als die alle zusammen!
-[CRED379]
-MICHAEL MANOLE
+[SAL4_I5:SAL4]
+~w~Hör dir den Scheiß an.
-[CRED380]
-ALETHEIA SIMONSON
+[SAL4_I6:SAL4]
+~w~Ich sollte die Schlampe umnieten lassen. Die verscheißert mich!
-[CRED381]
-JOHN JANSEN
+[SAL4_I7:SAL4]
+~w~Na, was die kann, kann ich auch.
-[FEC_LB1]
-Schau
+[SAL4_I8:SAL4]
+~w~Toni, du überbringst eine Nachricht für mich!
-[FEC_LB2]
-nach hinten
+[SAL4_A2:SAL4]
+~w~Jetzt zieh den ~r~Chauffeur~w~ aus dem Verkehr.
-[FEC_LB3]
-Nach hinten schauen
+[SAL4_A3:SAL4]
+~w~Hey!
-[FEC_R3]
-(R3-Taste)
+[SAL4_A4:SAL4]
+~w~Steig in die ~b~Limo.
-[FEC_PED]
-Steuerung zu Fuß
+[SAL4_A5:SAL4]
+~w~Fahr mit der Limousine zum ~y~Radiosender!
-[FEC_VEH]
-Steuerung in Fahrzeug
+[SAL4_A6:SAL4]
+~w~Jetzt warte auf Hopper.
-[FEC_FPR]
-Steuerung für First-Person
+[SAL4_A7:SAL4]
+~w~Stell die Limo wieder auf ihren Platz. Hopper darf keinen Verdacht schöpfen.
-[FEC_CMM]
-Allgemeine Steuerung
+[SAL4_B1:SAL4]
+~w~Harwood Fährhafen und zwar flott!
-[FEC_PWL]
-Nach links
+[SAL4_B2:SAL4]
+~w~Wie Sie wünschen!
-[FEC_PWR]
-Nach rechts
+[SAL4_C1:SAL4]
+~w~Jag Hopper eine Heidenangst ein!
-[FEC_PWF]
-Vorwärts gehen
+[SAL4_C2:SAL4]
+Angst
-[FEC_PWT]
-Auf Kamera zugehen
+[SAL4S1:SAL4]
+~w~Hey, langsam, wir fahren hier kein Rennen!
-[FEC_PLB]
-Nach hinten schauen
+[SAL4S2:SAL4]
+~w~Ist das auch der richtige Weg?
-[FEC_PFR]
-Waffe abfeuern
+[SAL4S3:SAL4]
+~w~Hey, Sie sind gar nicht mein Fahrer!
-[FEC_CLE]
-Eine Waffe nach links
+[SAL4S4:SAL4]
+~w~Verdammt, wer sind Sie?!
-[FEC_CRI]
-Eine Waffe nach rechts
+[SAL4S5:SAL4]
+~w~Halt's Maul!
-[FEC_LKT]
-Ziel fixieren
+[SAL4S6:SAL4]
+~w~Ab sofort tust du genau das, was Salvatore Leone dir sagt!
-[FEC_PJP]
-Fußgänger springen
+[SAL4S7:SAL4]
+~w~Capiche?
-[FEC_PSP]
-Fußgänger sprinten
+[SAL4S8:SAL4]
+~w~Da... damit machen Sie mir keine Angst!
-[FEC_PSH]
-Fußgänger schießen
+[SAL4S9:SAL4]
+~w~Abwarten!
-[FEC_TLF]
-Ein Ziel nach links
+[SAL4S10:SAL4]
+~w~Lassen Sie mich sofort aussteigen!
-[FEC_TRG]
-Ein Ziel nach rechts
+[SAL4S11:SAL4]
+~w~Bitte! Sie bringen uns beide um!
-[FEC_CCM]
-Kamera hinter Spieler zentrieren
+[SAL4S12:SAL4]
+~w~Neeeiiin!
-[FEC_SZI]
-Mit Präzisionsgewehr heranzoomen
+[SAL4S13:SAL4]
+~w~Womit habe ich das verdient?
-[FEC_SZO]
-Mit Präzisionsgewehr herauszoomen
+[SAL4_F1:SAL4]
+~w~Wo ist meine Limousine?
-[FEC_LKL]
-First-Person nach links schauen
+[SAL4_F2:SAL4]
+~w~Sie sind nicht mein Fahrer. Ich rufe die Polizei!
-[FEC_LRT]
-First-Person nach rechts schauen
+[SAL4_F3:SAL4]
+~r~Zu spät, Hopper ist dir draufgekommen!
-[FEC_LUP]
-First-Person nach oben schauen
+[SAL4_F4:SAL4]
+~w~Salvatore kann mich kreuzweise!
-[FEC_LDN]
-First-Person nach unten schauen
+[SAL4_F5:SAL4]
+~r~Die Limousine wurde zerstört!
-[FEC_LBH]
-Aus Fahrzeug nach hinten schauen
+[SAL4_F6:SAL4]
+~r~Hopper ist tot!
-[FEC_LLF]
-Aus Fahrzeug nach links schauen
+[SAL4_F7:SAL4]
+~r~Hopper ist entkommen!
-[FEC_LRG]
-Aus Fahrzeug nach rechts schauen
+[SAL4_F8:SAL4]
+~r~Die verbeulte Limousine hat Hopper verschreckt.
-[FEC_HRN]
-Hupe
+[SAL4_F9:SAL4]
+~r~Hopper wurde verschreckt.
-[FEC_HBR]
-Handbremse
+[SAL4_P1:SAL4]
+~w~Okay! Okay! Ich habe genug!
-[FEC_ACL]
-Gas geben
+[SAL4P1A:SAL4]
+~w~Ich tue, was Sie wollen.
-[FEC_BRK]
-Bremsen
+[SAL4_P2:SAL4]
+~w~Bring Hopper zu den Streikposten am ~y~Fährhafen.
-[FEC_TSM]
-Spezialmissionen An/Aus
+[SAL4_P3:SAL4]
+~w~Und denken Sie an unsere kleine Abmachung, Lady!
-[FEC_CRD]
-Radiosender wechseln
+[SAL4_H1:SAL4]
+~w~Eine Mischung aus Tempo, Karambolagen und Stunt-Sprüngen sollte Hopper gefügig machen.
-[FEC_ENT]
-In Fahrzeug Ein-/Aussteigen
+[SAL4_F0:SAL4]
+~r~Zu spät! Hopper hat den Radiosender verlassen!
-[FEC_WPN]
-Waffe abfeuern
+[SAL4_A:SAL4]
+~w~Du musst zu dem ~y~Radiosender~w~, bevor Hopper ihn um 0~1~:00 Uhr verlässt.
-[FEC_PAS]
-Pause
+[SAL4_A1:SAL4]
+~w~Du musst zu dem ~y~Radiosender~w~, bevor Hopper ihn um ~1~:00 Uhr verlässt.
-[FEC_FPO]
-First Person Weapons Toggle.
+{=================================== MISSION TABLE SAL6 ===================================}
-[FEC_SMS]
-Mauszeiger An/Aus
+[SAL6_A0:SAL6]
+~w~Toni, wir haben Ärger! Großen Ärger!
-[FEC_CMS]
-Blickwinkel wechseln.
+[SAL6_A1:SAL6]
+~w~Was ist los, Sal?
-[FEC_TSS]
-Screen Shot
+[SAL6_A3:SAL6]
+~w~Die machen uns fertig!
-[FEC_DBG]
-Debug-Menü
+[SAL6_A4:SAL6]
+~w~Da haben wir gerade einen Krieg hinter uns und PÄNG! - stecken wir mitten im nächsten!
-[FEC_TGD]
-Mit Pad zwischen Spiel- u. Debug-Modus wechseln
+[SAL6_A5:SAL6]
+~w~Ich sag's dir - gerade wo's aufwärts ging! Mir klebt ein scheiß Fluch am Leib!
-[FEC_TDO]
-Debug-Kamera Aus
+[SAL6_A6:SAL6]
+~w~Hey, keine Sorge, Boss! Ich kümmere mich darum.
-[FEC_IVH]
-Maus horizontal invertieren
+[SAL6_AA:SAL6]
+~w~Sal hat die Waffen, die du brauchst, in der Garage deponiert.
-[FEC_MSL]
-MAUSTASTE L
+[SAL6_B:SAL6]
+~w~Schlage die ~r~Diablos~w~ zurück, ehe alle Leone-Gangster tot sind!
-[FEC_MSM]
-MAUSTASTE M
+[SAL6_1:SAL6]
+~w~Es sind nur noch ~1~ Leones am Leben!
-[FEC_MSR]
-MAUSTASTE R
+[SAL6_2:SAL6]
+~w~Es ist nur noch 1 Leone am Leben!
-[FEC_QUE]
-???
+[SAL6_C1:SAL6]
+~w~Wir werden hier massakriert, Toni!
-[FEC_TWO]
-Nur zwei Tastaturtasten erlaubt
+[SAL6_C2:SAL6]
+~w~Für so'n Scheiß krieg ich zu wenig bezahlt, Mann!
-[FEC_OMS]
-Nur eine Maustaste erlaubt
+[SAL6_C3:SAL6]
+~w~Du bist irre, Toni! Wir gehen alle drauf!
-[FEC_OJS]
-Nur ein Joystick-Button pro Aktion erlaubt
+[SAL6_E1:SAL6]
+~w~Sal?
-[FEC_PTL]
-"Ziel fixieren" u. "Waffenauswahl links" gleichzeitig drücken.
+[SAL6_E2:SAL6]
+~w~Toni! Ist es vorbei? Wie lief's?
-[FEC_PTR]
-"Ziel fixieren" u. "Waffenauswahl rechts" gleichzeitig drücken.
+[SAL6_E3:SAL6]
+~w~Sieht nicht gut aus, Sal.
-[FEC_LBC]
-"Nach links schauen" u. "Nach rechts schauen" gleichzeitig drücken.
+[SAL6_E4:SAL6]
+~w~Ein paar Jungs konnte ich retten, aber es gab vorher schon zu viele Verluste.
-[FEC_JBO]
-JOY ~1~
+[SAL6_E5:SAL6]
+~w~Ich glaub, den Teil der Stadt verlieren wir.
-[FEC_WAR]
-Achtung!
+[SAL6_E6:SAL6]
+~w~Nur über meine Leiche! Noch ist es nicht vorbei!
-[FEC_OKK]
-OK
+[SAL6_E7:SAL6]
+~w~Gar nichts verlier ich! Die Leones geben niemals klein bei!
-[FEC_DLF]
-Löschen fehlgeschlagen.
+[SAL6_E8:SAL6]
+~w~Hast du gehört, Toni?
-[FEC_SVU]
-Speichern fehlgeschlagen.
+[SAL6_E9:SAL6]
+~w~Hab verstanden, Sal.
-[FEC_LUN]
-Laden fehlgeschlagen. Datei beschädigt. Bitte löschen.
+[SAL6_G0:SAL6]
+~r~Alle Leone-Leute sind tot.
-[FEC_PAD]
-Gamepad
+[SAL6_Z1:SAL6]
+Leones
-[FEC_JOY]
-Joystick
+[SAL6_Z2:SAL6]
+Diablos
-[FES_CSA]
-Wählen Sie eine Skin aus der Liste aus:
+[SAL6_X0:SAL6]
+Got threat
-[FET_HRD]
-STANDARDEINSTLLG. WIEDERHERGESTELLT
+[SAL6_X1:SAL6]
+Had threat
-[FET_MST]
-MAUSSTEUERUNG
+[SAL6_X2:SAL6]
+Find threat
-[FEC_STR]
-NUM STERN
+[SAL6_X3:SAL6]
+Complain
-[FET_MIG]
-LINKS,RECHTS,MAUSRAD ZUR EINSTLLG.
+[SAL6_C0:SAL6]
+~w~Lass die Wichser! Verschwinden wir schleunigst hier!
-[FET_CIG]
-RÜCKT. ZUM LÖSCHEN - LMT,RETURN ZUM ÄNDERN
+[SAL6_A2:SAL6]
+~w~Wo soll das noch enden? Die Diablos haben in Hepburn einen Großangriff auf uns gestartet!
-[FET_DSN]
-Standard-Player Skin.bmp
+{=================================== MISSION TABLE SAL7 ===================================}
-[FET_RSO]
-ORIGINAL-EINSTELLG. WIEDERHERGESTELLT
+[SAL7_01:SAL7]
+~w~Hey, Sal!
-[FET_RSC]
-HARDWARE NICHT VERFÜGBAR - ORIGINAL-EINSTELLG. WIEDERHERGESTELLT
+[SAL7_02:SAL7]
+~w~Toni! Wie findest du mein neues Auto?
-[FEA_3DH]
-AUDIO HARDWARE
+[SAL7_05:SAL7]
+~w~Ein Prachtstück, hä? Luxusausstattung, das Beste vom Besten.
-[FEA_SPK]
-BOXEN KONFIGURATION
+[SAL7_A6:SAL7]
+~w~...ach so, Midlife-Krise!
-[FEM_LOD]
-DISTANZ-DARSTELLG.
+[SAL7_07:SAL7]
+~w~Schnauze! Toni, hör zu.
-[FEM_VSC]
-FRAME SYNC
+[SAL7_08:SAL7]
+~w~In meinem Lagerhaus am Callahan Point liegt ein Riesenhaufen Geld. Das müsste abgeholt werden.
-[FEM_FRM]
-FRAME LIMITER
+[SAL7_10:SAL7]
+~w~Außer dir trau ich da keinem.
-[FEM_MM]
-HAUPTMENÜ
+[SAL7_11:SAL7]
+~w~Mädels, wollt ihr den ganzen Tag quatschen, oder fahren wir?
-[FED_RES]
-BILDSCHIRMAUFLSG.
+[SAL7_12:SAL7]
+~w~Verdammt, Weib! Hab ich dir erlaubt, den Mund aufzumachen?
-[FET_CTL]
-CONTROLLER-SETUP
+[SAL7_20:SAL7]
+~w~Komm! Beeil dich!
-[FET_OPT]
-OPTIONEN
+[SAL7_21:SAL7]
+~w~Okay...
-[FEC_MSH]
-MAUSEMPFINDLICHKEIT
+[SAL7_22:SAL7]
+~w~Los geht's!
-[FEC_IVV]
-MAUS VERTIKAL INVERTIEREN
+[SAL7_23:SAL7]
+~w~Hey, Toni! Come sta?
-[FET_MTI]
-MAUS STEURUNGSKONFIG.
+[SAL7_30:SAL7]
+~w~Du musst zu dem ~y~Lagerhaus.
-[FEC_FNC]
-F~1~
+[SAL7_40:SAL7]
+~w~Hol Salvatores gesamtes Geld raus, ehe es in Flammen aufgeht!
-[FEC_IRT]
-EINFG
+[SAL7_50:SAL7]
+~w~Bring die Beute zu ~y~Salvatore.
-[FEC_DLL]
-ENTF
+[SAL7_NM:SAL7]
+~w~Geh wieder rein! Du hast noch nicht das ganze ~g~Geld.
-[FEC_HME]
-POS1
+[SAL7_E1:SAL7]
+~w~Macht ihn fertig!
-[FEC_END]
-ENDE
+[SAL7_E2:SAL7]
+~w~Stirb!
-[FEC_PGU]
-BILD AUF
+[SAL7_E3:SAL7]
+~w~Da ist einer!
-[FEC_PGD]
-BILD AB
+[SAL7_E4:SAL7]
+~w~Ich sehe ihn!
-[FEC_UPA]
-AUF
+[SAL7_T1:SAL7]
+~w~Zurück!
-[FEC_DWA]
-AB
+[SAL7_T2:SAL7]
+~w~Wie schmeckt dir das!
-[FEC_LFA]
-LINKS
+[SAL7_T3:SAL7]
+~w~Na, komm!
-[FEC_RFA]
-RECHTS
+[SAL7_T4:SAL7]
+~w~Friss das!
-[FEC_NUM]
-NUM
+[SAL7_F1:SAL7]
+~r~Du hast Salvatores Geld nicht rechtzeitig geborgen!
-[FEC_NMN]
-NUM~1~
+[SAL7_06:SAL7]
+~w~Was stinkt denn da so?
-[FEC_FWS]
-NUM /
+[SAL7_42:SAL7]
+~w~Hol dir das ~g~Geld~w~, bevor es zu brennen anfängt!
-[FEC_PLS]
-NUM +
+{=================================== MISSION TABLE SAL8 ===================================}
-[FEC_MIN]
-NUM -
+[SAL8_VE:SAL8]
+~r~v1.2
-[FEC_DOT]
-NUM ,
+[SAL8_11:SAL8]
+~w~Hol ein Auto, Toni, wir fahren wohin...
-[FEC_NLK]
-NUMLOCK
+[SAL8_12:SAL8]
+~w~Fahr Richtung Fähranlegestelle.
-[FEC_ETR]
-ENT
+[SAL812A:SAL8]
+~w~Aber die streiken noch... es gehen keine Fähren.
-[FEC_SLK]
-ROLLEN
+[SAL812B:SAL8]
+~w~Fahr einfach. Überlass das Denken mir.
-[FEC_PSB]
-UNTBR
+[SAL8_14:SAL8]
+~w~Heiliger Bimbam! Hier wimmelt's nur so von Bullen! Nichts wie weg hier, verdammt!
-[FEC_BSP]
-RÜCKT.
+[SAL8_15:SAL8]
+~w~Wo fahren wir hin?
-[FEC_TAB]
-TAB
+[SAL8_16:SAL8]
+~w~Callahan Bridge!
-[FEC_CLK]
-CAPSLOCK
+[SAL816A:SAL8]
+~w~Die Callahan Bridge ist noch nicht fertig!
-[FEC_RTN]
-RET
+[SAL816B:SAL8]
+~w~Gleich sind aber wir 'fertig', wenn du nicht fährst! Gib Gas!
-[FEC_LSF]
-LUMSCHALT
+[SAL816C:SAL8]
+~w~Fahr zur ~y~Callahan Bridge.
-[FEC_RSF]
-RUMSCHALT
+[SAL8_17:SAL8]
+~w~Was soll das, verdammt?
-[FEC_LCT]
-LSTRG
+[SAL8_18:SAL8]
+~w~Toni! Wir brauchen ein Auto!
-[FEC_RCT]
-RSTRG
+[SAL818A:SAL8]
+~w~Ich hab nicht vor, zu Fuß zu gehen!
-[FEC_LAL]
-LALT
+[SAL8_19:SAL8]
+~w~Du hast ~b~Salvatore~w~ zurückgelassen. Hol ihn!
-[FEC_RAL]
-RALT
+[SAL8_20:SAL8]
+~w~Bring uns hier weg!
-[FEC_LWD]
-LWIN
+[SAL8_22:SAL8]
+~w~Toni, du hast es geschafft! Ich wusste, auf dich ist Verlass!
-[FEC_RWD]
-RWIN
+[SAL822B:SAL8]
+Hör zu, ich kenn einen sicheren Ort, wo wir 'ne Weile untertauchen können.
-[FEC_WRC]
-WINKLICK
+[SAL822C:SAL8]
+Komm, fahren wir.
-[FEC_SPC]
-LEERT.
+[SAL8_25:SAL8]
+~w~Du musst alles aus der Scheißkarre rausholen! Drück drauf, Toni!
-[WIN_TTL]
-GTA VC
+[SAL825A:SAL8]
+~w~OH, SHIIIIIIIIIIIIIT!
-[WIN_95]
-GTA VC läuft nicht unter Windows 95
+[SAL8_26:SAL8]
+Sprungtempo
-[WIN_DX]
-GTA VC benötigt mind. DirectX Version 8.1
+[SAL8_27:SAL8]
+~w~Ja. Da wären wir.
-[FET_EIG]
-KANN DIESER AKTION KEINE STEUERUNG ZUWEISEN
+[SAL8_28:SAL8]
+~w~Ich seh mich mal um. Verschaff mir 'nen Überblick.
-[FET_DAM]
-DYNAMISCHE AKUSTIK
+[SAL828A:SAL8]
+~w~Vielleicht sehen wir uns dann später wieder hier.
-[FEQ_SRE]
-Wirklich beenden? Alle Daten seit dem letzten Speichern werden verlorengehen. Weiter?
+[SAL8_29:SAL8]
+~r~Sal ist tot!
-[FEQ_SRW]
-Spiel wirklich beenden?
+[SAL829A:SAL8]
+~w~Die Cops haben dich entdeckt!
-[FET_QG]
-SPIEL BEENDEN
+[SAL831:SAL8]
+~w~Versteck in Staunton jetzt verfügbar!
-[FEN_STA]
-SPIEL STARTEN
+[SAL833:SAL8]
+~w~Hau vor den Cops ab!
-[REPLAY]
-WIEDERHOLUNG
+[SAL823A:SAL8]
+~w~Oder vielleicht doch nicht?
-[FET_PAU]
-PAUSENMENÜ
+[SAL8_24:SAL8]
+~w~Obwohl die U-Bahn- und Fährlinien den Betrieb offiziell wieder aufgenommen haben,
-[FEC_ANS]
-Aktion
+[SAL824A:SAL8]
+~w~setzen militante Arbeiter ihre Blockade in Teilen der Stadt fort.
-[CVT_MSG]
-Texturen werden in optimales Format für Ihre Grafikkarte konvertiert
+[SAL824B:SAL8]
+~w~Die Hebebrücke zwischen Staunton Island und Shoreside Vale wurde geschlossen.
-[FEC_SFT]
-UMSCHALT
+[SAL824C:SAL8]
+~w~Die Streikenden misstrauen den Versprechungen der Stadtverwaltung bezüglich der Zukunft der Fähren.
-[CVT_ERR]
-Kein Platz mehr auf der Festplatte. Bitte schaffen Sie Speicherplatz, bevor Sie fortfahren. ESC zum Abbrechen.
+[SAL824D:SAL8]
+~w~Ein kleiner Lichtblick: die Callahan Bridge nähert sich ihrer Fertigstellung.
-[FEH_VMP]
-KARTE ANSEHEN
+[SAL824E:SAL8]
+~w~Aber dieser Liberty City-Pendler hatte das Warten satt.
-[FES_DEE]
-Löschen fehlgeschlagen! Bitte noch einmal versuchen.
+[SAL8_23:SAL8]
+~w~Die Arbeitskampfmaßnahmen, die Portland vom Rest der Stadt abgeschnitten hatten, sind endlich beendet.
-[FES_CMP]
-Speichern fehlgeschlagen! Bitte noch einmal versuchen.
+[SAL812C:SAL8]
+~w~Fahr zur ~y~Fähranlegestelle.
-[FESZ_WR]
-Spiel wird gespeichert. Bitte warten...
+[SAL8WAN:SAL8]
+Die Cops wollen Salvatore UNBEDINGT! Das Fahrzeug umzuspritzen, wird sie nur kurze Zeit von seiner Fährte ablenken.
-[FELD_WR]
-Spiel wird geladen. Bitte warten...
+[SAL8_21:SAL8]
+~w~Fahr zu der ~y~Brücke!
-[FEDL_WR]
-Gespeichertes Spiel wird gelöscht. Bitte warten...
+[SAL830:SAL8]
+~w~Begib dich zu dem ~y~Versteck.
-[PCRESRT]
-Neues Spiel wird gestartet. Bitte warten...
+[SAL822A:SAL8]
+~w~Ich könnte dich küssen, wenn du rasiert wärst!
-[FET_STI]
-Standard-Steuerung
+[SAL832:SAL8]
+~w~Du brauchst einen fahrbaren Untersatz!
-[FET_CTI]
-Classic-Steuerung
+[DRIV_01:SAL8]
+Also?
-[FET_PS]
-SPIELER-SKIN SETUP
+[DRIV_02:SAL8]
+Also was?
-[FEH_NA]
-OPTION NICHT VERFÜGBAR
+[DRIV_03:SAL8]
+Stell dich nicht blöd, Kleiner.
-[FEH_MPH]
-MAUS, CURSOR ZUM BEWEGEN - BILD AUFW., BILD ABW., MAUSRAD ZUM ZOOMEN, L - LEGENDE
+[DRIV_06:SAL8]
+Ich weiß, was du über mich verbreitest.
-[FEA_MP3]
-MP3 PLAYER
+[DRIV_07:SAL8]
+Du hältst mich für dämlich, hä?
-[NO_PCCD]
-Bitte legen Sie die GTA Vice City Disk ein, oder drücken Sie ESC zum Abbrechen
+[DRIV_08:SAL8]
+Stimmt das?
-[FEH_SSA]
-CURSOR ZUM BEWEGEN - S UM ZU SPEICHERN
+[DRIV_09:SAL8]
+Boss, ich hab gar nichts über Sie verbreitet.
-[FES_CMI]
-LETZTE ERFÜLLTE MISSION
+[DRIV_10:SAL8]
+Ach, Scheiße. Ich weiß auch nicht, was mit mir los ist.
-[FET_STS]
-STATISTIKEN GESPEICHERT IN 'STATS.HTML' + 'STATS.TXT'
+[DRIV_11:SAL8]
+Herr im Himmel.
-[WIN_VDM]
-Nicht genug verfügbarer Grafikspeicher für GTA Vice City vorhanden
+[DRIV_12:SAL8]
+Ich leide langsam unter Verfolgungswahn, Toni. Scheiße.
-[FEC_ERI]
-Fehler! Eine oder mehrere Aktionen haben keine Tastenbelegungen. Bitte alle Aktionen belegen.
+[DRIV_13:SAL8]
+Nur, weil ich glaube, dass alle mich hassen, heißt das nicht, dass es nicht stimmt, verstehst du?
-[FEC_TFU]
-Geschütz + nach hinten neigen
+[DRIV_14:SAL8]
+Das Schwein von Bürgermeister will mich fertig machen!
-[FEC_TFD]
-Geschütz + nach vorne neigen
+[DRIV_15:SAL8]
+Er will mir jede Scheiße in die Schuhe schieben, die im Viertel passiert ist.
-[FET_RIG]
-WÄHLEN SIE EINE NEUE TASTENBELEGUNG FÜR DIESE AKTION
+[DRIV_16:SAL8]
+Und nicht nur das, was auf meine Kappe geht, sondern alles.
-[FEA_NM3]
-KEINE MP3-DATEIEN GEFUNDEN
+[DRIV_17:SAL8]
+Komm, nehmen wir uns der Sache an.
-[FEA_MPB]
-MP3 LAUTSTÄRKE-BOOST
+[DRIV_04:SAL8]
+- Das hab ich schon gemacht, als deine Mutter noch anschaffen ging. ~n~ - Was ist denn los?
-[FEA_MUS]
-LAUTSTÄRKE MUSIK
+{=================================== MISSION TABLE JDT1 ===================================}
-[FEA_SFX]
-LAUTSTÄRKE SFX
+[JDT1_CA:JDT1]
+~w~Ich bin mir sicher, dass die Girls mich übers Ohr hauen.
-[FEA_ADP]
-AUTOMATISCHE HARDWARE ERKENNUNG
+[JDT1_CB:JDT1]
+~w~Wir sollten uns mal in der Gegend umsehen, was da los ist.
-{=================================== MISSION TABLE AMBULAE ===================================}
+[JDT1_DA:JDT1]
+~w~Da ist eins meiner Girls!
-[A_COMP1:AMBULAE]
-Krankenwagen-Missionen abgeschlossen: $ ~1~
+[JDT1_DB:JDT1]
+~w~Hey! Die kenn ich.
-[ATUTOR2:AMBULAE]
-~g~Fahre die Patienten VORSICHTIG in die Klinik. Jede Erschütterung verringert ihre Überlebenschancen.
+[JDT1_DC:JDT1]
+~w~Die ist eins von meinen Girls.
-[A_FULL:AMBULAE]
-~r~Krankenwagen voll!!
+[JDT1_DD:JDT1]
+~w~Das ist eins von unseren Girls.
-[A_FAIL2:AMBULAE]
-~r~Deine Bummelei war tödlich für den Patienten!
+[JDT1_DE:JDT1]
+~w~Das Girl da...
-[A_FAIL3:AMBULAE]
-~r~Der Patient ist tot!!
+[JDT1_DF:JDT1]
+~w~Halt bei ihr an.
-[A_PASS:AMBULAE]
-Gerettet!
+[JDT1_DG:JDT1]
+~w~Halt neben der an.
-[A_COMP2:AMBULAE]
-Du ermüdest nie!
+[JDT1_DH:JDT1]
+~w~Reden wir mal mit ihr.
-[A_CANC:AMBULAE]
-~r~Krankenwagen-Mission abgebrochen!
+[JDT1_DI:JDT1]
+~w~Park neben ihr.
-[A_COMP3:AMBULAE]
-Krankenwagen-Missionen abgeschlossen! Du wirst beim Rennen nie ermüden!
+[JDT1_DJ:JDT1]
+~w~Fahr zu ihr hin.
-[ALEVEL:AMBULAE]
-Krankenwagen-Mission Level ~1~
+[JDT1_MA:JDT1]
+~w~Hi, JD. Das wollte ich gerade bei dir abliefern, ehrlich!
-[A_FAIL1:AMBULAE]
-Krankenwagen-Mission beendet.
+[JDT1_MB:JDT1]
+~w~Jesus! Traust du mir nicht mehr, JD?
-[A_SAVES:AMBULAE]
-GERETTETE MENSCHEN: ~1~
+[JDT1_MC:JDT1]
+~w~Hey, JD. War 'n schlechter Tag... mehr hab ich nicht.
-{=================================== MISSION TABLE ASSIN1 ===================================}
+[JDT1_MD:JDT1]
+~w~Big Brother's watching, oder wie? Hier hast du dein Scheißgeld!
-[ASM1_5:ASSIN1]
-~r~Er hat seine Lieferungen abgeschlossen!
+[JDT1_ME:JDT1]
+~w~Hey, JD. Hier hab ich dein Geld.
-[ASM1_6:ASSIN1]
-Weitere Lieferungen:
+[JDT1_MF:JDT1]
+~w~Hast du gedacht, ich liefere das nicht bei dir ab, oder was?
-[ASM1_7:ASSIN1]
-~g~Carl Pearson, Pizza-Lieferant. Schalte ihn aus, bevor er seine Lieferungen abschließt.
+[JDT1_MG:JDT1]
+~w~Überwachst du uns jetzt alle, JD?
-[ASM1_A:ASSIN1]
-Mr. Teal, Ihre Hilfe bei der Beseitigung der Landeier war äußerst wertvoll. Ich habe noch mehr Arbeit, die eine eher 'zupackende' Art verlangt.
+[JDT1_MH:JDT1]
+~w~Alles da... kannst ja nachzählen!
-[ASM1_D:ASSIN1]
-Mr. Teal, Ihre Hilfe bei der Beseitigung der Landeier war äußerst wertvoll.
+[JDT1_EA:JDT1]
+~w~Hey! Der Zuhälter kassiert eins von meinen Girls ab!
-{=================================== MISSION TABLE ASSIN2 ===================================}
+[JDT1_EB:JDT1]
+~w~Hol mir das Geld zurück, Toni!
-[ASM2_1:ASSIN2]
-~g~Mrs. Dawson verlässt bald den Juwelier in Vice Point. Schalte sie aus. Es muss wie ein Autounfall aussehen.
+[JDT1_EC:JDT1]
+~w~Was macht der Zuhälter da, verdammt?
-[ASM2_3:ASSIN2]
-~g~Das Fahrzeug wird explodieren! Hau ab!
+[JDT1_ED:JDT1]
+~w~Er sackt mein Geld ein!
-[ASM2_4:ASSIN2]
-~r~Du hast ihr Auto beschädigt, obwohl sie nicht drin saß! Jetzt wird sie nicht einsteigen!
+[JDT1_EE:JDT1]
+~w~Schnapp ihn dir, Toni!
-[ASM2_5:ASSIN2]
-~r~Sie ist entwischt!
+[JDT1_45:JDT1]
+~w~Hol dir von dem Zuhälter das ~g~Geld.
-[ASM2_6:ASSIN2]
-~r~Du warst zu nah am Unfallort!
+[JDT1_46:JDT1]
+~w~Der Zuhälter ist entkommen!
-[ASM2_7:ASSIN2]
-~g~Keine Waffen! Es soll wie ein Unfall aussehen! Dränge sie stattdessen von der Fahrbahn!
+[JDT1_FA:JDT1]
+~w~Das ist eins von meinen Girls in dem Auto!
-[ASM2_8:ASSIN2]
-~g~Das ganze muss wie ein Unfall aussehen. Benutze keine Waffen.
+[JDT1_FB:JDT1]
+~w~Setz langsam zu dem ~b~Auto~w~ zurück, ganz nahe, damit ich mir das ansehen kann.
-[ASM2_9:ASSIN2]
-Du brauchst einen fahrbaren Untersatz für diesen Job.
+[JDT1_FC:JDT1]
+~w~...schön langsam, wir wollen sie schließlich nicht stören!
-[ASM2_10:ASSIN2]
-~g~Wenn ihr Auto in Flammen aufgeht, entferne dich so weit wie möglich von der Unfallstelle.
+[JDT1_FD:JDT1]
+~w~Näher...
-[ASM2_11:ASSIN2]
-Hilfe!
+[JDT1_FE:JDT1]
+~w~Näher...
-[ASM2_12:ASSIN2]
-Hilf mir doch jemand!
+[JDT1_FF:JDT1]
+~w~Langsam...
-[ASM2_13:ASSIN2]
-Oh Gott!
+[JDT1_IA:JDT1]
+~w~Zum Kuckuck, Toni! Du hast sie verscheucht!
-[ASM2_A:ASSIN2]
-Mein Kompliment für die gute Arbeit, Mr. Teal. Mein Kunde war sehr zufrieden.
+[JDT1_GA:JDT1]
+~w~Jesus, Toni! Ich seh überhaupt nichts!
-[ASM2_2:ASSIN2]
-Health:
+[JDT1_75:JDT1]
+~w~Warte bis das ~b~Girl~w~ JD ihr Geld gibt!
-{=================================== MISSION TABLE ASSIN3 ===================================}
+[JDT1_HA:JDT1]
+~w~...oh, ja!
-[ASM3_11:ASSIN3]
-ZEIT:
+[JDT1_HB:JDT1]
+~w~Weiter, Baby!
-[ASM3_C:ASSIN3]
-Eine europäische Gang plant einen Überfall auf eine Bank in Vice City. Meinen Arbeitgebern wäre sehr daran gelegen, dass das nicht passiert.
+[JDT1_HC:JDT1]
+~w~So ist's gut. So ist's gut.
-[ASM3_D:ASSIN3]
-Alle Mitglieder der Gang haben eine Tarnung, solange sie sich hier in Vice City aufhalten. Manche haben Jobs, andere geben sich als Touristen aus.
+[JDT1_HD:JDT1]
+~w~...oh, JA!
-[ASM3_E:ASSIN3]
-Infos über alle Zielpersonen und ihre wahrscheinlichen Aufenthaltsorte kleben unter dem Telefon.
+[JDT1_HE:JDT1]
+~w~Das ist wunderbar!
-[ASM3_14:ASSIN3]
-~g~Dick Tanner hält sich bei DBP Security am Ocean Drive auf.
+[JDT1_HF:JDT1]
+~w~Sind wir hier fertig?
-[ASM3_15:ASSIN3]
-~g~Marc Hammond und Franco Carter halten sich in der Nähe des Juwelierladens in Vice Point auf.
+[JDT1_JA:JDT1]
+~w~Gute Arbeit, Toni!
-[ASM3_16:ASSIN3]
-~g~Nick Kong hält sich in der Nähe von Washington Beach auf.
+[JDT1_JB:JDT1]
+~w~Glaub nicht, dass die Girls mir auf dieser Schicht noch mal Ärger machen.
-[ASM3_18:ASSIN3]
-~g~Geh nicht zu nahe an deine Zielperson heran, sonst entdeckt sie dich und du musst hinter ihr herjagen.
+[JDT1_LA:JDT1]
+~w~Toni! Das hast du sauber vermasselt!
-[ASM3_19:ASSIN3]
-~g~Er hat dich gesehen! Schalte ihn aus!
+[JDT1_LB:JDT1]
+~w~Ich fahre zurück zum Club!
-[ASM3_20:ASSIN3]
-~g~Sie haben dich gesehen! Schalte alle beide aus!
+[JDT1_ML:JDT1]
+~w~Es sind noch $~1~ abzukassieren!
-[ASM3_21:ASSIN3]
-~r~Du hast nicht alle Mitglieder der Gang rechtzeitig erledigt!
+[JDT1O01:JDT1]
+~w~Steig in JDs ~b~Van.
-[ASM3_22:ASSIN3]
-~g~Geh nicht zu nahe an deine Zielpersonen heran, sonst entdecken sie dich und versuchen zu fliehen.
+[JDT1O02:JDT1]
+~w~Du hast ~b~JD~w~ zurückgelassen. Hol ihn!
-[ASM3_12:ASSIN3]
-~g~In der Nähe sind einige Waffen für dich deponiert worden, falls du sie brauchen solltest. Du hast ~h~9 MINUTEN~g~, um alle Gang-Mitglieder auszuschalten.
+[JDT1O03:JDT1]
+~w~Warte bis ~b~JD~w~ eingestiegen ist.
-[ASM3_13:ASSIN3]
-~g~Mike Griffin arbeitet an einer Plakatwand in Washington.
+[JDT1O04:JDT1]
+~w~Such im Rotlichtviertel nach JDs Girls.
-[ASM3_17:ASSIN3]
-~g~Charlie Dilson fährt mit dem Motorrad in Washington herum.
+[JDT1O05:JDT1]
+~w~Fahr zurück zu ~y~JDs Club.
-{=================================== MISSION TABLE ASSIN4 ===================================}
+[JDT1O07:JDT1]
+~w~Halte neben dem ~b~Girl.
-[ASM4_10:ASSIN4]
-~g~Du warst anscheinend nicht der einzige, der hinter dem Aktenkoffer her war. Bring ihn schnell ins Ammu-Nation!
+[JDT1O08:JDT1]
+~w~Erledige den ~r~Zuhälter.
-[ASM4_12:ASSIN4]
-Distanz:
+[JDT1O09:JDT1]
+~w~Kassiere eins von JDs ~b~Girls~w~ ab.
-[ASM4_15:ASSIN4]
-~g~Nimm das Präzisionsgewehr zu deiner Rechten.
+[JDT1_F1:JDT1]
+~r~JDs Van wurde zerstört!
-[ASM4_16:ASSIN4]
-~g~Behalte die Frau auf der Empore im Auge. Sie wird die Rolltreppe hinuntergehen und die Zielperson nach der Uhrzeit fragen.
+[JDT1_F2:JDT1]
+~r~JD ist tot!
-[ASM4_17:ASSIN4]
-~g~Schalte die Zielperson aus, NACHDEM die Frau mit ihr gesprochen hat. Aber erledige nicht die Frau.
+[JDT1_F3:JDT1]
+~r~Du hast während der Schicht nicht genug Geld abkassiert!
-[ASM4_18:ASSIN4]
-~g~Wenn die Zielperson ausgeschaltet ist, nimm ihren Aktenkoffer und bringe ihn zum Ammu-Nation in Downtown.
+[JDT1_D1:JDT1]
+~w~JDs Girls arbeiten im ~y~Rotlichtviertel.~w~ Fahr dorthin zurück!
-[ASM4_19:ASSIN4]
-~g~Halte Abstand von der Zielperson. Die Entfernungs-Anzeige rechts oben am Bildschirm zeigt an, wie nahe du an der Zielperson bist.
+[JDT1_F4:JDT1]
+~r~Es sind zu viele von JDs Girls draufgegangen!
-[ASM4_20:ASSIN4]
-~g~Lass den Anzeigebalken nicht an den Anschlag geraten, sonst sieht dich die Zielperson.
+[JDT1_KA:JDT1]
+~w~Was zum Teufel war das?
-[ASM4_21:ASSIN4]
-~g~Schnapp dir den Aktenkoffer!
+[JDT1_KB:JDT1]
+~w~Haben wir irgendwas gerammt?
-[ASM4_22:ASSIN4]
-~g~Bring den Aktenkoffer zum Ammu-Nation in Downtown.
+[JDT1_KC:JDT1]
+~w~Pass auf die Karre auf, Toni!
-[ASM4_23:ASSIN4]
-~g~Er hat dich entdeckt und versucht zu fliehen. Erledige ihn und schnapp dir den Aktenkoffer!
+[JDT1_81:JDT1]
+~w~Du hast den Freier verschreckt! Er will keine Zuschauer!
-[ASM4_25:ASSIN4]
-~r~Du hast die Frau ausgeschaltet, du Idiot!
+[JDT1O10:JDT1]
+~w~Nähere dich dem ~b~Auto~w~ in der Gasse.
-[ASM4_26:ASSIN4]
-~r~Die Zielperson hat das Flugzeug bestiegen!
+[JDT1O11:JDT1]
+~w~Hupe, damit sie auf dich aufmerksam werden!
-[ASM4_27:ASSIN4]
-~r~Die Zielperson hat dich gesehen! Du hättest Abstand halten sollen!
+[JDT1O12:JDT1]
+~w~Je länger du das Girl anschaffen lässt, desto mehr Geld nimmt sie ein.
-[ASM4_28:ASSIN4]
-~r~Die Zielperson hat dich gesehen! Er hat gehört, wie du geschossen hast!
+[JDT1_MO:JDT1]
+Schulden
-[ASM4_29:ASSIN4]
-~r~Schalte ihn erst aus, wenn er mit der Frau gesprochen hat!
+[JDT1_H1:JDT1]
+~w~Drücke die ~k~ ~VEHN~, um zu hupen.
-[ASM4_A:ASSIN4]
-Es wird Zeit für dickere Brocken, Mr. Teal. Unter dem Busch zu Ihrer Rechten ist ein Gewehr.
+[JDT1_WA:JDT1]
+~w~Beeilung! Die Schicht der ~b~Mädchen~w~ endet um ~1~:~1~!
-[ASM4_B:ASSIN4]
-Behalten Sie die Frau auf der Empore über dem Check-In im Auge. Sie wird durch die Menge gehen und jemanden nach der Uhrzeit fragen.
+[JDT1_WB:JDT1]
+~w~Beeil dich! Die Schicht der Mädchen endet um ~1~:~1~!
-[ASM4_C:ASSIN4]
-Sie müssen die betreffende Person ausschalten, ihren Aktenkoffer nehmen und ihn zu der Adresse, die unter dem Telefon klebt, bringen.
+[JDT1O06:JDT1]
+~w~Kassiere JDs Geld von seinen Nutten. Mach schnell, ihre Schicht endet um ~1~:~1~.
-{=================================== MISSION TABLE ASSIN5 ===================================}
+[JDT1_WC:JDT1]
+~w~Beeilung! Die Schicht der ~b~Mädchen~w~ endet um ~1~:0~1~!
-[ASM5_A:ASSIN5]
-Auf dem Dach der Cherry Popper-Eiscremefabrik findet eine Übergabe von wertvoller Ware statt.
+[JDT1_WD:JDT1]
+~w~Beeilung! Die Schicht der Mädchen endet um ~1~:0~1~!
-[ASM5_B:ASSIN5]
-Erledigen Sie alle Beteiligten, klauen Sie die Ware und bringen Sie sie zum Heliport am Flughafen.
+[JDT1P06:JDT1]
+~w~Kassiere JDs Geld von seinen Nutten. Mach schnell, ihre Schicht endet um ~1~:0~1~.
-[ASM5_C:ASSIN5]
-Links von Ihnen ist ein Tor, das zur Rückseite der Fabrik führt.
+[BONE_01:JDT1]
+Hey, JD! Komm raus!
-[ASM5_1:ASSIN5]
-~g~Geh auf das Gelände hinter der Cherry Popper-Eiscremefabrik und dann auf das Dach, wo der Deal abgewickelt wird.
+[BONE_02:JDT1]
+Hey, JD, du Perversling, komm raus, verdammt,
-[ASM5_2:ASSIN5]
-~g~Schnapp dir die Ware und bring sie zum Heliport am Flughafen.
+[BONE_03:JDT1]
+sonst komm ich rein und brech dir die Knochen!
-[ASM5_3:ASSIN5]
-~g~Bring die Ware zum Heliport am Flughafen!
+[BONE_04:JDT1]
+Ich komm ja schon... aber nicht so.
-{=================================== MISSION TABLE BANKJ1 ===================================}
+[BONE_05:JDT1]
+Hey, Toni, que pasa? Lass dich drücken.
-[WANTED1:BANKJ1]
-~g~Schüttle die Cops ab. Verringere deinen Fahndungslevel.
+[BONE_06:JDT1]
+Du bist ganz klebrig!
-[BJM1_A:BANKJ1]
-Tommy! Hey, Tommy, sieh mal, das ist super! Ich hab eine Minibar einbauen lassen!
+[BONE_07:JDT1]
+Och, die haben mich mit dem Stripperinnenzeug eingeschmiert.
-[BJM1_B:BANKJ1]
-Wir haben unten eine ausgewachsene Bar, Ken.
+[BONE_08:JDT1]
+Die stehen drauf. Die schmieren's überall hin und... also, wie geht's denn so?
-[BJM1_C:BANKJ1]
-Ja, ja, wie auch immer. Tja, ich hab die Tafel besorgt, die du haben wolltest.
+[BONE_09:JDT1]
+Scheiße, was hast du denn an?
-[BJM1_D:BANKJ1]
-Ah, das ist der Lohn des Jurastudiums: Die Fähigkeit, Anweisungen auszuführen.
+[BONE_10:JDT1]
+Das? In Liebesdingen mag ich's gewagt.
-[BJM1_E:BANKJ1]
-Also, ich brauche einen Safeknacker.
+[BONE_11:JDT1]
+Da... experimentiere ich gern, weißt du?
-[BJM1_F:BANKJ1]
-Oh, ok, mal nachdenken...Safeknacker, Safeknacker...Ich hab's! Du wirst begeistert sein!
+[BONE_16:JDT1]
+Tja, das ist so 'ne Sache. Man will uns bescheißen.
-[BJM1_G:BANKJ1]
-Aah, nicht dieser Schwachkopf. Der sitzt doch.
+[BONE_17:JDT1]
+Okay, warte kurz hier.
-[BJM1_H:BANKJ1]
-Wo sitzt er denn?
+[BONE_18:JDT1]
+Ich zieh mir schnell dieses, äh... Teil aus.
-[BJM1_I:BANKJ1]
-In einer Zelle in einem Polizeirevier. Er wartet auf seine Verlegung.
+[BONE_19:JDT1]
+Hey, Raven, kannst den Doppeldildo wegräumen.
-[BJM1_J:BANKJ1]
-Ich glaube fast, er kommt auf Bewährung raus...
+[BONE_20:JDT1]
+Toni, wir zwei machen jetzt 'ne Spritztour.
-[BJM1_1:BANKJ1]
-~g~Befreie Cam Jones aus der Haft!
+[BONE_21:JDT1]
+Wir müssen uns ein bisschen was angucken... Okay! Okay!
-[BJM1_3:BANKJ1]
-~g~In der Umkleide des Reviers findest du etwas Nützliches.
+[BONE_12:JDT1]
+- Ist doch nichts dabei, hm? Darfst zugucken, wenn du willst. ~n~ - Halt's Maul, verdammt, du bist ja krank.
-[BJM1_21:BANKJ1]
-~g~Die Key Card zu den Zellen findet sich im Obergeschoss des Reviers.
+[BONE_14:JDT1]
+- Reg dich ab, Toni... ~n~ - Wo ist meine Kohle?
-[BNK1_7:BANKJ1]
-Cam Jones?
+{=================================== MISSION TABLE JDT2 ===================================}
-[BNK1_8:BANKJ1]
-Ich hol dich hier raus.
+[JDT2_I1:JDT2]
+~w~Gott sei Dank, dass du da bist, Toni!
-[BNK1_10:BANKJ1]
-Ja, der bin ich...
+[JDT2_I2:JDT2]
+~w~Eben hab ich 'nen Tipp gekriegt, dass die Cops 'ne Razzia hier planen!
-[BNK1_11:BANKJ1]
-Ganz wie du meinst!
+[JDT2_I3:JDT2]
+~w~Und? Du hast doch 'ne Lizenz.
-[BNK1_13:BANKJ1]
-Ich ziehe einen Job durch, und du bist mein Safeknacker.
+[JDT2_I4:JDT2]
+~w~Aber nicht für alles, was hier so abläuft!
-[BNK1_14:BANKJ1]
-Besser als in 'ner Zelle zu verrotten!
+[JDT2_I5:JDT2]
+~w~Salvatore ist hier. Stattet meinen Mädchen einen... 'Freundschaftsbesuch' ab... verstehst du?
-[BJM1_22:BANKJ1]
-~g~Bring Cam nach Hause!
+[JDT2_I6:JDT2]
+~w~Wir müssen ihn wegschaffen, ehe die Bullen kommen!
-[BJM1_23:BANKJ1]
-~g~Du brauchst zunächst die Magnetkarte für die Tür!
+[JDT2_I7:JDT2]
+~w~Er wartet draußen auf dich!
-[BNK1_12:BANKJ1]
-Häng die Bullen ab und bring mich nach Hause!
+[JDT2_I8:JDT2]
+~w~Es wird nie langweilig.
-[BJM1_20:BANKJ1]
-Die Waffe weg oder es passiert was!
+[JDT2_05:JDT2]
+~w~Schaff mich hier weg, verdammt!
-[BJM1_5:BANKJ1]
-Zutritt ab hier nur für befugtes Personal.
+[JDT2_06:JDT2]
+~w~Toni? Häng die Bullen ab! Hab keine Lust, die mit nach Hause zu schleppen!
-[BJM1_2:BANKJ1]
-~r~Du solltest Cam die Freiheit bringen, nicht den Tod!
+[JDT2_A1:JDT2]
+~w~Steig in das ~b~Auto.
-[BJM1_4:BANKJ1]
-Er ist bewaffnet! Erledigt ihn!
+[JDT2_A2:JDT2]
+~w~Vergiss nicht ~b~Salvatore!~w~ Kehr um und hol ihn!
-{=================================== MISSION TABLE BANKJ2 ===================================}
+[JDT2_A3:JDT2]
+~w~Bring Salvatore ~y~nach Hause.
-[BJM2_A:BANKJ2]
-Wir brauchen einen Überfall-Experten. Kennt ihr einen?
+[JDT2_A5:JDT2]
+~r~Salvatore ist tot!
-[BJM2_B:BANKJ2]
-Hey, Tommy, Tommy, Tommy, das Zeug bringt dich nach vorn, Mann.
+[JDT2_C1:JDT2]
+~w~Das war gute Arbeit vorhin. Du gefällst mir. Schon immer.
-[BJM2_C:BANKJ2]
-WoooOOOooo!
+[JDT2_C2:JDT2]
+~w~Danke, Mr. Leone.
-[BJM2_D:BANKJ2]
-Ich könnte dein Experte sein! Überfall! Überfall!
+[JDT2_C3:JDT2]
+~w~Weißt du, ich finde, Vincenzo belegt dich zu sehr mit Beschlag.
-[BJM2_E:BANKJ2]
-Du bist kein Experte, du bist ein Idiot.
+[JDT2_C4:JDT2]
+~w~Ich könnte einen guten Mann wie dich gebrauchen.
-[BJM2_F:BANKJ2]
-Mach dir 'nen Drink und halt die Klappe.
+[JDT2_C5:JDT2]
+~w~Ruf mich gelegentlich mal an. Onkel Sal kümmert sich um dich.
-[BJM2_G:BANKJ2]
-Hey, aus dem Weg!
+[JDT2_A9:JDT2]
+~r~Salvatore wurde verhaftet!
-[BJM2_H:BANKJ2]
-Cam, was meinst du?
+[JDT2_B2:JDT2]
+~w~Häng die Cops ab!
-[BJM2_I:BANKJ2]
-Tja, der beste Schütze in der Stadt ist ein Kerl namens Cassidy.
+[JDT2_A6:JDT2]
+~w~Du musst zurück zu Salvatores ~b~Auto~w~, ehe die Cops ihn schnappen!
-[BJM2_J:BANKJ2]
-Ach ja?
+[JDT2_F1:JDT2]
+~r~Du hast Salvatore verloren!
-[BJM2_K:BANKJ2]
-Ja. Soldat, oder wenigstens hält er sich dafür.
+[JDT2_A4:JDT2]
+~w~Fahr Salvatore vom Club weg und häng die Cops ab!
-[BJM2_L:BANKJ2]
-Ich bezweifle, dass er je bei der Army war, aber er kann mit der Knarre umgehen.
+{=================================== MISSION TABLE JDT3 ===================================}
-[BJM2_M:BANKJ2]
-Wahrscheinlich ist er in der Schießanlage.
+[JDT3_AA:JDT3]
+~w~Hey, Toni, ich kann gerade nicht. Bin... beschäftigt.
-[BJM2_2A:BANKJ2]
-Bist du Phil Cassidy?
+[JDT3_AB:JDT3]
+~w~Wieso? Was ist da drin los? ...und was zur Hölle stinkt hier so?
-[BJM2_2B:BANKJ2]
-Wieso?
+[JDT3_AC:JDT3]
+~w~Weißt du, Toni, wir verköstigen heute Leute mit äh... Sonderwünschen.
-[BJM2_2C:BANKJ2]
-Ich suche einen, der mit der Kanone umgehen kann. Was ich hier so sehe, überzeugt mich nicht.
+[JDT3_AD:JDT3]
+~w~Das wird 'ne Internet-Goldgrube!
-[BJM2_2D:BANKJ2]
-Jungchen, ich schieße dir auf 25 Meter eine Fliege vom Kopf.
+[JDT3_AE:JDT3]
+~w~Kümmer du dich lieber um Leones Spielhölle oben in Saint Mark's.
-[BJM2_2E:BANKJ2]
-Ach wirklich?
+[JDT3_AG:JDT3]
+~w~Die ist den Sindaccos ein Dorn im Auge.
-[BJM2_2F:BANKJ2]
-Ja. Hab ich bei der Army gelernt.
+[JDT3_AH:JDT3]
+~w~Es heißt, sie wollen das Ding hochjagen.
-[BJM2_2G:BANKJ2]
-Ist Fliegen-Schießen so beliebt in der Army? Gut, dass ich keine Steuern zahle.
+[JDT3_B:JDT3]
+~w~Erledige die ~r~Sindacco-Saboteure!
-[BJM2_2H:BANKJ2]
-Sollte das witzig sein, Jungchen?
+[JDT3_C:JDT3]
+~r~Sie~w~ haben eine Bombe vor dem ~y~Casino~w~ deponiert!
-[BJM2_2I:BANKJ2]
-Ha ha ha ha ha!
+[JDT3_D:JDT3]
+Detonation
-[BJM2_2J:BANKJ2]
-Lass uns schießen.
+[JDT3_E:JDT3]
+~w~Noch ein paar von denen und das ~y~Casino~w~ ist nicht mehr!
-[BJM2_1:BANKJ2]
-~g~Begib dich nach Downtown ins Ammu-Nation und sprich mit Phil Cassidy.
+[JDT3_F:JDT3]
+~w~Noch eine und das ~y~Casino~w~ ist hin!
-[BJM2_3:BANKJ2]
-TREFFERQUOTE: ~1~%
+[JDT3_H:JDT3]
+~w~Es kommen noch mehr ~r~Sindaccos~w~! Halte sie auf!
-[BJM2_4:BANKJ2]
-PUNKTE RUNDE EINS: ~1~
+[JDT3_I:JDT3]
+~w~Die Truck-Bombe ist scharf!
-[BJM2_6:BANKJ2]
-PUNKTE RUNDE ZWEI: ~1~
+[JDT3_J:JDT3]
+~w~Das ~y~Casino~w~ ist gerettet. Verschwinde jetzt!
-[BJM2_7:BANKJ2]
-GESAMTPUNKTZAHL FÜR DAS SCHIESSEN: ~1~
+[JDT3_K:JDT3]
+~w~Sie müssen den Truck manipuliert haben - man kann nicht hochschalten!
-[BJM2_9:BANKJ2]
-~g~Begib dich zum Startpunkt für Runde Zwei.
+[JDT3_L:JDT3]
+~r~Sindacco-Verstärkung~w~ ist auf dem Weg zum ~y~Casino!
-[BJM2_11:BANKJ2]
-~r~Phil ist erledigt!
+[JDT3_M:JDT3]
+~w~Die ~r~Sindaccos~w~ haben noch nicht aufgegeben. Es kommen noch mehr!
-[BJM2_12:BANKJ2]
-~r~Einer der Schützen ist erledigt!
+[JDT3_N:JDT3]
+~w~Sie steigen aus. Lass keine ~r~Sindaccos~w~ entkommen!
-[BJM2_14:BANKJ2]
-~g~Begib dich zum nächsten Areal!
+[JDT3_O:JDT3]
+Sicherheitsabstand
-[BJM2_15:BANKJ2]
-PUNKTE:
+[JDT3_P:JDT3]
+~w~Die Sindaccos lassen eine riesige Truck-Bombe anrollen. Sie wollen das Casino auf einen Schlag vernichten!
-[BJM2_17:BANKJ2]
-~g~Sprich mit Phil.
+[JDT3_Q:JDT3]
+~w~Verteidige das ~y~Casino.
-[BJM2_18:BANKJ2]
-ZU SCHLAGEN:
+[JDT3_R:JDT3]
+~w~Fahr zum ~y~Casino.
-[BJM2_19:BANKJ2]
-~g~Triff innerhalb des Zeitlimits so viele Ziele wie du kannst!
+[JDT3_S:JDT3]
+~w~Verhindere, dass die ~r~Truck-Bombe~w~ das ~y~Casino~w~ zerstört!
-[BJM2_22:BANKJ2]
-~r~Du hast den Schießstand verlassen!
+[JDT3_T:JDT3]
+~w~Fahr den ~r~Truck~w~ vom ~y~Casino~w~ weg, bevor er hochgeht!
-[BJM2_23:BANKJ2]
-~g~Wenn du den Schießstand während des Wettbewerbs verlässt, ist die Mission gescheitert.
+[JDT3_BA:JDT3]
+~w~Toni? Hier JD.
-[BJM2_24:BANKJ2]
-~g~Das nahegelegenste Ziel bringt 1 Punkt.
+[JDT3_BB:JDT3]
+~w~Ich hör gerade, dass ein paar Sindacco-Gorillas auf dem Weg zu dir sind.
-[BJM2_25:BANKJ2]
-~g~Das mittlere Ziel bringt 2 Punkte.
+[JDT3_BC:JDT3]
+~w~Und sie sind schwer bewaffnet!
-[BJM2_27:BANKJ2]
-~g~Alle Ziele dieser Runde bringen 1 Punkt.
+[JDT3_BD:JDT3]
+~w~Pass auf dich auf!
-[BNK2_2:BANKJ2]
-ZIELEN 3-2-1 FEUER!
+[JDT3_BE:JDT3]
+~w~Danke, JD!
-[BNK2_3:BANKJ2]
-AREAL KLAR!
+[JDT3_BF:JDT3]
+~w~Gut zu wissen.
-[BNK2_4:BANKJ2]
-Huuuiii!
+[JDT3_G:JDT3]
+~r~Das Casino wurde zerstört!
-[BNK2_5:BANKJ2]
-Der träfe nicht mal ein Scheunentor.
+{=================================== MISSION TABLE JDT4 ===================================}
-[BNK2_7:BANKJ2]
-Also, was ist jetzt, hilfst du mir bei dem Job?
+[JDT4_3:JDT4]
+~w~Die Sindaccos, die das Doll's House bewachen, trauen nur ~h~Sindacco-Wagen.
-[BNK2_8:BANKJ2]
-Jungchen, so wie du schießt, würde ich dich sogar heiraten.
+[JDT4_A1:JDT4]
+~w~Hat Klasse. Auch wenn du am Spieltisch verlierst, die Weiber sind 'n Hauptgewinn da!
-[BNK2_9A:BANKJ2]
-Junge, deine Sprüche und deine Hirngespinste kannst du dir sonst wohin stecken. Du bist ein lausiger Schütze.
+[JDT4_B0:JDT4]
+~w~Such dir ein geeignetes Fahrzeug und bau eine Bombe ein.
-[BNK2_9B:BANKJ2]
-Du bist ein lausiger Schütze.
+[JDT4_B1:JDT4]
+~w~Steig wieder in das ~b~Fahrzeug~w~ mit der Bombe.
-[BJM2_28:BANKJ2]
-PUNKTE RUNDE DREI: ~1~
+[JDT4_B3:JDT4]
+~w~Jetzt steig aus und verschwinde hier.
-[BJM2_20:BANKJ2]
-~g~Geht dir die ~w~Zeit ~g~oder die ~w~Munition ~g~aus, ist die Runde beendet!
+[JDT4_B4:JDT4]
+~w~Zünde die Bombe!
-[BJM2_26:BANKJ2]
-~g~Das am weitesten entfernte Ziel bringt 3 Punkte.
+[JDT4_B5:JDT4]
+~w~Fahr zur ~h~Bombenwerkstatt~w~ und lass eine Bombe in das Fahrzeug einbauen.
-[BNK2_1:BANKJ2]
-SCHARFE MUNITION
+[JDT4_B6:JDT4]
+~w~Geh nicht zu nah ran!
-[RANGE_1:BANKJ2]
-PUNKTZAHL SCHIESS-RUNDE:~1~
+[JDT4_C0:JDT4]
+~r~Du warst zu nahe bei der Explosion.
-[BJM2_2:BANKJ2]
-~g~Um die Runde zu beenden, drücke die ~h~~k~~PED_JUMPING~.
+[JDT4_C1:JDT4]
+~w~Die geht auf JD!
-[BJM2_N:BANKJ2]
-Nur die Ruhe.
+[JDT4_D0:JDT4]
+~w~Wer ist das?
-{=================================== MISSION TABLE BANKJ3 ===================================}
+[JDT4_D2:JDT4]
+~w~Muss ein Neuer sein.
-[BJM3_A:BANKJ3]
-Langsam fügt sich alles sehr schön zusammen hier.
+[JDT4_0:JDT4]
+COUNTDOWN
-[BJM3_B:BANKJ3]
-Was ist der Plan, Tommy? Was geht ab, Amigo?
+[JDT4_1:JDT4]
+~w~In das Ding kannst du keine Bombe einbauen!
-[BJM3_C:BANKJ3]
-Der Plan ist, dass du dich wie ein Vollidiot benimmst. Wir brauchen einen Fahrer.
+[JDT4_2:JDT4]
+~w~Das ~h~Bomben-Symbol~w~ auf dem Radar führt dich zu ~h~8-Balls Bombenwerkstatt.
-[BJM3_D:BANKJ3]
-Tommy, ich mach's. Ich kann fahren.
+[JDT4_A0:JDT4]
+~w~Toni, die Sindaccos haben da so'n Laden - Das 'Dolls House'.
-[BJM3_E:BANKJ3]
-Nimm Hilary, Boss, nicht diesen Labersack von einem Rechtverdreher.
+[JDT4_AA:JDT4]
+~w~Ist ein Casino UND Bordell in einem.
-[BJM3_F:BANKJ3]
-Hilary ist der beste. So schnell wie den hast noch keinen fahren sehen. Ich rufe ihn mal an.
+[JDT4_A2:JDT4]
+~w~Hehe! Und mit dem Laden steht und fällt ihre ganze Organisation hier.
-[BJM3_G:BANKJ3]
-Hey, Hil, hier Phil. Wie läuft's? Nein, sag nichts. Dazu haben wir später Zeit. Tust du mir einen Gefallen?
+[JDT4_A3:JDT4]
+~w~Wenn man die Bude, äh... plattmachen würde, weißt du, äh... in die Luft jagt, oder so...
-[BJM3_H:BANKJ3]
-Ich hab hier einen Typ aus dem Norden. Nein, ich glaub, er war nicht beim Militär. Aber er braucht einen Fahrer.
+[JDT4_A4:JDT4]
+~w~ich sag dir, dann würde Salvatore uns die Füße küssen!
-[BJM3_I:BANKJ3]
-Für einen Job. Ok, verstehe.
+[JDT4_D1:JDT4]
+~w~Den kenn ich nicht...
-[BJM3_J:BANKJ3]
-Was hat er gesagt?
+[JDT4_B2:JDT4]
+~w~Nimm das Fahrzeug und park es in der ~y~Garage~w~ beim 'Doll's House'.
-[BJM3_K:BANKJ3]
-Er macht's. Kein Problem. Na ja, ein kleines vielleicht: Er leidet unter Verlustängsten.
+[JDT4_B7:JDT4]
+~w~Fahr vorsichtig. Wenn du es zu sehr beschädigst, explodiert es!
-[BJM3_L:BANKJ3]
-Er arbeitet anscheinend nicht für Leute, die ihn nicht schlagen können. Hat was mit seiner Mutter zu tun.
+[JDT4_B8:JDT4]
+~w~Parke das Fahrzeug in der ~y~Garage~w~ des 'Doll's House'.
-[BJM3_M:BANKJ3]
-Jedenfalls will er erst ein Rennen gegen dich fahren. Er wartet draußen auf dich.
+[JDT4_4:JDT4]
+~w~Drücke~h~ ~k~ ~PDFW~~w~, um die Bombe ~h~detonieren~w~ zu lassen.
-[BJM3_2A:BANKJ3]
-Bist du Tommy? Klar bist du Tommy, ich meine,
+[JDT4_B9:JDT4]
+~w~Die Sindaccos haben die Bombe entschärft!
-[BJM3_2B:BANKJ3]
-wieso sollte sonst einer mit mir reden wollen?
+{=================================== MISSION TABLE JDT5 ===================================}
-[BJM3_2C:BANKJ3]
-Ok. Das ganze läuft so ab:
+[JDT5_B0:JDT5]
+~w~Das ist einer von den Typen, die Salvatore entführt haben!
-[BJM3_2D:BANKJ3]
-Ich fahre für dich, WENN und NUR WENN du selbst anständig fährst.
+[JDT5_D0:JDT5]
+~w~Wo ist er? Im Kofferraum?
-[BJM3_2E:BANKJ3]
-Verlierst du mich, verzeihe ich dir das nie.
+[JDT5_D1:JDT5]
+~w~Gut. Wir bringen ihn zur Schrottpresse. Der Boss will ihn flacher als 'ne Pizza haben.
-[BJM3_2:BANKJ3]
-Hilary ist erledigt!
+[JDT5_E:JDT5]
+~w~Rette Salvatore aus dem ~b~Auto~w~, bevor es verschrottet wird!
-[BJM3_4:BANKJ3]
-~g~Du brauchst ein Auto, um mitzumachen.
+[JDT5_E0:JDT5]
+~w~Sie haben dich entdeckt!
-[BNK3_1:BANKJ3]
-Ok, ich fahre für dich. Aber bitte, behandle mich schlecht.
+[JDT5_E1:JDT5]
+~w~Das ~b~Auto~w~ ist unbewacht! Nimm es dir!
-[BNK3_3A:BANKJ3]
-Illegales Straßenrennen bei Vice Point.
+[JDT5_E2:JDT5]
+~w~Bring das Auto zu ~y~Salvatores Villa.
-[BNK3_3B:BANKJ3]
-An alle Einsatzkräfte.
+[JDT5_E3:JDT5]
+~w~Steig wieder in das ~b~Auto.
-[BNK3_3C:BANKJ3]
-Straßenrennen sind verboten und illegal!
+[JDT5_F0:JDT5]
+~w~Mmmphhh - mmmphhh - mpphh
-{=================================== MISSION TABLE BANKJ4 ===================================}
+[JDT5_F3:JDT5]
+~w~Mmpphh - arrgghh - mmpphh
-[BNK4_A:BANKJ4]
-~w~Ihr seht Gentlemen, das wird leicht verdientes Geld für uns.
+[JDT5_F4:JDT5]
+~w~Mmpphh - arrgghh - arrggghh - arrg
-[BNK4_B:BANKJ4]
-~w~Ernsthaft, Tommy, du solltest dir überlegen, Anwalt zu werden.
+[JDT5_F5:JDT5]
+~w~Yarrgghh - yarrgh - mmpphh
-[BNK4_C:BANKJ4]
-~w~Was zum Geier rauchst du eigentlich, Mann? Das ist kein simpler Plan.
+[JDT5_G0:JDT5]
+~w~Was war denn das für eine Fahrerei? Wolltest du mich umbringen?
-[BNK4_D:BANKJ4]
-~w~Ach, wer braucht schon simple Pläne?
+[JDT5_G1:JDT5]
+~w~Mr. Leone. Boss. Tut mir Leid.
-[BNK4_E:BANKJ4]
-~w~Der Kommunismus, das war ein simpler Plan. Hat Russland aber nicht viel genützt, hah?
+[JDT5_G2:JDT5]
+~w~Was soll ich sagen?
-[BNK4_F:BANKJ4]
-~w~Ganz ruhig. Mit einem Team wie diesem ist das alles kein Problem.
+[JDT5_G4:JDT5]
+~w~Denen reiß ich das Herz aus dem Leib! Das ist noch nicht vorbei!
-[BNK4_G:BANKJ4]
-~w~Cam übernimmt den Safe. Phil? Wir beide kümmern uns um die Sicherheit, und Hilary fährt den Fluchtwagen.
+[JDT5_G5:JDT5]
+~w~Heiliger Strohsack, Toni - du hast mir den Arsch gerettet! Sag Sal zu mir!
-[BNK4_H:BANKJ4]
-~w~Äh, hast du nicht jemanden vergessen? Jemanden, der dir unzählige Male geholfen hat in dieser Stadt? Jemanden...?
+[JDT5_X0:JDT5]
+~r~Einen Toten kann man schlecht verfolgen.
-[BNK4_I:BANKJ4]
-~w~Ken...Ken, richtig. Ken wäscht das Geld für uns und stellt schon mal die Drinks kalt.
+[JDT5_X1:JDT5]
+~r~Du hast ihn verloren!
-[BNK4_J:BANKJ4]
-~w~Ich verstehe nicht, was ich hier soll.
+[JDT5_F1:JDT5]
+~w~Sind Sie das, Mr. Leone? Ich bin's, Toni.
-[BNK4_K:BANKJ4]
-~w~Ist doch ganz einfach. Warst du noch nie im Kino?
+[JDT5_F2:JDT5]
+~w~Machen Sie sich keine Sorgen. Ich schaff Sie hier raus!
-[BNK4_L:BANKJ4]
-~w~Wir latschen in die Bank rein, fuchteln mit den Knarren rum und gehen stinkreich wieder raus.
+[JDT5_G3:JDT5]
+~w~Hurensöhne! Die glauben, die können das mit mir machen!
-[P_DEAD:BANKJ4]
-~r~Phil ist erledigt!!
+[JDT5_X2:JDT5]
+~r~Sal hat nicht überlebt!
-[C_DEAD:BANKJ4]
-~r~Cam ist erledigt!!
+[JDT5_X4:JDT5]
+~r~Er hat dich bemerkt. Jetzt wirst du Sal nie finden!
-[H_DEAD:BANKJ4]
-~r~Hilary ist erledigt!!
+[JDT5_X3:JDT5]
+~r~Salvatore wurde zerquetscht!
-[P_HIND:BANKJ4]
-~r~Du hast Phil verloren!
+[JDT5_C:JDT5]
+~w~Folge dem ~r~Auto~w~, aber unauffällig.
-[C_HIND:BANKJ4]
-~r~Cam wurde abgehängt!
+[JDT5_0:JDT5]
+~w~Wenn du auf das Auto schießt, könntest du Salvatore treffen!
-[H_HIND:BANKJ4]
-~r~Hilary wurde im Stich gelassen!
+[JDT5_H0:JDT5]
+~w~Folge dem ~r~Wagen,~w~ aber nicht zu dicht.
-[GETCAR:BANKJ4]
-Steig in den Fluchtwagen und führe den Plan aus!
+[JDT5_H1:JDT5]
+~w~Du bist zu dicht dran!
-[TRASHED:BANKJ4]
-~r~DU HAST DEN FLUCHTWAGEN GESCHROTTET!!
+[JDT5_H2:JDT5]
+~w~Fall nicht zu weit zurück, damit du den ~r~Wagen~w~ nicht verlierst.
-[BNK4_1:BANKJ4]
-Ich fahre.
+[JDT5_H3:JDT5]
+~w~Du bist zu weit entfernt!
-[BNK4_2:BANKJ4]
-Na prima. Beifahrer. Wenn ich das in der Therapie erzähle.
+[KIDN_01:JDT5]
+JD!
-[BNK4_3A:BANKJ4]
-Hey, pass auf, wo du hinfährst, Tommy!
+[KIDN_02:JDT5]
+Toni! Gott sei Dank bist du da.
-[BNK4_3B:BANKJ4]
-Tommy, Hilary macht sich so breit!
+[KIDN_03:JDT5]
+Ich schwitz wie mein Onkel auf 'nem Schulhof - ich dreh gleich durch.
-[BNK4_3C:BANKJ4]
-Stimmt gar nicht!
+[KIDN_06:JDT5]
+Das darf doch nicht wahr sein! Er schneidet mir die Eier ab
-[BNK4_3D:BANKJ4]
-Doch!
+[KIDN_07:JDT5]
+und klemmt sie in 'nen Schraubstock. Oder umgekehrt.
-[BNK4_3E:BANKJ4]
-Hey, Klappe, ihr zwei, oder ihr könnt zu Fuß gehen.
+[KIDN_08:JDT5]
+Das ist fast so wie damals, als das FBI meine Festplatte gefilzt hat.
-[BNK4_3F:BANKJ4]
-Ja, Hilary.
+[KIDN_13:JDT5]
+Großer Gott, ich fass es nicht...
-[BNK4_3I:BANKJ4]
-Herrgott, Phil, hör auf, mit diesem Ding rumzufuchteln!
+[KIDN_14:JDT5]
+Dabei konnte ich überhaupt nichts dafür!
-[BNK4_3J:BANKJ4]
-Ja, am Ende geht das noch ins Auge!
+[KIDN_15:JDT5]
+Aber du kennst Salvatore. Der hetzt mir die Sitte auf den Hals.
-[BNK4_3M:BANKJ4]
-Mein Baby! Alles Schrott!
+[KIDN_16:JDT5]
+Das wird wie bei meiner Anzeige wegen Unzucht mit Minderjährigen.
-[BNK4_3O:BANKJ4]
-Du hängst zu sehr an der Illusion der Ewigkeit.
+[KIDN_17:JDT5]
+Hast du mal wegen Unzucht mit Minderjährigen gesessen, Mann?
-[BNK4_3P:BANKJ4]
-Was?
+[KIDN_18:JDT5]
+Die gehen beim Duschen auf dich los!
-[BNK4_3Q:BANKJ4]
-Du denkst, alles bleibt ewig.
+[KIDN_19:JDT5]
+Herrgott, dabei war sie 18! Diesmal wird's schlimmer!
-[BNK4_3R:BANKJ4]
-Jugend, geliebte Menschen, Pizza,
+[KIDN_20:JDT5]
+Hör auf zu sabbern, du Schwanzlutscher! Was ist passiert?!
-[BNK4_3S:BANKJ4]
-Alles geht mal vorbei, und das musst du akzeptieren.
+[KIDN_04:JDT5]
+- Was machen wir jetzt? ~n~ - Wieso? Was ist?
-[BNK4_3T:BANKJ4]
-Hey, du hast recht. Danke, Cam.
+[KIDN_11:JDT5]
+- Nein, nein... Weißt du, ich hab zu viel... ~n~ - Was ist denn los?
-[BNK4_3U:BANKJ4]
-Nichts zu danken.
+[KIDN_09:JDT5]
+Oh, ich hab Herzrasen. Hast du mal ein Valion?
-[BNK4_3V:BANKJ4]
-Hey, Tommy, wieso halten wir?
+[KIDN_10:JDT5]
+Oder ein Rohapnin? Oder...
-[BNK4_4A:BANKJ4]
-~w~Hilary, fahr ein bisschen um den Block.
+[KIDN_21:JDT5]
+Sie haben Salvatore entführt, als er aus dem Club kam.
-[BNK4_5:BANKJ4]
-~w~Ok, Tommy, ok.
+[KIDN_23:JDT5]
+Warum sagst du mir das nicht gleich, statt mich mit Scheiße vollzulabern? Komm.
-[BNK4_6:BANKJ4]
-~w~DIES IST EIN ÜBERFALL!
+{=================================== MISSION TABLE JDT6 ===================================}
-[BNK4_7:BANKJ4]
-~w~KEINER BEWEGT SICH!
+[JDT6_A0:JDT6]
+~w~Gott sei Dank! Toni.
-[BNK4_8:BANKJ4]
-~w~ALLE AN DIE WAND!
+[JDT6_A1:JDT6]
+~w~JD? Hey, ich bin im Hinterhof vom...
-[BNK4_9:BANKJ4]
-Phil, halt die Stellung!
+[JDT6_A2:JDT6]
+~w~Ich weiß. Hab dich reingehen sehen. Hab gebetet, dass du auftauchst!
-[BNK4_10:BANKJ4]
-Verstanden!
+[JDT6_A3:JDT6]
+~w~Salvatore rast vor Wut!
-[BNK4_11:BANKJ4]
-Los Cam, der Tresor ist oben...
+[JDT6_A6:JDT6]
+~w~Pass auf, dass Salvatore nichts passiert.
-[BK4_12A:BANKJ4]
-Verdammt, das ist ein Flange 9000!
+[JDT6_0:JDT6]
+Salvatore
-[BK4_12B:BANKJ4]
-Könnte Stunden dauern, den zu knacken.
+[JDT6_1:JDT6]
+~r~Salvatore ist nicht durchgekommen.
-[BK4_12C:BANKJ4]
-Oder 5 Minuten, wenn du den Manager findest.
+[JDT6_3:JDT6]
+~w~Salvatore ist in ~1~ Sekunden hier.
-[BNK4_13:BANKJ4]
-Ich seh nach, wo er sich verkrochen hat.
+[JDT6_5:JDT6]
+~w~Beschütze ~b~Salvatore~w~ vor den ~r~Sindaccos.
-[BK4_14A:BANKJ4]
-Phil, alles im grünen Bereich?
+[JDT6_6:JDT6]
+~w~Einer von ~b~Salvatores Leibwächtern~w~ ist tot!
-[BNK4_15:BANKJ4]
-Klar. Im dunkelgrünen Bereich.
+[JDT6_7:JDT6]
+~b~Salvatores Leibwächter~w~ sind beide tot!
-[BNK4_16:BANKJ4]
-Du da! Mitkommen!
+[JDT6_8:JDT6]
+~w~Die Bullen!
-[BNK4_17:BANKJ4]
-Ok! Ok! Nicht schießen!
+[JDT6_10:JDT6]
+~w~Such dir einen guten Standort, ehe Salvatore kommt.
-[BNK4_18:BANKJ4]
-ICH SAGTE, KEINER RÜHRT SICH!
+[JDT6_11:JDT6]
+~w~Wo willst du hin? Salvatore braucht Schutz im Rotlichtviertel.
-[BK4_19A:BANKJ4]
-Der Safe hat eine Zeitsperre,
+[JDT6_12:JDT6]
+Salvatore trifft ein
-[BK4_19B:BANKJ4]
-ihr könnt ebenso gut gleich aufgeben!
+[JDT6_D1:JDT6]
+~w~Hey...
-[BK4_20A:BANKJ4]
-Ach, die Zeitsperre kann ich umgehen.
+[JDT6_D4:JDT6]
+~w~Da hat einer 'nen Dollar verloren!
-[BK4_20B:BANKJ4]
-Dann brauchen wir nur noch deinen Code und alles ist in Butter!
+[JDT6_C0:JDT6]
+~w~Mehr habt ihr nicht zu bieten?
-[BNK4_21:BANKJ4]
-Bleib hier. Wenn du Zicken machst, bist du Fischfutter, klar?
+[JDT6_C1:JDT6]
+~w~Na kommt!
-[BNK422A:BANKJ4]
-Cam, wie lange noch?
+[JDT6_C2:JDT6]
+~w~Ihr kämpft wie Schwächlinge!
-[BK4_23A:BANKJ4]
-Gib mir noch 3 Minuten!
+[JDT6_C3:JDT6]
+~w~Auch was gefällig?
-[BK4_24A:BANKJ4]
-Ich seh mal nach Phil. Bin gleich wieder da.
+[JDT6_C4:JDT6]
+~w~Friss das!
-[BK4_24B:BANKJ4]
-Ich hab gesagt, Finger weg vom Alarm!
+[JDT6_C5:JDT6]
+~w~Ihr elenden Dreckschweine!
-[BNK4_25:BANKJ4]
-Das Spezialkommando muss gleich hier sein!
+[JDT6_C6:JDT6]
+~w~Mama wär stolz auf mich!
-[BNK4_27:BANKJ4]
-Ich könnte ein bisschen Hilfe brauchen, Tommy!
+[JDT6_A4:JDT6]
+~w~Er kommt hierher, um jeden Sindacco, den er findet, persönlich zu erledigen...
-[BNK4_28:BANKJ4]
-Vice City Spezialkommando! Sie sind umzingelt!
+[JDT6_A5:JDT6]
+~w~...also bin ich verduftet. Hör zu, ich hab auf dem Dach gegenüber ein Gewehr deponiert.
-[BNK4_29:BANKJ4]
-Umzingelt? HA HA HA HAAAAAaaa!
+[JDT6_9:JDT6]
+~w~Hol dir das ~g~Präzisionsgewehr~w~ auf dem Dach.
-[BNK4_30:BANKJ4]
-Die scheißen sich ein, die korrupten Schweine!
+{=================================== MISSION TABLE JDT7 ===================================}
-[BK4_31A:BANKJ4]
-Tommy, der Tresor ist offen!
+[JDT7_VE:JDT7]
+~r~v1.00
-[BK4_34A:BANKJ4]
-Ok, wir haben die Pensionskasse der Bullen. Los, raus hier!
+[JDT7_02:JDT7]
+~w~Erst hat Salvatore 'aufgeräumt' in dem Laden, hä... und jetzt renoviert er ihn dir sogar!
-[BK4_34B:BANKJ4]
-Ok, ihr habt es so gewollt. Ihr hattet eure letzte Chance!
+[JDT7_03:JDT7]
+~w~Das gehört jetzt mir ganz allein, Toni.
-[BK4_35A:BANKJ4]
-Die stürmen den Laden!
+[JDT703A:JDT7]
+~w~Diese Sindacco-Schwanzlutscher haben alle 'nen Arschtritt gekriegt.
-[BK4_35B:BANKJ4]
-In Deckung!
+[JDT7_04:JDT7]
+~w~Hör zu, es heißt, die Sizilianer wollen 'nen Frieden zwischen den Familien aushandeln.
-[BNK4_94:BANKJ4]
-~w~Ok, Jungs. Jeder hält sich an den Plan .
+[JDT7_4A:JDT7]
+~w~Da ist jetzt gerade so'n Obermotz bei Sal.
-[BM_DEAD:BANKJ4]
-~r~Du brauchst den Bank Manager lebend!!
+[JDT7_4B:JDT7]
+~w~Die Sache ist nur, Sal traut dem Braten nicht.
-[ASSET_A:BANKJ4]
-BANK-MISSIONEN ERFÜLLT!
+[JDT7_4C:JDT7]
+~w~Er möchte, dass jemand dort vorbeischaut und dem Kerl folgt. Guckt, wo er hingeht.
-[ASSET_B:BANKJ4]
-~g~Der Malibu Club generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[JDT7_06:JDT7]
+~r~Du hast den Helikopter nicht rechtzeitig erreicht. Massimo ist schon weg!
-[IDIOT:BANKJ4]
-~r~Na super - angezogen wie ein Irrer durch die Gegend laufen und Aufmerksamkeit erregen, IDIOT!
+[JDT7_07:JDT7]
+~w~Folge ~r~Massimo.~w~ Verlier ihn nicht!
-{=================================== MISSION TABLE BARON1 ===================================}
+[JDT7_08:JDT7]
+~r~Er~w~ geht dir durch die Lappen!
-[COK1_A:BARON1]
-Komm schon, Brauner, komm!
+[JDT7_09:JDT7]
+~r~Du hast Massimo entkommen lassen!
-[COK1_B:BARON1]
-Dämlicher Klepper! Dich mach ich einen Kopf kürzer!
+[JDT7_10:JDT7]
+~w~Der Helikopter scheint zu landen - geh nicht zu nah ran, sonst verschreckst du sie.
-[COK1_C:BARON1]
-Wer ist der Blödmann?
+[JDT7_11:JDT7]
+~r~Du warst zu nahe. Man hat dich entdeckt!
-[COK1_D:BARON1]
-Tommy Vercetti, Sie erinnern sich.
+[JDT7_14:JDT7]
+~r~Er~w~ verschwindet... folge ~r~ihm~w~ wieder...
-[COK1_E:BARON1]
-Tschuldigung, ich bin etwas nervös. Vertrau niemals einem verdammten Pferd!
+[JDT7_15:JDT7]
+~w~Massimo~w~ scheint da oben zu landen...
-[COK1_F:BARON1]
-Du machst deine Sache gut. Du arbeitest jetzt für mich.
+[JDT7_16:JDT7]
+~w~Du musst ~y~näher ran...
-[COK1_H:BARON1]
-Wie gesagt, Amigo, du arbeitest für mich. Basta. So ein Mistkerl hat mich betrogen.
+[JDT7_17:JDT7]
+~r~Du bist aufgeflogen!
-[COK1_I:BARON1]
-Er denkt, ich weiß nicht, wie viel Geld mir zusteht. Aber 3% zu klauen ist genauso schlimm wie 100% zu klauen.
+[JDT7_21:JDT7]
+~w~Du bist entdeckt worden! Erledige die ~r~Triaden!
-[COK1_J:BARON1]
-Niemand haut mich übers Ohr. NIEMAND!!
+[JDT7_12:JDT7]
+~w~Come siamo rimasti d'accordo,
-[COK1_K:BARON1]
-Folge ihm von seiner Wohnung aus und sieh nach, wo er hin will. Später erledigen wir ihn.
+[JDT712A:JDT7]
+~w~wenn ihr meinen Geschäftsfreunden die Arbeit abnehmt, werdet ihr reich belohnt.
-[COK1_1:BARON1]
-Oh, Shit!
+[JDT7_13:JDT7]
+~w~...Hepburn Heights wird den Diablos gehören.
-[COK1_2:BARON1]
-Zu langsam, Opa!
+[JDT7_18:JDT7]
+~w~...also beschäftigt quei bastardi dei Leone unten in Portland,
-[COK1_4:BARON1]
-Versager.
+[JDT718A:JDT7]
+und wenn meine Geschäftsfreunde diese Stadt kontrollieren, wird man es euch danken.
-[COK1_5:BARON1]
-Ich würde einen Zahn zulegen, du Mistsack!
+[JDT718B:JDT7]
+Ci pensiamo noi.
-[COK1_8:BARON1]
-~g~Schnell! Schnapp dir einen Untersatz und folge ihm!
+[JDT7_20:JDT7]
+~w~Da drüben! Das ist ein Leone!
-[COK1_9:BARON1]
-~r~Du sollst ihn verfolgen, nicht umlegen!
+[JDT7_22:JDT7]
+Entfernung
-[COK1_10:BARON1]
-~r~Begib dich zum Haus des Diebes und such das Geldversteck.
+[JD_FIN:JDT7]
+~w~Erledige die ~r~Triaden!
-[COK1_11:BARON1]
-~g~Schau durch sein Fenster.
+[JDT7_05:JDT7]
+~w~Du musst zu ~y~Salvatores Villa~w~, ehe Massimo sich auf den Weg macht!
-[COK1_7:BARON1]
-~g~Er ist aufs Dach geflohen. Bleib ihm auf den Fersen, aber erledige ihn nicht.
+[JDT7O07:JDT7]
+~w~Du musst zu ~y~Salvatores Villa.~w~ Massimo bricht um ~1~:~1~ Uhr auf.
-[COK1_G:BARON1]
-Ich arbeite gegen Geld.
+[JDT7O08:JDT7]
+~w~Es ist fast ~1~:~1~ Uhr. Massimo bricht gleich auf!
-{=================================== MISSION TABLE BARON2 ===================================}
+{=================================== MISSION TABLE JDT8 ===================================}
-[COK2_A:BARON2]
-Was bist du eigentlich für ein inkompetenter Narr?
+[JDT8_A0:JDT8]
+~w~Toni... heute ist es soweit! Heute werd ich zum Capo ernannt!
-[COK2_B:BARON2]
-NARR! NARR! NARR! NARR!
+[JDT8_A1:JDT8]
+~w~JD, der 'Unbestechliche'? Gott steh uns bei!
-[COK2_C:BARON2]
-Tommy-
+[JDT8_A2:JDT8]
+~w~Darauf habe ich lange gewartet... ohne dich wär es nicht dazu gekommen, Toni.
-[COK2_D:BARON2]
-Was, Ricardo?
+[JDT8_A3:JDT8]
+~w~Hey, ich fang gleich an zu weinen! Hör auf!
-[COK2_E:BARON2]
-Diese Idioten - dauernd wollen sie einen reinlegen.
+[JDT8_A4:JDT8]
+~w~Hey, Mickey! Wie geht's?
-[COK2_F:BARON2]
-Das ist der Fehler an dieser Branche.
+[JDT8_A5:JDT8]
+~w~Ich steig hinten ein... okay?
-[COK2_G:BARON2]
-Was soll denn das? Aaaaah!
+[JDT8_C:JDT8]
+~w~Steig in das ~b~Auto~w~ und fahr JD zu seiner Ernennung zum Capo.
-[COK2_H:BARON2]
-Diese Mistkerle haben mich bitter enttäuscht.
+[JDT8_C2:JDT8]
+~w~Steig wieder ins ~b~Auto.
-[COK2_I:BARON2]
-Bald denkt jeder Depp, er kann in Vice City Koks verkaufen.
+[JDT8_C3:JDT8]
+~w~Fahr zu der ~y~Zeremonie.
-[COK2_J:BARON2]
-Was kommt als nächstes, hah? Die verstunkene Mafia?!
+[JDT8_B0:JDT8]
+~w~Ich sag's dir, Toni, ich kann's noch gar nicht fassen!
-[COK2_K:BARON2]
-Diese Bandengegend ist eine Festung ohne Mauern.
+[JDT8_B1:JDT8]
+~w~Ich hab so lange gewartet.
-[COK2_L:BARON2]
-Also: Quentin hier - Quentin! QUENTIN!
+[JDT8_B2:JDT8]
+~w~Jahrelang hab ich für die Sindaccos malocht - und nichts!
-[COK2_M:BARON2]
-Er fliegt dich über das Areal.
+[JDT8_B3:JDT8]
+~w~Die Bastarde haben mich kleingehalten,
-[COK2_N:BARON2]
-Heb ihr Nest aus!
+[JDT8_B5:JDT8]
+~w~Aber Salvatore - Gott segne ihn - für den spielt so 'ne Kleinigkeit keine Rolle.
-[COK2_O:BARON2]
-Was soll denn das?
+[JDT8_B6:JDT8]
+~w~Ich sag's dir!
-[COK2_P:BARON2]
-Was willst du hier?
+[JDT8_B7:JDT8]
+~w~Das ist Wahnsinn!
-[COK2_Q:BARON2]
-Hey, ich hab mich umgehört, und es ist klar,
+[JDT8_B8:JDT8]
+~w~Toni, ich bin so aufgeregt!
-[COK2_R:BARON2]
-dass Diaz in den Deal reingeplatzt ist und meinen Bruder erledigt hat.
+[JDT8_B9:JDT8]
+~w~Toni, ich weiß gar nicht, was ich mit mir anstellen soll, so aufgeregt bin ich!
-[COK2_S:BARON2]
-Und dich erledigt er auch!
+[JDT8_BA:JDT8]
+~w~Schau mich an, ich kann mein Glück noch gar nicht fassen!
-[COK2_T:BARON2]
-Mit Diaz nehm ich's auf!
+[JDT8_BB:JDT8]
+~w~Endlich, hä, Toni? Ein Capo zu werden!
-[COK2_U:BARON2]
-Nein, hör zu! Ich übernehme Diaz -
+[JDT8_D1:JDT8]
+~w~Wo ist Salvatore?
-[COK2_V:BARON2]
-er beginnt mir zu vertrauen.
+[JDT8_D2:JDT8]
+~w~Toni, die erste Runde geht auf mich...
-[COK2_1:BARON2]
-Eines versteh ich nicht: Was soll das mit 'Quentin'!?
+[JDT8_H0:JDT8]
+~w~Hey, der Kerl war 'ne scheiß Ratte!
-[COK2_2:BARON2]
-Weiß nicht. Hat mir immer gefallen...Quentin Vance...
+[JDT8_H1:JDT8]
+~w~Er hat seinen eigenen Boss verraten! Schande, sowas!
-[COK2_3:BARON2]
-Vance? Du heißt wirklich Lance Vance?!
+[JDT8_H2:JDT8]
+~w~Salvatore hätte dem Wichser nie trauen können.
-[COK2_4:BARON2]
-Hey! Das hab ich schon in der Schule oft genug gehört!
+[JDT8_H3:JDT8]
+~w~Versenk die Scheißkarre im Fluss!
-[COK2_5:BARON2]
-Hast du so was schon mal aus einem Helikopter abgefeuert?
+[JDT8_H4:JDT8]
+~w~Unterwegs kannst du mich absetzen.
-[COK2_8:BARON2]
-Wo fliegen wir denn hier?
+[JDT8_J:JDT8]
+~w~Steig in das ~b~Auto~w~ und fahr Mickey nach Hause.
-[COK2_9:BARON2]
-Prawn Island.
+[JDT8_J1:JDT8]
+~w~Die Cops haben dich mit dem Auto entdeckt!
-[COK2_13:BARON2]
-'Lance Vance'. Du armer Teufel.
+[JDT8_J2:JDT8]
+~w~Die Cops haben dich mit dem ~b~Auto~w~ entdeckt!
-[COK2_14:BARON2]
-Ok, wir sind gleich da.
+[JDT8_J3:JDT8]
+~w~Steig wieder in das ~b~Auto!
-[COK2_15:BARON2]
-Wir fliegen ein paar Mal drüber weg.
+[JDT8_J4:JDT8]
+~w~Setz Mickey bei ihm ~y~zuhause~w~ ab.
-[COK2_16:BARON2]
-Schalte so viele Kerle aus wie du kannst.
+[JDT8_K0:JDT8]
+~w~Verdammt, ich verschwinde hier!
-[COK2_17:BARON2]
-Dann setze ich dich ab, und du bist auf dich allein gestellt.
+[JDT8_K1:JDT8]
+~w~Denk dran, versenk die Karre im Fluss.
-[COK2_20:BARON2]
-Shit! Das ist ja wie im Krieg hier! Schalt welche von den Schützen aus!
+[JDT8_F:JDT8]
+~w~Versenk das Auto im Fluss.
-[COK2_21:BARON2]
-Wir werden getroffen, Mann!
+[JDT8_F1:JDT8]
+~w~Versenk das ~b~Auto~w~ im Fluss.
-[COK2_22:BARON2]
-Reparaturen an dem Kübel hier kosten! Schalt sie aus!
+[JDT8_G5:JDT8]
+~r~JD ist tot!
-[COK2_23:BARON2]
-Ok, von jetzt an bist du auf dich alleine gestellt. Viel Glück!
+[JDT8_G6:JDT8]
+~r~Mickey ist tot!
-[COK2_24:BARON2]
-Zustand Helikopter:
+[JDT8_G8:JDT8]
+~r~Du hättest das Auto im Fluss versenken sollen.
-[COK2_25:BARON2]
-~g~Hol das Geld auf dem Dach.
+[JDT8_X0:JDT8]
+~w~Wo willst du hin, Toni?
-[COK2_27:BARON2]
-Du bist auf MEINEM Gebiet, Mistkerl!
+[JDT8_X3:JDT8]
+~w~Wir verspäten uns.
-[COK2_28:BARON2]
-Dich mach ich fertig!
+[JDT8_X1:JDT8]
+~w~Wenn die Cops die Karre so sehen, dann halten sie uns garantiert an!
-[COK2_6:BARON2]
-Nein. Aber ich kann ja unterwegs ein bisschen üben.
+[JDT8_X2:JDT8]
+~w~Die Zeremonie ist in Harwood.
-[OPEN_B:BARON2]
-Die Straßensperren zum Festland sind aufgehoben worden.
+[JDT8_A6:JDT8]
+~w~Toni... heute ist es soweit!
-{=================================== MISSION TABLE BARON3 ===================================}
+[JDT8_A7:JDT8]
+~w~Heute werd ich zum Capo ernannt!
-[COK3_A:BARON3]
-Das gefällt euch nicht, was?!
+[JDT8_A8:JDT8]
+~w~JD, der 'Unbestechliche'?
-[COK3_B:BARON3]
-Ahahahahaa, Ahahahahaa.
+[JDT8__1:JDT8]
+~w~Darauf habe ich lange gewartet...
-[COK3_C:BARON3]
-Vorsicht! Passen Sie auf, wo Sie damit hin zielen!
+[JDT8__2:JDT8]
+~w~Ohne dich wär es nicht dazu gekommen, Toni.
-[COK3_D:BARON3]
-Kein Taubendreck mehr auf MEINEM Dach, was Tommy?
+[JDT8_A9:JDT8]
+~w~Gott steh uns bei!
-[COK3_E:BARON3]
-Sieht nicht so aus.
+[JDT8_D0:JDT8]
+~w~Hey, sind wir da?
-[COK3_F:BARON3]
-Das kannst du laut sagen. Also, hör zu:
+[JDT8_B4:JDT8]
+~w~nur weil ich ein bisschen irisches Blut in den Adern habe.
-[COK3_G:BARON3]
-Weißt du, wem das schnellste Boot an der Ostküste gehört?
+[JDT8_G7:JDT8]
+~r~Deine Fahrgäste sind tot!
-[COK3_H:BARON3]
-Nicht wirklich.
+[JDT8_C4:JDT8]
+~w~Schalte die ~r~Sindacco-Killer~w~ aus, ehe sie JD erledigen!
-[COK3_I:BARON3]
-MIR. Und das soll auch so bleiben.
+[JDT8_0:JDT8]
+~w~Das Auto umzuspritzen bringt dir etwas Zeit, aber sobald die Cops die Leiche auf dem Beifahrersitz sehen, werden sie dir wieder im Nacken sitzen.
-[COK3_J:BARON3]
-Jeder Schmuggler von hier bis Caracas hat EINEN Traum: ein schnelleres Boot.
+[JDT8_K:JDT8]
+~w~Oh, Daddy, nein!
-[COK3_K:BARON3]
-Es heißt, die Hull Werft hat gerade so ein Boot fertiggestellt,
+[JDT8_BC:JDT8]
+~w~Toni, Mann, du musst dich abregen.
-[COK3_L:BARON3]
-für irgendeinen costaricanischen Idioten.
+[JDT8_C5:JDT8]
+~w~Erledige die ~r~Sindacco-Killer.
-[COK3_M:BARON3]
-Und, Tommy...ICH WILL DIESES BOOT!!!
+{=================================== MISSION TABLE MAC1 ===================================}
-[COK3_N:BARON3]
-Ich glaube, die Tauben sind wieder da.
+[MAC1_AA:MAC1]
+~w~Ma?
-[COK3_O:BARON3]
-Ah! Ich dachte, ich hab euch erwischt. Wo kommst du denn her?
+[MAC1_AB:MAC1]
+~w~Ich bin's! Ich bin wieder da!
-[COK3_P:BARON3]
-Tauben! Boom! Aaaaah!
+[MAC1_AC:MAC1]
+~w~Toni?... Verflucht, wo hast du gesteckt?
-[COK3_5:BARON3]
-~g~Suche den Schalter, um das Boot abzusenken.
+[MAC1_AM:MAC1]
+~w~Und die ganze Zeit, wo du weg warst, nicht ein Anruf!
-[COK3_6:BARON3]
-~g~Bringe das Boot zur Villa.
+[MAC1_AD:MAC1]
+~w~Haben die keine Telefone, da wo du warst?
-[COK3_7:BARON3]
-~r~Du hast das Boot zerstört!
+[MAC1_AE:MAC1]
+~w~Ach, komm, Ma! Du weißt, dass ich nicht anrufen konnte!
-[COK3_8:BARON3]
-~g~Begib dich zur Bootswerft an den Docks und klau das schnellste Boot.
+[MAC1_AF:MAC1]
+~w~Ein richtiger Mann hätte seine Mutter angerufen.
-[COK3_9:BARON3]
-~g~Jetzt steig in das Boot.
+[MAC1_AG:MAC1]
+~w~Du könntest dir ein Beispiel an Giovanni Casa nehmen.
-{=================================== MISSION TABLE BARON4 ===================================}
+[MAC1_AN:MAC1]
+~w~Er ruft seine Mutter jeden Tag an.
-[COK4_A:BARON4]
-Eject! PLASTIKMÜLL!
+[MAC1_AH:MAC1]
+~w~Das ist ein anständiger Mann.
-[COK4_B:BARON4]
-Wie kannst du mir das antun?
+[MAC1_AO:MAC1]
+~w~Und seine sizilianische Wurst ist die beste der Stadt!
-[COK4_C:BARON4]
-Was bildest du dir ein, du mieses Stück Plastikdreck! Aaargh!
+[MAC1_AI:MAC1]
+~w~Casa! Ma, das ist kein anständiger Mann. Das ist ein Perverser!
-[COK4_D:BARON4]
-VERDAMMT!
+[MAC1_AJ:MAC1]
+~w~Das ist doch nur üble Nachrede! Was für ein Mann bist du denn, Toni?
-[COK4_E:BARON4]
-Wenn das Ding meinen Lieblings-El-Burro-Film frisst, ist Sense!
+[MAC1_AK:MAC1]
+~w~Okay, Ma, wenn du meinst.
-[COK4_F:BARON4]
-Was kann ich noch tun?
+[MAC1_AL:MAC1]
+~w~Vielleicht besuch ich Giovanni mal... mal sehen, was er so treibt.
-[COK4_G:BARON4]
-Ist wahrscheinlich nicht eingesteckt.
+[MAC1_HA:MAC1]
+~w~Ich glaube, mir steht der Sinn nach Liebe!
-[COK4_H:BARON4]
-Was?
+[MAC1_17:MAC1]
+~w~Beweise deiner Ma, dass Giovanni Casa ein Schwein ist!
-[COK4_I:BARON4]
-Verdammt. Egal, ich kann mir noch 100 davon kaufen.
+[MAC1_B:MAC1]
+~w~Fahr zu deiner ~y~Wohnung ~w~und hol deine Kamera.
-[COK4_J:BARON4]
-Also, Tommy,
+[MAC1_B0:MAC1]
+~w~Fahr zu ~y~Casa's Deli.
-[COK4_K:BARON4]
-jeden Monat legt ein 'Freiberufler' mit seiner Jacht in Vice City an.
+[MAC1B2:MAC1]
+~w~Gutes Foto! Bring das jetzt deiner ~y~Ma!
-[COK4_L:BARON4]
-Er verkauft seine Fracht an das erstbeste Schiff.
+[MAC1_B3:MAC1]
+~w~Schleich dich an ~r~Casa~w~ ran und mach das kompromittierende Foto!
-[COK4_M:BARON4]
-Du schnappst dir das Rennboot,
+[MAC1_B5:MAC1]
+~w~Verschrecke ~r~ihn~w~ nicht.
-[COK4_N:BARON4]
-und bist vor allen anderen Pennern bei ihm.
+[MAC1_B6:MAC1]
+~r~Der Film ist voll! Und du hast kein kompromittierendes Foto von Casa, um es deiner Ma zu zeigen.
-[COK4_O:BARON4]
-Dann bringst du die Fracht hierher, ok?
+[MAC1_B7:MAC1]
+~w~Hol deine ~g~Kamera.
-[COK4_P:BARON4]
-Lass mich raten. Du dachtest, ich brauche einen Schutzengel.
+[MAC1_C0:MAC1]
+~w~Geh nicht zu nah ran, sonst schöpft ~r~Casa~w~ Verdacht!
-[COK4_Q:BARON4]
-Ich denke nur, du solltest mich mitnehmen, Mann.
+[MAC1_C1:MAC1]
+~r~Du hast ihn verschreckt! Jetzt kriegst du das Foto nie!
-[COK4_R:BARON4]
-Du kannst lange den einsamen Macho-Helden markieren,
+[MAC1_C2:MAC1]
+~r~Etwas hat Casa verschreckt!
-[COK4_S:BARON4]
-aber eines Tages werde ich dir den Hintern retten
+[MAC1_C3:MAC1]
+~r~Du hast Casa verloren!
-[COK4_T:BARON4]
-und du wirst mich wahrscheinlich dafür küssen wollen.
+[MAC1_C4:MAC1]
+~r~Casa ist hinüber!
-[COK4_U:BARON4]
-Spinner.
+[MAC1_C5:MAC1]
+~w~Du bist zu nah dran an ~r~Casa!
-[COK4_V:BARON4]
-Hahahaha!
+[MAC1_C6:MAC1]
+~w~Verlier ~r~Casa~w~ nicht!
-[COK4_1:BARON4]
-Tommy, wir wissen, es war Diaz, der unseren Deal platzen ließ.
+[MAC1_D0:MAC1]
+~w~Scheint, als sei Casa fündig geworden.
-[COK4_3:BARON4]
-Wieso spielen wir dann die Laufburschen für ihn?
+[MAC1_JA:MAC1]
+~w~Okay, Ladies! Zeit für die Brust!
-[COK4_4:BARON4]
-Je mehr wir jetzt lernen, desto weniger müssen wir lernen, wenn wir diese Stadt übernehmen!
+[MAC1_JB:MAC1]
+~w~Wer will meine Mammi sein?
-[COK4_5:BARON4]
-Dein Stil gefällt mir. Echt erfrischend.
+[MAC1_JC:MAC1]
+~w~O je!
-[COK4_12:BARON4]
-Pass auf, die kommen von überall
+[MAC1_IA:MAC1]
+~w~Okay, Ladies, gebt mir 'ne Minute, ja?
-[COK4_13:BARON4]
-Erwischt! Fahr zu Diaz so schnell du kannst!
+[MAC1_IB:MAC1]
+~w~Ich zieh mir schnell was an, was mehr zu mir passt.
-[COK4_14:BARON4]
-Willst du was abhaben?
+[MAC1_CA:MAC1]
+~w~Baby will schmusen!
-[COK4_15:BARON4]
-Schönen Gruß an die Fische!
+[MAC1_CB:MAC1]
+~w~Ich hab Kaki gemacht!
-[COK4_16:BARON4]
-Nimm das! Und das!
+[MAC1_DA:MAC1]
+~w~Lutsch meinen Schnulli! Lutsch ihn!
-[COK4_19:BARON4]
-Gleich kommt's noch dicker!
+[MAC1_EA:MAC1]
+~w~Hey, kommt, Mädels! Stellt euch nicht so an!
-[COK4_20:BARON4]
-Da sind Schützen auf dem Pier!
+[MAC1_FA:MAC1]
+~w~SHIT! Da ist jemand!
-[COK4_24:BARON4]
-Gut geschossen, mein Freund. Du bist ein erstklassiger Psycho.
+[MAC1_FB:MAC1]
+~w~Schnell! In den Van!
-[COK4_25:BARON4]
-Danke sehr.
+[MAC1_GA:MAC1]
+~w~Oh, Gott! Oh, Gott!
-[COK4_26:BARON4]
-Wir sehen uns, Tommy.
+[MAC1_GB:MAC1]
+~w~SCHAU - MICH - NICHT - AN!
-[COK4_27:BARON4]
-Ok, Mr. Lance Vance Dance.
+[MAC1_BA:MAC1]
+~w~Hey, Ma!
-[COK4_28:BARON4]
-~g~Sei vor den anderen Booten bei der Jacht!
+[MAC1_BB:MAC1]
+~w~Schau dir mal das Foto an! Da ist dein 'anständiger Mann' Giovanni Casa drauf... mit einer Scheißwindel an!
-[COK4_31:BARON4]
-~g~Begib dich zum schnellsten Boot auf dem Pier!
+[MAC1_BC:MAC1]
+~w~So verbringst du also deine Zeit?
-[COK4_32:BARON4]
-~r~Zu langsam!
+[MAC1_BD:MAC1]
+~w~Schleichst im Wald herum und machst Fotos von Leuten?
-[COK4_33:BARON4]
-~r~Du hast das Boot zerstört!
+[MAC1_BE:MAC1]
+~w~Was ist los mit dir, Antonio? Ich muss mich ja schämen für dich!
-[COK4_34:BARON4]
-~g~Zieh diese Boote aus dem Verkehr!
+[MAC1_BF:MAC1]
+~w~Aber...
-[COK4_35:BARON4]
-Zustand Boot:
+[MAC1_BG:MAC1]
+~w~Und Windel hin oder her, trotzdem ist er ein anständigerer Mann als du!
-{=================================== MISSION TABLE BARON5 ===================================}
+[MAC1_B8:MAC1]
+~w~Jetzt geh nach draußen.
-[PROP_A:BARON5]
-OBJEKT ERWORBEN!
+[MAC1_B1:MAC1]
+~w~Folge ~r~Casa~w~, aber nicht zu dicht.
-[COK4_30:BARON5]
-~r~Lance ist erledigt!
+[MAC1_C7:MAC1]
+~w~Zoome an ~r~Casa~w~ heran und mach das Foto, das ~r~ihn~w~ kompromittiert.
-[ASS1_A:BARON5]
-Im Kofferraum sind ein paar Kanonen.
+[MAC1_D1:MAC1]
+~w~Bleib an ~r~Casa~w~ dran. Das könnte eine gute Fotogelegenheit werden.
-[ASS1_B:BARON5]
-Wahnsinn! Wo hast du denn die alle her?
+{=================================== MISSION TABLE MAC2 ===================================}
-[ASS1_C:BARON5]
-Hab ich für schlechte Zeiten zurückgelegt.
+[MAC2_AA:MAC2]
+~w~Ma!... Ma!... Komm, Ma... rede mit mir!
-[ASS1_D:BARON5]
-Zufrieden?
+[MAC2_AB:MAC2]
+~w~Es gibt hier keine 'Ma' mehr für dich, du Feigling!
-[ASS1_E:BARON5]
-Ja. Und wie!
+[MAC2_AC:MAC2]
+~w~Mir machst du nichts vor, ich weiß, warum du nicht wieder hier einziehst!
-[ASS1_F:BARON5]
-Ihr dämlichen Idioten!
+[MAC2_AD:MAC2]
+~w~Du hast Angst vor irgendwelchen Triaden!
-[ASS1_G:BARON5]
-Mein schönes Haus
+[MAC2_AE:MAC2]
+~w~Dein Vater - ruhe er in Frieden - hätte sich von niemandem aus seinem Heim vertreiben lassen!
-[ASS1_H:BARON5]
-Seht euch an, was ihr angestellt habt!
+[MAC2_AF:MAC2]
+~w~Aber Ma!
-[ASS1_I:BARON5]
-Das ist für meinen Bruder!
+[MAC2_AG:MAC2]
+~w~Aber im Gegensatz zu dir war dein Vater auch nicht feige!
-[ASS1_J:BARON5]
-Ich habe dir vertraut, Tommy.
+[MAC2_AH:MAC2]
+~w~Bis du den Triaden nicht Respekt eingebläut hast, bist du nicht mehr mein Sohn!
-[ASS1_K:BARON5]
-Ich hätte was aus dir gemacht...
+[MAC2_AI:MAC2]
+~w~Höchstens eine Tochter, aber nicht mein Sohn!
-[ASS1_L:BARON5]
-Gute Nacht, Mr. Diaz.
+[MAC2_B1:MAC2]
+~w~Zeig Ma, dass du keine Angst vor den Triaden hast. Knöpf dir die ~r~zwei Triadenbanden~w~ in Chinatown vor!
-[ASS1_1:BARON5]
-Bald wimmelt's hier von Arschlöchern. Sei vorsichtig.
+[MAC2_I1:MAC2]
+~w~In dem kugelsicheren ~r~Fisch-Van~w~ ist ein Triadenanführer. Ramm ihn von der Straße!
-[ASS1_2:BARON5]
-Keine Panik, Tommy, ich geb dir Deckung.
+[MAC2_I2:MAC2]
+~w~Der ~r~Transporter ~w~fährt - und verliert seine Ladung! Vorsicht!
-[ASS1_13:BARON5]
-DIAZ?! Ich bin hier, um deinen Laden zu übernehmen!
+[MAC2_I3:MAC2]
+~w~Sie steigen aus! Mach die ~r~Triaden~w~-Schweine fertig!
-[ASS1_14:BARON5]
-TOMMY! Du Verräter...Du Idiot! Dich mache ich fix und fertig...
+[MAC2_I4:MAC2]
+~w~Du bist entdeckt worden! Erledige sämtliche ~r~Triadenbanden-Mitglieder!
-[ASS1_16:BARON5]
-~g~Erledige Diaz!
+[MAC2_I5:MAC2]
+~w~Du bist auf ~r~Triaden~w~-Gebiet. Sei vorsichtig!
-[BUD1:BARON5]
-Lance
+[MAC2_I6:MAC2]
+~w~Eine erledigt, eine übrig. Jetzt zeig's der anderen ~r~Bande!
-[ASS1_18:BARON5]
-~g~Die Tür ist verschlossen. Versuche es auf einem anderen Weg.
+[MAC2_BA:MAC2]
+~w~Yeah! Schaust du zu, Ma?!
-[ASS1_19:BARON5]
-Da lang!
+[MAC2_BB:MAC2]
+~w~Ich bin Toni Cipriani, und ich mach euch fertig!
-[ASS1_20:BARON5]
-Tommy, ich hab ein Problem mit Quentin, nicht mit dir, Mann!
+[MAC2_BC:MAC2]
+~w~Merkt euch den Namen, Fischköpfe!
-{=================================== MISSION TABLE BIKE1 ===================================}
+{=================================== MISSION TABLE MAC3 ===================================}
-[BM1_A:BIKE1]
-Wo ist Baker?
+[MAC3_A0:MAC3]
+~w~Ma? Ich bin wieder da...
-[BM1_B:BIKE1]
-Ich suche Big Mitch Baker...
+[MAC3_A1:MAC3]
+~w~Guck dich mal an! Du bist ganz mager!
-[BM1_C:BIKE1]
-Wer sucht ihn?
+[MAC3_A2:MAC3]
+~w~Würdest du noch bei deiner Mutter wohnen, wie sich das für einen Sohn gehört, würdest du anständig essen!
-[BM1_D:BIKE1]
-Tommy Vercetti.
+[MAC3_A3:MAC3]
+~w~Und was du für Autos fährst!
-[BM1_E:BIKE1]
-Vercetti.
+[MAC3_A4:MAC3]
+~w~Ich muss mich für dich schämen, Antonio, wirklich.
-[BM1_F:BIKE1]
-Du siehst nicht wie ein Bulle aus, das heißt, du hast 1 Minute.
+[MAC3_A5:MAC3]
+~w~Die Leute müssen denken, ich hätte dich nicht anständig erzogen!
-[BM1_G:BIKE1]
-Also drück auf die Tube.
+[MAC3_A6:MAC3]
+~w~Was soll ich machen, Ma? Du weißt, ich tu alles für dich.
-[BM1_H:BIKE1]
-Kent Paul sagt, ihr wärt interessiert, die Security für einen Gig zu übernehmen, den er plant.
+[MAC3_A7:MAC3]
+~w~Dieser Sucho fährt heute in der Stadt ein Rennen.
-[BM1_I:BIKE1]
-Kent Paul? Pfff! Kein Wunder, dass er dich schickt.
+[MAC3_A8:MAC3]
+~w~Von dem könntest du dir eine Scheibe abschneiden!
-[BM1_J:BIKE1]
-Als er das letzte Mal hier war, ist er durch Fenster wieder gegangen - und zwar splitternackt.
+[MAC3_A9:MAC3]
+~w~Der hat noch Achtung vor seiner Mutter.
-[BM1_K:BIKE1]
-Seid ihr nun interessiert oder nicht?
+[MAC3_AA:MAC3]
+~w~Wenn dein Vater noch da wäre - der würde das Rennen gewinnen,
-[BM1_L:BIKE1]
-Gefälligkeiten gibt's nur für Mitglieder.
+[MAC3_AB:MAC3]
+~w~UND diesem Sucho sein hämisches Grinsen austreiben!
-[BM1_M:BIKE1]
-Wie kann ich beitreten?
+[MAC3_AC:MAC3]
+~w~Ja, er würde ihm Blei zu fressen geben!
-[BM1_N:BIKE1]
-Wir sind hier kein Golfklub, Kleiner. Kannst du 'n Bike fahren?
+[MAC3_AD:MAC3]
+~w~Ah, dein Vater war ein richtiger Mann! Der hatte Mumm!
-[BM1_O:BIKE1]
-Kannst du auf 'm Barhocker sitzen und saufen?
+[MAC3_B0:MAC3]
+~w~Beweise, dass du mehr drauf hast als Sucho. Gewinn das Rennen, dann erledige ihn.
-[BM1_P:BIKE1]
-Cougar, Zeppelin, checkt mal ab, wie diese Sissy hier fährt.
+[MAC3_C0:MAC3]
+~w~Du hast ~r~Sucho~w~ besiegt, jetzt erledige ihn!
-[BM1_2:BIKE1]
-~g~Du brauchst eine Freeway oder eine Angel, um mitzumachen!
+[MAC3_C1:MAC3]
+~r~Er~w~ versucht abzuhauen!
-[BM1_3:BIKE1]
-~r~Die Fahrer wurden angegriffen!
+[MAC3_X0:MAC3]
+~r~Sucho ist dir entkommen!
-[BIKE1_1:BIKE1]
-Ok, Schickimickibürschchen, dann zeig mal, was du drauf hast.
+[MAC3_C2:MAC3]
+~r~Sucho~w~ haut ab!
-[BM1_1:BIKE1]
-~g~Schnapp dir eine Freeway oder eine Angel und geh in Startposition.
+{=================================== MISSION TABLE MAC4 ===================================}
-{=================================== MISSION TABLE BIKE2 ===================================}
+[MAC4_A0:MAC4]
+~w~Ma! ... Ma! ... bist du da?
-[BM2_2:BIKE2]
-~g~Du musst den Chaosmesser in der vorgegebenen Zeit vollmachen, um uns zu zeigen, aus welchen Holz du bist!
+[MAC4_A1:MAC4]
+~w~Mit dir rede ich nicht mehr, Toni!
-[BM2_4:BIKE2]
-~r~Du hast den Chaosmesser nicht rechtzeitig vollgemacht!
+[MAC4_A2:MAC4]
+~w~Du beschämst deine sizilianische Abkunft!
-[BM2_1:BIKE2]
-CHAOSMESSER:
+[MAC4_A3:MAC4]
+~w~Seit du das Foto von Casa gemacht hast, zahlt er kein Schutzgeld mehr.
-[BM2_A:BIKE2]
-Ha, ha, ha, hab dich wieder erwischt.
+[MAC4_A4:MAC4]
+~w~Und was unternimmst du deswegen?
-[BM2_B:BIKE2]
-Hey, Vercetti.
+[MAC4_A5:MAC4]
+NICHTS!
-[BM2_C:BIKE2]
-Cougar meint, du fährst ziemlich gut.
+[MAC4_A6:MAC4]
+~w~Dein Vater hätte längst Hackfleisch aus ihm gemacht!
-[BM2_D:BIKE2]
-Ja, wie lange soll ich noch hier rumgurken?
+[MAC4_A8:MAC4]
+~w~aber mit den Ciprianis legst du dich nur an, wenn was in dir steckt!
-[BM2_E:BIKE2]
-Ich bin ein sehr beschäftigter Mann.
+[MAC4_A9:MAC4]
+~w~Ich wünschte, du hättest was von dem, was in ihm steckt!
-[BM2_F:BIKE2]
-Wenn ich mich kloppen soll, damit das klar geht, dann los.
+[MAC4_AA:MAC4]
+~w~Du wünschtest, ich hätte was von dem, was in ihm steckt?
-[BM2_G:BIKE2]
-Es geht bei uns nicht nur ums dreinschlagen. Man muss zur Familie gehören.
+[MAC4_AB:MAC4]
+~w~Okay, Ma, wie du willst!
-[BM2_H:BIKE2]
-Ja, ich hab schon mal zu einer Familie gehört. Hat nicht funktioniert.
+[MAC4_B:MAC4]
+~w~Fahr bei ~y~Giovanni Casa's Deli~w~ vorbei und 'überrede' ihn zu einer kleinen Spazierfahrt.
-[BM2_I:BIKE2]
-Klar. Aber unsere Familie kümmert sich um ihre Leute.
+[MAC4_B0:MAC4]
+~w~Hi, Toni... wie geht's dir?
-[BM2_J:BIKE2]
-Wir verlangen nicht, dass einer die Drecksarbeit macht und danach 15 Jahre einsitzt.
+[MAC4_B1:MAC4]
+~w~Was gibt's?
-[BM2_K:BIKE2]
-Ja, ganz recht. Ich hab meine Hausaufgaben gemacht.
+[MAC4_B2:MAC4]
+~w~Hat's dir die Sprache verschlagen?
-[BM2_L:BIKE2]
-Das hier ist die größte Familie von Außenseitern, Outlaws und Unruhestiftern.
+[MAC4_B3:MAC4]
+~w~Wir beide müssen was besprechen, Casa...
-[BM2_M:BIKE2]
-Ein paar von uns wurden sogar von ihrem eigenen Land verraten.
+[MAC4_B4:MAC4]
+~w~Aber irgendwo, wo wir unter uns sind.
-[BM2_N:BIKE2]
-Während des Vietnamkriegs war ich eingelocht. Miese Sache.
+[MAC4_C:MAC4]
+~w~Lass ~r~Casa~w~ nicht lebend entkommen.
-[BM2_O:BIKE2]
-Drum sollst du denen ja zeigen, was Sache ist.
+[MAC4_C1:MAC4]
+~w~Ich zahl das Schutzgeld, Toni! Ich schwör's dir!
-[BM2_P:BIKE2]
-Dieses ganze verdammte Land braucht einen Arschtritt, und wir geben ihm diesen Tritt.
+[MAC4_C2:MAC4]
+~w~Oh, komm, Toni! Du kriegst von mir, was du willst!
-[BM2_Q:BIKE2]
-Also los, schnapp dir ein Bike und zeig der Stadt, wie sauer du bist.
+[MAC4_C3:MAC4]
+~w~Ich mach alles, was du willst, Toni! Alles! Aber tu mir nichts!
-[BM2_R:BIKE2]
-Alles klar.
+[MAC4_D1:MAC4]
+~w~Okay! Okay! Du hast mich!
+
+[MAC4_D2:MAC4]
+~w~Okay! Okay! Ich geb auf! Ich geb auf! Aber tu mir nichts mehr!
+
+[MAC4_D3:MAC4]
+~w~Komm mit, Arschgesicht!
+
+[MAC4_E0:MAC4]
+~w~Bring Casa zum ~y~Sägewerk.
+
+[MAC4_E1:MAC4]
+~w~Geh nicht weg von ~b~Casa!
+
+[MAC4_F0:MAC4]
+~w~Und... äh... wo gehen wir hin?
+
+[MAC4_F1:MAC4]
+~w~Du bist mir doch wieder gut, oder, Toni?
+
+[MAC4_F2:MAC4]
+~w~...Ich beschaff das Geld, das ich euch schulde... ehrlich!
+
+[MAC4_F3:MAC4]
+Ich brauch nur ein bisschen Zeit!
+
+[MAC4_F4:MAC4]
+~w~Mag deine Ma immer noch scharfe Würste?
+
+[MAC4_F5:MAC4]
+Ich besorg ihr welche, kein Problem!
+
+[MAC4_G0:MAC4]
+~w~Also... ähm... was willst du mit mir besprechen, Toni?
+
+[MAC4_G1:MAC4]
+~w~Geht's um das Schutzgeld?
+
+[MAC4_G2:MAC4]
+~w~Darum geht's doch, oder?
+
+[MAC4_G3:MAC4]
+~w~...Toni?
+
+[MAC4_G4:MAC4]
+~w~Darüber können wir doch reden, stimmt's, Toni?
+
+[MAC4_G6:MAC4]
+~w~Die Leute reden heutzutage viel zu wenig miteinander, Toni.
+
+[MAC4_G7:MAC4]
+~w~Stell dich da hin und halt's Maul, Casa.
+
+[MAC4_G8:MAC4]
+~w~Okay, Toni! Aber das... das ist mir gar nicht geheuer.
+
+[MAC4_G9:MAC4]
+~w~Hey! Sei vorsichtig damit, Toni! Das ist der Schalter für...
+
+[MAC4_GA:MAC4]
+~w~AAARRRGGGHHHHHHHH!
+
+[MAC4_GB:MAC4]
+~w~Verschwinde schleunigst!
+
+[MAC4_H:MAC4]
+~w~In dem ~b~Van~w~ wartet 'Hack a la Casa' für Würstchen sizilianischer Art darauf, zu Casa's Deli gebracht zu werden.
+
+[MAC4_H1:MAC4]
+~w~Fahr die Lieferung zu ~y~Casa's Deli.
+
+[MAC4_H2:MAC4]
+~w~Lass den ~b~Van~w~ nicht dort stehen!
+
+[MAC4_H3:MAC4]
+~w~Häng die Cops ab!
+
+[MAC4_I0:MAC4]
+~w~Eine Sonderlieferung Wurstbrät?
+
+[MAC4_I1:MAC4]
+~w~Davon hat mir keiner was gesagt!
+
+[MAC4_I2:MAC4]
+~w~Wuh! Welchen Zoo haben wir denn diesmal beklaut?
+
+[MAC4_I3:MAC4]
+~w~Hier hinten ist jede Menge Fleisch!
+
+[MAC4_I4:MAC4]
+~w~...Hmm! Lecker! Okay, nehm ich.
+
+[MAC4_I6:MAC4]
+~w~Wenn er das erfährt, dreht er durch!
+
+[MAC4_I7:MAC4]
+~w~Und dann bin ich dran!
+
+[MAC4_X0:MAC4]
+~r~Das ging zu schnell und schmerzlos für einen Sizilianer-Mord!
+
+[MAC4_X1:MAC4]
+~r~Du hast die Lieferung nicht getätigt!
+
+[MAC4_X2:MAC4]
+~r~Casa ist dir entwischt!
+
+[MAC4_E2:MAC4]
+~w~Verlass das ~y~Sägewerk~w~ nicht!
+
+[MAC4_I5:MAC4]
+~w~Gut, dass Casa nicht hier ist.
+
+[MAC4_G5:MAC4]
+~w~Klar! Man kann doch über alles reden!
+
+[MAC4_CN:MAC4]
+~w~Ruft die Polizei!
+
+[MAC4_CO:MAC4]
+~w~Zu Hilfe!
+
+[MAC4_CP:MAC4]
+~w~Hol doch jemand Hilfe!
+
+[MAC4_CQ:MAC4]
+~w~Hilfe!
+
+[MAC4_CR:MAC4]
+~w~Hilf mir doch jemand!
+
+[MAC4_CS:MAC4]
+~w~Holt mich hier raus!
+
+[MAC4_A7:MAC4]
+~w~Casa mag ein bisschen verquer sein,
+
+[MAC4_C0:MAC4]
+~w~Können wir das nicht wie vernünftige Menschen regeln, Toni?
+
+[MAC4_1:MAC4]
+~w~Geh näher an ~r~Casa ~w~ran, indem du dich von hinten an ~r~ihn ~w~heranschleichst.
+
+{=================================== MISSION TABLE MAC5 ===================================}
+
+[MAC5_AA:MAC5]
+~w~Ma? Bist du da?
+
+[MAC5_AB:MAC5]
+~w~Toni? ...Ich bin am Telefon...
+
+[MAC5_AC:MAC5]
+~w~...Ja, jetzt ist er da... okay. Ich halte ihn so lange hin. Ciao.
+
+[MAC5_AD:MAC5]
+~w~Toni? Bist du wieder hier, um deiner Mutter weh zu tun, hä?
+
+[MAC5_AE:MAC5]
+~w~Den ganzen Tag hast du wieder Rambo gespielt.
+
+[MAC5_AF:MAC5]
+~w~Nie besuchst du mich, bringst nie nette Mädchen nach Hause.
+
+[MAC5_AG:MAC5]
+~w~Aber was für eine will dich schon haben? So käsig und mager wie du bist!
+
+[MAC5_AH:MAC5]
+~w~Du bringst mich noch ins Grab, so viel Sorgen und Schande machst du mir. ~w~Aber damit ist jetzt Schluss.
+
+[MAC5_AI:MAC5]
+~w~Ab sofort... sind wir geschiedene Leute.
+
+[MAC5_AJ:MAC5]
+~w~Ich hab Auftragskiller auf dich angesetzt. Es geht nicht anders, Antonio...
+
+[MAC5_AK:MAC5]
+~w~...du warst immer ein ungehorsamer Junge.
+
+[MAC5_AL:MAC5]
+~w~Was!? Ma!
+
+[MAC5_AM:MAC5]
+~w~Es ist das Beste so, mein Sohn... versuch wenigstens, wie ein Mann zu sterben!
+
+[MAC5_AN:MAC5]
+~w~Mach mir nicht noch mehr Schande!
+
+[MAC5_B1:MAC5]
+~w~Mas Auftragskiller sind da!
+
+[MAC5_B2:MAC5]
+~w~Zeig Ma, dass du ihren ~r~Killern~w~ über bist. Erledige sie alle!
+
+[MAC5_B3:MAC5]
+~w~Jetzt sind sie richtig wütend! Erledige ~r~sie.
+
+[MAC5_B4:MAC5]
+~w~Die ~r~Killer~w~ wissen, dass du hier bist. Du musst weit weg aus Saint Mark's!
+
+[MAC4_B6:MAC5]
+~w~Es kommen noch mehr ~r~Killer~w~! Verschwinde aus Saint Mark's. Sie wissen, wo du bist!
+
+[MAC4_B7:MAC5]
+~w~GRANATE! WEG HIER!
+
+[MAC5_C1:MAC5]
+~w~ Fürs Erste bist du sie los. Aber jetzt, wo sie angeheuert worden sind, werden sie den Job durchziehen, egal wie lange es dauert.
+
+[MAC5_C2:MAC5]
+~w~Sei gewarnt... sie KOMMEN wieder!
+
+[HM1:MAC5]
+~w~Sie geben nicht auf! Es kommen noch mehr ~r~Killer~w~. Mach sie fertig!
+
+[HM2:MAC5]
+~w~Vorsicht! Es sind ~r~Killer~w~ im Anmarsch. Erledige sie!
+
+[HM3:MAC5]
+~w~Es nähern sich noch mehr ~r~Killer~w~. Puste sie weg!
+
+[HM4:MAC5]
+~w~Es sind noch mehr ~r~Killer~w~ unterwegs! Schalte sie aus!
+
+[MAC5_B5:MAC5]
+~w~Knöpf dir die übrigen ~r~Killer~w~ vor, aber halte dich von Saint Mark's fern!
+
+{=================================== MISSION TABLE MAR1 ===================================}
+
+[MAR1M1:MAR1]
+~w~Du hast dich verspätet! Typisch Mann!
+
+[MAR1M2:MAR1]
+~w~Ich will shoppen gehen und du fährst mich.
+
+[MAR1M3:MAR1]
+~w~Ich werd mich göttlich amüsieren. Und wenn du dabei draufgehst!
+
+[MAR1M4:MAR1]
+~w~Ich bin nur noch nicht fertig zurechtgemacht.
+
+[MAR1M5:MAR1]
+~w~Ach, scheiß drauf! Ich seh traumhaft aus. Komm, Toni!
+
+[MAR1_B:MAR1]
+~w~Bring Maria zu dem ~y~Geschäft.
+
+[MAR1_D:MAR1]
+~w~Warte hier, Schnucki, es dauert nicht lange...
+
+[MAR1_D2:MAR1]
+~w~Ich wollte doch nur sehen, wie es bei Tageslicht aussieht!
+
+[MAR1_E:MAR1]
+~w~Nichts wie weg hier!
+
+[MAR1_E3:MAR1]
+~w~Fahr zurück und hol ~b~Maria.
+
+[MAR1_F:MAR1]
+~w~Das war lustig! Aber ich brauche noch ein paar andere Sachen.
+
+[MAR1_G:MAR1]
+~w~Lass den Motor laufen...
+
+[MAR1_GB:MAR1]
+~w~Komm, Maria! Kein Geklaue mehr!
+
+[MAR1_GC:MAR1]
+~w~Ach, Unsinn, Toni-Baby! Das war doch nur ein Missverständnis vorhin!
+
+[MAR1_G2:MAR1]
+~w~Ich sag Ihnen, ich hab da drin nichts versteckt!
+
+[MAR1_H:MAR1]
+~w~Bring mich nach Hause!
-[BM2_3:BIKE2]
-~g~Dieser Ton zeigt an, dass du einen Teil gefüllt hast. Mach ihn immer voller.
+[MAR1_I:MAR1]
+~w~Lass mich hier und ich sorg dafür, dass Salvatore dir die Eier abschneidet!
-{=================================== MISSION TABLE BIKE3 ===================================}
+[MAR1_J:MAR1]
+~r~Maria ist tot! O Schmerz!
-[BM3_A:BIKE3]
-Hi, Mitch.
+[MAR1_K:MAR1]
+~w~Toni, Süßer, ich hatte einen Heidenspaß heute.
-[BM3_B:BIKE3]
-Ah, sieh an, 'Outlaw' Vercetti.
+[MAR1_K2:MAR1]
+~w~Komm doch nachher wieder, dann können wir uns noch mehr amüsieren.
-[BM3_C:BIKE3]
-Jetzt will ich sehen, wie du für deine Kumpels kämpfst.
+[MAR1_K3:MAR1]
+~w~Bis später, Hübscher!
-[BM3_D:BIKE3]
-Eine Straßengang von hier hat den Fehler gemacht, meinen Hobel zu klauen.
+[MAR1_L:MAR1]
+~w~Die Cops sind hinter uns her! Häng die mal bloß ab!
-[BM3_E:BIKE3]
-Wollten wahrscheinlich zeigen, was für coole Machos sie sind.
+[MAR1_L2:MAR1]
+~w~Ich glaube, wir haben sie abgehängt! Fahren wir shoppen!
-[BM3_F:BIKE3]
-Ich und die Jungs wollten ihnen eigentlich ein bisschen Respekt einbläuen.
+[MAR1_M:MAR1]
+~w~HALT! DIEBIN!
-[BM3_G:BIKE3]
-Aber-
+[MAR1EXT:MAR1]
+~w~Bring Maria zurück zu ihrer ~y~Wohnung.
-[BM3_H:BIKE3]
--dann dachte ich mir, das wäre doch ein guter Test für dich.
+[MAR1_1:MAR1]
+KEIN(E)
-[BM3_I:BIKE3]
-Bring mir meine Maschine zurück und Paul kriegt seine Security.
+[MAR1_D3:MAR1]
+~w~Nehmen Sie Ihre verdammten Pfoten weg!
-[BM3_2:BIKE3]
-~r~Du solltest die Maschine zurückbringen, nicht schrotten!
+[MAR1_G3:MAR1]
+~w~Lassen Sie mich los!
-[BM3_3:BIKE3]
-~g~Bring die Maschine zur Bar!
+[MAR1_E2:MAR1]
+~w~Häng die Bullen ab!
-[BM3_4:BIKE3]
-~g~Setz dich auf die Maschine!
+{=================================== MISSION TABLE MAR2 ===================================}
-[INTRUDE:BIKE3]
-~g~Man hat dich bemerkt!
+[MAR2_AA:MAR2]
+~w~Hör auf! Einer von Salvatores Fiffis fährt mich gleich rüber...
-[BM3_6:BIKE3]
-~g~Sie sind Downtown hinter dem Ammu-Nation.
+[MAR2_AB:MAR2]
+~w~...oh, ein Charmeur.
-[BM3_7:BIKE3]
-~g~Du brauchst eine schnelle Maschine, um auf das Dach zu gelangen.
+[MAR2_AC:MAR2]
+~w~Vielleicht ein bisschen dünn.
-[BM3_8:BIKE3]
-~g~Spring mit dem Bike von diesen Stufen auf das Dach auf der anderen Seite der Straße.
+[MAR2_AE:MAR2]
+~w~Hör zu, ich will Party machen, aber die Vorräte sind alle.
-[BM3_1:BIKE3]
-~g~Eine Gang hat Mitch Bakers Maschine geklaut. Beschaff sie ihm wieder!
+[MAR2_AF:MAR2]
+~w~Hast du denn Puder da? 'Nasenpuder', hm?
-[BM3_9:BIKE3]
-~g~Schnapp dir Mitchs Maschine und mach dich aus dem Staub!
+[MAR2_AG:MAR2]
+~w~Super. Ciao!
-{=================================== MISSION TABLE BMX_1 ===================================}
+[MAR2_AH:MAR2]
+~w~Komm, Toni. Ich muss dringend wohin.
-[GETBIK2:BMX_1]
-Du hast ~1~ Sekunden, um auf ein Geländemotorrad zu steigen!
+[MAR2_BA:MAR2]
+~w~Hast du kein Auto?
-{=================================== MISSION TABLE BOATBUY ===================================}
+[MAR2_BB:MAR2]
+~w~Fahren wir. Mein Dealer wartet nicht ewig auf mich.
-[DRUG_1:BOATBUY]
-Hallo? Hal-lo?! Hallo?
+[MAR2_3F:MAR2]
+~w~Bring Maria zu ihrem ~y~Dealer.
-[DRUG_13:BOATBUY]
-Meister?
+[MAR2_BC:MAR2]
+~w~Da sind sie. Halt hinter ihnen an. Braver Junge.
-[DRUG_2:BOATBUY]
-Mach aus. Da kommt einer.
+[MAR2_GA:MAR2]
+~w~Du wartest hier.
-[DRUG_3:BOATBUY]
-Tag, Herr Anzugmensch. Sie müssen der neue Eigentümer sein.
+[MAR2_GB:MAR2]
+~w~Irgendwie gefällt mir das nicht.
-[DRUG_4:BOATBUY]
-Ja. Welches von den Booten ist das schnellste?
+[MAR2_GC:MAR2]
+~w~Süß, du machst dir Sorgen. Aber ich bin Salvatores Mädchen, mir passiert nichts.
-[DRUG_5:BOATBUY]
-Das ist schon im Wasser, Meister.
+[MAR2_GE:MAR2]
+~w~Mit euch geh ich nirgendwohin! Für wen haltet ihr euch, verdammt?
-[DRUG_6:BOATBUY]
-Dachte mir, dass Sie es mal testen wollen.
+[MAR2_GF:MAR2]
+~w~Fahr!
-[DRUG_7:BOATBUY]
-Das Ding hat jetzt schon 300 PS unter der Haube, Meister.
+[MAR2_GG:MAR2]
+~w~Toni!
-[DRUG_8:BOATBUY]
-Und mit dem Fiberglas-Rumpf - das Ding pfeift nur so durch die Wellen!
+[MAR2_GH:MAR2]
+~w~Oh, Shit!
-[DRUG_9:BOATBUY]
-In vier Sekunden von null auf sechzig Meilen, Meister.
+[MAR2_19:MAR2]
+~w~Erledige die ~r~Sindaccos!
-[DRUG_10:BOATBUY]
-Und im Rumpf kriegen Sie so 20 Ladungen vom besten jamaikanischen Gras unter.
+[MAR2_EA:MAR2]
+~w~Zufrieden?
-[DRUG_11:BOATBUY]
-Nur zu, Chef, machen Sie 'ne Spritztour!
+[MAR2_EB:MAR2]
+~w~Toni Cipriani. Mein Held!
-[DRUG_12:BOATBUY]
-Hey Anzugmensch, haben Sie mal Feuer?
+[MAR2_EC:MAR2]
+~w~Weißt du was? Genug amüsiert für heute. Fahr mich heim, Tiger.
-{=================================== MISSION TABLE CAP_1 ===================================}
+[MAR2_HA:MAR2]
+~w~Tja, äh, hast du Lust, mit raufzukommen... auf 'n Kaffee, oder so?
-[CAP1_B1:CAP_1]
-~g~Die Mafia verlangt Schutzgeld von dir. Stöbere sie auf und erledige sie.
+[MAR2_HB:MAR2]
+~w~Lass gut sein.
-[CAP1_B2:CAP_1]
-~g~Die Mafia verlangt von dir Schutzgeld für die Bootswerft!
+[MAR2_HC:MAR2]
+~w~Sicher? Tja, ruf mich mal an.
-[CAP1_B3:CAP_1]
-~g~Die Mafia verlangt von dir Schutzgeld für die Eiscremefabrik!
+[MAR2_O2:MAR2]
+~w~Bring Maria zurück zu ihrer ~y~Wohnung.
-[CAP1_B4:CAP_1]
-~g~Die Mafia verlangt von dir Schutzgeld für das Autohaus!
+[MAR2_CA:MAR2]
+~w~Mach schon, Toni!
-[CAP1_B5:CAP_1]
-~g~Die Mafia verlangt von dir Schutzgeld für das Taxiunternehmen!
+[MAR2_CB:MAR2]
+~w~Um Himmels Willen, Toni, schnell!
-[CAP_01:CAP_1]
-Ok, wo brennt's denn?
+[MAR2_CC:MAR2]
+~w~Rette mich, Toni!
-[CAP_02:CAP_1]
+[MAR2_CD:MAR2]
+~w~Hilfe!
+
+[MAR2_CE:MAR2]
+~w~Mach schooooon!
+
+[MAR2_FA:MAR2]
+~w~Und von wem krieg ich jetzt meinen Stoff?
+
+[MAR2_FB:MAR2]
+~w~Du bist ein Idiot, Toni!
+
+[MAR2_LM:MAR2]
+~w~Du hast ~b~Maria~w~ zurückgelassen. Hol sie.
+
+[MAR2_MD:MAR2]
+~r~Maria ist tot.
+
+[MAR2_WA:MAR2]
+~w~Die ~r~Dealer~w~ entkommen!
+
+[MAR2_DM:MAR2]
+~r~Du hast die Dealer verloren!
+
+[MAR2_DA:MAR2]
+~w~Schöner Held bist du!
+
+[MAR2_DF:MAR2]
+~r~Du hast Marias Dealer vertrieben!
+
+[MAR2_18:MAR2]
+~w~Ramme das ~r~Sindacco-Auto~w~, um Maria zu retten!
+
+[MAR2_AD:MAR2]
+~w~...Genau.
+
+{=================================== MISSION TABLE MAR3 ===================================}
+
+[MAR3_A0:MAR3]
+~w~Lieber Toni, ich habe mich als Hauptpreis bei einem Straßenrennen gemeldet.
+
+[MAR3_A1:MAR3]
+~w~Wenn Salvatore das erfährt, kriegen wir beiden tierischen Ärger.
+
+[MAR3_A2:MAR3]
+~w~Also komm schnell und rette meinen Arsch... dann gehört er vielleicht sogar dir!
+
+[MAR3_A3:MAR3]
+~w~Für immer dein, Maria.
+
+[MAR3_E0:MAR3]
+~w~Komm, Maria. Fahren wir.
+
+[MAR3_E1:MAR3]
+~w~Na, endlich! Der harte Kerl traut sich ran.
+
+[MAR3_E2:MAR3]
+~w~Hör mal, Maria, du gehörst Salvatore...
+
+[MAR3_E3:MAR3]
+~w~Ich gehör mir allein!
+
+[MAR3_E4:MAR3]
+~w~...du bist so ein verdammter Spießer!
+
+[MAR3_E5:MAR3]
+~w~Komm, Wayne! Hauen wir auf den Putz!
+
+{=================================== MISSION TABLE MAR4 ===================================}
+
+[MAR4_B1:MAR4]
+~w~Du findest Wayne bei seiner Gang in ~y~Chinatown.
+
+[MAR4_B2:MAR4]
+~w~Fahr hin und mach ihn alle!
+
+[MAR4_C1:MAR4]
+~r~Wayne~w~ flieht! Schnapp dir ein Motorrad und mach ihn fertig!
+
+[MAR4_C3:MAR4]
+~w~Er hängt dich ab! Lass ~r~Wayne ~w~nicht entkommen!
+
+[MAR4_D1:MAR4]
+~w~Bist du Wayne?
+
+[MAR4_D2:MAR4]
+~w~Wer will das wissen?
+
+[MAR4_D3:MAR4]
+~w~Ich bin ein Freund von Maria.
+
+[MAR4_D4:MAR4]
+~w~...Frauen zu verprügeln, bringt dich auf Touren, hä?
+
+[MAR4_D5:MAR4]
+~w~Die Schlampe hatte es verdient!
+
+[MAR4_D6:MAR4]
+~w~Ja? Dann bist du jetzt dran!
+
+[MAR4_D7:MAR4]
+~w~Schnappt ihn!
+
+[MAR4_T1:MAR4]
+~w~Na komm, Großmaul!
+
+[MAR4_T2:MAR4]
+~w~Du hast doch nichts drauf!
+
+[MAR4_T3:MAR4]
+~w~Du fährst wie ein Amateur!
+
+[MAR4_T4:MAR4]
+~w~Wenn du näher rankommst, kannst du mich am Arsch lecken!
+
+[MAR4_F1:MAR4]
+~r~Du hast Wayne entkommen lassen!
+
+[MAR4_P1:MAR4]
+~w~Du hast den Penner gekriegt!
+
+[MAR4_H1:MAR4]
+Wayne
+
+[MAR4_C4:MAR4]
+~w~Verlier ~r~Wayne~w~ nicht. Stelle ihn und mach ihn fertig!
+
+[BIK_01:MAR4]
+Was hast du denn jetzt wieder eingepfiffen?
+
+[BIK_02:MAR4]
+Nichts.
+
+[BIK_03:MAR4]
+Was war's diesmal, hä?
+
+[BIK_04:MAR4]
+Schnee? Downer? Glückspillen? Ein bisschen zuviel Koks?
+
+[BIK_08:MAR4]
+Wer hat das getan?
+
+[BIK_09:MAR4]
+Keiner.
+
+[BIK_10:MAR4]
Wer war das?
-[CAP_03:CAP_1]
-Tommy... ein paar Mafia-Typen... sie wollen wiederkommen, ihren Anteil abkassieren.
+[BIK_11:MAR4]
+Ein Typ, mit dem ich was hab. Wayne.
-[CAP_04:CAP_1]
-Ein gewisser Mr. Forello hätte dir Geld gegeben. Mir geht's schlecht.
+[BIK_12:MAR4]
+Mit dem du was hast? Du bist die Frau vom Boss!
-[CAP_05:CAP_1]
-Forelli? SONNY Forelli?
+[BIK_13:MAR4]
+Sei nicht so spießig, Toni. Außerdem besorgt er mir 'n geiles Speed.
-[CAP_06:CAP_1]
-Ja, so heißt er, glaube ich... ich konnte nichts gegen sie ausrichten.
+[BIK_14:MAR4]
+Es baut mich auf.
-[CAP_07:CAP_1]
-Keine Angst, mein Freund, ich mach dir keine Vorwürfe.
+[BIK_15:MAR4]
+Und macht einen echt scharf in der Kiste.
-[CAP_08:CAP_1]
-Bringt ihn ins Krankenhaus.
+[BIK_16:MAR4]
+Halt's Maul. Warum hat er dir das angetan,
-[CAP_09:CAP_1]
-Tommy... mach den Kerl 'nen Kopf kürzer für mich...
+[BIK_17:MAR4]
+dieser tote Flachwichser Wayne?
-[CAP_10:CAP_1]
-Ich mach ihn zwei Köpfe kürzer...
+[BIK_18:MAR4]
+Ich hab ihm gesagt, dass ich 'nen anderen liebe.
-[CAP1_2:CAP_1]
-Du kennst die Regeln, Vercetti!
+[BIK_19:MAR4]
+Ich hab ihm von uns erzählt, Toni.
-[CAP1_3:CAP_1]
-Mr. Forelli bestellt schöne Grüße!
+[BIK_22:MAR4]
+Wo finde ich diesen Wayne?
-[CAP1_4:CAP_1]
-Das ist der Harwood Butcher!
+[BIK_23:MAR4]
+Er dealt in 'ner Bar in Chinatown.
-[CAP1_5:CAP_1]
-Sag Sonny, er soll mir vom Leib bleiben!
+[BIK_24:MAR4]
+Ich liebe dich, Toni Cipriani.
-[CAP1_6:CAP_1]
-Vice City gehört nicht mehr ihm, sondern MIR!
+[BIK_06:MAR4]
+- Hat die Mischung nicht gestimmt? ~n~ - Halt den Mund, Toni!
-[CAP1_7:CAP_1]
-Du glaubst, du kannst mich vom Thron stürzen, Vercetti?
+[BIK_05:MAR4]
+Nicht genug Dizeopam?
-[CAP1_8:CAP_1]
-Wir jagen dich bis ans Ende deiner Tage, Vercetti.
+[BIK_20:MAR4]
+- Und dann hat er mich verprügelt! ~n~ - Es gibt kein 'uns'! Bist du bescheuert?
-[CAP1_9:CAP_1]
-Du hast keine Chance, du irrer Idiot!
+{=================================== MISSION TABLE MAR5 ===================================}
-[CAP1_10:CAP_1]
-Ich mach dich fertig, Vercetti.
+[MAR5_EA:MAR5]
+~w~Warum hast du mich hier hergebracht?
-[CAP1_11:CAP_1]
-Du warst schon immer ein Schwachkopf.
+[MAR5_EB:MAR5]
+~w~Hier ist mein Zeug nicht... hier ist Wayne immer rumgehangen.
-[CAP1_12:CAP_1]
-Du wirst dran glauben, Vercetti.
+[MAR5_EC:MAR5]
+~w~...Jetzt fällt's mir ein - ich hab ein paar Zaps in Hepburn Heights gebunkert!
-[CAP1_B6:CAP_1]
-~g~Du hast den Eintreiber gefunden, erledige ihn.
+[MAR5_ED:MAR5]
+~w~Hey, das ist diese Schlampe, Maria! Und der Wichser, der Wayne umgelegt hat!
-[CAP1_B7:CAP_1]
-~g~Du hast den Eintreiber verloren.
+[MAR5_AA:MAR5]
+~w~Ich hab das Zap hinter der Mülltonne versteckt!
-[CAP1_B8:CAP_1]
-~r~Der Eintreiber verlangt für all deine Geschäfte Schutzgeld.
+[MAR5_AB:MAR5]
+~w~Shit! Die Müllabfuhr war da!
-[CAP1_B9:CAP_1]
-~g~Die Mafia verlangt Schutzgeld für das Malibu!
+[MAR5_AC:MAR5]
+~w~Warte! Mir fällt ein, dass ich in meiner Wohnung noch was habe!
-[CAP1_B0:CAP_1]
-~g~Die Mafia verlangt Schutzgeld für das Filmstudio!
+[MAR5_AD:MAR5]
+~w~Bist du dir diesmal sicher?
-[CAP1_C2:CAP_1]
-~g~Die Mafia ist bei der Bootswerft angekommen!
+[MAR5_AE:MAR5]
+~w~Natürlich bin ich mir sicher!
-[CAP1_C3:CAP_1]
-~g~Die Mafia ist bei der Eiscremefabrik angekommen!
+[MAR5_BA:MAR5]
+~w~Ich meinte Salvatores Wohnung! Bei Salvatore!
-[CAP1_C4:CAP_1]
-~g~Die Mafia ist bei dem Autohaus angekommen!
+[MAR5_BB:MAR5]
+~w~Verdammt noch mal, Maria!
-[CAP1_C5:CAP_1]
-~g~Die Mafia ist bei dem Taxiunternehmen angekommen!
+[MAR5_FA:MAR5]
+~w~Was bist'n du für ein Fahrer? Das hat ja ewig gedauert! Ich hätte mit Überdosis draufgehen können.
-[CAP1_C9:CAP_1]
-~g~Die Mafia ist im Malibu Club angekommen!
+[MAR5_FB:MAR5]
+~w~Wie seh ich denn aus! Ich brauch neue Klamotten, und ein Lifting, das volle Programm!
-[CAP1_C0:CAP_1]
-~g~Die Mafia ist im Filmstudio angekommen!
+[MAR5_FC:MAR5]
+~w~Süßer... hast du eigentlich Geld?
-[CAP1_D2:CAP_1]
-~g~Die Mafia verlässt die Bootswerft!
+[MAR5_FD:MAR5]
+~w~Äh... nicht wirklich.
-[CAP1_D3:CAP_1]
-~g~Die Mafia verlässt die Eiscremefabrik!
+[MAR5_FE:MAR5]
+~w~Und was gräbst du mich dann an, verdammt? Ich bin Salvatores Mädchen!
-[CAP1_D4:CAP_1]
-~g~Die Mafia verlässt das Autohaus!
+[MAR5_FF:MAR5]
+~w~Und der stinkt vor Geld! Bagger mich bloß nie wieder an!
-[CAP1_D5:CAP_1]
-~g~Die Mafia verlässt das Taxiunternehmen!
+[MAR5_CA:MAR5]
+~w~(Stöhnen)
-[CAP1_D9:CAP_1]
-~g~Die Mafia verlässt den Malibu Club!
+[MAR5_CB:MAR5]
+~w~Oh, Shit, ich glaub, ich muss kotzen.
-[CAP1_D0:CAP_1]
-~g~Die Mafia verlässt das Filmstudio!
+[MAR5_CC:MAR5]
+~w~Ich bin echt verdammt high, Toni!
-[CAP1B10:CAP_1]
-Du hast die Eintreiber erledigt. Es kommen weitere.
+[MAR5_CD:MAR5]
+~w~Mir geht's gar nicht gut.
-{=================================== MISSION TABLE CARBUY ===================================}
+[MAR5_CE:MAR5]
+~w~Du fährst zu schnell! Und zu langsam!
-[CAR1_1:CARBUY]
-B.J. Smith. Und Sie müssen Mr. Vercetti sein.
+[MAR5_NC:MAR5]
+~b~Maria~w~ kann kaum noch laufen. Beschaff ein Fahrzeug!
-[CAR1_2:CARBUY]
-Soll ich Sie herumführen?
+[MAR5_ND:MAR5]
+~w~Maria kann kaum noch laufen. Beschaff ein Fahrzeug!
-[CAR1_3:CARBUY]
-Warum nicht?
+[MAR5_DA:MAR5]
+~w~Dich machen wir alle, Mann!
-[CAR1_4:CARBUY]
-Tja, ich verkaufe das Autohaus ja eigentlich nur ungern.
+[MAR5_DB:MAR5]
+~w~Du und die Schlampe sind heute Nacht fällig!
-[CAR1_5:CARBUY]
-War meine erste Investition, nachdem ich Football-Profi wurde.
+[MAR5_DC:MAR5]
+~w~War ein großer Fehler, dich mit uns anzulegen!
-[CAR1_6:CARBUY]
-Aber es wird Zeit für eine Luftveränderung.
+[MAR5_LM:MAR5]
+~w~Du hast ~b~Maria~w~ zurückgelassen. Hol sie.
-[CAR1_7:CARBUY]
-Sie verlassen die Stadt?
+[MAR5_O1:MAR5]
+~w~Bring Maria zu dem Diner beim ~y~Callahan Point.
-[CAR1_8:CARBUY]
-Nicht in allzu großer Eile, hoffe ich doch?
+[MAR5_O2:MAR5]
+~w~Bring Maria nach ~y~Hepburn Heights.
-[CAR1_9:CARBUY]
-Nein, ich bereite mich nur auf mein Comeback als Football-Profi vor. Ich hatte schon aufgehört.
+[MAR5_O3:MAR5]
+~w~Bring Maria zu ~y~ihrer Wohnung.
-[CAR1_10:CARBUY]
-Das Geschäft lief nicht allzu gut.
+[MAR5_O4:MAR5]
+~w~Bring Maria zu ~y~Salvatores Villa.
-[CAR1_11:CARBUY]
-Da haben sich meine Angestellten was einfallen lassen,
+[MAR5_O5:MAR5]
+~w~Fahr zurück und hol ~b~Maria.
-[CAR1_12:CARBUY]
-um ein bisschen was 'nebenbei' zu erwirtschaften.
+[MAR5_MD:MAR5]
+~r~Maria ist tot!
-[CAR1_13:CARBUY]
-Ich könnte den Laden auch dichtmachen, bevor ich ihn Ihnen verkaufe.
+[MAR5_O6:MAR5]
+~w~Hol ~b~Maria.
-[CAR1_14:CARBUY]
-Ich könnte die Bude bei Bedarf sogar abfackeln.
+[OVER_01:MAR5]
+Oh, hey, Süßer. Ich dachte schon, du kommst nie.
-[CAR1_15:CARBUY]
-Das ist erstklassiger Baugrund hier.
+[OVER_02:MAR5]
+Was ist los mit dir?
-[CAR1_16:CARBUY]
-Machen Sie sich mal keine Gedanken.
+[OVER_03:MAR5]
+Upps! Nichts, Baby, alles bestens.
-[CAR1_17:CARBUY]
-Der Laden ist genau das, was ich brauche.
+[OVER_04:MAR5]
+Du spinnst wohl! Steh auf! Was hast du denn diesmal eingepfiffen?
-[CAR1_18:CARBUY]
-Ja. Dann kommen wir also ins Geschäft?
+[OVER_05:MAR5]
+Eingepfiffen? Nicht viel.
-{=================================== MISSION TABLE CARPAR1 ===================================}
+[OVER_06:MAR5]
+Na ja, ein bisschen Opium, ein bisschen LSD.
-[MM_1_A:CARPAR1]
-~g~Passiere ~y~5 checkpoints~r~ OHNE irgendwelche ~r~Hütchen ~g~umzufahren! ~g~Die ~y~REIHENFOLGE IST BELIEBIG.
+[OVER_07:MAR5]
+Ach, und so geile Pillen, die ich jetzt aus Holland kriege.
-[CONE_1:CARPAR1]
-~r~Du hast ein Hütchen umgefahren!!
+[OVER_08:MAR5]
+Total rein! Mir geht's super.
-[MM_1_C:CARPAR1]
-~y~PASSIERE~g~ einen Checkpoint, dann läuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~~1~ SEKUNDEN~g~.
+[OVER_09:MAR5]
+Von wegen.
-{=================================== MISSION TABLE COPCAR ===================================}
+[OVER_10:MAR5]
+Ich nehme 'n Zap, dann geht's wieder.
-[C_COMP1:COPCAR]
-Bürgerwehr-Mission Level 12 beendet: Deine max. Panzerung erhöht sich auf 150
+[OVER_11:MAR5]
+Die sind da irgendwo.
-[CLEVEL:COPCAR]
-Bürgerwehr-Mission Level ~1~
+[OVER_12:MAR5]
+Was sind 'Zaps'?
-[C_PASS:COPCAR]
-BEDROHUNG AUSGERÄUMT: $ ~1~
+[OVER_13:MAR5]
+Du weißt nicht, was 'Zaps' sind?
-[KILLS:COPCAR]
-HITS:
+[OVER_14:MAR5]
+Och, Toni, du bist so spießig.
-[C_BREIF:COPCAR]
-~g~Verdächtiger wurde zuletzt in der Gegend von ~a~ gesichtet.
+[OVER_17:MAR5]
+Ich brauch 'n Zap, sonst geh ich drauf!
-[COPCART:COPCAR]
-~g~Du hast ~1~ Sekunden, um zu einem Polizeifahrzeug zurückzukehren, bevor die Mission endet.
+[OVER_18:MAR5]
+Ich hab 'ne Überdosis erwischt.
-[C_CANC:COPCAR]
-~r~Bürgerwehr-Mission abgebrochen!
+[OVER_19:MAR5]
+Besorg mir ein Zap, Toni.
-[C_TIME:COPCAR]
-~r~Deine Zeit als Gesetzeshüter ist vorbei!
+[OVER_20:MAR5]
+Ich hab sie im Diner am Callahan Point vergessen.
-{=================================== MISSION TABLE COUNT1 ===================================}
+[OVER_21:MAR5]
+Was hockst du noch rum? Los!
-[CM1_A:COUNT1]
-Mr.Vercetti? Hey. Sie haben die alte Druckerei gekauft?
+[OVER_15:MAR5]
+- Toni, ich liebe dich. ~n~ - Lass den Blödsinn.
-[CM1_B:COUNT1]
-Ja, mein Vater hat an diesen Dingern gearbeitet.
+{=================================== MISSION TABLE VIC1 ===================================}
-[CM1_C:COUNT1]
-Ich sollte in seine Fußstapfen treten, aber...es ist anders gekommen.
+[VIC1I11:VIC1]
+~w~Ich hab 'ne nette kleine Bude für dich, Toni.
-[CM1_D:COUNT1]
-Wollen Sie die alten Maschinen verkaufen, das Werk abreißen?
+[VIC1I12:VIC1]
+~w~Die ist wie für dich geschaffen.
-[CM1_E:COUNT1]
-Ich denke nach, ob wir was drucken sollten. Eine Zeitung, ein Magazin...
+[VIC1I13:VIC1]
+~w~Da fahren wir als Erstes hin.
-[CM1_F:COUNT1]
-Ach, Blödsinn, absoluter Blödsinn. Ich drucke lieber Geld. Ist gar nicht so schwer.
+[VIC1I14:VIC1]
+~w~Zu gütig.
-[CM1_G:COUNT1]
-In kleinerem Umfang mache ich das schon seit Jahren.
+[VIC1_3:VIC1]
+~w~Fahr Vincenzo zu seinem ~y~Lagerhaus.
-[CM1_H:COUNT1]
-Tatsächlich?
+[VIC1_4:VIC1]
+~w~Steig wieder in das ~b~Auto.
-[CM1_I:COUNT1]
-Klar. Aber wir bräuchten gute Platten.
+[VIC1_5:VIC1]
+~w~Fahr Vincenzo ins ~y~Versteck.
-[CM1_J:COUNT1]
-Natürlich! In Florida gibt es schon ein Geldfälscher-Syndikat.
+[VIC1_6:VIC1]
+~w~Stell dich in die gelbe Markierung am ~y~Eingang.
-[CM1_K:COUNT1]
-Ein Syndikat?
+[VIC1_7:VIC1]
+~w~Nimm das Bekleidungssymbol auf, um dich umzuziehen.
-[CM1_L:COUNT1]
-Ja. Hab aber nur gerüchteweise davon gehört.
+[VIC1_8:VIC1]
+~w~Geh wieder raus zu Vincenzo.
-[CM1_M:COUNT1]
-Ich kenne einen, der kennt sich mit Gerüchten aus...
+[VIC1_9:VIC1]
+~w~Bring Vincenzo zu den ~y~Atlantic Quays.
-[CM1_N:COUNT1]
-Hab immer die Abende mit ihm verbracht, die Walzen reinigen.
+[VIC1_9A:VIC1]
+~w~Jetzt fahr mich nach Hause.
-[CM1_2A:COUNT1]
-Sieh dir diesen Hintern an!
+[VIC1_10:VIC1]
+~w~Steig in das ~b~Auto.
-[CM1_2B:COUNT1]
-Tja, Kleine, du weißt nicht, was dir entgeht!
+[VIC1_D1:VIC1]
+~w~Mann, fährst du'n Scheißdreck zusammen, Toni!
-[CM1_2C:COUNT1]
-Na, alter Freund, wie läuft's so?
+[VIC1_D2:VIC1]
+~w~Pass auf die Scheißkarre auf!
-[CM1_2D:COUNT1]
-Was weißt du über Geldfälscherei?
+[VIC1_D3:VIC1]
+~w~Toni, hör auf, mich zu verscheißern und fahr vernünftig, du Wichser!
-[CM1_2E:COUNT1]
-'Oh, alles bestens, Paul, und bei dir?'
+[VIC1_C1:VIC1]
+~w~Da wären wir, Toni. 'Home, sweet home'. Hübsch, nicht?
-[CM1_2F:COUNT1]
-Komm her!
+[VIC1_C2:VIC1]
+~w~In dem Dreckloch soll ich wohnen?
-[CM1_2G:COUNT1]
-Ist ja gut, ist ja gut. Anscheinend bist du schwer beschäftigt.
+[VIC1_C3:VIC1]
+~w~Oh! Ich finde, es passt zu dir.
-[CM1_2H:COUNT1]
-Über Falschgeld weiß ich nur, dass die Triaden die Platten liefern.
+[VIC1_C4:VIC1]
+~w~Jetzt beleidigst du den guten, alten Vincenzo aber.
-[CM1_2I:COUNT1]
-Die haben eine Reederei unten bei den Docks.
+[VIC1_C5:VIC1]
+~w~Okay, Großmaul, schwing deinen Arsch da rauf und zieh dir was Anständiges an.
-[CM1_2J:COUNT1]
-Der Boss weiß, wann die nächsten Platten reinkommen.
+[VIC1_C6:VIC1]
+~w~Ich hab nicht ewig Zeit, also beeil dich.
-[CM1_2K:COUNT1]
-Danke, Paul.
+[VIC1_C7:VIC1]
+~w~Hey, Wohnungen kosten Geld, Toni.
-[CM1_2L:COUNT1]
-Was ist bloß los mit dir, du Wahnsinniger!
+[VIC1_C8:VIC1]
+~w~Also vergiss nicht, wer hier die Rechnungen bezahlt.
-[CM1_2M:COUNT1]
-Gib mir noch einen Drink, hopp!
+[VIC1_C9:VIC1]
+~w~ICH! Daddy Vincenzo hier.
-[CM1_3:COUNT1]
-~g~Man hat dich bemerkt!
+[VIC1C10:VIC1]
+~w~Und deshalb arbeitest du ab sofort für mich.
-[CM1_5:COUNT1]
-~g~Begib dich zu Kent Paul in den Malibu Club!
+[VIC1C11:VIC1]
+~w~Dass du mir also bald wieder hier aufkreuzt.
-[CNT1_1:COUNT1]
-Wer sind Sie? Uff! Aiiee! Nicht ins Gesicht! Nicht ins Gesicht!
+[VIC1_F:VIC1]
+~r~Vincenzo ist tot.
-[CM1_1:COUNT1]
-~g~Begib dich zum Schiff der Chartered Libertine Lines bei den Docks.
+[HOMS_01:VIC1]
+Hey... also da ist er, hm?
-[CM1_2:COUNT1]
-~g~Der Reedereichef verfügt über die benötigten Informationen.
+[HOMS_02:VIC1]
+Hör zu, Toni, ich weiß, du hast gute Arbeit für uns geleistet
-[CNT1_2:COUNT1]
-Ok, ich rede ja! Ich rede!
+[HOMS_03:VIC1]
+und ich weiß, du warst lange auf Tauchstation,
-[CM1_6:COUNT1]
-~g~Begib dich mit den Informationen zurück in die Druckerei!
+[HOMS_04:VIC1]
+deshalb trittst du mal eine Weile kürzer, hmm?
-{=================================== MISSION TABLE COUNT2 ===================================}
+[HOMS_05:VIC1]
+Vincenzo kümmert sich um dich.
-[CNT2_B1:COUNT2]
-Ok, der Kurier holt die Druckplatten heute vom Hafen ab.
+[HOMS_06:VIC1]
+Brauchst du Geld, frag ihn.
-[CNT2_B2:COUNT2]
-Ich fange ihn ab, schnapp mir die Platten, häng die Cops ab und komm wieder hierher.
+[HOMS_07:VIC1]
+Brauchst du 'nen Job, besorgt dir Lucky was.
-[CNT2_B3:COUNT2]
-Also, je nachdem wie es läuft, haben wir
+[HOMS_08:VIC1]
+Kann man mehr von der Familie verlangen?
-[CNT2_B4:COUNT2]
-entweder 5 Minuten zum Gelddrucken, bis das Fälschersyndikat uns findet, oder wir haben alle Zeit der Welt.
+[HOMS_09:VIC1]
+So gut hat's nicht mal mein Sohn.
-[CNT2_B5:COUNT2]
-Jedenfalls will ich 5 Minuten nachdem ich hier bin, Scheinchen aus der Presse kommen sehen!
+[HOMS_10:VIC1]
+Aber Mr. Leone, verbindet uns nicht was?
-[CNT2_B6:COUNT2]
-Keine Sorge, Tommy. Wir sind bereit.
+[HOMS_11:VIC1]
+Ich hab viel für diese Familie getan.
-[CNT2_B7:COUNT2]
-Ich und die Jungs bleiben in der Nähe, falls die Cops dir in die Quere kommen.
+[HOMS_12:VIC1]
+Und jetzt machen Sie mich zum Befehlsempfänger von diesem... diesem...
-[CNT2_B8:COUNT2]
-Ok. Jeder weiß, was er zu tun hat? Gut. Bis später.
+[HOMS_13:VIC1]
+Das finde ich einfach nicht richtig.
-[CNT2_01:COUNT2]
-~g~Der ~r~Kurier~g~ mit den Druckplatten kommt jeden Moment in einem Helikopter an den ~y~Docks~g~ an.
+[HOMS_14:VIC1]
+Toni, ich weiß, was du getan hast und keiner ist dankbarer als ich. Ehrlich.
-[CNT2_02:COUNT2]
-~r~Der Kurier mit den Platten ist im Helikopter geflohen.
+[HOMS_15:VIC1]
+Aber dass du hier reinspazierst
-[CNT2_03:COUNT2]
-~r~Der Kurier ist an seinem Ziel angekommen. Du kommst zu spät!
+[HOMS_16:VIC1]
+und meine Anweisungen in Frage stellst, ist, offengesagt,
-[CNT2_04:COUNT2]
-~r~Du hast die Platten in der Explosion zerstört!
+[HOMS_17:VIC1]
+unangebracht. Capiche?
-[CNT2_05:COUNT2]
-~g~Du hast die Druckplatten. Bring sie in die Druckerei.
+[HOMS_18:VIC1]
+Verstehe, Boss.
-[CNT2_06:COUNT2]
-~g~Der Kurier ist hinüber. Hol dir die Platten, ehe dir jemand zuvorkommt.
+[HOMS_19:VIC1]
+Wenn du also was brauchst, melde dich bei Vincenzo an dem Atlantic Quay.
-[CNT2_07:COUNT2]
-~g~Eine der Wachen hat die Platten genommen. Lass ihn nicht entkommen!
+[HOMS_20:VIC1]
+Er kümmert sich um dich, stimmt's, Lucky?
-[CNT2_08:COUNT2]
-~g~Der ~r~Kurier~g~ mit den Platten ist an den Docks eingetroffen.
+[HOMS_21:VIC1]
+Natürlich, Boss. Ist doch klar.
-[CNT2_4:COUNT2]
-Privatangelegenheit. Du hast hier nichts verloren!
+[HOMS_22:VIC1]
+Weißt du, was? Fahren wir gleich hin.
-[CNT2_09:COUNT2]
-DRUCKEREI ERWORBEN
+{=================================== MISSION TABLE VIC2 ===================================}
-[CNT2_10:COUNT2]
-~g~Die Druckerei generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[VIC2M2:VIC2]
+Die faule Sau hat seit Tagen keine Kohle mehr abgeliefert.
-[CNT2_11:COUNT2]
-~r~Die Platten liegen auf dem Meeresgrund!
+[VIC2M3:VIC2]
+Vielleicht braucht er 'n bisschen Ansporn, damit er den Arsch hochkriegt und was arbeitet.
-{=================================== MISSION TABLE CUBAN1 ===================================}
+[VIC2M4:VIC2]
+Scheiß Einstellung, der Kerl... erinnert mich irgendwie an dich.
-[CUB1_A:CUBAN1]
-Was ist, Mann?
+[VIC2M5:VIC2]
+~w~Was willst du damit sagen?
-[CUB1_B:CUBAN1]
-Hey, langsam, Paps, der ist für mich. Bist du der Bursche?
+[VIC2M6:VIC2]
+Ich will damit gar nichts SAGEN!
-[CUB1_C:CUBAN1]
-Oh ja, du bist der Bursche. Glaub schon.
+[VIC2M7:VIC2]
+Ich BEFEHLE dir damit, dafür zu sorgen, dass das Arschloch endlich anfängt, Kohle ranzuschleifen!
-[CUB1_D:CUBAN1]
-Nein, glaub ich nicht.
+[VIC2_B:VIC2]
+~w~Beschaff dir ein Fahrzeug.
-[CUB1_E:CUBAN1]
-Ach ja? Komm her du Großmaul.
+[VIC2OB1:VIC2]
+~w~Bring den Dealer zur ~y~Arbeit.
-[CUB1_F:CUBAN1]
-Meinst du, du kannst es mit mir aufnehmen?
+[VIC2_C:VIC2]
+~w~Du brauchst ein Fahrzeug, um ihn zu seinem Revier zu bringen!
-[CUB1_G:CUBAN1]
-Meinst du, du kannst mich für blöd verkaufen?
+[VIC2_D:VIC2]
+~w~Hol Vincenzos Dealer im ~y~St. Mark's Distrikt~w~ ab.
-[CUB1_H:CUBAN1]
-Nein, ich glaube, deine Blödheit reicht für uns beide.
+[VIC2_E:VIC2]
+~w~Vincenzo meint, du wärst zu feige, um dein Revier zu bearbeiten?
-[CUB1_I:CUBAN1]
-Hey, er sagt, du bist dumm, mein Sohn.
+[VIC2_E2:VIC2]
+~w~Hey, Mann! Ich bin kein Feigling!
-[CUB1_J:CUBAN1]
-Und ich sage, er ist ein kleines Mädchen, Paps.
+[VIC2_EX:VIC2]
+~w~Ich... äh... ich war nur krank!
-[CUB1_K:CUBAN1]
-Sieh dir doch an, wie er angezogen ist.
+[VIC2_E3:VIC2]
+~w~Ab morgen arbeite ich wieder... oder vielleicht ab übermorgen.
-[CUB1_L:CUBAN1]
-Was ist los? Ist heute Weiberabend?
+[VIC2_E4:VIC2]
+~w~Ich glaube, du arbeitest ab heute wieder... ob's dir passt oder nicht!
-[CUB1_M:CUBAN1]
-Du willst ein harter Kerl sein und ziehst dich an wie ein Weib?
+[VIC2_F:VIC2]
+~w~Hey! Lass mich hier nicht stehen! Das ist 'ne üble Gegend, Mann!
-[CUB1_N:CUBAN1]
-Hast du auch ein Höschen an, oder was?
+[VIC2_F2:VIC2]
+~w~Du hast ~b~Vincenzos Dealer ~w~zurückgelassen. Fahr ihn holen.
-[CUB1_O:CUBAN1]
-Was hast du gegen Frauen? Ziehst du Männer vor?
+[VIC2_G:VIC2]
+~w~Hey, ich hab's Vinnie schon gesagt... Chinatown ist inzwischen zu heiß für die Leones.
-[CUB1_P:CUBAN1]
-Ich liebe Frauen! Ich liebe alle Frauen! Ich liebe meine Mutter, Chico.
+[VIC2_G2:VIC2]
+~w~Die Sindaccos machen sich da breit! Ich bin ein toter Mann, wenn ich da aufkreuze!
-[CUB1_Q:CUBAN1]
-Ok, ok, ich glaub's dir ja.
+[VIC2_G3:VIC2]
+~w~Klar... klar...
-[CUB1_R:CUBAN1]
-Kannst du fahren, Amigo?
+[VIC2_G4:VIC2]
+~w~Ich sag dir doch, Mann, da dealen jetzt die Sindaccos.
-[CUB1_S:CUBAN1]
-Ja...wie eine Frau.
+[VIC2_G5:VIC2]
+~w~Mir geht's echt gar nicht gut... ich glaub, ich hab Fieber, oder so.
-[CUB1_T:CUBAN1]
-Sehr witzig. Du gefällst mir, Großer. Vielleicht kannst du mir helfen.
+[VIC2_H:VIC2]
+~w~Halte neben ~b~dem Dealer.
-[CUB1_U:CUBAN1]
-Vielleicht kannst du beweisen, dass du ein Mann bist. Hah?
+[VIC2_I:VIC2]
+~w~Oh, Mann...
-[CUB1_V:CUBAN1]
-Schnapp dir das Boot.
+[VIC2_J:VIC2]
+~r~Vincenzos Dealer ist hinüber!
-[CUB1_W:CUBAN1]
-Zeig mir, dass du ein ganzer Kerl bist,
+[VIC2_K:VIC2]
+~w~Bring Vincenzos Dealer nach ~y~Chinatown.
-[CUB1_X:CUBAN1]
-und kein kleines Mädchen.
+[VIC2_1:VIC2]
+KEIN(E)
-[CUB1_02:CUBAN1]
-Ok Mann, behandle es wie eine Frau.
+[VIC2M1:VIC2]
+Wir haben einen Dealer, der für uns Nord-Chinatown versorgt.
-[CUB1_03:CUBAN1]
-Nicht schlecht, du bist ein echter Mann.
+{=================================== MISSION TABLE VIC3 ===================================}
-[CUB1_04:CUBAN1]
-Mann, du bist ein ganzer Kerl, Amigo.
+[VIC3_H1:VIC3]
+~w~Halte~h~ ~k~ ~PDLT~~w~, um ein ~h~Ziel zu erfassen~w~ und drücke~h~ ~k~ ~PDFW~~w~, um anzugreifen!
-[CUB1_05:CUBAN1]
-Amigo, du bist ein Mann, Mann.
+[VIC3_H2:VIC3]
+~w~Drücke~h~ ~k~ ~PDFW~~w~, um den ~h~Dealer~w~ anzugreifen.
-[CUB1_06:CUBAN1]
-Du willst ein Mann sein, Mann?
+[VIC3O2:VIC3]
+~w~Fahr nach ~y~Chinatown.
-[CUB1_07:CUBAN1]
-Du bist ein feiges Würstchen, Kleiner, heul dich bei Mammi aus.
+[VIC3O3:VIC3]
+~w~Erledige den ~r~Dealer.
-[CUB1_08:CUBAN1]
-Du bist zu nichts zu gebrauchen. Macht einen auf harter Mann, aber fährt wie ein Idiot.
+[VIC3_1:VIC3]
+~w~Vincenzo hat dir dafür ein nützliches Geschenk hinterlassen.
-[CUB1_09:CUBAN1]
-Mann, du bist der Hammer, Mann. Du gefällst mir. Du gefällst mir sehr.
+[VIC3_BA:VIC3]
+~w~Halt dich von Leone-Gebiet fern, Arschloch!
-[CUB1_10:CUBAN1]
-Du bist gut, Mann. Weil du ein ganzer Kerl bist. Alle meine Freunde sind ganze Kerle.
+[VIC3_BB:VIC3]
+~w~Hast du noch nicht genug, Arschgesicht?
-[CUB1_11:CUBAN1]
-Du hast Rico erledigt!
+[VIC3_BC:VIC3]
+~w~In dieser Stadt dealen die Leones! Sonst keiner! Ist das klar, ihr Sindacco-Wichser?
-[CUB1_12:CUBAN1]
-Fahre durch den ersten Checkpoint, um den Test zu beginnen.
+[VIC3_6:VIC3]
+~w~Die Sindaccos dealen in ganz Chinatown.
-[CUB1_14:CUBAN1]
-Steig wieder ins Boot!
+[VIC3_AA:VIC3]
+~w~Vinnie?
-[CUB1_15:CUBAN1]
-Du bist zu langsam, Mann.
+[VIC3_AB:VIC3]
+~w~Zum Kuckuck, Toni! Kann ich nie meine Ruhe haben?
-[CUB1_01:CUBAN1]
-Hi, ich bin Rico. Bist du der 'ganze Kerl'?
+[VIC3_AD:VIC3]
+~w~Ich kann eh schon nicht kacken, da kann ich dich nicht auch noch gebrauchen.
-[CUB1_13:CUBAN1]
-~g~Du hast drei Minuten, um den Rundkurs zu schaffen.
+[VIC3_AE:VIC3]
+~w~Aber wo du schon mal da bist - ich hab immer noch kein Geld gesehen
-{=================================== MISSION TABLE CUBAN2 ===================================}
+[VIC3_AF:VIC3]
+~w~von diesem Dealer. Und weißt du, warum?
-[CUB2_25:CUBAN2]
-ERLEDIGE ALLE HAITIANER!!
+[VIC3_AG:VIC3]
+~w~Ich bin ganz Ohr.
-[CUB2_M:CUBAN2]
-Wer sich mit mir anlegt, hat sich den stärksten der Stadt rausgesucht!
+[VIC3_AJ:VIC3]
+~w~Die Sindaccos haben angefangen zu dealen und das auf Leone-Gebiet!
-[CUB2_A:CUBAN2]
-Eine Kaffee, bitte, Alberto.
+[VIC3_AK:VIC3]
+~w~Hast du vor, das zu dulden, Toni?
-[CUB2_N:CUBAN2]
-Kein Problem, Tommy.
+[VIC3_AL:VIC3]
+~w~Ich will, dass du nach Chinatown fährst!
-[CUB2_B:CUBAN2]
-Paps! Es gibt ein Riesenproblem!
+[VIC3_AM:VIC3]
+~w~Okay, 'Boss'. Wird gemacht.
-[CUB2_O:CUBAN2]
-Umberto, mein Sohn, was ist passiert?
+[VIC3_AN:VIC3]
+~w~Oh, Gott, warum ist denn hier nie Klopapier, verflucht noch mal?
-[CUB2_C:CUBAN2]
-Die Haitianer! Ich hasse die Haitianer!
+[VIC3_AH:VIC3]
+~w~Weil er tot ist, du Idiot. Jemand hat ihn umgelegt.
-[CUB2_D:CUBAN2]
-Die haben mir das letzte Mal ans Bein gepinkelt!
+[VIC3O4:VIC3]
+~r~Die Sindaccos~w~ dealen in ganz Chinatown. Erteile ihnen eine Lektion, die sie nie mehr vergessen!
-[CUB2_E:CUBAN2]
-Diese Haitianer. Wir machen sie fertig!
+{=================================== MISSION TABLE VIC4 ===================================}
-[CUB2_F:CUBAN2]
-Aber dazu brauchen wir Hilfe.
+[VIC4_H2:VIC4]
+~w~Die ~h~Sprühdose~w~ auf dem Radar führt dich zum ~h~Pay 'n' Spray.
-[CUB2_G:CUBAN2]
-Ich hab dabei schon ein paar Brüder verloren.
+[VIC4_A2:VIC4]
+~w~Stell dich in die ~h~Markierung~w~, um dir das Waffenangebot anzusehen.
-[CUB2_H:CUBAN2]
-Amigo, du fährst gut!
+[VIC4_A3:VIC4]
+~w~Benutze~h~ ~k~ ~AMMOV~~w~, um verschiedene Waffen auszuwählen.
-[CUB2_I:CUBAN2]
-Für eine Frau, was?
+[VIC4_A4:VIC4]
+~w~Kaufe die ausgewählte Waffe durch Drücken von~h~ ~k~ ~AMBUY~ ~w~- aber nur, wenn du genug Geld hast!
-[CUB2_J:CUBAN2]
-Jetzt ist nicht die Zeit für Witze!
+[VIC4_A6:VIC4]
+~w~Es gibt acht verschiedene Waffentypen.
-[CUB2_K:CUBAN2]
-Komm, fahr noch mal für mich!
+[VIC4_A7:VIC4]
+~w~Du kannst pro Waffentyp immer nur eine bei dir tragen: Eine Pistole, eine Schrotflinte, usw.
-[CUB2_L:CUBAN2]
-Bring meine Jungs da rüber, und dann erledigen wir diese Haitianer!
+[VIC4_H1:VIC4]
+~w~Das ~h~Waffensymbol~w~ auf dem Radar führt dich zu ~h~Ammu-Nation.
-[CUB2_01:CUBAN2]
-Da ist nicht genug Platz, Mann, du brauchst ein größeres Auto.
+[VIC4_H3:VIC4]
+~w~Das ~h~Waffensymbol~w~ auf dem Radar führt dich wieder zu ~h~Ammu-Nation.
-[CUB2_02:CUBAN2]
-Wir brauchen Verstärkung aus dem Café!
+[VIC4_AB:VIC4]
+~w~Wie könnt ich den vergessen?
-[CUB2_03:CUBAN2]
-~g~Besorg dir ein Auto und hole die Kubaner vor Robinas Café ab.
+[VIC4_AD:VIC4]
+~w~Das Interessante ist, er möchte jetzt gern ein Leone werden.
-[CUB2_04:CUBAN2]
-~g~Setze die Kubaner am Kampfort ab.
+[VIC4_AE:VIC4]
+~w~Der Wichser hat die Wahl gehabt!
-[CUB2_05:CUBAN2]
-Schalte den feigen Heckenschützen aus!
+[VIC4_AG:VIC4]
+~w~Hallo, Hirn...-zelle! Mann, Sal meinte zwar, du wärst ein dummer Schläger,
-[CUB2_07:CUBAN2]
-Die kämpfen wie Weiber! In Deckung!
+[VIC4_AH:VIC4]
+~w~aber dass einer gleich so dumm sein kann...
-[CUB2_09:CUBAN2]
-Heckenschütze auf dem Dach!
+[VIC4_AJ:VIC4]
+~w~Er wird unser Informant bei denen.
-[CUB2_11:CUBAN2]
-~r~Du Idiot! Das Auto hätten wir gebraucht!
+[VIC4_AK:VIC4]
+~w~Die Sache hat nur einen Haken.
-[CUB2_12:CUBAN2]
-Hey, Amigo! Schön zu sehen, dass du's geschafft hast!
+[VIC4_AL:VIC4]
+~w~So ein Sindacco-Gorilla hat ihn am Gängelband.
-[CUB2_13:CUBAN2]
-Stinkendes Haitianer-Nest. Das werden wir komplett ausheben!
+[VIC4_AM:VIC4]
+~w~Und dieses kleine Hindernis sollst du aus dem Weg räumen
-[CUB2_14:CUBAN2]
-ANGRIFF!
+[VIC4_AN:VIC4]
+~w~und JD auf unsere Seite ziehen. Capiche?
-[CUB2_15:CUBAN2]
-Los, meine Brüder, ANGRIFF!!
+[VIC4_2:VIC4]
+~w~Nimm das ~g~Handy~w~ als Beweis, dass du den Job erledigt hast.
-[CUB2_16:CUBAN2]
-Tommy, wir haben unseren mannhaften Mut bewiesen!
+[VIC4_BA:VIC4]
+~w~Toni... oh, du hast mir eben ein super Snuff-Video geliefert!
-[CUB2_17:CUBAN2]
-Lass uns diesen Wagen voller Stoff nehmen und abhauen!
+[VIC4_BB:VIC4]
+~w~JD? Du hast das gesehen? DU HAST MICH GEFILMT?!
-[CUB2_18:CUBAN2]
-~g~Besorge dir ein Auto und hole die Kubaner ab.
+[VIC4_BC:VIC4]
+~w~Och, ich... das ist nur für den Heimgebrauch!
-[CUB2_19:CUBAN2]
-Wir werden kämpfen wie Männer!
+[VIC4_BD:VIC4]
+~w~Ich kann's kaum erwarten, dass wir im selben Team sind!
-[CUB2_21:CUBAN2]
-Kämpfen wie ganze Kerle!
+[VIC4_BE:VIC4]
+~w~Freu dich mal nicht zu früh. Du schuldest mir immer noch Geld.
-[CUB2_22:CUBAN2]
-~g~Schalte die restlichen Haitianer aus, damit die Kubaner vorrücken können.
+[VIC4_BF:VIC4]
+~w~Nimm die Karre von dem Sindacco als Anzahlung, hä?
-[CUB2_23:CUBAN2]
-~g~In Little Haiti wird es von Haitianern wimmeln, die sich an den Kubanern rächen wollen. Sei vorsichtig.
+[VIC4_BG:VIC4]
+~w~Spritz sie um, dann erkennt sie keiner.
-[CUB2_24:CUBAN2]
-~g~Kehre mit dem Van zu Robinas Café zurück und parke hinter dem Haus.
+[VIC4_BH:VIC4]
+~w~Ich kümmere mich um die Leiche.
-{=================================== MISSION TABLE CUBAN3 ===================================}
+[VIC4_CA:VIC4]
+~w~Hey! Mach die Fliege!
-[CUB3_A:CUBAN3]
-Alberto? Einen Kaffee, Senor?
+[VIC4_CB:VIC4]
+~w~Du hast hier nichts verloren!
-[CUB3_B:CUBAN3]
-Paps, gib dieser falschen Schlange nichts.
+[VIC4_61:VIC4]
+~w~Steig in das ~b~Auto.
-[CUB3_C:CUBAN3]
-Du hast zwei Gesichter, Tommy!
+[VIC4_62:VIC4]
+~w~Fahr zum Pay 'n' Spray.
-[CUB3_D:CUBAN3]
-Du hast entweder zwei Gesichter oder du bist ein Feigling, Kleiner!
+[VIC4_DC:VIC4]
+~r~JD sagte, du sollst das Auto umspritzen lassen!
-[CUB3_E:CUBAN3]
-Die Haitianer, Mann, die lachen mich aus.
+[VIC4_PR:VIC4]
+--ring ring--
-[CUB3_F:CUBAN3]
-Ruhig, ruhig. Was gibt es für Probleme?
+[VIC4O1A:VIC4]
+~w~Geh ~y~rein.
-[CUB3_G:CUBAN3]
-Sie lachen mich aus, Tommy. Mich!
+[VIC4_O2:VIC4]
+~w~Kauf dir eine Pistole.
-[CUB3_H:CUBAN3]
-Umberto Robina. Die tun, was sie wollen!
+[VIC4_O4:VIC4]
+~w~Erledige den ~r~Sindacco-Gorilla.
-[CUB3_I:CUBAN3]
-Die tun nicht, was sie wollen, Umberto. Sie tun, was du sie tun lässt.
+[VIC4_FA:VIC4]
+~r~Jetzt verkauft er dir keine Knarre mehr!
-[CUB3_J:CUBAN3]
-Was?
+[VIC4_O3:VIC4]
+~w~Fahr zu der ~y~Baustelle.
-[CUB3_K:CUBAN3]
-Soll jemand aus dem Weg geräumt werden?
+[VIC4_AC:VIC4]
+~w~Der führt jetzt eine von den Sindaccos kontrollierte Titten-Bar - ich meine, einen Herrenclub.
-[CUB3_L:CUBAN3]
-Ich kann das machen, aber es kostet.
+[VIC4_AA:VIC4]
+~w~Hey, erinnerst du dich an JD O'Toole?
-[CUB3_M:CUBAN3]
-Ich weiß, wir sind Brüder und alles, aber hier geht's um ein Geschäft.
+[VIC4_AI:VIC4]
+~w~Über JD können wir erfahren, was die Sindaccos so planen.
-[CUB3_N:CUBAN3]
-Tommy. Du bist ein echter Mann. Ein Geschäftsmann, ein Gentleman.
+[HELP42:VIC4]
+~w~Drücke während des Zielens die~h~ ~k~ ~FREE1~~w~, um den ~h~manuellen Zielmodus~w~ zu aktivieren und benutze dann den~h~ ~k~ ~FREE2~ ~w~zum Anvisieren.
-[CUB3_O:CUBAN3]
-Die Haitianer, sie erwarten eine Schiffladung Stoff, richtig gutes Zeug.
+[VIC4_A1:VIC4]
+~w~Besorg dir beim nächsten ~y~Ammu-Nation~w~ eine Knarre.
-[CUB3_P:CUBAN3]
-Wir schnappen es uns und erledigen sie.
+[VIC4_O1:VIC4]
+~w~Begib dich wieder zu ~y~Ammu-Nation~w~ und besorg dir eine Knarre.
-[CUB3_Q:CUBAN3]
-Du schnappst es dir, ich passe auf dich auf. Wie auf einen Bruder, einen Sohn.
+[VIC4_1:VIC4]
+~w~Der ~r~Sindacco-Schläger~w~ ist auf der Rückseite der Baustelle. Erledige ihn!
-[CUB3_R:CUBAN3]
-Ich glaube, Cash ist mir lieber als auf deinen Knien zu reiten, Amigo.
+{=================================== MISSION TABLE VIC5 ===================================}
-[CUB3_01:CUBAN3]
-Hey, Rico. Nettes Boot. Bist du bereit?
+[VIC5_H:VIC5]
+Leones
-[CUB3_03:CUBAN3]
-~g~Sammle alle Aktenkoffer mit Stoff und Geld ein.
+[VIC5_I0:VIC5]
+~w~Ach, du bist es.
-[CUB3_04:CUBAN3]
-~g~Bringe die Drogen und das Geld zu Umberto.
+[VIC5_I1:VIC5]
+~w~Ja, wer hätte das gedacht - ich bin's. Was sagt man dazu?
-[CUB3_05:CUBAN3]
-Ja, Tommy. Also, sei ein guter Kapitän heute.
+[VIC5_I2:VIC5]
+~w~Dazu sag ich dir folgendes, Großmaul:
-[CUB3_06:CUBAN3]
-Mein Boot nützt mir nichts, wenn es durchlöchert ist, ok?
+[VIC5_I3:VIC5]
+~w~Ein paar von unseren Leuten haben ein völlig idiotensicheres Ding vermasselt.
-[CUB3_07:CUBAN3]
-~g~Begib dich zu Rico. Er fährt dich zum Treffpunkt.
+[VIC5_I4:VIC5]
+~w~Zu blöd für 'nen popeligen Überfall, die Volldeppen!
-[CUB3_02:CUBAN3]
-~g~ERLEDIGE ALLE HAITIANER AUF DEN BOOTEN!!
+[VIC5_I5:VIC5]
+~w~Jetzt haben die Bullen sie in Chinatown eingekesselt.
-[CUB3_08:CUBAN3]
-Oh-oh... eine Bande Kubaner. Wir werden angegriffen!
+[VIC5_I6:VIC5]
+~w~Kacke! Warum bin ich nur von lauter Idioten umgeben?
-{=================================== MISSION TABLE CUBAN4 ===================================}
+[VIC5_I7:VIC5]
+~w~Keine Ahnung... 'Wie der Herr...'?
-[CUB4_A:CUBAN4]
-Hey, Ladies. Wisst ihr, was ich mache?
+[VIC5_I8:VIC5]
+~w~An dir ist ein Komiker verloren gegangen!
-[CUB4_B:CUBAN4]
-Ich erledige einen Haitianer. Und dann?
+[VIC5_I9:VIC5]
+~w~Mal sehen, ob du das auch lustig findest:
-[CUB4_C:CUBAN4]
-Dann mache ich Liebe wie ein Mann.
+[VIC5I10:VIC5]
+~w~Du wirst diese Scheiße nämlich für mich aufräumen!
-[CUB4_D:CUBAN4]
-Weißt du, Kleine? So in der Art.
+[VIC5I11:VIC5]
+~w~Also hau die Idioten da raus und schaff sie mir her!
-[CUB4_E:CUBAN4]
-Penner!
+[VIC5_F1:VIC5]
+~r~Eins der Gang-Mitglieder ist tot.
-[CUB4_F:CUBAN4]
-Vollidiot.
+[VIC5_G0:VIC5]
+~w~Besorg dir einen Viersitzer.
-[CUB4_G:CUBAN4]
-Hey, Baby, dich würde ich nicht mit 'ner Kneifzange anfassen!
+[VIC5_O1:VIC5]
+~w~Fahr ~b~Vincenzos Männer~w~ retten.
-[CUB4_H:CUBAN4]
-Umberto Robina mag Frauen, keine Ziege mit Rock!
+[VIC5_O2:VIC5]
+~w~Hau ~b~die Gang~w~ da raus!
-[CUB4_I:CUBAN4]
-Tommy!! Tommy, ich liebe dich, ich liebe dich! Lass uns gehen!
+[VIC5_O3:VIC5]
+~w~Häng die Cops ab!
-[CUB4_J:CUBAN4]
-Wohin denn? Kann ich nicht noch einen Kaffee trinken?
+[VIC5_O4:VIC5]
+~w~Fahr die Gang zu ~y~Vincenzos Bude.
-[CUB4_K:CUBAN4]
-Keine Zeit! Außerdem habe ich erst einen getrunken.
+[VIC5_O5:VIC5]
+~w~Halte ~b~die Gang~w~ zusammen!
-[CUB4_L:CUBAN4]
-Wir nehmen uns die Haitianer vor.
+[VIC5_O6:VIC5]
+~w~Du brauchst ein Fahrzeug mit mehr Platz!
-[CUB4_M:CUBAN4]
-Tommy, wie erledigt man eine Schlange?
+[VIC5_G1:VIC5]
+~w~Was machen wir jetzt?
-[CUB4_N:CUBAN4]
-Man beißt sie in den Hintern! Hahaha!
+[VIC5_G2:VIC5]
+~w~Wir sind am Arsch!
-[CUB4_O:CUBAN4]
-Wenn du es sagst, Umberto.
+[VIC5_G3:VIC5]
+~w~Für den Drecksack von Vincenzo geh ich nicht in den Knast!
-[CUB4_P:CUBAN4]
-Tommy, geh und besorge uns ein kleines haitianisches Auto.
+[VIC5_G4:VIC5]
+~w~Hauen wir ab hier, verdammt!
-[CUB4_Q:CUBAN4]
-Wenn du es hast, komm zurück und hol meinen Jungen ab
+[VIC5_G5:VIC5]
+~w~Warte auf mich!
-[CUB4_R:CUBAN4]
-Pepe, und fahre ihn zu den Haitianern.
+[VIC5_G6:VIC5]
+~w~Gib Gas, Toni!
-[CUB4_S:CUBAN4]
-Dann begibst du dich zur Laboranlage der Haitianer und verwendest ihr Lösungsmittel als Sprengstoff.
+[VIC5_E1:VIC5]
+~w~Also, habt ihr das Geld?
-[CUB4_T:CUBAN4]
-Bumm! Bye bye!
+[VIC5_E2:VIC5]
+~w~Jeden Cent, Boss...
-[CUB4_U:CUBAN4]
-Umberto, was ist mit dir?
+[VIC5_E3:VIC5]
+~w~Hey, hören Sie, wir konnten echt nichts machen...
-[CUB4_V:CUBAN4]
-Oh, ich halte mich raus und passe mit Paps auf das Café auf.
+[VIC5_E4:VIC5]
+~w~...ihr konntet echt nichts machen...
-[CUB4_W:CUBAN4]
-Er fühlt sich nicht besonders, weißt du.
+[VIC5_E5:VIC5]
+~w~Es ist scheiße gelaufen, schlimmer hätt's nicht kommen können...
-[CUB4_02:CUBAN4]
-~g~Die Bomben werden per Zeitzünder auf 45 sek. gestellt sein.
+[VIC5_E6:VIC5]
+~w~Was meinst du... ist es jetzt besser oder schlimmer?
-[CUB4_07:CUBAN4]
-Zum Lösungsmittel geht's hintenrum, Amigo.
+[VIC5_E7:VIC5]
+~w~Wenn ihr mir noch mal ein Ding in den Sand setzt, wird's für euch auch schlimmer!
-[CUB4_08:CUBAN4]
-Hola, Amigos.
+[VIC5_E8:VIC5]
+~w~Jetzt räumt die Scheiße da weg und geht mir aus den Augen!
-[CUB4_09:CUBAN4]
-Bueno. Haitian Putas. Muerte.
+[VIC5_E9:VIC5]
+~w~Ich muss mal telefonieren.
-[CUB4_10:CUBAN4]
-Vamos.
+[VIC5E10:VIC5]
+~w~Ich schwör bei Gott, Toni, seit du zurückgekommen bist, hab ich 'ne Pechsträhne.
-[CUB4_11:CUBAN4]
-Genau, vamos.
+[VIC5E11:VIC5]
+~w~Du bist ein verdammter Unglücksbringer!
-[CUB4_12:CUBAN4]
-Hey, wir brauchen ein haitianisches Gang-Auto!
+{=================================== MISSION TABLE VIC6 ===================================}
-[CUB4_13:CUBAN4]
-Oye, suchen wir unsere Muchachos!
+[VIC6_BA:VIC6]
+~w~Anhalten!
-[CUB4_14:CUBAN4]
-Folge meinen Compadres.
+[VIC6_BB:VIC6]
+~w~Keine Bewegung, Arschloch!
-[CUB4_15:CUBAN4]
-Ok, nur immer rein...
+[VIC6_P0:VIC6]
+~w~Hol Vincenzos ~b~Auto~w~ ab.
-[CUB4_16:CUBAN4]
-Ich lege die Bombe. Gib mir Deckung.
+[VIC6_P1:VIC6]
+~w~Eine Polizeifalle! Schaff das Auto da weg!
-[CUB4_17:CUBAN4]
-RENN!
+[VIC6_P2:VIC6]
+~w~Häng die Cops ab!
-[CUB4_18:CUBAN4]
-Mann, das ist ein schönes Viertel hier...
+[VIC6_P3:VIC6]
+~w~Du hast die Cops abgehängt! ~w~Bring das Auto jetzt zu Vincenzos ~y~Garage.
-[CUB4_19:CUBAN4]
-Das ist doch eine Müllhalde, Mann.
+[VIC6_P4:VIC6]
+~w~Zeig Vincenzo, dass du dir nichts mehr von ihm gefallen lässt - verschrotte sein ~b~Auto!
-[CUB4_20:CUBAN4]
-Ich kannte mal eine schöne Frau, die hat hier gewohnt.
+[VIC6_P5:VIC6]
+~w~Steig wieder in Vincenzos ~b~Auto!
-[CUB4_21:CUBAN4]
-Die machen gute Pizza hier.
+[VIC6_P6:VIC6]
+~w~Bring das Auto zu Vincenzos ~y~Garage.
-[CUB4_22:CUBAN4]
-Hey, Mann! Du fährst wie ein Verrückter!
+[VIC6_PA:VIC6]
+~r~Du hast das Auto zerstört!
-[CUB4_23:CUBAN4]
-Hast du dich verfahren, Mann?
+[VIC6_D1:VIC6]
+~w~Steig in das ~b~Auto.
-[CUB4_24:CUBAN4]
-Du hast Pepe vergessen, hole ihn.
+[VIC6_D3:VIC6]
+~w~Fahr es zur ~y~Schrottpresse.
-[CUB4_03:CUBAN4]
-~g~Bleib im Wagen, bis er sicher auf dem Gelände geparkt ist.
+[VIC6_D4:VIC6]
+~w~Steig aus und lass die Schrottpresse ihre Arbeit tun.
-[CUB4_26:CUBAN4]
-~g~Nimm dir Pepe, fahr Richtung Norden nach Little Haiti und klaue einen Voodoo.
+[VIC6_D5:VIC6]
+~r~Du hättest das Auto verschrotten sollen!
-[CUB4_27:CUBAN4]
-~g~Triff dich mit Rico und den anderen Kubanern.
+[VIC6_AA:VIC6]
+~w~Hey, Toni, was macht das Auto?
-[CUB4_28:CUBAN4]
-~g~Triff dich mit den anderen Kubanern bei der haitianischen Drogenfabrik.
+[VIC6_AB:VIC6]
+~w~Du Hurensohn, Vinnie! Du hast mich reingelegt!
-[CUB4_29:CUBAN4]
-~g~Gehe in jede der Markierungen, um an dieser Stelle eine Bombe zu legen.
+[VIC6_AC:VIC6]
+~w~Reingelegt? REINGELEGT?
-[CUB4_30:CUBAN4]
-~g~Wenn alle drei Bomben gelegt sind, entferne dich von der Fabrik bevor sie hochgeht.
+[VIC6_AD:VIC6]
+~w~Als du in diese Stadt zurückkamst, hattest du nichts! NICHTS!
-[CUB4_31:CUBAN4]
-~g~Mach, dass du von der Fabrik wegkommst!!
+[VIC6_AE:VIC6]
+~w~Ich habe dir geholfen, du undankbarer Bastard!
-[CUB4_32:CUBAN4]
-~g~Park den Wagen an der im Radar markierten Stelle und steig aus.
+[VIC6_AF:VIC6]
+~w~Mit einer Wohnung und einem Job!
-[CUB4_06:CUBAN4]
-~r~Du bist nicht weit genug von der Basis weggekommen, wir mussten die Detonation abbrechen!
+[VIC6_AG:VIC6]
+~w~Und für diese Großzügigkeit erwarte ich, dass du ab und zu ein Risiko eingehst.
-{=================================== MISSION TABLE FINALE ===================================}
+[VIC6_AH:VIC6]
+~w~Ich bin nämlich nicht die Wohlfahrt, klar? Und nicht dein Sugardaddy.
-[FIN1_01:FINALE]
-Was ist los?
+[VIC6_AI:VIC6]
+~w~Dann hat die Polizei das Auto also beobachtet! Scheiß auf die Polizei!
-[FIN1_02:FINALE]
-Tommy! Ah, gut, gut. Hör zu. Hör zu...
+[VIC6_AJ:VIC6]
+~w~Wenn ich dir einen Auftrag erteile, führst du ihn aus. Capiche?
-[FIN1_03:FINALE]
-Ich mag Fische. Ich liebe Fische.
+[VIC6_AK:VIC6]
+~w~Oh, ja, ich hab kapiert, Vinnie.
-[FIN1_04:FINALE]
-Ich liebe sie als Haustiere oder auch lecker zubereitet.
+[VIC6_AL:VIC6]
+~w~Ich hab kapiert, dass ich wie Dreck behandelt werde, solange ich für dich arbeite.
-[FIN1_05:FINALE]
-Aber ich liebe sie nicht so sehr, dass ich als Fischfutter im Hafen enden will.
+[VIC6_AM:VIC6]
+~w~Ich hab schon Dinger gedreht, da hast du noch Mädchen den Rock hochgeschaut.
-[FIN1_06:FINALE]
-Und jetzt kommen auf einmal deine italienischen Brüder an und wollen mir Zementschuhe verpassen. Und ich...
+[VIC6_AN:VIC6]
+~w~Steck dir deinen Drecksjob an den Hut, 'Boss'. Ich kündige!
-[FIN1_07:FINALE]
-Halt den Mund, Ken. Setz dich.
+[VIC6_AO:VIC6]
+~w~Toni, du machst einen großen...
-[FIN1_08:FINALE]
-Lance, was läuft hier, verdammt?
+[VIC6_D2:VIC6]
+~w~Halte in der ~y~Markierung.
-[FIN1_09:FINALE]
-Deine Freunde aus dem Norden, Tommy. Die sind nicht sehr froh, dass du ihren Mann erledigt hast.
+[HOTW_01:VIC6]
+Klar, Mamma, ich ruf dich später an.
-[FIN1_10:FINALE]
-Sie kommen heute, um nach dem Rechten zu sehen.
+[HOTW_28:VIC6]
+Vincenzo!
-[FIN1_11:FINALE]
-Sie haben länger gebraucht, als ich dachte...
+[HOTW_02:VIC6]
+Ja, natürlich. Natürlich bin ich ein braver Junge.
-[FIN1_12:FINALE]
-Jungs, wir müssen denen ein für alle Mal klar machen, dass das mein Laden ist. MEINER!
+[HOTW_03:VIC6]
+Hab dich lieb.
-[FIN1_13:FINALE]
-Ken, hol die erste Ladung von dem Falschgeld und pack 20 Mios in Aktenkoffer.
+[HOTW_04:VIC6]
+Hey, Cheryl, Süße, lass mal gut sein.
-[FIN1_14:FINALE]
-Lance, du trommelst die anderen Jungs zusammen...
+[HOTW_05:VIC6]
+Da. Und jetzt verschwinde.
-[FIN2_01:FINALE]
-Tommy!
+[HOTW_06:VIC6]
+Kleines Wundertütchen für dich.
-[FIN2_02:FINALE]
-Was ist? Keine Umarmung für deinen alten Freund?
+[HOTW_11:VIC6]
+Du bist widerlich. Kennst du keine Achtung?
-[FIN2_03:FINALE]
-Ich war 15 Jahre weg vom Fenster,
+[HOTW_12:VIC6]
+Achtung? Ich nenn's Vielseitigkeit, Antonio.
-[FIN2_04:FINALE]
-bin nicht mehr auf dem Laufenden, was Manieren angeht.
+[HOTW_15:VIC6]
+Wenn nicht, kann ich Ray bitten, bei dir einzuspringen.
-[FIN2_05:FINALE]
-Immer Wut im Bauch, hä, Tommy?
+[HOTW_16:VIC6]
+Arschloch!
-[FIN2_06:FINALE]
-Ich sag's ja, dein Temperament wird dir nochmal schlecht bekommen.
+[HOTW_17:VIC6]
+Ich verarsch dich doch nur. Reg dich ab.
-[FIN2_07:FINALE]
-In den Koffern sind 20 Millionen...
+[HOTW_18:VIC6]
+Hör zu, du musst mir einen Gefallen tun.
-[FIN2_08:FINALE]
-Wie viele waren es denn? Zehn? Nein, elf Männer.
+[HOTW_19:VIC6]
+Meine Mädels brauchen Stoff. Ich hab 'n Auto voll davon in Trenton stehen.
-[FIN2_09:FINALE]
-So kommt man zu dem Spitznamen 'Harwood-Butcher'! Hehehe!
+[HOTW_20:VIC6]
+Hol die Kiste und ruf mich an.
-[FIN2_10:FINALE]
-Ich sollte EINEN Mann für dich erledigen! Die wussten, dass ich komme, Sonny...
+[HOTW_21:VIC6]
+Bin ich dein Chauffeur? Leck mich.
-[FIN2_11:FINALE]
-Wie redest du denn mit mir?
+[HOTW_22:VIC6]
+Hör zu, hör zu, hör zu...
-[FIN2_12:FINALE]
-Wie kommst du darauf, mich für diesen unglücklichen Zufall verantwortlich zu machen?
+[HOTW_23:VIC6]
+Ich würd's selber machen, aber das FBI beobachtet mich.
-[FIN2_13:FINALE]
-Nimm einfach das Geld...
+[HOTW_24:VIC6]
+Ich pass schon auf dich auf. Ehrlich.
-[FIN2_14:FINALE]
-Holt das Geld!
+[HOTW_25:VIC6]
+Außerdem gibt's hier 'ne Rangordnung, capiche? Jetzt sei ein braver Junge!
-[FIN2_15:FINALE]
-Weißt du, Tommy, ich hab für dich getan, was nur ging. Himmel und Hölle in Bewegung gesetzt.
+[HOTW_07:VIC6]
+- Hey, wer liebt dich, Engelchen? ~n~ - Du, Vinnie.
-[FIN2_16:FINALE]
-Ich war dein Freund. Ich dachte, du nimmst Vernunft an. Kapierst, was gut fürs Geschäft ist.
+[HOTW_09:VIC6]
+- War das deine Mutter am Apparat? ~n~ - Ja.
-[FIN2_17:FINALE]
-Ich hab dir vertraut, Tommy, und du hast mich enttäuscht.
+[HOTW_13:VIC6]
+- Lässt du dir nicht gern von 'ner scharfen Braut einen blasen? ~n~ - Was?
-[FIN2_18:FINALE]
-Aber wenigstens einer in deiner mickrigen Organisation weiß, wie man Geschäfte macht.
+{=================================== MISSION TABLE VIC7 ===================================}
-[FIN2_19:FINALE]
-Stimmt's, Lance?
+[VIC7_VE:VIC7]
+~r~v1.01
-[FIN2_20:FINALE]
-Sorry, Tommy. So läuft's in Vice City. So läuft das Geschäft.
+[VIC7_1:VIC7]
+~w~Vinnie, ich bin's! Wo steckst du, verdammt? Was soll das?
-[FIN2_21:FINALE]
-Du hast uns verraten...
+[VIC7_2:VIC7]
+~w~Toni? Come sta? Ich wusste, dass du anrufst.
-[FIN2_22:FINALE]
-Nein, ich hab DICH verraten, Tommy, nur DICH.
+[VIC7_3:VIC7]
+~w~Hör zu, ich bin bei den Portland Docks.
-[FIN2_23:FINALE]
-Die echten Piepen sind oben im Safe.
+[VIC7_3A:VIC7]
+~w~Wir kriegen 'ne große Lieferung rein. Mach, dass du herkommst. Ich bin auf dem großen Frachter.
-[FIN2_24:FINALE]
-Tommy, wie hast du dir das denn vorgestellt?
+[VIC7_3B:VIC7]
+~w~Ich weiß nicht, Vinnie... ich hab zu tun.
-[FIN2_25:FINALE]
-Dachtest du, ich lass mich mit Blüten abspeisen?
+[VIC7_3D:VIC7]
+~w~Aber von jetzt an sind wir Partner, okay? Nein, noch viel mehr... wir sind Brüder!
-[FIN2_26:FINALE]
-Dass ich den Schwanz einziehe und abhaue, um nicht das Gesicht zu verlieren?
+[VIC7_3E:VIC7]
+~w~Also, komm. Was meinst du? Salvatore wünscht es sich.
-[FIN2_27:FINALE]
-Nein.
+[VIC7_3F:VIC7]
+~w~Okay. Salvatore zuliebe.
-[FIN2_28:FINALE]
-Ich wollte dich nur noch ein bisschen ärgern, bevor ich dich fertig mache.
+[VIC7_3G:VIC7]
+~w~Aber wenn du noch mal diesen 'Daddy'-Scheiß abziehst, bist du ein toter Mann.
-[FIN3_01:FINALE]
-Tommy?
+[VIC7_4:VIC7]
+~w~Hahaha! Ich schlitz dich auf, Kleiner!
-[FIN3_02:FINALE]
-Oh Gott, Tommy! Was ist passiert?
+[VIC7_4A:VIC7]
+~w~Triff Vincenzo auf dem ~y~Frachter.
-[FIN3_03:FINALE]
-Wonach sieht's denn aus?
+[VIC7_5:VIC7]
+~w~Stiiirrrb!
-[FIN3_04:FINALE]
-Sieht aus, als wär dein Anzug ruiniert!
+[VIC7_6:VIC7]
+~w~Hahahahahaha!
-[FIN3_05:FINALE]
-Und das war ein wunderbarer Anzug! Tommy, Herrgott, was ist passiert?
+[VIC7_7:VIC7]
+~w~Ist der verblödete Scheißkerl tot?
-[FIN3_06:FINALE]
-Kleine Meinungsverschiedenheit mit einem Geschäftsfreund. Wie das so ist.
+[VIC7_8:VIC7]
+~w~Ich muss dich leider enttäuschen, Vinnie.
-[FIN3_07:FINALE]
-Wenn ich eine Meinungsverschiedenheit mit einem Geschäftsfreund habe, schick ich ihm einen bösen Brief.
+[VIC7_9:VIC7]
+~w~Du Hurensohn! Kannst du nicht endlich verrecken?
-[FIN3_08:FINALE]
-Oder ich pinkle ihm in den Briefkasten, aber ich fang nicht den 3. Weltkrieg an.
+[VIC7_10:VIC7]
+~w~Du hättest nicht zurückkommen sollen, Toni.
-[FIN3_09:FINALE]
-Vielleicht solltest du mal zu meinem Therapeuten gehen...
+[VIC710A:VIC7]
+~w~Ich hab mir für Salvatore die Finger wund geschuftet.
-[FIN3_10:FINALE]
-Dieser Dreckskerl von Lance...
+[VIC710B:VIC7]
+~w~Und dann kommst du wieder anspaziert und ich hör von ihm nur noch: Toni dies, Toni das!
-[FIN3_11:FINALE]
-Tommy, ich konnte den Kerl ja nie leiden.
+[VIC7_11:VIC7]
+~w~Das ist meine Stadt, Toni! MEINE STADT!
-[FIN3_12:FINALE]
-Er ist neurotisch, unsicher, selbstsüchtig - Er ist ein Arschloch!
+[VIC711A:VIC7]
+~w~Und du nimmst sie mir nicht weg!
-[FIN3_13:FINALE]
-Gut, dass du ihn fertig gemacht hast!
+[VIC7_12:VIC7]
+~w~Das werd ich genießen.
-[FIN3_14:FINALE]
-Ich glaub auch nicht, dass wir nochmal Ärger mit denen aus dem Norden kriegen...
+[VIC7_4B:VIC7]
+~w~Sieht menschenleer aus. Geh an Bord des ~y~Schiffes.
-[FIN3_15:FINALE]
-Die aus dem Norden gibt's nämlich nicht mehr.
+[VIC7_13:VIC7]
+~w~Begib dich zum ~y~Ausgang.
-[FIN3_16:FINALE]
-Gibt nur noch die im Süden.
+[VIC7_3C:VIC7]
+~w~Ich weiß, dass ich dich wie 'n Arschloch behandelt habe. Tut mir auch ehrlich Leid.
-[FIN3_17:FINALE]
-Moment, verstehe ich dich richtig, Tommy, Heißt das...?
+[VIC7HUL:VIC7]
+~w~Geh runter in den ~y~Rumpf.
-[FIN3_18:FINALE]
-Na, was meinst du, was das heißt?
+{=================================== MISSION TABLE SALS1 ===================================}
-[FIN3_19:FINALE]
-Dass wir jetzt die Herren im Haus sind... ich meine, dass DU der Herr im Haus bist. Oh, Tommy...
+[SALS1_1:SALS1]
+KEIN(E)
-[FIN3_20:FINALE]
-Weißt du, Ken, das könnte der Beginn einer wunderbaren Geschäftsbeziehung sein...
+[SALS1_6:SALS1]
+Beseitige ~r~Bürgermeister R.C. Hole!
-[FIN3_21:FINALE]
-Schließlich bist du ein hinterlistiger, mieser kleiner Dieb...
+[SALS1_7:SALS1]
+Schnapp dir das ~g~Handy des Bürgermeisters!
-[FIN3_22:FINALE]
-und ich bin ein verurteilter Psychopath und Dealer.
+[SALS1_8:SALS1]
+~r~Der Bürgermeister joggt nicht mehr.
-[FIN3_23:FINALE]
-Ich weiß. Ist das nicht wunderbar?
+[SALS1_9:SALS1]
+~r~Der Bürgermeister ist entkommen.
-[FIN_B1:FINALE]
-~g~Erledige den Verräter ~y~Vance~g~.
+[SALS110:SALS1]
+Bring das Handy zu ~y~Salvatore.
-[FIN_B2:FINALE]
-~g~Erledige ~p~Sonny~g~, um die Sache ein für alle Mal zuende zu bringen.
+[SALS111:SALS1]
+Waffe weg oder ich schieße!
-[FIN_B3:FINALE]
-~g~Die Mafia will dein Geld stehlen. Verteidige den Safe.
+[SALS112:SALS1]
+Sie haben Verdacht geschöpft! Der ~r~Bürgermeister~w~ haut ab!
-[FIN_B4:FINALE]
-~g~Du hältst nicht mehr lange durch. Hol dir unten ein wenig ~w~Energie~g~.
+[SS1_AA:SALS1]
+Ich bin's, Toni.
-[FIN_B5:FINALE]
-~g~Die Mafia stiehlt dein Geld. Verteidige den ~c~Safe.
+[SS1_AB:SALS1]
+Diese Bürgermeistersau verarscht mich. Das lass ich mir nicht bieten!
-[FIN_B7:FINALE]
-~r~Die Mafia hat dein gesamtes Geld gestohlen.
+[SS1_AC:SALS1]
+Reg dich ab, Sal. Ich werd versuchen, ihn aus dem Verkehr zu ziehen.
-[DEFSAFE:FINALE]
-~g~Geh zurück zum Safe und verteidige ihn.
+[SS1_AD:SALS1]
+Bist ein guter Junge, Toni. Dein Vater wäre stolz auf dich.
-{=================================== MISSION TABLE FIRETRK ===================================}
+[SS1_AE:SALS1]
+Hör zu, der Fettsack von Bürgermeister müsste beim Joggen im Park sein.
-[F_PASS1:FIRETRK]
-Feuer gelöscht!
+[SS1_AF:SALS1]
+Sorg dafür, dass ihm die Luft ausgeht... für immer!
-[F_FAIL2:FIRETRK]
-~r~Du kommst zu spät!
+[SS1_AG:SALS1]
+Und schnapp dir sein Handy!
-[F_CANC:FIRETRK]
-~r~Feuerwehr-Mission abgebrochen!
+[SS1_AH:SALS1]
+Dann sehen wir, mit wem er telefoniert hat.
-[F_EXTIN:FIRETRK]
-FEUER:
+[SALS1AA:SALS1]
+Ich bin's, Toni.
-[F_START:FIRETRK]
-~g~Brennendes Fahrzeug in der Gegend von ~a~ gemeldet. Lösche den Brand.
+[SALS1AB:SALS1]
+Diese Bürgermeistersau verarscht mich.
-[SIREN_1:FIRETRK]
-Um die Sirenen dieses Fahrzeugs einzuschalten, drücke die ~h~~k~~VEHICLE_HORN~~w~.
+[SALS1AC:SALS1]
+Das lass ich mir nicht bieten!
-[SIREN_2:FIRETRK]
-Um die Sirenen dieses Fahrzeugs einzuschalten, drücke die ~h~~k~~VEHICLE_HORN~~w~.
+[SALS1AD:SALS1]
+Reg dich ab. Ich zieh ihn aus dem Verkehr.
-[FIREPRO:FIRETRK]
-Feuerwehr-Mission Level 12 abgeschlossen: Du bist jetzt absolut feuerfest!!
+[SALS1AE:SALS1]
+Bist ein guter Junge, Toni.
-[F_FAIL1:FIRETRK]
-Feuerwehr-Mission beendet.
+[SALS1AF:SALS1]
+Der Fettsack müsste beim Joggen im Park sein.
-[F_STAR1:FIRETRK]
-~g~Brennende Fahrzeuge in der Gegend von ~a~ gemeldet. Lösche den Brand.
+[SALS1AG:SALS1]
+Sorg dafür, dass ihm die Luft ausgeht. Für immer!
-[SPRAY_4:FIRETRK] { reVC update }
-Benutze die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste, um die Wasserkanone abzufeuern und den ~h~~k~~VEHICLE_TURRETLEFT~~w~ und ~h~~k~~VEHICLE_TURRETRIGHT~~w~, um mit der Wasserkanone zu zielen.
+[SALS1AH:SALS1]
+Ach, und schnapp dir sein Handy!
-[SPRAY_1:FIRETRK] { reVC update }
-Benutze die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste, um die Wasserkanone abzufeuern und den ~h~~k~~VEHICLE_TURRETLEFT~~w~ und ~h~~k~~VEHICLE_TURRETRIGHT~~w~, um mit der Wasserkanone zu zielen.
+[SALS1AI:SALS1]
+Dann sehen wir, mit wem er telefoniert hat.
-{=================================== MISSION TABLE GENERA1 ===================================}
+[SALS1C1:SALS1]
+Waffe weg, Sir!
-[GEN1_I:GENERA1]
-Für diesen kleinen Gefallen werde ich Sie belohnen. Danach suchen wir Ihr Geld gemeinsam.
+[SALS1C2:SALS1]
+Halt oder ich schieße!
-[GEN1_A:GENERA1]
-Mr. Vercetti!
+[SALS1C3:SALS1]
+Keine Bewegung!
-[GEN1_B:GENERA1]
-Colonel.
+[SALS1C4:SALS1]
+Seien Sie kein Idiot!
-[GEN1_D:GENERA1]
-Nein danke.
+[SALS113:SALS1]
+~r~Das Handy des Bürgermeisters wurde zerstört.
-[GEN1_E:GENERA1]
-Es ist mir peinlich, aber es scheint, unser Problem ist zum Teil auf das lose Mundwerk einer mir vertrauten Person zurückzuführen.
+[SALS114:SALS1]
+Vorsicht! Sie schießen, wenn du bewaffnet im Park auftauchst.
-[GEN1_F:GENERA1]
-Seit Jahren schleppe ich Gonzalez mit, aber nun erreicht seine Unfähigkeit einen neuen Höhepunkt.
+{=================================== MISSION TABLE SALS2 ===================================}
-[GEN1_G:GENERA1]
-Es ist nur gerecht, wenn Sie Gonzalez erledigen.
+[SALS2_1:SALS2]
+~w~Geh zum ~b~Auto.
-[GEN1_H:GENERA1]
-War er es? Mir geht es in erster Linie um das Geld.
+[SALS2_2:SALS2]
+~w~Fahr zum ~y~Treffpunkt.
-[GEN1_J:GENERA1]
-Er ist in seinem Penthouse, vermutlich halb betrunken. Nehmen Sie das hier.
+[SALS2_3:SALS2]
+~w~Steig wieder ins ~b~Auto.
-[GEN1_06:GENERA1]
-Er hat eine Kettensäge!!
+[SALS2_4:SALS2]
+~r~Mickey ist draufgegangen!
-[GEN1_07:GENERA1]
-Bleib mir vom Leib, du elender Mistkerl!
+[SALS2_5:SALS2]
+~r~Ein Mann von Salvatore ist draufgegangen!
-[GEN1_08:GENERA1]
-Gütiger Himmel, mein Leben ist ruiniert, und mein Aussehen dazu!
+[SALS2AA:SALS2]
+Toni,
-[GEN1_10:GENERA1]
-Ich werd dir dein Mundwerk stopfen!
+[SALS2AB:SALS2]
+ein paar von den Jungs kommen nachher bei dir vorbei.
-[GEN1_11:GENERA1]
-Bleib stehen, du Fettsack!
+[SALS2AC:SALS2]
+Sieh zu, dass du da bist, wenn sie kommen.
-[GEN1_12:GENERA1]
-Bleib stehen, und es geht ganz schnell!
+[SALS2AD:SALS2]
+Ciao, Salvatore.
-[GEN1_13:GENERA1]
-Hör auf zu jammern, das interessiert keinen, Fettsack!
+[SALS2CA:SALS2]
+Hey, Toni.
-[GEN1_C:GENERA1]
-Danke für Ihr Kommen. Setzen Sie sich. Hummer?
+[SALS2CC:SALS2]
+Los, steig ein. Du fährst.
-[GEN1_04:GENERA1]
-~g~Benutze den Eingang, um Zugang zu Gonzalez' Dachwohnung zu erhalten.
+[SALS2CD:SALS2]
+Mickey, was ist denn los?
-[GEN1_05:GENERA1]
-~g~Erledige Gonzalez!
+[SALS2CE:SALS2]
+Ach, komm, Cipriani, meinst du, ich will dich umnieten?
-[GEN1_09:GENERA1]
-Ich zahle dir das Doppelte, Tommy, das DOPPELTE!
+[SALS2BA:SALS2]
+Salvatore ist da unten.
-[GEN1_17:GENERA1]
-~g~Gonzalez versucht zu fliehen! Folge ihm durch die Türen und erledige ihn.
+[SALS2BC:SALS2]
+Toni, mein Junge,
-[GEN1_18:GENERA1]
-~r~Gonzalez hat das Polizeirevier sicher erreicht!
+[SALS2BD:SALS2]
+heute ist dein großer Tag!
-[GEN1_19:GENERA1]
-~g~Die Polizei von Vice City ist hinter dir her!
+[SALS2BE:SALS2]
+Oh, Salvatore. Mr. Leone.
-[GEN1_20:GENERA1]
-~g~Steig in ein Fahrzeug.
+[SALS2BF:SALS2]
+Auf den Tag hat meine Mamma gewartet.
-[GEN1_21:GENERA1]
-~g~Begib dich zur~h~ Pay 'N' Spray-Lackiererei~g~ in~h~ Vice Point~g~.
+[SALS2CB:SALS2]
+Steig ein, komm, wir fahren wohin.
-[GEN1_22:GENERA1]
-~g~Bring dein Fahrzeug in die Lackiererei, um deinen ~h~Fahndungslevel~g~ loszuwerden und das Fahrzeug zu ~h~reparieren ~g~und ~h~umzuspritzen~g~. Kosten - ~h~$100~g~. Diesmal gratis.
+[SALS2BB:SALS2]
+Madonn' mia, worauf wartest du?
-[GEN1_01:GENERA1]
-Um im Laufen eine Nahkampfattacke vorzubereiten, die~o~ |-Taste~w~ gedrückt halten.
+[SALS2AF:SALS2]
+Hey, Toni, danke. Du hörst von mir.
-[GEN1_02:GENERA1]
-Um im Laufen eine Nahkampfattacke vorzubereiten, die~x~ /-Taste~w~ gedrückt halten.
+{=================================== MISSION TABLE SALS3 ===================================}
-[GEN1_03:GENERA1]
-Um im Laufen eine Nahkampfattacke vorzubereiten, die~h~ R1-Taste~w~ gedrückt halten.
+[SALS3_1:SALS3]
+KEIN(E)
-[GEN1_14:GENERA1]
-Lass die~h~ ~k~~PED_FIREWEAPON~~w~ los, um die Attacke auszuführen.
+[SALS3_2:SALS3]
+Schaden
-[GEN1_15:GENERA1]
-Lasse die~h~ ~k~~PED_FIREWEAPON~~w~ los, um die Attacke auszuführen.
+[SALS313:SALS3]
+~r~Der Berater des Bürgermeisters ist hinüber!
-[GEN1_16:GENERA1]
-Lasse die~h~ ~k~~PED_FIREWEAPON~~w~ los, um die Attacke auszuführen.
+[SALS314:SALS3]
+~r~Salvatore ist hinüber!
-[GEN1_23:GENERA1]
-~g~Geh durch die Türen zurück ins Erdgeschoss.
+[SALS3AA:SALS3]
+Toni, steig ein!
-{=================================== MISSION TABLE GENERA2 ===================================}
+[SALS3AB:SALS3]
+Wo fahren wir hin?
-[COL2_A:GENERA2]
-Tommy! Setzen Sie sich zu mir.
+[SALS3AC:SALS3]
+Zu einem Plausch mit dem Assistenten des Bürgermeisters über Franco Forelli.
-[COL2_B:GENERA2]
-Sieht das nicht köstlich aus? Tapirschnauze?
+[SALS3BA:SALS3]
+Runter von meinem Boot!
-[COL2_C:GENERA2]
-Äh... Nein. Nein, danke.
+[SALS3BB:SALS3]
+Du kommst mit.
-[COL2_D:GENERA2]
-Tommy, Sie sind wie eine Pampas-Brise, die mich vom Gestank der Korruption befreit hat.
+[SALS3BC:SALS3]
+Was fällt Ihnen ein!
-[COL2_E:GENERA2]
-Natürlich muss ich so tun, als trauere ich um ihn und muss wie immer meine Arbeit machen.
+[SALS3BD:SALS3]
+Beeil dich, der Sicherheitsdienst guckt zu!
-[COL2_F:GENERA2]
-Das bringt mich meinem Geld nicht näher...
+[SALS3CA:SALS3]
+Toni, Vorsicht! Schützen auf den Felsen!
-[COL2_G:GENERA2]
-Tommy, mein Freund, Sie sind hier nicht in Liberty. Hier regeln wir Dinge anders.
+[SALS3CB:SALS3]
+Schützen vor dir!
-[COL2_H:GENERA2]
-Ich werde weiter nachforschen, zunächst hätte ich aber ein lukratives Geschäft abzuschließen.
+[SALS3CC:SALS3]
+Vorsicht, rechts, Toni!
-[COL2_I:GENERA2]
-Freunden tu ich gern einen Gefallen, Cortez...
+[SALS3CD:SALS3]
+Links, Toni, links!
-[COL2_J:GENERA2]
-Sie sind ein guter Freund, Tommy. Ich wusste, ich kann auf Sie zählen.
+[SALS3CE:SALS3]
+Schützen auf der Mole da!
-[COL2_K:GENERA2]
-Sie müssen sich mit einem Kurier treffen, der wertvolle 'Technologie' für mich beschafft hat.
+[SALS3CF:SALS3]
+Scheiße, der Sicherheitsdienst tanzt im Hubschrauber an!
-[COL2_1:GENERA2]
-Die Regen ist sich sehr nass um diese Jahreszeit...
+[SALS3DA:SALS3]
+Der Bürgermeister wär ohne Francos Okay nicht mal scheißen gegangen!
-[COL2_2:GENERA2]
-Was?
+[SALS3DB:SALS3]
+Der Bürgermeister war nicht gekauft!
+
+[SALS3DC:SALS3]
+Halt, halt, ihr habt Recht.
+
+[SALS3DE:SALS3]
+Die Sizilianer? Wieso?
+
+[SALS3DF:SALS3]
+Sie haben Franco gekauft und wollen Krieg zwischen den Familien in Liberty.
+
+[SALS3DG:SALS3]
+Wenn sich alles beruhigt hat, übernehmen sie die Macht.
+
+[SALS3DH:SALS3]
+Toni, ich ruf dich gleich an.
+
+[SALS3DI:SALS3]
+Aber erst muss ich diesen Scheißhaufen entsorgen!
+
+[SALS3DD:SALS3]
+Diese Sizilianer... die haben Franco dazu überredet.
+
+{=================================== MISSION TABLE SALS4 ===================================}
+
+[SALS4_1:SALS4]
+KEIN(E)
+
+[SALS4BA:SALS4]
+Ja.
+
+[SALS4BB:SALS4]
+Gott sei Dank bist du rangegangen!
+
+[SALS4BC:SALS4]
+Was gibt's, Sal?
+
+[SALS4BD:SALS4]
+Ich bin in Fort Staunton, die Forellis ausspionieren und jetzt dampft die Kacke!
-[COL2_3:GENERA2]
-Äh, comment?
+[SALS4BE:SALS4]
+Die Sindaccos eröffnen den Krieg gegen die Forellis
-[COL2_4:GENERA2]
-Hören Sie, Cortez schickt mich. Geben Sie mir die verdammten Mikrochips.
+[SALS4BF:SALS4]
+und ich stecke mitten in dem Gemetzel drin!
-[COL2_5:GENERA2]
-Oh... ok.
+[SALS4BG:SALS4]
+Ich bin sofort da.
-[COL2_B1:GENERA2]
-~g~Triff dich mit dem Kurier im Einkaufszentrum.
+[SALS4BH:SALS4]
+Nimm die Limo. Sie ist gepanzert. Wir werden sie brauchen!
-[COL2_B2:GENERA2]
-~g~Der Kurier flieht mit den Lenkwaffen-Chips. Lass ihn nicht entkommen!
+[SALS4AA:SALS4]
+Toni, nichts wie weg hier!
-[COL2_B3:GENERA2]
-~g~Bring die Lenkwaffen-Chips zum Colonel.
+[SALS4AB:SALS4]
+Bring mich zur Limo!
-[COL2_F1:GENERA2]
-~r~Du hast die Kontaktperson erledigt!
+[SALS4AE:SALS4]
+Gut, ich hab 'ne Wohnung in Newport. Fahr mich hin!
-[COL2_F2:GENERA2]
-~r~Der Kurier ist hinüber. Schnapp dir die Lenkwaffen-Chips.
+[SALS4AF:SALS4]
+Hey, Toni, danke. Ich melde mich.
-[COL2_6A:GENERA2]
-Keine Bewegung, amerikanisches Imperialistenschwein! Das ist Eigentum des französischen Staates. Her damit!
+[SAL4_1:SALS4]
+Hol Mr. Leones ~b~Limo.
-[BLIPHLP:GENERA2]
-Das Radar zeigt ein nach oben zeigendes Dreieck, das bedeutet, dass das Ziel sich in größerer Höhe befindet als der Spieler.
+[SAL4_2:SALS4]
+~r~Du hast den Wagen zerstört!
-[COL2_F3:GENERA2]
-~r~Die Lenkwaffen-Chips liegen auf dem Meeresgrund.
+[SAL4_3:SALS4]
+Fahr den Wagen nach ~y~Fort Staunton.
-[COL2_F4:GENERA2]
-~r~Der Kurier ist entkommen! Du hast dir die Chips durch die Lappen gehen lassen.
+[SAL4_4:SALS4]
+~r~Du hast Salvatore sterben lassen!
-{=================================== MISSION TABLE GENERA3 ===================================}
+[SAL4_6:SALS4]
+~b~Salvatore~w~ ist in der Gasse.
-[GEN3_49:GENERA3]
-Lance' Gesundheitszustand:
+[SAL4_9:SALS4]
+Begib dich zur ~y~Garage.
-[GEN3_A:GENERA3]
-Thomas, danke, dass Sie kommen.
+[SAL4_11:SALS4]
+Du hast ~b~Salvatore ~w~zurückgelassen!
-[GEN3_B:GENERA3]
-Verzeihen Sie, wenn ich gleich zur Sache komme.
+[SAL4_12:SALS4]
+Versperrt! Lass die Limo stehen und geh zu Fuß hin.
-[GEN3_C:GENERA3]
-Diaz bat mich, eine kleinere geschäftliche Transaktion zu überwachen.
+[SAL4_13:SALS4]
+Steig in die ~b~Limo.
-[GEN3_D:GENERA3]
-Wird hoffentlich besser laufen als die letzte, hah?
+[SAL4_14:SALS4]
+Bring Salvatore und die Limo zur ~y~Garage~w~ in Newport.
-[GEN3_E:GENERA3]
-Darum habe ich an Sie gedacht, mein Freund.
+[SAL4_15:SALS4]
+Such ~b~Salvatore!
-[GEN3_F:GENERA3]
-Ich habe etwas zu Ihrem Schutz beim Parkhaus deponiert.
+[SAL4_16:SALS4]
+Bring Salvatore zur ~b~Limo.
-[GEN3_G:GENERA3]
-Holen Sie es ab. Und dann bewachen Sie Diaz' Männer bei dem Deal.
+[SAL4_17:SALS4]
+Warte, bis ~b~Salvatore~w~ in der Limo ist!
-[GEN3_H:GENERA3]
-Danke, Amigo.
+{=================================== MISSION TABLE SALS5 ===================================}
-[GEN3_1:GENERA3]
-Reißt sich alles selbst unter den Nagel, wie ich sehe.
+[SALS5_1:SALS5]
+~w~Drücke~h~ ~k~ ~VEACC~ ~w~um Paul Sindaccos Auto zu steuern.
-[GEN3_2:GENERA3]
-Sag mal, ist das alles, was du kannst, mir dauernd nachzuschnüffeln? Komm mit und zeig mir, dass du was drauf hast.
+[SALS5_2:SALS5]
+~w~Erledige die ~r~Forellis~w~ am Treffpunkt, ehe Sindacco das Steuergerät entdeckt.
-[GEN3_3:GENERA3]
-Könnte ich machen. Ich heiße übrigens Lance.
+[SALS5_3:SALS5]
+~r~Paul Sindacco ist tot!
-[GEN3_5:GENERA3]
-Du musst Cortez' neuer Mann sein.
+[SALS5_4:SALS5]
+~r~Salvatores Van wurde zerstört!
-[GEN3_6:GENERA3]
-Bis ich was besseres finde...
+[SALS5_5:SALS5]
+~r~Sindacco ist am Treffpunkt!
-[GEN3_7:GENERA3]
-Sie müssen bald hier sein. Wir sollten uns gute Beobachtungsposten suchen.
+[SALS5_6:SALS5]
+~w~Los, zum ~b~Van.
-[GEN3_8:GENERA3]
-Ok! Ich nehm den Balkon, du kletterst auf das Dach drüben im Hof.
+[SALS5_7:SALS5]
+~w~Restzeit
-[GEN3_9:GENERA3]
-Ich lebe! Idioten! Und das nur wegen dir! Wie heißt du?
+[SALS5_8:SALS5]
+~r~Sindacco hat das Steuergerät entdeckt!
-[GEN3_10:GENERA3]
-Tommy.
+[SALS5_9:SALS5]
+~w~Die Satellitensteuerung von Sindaccos Auto reagiert bei dir verzögert.
-[GEN3_11:GENERA3]
-Wir sehen uns bald wieder, glaube ich!
+[SALS510:SALS5]
+Schaden
-[GEN3_12:GENERA3]
-Wo steckt denn Lance? Shit...
+[SALS5AA:SALS5]
+Hey!
+
+[SALS5AB:SALS5]
+Toni, ich bin's. Ich hab was für dich.
+
+[SALS5AC:SALS5]
+Es wird dir mordsmäßig Spaß machen.
+
+[SALS5AD:SALS5]
+Was soll ich erledigen, Sal?
+
+[SALS5AE:SALS5]
+Um die Ecke steht ein Van.
+
+[SALS5AF:SALS5]
+Ruf mich an, wenn du ihn findest.
+
+[SALS5BA:SALS5]
+Okay, Sal, ich bin im Van.
+
+[SALS5BB:SALS5]
+Gut. Wir haben an Paulie Sindaccos Auto rumgebastelt.
+
+[SALS5BC:SALS5]
+Was mach ich jetzt?
+
+[SALS5BD:SALS5]
+Paulie trifft sich mit den Forellis,
+
+[SALS5BE:SALS5]
+um 'nen Waffenstillstand auszuhandeln.
+
+[SALS5BF:SALS5]
+Mit dem Apparat im Van kannst du Paulies Auto fernsteuern
+
+[SALS5BG:SALS5]
+und ihnen dazwischenfunken.
+
+[SALS5CA:SALS5]
+Hä?!
+
+[SALS5CC:SALS5]
+Großer Gott, Hilfe!
+
+[SALS5CD:SALS5]
+Aus dem Weg!
+
+[SALS5CF:SALS5]
+Helft mir doch!
+
+[SALS5CG:SALS5]
+Mein Auto ist besessen!
+
+[SALS5CE:SALS5]
+Die Karre will mich umbringen!
+
+[SALS5CB:SALS5]
+Hey, was ist denn jetzt los?
+
+{=================================== MISSION TABLE SALS6 ===================================}
+
+[SALS601:SALS6]
+~w~Sal hat ein ~b~Boot ~w~für dich am Südwestpier liegen. Fang den Klugscheißer ab.
+
+[SALS602:SALS6]
+~w~Er fährt entlang der Küste. Schnapp ~r~ihn!
+
+[SALS603:SALS6]
+~r~Er ~w~fährt zu Franco Forelli!
+
+[SALS604:SALS6]
+~r~Der Klugscheißer hat Fort Staunton erreicht.
+
+[SALS605:SALS6]
+~r~Er ist entkommen!
+
+[SALS606:SALS6]
+~r~Er ~w~entkommt zu Fuß!
+
+[SALS607:SALS6]
+~w~Er entkommt in einem ~r~gestohlenen Auto!
+
+[SALS608:SALS6]
+~r~Ohne Boot kannst du ihn nicht verfolgen!
+
+[SALS6AA:SALS6]
+Hallo.
+
+[SALS6AC:SALS6]
+Forelli-Sindacco-Fehde.
+
+[SALS6AD:SALS6]
+Er ist jetzt zu Franco Forelli unterwegs.
+
+[SALS6AE:SALS6]
+Für uns ist es von großem Vorteil, wenn Franco nichts erfährt
+
+[SALS6AF:SALS6]
+und dieser Krieg weitergeht.
+
+[SALS6AG:SALS6]
+Mach das Plappermaul unschädlich.
+
+[SALS6AH:SALS6]
+Wird erledigt, Sal.
+
+[SALS6AB:SALS6]
+Toni, so'n Klugscheißer hat rausgekriegt, dass die sizilianische Mafia hinter der Forelli-Sindacco-Fehde steckt.
-[GEN3_14:GENERA3]
-Tommy! Ich brauch Hilfe!
+[SLS6_20:SALS6]
+~w~Er will zurück zu Franco Forelli, erledige ~r~ihn ~w~!
-[GEN3_15:GENERA3]
-Keine Sorge, ich hab alles im Griff!
+[SLS6_21:SALS6]
+~w~Erledige ~r~ihn ~w~!
-[GEN3_16:GENERA3]
-Diaz' Männer werden umgemäht!
+{=================================== MISSION TABLE NEDS1 ===================================}
-[GEN3_19:GENERA3]
-~g~Haitianer! Sie greifen an! Beschütze Diaz!
+[NEDS1_1:NEDS1]
+Das FBI ist unterwegs, um einen gefälschten Bericht über Spitzensportler in Empfang zu nehmen.
-[GEN3_20:GENERA3]
-~g~Begib dich zum Parkhaus. Hol dir die Waffe, die der Colonel dort für dich deponiert hat.
+[NEDS1_2:NEDS1]
+Gelangt der Bericht in die Hände des FBI, landen unschuldige Menschen im Knast.
-[GEN3_22:GENERA3]
-Diaz' Gesundheitszustand:
+[NEDS1_3:NEDS1]
+Du sollst den Bericht abfangen und mir bringen, damit ich ihn sicher verwahren kann.
-[GEN3_23:GENERA3]
-~g~Du hast Lance vergessen. Hole ihn!
+[NEDS1_4:NEDS1]
+Du benötigst ein FBI-Fahrzeug.
-[GEN3_25:GENERA3]
-~r~Lance hat's erwischt!
+[NEDS1_5:NEDS1]
+Auf dem Highway wurde ein bewaffneter Raubüberfall vereitelt. Das FBI ist am Tatort.
-[GEN3_28:GENERA3]
-~g~Bring den Aktenkoffer zu Diaz zurück.
+[NEDS1_6:NEDS1]
+Klau ihr Auto und fahr zur Übergabestelle, ehe es zu spät ist.
-[GEN3_29:GENERA3]
-~g~Hol dir den Aktenkoffer und bringe ihn zu Diaz zurück.
+[NEDS1_8:NEDS1]
+Steig wieder ins ~b~FBI-Auto!
-[GEN3_30:GENERA3]
-~r~Er ist mit dem Geld entwischt! Dafür macht Diaz dich kalt!
+[NEDS1_9:NEDS1]
+Fahr zum ~y~Übergabeort.
-[GEN3_33:GENERA3]
-~r~Du sollst Diaz und seine Männer bewachen, nicht beschießen!
+[NEDS111:NEDS1]
+Häng die Cops ab!
-[GEN3_34:GENERA3]
-~r~Es gibt keinen Deal, wenn du die Kubaner erledigst!
+[NEDS113:NEDS1]
+Ich hab den versprochenen Bericht.
-[GEN3_35:GENERA3]
-~g~Er hat Diaz' Geld gestohlen!
+[NEDS114:NEDS1]
+Hä? Hier ist schon ein Agent!?
-[GEN3_36:GENERA3]
-~g~Schnapp dir das Motorrad, stelle ihn und hol Diaz' Geld zurück!
+[NEDS115:NEDS1]
+Noch ein FBI-Auto? Moment! Sie sind ein Hochstapler!
-[GEN3_37:GENERA3]
-~g~. Die Kubaner kommen. Überwache den Deal. Pass auf Diaz und Lance auf.
+[NEDS116:NEDS1]
+Stoppe den ~r~Informanten!
-[GEN3_38:GENERA3]
-~r~Diaz hat's erwischt! Du hast versagt!
+[NEDS117:NEDS1]
+Hol dir den ~g~Bericht.
-[GEN3_39:GENERA3]
-~g~Begib dich zu deinem Beobachtungsposten die Treppe hoch.
+[NEDS118:NEDS1]
+Bring den Bericht zur ~y~Liberty Tree Redaktion.
-[GEN3_44:GENERA3]
-~g~Begib dich mit Lance zum Übergabeort und pass auf Diaz auf.
+[NEDS119:NEDS1]
+~r~Das FBI-Auto kannst du dir abschminken.
-[GEN3_45:GENERA3]
-Sie müssen bald hier sein. Wir sollten uns gute Beobachtungsposten suchen.
+[NEDS120:NEDS1]
+~r~Du bist zu spät gekommen! Der Informant hat dem FBI den Bericht gegeben!
-[GEN3_40:GENERA3] { reVC update }
-Um auf einem ~h~Motorrad ~w~sitzend ~h~geradeaus zu feuern~w~, drücke die ~h~~k~~VEHICLE_FIREWEAPON~.
+[NEDS121:NEDS1]
+Gute Arbeit, Toni. Gott findet Wohlgefallen an dir.
-[GEN3_41:GENERA3] { reVC update }
-Um auf einem ~h~Motorrad ~w~sitzend ~h~geradeaus zu feuern~w~, drücke die ~h~~k~~VEHICLE_FIREWEAPON~.
+[NEDS122:NEDS1]
+Bei mir gerät er nicht in falsche Hände.
-[GEN3_46:GENERA3]
+[NEDS123:NEDS1]
+Tschüs.
+
+[NEDS124:NEDS1]
+~r~Der Bericht ist im Eimer!
+
+[NEDS1AA:NEDS1]
+Vergib mir, Vater, denn ich habe gesündigt...
+
+[NEDS1AB:NEDS1]
+Scheiße, der Teufel hat dich am Wickel, Antonio.
+
+[NEDS1AE:NEDS1]
+Ein armer Sünder hat gebeichtet, einen Dopingbericht über Spitzensportler frei erfunden zu haben.
+
+[NEDS1AF:NEDS1]
+Wenn du verhinderst, dass er ihn dem FBI übergibt, wären die Karrieren Unschuldiger gerettet.
+
+[NEDS1AG:NEDS1]
+Wird erledigt, Vater.
+
+[NEDS1BA:NEDS1]
+Sie sind früh da.
+
+[NEDS1BB:NEDS1]
+Ich kenne Sie nicht. Wo ist John-O?
+
+[NEDS1BC:NEDS1]
+John-O? Er konnte nicht kommen.
+
+[NEDS1BD:NEDS1]
+Hey, da ist John-O!
+
+[NEDS1BE:NEDS1]
+Her damit!
+
+[NEDS1BF:NEDS1]
Scheiße!
-[GEN3_47:GENERA3]
-Tommy!
+[NEDS1AD:NEDS1]
+Äh, Letzteres ist eher meine Kragenweite...
-[GEN3_48:GENERA3]
-Verdammt!
+[NEDS1AC:NEDS1]
+Du kannst also entweder Ave Marias beten oder die Drecksarbeit des Herrn verrichten.
-[GEN3_50:GENERA3]
-~r~Du hast Diaz' Geld verloren! Versuch das nächste Mal, das Geld nicht zu vernichten!
+[NEDS1_7:NEDS1]
+Begib dich zum Tatort und klau ein ~b~FBI-Auto~w~. Komm dann vor ~1~:~1~ zum Treffpunkt.
-[GEN3_51:GENERA3]
-Noch mehr verdammte Haitianer in einem beschissenen Van!
+[NEDS125:NEDS1]
+Fahr zum Tatort und klau einen ~b~FBI-Wagen~w~, dann sieh zu, dass du vor 0~1~:~1~ Uhr den Treffpunkt erreichst.
-[GEN3_54:GENERA3]
-Steht nicht rum, ihr Idioten! Schnappt euch diesen haitianischen Mistkerl!
+[NEDS126:NEDS1]
+Fahr zum Tatort und klau einen ~b~FBI-Wagen~w~, dann sieh zu, dass du vor 0~1~:0~1~ Uhr den Treffpunkt erreichst.
-[GEN3_55:GENERA3]
-Tommy! Ich bleibe hier und passe auf Diaz auf!
+[NEDS127:NEDS1]
+Fahr zum Tatort und klau einen ~b~FBI-Wagen~w~, dann sieh zu, dass du vor ~1~:0~1~ Uhr den Treffpunkt erreichst.
-[GEN3_18:GENERA3]
-~g~Die Kubaner kommen. Bleib in Diaz' Nähe. Überwache den Deal. Pass auf Diaz und Lance auf.
+{=================================== MISSION TABLE NEDS2 ===================================}
-[GEN3_56:GENERA3]
-~r~Diaz ist hinüber, er ist in einen Hinterhalt geraten. Pass das nächste Mal auf ihn auf!
+[NEDS2_1:NEDS2]
+KEIN(E)
-[GEN3_57:GENERA3]
-Die Kruger ist ein Sturmgewehr, das einem erlaubt, in der subjektiven Kamera-Einstellung manuell zu zielen.
+[NEDS2AA:NEDS2]
+Vergib mir, Vater, denn ich habe gesündigt.
-[GEN3_58:GENERA3]
-Halte die~h~ R1~w~-Taste gedrückt, um mit dem Sturmgewehr zu ~h~zielen~w~.
+[NEDS2AB:NEDS2]
+Heilige Kacke, Toni, was hast du jetzt angestellt?
-[GEN3_59:GENERA3]
-Halte die~h~ L1~w~-Taste gedrückt, um mit dem Sturmgewehr zu ~h~zielen~w~.
+[NEDS2AC:NEDS2]
+Sie fluchen, Vater.
-[GEN3_60:GENERA3]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Sturmgewehr ~h~abzufeuern~w~.
+[NEDS2AD:NEDS2]
+Stimmt. Ave Maria, voll der Dingsbums.
-[GEN3_61:GENERA3]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Sturmgewehr ~h~abzufeuern~w~.
+[NEDS2AE:NEDS2]
+Ein Gestrauchelter hat gebeichtet, Diamantenhehler zu sein.
-[GEN3_62:GENERA3]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Sturmgewehr ~h~abzufeuern~w~.
+[NEDS2AF:NEDS2]
+Schick ihn in die ewige Erlösung, schnapp dir die Klunker, dann gebe ich sie dem Besitzer zurück.
-[GEN3_63:GENERA3]
-Auf~h~ Motorrädern ~w~kann man nicht nur im Vorbeifahren seitlich auf Ziele schießen, man kann auch ~h~geradeaus feuern~w~.
+[NB2_2:NEDS2]
+Hol dir den ~g~Koffer~w~ und leg alle Gang-Mitglieder um.
-[GEN3_64:GENERA3] { reVC update }
-Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste.
+[NB2_3:NEDS2]
+Bring den Koffer zur ~y~Liberty Tree Redaktion.
-[GEN3_65:GENERA3] { reVC update }
-Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste.
+[NB2_4:NEDS2]
+Hol dir den ~g~Koffer!
-[GEN3_66:GENERA3] { reVC update }
-Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste.
+[NB2_1:NEDS2]
+Das ist 'ne Falle!
-[GEN3_67:GENERA3]
-Du brauchst eine Maschinenpistole, um auf einem Motorrad sitzend geradeaus zu feuern.
+[NB2_6:NEDS2]
+Erledige alle ~r~Wachen!
-[GEN3_53:GENERA3]
-MEIN GELD!
+[NB2_7:NEDS2]
+Zerstöre den ~r~Helikopter!
-[GEN3_52:GENERA3]
-Diese Haitianer denken sie könnten RICARDO DIAZ stürzen!?!
+[NB2_5:NEDS2]
+Schalte den ~r~Helikopter~w~ und die ~r~Wachen~w~ aus und hol dir den ~g~Koffer.
-{=================================== MISSION TABLE GENERA4 ===================================}
+{=================================== MISSION TABLE NEDS3 ===================================}
-[DETON:GENERA4]
-DETONATION:
+[NEDS3AA:NEDS3]
+Vergib mir, Vater, denn ich habe gesündigt.
-[COL4_3:GENERA4]
-KONVOI HALT!
+[NEDS3AB:NEDS3]
+Toni, verglichen mit deinen degenerierten Mitbürgern bist du ein Heiliger!
-[COL4_6:GENERA4]
-WIR STEHEN UNTER FEINDLICHEM BESCHUSS!
+[NEDS3AC:NEDS3]
+Ihre Autos pumpen Satans Darmwinde in die Lungen unserer Kinder! Sie verpesten den Garten Eden!
-[COL4_7:GENERA4]
-Weg da von dem Panzer, Zivilist!
+[NEDS3AD:NEDS3]
+Zeige diesen Sündern, dass ihr Tun falsch ist!
-[COL4_8:GENERA4]
-ICH SAGTE, WEG DA! SOFORT!
+[NEDS3_1:NEDS3]
+Fahr mit dem Feuerwehrauto durch die Stadt und verursache möglichst viele Unfälle und Karambolagen.
-[COL4_9:GENERA4]
-AUF GEFECHTSPOSITIONEN!
+[NEDS3_2:NEDS3]
+~w~Klau das ~b~Feuerwehrauto.
-[COL4_11:GENERA4]
-Schaffen Sie den Zivilisten aus dem Weg, Soldat! - Sir, zu Befehl, Sir!
+[NEDS3_3:NEDS3]
+~w~Du hast ~1~ Sekunden, um zu dem ~b~Feuerwehrauto~w~ zurückzukehren.
-[COL4_12:GENERA4]
-Zivilist im PANZER! HALTET IHN AUF!
+[NEDS3_4:NEDS3]
+Wertung
-[COL4_13:GENERA4]
-Dies ist ein Militärkonvoi, machen Sie den Weg frei!
+[NEDS3_5:NEDS3]
+Fahr los und verursache möglichst viele Unfälle, Karambolagen, Schaden und Chaos!
-[COL4_14:GENERA4]
-Erledigen sie ihn, Soldat.
+[NEDS3_6:NEDS3]
+Fußgänger hinüber!
-[COL4_15:GENERA4]
-Schaffen Sie das Zivilfahrzeug aus dem Weg! -Fahrzeug wird weggeschafft, Sir!
+[NEDS3_7:NEDS3]
+Fahrzeug versunken!
-[COL4_17:GENERA4]
-OK, EINHEIT WEITER!
+[NEDS3_8:NEDS3]
+Fahrzeug zerstört!
-[COL4_18:GENERA4]
-Da ist jemand auf dem Panzer, Sir!
+[NEDS3_9:NEDS3]
+Fahrzeug-Salto!
-[COL4_19:GENERA4]
-Gehen Sie ein paar Donuts holen, Soldat! - Zu Befehl, Sir!
+[NEDS310:NEDS3]
+~r~Das Feuerwehrauto wurde zerstört.
-[COL4_20:GENERA4]
-Ziel erfasst, Sir.
+[NEDS311:NEDS3]
+360-Grad-Dreher!
-[COL4_21:GENERA4]
-HECKENSCHÜTZE!
+[NEDS312:NEDS3]
+720-Grad-Dreher!
-[COL4_22:GENERA4]
-Ich seh zu, dass ich hier wegkomme!
+[NEDS313:NEDS3]
+1080-Grad-Dreher!
-[COL4_23:GENERA4]
-Einsatz durchgeführt! Einheit, wegtreten! - Gehen wir ein paar Donuts essen.
+[NEDS314:NEDS3]
+~r~Du hast das Feuerwehrauto verlassen.
-[COL4_24:GENERA4]
-Sicherheitsmechanismus Delta India Echo aktiviert. Selbstzerstörung des Fahrzeugs eingeleitet!
+[NEDS315:NEDS3]
+Überschlagenes Fahrzeug!
-[COL4_26:GENERA4]
-Mach dein Testament, dreckiger Kommunist!
+[NEDS316:NEDS3]
+3 Zusammenstöße in Folge!
-[COL4_B2:GENERA4]
-~r~Der Panzer ist wohlbehalten an seinem Ziel angekommen!
+[NEDS317:NEDS3]
+4 Zusammenstöße in Folge!
-[COL4_B5:GENERA4]
-~r~Der Panzer ist zerstört worden!
+[NEDS318:NEDS3]
+5 Zusammenstöße in Folge!
-[COL4_01:GENERA4]
-Diaz war sehr angetan und würde Sie gerne wiedersehen.
+[NEDS319:NEDS3]
+Bonus für Massenkarambolage!
-[COL4_02:GENERA4]
-Ist das eine gute Nachricht?
+[NEDS320:NEDS3]
+~r~Du hast die nötige Wertung nicht rechtzeitig erzielt.
-[COL4_03:GENERA4]
-Aber sicher! Obwohl mich der Verdacht beschleicht, dass Diaz für unsere Verluste verantwortlich war...
+[NEDS321:NEDS3]
+Bonus für Biker-Sturz!
-[COL4_04:GENERA4]
-Wie kommen Sie darauf?
+[NEDS322:NEDS3]
+Bonus für krassen Biker-Sturz!
-[COL4_05:GENERA4]
-Man erhebt keine Anschuldigungen gegen einen Mann wie Diaz. Ich habe nur laut nachgedacht.
+[NEDS323:NEDS3]
+Bonus für Himmelfahrt!
-[COL4_06:GENERA4]
-Egal. Ich habe einen Vorschlag, der lukrativ für Sie sein könnte...
+[NEDS324:NEDS3]
+Bonus für extra hohe Himmelfahrt!
-[COL4_07:GENERA4]
-Ich habe keine Zeit für weitere Aufträge, Cortez.
+[NEDS325:NEDS3]
+~w~Du hast weniger als 1 Sekunde, um zu dem ~b~Feuerwehrauto~w~ zurückzukehren.
-[COL4_08:GENERA4]
-Ein Mann mit solch bedrohlichen Schulden sollte doch um jede Verdienstmöglichkeit dankbar sein. Hören Sie mich wenigstens an.
+[NEDS326:NEDS3]
+Glückwunsch! Geschafft! Du hast noch ~1~ Sekunden Restzeit.
-[COL4_09:GENERA4]
-Na gut...
+[NEDS327:NEDS3]
+~w~Zerstöre das ~r~Feuerwehrauto.~w~ Hinterlasse keine Spuren.
-[COL410:GENERA4]
-Ich habe einen Käufer für ein 'Militärgerät', das durch die Stadt transportiert wird. Beschaffen Sie es!
+[NEDS328:NEDS3]
+Bonuspunkte gibt es für spektakuläre Zusammenstöße, Saltos, schleudernde oder zerstörte Fahrzeuge.
-[COL411:GENERA4]
-Wenn Sie es haben, rufen Sie mich unverzüglich an...
+[NEDS329:NEDS3]
+Fahrzeug-Salto x ~1~
-[COL4_B4:GENERA4]
-~g~Der Panzer ist abgeschlossen. Lass dir etwas einfallen, um die Besatzung herauszulocken.
+[NEDS330:NEDS3]
+Fahrzeug überschlagen x ~1~
-[COL4_1:GENERA4]
-Was ist mit dem Kanonier? - Weiß nicht, Sir!
+[NEDS332:NEDS3]
+~w~Du hast 1 Sekunde, um zu dem ~b~Feuerwehrauto~w~ zurückzukehren.
-[COL4_4:GENERA4]
-Los, sehen Sie nach, Soldat! - Zu Befehl, Sir!
+[NEDS333:NEDS3]
+Glückwunsch! NEUE BESTZEIT! Noch ~1~ Sekunden Restzeit.
-[COL4_B1:GENERA4]
-~g~Besorge das militärische Fahrzeug, das durch die Stadt gefahren wird.
+[NEDS334:NEDS3]
+~w~Zerstöre jetzt das Feuerwehrauto. Hinterlasse keine Spuren.
-[COL4_B3:GENERA4]
-~g~Liefere den Panzer in der Garage des Colonels ab, bevor er sich selbst zerstört.
+[NEDS335:NEDS3]
+180-Grad-Dreher!
-[COL4_B6:GENERA4]
-~g~Finde einen Weg, den Panzer zu klauen!
+[NEDS337:NEDS3]
+Fahr mit dem Feuerwehrauto durch die Stadt und verursache bis ~1~:~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL4_B7:GENERA4]
-~g~Fahr den Panzer in die Garage.
+[NEDS338:NEDS3]
+Fahr mit dem Feuerwehrauto durch die Stadt und verursache bis ~1~:0~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL4_B8:GENERA4]
-~g~Steig aus dem Panzer und verlasse die Garage.
+[NEDS339:NEDS3]
+Fahr mit dem Feuerwehrauto durch die Stadt und verursache bis 0~1~:~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-{=================================== MISSION TABLE GENERA5 ===================================}
+[NEDS340:NEDS3]
+Fahr mit dem Feuerwehrauto durch die Stadt und verursache bis 0~1~:0~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL5A_1:GENERA5]
-Die Lage erfordert ein eiliges Verschwinden, Amigo.
+[NEDS341:NEDS3]
+Verursache bis ~1~:~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL5A_2:GENERA5]
-Was gibt's für ein Problem?
+[NEDS342:NEDS3]
+Verursache bis ~1~:0~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL5A_3:GENERA5]
-Die Franzosen wollen ihre Lenkwaffen-Chips wieder und nach dem letzten Zwischenfall
+[NEDS343:NEDS3]
+Verursache bis 0~1~:~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL5A_4:GENERA5]
-zieht es mich in sicherere Gefilde.
+[NEDS344:NEDS3]
+Verursache bis 0~1~:0~1~ Uhr möglichst viele Unfälle, Karambolagen und Chaos.
-[COL5A_5:GENERA5]
-Wäre es nicht sicherer zu fliegen?
+[NEDS331:NEDS3]
+Verursache möglichst viele Unfälle, Karambolagen und Chaos!
-[COL5A_6:GENERA5]
-Ich wäre erledigt, bevor ich eingecheckt hätte. Außerdem muss ich Ware außer Landes schaffen.
+{=================================== MISSION TABLE NEDS4 ===================================}
-[COL5A_7:GENERA5]
-Brauchen Sie noch einen Bodyguard?
+[NEDS4_1:NEDS4]
+KEIN(E)
-[COL5A_8:GENERA5]
-Sie, mein Freund, sind zehn Bodyguards wert. Hahaha.
+[NEDS4_2:NEDS4]
+~w~Die 3 Promis wollen zu einem Radiosender in der Innenstadt, um vor der Premiere heute Abend ein Interview zu geben.
-[COL5B_1:GENERA5]
-Thomas, Sie haben mich beschützt und mir treu gedient.
+[NEDS4_3:NEDS4]
+~w~Die Schauspielerin Faith W. kommt im Privathubschrauber vom Francis Airport.
-[COL5B_2:GENERA5]
-Aber jetzt müssen Sie uns verlassen, ehe wir das offene Meer erreichen.
+[NEDS4_4:NEDS4]
+~w~Der Schauspieler und Gangster DB-P kommt im Boot von Portland.
-[COL5B_4:GENERA5]
-Danke, Colonel.
+[NEDS4_5:NEDS4]
+~w~Der alternde, alkoholkranke Schauspieler Black Lightman kommt mit der Limousine von der Entzugsklinik.
-[COL5B_5:GENERA5]
-Eine Bitte noch. Könnten Sie ein Auge auf Mercedes haben, solange ich weg bin?
+[NEDS4_8:NEDS4]
+~w~Faith ausgeschaltet.
-[COL5B_6:GENERA5]
-Ich glaub zwar, sie kann auf sich selbst aufpassen, aber klar.
+[NEDS4_9:NEDS4]
+~w~DB-P ausgeschaltet.
-[COL5B_7:GENERA5]
-Danke, mein Freund. Bis zu meiner Rückkehr.
+[NEDS410:NEDS4]
+~w~Black Lightman ausgeschaltet.
-[COL5B_8:GENERA5]
-Adios, Amigo.
+[NEDS411:NEDS4]
+~w~Alle 3 Promis sind ausgeschaltet. Begib dich zurück zur ~y~Kirche~w~ und melde es dem Beichtvater.
-[COL5_7:GENERA5]
-Hören Sie auf, auf mich zu schießen!
+[NEDS412:NEDS4]
+~r~Faith hat den Radiosender erreicht!
-[COL5_9:GENERA5]
-Tommy, die sollen aufhören, auf mich zu schießen!
+[NEDS413:NEDS4]
+~r~DB-P hat den Radiosender erreicht!
-[COL5_10:GENERA5]
-Ich genieße diplomatische Immunität.
+[NEDS414:NEDS4]
+~r~Black Lightman hat den Radiosender erreicht!
-[COL5_11:GENERA5]
-Nicht schießen, ich bin ein Colonel!
+[NEDS415:NEDS4]
+~w~Er wird in einen kugelsicheren Patriot umsteigen.
-[COL5_12:GENERA5]
-Thomas, machen Sie sie fertig. Mein Land wird es Ihnen danken.
+[NEDS417:NEDS4]
+~w~Der Patriot ist kugelsicher.
-[COL5_13:GENERA5]
-Tommy, wir werden von den Franzosen überrannt!
+[NEDS418:NEDS4]
+~w~Gib auf den Schützen Acht.
-[COL5_14:GENERA5]
-Tommy, wo ich hinsehe, überall Franzosen! Wie ich es hasse!
+[NEDS421:NEDS4]
+~w~Phil Cassidy's Waffenladen ist als Fähnchen auf dem Radar sichtbar.
-[COL5_15:GENERA5]
-Tommy, alles in Ordnung?
+[NEDS4AA:NEDS4]
+Vergib mir, Vater, ich habe wieder gesündigt.
-[COL5_16:GENERA5]
-Das ist für Piaf und Gainesbourg und für euer dämliches französisches Weißbrot!
+[NEDS4AB:NEDS4]
+Und wieder sollst du Erlösung finden, mein Sohn.
-[COL5_1:GENERA5]
-Backbord! Backbord!
+[NEDS4AC:NEDS4]
+Der Prominentenkult nimmt Auswüchse an!
-[COL5_2:GENERA5]
-Sie greifen von Steuerbord an!
+[NEDS4AD:NEDS4]
+Was sind das für Huren, die im Radio schwafeln, statt redlichen Zeitungsreportern Exklusivinterviews zu geben?
-[COL5_3:GENERA5]
-Die Brücke da vorn!
+[NEDS4AF:NEDS4]
+Vernichte diese Götzen!
-[COL5_4:GENERA5]
-Sie haben einen Helikopter!
+[NEDS4BA:NEDS4]
+Ich habe getan, was Sie verlangt haben.
-[COL5_B1:GENERA5]
-~g~Beschütze den Colonel und seine Jacht um jeden Preis.
+[NEDS4BB:NEDS4]
+Prima! Die Zeitungsauflage hat sich seit deiner Bekehrung verdreifacht.
-[COL5_B2:GENERA5]
-~g~Geh nach vorn und räume der Jacht des Colonels den Weg frei.
+[NEDS4BC:NEDS4]
+Was?
-[COL5_B3:GENERA5]
-~r~Der Colonel ist hinüber!
+[NEDS4BD:NEDS4]
+Danke nochmals für deine Hilfe, Toni!
-[COL5_B4:GENERA5]
-~g~Schieße den angreifenden Helikopter vom Himmel.
+[NEDS4BE:NEDS4]
+Scheiße, was soll das?
-[COL5B_3:GENERA5]
-Ich werde meine Privatbarkasse zu Wasser lassen. Sie gehört Ihnen, als Ausdruck meiner Dankbarkeit.
+[NEDS4BF:NEDS4]
+WER SIND SIE?
-[COL5_B5:GENERA5]
-~g~Schieß die Helikopter ab, gefährde nicht die Jacht.
+[NEDS422:NEDS4]
+Besorg dir bei Phil Cassidy's Fully Cocked Gun Shop einen Raketenwerfer.
-[COL5_B6:GENERA5]
-~g~Du hast keine Munition mehr. Hol dir an der Treppe des Oberdecks Nachschub.
+[NEDS4_7:NEDS4]
+~w~Du musst verhindern, dass die ~r~Promis~w~ den Radiosender LCFR erreichen!
-[COL5_B7:GENERA5]
-~g~Du hast nur noch wenig Energie. Hol dir an der Treppe des Oberdecks Nachschub.
+[NEDS416:NEDS4]
+~w~Du musst verhindern, dass die ~r~Promis~w~ den Radiosender LCFR erreichen!
-{=================================== MISSION TABLE HAIT1 ===================================}
+[NEDS419:NEDS4]
+~w~Schwere Waffen bekommst du in Phil Cassidy's Fully Cocked Gun Shop.
-[HAM1_A:HAIT1]
-Hallo? Hallo?
+[NEDS420:NEDS4]
+~w~Vater Ned hat einen Raketenwerfer gekauft. Hol ihn bei Phil Cassidy's Fully Cocked Gun Shop ab.
-[HAM1_B:HAIT1]
-Komm rein, mein Lieber, und ruh dich aus.
+[NEDS4_6:NEDS4]
+~w~Schwere Waffen bekommst du in Phil Cassidy's Fully Cocked Gun Shop.
-[HAM1_C:HAIT1]
-Du musst der große böse Mann sein, von dem mein Großvater erzählt hat.
+{=================================== MISSION TABLE DONS1 ===================================}
-[HAM1_D:HAIT1]
-Er erzählte immer von dir, wenn er zu Besuch kam,
+[MORG_01:DONS1]
+2-2-3, 3-2-3, 4-2-3, 5-2-3-...
-[HAM1_E:HAIT1]
-und von den anderen, die auf dich warten.
+[MORG_02:DONS1]
+Antonio! Wie schön, dich zu sehen!
-[HAM1_F:HAIT1]
-Tja, wir müssen alle mal sterben, aber du...
+[MORG_03:DONS1]
+Was ist los?
-[HAM1_G:HAIT1]
-....in deiner Haut möchte ich dann nicht stecken. Hehehe!
+[MORG_04:DONS1]
+Wir geben eine Party, mein lieber Junge.
-[HAM1_H:HAIT1]
-Es hieß, ich soll hierher kommen.
+[MORG_05:DONS1]
+Eine Leichenhausparty!
-[HAM1_I:HAIT1]
-Kannst du sie hören?
+[MORG_08:DONS1]
+Was soll das sein, verdammt, 'ne Leichenhausparty?
-[HAM1_J:HAIT1]
-Sie rufen deinen Namen, Junge. Die müssen ziemlich scharf auf dich sein, was?
+[MORG_09:DONS1]
+Das wird heute ein Mordsabend.
-[HAM1_K:HAIT1]
-Aber wenn du der alten Tante Poulet hilfst, hilft sie dir vielleicht auch.
+[MORG_10:DONS1]
+Doch zuerst müssen wir die Gäste abholen.
-[HAM1_L:HAIT1]
-Vielleicht kann sie dir danach einen kleinen Talisman schenken.
+[MORG_11:DONS1]
+Los, bevor sich unsere Gäste zu Tode langweilen.
-[HAM1_M:HAIT1]
-Ein bisschen Magie, die den Männern des Gesetzes schlechte Augen macht, hmm?
+[MORG_12:DONS1]
+Ungeschickt formuliert!
-[HAM1_N:HAIT1]
-Hören Sie, das ist alles sehr, äh... Sie geben mir was?
+[MORG_13:DONS1]
+Sie sind nämlich schon tot.
-[HAM1_O:HAIT1]
-Ich...ich...ich glaube, ich bin hier falsch.
+[MORG_14:DONS1]
+Unser Ehrengast macht gerade einen kleinen Ausflug in die Pathologie.
-[HAM1_P:HAIT1]
-Erweise mir ein paar Gefälligkeiten, Tommy...
+[MORG_15:DONS1]
+Lassen wir ihn nicht warten.
-[HAM1_Q:HAIT1]
-Die Kubaner, miese, hochnäsige Narren, hmmm,
+[MORG_06:DONS1]
+- Die erste der Saison. ~n~ - Moment, Moment, Moment...
-[HAM1_R:HAIT1]
-haben meine lieben Haiti-Boys sehr geärgert.
+[DONS1_1:DONS1]
+Kein(e)
-[HAM1_S:HAIT1]
-Jetzt haben sie den Polizisten erzählt, wo ich meine Pülverchen versteckt habe.
+[DL1_A:DONS1]
+Ich gebe eine Leichenhausparty und du sollst die "Gäste" abholen.
-[HAM1_T:HAIT1]
-Sie denken, das sind Drogen, diese Dummköpfe.
+[DL1_2:DONS1]
+~r~Du hast das Auto zerstört.
-[HAM1_U:HAIT1]
-Sei ein braver Bub, Tommy, und hole Tante Poulet die Pülverchen.
+[DL1_3:DONS1]
+Die Cops sind alarmiert. Werde deinen Fahndungslevel los!
-[HAM1_V:HAIT1]
-Ja, ja. Sicher, sicher.
+[DL1_4:DONS1]
+Bring das Auto in Donalds ~y~Garage.
-[HAM1_1:HAIT1]
-~g~Die Cops nähern sich dem Zeug. Hol es, bevor sie dort sind.
+[DL1_6:DONS1]
+~r~ Der Leichenwagen hat das Polizeirevier erreicht.
-[HAM1_2:HAIT1]
-~r~Die Cops waren schneller bei dem Zeug!
+[DL1_9:DONS1]
+Fahr das Auto in die Lackiererei.
-[HAM1_3:HAIT1]
-~g~Bring das Zeug zum Unterschlupf!
+[DL1_5:DONS1]
+Klau den ~b~Leichenwagen~w~, ehe er sein Ziel erreicht.
-[HAM1_4:HAIT1]
-~g~Gut. Jetzt das nächste!
+{=================================== MISSION TABLE DONS2 ===================================}
-[HAM1_6:HAIT1]
-~r~Das Zeug wurde vernichtet, du Idiot!
+[DONS2AA:DONS2]
+D.L.?
-[HAM1_7:HAIT1]
-~g~Die Cops haben das Zeug! Hol es dir wieder, bevor sie weg sind!
+[DONS2AB:DONS2]
+Toni!
-[HAM1_8:HAIT1]
-~g~Die Cops sind unterwegs, um das Zeug abzuholen. Beeil dich!
+[DONS2AC:DONS2]
+Was macht der Wahlkampf?
-[HAT_1A:HAIT1]
-~g~Keine Bewegung, Freundchen!
+[DONS2AD:DONS2]
+Es ist fünf vor zwölf und jede einzelne Stimme zählt!
-{=================================== MISSION TABLE HAIT2 ===================================}
+[DONS2AE:DONS2]
+O'Donovans Helfer bearbeiten die umkämpften Wahlbezirke gnadenlos.
-[HAT2_B1:HAIT2]
-~g~Begib dich zu dem Wagen, in dem die fliegenden Bomben sind.
+[DONS2AF:DONS2]
+Wir haben auch einen Lautsprecherwagen - also ab, die Werbetrommel rühren!
-[HAT2_B2:HAIT2]
-Schalte die Kubaner aus...
+[DONS2BA:DONS2]
+O'Donovan zum Bürgermeister!
-[HAT2_B4:HAIT2]
-.... und zerstöre ihre Boote!
+[DONS2BB:DONS2]
+O'Donovan macht Schluss mit der Korruption!
-[HAT2_B5:HAIT2]
-~g~Die Kubaner hauen ab. Lass sie nicht entkommen!
+[DONS2BC:DONS2]
+O'Donovan, der Bürgermeister Ihres Vertrauens!
-[HAT2_B6:HAIT2]
-~r~Das ferngesteuerte Flugzeug ist außer Reichweite!
+[DONS2BD:DONS2]
+Gegen das Verbrechen, für O'Donovan!
-[HAT2_B7:HAIT2]
-~g~Einer der Kubaner flieht in einem Auto. Lass ihn nicht entkommen!
+[DONS2BE:DONS2]
+Wählt Gerechtigkeit! Wählt O'Donovan!
-[HAT2_B8:HAIT2]
-~r~Du hast keine ferngesteuerten Flugzeuge mehr!
+[DONS2CA:DONS2]
+O'Donovan hat drei Ehefrauen!
-[HAT2_B9:HAIT2]
-Ferngesteuerte Flugzeuge:
+[DONS2CB:DONS2]
+Wer ist fett und verfressen? O'Donovan!
-[HAT2_1:HAIT2]
-Oh. Entschuldigung, ich muss die falsche Adresse haben...
+[DONS2CC:DONS2]
+O'Donovan ist ein Junkie!
-[HAT2_2:HAIT2]
-Du kannst gern reinkommen und dich bei einer Tasse Tee ausruhen.
+[DONS2CD:DONS2]
+O'Donovan will Analverkehrspflicht einführen!
-[HAT2_3:HAIT2]
-Hast du etwas für mich, Tommy?
+[DONS2CE:DONS2]
+O'Donovan ist ein Kommunist!
-[HAT2_4:HAIT2]
-Ja...
+[DONS2CF:DONS2]
+O'Donovan zieht die Slips seiner Tochter an!
-[HAT2_5:HAIT2]
-Das kommt mir so bekannt vor hier. Ein Geruch aus meiner Kindheit - das muss ein Déjà-vu sein...
+[DONS2CG:DONS2]
+O'Donovan macht Striptease vor Schweinen!
-[HAT2_6:HAIT2]
-Tommy, du kannst was für mich tun, ich werd's dir erklären. Hör gut zu, ja?
+[DONS2CH:DONS2]
+O'Donovan hasst Amerika!
-[HAT2_7:HAIT2]
-Sie sehen aus wie jemand, den...
+[DONS2CI:DONS2]
+Love schafft Steuer für Reiche ab!
-[HAT2_8:HAIT2]
-Die Kubaner haben schnelle Boote, mit denen transportieren sie Drogen übers Meer.
+[DONS2CJ:DONS2]
+Love für Pathologie-Unterricht an Schulen!
-[HAT2_9:HAIT2]
-Davon leben sie.
+[DONS2CK:DONS2]
+Donald Love für allgemeinen Leichenhauszugang!
-[HAT2_10:HAIT2]
-Mein Neffe hat kleine fliegende Bomben gebaut, um ihnen das Handwerk zu legen.
+[DONS2CL:DONS2]
+Donald Love ist ein Kriegsheld!
-[HAT2_11:HAIT2]
-Lass ihre Boote in die Luft fliegen.
+[DONS2CM:DONS2]
+Wer Love wählt, wählt Zufriedenheit!
-[HAT2_12:HAIT2]
-Tja, danke für den Tee.
+[DONS2CN:DONS2]
+Donald Love: kein Pardon für Vegetarier!
-[HAT2_B3:HAIT2] { reVC update }
-Um eine Bombe abzuwerfen, drück die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste. ~h~~k~~VEHICLE_ENTER_EXIT~~w~-Taste zum Beenden.
+[DONS2_1:DONS2]
+~w~Steig in den ~b~Van.
-{=================================== MISSION TABLE HAIT3 ===================================}
+[DONS2_3:DONS2]
+~w~O'Donovan hat seine ~r~Vans~w~ losgeschickt, um sich die Stimmen zurückzuholen!
-[HAM3_A:HAIT3]
-Hallo, hallo, ich, äh, ich suche hier jemanden...
+[DONS2_4:DONS2]
+~r~Du hast nicht genug Stimmen geholt!
-[HAM3_B:HAIT3]
-Du siehst hungrig aus, Tommy.
+[DONS2_6:DONS2]
+~w~Restzeit
-[HAM3_C:HAIT3]
-Kenne ich Sie?
+[DONS2_7:DONS2]
+~w~Steig wieder in den ~b~Van~w~ und setze die Mission fort.
-[HAM3_D:HAIT3]
-Sei jetzt still.
+[DONS2_9:DONS2]
+~w~O'Donovan hat noch einen ~r~Van~w~ losgeschickt!
-[HAM3_E:HAIT3]
-Eine Gefälligkeit noch, dann lasse ich dich gehen, Tommy.
+[DONS210:DONS2]
+~w~Bezirke gewonnen
-[HAM3_F:HAIT3]
-Meine Jungs haben die Kubaner zum Kampf gefordert.
+[DONS211:DONS2]
+~r~Du hast alle Wahlbezirke verloren!
-[HAM3_G:HAIT3]
-Aber ohne Kanonen.
+[DONS212:DONS2]
+~r~Du hast es nicht geschafft, die Gegner auszuschalten!
-[HAM3_H:HAIT3]
-Hmm, aber die Kubaner werden ihr blaues Wunder erleben.
+[DONS2_2:DONS2]
+~w~Fahr die ~y~Checkpoints der umkämpften Wahlbezirke~w~ ab, um dort Stimmen zu gewinnen.
-[HAM3_I:HAIT3]
-Wenn sie in den Straßen kämpfen, nimmst du dieses Gewehr und räumst auf.
+[DONS215:DONS2]
+~w~Du hast einen ~y~Bezirk~w~ an O'Donovan verloren!
-[HAM3_J:HAIT3]
-Keiner sieht dich, keiner hört dich.
+[DONS216:DONS2]
+~w~Verhindere, dass O'Donovan alle ~y~Bezirke~w~ zurückgewinnt!
-[HAM3_K:HAIT3]
-Wenn du das für mich tust, Tommy, dann kommst frei aus meinen Schürzenbändern.
+[DONS213:DONS2]
+~w~Jetzt wo du genug Bezirke hast, schalte die ~r~gegnerischen Vans~w~ aus, um zu verhindern, dass O'Donovan Bezirke dazugewinnt.
-[HAM3_1:HAIT3]
-~g~Wir müssen gewinnen. Werden alle Haitianer erledigt, haben wir verloren.
+[DONS2_8:DONS2]
+~w~Gewinne mindestens 5 der ~y~Wahlbezirke.
-[HAM3_3:HAIT3]
-~g~Vermutlich werden die Kubaner schummeln. Sei auf der Hut!
+[DONS214:DONS2]
+~w~Du hast weniger als 5 ~y~Bezirke~w~. Erobere sie zurück!
-[HAM3_4:HAIT3]
-~r~Du wurdest entdeckt! Die Mission ist fehlgeschlagen!
+[DONS217:DONS2]
+~w~Hol dir zusätzliche Bezirke für eine höhere Belohnung.
-[HAM3_5:HAIT3]
-~g~Du musst die Kubaner aus der Distanz erwischen. Man darf dich nicht sehen.
+[DONS2_5:DONS2]
+~r~Der Lautsprecherwagen wurde zerstört.
-[HAM3_8:HAIT3]
-~g~Es gibt Verluste unter den Haitianern! Du musst besser zielen!
+[DONS218:DONS2]
+~w~Gewinne mindestens 5 der ~y~Wahlbezirke~w~ vor ~1~:~1~ Uhr.
-[HAM3_7:HAIT3]
-~g~Vorsicht! Die Kubaner haben Verstärkung mitgebracht. Schalte sie alle aus!!
+[DONS219:DONS2]
+~w~Gewinne mindestens 5 der ~y~Wahlbezirke~w~ vor 0~1~:~1~ Uhr.
-[HAM3_2:HAIT3]
-~r~Die Haitianer sind weg vom Fenster!
+[DONS220:DONS2]
+~w~Gewinne mindestens 5 der ~y~Wahlbezirke~w~ vor 0~1~:0~1~ Uhr.
-[HAM3_L:HAIT3]
-Okay, Tantchen...
+[DONS221:DONS2]
+~w~Gewinne mindestens 5 der ~y~Wahlbezirke~w~ vor ~1~:0~1~ Uhr.
-{=================================== MISSION TABLE HOTEL ===================================}
+[DONS230:DONS2]
+~w~Jetzt wo du genug Bezirke hast, schalte den ~r~gegnerischen Van~w~ aus, um zu verhindern, dass O'Donovan Bezirke dazugewinnt.
-[INTB_A:HOTEL]
-Tommy! Tommy, wir haben uns lange nicht gesehen.
+{=================================== MISSION TABLE DONS3 ===================================}
-[INTB_B:HOTEL]
-Hallo, Sonny.
+[CAMP_01:DONS3]
+Antonio! Que pasa, amigo?
-[INTB_C:HOTEL]
-Ich weiß, ich weiß. Dir kommen vor Rührung die Tränen.
+[CAMP_02:DONS3]
+Don, Sie wissen, dass ich Italiener und kein Spanier bin.
-[INTB_D:HOTEL]
-15 Jahre ist es her - dabei kommt's mir vor, als wär's gestern gewesen.
+[CAMP_03:DONS3]
+Natürlich, wie dumm von mir. Ich liebe einfach alle romanischen Sprachen.
-[INTB_E:HOTEL]
-DU hast leicht reden.
+[CAMP_04:DONS3]
+Gott, ist das lecker.
-[INTB_F:HOTEL]
-Hey, für die Familie in den Knast zu gehen, ist kein Zuckerschlecken,
+[CAMP_05:DONS3]
+Schmeckt wie Hühnchen, nur irgendwie, äh, mit mehr Biss.
-[INTB_G:HOTEL]
-aber die Familie zeigt sich für sowas erkenntlich, ok?
+[CAMP_06:DONS3]
+Möchtest du was?
-[INTB_H:HOTEL]
-Also, wie ist der Deal gelaufen - hast du Schnee an der Hand?
+[CAMP_07:DONS3]
+Ich hab schon gegessen.
-[INTB_I:HOTEL]
-Sonny, wir sind reingelegt worden. Der Deal war eine Falle. Harry und Lee sind tot.
+[CAMP_08:DONS3]
+Schade. Schmeckt fantastisch.
-[INTB_J:HOTEL]
-Das ist nicht dein Ernst, Tommy. Du hast doch hoffentlich noch das Geld.
+[CAMP_09:DONS3]
+Ich lasse gleich weitere Delikatessen auftischen...
-[INTB_K:HOTEL]
-Nein, Sonny... Ich hab das Geld nicht mehr.
+[CAMP_10:DONS3]
+Wär ein gefundenes Fressen für die Liberalen, natürlich,
-[INTB_L:HOTEL]
-Das war mein Geld, Tommy. MEIN GELD!
+[CAMP_11:DONS3]
+doch was verstehen die von den wahren Freuden des Lebens?
-[INTB_M:HOTEL]
-Versuch bloß nicht, mich reinzulegen, Tommy. Mich legt man nicht rein, das weißt du!
+[CAMP_12:DONS3]
+Weltläufigkeit und Demokratie konnten es noch nie so recht miteinander.
-[INTB_N:HOTEL]
-Warte, Sonny.
+[CAMP_13:DONS3]
+Hören Sie, Don, wir müssen diese Wahl gewinnen.
-[INTB_O:HOTEL]
-Du hast mein Wort darauf, dass ich dir dein Geld wiederbeschaffe. Und die Drogen.
+[CAMP_14:DONS3]
+Deshalb müssen wir sichergehen, dass es keine Leichen im Keller gibt,
-[INTB_P:HOTEL]
-Und ich liefere dir die Kerle, die dahinterstecken.
+[CAMP_15:DONS3]
+wenn Sie mich verstehen.
-[INTB_Q:HOTEL]
-Das weiß ich doch. Du bist kein Idiot, Tommy, aber ich warne dich - ich bin auch keiner.
+[CAMP_16:DONS3]
+Alles klar.
-[INTB_R:HOTEL]
-Wenn du's nicht wärst - ein anderer wär längst fällig!
+[CAMP_17:DONS3]
+Ich meine damit...
-[INTB_S:HOTEL]
-Aber uns beide verbindet eine alte Freundschaft. Ich lasse dich das regeln.
+[CAMP_18:DONS3]
+Was machen wir mit diesem O'Donovan, der als Strohmann für die...
-[INTB_T:HOTEL]
-Sonny, du hast mein Ehrenwort.
+[CAMP_19:DONS3]
+der für die Forellis antritt?
-[INTB_U:HOTEL]
-Du hörst von mir.
+[CAMP_20:DONS3]
+Der Mann hat 'ne Menge prominente Wahlhelfer,
-{=================================== MISSION TABLE ICECRE1 ===================================}
+[CAMP_21:DONS3]
+lauter verblendete Sozialromantiker, wenn Sie mich verstehen.
-[ICC1_1:ICECRE1]
-~g~Benutze deinen Eis-Wagen, um in Vice City Drogen zu verkaufen.
+[CAMP_22:DONS3]
+Wir müssen ihren Glauben an die Demokratie ins Wanken bringen.
-[ICC1_2:ICECRE1]
-~g~Parke den Eis-Wagen und drücke ~h~~k~~VEHICLE_HORN~~w~, um den Eiscreme-Jingle abzuspielen, damit deine Kunden wissen, dass du Ware zu verkaufen hast.
+[CAMP_23:DONS3]
+Sie meinen, ich soll ihnen die Zähne rausschlagen?
-[ICC1_3:ICECRE1]
-~g~Für jede Transaktion bekommst du Geld. Aber je mehr Transaktionen du tätigst, desto stärker wird die Polizei auf dich aufmerksam.
+[CAMP_24:DONS3]
+Ach, deine Leidenschaft, Antonio, ist... grandios.
-[ICC1_4:ICECRE1]
-~g~In dieser Gegend sind keine Kunden. Versuche es woanders.
+[CAMP_25:DONS3]
+Sie ist so, ähm, wagnerianisch! Verstehst du? Arrivederci, amigo.
-[ICC1_5:ICECRE1]
-Getätigte Deals:
+[CAMP_26:DONS3]
+Humphries, trag die Kaldaunen auf!
-[ICC1_6:ICECRE1]
-~g~Nimm den Mr. Whopee, um in Vice City Cherry Popper-Produkte zu vertreiben.
+[DONS3_1:DONS3]
+Toni muss die gegnerischen Wahlhelfer loswerden, um den Wahlkampf des Forelli-Kandidaten O'Donovan möglichst wirkungslos zu machen.
-[ICC1_7:ICECRE1]
-~g~Für jede Transaktion bekommst du Geld. Aber je mehr Transaktionen du tätigst, desto stärker wird die Polizei auf dich aufmerksam.
+[DONS3_2:DONS3]
+~w~Erledige die gegnerischen ~r~Wahlhelfer.
-[ICC1_8:ICECRE1]
-~g~Um eine Transaktion zu tätigen, ~h~parke deinen Wagen ~g~und drücke die ~h~~k~~VEHICLE_HORN~~g~, um den Eiscreme-Jingle abzuspielen, damit deine Kunden wissen, dass du Ware zu verkaufen hast.
+[DONS3_3:DONS3]
+~r~Zu spät. Die Zeit ist um.
-[ICC1_9:ICECRE1]
-~g~Andere Gangs werden es nicht gern sehen, dass du in ihrem Revier Geschäfte machst, du musst also mit Feindseligkeiten rechnen.
+[DONS3_4:DONS3]
+Diese ~r~Wahlkampfhelfer ~w~wären erledigt. Mach die nächsten fertig.
-[ICC1_10:ICECRE1]
-~g~Du hast ~1~ Deals getätigt!
+[DONS3_5:DONS3]
+~w~Erledige die gegnerischen ~r~Wahlkampfhelfer ~w~vor ~1~:~1~ Uhr
-[ICC1_11:ICECRE1]
-~g~Du hast ~1~ Deal getätigt.
+[DONS3_6:DONS3]
+~w~Erledige die gegnerischen ~r~Wahlkampfhelfer ~w~vor ~1~:0~1~ Uhr
-[ICC1_12:ICECRE1]
-OBJEKT ERWORBEN!
+[DONS3_7:DONS3]
+~w~Erledige die gegnerischen ~r~Wahlkampfhelfer ~w~vor 0~1~:~1~ Uhr
-[ICC1_13:ICECRE1]
-~r~Du hast keine Deals getätigt!
+[DONS3_8:DONS3]
+~w~Erledige die gegnerischen ~r~Wahlkampfhelfer ~w~vor 0~1~:0~1~ Uhr
-[ICC1_14:ICECRE1]
-EISCREME-MISSIONEN ERFÜLLT
+{=================================== MISSION TABLE DONS4 ===================================}
-[ICC1_15:ICECRE1]
-~g~Die Eiscremefabrik generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[DONS410:DONS4]
+Fahr zum ~y~Lagerhaus der Forellis~w~ und verbrenne ihre Stimmzettel!
-[ICC1_16:ICECRE1]
-~g~Nimm den Mr. Whoopee, um in Vice City Cherry Popper-Produkte zu vertreiben.
+[DONS411:DONS4]
+Verbrenne die ~r~Stimmzettel~w~ und zerstöre die ~r~Druckmaschinen!
-[ICE_AT1:ICECRE1]
-EISCREMEFABRIK-MISSIONEN ERFÜLLT
+[DONS412:DONS4]
+Zerstöre die ~r~Druckmaschine!
-[ICE_AT2:ICECRE1]
-~g~Die Cherry Popper-Fabrik generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[DONS413:DONS4]
+Verbrenne ALLE ~r~Stimmzettel!
-[ICC1_17:ICECRE1]
-Stoff-Auslieferungs-Mission beendet
+[DONS414:DONS4]
+Zerstöre die restlichen ~r~Forelli-Vans!
-[ICC1_18:ICECRE1]
-Eiscremeverkauf insgesamt: $~1~
+[DONS416:DONS4]
+~r~Ein Forelli-Van ist entkommen! Die Forellis können die Wahl manipulieren.
-[ICC1_19:ICECRE1]
-Insgesamt getätigte Deals: ~1~
+[DONS418:DONS4]
+Noch ~r~~1~ Paletten~w~ gefälschter Stimmzettel sind übrig.
-{=================================== MISSION TABLE ICECUT ===================================}
+[DONS419:DONS4]
+Nur noch ~r~1 Palette~w~ gefälschter Stimmzettel ist übrig.
-[ICC1_M:ICECUT]
-Sie sind schmutzige, verrotzte, verlauste, eklige, sabbernde kleine...
+[DONS420:DONS4]
+Zerstöre den letzten ~r~Forelli-Van!
-[ICC1_I:ICECUT]
-Ein Baby... ein widerwärtiges, gräßliches, ekelhaftes kleines Gör!
+[DONS421:DONS4]
+Die Druckmaschine ist zerstört! Zerstöre jetzt die andere ~r~Druckmaschine!
-[ICC1_J:ICECUT]
-Mammi liebt dich nicht. Du kleines Stück Scheiße!
+[DONS422:DONS4]
+Die Druckmaschine ist zerstört!
-[ICC1_A:ICECUT]
-Wer sind Sie?
+[DONS423:DONS4]
+Hau jetzt ab!
-[ICC1_B:ICECUT]
-Der neue Inhaber dieses Ladens.
+[DONS424:DONS4]
+Zerstöre die ~r~Druckmaschinen!
-[ICC1_C:ICECUT]
-Sind Sie, oder waren Sie je ein Kind?
+[DS4_AA:DONS4]
+So viele Menschen, so viel Geld. Man muss nur zugreifen.
-[ICC1_D:ICECUT]
-Was soll denn das heißen?
+[DS4_AB:DONS4]
+Ich blick bei Politik nicht durch.
-[ICC1_E:ICECUT]
-Waren Sie je ein Kind?
+[DS4_AC:DONS4]
+Wer tut das schon? Ist alles nur Bluff und Korruption.
-[ICC1_F:ICECUT]
-Ja! Immer mit der Ruhe! Was ist denn mit Ihnen los?
+[DS4_AD:DONS4]
+Die Forellis sind stille Teilhaber der Firma, die die neuen Wahlautomaten herstellt.
-[ICC1_G:ICECUT]
-Ich wusste es. Ein Kind.
+[DS4_AE:DONS4]
+Nicht gut, oder?
-[ICC1_H:ICECUT]
-Ein schmutziges, stinkendes, verrotztes, verlaustes, nölendes kleines Baby!
+[DS4_AF:DONS4]
+Trauen können wir ihnen keinesfalls.
-[ICC1_K:ICECUT]
-Au! Beruhigen Sie sich doch!
+[DS4_AG:DONS4]
+Das Beste wäre, sie hätten alle einen SCHWEREN Defekt, verstehst du?
-[ICC1_L:ICECUT]
-Ich HASSE Babies. Und ich hasse Kinder.
+[DONS4H1:DONS4]
+Schwere Waffen bekommst du in Phil Cassidy's Fully Cocked Gun Shop.
-[ICC1_N:ICECUT]
-Es reicht jetzt!
+[DONS4AA:DONS4]
+Antonio! Schön, dich zu sehen.
-[ICC1_P:ICECUT]
-Sie stellen doch Softeis her, oder? Das essen doch nur Kinder.
+[DONS4AB:DONS4]
+Ich bin wahrlich kein Demokrat, aber Wahlbetrug geht selbst mir zu weit.
-[ICC1_Q:ICECUT]
-Sind Sie komplett irre?
+[DONS4AC:DONS4]
+Weißt du, dass die Forellis stille Teilhaber der Firma sind, die die neuen Wahlautomaten herstellt?
-[ICC1_R:ICECUT]
-Erklären Sie mir das mal - warum Kinder glücklich machen, wenn Sie sie hassen?
+[DONS4AD:DONS4]
+Nicht gut, oder?
-[ICC1_S:ICECUT]
-Oh, du dämliches, verrotztes, verlaustes-
+[DONS4AE:DONS4]
+Trauen können wir ihnen keinesfalls.
-[ICC1_T:ICECUT]
-Schluss jetzt!
+[DONS4AF:DONS4]
+Das Beste wäre, sie hätten alle einen SCHWEREN Defekt, verstehst du?
-[ICC1_U:ICECUT]
-- Gör!
+[DONS4_8:DONS4]
+Fahr zu Phil Cassidy's Fully Cocked Gun Shop.
-[ICC1_V:ICECUT]
-Das Eis ist nur Tarnung!
+[DONS4H2:DONS4]
+Phil Cassidy's Fully Cocked Gun Shop ist als Fähnchen auf dem Radar sichtbar.
-[ICC1_W:ICECUT]
-Wir vertreiben auch andere Waren. Nicht-Milchprodukte.
+[DONS427:DONS4]
+Jetzt verschwinde aus Fort Staunton!
-[ICC1_X:ICECUT]
-Und wenn ich ein Kind sehe, dann weiß ich, was ich mit ihm anfange.
+[DONS4_9:DONS4]
+Phil Cassidy's Fully Cocked Gun Shop rüstet dich mit dem Nötigen aus, um den Forelli-Wahlkampf lahmzulegen.
-[ICC1_Y:ICECUT]
-Nicht wahr, Kinderchen? Ja, ja. Mammi hat euch gar nicht lieb.
+[DONS417:DONS4]
+In Phil Cassidy's Fully Cocked Gun Shop gibt es noch einen Flammenwerfer.
-[ICC1_Z:ICECUT]
-Sie HASST euch!
+[DONS425:DONS4]
+Hol den Flammenwerfer von Phil Cassidy's Fully Cocked Gun Shop.
-[ICC1_ZA:ICECUT]
-OBJEKT ERWORBEN!
+[DONS426:DONS4]
+~r~Der Verkäufer ist hinüber!
-{=================================== MISSION TABLE INTRO ===================================}
+[DONS4H3:DONS4]
+Donald Love hat einen Flammenwerfer gekauft. Hol ihn an der Kasse ab.
-[INT1_A:INTRO]
-Tommy Vercetti...Hah! Shit.
+{=================================== MISSION TABLE DONS5 ===================================}
-[INT1_B:INTRO]
-Hätte nicht gedacht, dass der noch mal rauskommt.
+[DONS5_7:DONS5]
+Beschütze Donalds Limo!
-[INT1_C:INTRO]
-Er hat den Kopf eingezogen. War fast vergessen.
+[DONS5_9:DONS5]
+~r~Donald Love ist hinüber!
-[INT1_D:INTRO]
-Aber bald wird man sich an ihn erinnern.
+[DONS513:DONS5]
+Schaden Limo
-[INT1_E:INTRO]
-Wenn man ihn wieder durch ihre Viertel tigern sieht.
+[DONS516:DONS5]
+Steig in die ~b~Limo.
-[INT1_F:INTRO]
-Wird schlecht fürs Geschäft sein.
+[DONS517:DONS5]
+Du hast ~b~Donald Love~w~ zurückgelassen!
-[INT1_G:INTRO]
-Tja, was sollen wir machen, Sonny?
+[DONS519:DONS5]
+Bring Donald zu seinem ~y~Versteck!
-[INT1_H:INTRO]
-Wir machen auf alte Kumpels und schicken ihn woanders hin. Ok?
+[DONS520:DONS5]
+Erledige die ~r~Angreifer!
-[INT1_I:INTRO]
-Wir wollten doch sowieso nach Süden expandieren, oder?
+[DONS521:DONS5]
+Steig in die ~b~Limo.
-[INT1_J:INTRO]
-In Vice City liegt zurzeit das Geld auf der Straße.
+[DS5_AA:DONS5]
+Ich hasse Rummel, aber der gehört nun mal dazu, was?
-[INT1_K:INTRO]
-Die Kolumbianer, die Mexikaner,
+[DS5_AB:DONS5]
+Leider ja.
-[INT1_L:INTRO]
-ja, sogar die kubanischen Flüchtlinge machen alle glänzende Geschäfte.
+[DS5_AC:DONS5]
+Die Forellis werden versuchen, mich umzunieten, nicht?
-[INT1_M:INTRO]
-Aber das geht nur mit Drogen, Sonny.
+[DS5_AD:DONS5]
+Keine Angst, ich fahr mit gezückter Knarre.
-[INT1_N:INTRO]
-Aber keine der Familien rührt dieses Zeug an!
+[DS5_AE:DONS5]
+Nun gut, Augen zu und durch.
-[INT1_O:INTRO]
-Die Zeiten ändern sich.
+[DS5_BA:DONS5]
+Scheiße! Das gibt's nicht!
-[INT1_P:INTRO]
-Die Familien können nicht wegsehen, während unsere Feinde groß abkassieren.
+[DS5_BB:DONS5]
+Keine Panik, ich kümmere mich um die Ärsche!
-[INT1_Q:INTRO]
-Also schicken wir jemanden für die Drecksarbeit da runter
+[DS5_BC:DONS5]
+Im Kofferraum liegt ein Gewehr!
-[INT1_R:INTRO]
-und schneiden uns 'ne hübsche Scheibe ab. Ok?
+[DS5_BD:DONS5]
+Sperren Sie ab, es dauert nicht lange!
-[INT1_S:INTRO]
-Wer ist unser Kontaktmann da unten?
+[DS5_CA:DONS5]
+Okay, wir können.
-[INT1_T:INTRO]
-Ken Rosenberg, ein Idiot von einem Anwalt.
+[DS5_CB:DONS5]
+Da ist noch ein Killer hinter uns her!
-[INT1_U:INTRO]
-Wie soll der Vercetti im Zaum halten?
+[DS5_DA:DONS5]
+Als Einsiedler kann ich keinen Wahlkampf führen.
-[INT1_V:INTRO]
-Muss er gar nicht.
+[DS5_DB:DONS5]
+Eventuell müssen wir eine andere Taktik erwägen.
-[INT1_W:INTRO]
-Wir lassen ihn einfach auf Vice City los.
+[DONS522:DONS5]
+Bring Donald zurück zu seinem ~y~Gebäude!
-[INT1_X:INTRO]
-Wir geben ihm ein bisschen Startgeld, ok?
+{=================================== MISSION TABLE DONS6 ===================================}
-[INT1_Y:INTRO]
-Wir warten ein paar Monate.
+[DONS6_1:DONS6]
+KEIN(E)
-[INT1_Z:INTRO]
-Dann fahren wir hin
+[DS6_00:DONS6]
+Folge dem ~b~Stimmzettel-Van.
-[INT1_A1:INTRO]
-und schauen mal bei ihm rein, klar?
+[DS6_01:DONS6]
+Warte, bis der ~b~Kurier ~w~die Übergabe vorgenommen hat.
-[INT1_A2:INTRO]
-Mal sehen, wie er sich macht.
+[DS6_02:DONS6]
+Hol dir die Stimmzettel von dem ~r~Kurier.
-[INT2_A:INTRO]
-Hey, hey, Jungs! Ich bin, äh, Ken Rosenberg. Ha, ha, sehr gut, hey!
+[DS6_03:DONS6]
+Erledige den ~r~Kurier.
-[INT2_B:INTRO]
-Tja, äh, ich soll euch zu dem Trefffen fahren, okay?
+[DS6_04:DONS6]
+Nimm das ~g~Päckchen.
-[INT2_C:INTRO]
-Ich hab mit den Lieferanten geredet, und die würden,
+[DS6_05:DONS6]
+Folge dem ~b~Stimmzettel-Van~w~ weiter.
-[INT2_D:INTRO]
-liebend gern mit uns ins Geschäft kommen. Und, äh,
+[DS6_06:DONS6]
+~r~Du hast einen Kurier vor der Übergabe erledigt!
-[INT2_E:INTRO]
-wenn alles gut geht, dann dürfte da
+[DS6_07:DONS6]
+Du hast eine Übergabe verpennt, eine zweite darfst du nicht verpassen!
-[INT2_F:INTRO]
-ein Haufen Kohle für uns drin sein. Und das ist doch, na ja...
+[DS6_08:DONS6]
+~r~Du hast eine zweite Übergabe verpasst. Das Wahlergebnis steht fest!
-[INT2_G:INTRO]
-gut...
+[DS6_09:DONS6]
+Du hast ihn verschreckt!
-[INT2_H:INTRO]
-Okay. Es sind zwei Brüder, ok?
+[DS6_10:DONS6]
+~r~Der Van wurde zerstört!
-[INT2_I:INTRO]
-Der eine schmeißt, äh, den Laden,
+[DS6_11:DONS6]
+Die Zeit ist um!
-[INT2_J:INTRO]
-der andere macht die Flüge.
+[DS6_12:DONS6]
+~r~Der Van ist dir entwischt!
-[INT2_K:INTRO]
-Die arbeiten von Mexiko aus,
+[DS6_13:DONS6]
+~r~Ohne Fahrer kann der Van nicht fahren!
-[INT2_M:INTRO]
-Sie haben eine Farm in Panama.
+[DS6_15:DONS6]
+~r~Du hast den Fahrer verschreckt. Jetzt erwischst du ihn nie!
-[INT2_N:INTRO]
-Okay, passt auf, Jungs,
+[DS6_16:DONS6]
+~1~
-[INT2_O:INTRO]
-wenn wir dort ankommen, sollte ich im Auto bleiben,
+[DS6_17:DONS6]
+~w~Der Fahrer ist tot. Fahr den Van zu ~y~Donalds Garage.
-[INT2_P:INTRO]
-oder soll ich mit reinkommen?
+[DONS6AA:DONS6]
+Schlechte Nachricht, Toni!
-[INT2_Q:INTRO]
-Nein. Bleib im Wagen.
+[DONS6AB:DONS6]
+Was ist?
-[INT2_R:INTRO]
-Wisst ihr was, ich hab's mir überlegt.
+[DONS6AC:DONS6]
+Laut Hochrechnung steht es Kopf an Kopf.
-[INT2_S:INTRO]
-Ich pass auf den Wagen auf.
+[DONS6AD:DONS6]
+Zeit für Plan B.
-[INT3_A:INTRO]
-Ok, das sind sie, da im Helikopter.
+[DONS6AE:DONS6]
+Wir müssen die noch nicht ausgezählten Stimmzettel klauen und durch unsere eigenen ersetzen.
-[INT3_B:INTRO]
-Ok, das ganze läuft so ab:
+[DONS6AF:DONS6]
+Wie standen Sie noch mal zu Wahlbetrug?
-[INT3_C:INTRO]
-Die wollen eine saubere Übergabe auf offenem Gelände.
+[DONS6AG:DONS6]
+Ach, halt den Mund!
-[INT3_D:INTRO]
-Alles klar? Ok, dann wollen wir mal.
+[DS6_14:DONS6]
+Hol die ~g~Stimmzettel~w~. Du darfst sie nicht liegen lassen!
-[INT3_E:INTRO]
-Ok, ganz ruhig jetzt.
+[DS6_66:DONS6]
+~r~Du hast das Auto des Kuriers vor der Übergabe zerstört!
-[INT3_F:INTRO]
-Ich bin hier. Der Wagen läuft, Baby!
+[DS6_18:DONS6]
+Du hast einen Kurier vor der Übergabe erledigt! Erledige nicht noch weitere!
-[INT3_G:INTRO]
-Hast du's?
+[DS6_21:DONS6]
+Beeil dich! Es findet eine weitere Übergabe statt!
-[INT3_H:INTRO]
-100% astreines kolumbianisches Koks, mein Freund.
+[DS6_22:DONS6]
+Du hast die erste Übergabe verpasst, eine weitere darfst du nicht verpassen!
-[INT3_I:INTRO]
-Die Kohle?
+[DS6_23:DONS6]
+Du hast die zweite Übergabe verpasst, eine weitere darfst du nicht verpassen!
-[INT3_J:INTRO]
-Zehner und Zwanziger. Gebrauchte Scheine.
+[DS6_24:DONS6]
+Du hast die dritte Übergabe verpasst, eine weitere darfst du nicht verpassen!
-[INT3_L:INTRO]
-Los, los, weg hier! Fahr los!
+[DS6_25:DONS6]
+Du hast die vierte Übergabe verpasst, eine weitere darfst du nicht verpassen!
-[INT4_A:INTRO]
-Gearscht. Wir sind voll gearscht!
+[DS6_26:DONS6]
+Du hast den Kurier vor der Übergabe vertrieben! Vertreibe nicht noch einen!
-[INT4_B:INTRO]
-Das ist wieder typisch.
+[DS6_28:DONS6]
+~r~Du hast es vermasselt! Jetzt kann die Wahl nicht mehr manipuliert werden!
-[INT4_C:INTRO]
-Da passe ich eine einziges Mal nicht auf,
+{=================================== MISSION TABLE DONS7 ===================================}
-[INT4_D:INTRO]
-und prompt kriege ich eins reingewürgt.
+[ELEC_01:DONS7]
+Hey, Don, ich hab das Schlamassel beseitigt.
-[INT4_E:INTRO]
-Hier!
+[ELEC_02:DONS7]
+Jetzt dürfte alles glatt gehen.
-[INT4_F:INTRO]
-Hör endlich auf zu jammern. Du lebst schließlich noch, oder?
+[ELEC_03:DONS7]
+Ach, wirklich?
-[INT4_G:INTRO]
-Lass mich hier raus.
+[ELEC_04:DONS7]
+Mit der Mafia sind Sie nicht mehr in Verbindung zu bringen.
-[INT4_H:INTRO]
-Schaff das Auto weg und leg dich schlafen.
+[ELEC_05:DONS7]
+Ihre Weste ist blütenweiß. Sie könnten Papst werden.
-[INT4_I:INTRO]
-Ich komme morgen zu dir ins Büro, dann sehen wir weiter.
+[ELEC_07:DONS7]
+Obwohl keine nachweislichen Verbindungen zwischen Donald Love
-[INT4_J:INTRO]
-Ok, gute Idee. Ich leg mich erstmal hin.
+[ELEC_08:DONS7]
+und dem organisierten Verbrechen bestehen,
-[INT4_K:INTRO]
-Was hast du vor?
+[ELEC_09:DONS7]
+scheint seine Freundschaft mit Mafiosi wie Toni Cipriani
-[INT4_L:INTRO]
-Ich geh zurück in mein Hotel.
+[ELEC_11:DONS7]
+den Wählern ein beträchtlicher Dorn im Auge zu sein.
-[INT4_M:INTRO]
-Ich muss nachdenken, was schiefgelaufen ist.
+[ELEC_12:DONS7]
+Seit einigen Stunden fallen seine Quoten in den Keller.
-[INT4_N:INTRO]
-Ok.
+[ELEC_13:DONS7]
+Man wähnt ihn wohl untauglich für das Amt...
-[INTRO1:INTRO]
-Da passe ich ein einziges Mal nicht auf, und prompt kriege ich eins reingewürgt.
+[ELEC_14:DONS7]
+Untauglich! Deinetwegen...
-[INTRO2:INTRO]
-Leg dich schlafen.
+[ELEC_15:DONS7]
+Ja. Das ist nur deine Schuld.
-[INTRO3:INTRO]
-Was hast du vor?
+[ELEC_16:DONS7]
+Meine Schuld?
-[INTRO4:INTRO]
-Ich komme morgen zu dir ins Büro, dann sehen wir weiter.
+[ELEC_17:DONS7]
+Oh ja.
-[INT3_K:INTRO]
-Tja, der Deal kann steigen, mein Freund.
+[ELEC_18:DONS7]
+Meine Schuld?
-[INT3_M:INTRO]
-Zeig her.
+[ELEC_19:DONS7]
+Dabei habe ich solche Opfer für diese Stadt gebracht!
-[INT2_L:INTRO]
-Nein, nein, nein, wartet...
+[ELEC_20:DONS7]
+Und weißt du, was von Anfang an mein Schwachpunkt war?
-{=================================== MISSION TABLE KENT1 ===================================}
+[ELEC_21:DONS7]
+Bescheidenheit! Ich bin ruiniert.
-[KPM1_A:KENT1]
-Ok, du Knallkopf, ich werde deine Haut retten.
+[ELEC_22:DONS7]
+Bankrott! 20 Mio Dollar versenkt.
-[KPM1_B:KENT1]
-Was sagst du?
+[ELEC_23:DONS7]
+Futsch... bankrott...erledigt! Arrivederci! Bankrott!
-[KPM1_C:KENT1]
-Du kennst doch Diaz, den Idioten, den Koks-König?
+[ELEC_06:DONS7]
+Papst! Sieh mal.
-[KPM1_D:KENT1]
-Er hat deinen Freund Lance. Es heißt, dein Kumpel wollte ihm an den Kragen.
+[DONS7_1:DONS7]
+O'Donovan bringt Donald Love mit Salvatore Leone in Verbindung. Loves politische Karriere steht auf dem Spiel. Toni muss die Beweise vernichten.
-[KPM1_E:KENT1]
-Hat ihn aber fast den eigenen gekostet hat, falls du weißt, was ich meine.
+[DONS7_2:DONS7]
+~w~Klau den ~b~Van~w~ mit dem Beweismaterial.
-[KPM1_F:KENT1]
-Wo hat er ihn hingebracht? Im Klartext!
+[DONS7_3:DONS7]
+~r~Du hast den Kontaktmann erledigt.
-[KPM1_G:KENT1]
-Mach dich mal locker! Sie haben ihn beim Schrottplatz erwischt.
+[DONS7_4:DONS7]
+~w~Fahr den Van zum ~y~Übergabeort.
-[KPM1_H:KENT1]
-Verdammt noch mal. Psycho.
+[DONS7_5:DONS7]
+~w~Steig wieder in den ~b~Van.
-[KPM1_2:KENT1]
-~r~Du solltest Lance lebend da rausholen!
+[DONS7_7:DONS7]
+Steig ins ~b~Auto des Kontaktmanns.
-[KPM1_3:KENT1]
-Lance' Gesundheitszustand:
+[DONS7CA:DONS7]
+Toni!
-[RESC_1:KENT1]
-Kannst du eine Waffe halten?
+[DONS7CB:DONS7]
+Das Beweismaterial ist in dem Van da vorn.
-[RESC_2:KENT1]
-Klar, glaub schon. Freut mich, dich zu sehen.
+[DONS7CC:DONS7]
+Du musst gewaltsam eindringen.
-[RESC_3:KENT1]
-Los, wir verschwinden von hier.
+[DONS7CD:DONS7]
+Fahr den Van zu D.L.
-[RESC_4:KENT1]
-Dank dir ist mein ganzer schöner Plan im Eimer. Das hast du sauber vermasselt, Lance.
+[DONS7CE:DONS7]
+Viel Glück!
-[RESC_5:KENT1]
-Er hat meinen Bruder auf dem Gewissen. Soll ich ihm den Rasen mähen?
+[DONS713:DONS7]
+~w~Park den Van in der ~y~Garage.
-[RESC_6:KENT1]
-Wir müssen diesen Diaz erledigen bevor er uns erledigt.
+[DONS714:DONS7]
+~r~Du hast den Van zerstört!
-[RESC_7:KENT1]
-Lass dich zusammenflicken, dann treffen wir uns auf der Brücke nach Star Island, ok?
+[RMN_AA:DONS7]
+Heute Abend gibt es Anlass zum Feiern, denn der Arbeitskampf, der Liberty City lahm legte,
-[RESC_8:KENT1]
-Ok, alles klar.
+[RMN_AB:DONS7]
+wurde endlich beendet.
-[KPM1_1:KENT1]
-~g~Lance wird auf dem Schrottplatz gefangengehalten. Rette ihn!
+[RMN_AC:DONS7]
+Sämtliche U-Bahnen und Fähren haben den Betrieb wieder aufgenommen.
-[KPM1_4:KENT1]
-~g~Bring Lance ins Krankenhaus!
+[RMN_AD:DONS7]
+Auch die Brücke, die Staunton Island mit Shoreside Vale verbindet, ist wieder geöffnet.
-[M_PASSN:KENT1]
-MISSION ERFÜLLT!
+[RMN_AE:DONS7]
+Die Streikenden legten ihre Transparente nieder und begaben sich wieder an ihre Arbeitsplätze,
-[KPM1_5:KENT1]
-~g~Diaz' Leute sind hinter euch her. Bring Lance ins Krankenhaus.
+[RMN_AF:DONS7]
+nachdem der neu ins Amt gewählte Bürgermeister O'Donovan ihnen folgende Garantie gab:
-{=================================== MISSION TABLE KICKSTT ===================================}
+[RMN_AG:DONS7]
+Als Ihr Bürgermeister verbürge ich mich für den dauerhaften Fortbestand des Fährbetriebs in Liberty City.
-[KICK1_2:KICKSTT]
-~r~Du warst nicht schnell genug bei der Maschine!
+[RMN_AH:DONS7]
+Doch für manchen klingt sein Versprechen wenig überzeugend
-[KICK1_7:KICKSTT]
-~r~Du hast die Maschine geschrottet!
+[RMN_AI:DONS7]
+angesichts der unverminderten Bautätigkeiten am Porter Tunnel.
-[KICK1_8:KICKSTT]
-~g~Setz dich auf das Motorrad!
+[DONS7_6:DONS7]
+~w~Triff dich mit Donald Loves ~b~Kontaktmann~w~ unter der Überführung in Newport.
-[KICK1_T:KICKSTT]
-BENÖTIGTE ZEIT:
+{=================================== MISSION TABLE RAYS1 ===================================}
-[KICKTM:KICKSTT]
-~b~ZEIT: ~1~:~1~
+[SAYO_01:RAYS1]
+Dann bist du die lästige Hämorrhoide?
-[KICKTM2:KICKSTT]
-~b~ZEIT: ~1~:0~1~
+[SAYO_02:RAYS1]
+Wie bitte?
-[GETBIKE:KICKSTT]
-~g~Du hast ~1~ Sekunden, um zu einer Geländemaschine zurückzukehren, bevor die Mission endet.
+[SAYO_03:RAYS1]
+Du hast 'n Haufen wichtige Leute ziemlich sauer gemacht.
-[KICK1_1:KICKSTT]
-~g~Absolviere den Kurs so schnell wie möglich.
+[SAYO_04:RAYS1]
+Leon McAffrey, LCPD.
-[KICK1_6:KICKSTT]
-~g~Gut gemacht!
+[SAYO_05:RAYS1]
+Ich hab keine Ahnung, wovon Sie reden.
-[KICK_10:KICKSTT]
-~G~Nimm den Sanchez und absolviere den Kurs, indem du alle Checkpoints passierst.
+[SAYO_06:RAYS1]
+Ich bin in der Gastronomiebranche.
-[KICK_12:KICKSTT]
-~r~Du hast es vermasselt!
+[SAYO_07:RAYS1]
+Wie du willst, Schlaumeier.
-[KICK_13:KICKSTT]
-~r~Du hast zu lange gebraucht!
+[SAYO_08:RAYS1]
+Ist mir scheißegal, wenn ihr Arschlöcher euch gegenseitig umpusten wollt.
-[KICK_11:KICKSTT]
-~g~Um die Mission zu beenden, stell dich zu Fuß in die ~q~rosa Markierung~g~.
+[SAYO_09:RAYS1]
+Mich interessiert nur mein Anteil.
-{=================================== MISSION TABLE LAWYER1 ===================================}
+[SAYO_12:RAYS1]
+Mein Anteil! Wo ist er?
-[LAW1_A:LAWYER1]
-Leg dich schlafen, sagt er -
+[SAYO_13:RAYS1]
+In deinem Arsch, du Witzfigur.
-[LAW1_B:LAWYER1]
-- Ich sitz die ganze Nacht im Dunklen hier rum und trink Kaffee!
+[SAYO_14:RAYS1]
+Hör auf mit dem Scheiß, sonst lass ich dich, deine Bekannten und ihre Verwandten,
-[LAW1_C:LAWYER1]
-Das ist eine Katastrophe. Wir sind so gearscht, Mann!
+[SAYO_15:RAYS1]
+dein ganzes Heimatkaff über die Klinge springen.
-[LAW1_D:LAWYER1]
-Diese Gorillas, die kommen hier runter und reißen mir den Kopf ab. Es ist beinahe zum lachen!
+[SAYO_16:RAYS1]
+Reg dich ab. Geh 'ne Runde vögeln.
-[LAW1_E:LAWYER1]
-Dafür habe ich NICHT Jura studiert. Ok, was sollen wir jetzt machen?
+[SAYO_17:RAYS1]
+Wir sind gleichberechtigte Geschäftspartner.
-[LAW1_F:LAWYER1]
-Sei still, setz dich hin und bleib ruhig. Ich sag dir, was wir machen.
+[SAYO_18:RAYS1]
+Ich halte euch die Bullen und Mafiajäger vom Hals,
-[LAW1_G:LAWYER1]
-Du findest raus, wer das Koks geklaut hat - und ich nehm ihn mir vor.
+[SAYO_19:RAYS1]
+und ihr haltet mich angemessen bei Kasse.
-[LAW1_H:LAWYER1]
-Gute Idee. SEHR gute Idee. Lass mich nachdenken, lass mich nachdenken.
+[SAYO_20:RAYS1]
+Und woher weiß ich, dass ich nicht zur wandelnden
-[LAW1_I:LAWYER1]
-OH! Da gibt es diesen Colonel a.D., Colonel Juan Garcia Cortez.
+[SAYO_21:RAYS1]
+Weihnachtsgans für jeden korrupten Cop zwischen hier und Vice City werde?
-[LAW1_J:LAWYER1]
-Der half mir, diesen Deal einzufädeln,
+[SAYO_22:RAYS1]
+Mit mir kriegt ihr die Stadt unter eure Kontrolle.
-[LAW1_K:LAWYER1]
-und zwar ohne Vice Citys Gangster-Establishment. Ok?
+[SAYO_23:RAYS1]
+Dafür verlange ich Kohle und Erkenntlichkeit.
-[LAW1_L:LAWYER1]
-Pass auf, der gibt eine Party in der Bucht, auf seiner Luxusjacht
+[SAYO_24:RAYS1]
+Los, Toni, machen wir 'ne kleine Tour.
-[LAW1_M:LAWYER1]
-da kommt alles, was in Vice City Rang und Namen hat.
+[SAYO_25:RAYS1]
+Wir fahren zu deinen alten Freunden, den Sindaccos.
-[LAW1_N:LAWYER1]
-Ich hab natürlich eine Einladung, versteht sich,
+[SAYO_10:RAYS1]
+- Ich mag Männer mit Prinzipien. ~n~ - Ich auch. Ich fahr auf alle ihre Beerdigungen mit heißen Puppen in schnellen Autos.
-[LAW1_O:LAWYER1]
-aber mich kriegen keine zehn Pferde hier raus. Auf keinen Fall!
+[RS1_YK:RAYS1]
+Schaden
-[LAW1_P:LAWYER1]
-Halt die Klappe! Ich geh selbst hin...
+[RS1_01:RAYS1]
+Beseitige die ~r~Sindaccos.
-[LAW1_Q:LAWYER1]
-Moment! Hey, ich steh ja auch auf den 78er Look , aber das wird dort kein nostalgisches Saufgelage.
+[RS1_02:RAYS1]
+~r~Das Auto wurde zerstört!
-[LAW1_R:LAWYER1]
-Ich meine, nichts gegen dich, aber mit den Klamotten wirst du dort ziemlich blöd angeschaut.
+[RS1_03:RAYS1]
+~r~Die Yakuza wurden massakriert!
-[LAW1_S:LAWYER1]
-Wieso? Was ist mit meinen Sachen?
+[RS1_04:RAYS1]
+~w~Erledige ein paar ~r~Sindaccos~w~, damit sie dich bemerken.
-[LAW1_T:LAWYER1]
-Pass auf. Fahr zu Rafael. Sag ihm, ich schicke dich, und er soll dich ordentlich einkleiden.
+[RS1_05:RAYS1]
+~w~Steig in Leons ~b~Auto.
-[LAW1_U:LAWYER1]
-Ok, Los jetzt. Mach hinne...
+[RS1_06:RAYS1]
+~w~Fahr ins ~y~Sindacco-Gebiet.
-[LAWP_1:LAWYER1]
-Guten Abend.
+[RS1_07:RAYS1]
+~w~Geh wieder zum ~b~Auto.
-[LAWP_2:LAWYER1]
-Ich höre, Sie sind anstelle von Mr. Rosenberg hier.
+[RS1_10:RAYS1]
+~r~Du hast Leon umgelegt!
-[LAWP_3:LAWYER1]
-Ich hoffe, gewisse Vorfälle haben seiner Gesundheit nicht geschadet,
+[RAYS1AA:RAYS1]
+Gut, ich fahre und du ballerst los!
-[LAWP_4:LAWYER1]
-oder seiner Psyche, Mr...äh?
+[RAYS1AB:RAYS1]
+Ich denke, die Yakuza erledigen die grobe Arbeit?
-[LAWP_5:LAWYER1]
-Vercetti. Er leidet ein wenig an...Platzangst.
+[RAYS1AC:RAYS1]
+Nur wer sich anpasst, überlebt, Cipriani!
-[LAWP_6:LAWYER1]
-Ausgezeichnet, ausgezeichnet. Und Sie?
+[RAYS1BA:RAYS1]
+Scheiße, die Sache wird Wellen schlagen.
-[LAWP_7:LAWYER1]
-Ich will nur meine Ware.
+[RAYS1BB:RAYS1]
+Ich muss mich dünne machen. Bis demnächst, Toni.
-[LAWP_8:LAWYER1]
-Ah. Eine missliche Lage für alle Beteiligten.
+[RAYS1CA:RAYS1]
+Augen geradeaus, Toni!
-[LAWP_9:LAWYER1]
-Natürlich stelle ich selbst Nachforschungen an, aber
+[RAYS1CB:RAYS1]
+Hinter uns, Toni, hinter uns!
-[LAWP_10:LAWYER1]
-bei solch heiklen Sachen dauert das ein wenig.
+[RAYS1CC:RAYS1]
+Vorsicht, links!
-[LAWP_11:LAWYER1]
-Wir sprechen uns vielleicht später. Hm?
+[RAYS1CD:RAYS1]
+Rechts, Toni, rechts!
-[LAWP_12:LAWYER1]
-Inzwischen möchte ich Ihnen meine Tochter vorstellen,
+[RAYS1CE:RAYS1]
+Steig wieder ein!
-[LAWP_13:LAWYER1]
-Mercedes!
+[RAYS1CF:RAYS1]
+Pass gefälligst auf!
-[LAWP_14:LAWYER1]
-Könntest du dich um unseren Gast kümmern, während ich mich um andere Dinge
+[RAYS1OS:RAYS1]
+Oh, Shit!
-[LAWP_15:LAWYER1]
-Natürlich, Daddy.
+{=================================== MISSION TABLE RAYS2 ===================================}
-[LAWP_16:LAWYER1]
-Entschuldigen Sie mich, bitte.
+[RS2_02:RAYS2]
+~w~Schwing dich auf ein ~b~Motorrad!
-[LAWP_17:LAWYER1]
-Mercedes!?
+[RS2_03:RAYS2]
+~w~Locke die Motorradfahrer in die ~y~Todeszone!
-[LAWP_18:LAWYER1]
-Leb du mal mit so 'nem Namen.
+[RS2_04:RAYS2]
+~w~Kehr um! Du darfst keine ~r~Forellis ~w~zurücklassen!
-[LAWP_19:LAWYER1]
-Na gut, ich zeig dir mal einige unserer bekannteren Gäste...
+[RS2_05:RAYS2]
+~w~Steig auf das ~b~Motorrad!
-[LAWP_20:LAWYER1]
-Das ist unser Abgeordneter Alex Shrub mit dem aufgehenden Sternchen Candy Suxx..
+[RS2_06:RAYS2]
+~r~Du musst die Forellis mit dem Motorrad weglocken.
-[LAWP_21:LAWYER1]
-Und kennen Sie schon meine reizende Frau Laura? Nein?
+[RS2_07:RAYS2]
+~r~Die Yardies wollten selber Forelli-Hackepeter machen.
-[LAWP_22:LAWYER1]
-Nun, leider ist sie in Alabama. Das hier ist Candy.
+[RS2_08:RAYS2]
+~r~Kein Yardie hat überlebt!
-[LAWP_23:LAWYER1]
-Und hier haben wir den Star-Verteidiger der Vice City Mambas, BJ.
+[RS2_09:RAYS2]
+~1~
-[LAWP_24:LAWYER1]
-Immer charmant.
+[RS2_10:RAYS2]
+~r~Ohne Motorräder können sie dich nicht verfolgen!
-[LAWP_25:LAWYER1]
-Ich hab ihn voll geblockt. Der sitzt heute im Rollstuhl!
+[RAYS2AA:RAYS2]
+Hast dir Zeit gelassen, Toni.
-[LAWP_26:LAWYER1]
-Haha, das ist gut!
+[RAYS2AB:RAYS2]
+Sie können mich mal kreuzweise.
-[LAWP_27:LAWYER1]
-Tja, ich bin an einem super Grundstück dran.
+[RAYS2AD:RAYS2]
+Nett. Hör zu.
-[LAWP_28:LAWYER1]
-Und der Schleimbold dort ist Jezz Torrent,
+[RAYS2AE:RAYS2]
+Die Yardies strecken die Gierfinger nach Forelli-Gebiet in Newport aus.
-[LAWP_29:LAWYER1]
-Der Sänger von 'Love Fist'.
+[RAYS2AF:RAYS2]
+Fahr hin und locke die Forelli-Schergen zum Krankenhaus in Rockford.
-[LAWP_30:LAWYER1]
-Wisst ihr, wie sie in Thailand Pingpong spielen?
+[RAYS2AG:RAYS2]
+Die Yardies werden auf sie warten.
-[LAWP_31:LAWYER1]
-Ich verrat's euch,
+[RAYS2AH:RAYS2]
+Was springt für Sie raus?
-[LAWP_32:LAWYER1]
-man spielt ohne Schläger, wenn ihr wisst, was ich meine!
+[RAYS2AI:RAYS2]
+Ich schulde denen was. Bis dann.
-[LAWP_33:LAWYER1]
-Impotent.
+[RS2_11:RAYS2]
+Töte keinen von den Forellis!
-[LAWP_34:LAWYER1]
-Und das schwatzhafte Trio.
+[RS2_12:RAYS2]
+Mach ~r~sie ~w~fertig!
-[LAWP_35:LAWYER1]
-Diese schlafende Schweißfabrik ist Papas Obersklave, Gonzalez.
+[RS2_01:RAYS2]
+~w~Klau ein ~b~Motorrad~w~ der Forellis. Aber töte keinen von ihnen.
-[LAWP_36:LAWYER1]
-und die anderen beiden sind Pastor Richards
+[RAYS2DB:RAYS2]
+Ja. Kommt, machen wir sie fertig!
-[LAWP_37:LAWYER1]
-und der pseudo-intellektuelle Regisseur Steve Scott.
+[RS2_13:RAYS2]
+~r~Es sind zu viele Yardies umgekommen!
-[LAWP_38:LAWYER1]
-....leidenschaftlich mit den nymphomanischen Aliens
+{=================================== MISSION TABLE RAYS3 ===================================}
-[LAWP_39:LAWYER1]
-Da kommt der riesige Hai und
+[CRAZ_01:RAYS3]
+Mit welcher Schandtat in meinem früheren Leben hab ich Sie verdient?
-[LAWP_40:LAWYER1]
-beißt ihnen ihr Ding ab!
+[CRAZ_02:RAYS3]
+Ray, Sie sind 40 Jahre alt und haben von Nichts 'ne Ahnung.
-[LAWP_41:LAWYER1]
-Ha! So was hat doch die Welt noch nicht gesehen, oder?
+[CRAZ_03:RAYS3]
+Wie sind Sie bloß so weit gekommen?
-[LAWP_42:LAWYER1]
-Colonel!
+[CRAZ_04:RAYS3]
+Ein Wunder, dass Ihnen noch keiner 'ne Kugel in Ihre Mutter-Theresa-Birne gejagt hat.
-[LAWP_43:LAWYER1]
-Ihre Party ist wie immer fantastisch, hahahaha!
+[CRAZ_05:RAYS3]
+Nehmen Sie sich in Acht, Leon.
-[LAWP_44:LAWYER1]
-Ich entschuldige mich für die Verspätung.
+[CRAZ_06:RAYS3]
+So'n Gerede geht echt zu weit, verdammt!
-[LAWP_45:LAWYER1]
-Ah, nicht doch, Amigo. Wie geht es ihnen?
+[CRAZ_07:RAYS3]
+Wie? Wollen Sie zu Mammi laufen?
-[LAWP_46:LAWYER1]
-Unsere Geschäfte laufen schwierig - die Barbaren stehen vor den Toren.
+[CRAZ_08:RAYS3]
+Auf Daddys Schoß hüpfen?
-[LAWP_47:LAWYER1]
-Eine Zeit, Freunde zu belohnen und Feinde auszuschalten, Amigo.
+[CRAZ_09:RAYS3]
+Sich 'nen Kuss abholen?
-[LAWP_48:LAWYER1]
-Wer ist das Großmaul?
+[CRAZ_10:RAYS3]
+Hey, Toni!
-[LAWP_49:LAWYER1]
-Ricardo Diaz. Er ist Mr. Koks.
+[CRAZ_14:RAYS3]
+Er sorgt dafür, dass ich alles nach Vorschrift mache.
-[LAWP_50:LAWYER1]
-Mercedes!
+[CRAZ_15:RAYS3]
+Toni Cipriani - Ray Machowski.
-[LAWP_51:LAWYER1]
-Oh, ich will gerade meinen Freund in die Stadt bringen.
+[CRAZ_16:RAYS3]
+Er gehört zu uns. Hey, wir fahren jetzt auf Mafiajagd.
-[LAWP_52:LAWYER1]
-Ein andermal, Ricardo!
+[CRAZ_17:RAYS3]
+Ab mit Ihnen ins Revier, 'nen Bericht schreiben.
-[LAWP_53:LAWYER1]
-Lass uns verschwinden.
+[CRAZ_18:RAYS3]
+Braver Junge... Los, Toni.
-[LAWP_54:LAWYER1]
-Fahr mich zum Pole Position Club.
+[CRAZ_19:RAYS3]
+Leon, Sie elendes Stück Scheiße.
-[LAW1_2:LAWYER1]
-~g~Begib dich zur Jacht des Colonels.
+[CRAZ_11:RAYS3]
+- Stehen bleiben, Arschloch. ~n~ - Hey, langsam! Darf ich vorstellen: mein neuer Partner, Mr. Hip!
-[LAW1_4:LAWYER1]
-~r~Du hast die Tochter des Colonels erledigt!
+[RAYS3_1:RAYS3]
+Hilf den Yakuza, das Forelli-Gebiet in Belleville zu erobern. Der Spieler muss ~1~ Forellis nur mit einer Katana erledigen.
-[LAW1_5:LAWYER1]
-Wirst du für meinen Vater arbeiten?
+[RAYS3_2:RAYS3]
+~w~Erledige ~1~ ~r~Forellis~w~ nur mit der griffbereiten Katana.
-[LAW1_6:LAWYER1]
-Vielleicht.
+[RAYS3_3:RAYS3]
+Hits
-[LAW1_7:LAWYER1]
-Darf ich meine Hand in deinen Schoß legen?
+[RAYS3_4:RAYS3]
+~w~Du musst die ~r~Forellis~w~ mit der Katana erledigen.
-[LAW1_8:LAWYER1]
-Vielleicht...
+[RAYS3_5:RAYS3]
+~w~Du hast keine Katana mehr. Hol dir eine ~g~neue.
-[LAW1_9:LAWYER1]
-Es ist schwer, einen so reichen, mächtigen Vater zu haben. Los.
+[RAYS3_6:RAYS3]
+~r~Die Zeit ist um.
-[LAW1_10:LAWYER1]
-Wir sehen uns, mein Hübscher!
+[RAYS3_7:RAYS3]
+~w~Erledige ~1~ ~r~Forellis~w~ nur mit der bereitgestellten Katana vor ~1~:~1~ Uhr
-[LAW1_11:LAWYER1]
-Ganz bestimmt.
+[RAYS3_8:RAYS3]
+~w~Erledige ~1~ ~r~Forellis~w~ nur mit der bereitgestellten Katana vor ~1~:0~1~ Uhr
-[LAW1_12:LAWYER1]
-Hmm, netter Ofen.
+[RAYS3_9:RAYS3]
+~w~Erledige ~1~ ~r~Forellis~w~ nur mit der bereitgestellten Katana vor 0~1~:~1~ Uhr
-[LAW1_13:LAWYER1]
-Nein! Mein Motorrad!
+[RAYS310:RAYS3]
+~w~Erledige ~1~ ~r~Forellis~w~ nur mit der bereitgestellten Katana vor 0~1~:0~1~ Uhr
-[LAW1_3:LAWYER1]
-~g~Bring die Tochter des Colonels zum Pole Position Club.
+{=================================== MISSION TABLE RAYS4 ===================================}
-[HELP20:LAWYER1]
-Folge dem ~h~T-shirt-Symbol~w~ auf dem Radar, um Rafael's zu finden.
+[RAYS4_1:RAYS4]
+~w~Die Yardies werden in Newport angegriffen. Erledige die angreifenden ~r~Sindaccos.
-[LAW1_14:LAWYER1]
-Wow, das ist ja wirklich ein tolles Motorrad.
+[RAYS4_2:RAYS4]
+~w~Sprich mit dem ~b~Boss der Yardie-Gang.
-[LAW1_15:LAWYER1]
-Ja, Baby, hab ich mir gerade bei Howlin' Pete's besorgt.
+[RAYS4_3:RAYS4]
+~w~Folge dem ~b~Boss der Yardie-Gang.
-{=================================== MISSION TABLE LAWYER2 ===================================}
+[RAYS4_4:RAYS4]
+~r~Ein Yardie wurde umgelegt!
-[LAW2_A:LAWYER2]
-Ah! Tja, ich hoffe, du amüsierst dich gut, während ich hier vor Angst halb umkomme. Was hast du rausgefunden?
+[RAYS4_5:RAYS4]
+~w~Beschütze die Yardies, bis der Krankenwagen kommt.
-[LAW2_B:LAWYER2]
-Dass es in dieser Stadt mehr Gangster gibt als im Knast. Wir brauchen einen Tipp von der Straße...
+[RAYS4_6:RAYS4]
+~w~Zurück! Beschütze die Yardies.
-[LAW2_C:LAWYER2]
-Ok, lass mich nachdenken, lass mich nachdenken -
+[RAYS4_7:RAYS4]
+~w~Räume den Yardies den Weg zum Krankenwagen frei.
-[LAW2_D:LAWYER2]
-- AH! Ich hab's!
+[RAYS4_8:RAYS4]
+~w~Geh schon mal vor zum ~y~Krankenwagen.
-[LAW2_E:LAWYER2]
-Ok, es gibt da so 'n Engländer, so 'n Idiot aus der Musikbranche.
+[RAYS4AA:RAYS4]
+Cipriani, diese Zusammenkünfte müssen aufhören.
-[LAW2_F:LAWYER2]
-Er nennt sich Kent Paul.
+[RAYS4AB:RAYS4]
+Meinetwegen.
-[LAW2_G:LAWYER2]
-Und der ist in all den Kreisen von Vice City richtig dick drin.
+[RAYS4AC:RAYS4]
+Zieh nicht so'n Gesicht.
-[LAW2_H:LAWYER2]
-Wenn einer weiß, wo 20 Kilo Koks abgeblieben sind,
+[RAYS4AD:RAYS4]
+Was haben Sie für mich, McAffrey?
-[LAW2_I:LAWYER2]
-dann dieser Typ. Er ist immer im Malibu.
+[RAYS4AE:RAYS4]
+Die Yardies tun sich 'n bisschen schwer damit, ihr frisch erworbenes Gebiet in Newport zu halten.
-[LAW2_J:LAWYER2]
-Ich seh ihn mir mal an.
+[RAYS4AF:RAYS4]
+Die Sindaccos wollen es wohl zurück.
-[LAW2B_A:LAWYER2]
-Wo kommst du denn her?
+[RAYS4BA:RAYS4]
+Rudyard hat 'ne Kugel abgekriegt!
-[LAW2B_B:LAWYER2]
-Nach einer wie dir suche ich schon seit Ewigkeiten.
+[RAYS4BB:RAYS4]
+Wir müssen ihm 'nen Krankenwagen holen!
-[LAW2B_C:LAWYER2]
-Kent Paul. Ja, ich bin hier die Nummer Eins.
+[RAYS4BC:RAYS4]
+Scheiße! Noch mehr Sindacco-Penner!
-[LAW2B_D:LAWYER2]
-Ich suche einen Engländer...
+[RAYS4BD:RAYS4]
+Ich hol den Krankenwagen. Hilf du meinen Jungs!
-[LAW2B_E:LAWYER2]
-Ich ziehe hier die Strippen, verstehst du?
+[RAYS4BE:RAYS4]
+Los, weg hier!
-[LAW2B_F:LAWYER2]
-Ich lade dich ein. Ich kann dir alles besorgen, Süße.
+[RAYS4BF:RAYS4]
+Da kommt der Krankenwagen!
-[LAW2B_G:LAWYER2]
-Mach dir keine Gedanken.
+[RAYS4BG:RAYS4]
+Danke, Mr. Cipriani, wir revanchieren uns!
-[LAW2B_H:LAWYER2]
-Verzieh dich, Schätzchen.
+{=================================== MISSION TABLE RAYS5 ===================================}
-[LAW2B_I:LAWYER2]
-Oi oi oi oi!
+[RAYS5_1:RAYS5]
+KEIN(E)
-[LAW2B_J:LAWYER2]
-Bist du Kent Paul? Ich bin ein Freund von Rosenberg...
+[RAYS5AA:RAYS5]
+Was? Keine Blumen?
-[LAW2B_K:LAWYER2]
-Rosenberg...Rosenberg... Ach, dieser abgedrehte Winkeladvokat!
+[RAYS5AB:RAYS5]
+Wusste nicht, dass Sie Beerdigung haben.
-[LAW2B_L:LAWYER2]
-Der bringt noch den Unschuldigsten auf den elektrischen Stuhl!
+[RAYS5AC:RAYS5]
+Du bist ein Scherzkeks, Toni, ein echter Komiker.
-[LAW2B_M:LAWYER2]
-Mach uns noch 'nen Drink, mein Freund.
+[RAYS5AD:RAYS5]
+Die Forellis machen ernst.
-[LAW2B_N:LAWYER2]
-Bist ein echter Komiker.
+[RAYS5AE:RAYS5]
+Sie verschieben Waffen und reißen sich 'nen Teil davon selbst unter den Nagel.
-[LAW2B_O:LAWYER2]
-Hör zu, ich vermisse 20 Kilo und einen Haufen Geld...
+[RAYS5AF:RAYS5]
+Das riecht nach Ärger.
-[LAW2B_P:LAWYER2]
-Drogen? Das ist doch Schwachsinn.
+[RAYS5AG:RAYS5]
+Sie schaffen die Knarren in Trucks nach Fort Staunton.
-[LAW2B_Q:LAWYER2]
-Was weißt du darüber?
+[RAYS5AH:RAYS5]
+War mir ein Vergnügen.
-[LAW2B_R:LAWYER2]
-Oi, oi! Gerade wollte ich's sagen...
+[RAYS5AI:RAYS5]
+Gleichfalls.
-[LAW2B_S:LAWYER2]
-Es gibt da einen Koch, der verdealt Koks in der Küche eines Hotels am Ocean Drive.
+[RAY5_2:RAYS5]
+Sie holen Verstärkung.
-[LAW2B_T:LAWYER2]
-Macht einen ziemlich zufriedenen Eindruck in letzter Zeit. Solltest du mal auschecken.
+[RAY5_3:RAYS5]
+~r~Die Forellis haben die Waffen!
-[LAW2B_U:LAWYER2]
-Mach ich. Und wir sehen uns.
+[RAY5_4:RAYS5]
+Hey, das ist Cipriani!
-[LAW2B_V:LAWYER2]
-Ja, ja. Nur zu. Hau bloß ab, du Stinktier. Dir polier ich noch die Visage!
+[RAY5_5:RAYS5]
+Legt ihn um!
-[LAW2B_W:LAWYER2]
-Gib mir 'nen Drink. Und wo ist die Puppe?
+[RAY5_6:RAYS5]
+Einen erwischt. Zerstöre jetzt den zweiten ~r~Truck.
-[LAW2C_A:LAWYER2]
-Oh, sehr gut, Rambo, schlag ihn ruhig zu Brei. Dann redet er ganz bestimmt.
+[RAY5_1:RAYS5]
+Zerstöre die ~r~Trucks~w~, ehe sie ihr Ziel erreichen!
-[LAW2C_B:LAWYER2]
-Willst du auch ein paar?
+[RAY5_7:RAYS5]
+Zerstöre den ~r~Truck~w~, ehe sie sich genug Munition daraus geholt haben.
-[LAW2C_C:LAWYER2]
-Hey, ruhig. Ich will das gleiche wie du, Bruder.
+[RAY5_8:RAYS5]
+~r~Du hast den Truck nicht rechtzeitig zerstört!
-[LAW2C_D:LAWYER2]
-Ach ja? Und das wäre?
+{=================================== MISSION TABLE SALH1 ===================================}
-[LAW2C_E:LAWYER2]
-Deine Kohle und den Stoff meines toten Bruders. Aber du hast gerade unsere Spur erledigt.
+[SLH1_F1:SALH1]
+~r~Du hast einen von den Hoods umgebracht.
-[LAW2C_F:LAWYER2]
-Dumm gelaufen. Verzieh dich.
+[SLH1_F2:SALH1]
+~w~Locke die Forellis heraus, indem du ihre ~r~Autos~w~ kaputtschlägst.
-[LAW2C_G:LAWYER2]
-Hey, hey! Kein Grund, hier den dicken Mann zu spielen.
+[SLH1_F3:SALH1]
+~w~Zahl es den ~r~Forellis~w~ heim.
-[LAW2C_H:LAWYER2]
-Sieh mal: Wir sind zwei Hombres in 'ner fremden Stadt. Wir sollten uns gegenseitig helfen.
+[SLH1_F4:SALH1]
+~w~Locke noch mehr Forellis heraus, indem du noch ein ~r~Auto~w~ kaputtschlägst.
-[LAW2C_I:LAWYER2]
-Ich helf mir selbst, Bruder.
+[SLH1_F5:SALH1]
+~w~Lass die ~b~Hoods~w~ nicht zurück.
-[LAW2C_J:LAWYER2]
-Bist du dir sicher? Hier nimm das.
+[SLH1_B0:SALH1]
+~w~Okay, Vetter. Mischen wir die Stadt auf.
-[LAW2C_K:LAWYER2]
-Komm mit!
+[SLH1_B1:SALH1]
+~w~Hey! Komm zurück, Idiot!
-[LAW2_1:LAWYER2]
-Was glotzt du denn so?
+[SLH1_B2:SALH1]
+~w~Hey, du Witzbold! Da krieg ich meinen Arsch doch nicht mehr rein!
-[LAW2_2:LAWYER2]
-Rede endlich...
+[SLH1_B3:SALH1]
+~w~Besser so! Denn ohne mich solltet ihr gar nicht erst losfahren!
-[LAW2_3:LAWYER2]
-Zwing mich doch dazu, du Pfeife!
+[SLH1_B4:SALH1]
+~w~Verdammt! Das war 'ne enge Kiste, Mann!
-[LAW2_4:LAWYER2]
-Mir nach!
+[SLH1_B6:SALH1]
+~w~...nimm's nicht persönlich, Toni.
-[LAW2_5:LAWYER2]
-Ich seh zu, was ich rausfinde. Ich behalte dich im Auge, Tommy.
+[SLH1_B7:SALH1]
+~w~Es wird Zeit, dass die Hoods aufstehen und das Richtige machen!
-[LAW2_6:LAWYER2]
-~g~Begib dich zum Malibu Club und suche Kent Paul.
+[SLH1_B8:SALH1]
+~w~Kommt! Die machen wir fertig!
-[LAW2_7:LAWYER2]
-~g~Suche den Küchenchef auf dem Ocean Drive.
+[SLH1_C0:SALH1]
+~w~Mein Bruder!
-[LAW2_10:LAWYER2]
-~g~Fahre zurück zum Hotel.
+[SLH1_C1:SALH1]
+~w~Yo! Trottel! Wo willst du hin?
-[LAW2_11:LAWYER2]
-~g~Nimm sein Handy.
+[SLH1_C2:SALH1]
+~w~Und wo soll ich da meinen scheiß Arsch hinpflanzen?
-[LAW2_12:LAWYER2]
-Du hast jetzt ein Handy und kannst Telefongespräche entgegennehmen!
+[SLH1_C3:SALH1]
+~w~Besser so! Denn ohne mich solltet ihr gar nicht erst losfahren!
-[LAW2_13:LAWYER2]
-~g~Du hast Lance zurückgelassen! Geh ihn holen!
+[SLH1_C4:SALH1]
+~w~Shiiit! Mann, ging da die Kacke ab!
-[LAW2_14:LAWYER2]
-Verdammt, nichts wie weg hier!
+[SLH1_D0:SALH1]
+~w~Hey! Das ist mein Auto!
-[GUN_2A:LAWYER2]
-Halte die ~h~~k~~PED_LOCK_TARGET~ ~w~gedrückt, um ~h~automatisch zu zielen~w~. Drücke die ~h~~k~~PED_FIREWEAPON~~w~, um zu ~h~feuern!
+[SLH1_D1:SALH1]
+~w~So gefällt mir das besser!
-[GUN_2C:LAWYER2]
-Halte die ~h~~k~~PED_LOCK_TARGET~ ~w~gedrückt, um ~h~automatisch zu zielen~w~. Drücke die ~h~~k~~PED_FIREWEAPON~~w~, um zu ~h~feuern!
+[SLH1_E0:SALH1]
+~w~Verdammt, was ist hier los?
-[GUN_2D:LAWYER2]
-Halte die ~h~~k~~PED_LOCK_TARGET~ ~w~gedrückt, um ~h~automatisch zu zielen~w~. Drücke die ~h~~k~~PED_FIREWEAPON~~w~, um zu ~h~feuern!
+[SLH1_E1:SALH1]
+~w~Wir kicken eure Ärsche raus hier! Das ist los!
-[HELP17:LAWYER2]
-Drücke die ~h~~k~~PED_FIREWEAPON~~w~, um den Küchenchef anzugreifen.
+[SLH1_X0:SALH1]
+Got threat
-[HELP18:LAWYER2]
-Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um den Küchenchef anzugreifen.
+[SLH1_X1:SALH1]
+Had threat
-[LAW3_11:LAWYER2]
-Stell dich in die ~q~rosa Markierung~w~, um zu sehen, was im Angebot ist.
+[SLH1_X2:SALH1]
+Find threat
-[LAW3_12:LAWYER2]
-Du kannst Waffen auswählen, indem du die ~h~linke~w~ oder ~h~rechte~w~ ~h~Richtungstaste drückst.
+[SLH1_F0:SALH1]
+~w~Hol die ~b~Hoods~w~ ab, dann zieh die Aufmerksamkeit der ~r~Forellis~w~ auf dich.
-[LAW3_13:LAWYER2]
-Wenn du genug Geld hast, kannst du Waffen durch Drücken der ~h~~k~~PED_SPRINT~~w~ kaufen.
+[RUFJ_01:SALH1]
+Ihr Anwalt, Mr. Leone.
-[LAW3_14:LAWYER2]
-Um zu gehen, drücke die ~h~~k~~VEHICLE_ENTER_EXIT~
+[RUFJ_02:SALH1]
+Ich weiß schon, wer das ist!
-[LAW3_15:LAWYER2]
-Folge dem ~h~Pistolensymbol~w~ auf dem Radar, so kommst du zu AmmuNation.
+[RUFJ_03:SALH1]
+Komm, geh mir nicht auf den Keks.
-[LAW2_15:LAWYER2]
-~g~Begib dich zu AmmuNation.
+[RUFJ_04:SALH1]
+Ab mit dir, Kleiner. Bestell deiner Mutter 'nen Gruß von mir, capiche?
-[LAW2_K:LAWYER2]
-Nur die Ruhe.
+[RUFJ_05:SALH1]
+Na schön. Sie haben fünf Minuten.
-[LAW2_16:LAWYER2]
-Eins musst du wissen: In dieser Stadt darfst du nie unbewaffnet sein.
+[RUFJ_06:SALH1]
+Sagen Sie, äh, Lionel, Sie schauen gut aus.
-[LAW2_17:LAWYER2]
-Komm, der nächste Waffenladen ist ein paar Blocks von hier.
+[RUFJ_07:SALH1]
+Sehen Sie mich an!
-[LAW2_18:LAWYER2]
-Tommy, jeder Mann braucht ab und zu mal ein bisschen Entspannung.
+[RUFJ_08:SALH1]
+Eben noch geachtetes Mitglied der Gesellschaft und jetzt im Knast.
-[LAW2_19:LAWYER2]
-Das ist die Pole Position Stripper-Bar. Solltest du bei Gelegenheit mal reinschauen.
+[RUFJ_09:SALH1]
+Da kann mir die Menschenfreundlichkeit echt vergehen!
-{=================================== MISSION TABLE LAWYER3 ===================================}
+[RUFJ_10:SALH1]
+Gewiss, Mr. Leone.
-[_A:LAWYER3]
-Arrgh! Ach, du lieber Gott! Du! Meine Güte, ich brauch 'ne neue Hose!
+[RUFJ_11:SALH1]
+Wir tun, was in unserer Macht steht, um Sie heraus zu bekommen,
-[LAW3_B:LAWYER3]
-Hey, diese Psychos aus dem Norden haben angerufen. Sie kommen bald hier runter.
+[RUFJ_12:SALH1]
+damit Sie sich bald wieder dem Gemeinwohl widmen können.
-[LAW3_C:LAWYER3]
-Also, wo ist das verdammte Geld?
+[RUFJ_13:SALH1]
+Natürlich.
-[LAW3_D:LAWYER3]
-Ganz ruhig. Soweit sind wir noch nicht.
+[RUFJ_14:SALH1]
+Und dann verklagen wir sie für diese Unverfrorenheit!
-[LAW3_E:LAWYER3]
-Ich hab wirklich gedacht, du erledigst das.
+[RUFJ_15:SALH1]
+Diese Arschlöcher, die Sindaccos, oder die Forelli-Schwanzlutscher - wer war's?
-[LAW3_F:LAWYER3]
-Und jetzt sagen diese Gauner, wir sollen ihnen einen Gefallen tun.
+[RUFJ_16:SALH1]
+Wer hat mich verpfiffen?
-[LAW3_G:LAWYER3]
-Du meinst, ICH soll ihnen einen Gefallen tun.
+[RUFJ_18:SALH1]
+Wir machen sie beide fertig.
-[LAW3_H:LAWYER3]
-Du sagst es. Sehe ich aus, als könnte ich Geschworene einschüchtern?
+[RUFJ_19:SALH1]
+Sie haben beide ordentlich Prügel für diese Unverfrorenheit verdient.
-[LAW3_I:LAWYER3]
-Ich kann nicht mal ein Kind einschüchtern. Ich hab's versucht.
+[RUFJ_22:SALH1]
+Danke. Toni, du bedeutest mir wirklich sehr viel, das weißt du.
-[LAW3_J:LAWYER3]
-Hör zu, wenn du kneifst, kriegt Forellis Cousin Georgio 5 Jahre wegen Betrugs.
+[RUFJ_23:SALH1]
+Kann sein, dass du Unterstützung brauchst.
-[LAW3_K:LAWYER3]
-Du musst diese Typen ausschalten.
+[RUFJ_24:SALH1]
+Nimm die Hoods, okay?
-[LAW3_L:LAWYER3]
-Verstehe. Den Geschworenen helfen 'umzudenken'. Kein Problem.
+[RUFJ_25:SALH1]
+Wie Sie meinen, Mr. Leone.
-[LAW3_M:LAWYER3]
-Nein, nein, nein! Das hab ich schon versucht. Das ist nicht gelaufen,
+[RUFJ_26:SALH1]
+Gut. Und jetzt raus hier... Lionel.
-[LAW3_N:LAWYER3]
-ZWING sie dazu, umzudenken.
+[RUFJ_20:SALH1]
+- Die Wichser. ~n~ - Es wird mir ein Vergnügen sein.
-[LAW3_1:LAWYER3]
-Georgio lässt grüßen.
+{=================================== MISSION TABLE SALH2 ===================================}
-[LAW3_2:LAWYER3]
-Denk dran, 'Schuldig' ist ein hässliches Wort.
+[SALH2AA:SALH2]
+~w~Hey, Sal! Ich bin's... Toni.
-[LAW3_3:LAWYER3]
-'Unschuldig', bis ich was anderes sage.
+[SALH2AB:SALH2]
+~w~Toni! Schön, deine Stimme zu hören, Junge.
-[LAW3_4:LAWYER3]
-Er ist nicht schuldig.
+[SALH2AC:SALH2]
+~w~Die Säcke lassen keinen Besuch zu mir!
-[LAW3_5:LAWYER3]
-Du kennst Georgio? Merk dir: Er ist nicht schuldig.
+[SALH2AD:SALH2]
+~w~Hör mal, es gibt 'nen Haufen Zeug zu tun.
-[LAW3_6:LAWYER3]
-Nicht schuldig. Verstanden...gut.
+[SALH2AE:SALH2]
+~w~Paulie Sindacco, zum Beispiel. Seine Familie ist erledigt in dieser Stadt.
-[LAW3_8:LAWYER3]
-~r~Du hast einen Geschworenen erledigt!
+[SALH2AF:SALH2]
+~w~Aber er denkt, er kann einfach abhauen, als ob er keine Verpflichtungen hätte.
-[LAW3_9:LAWYER3]
-~g~Schrotte das Auto des Geschworenen, damit er aussteigt!
+[SALH2AG:SALH2]
+~w~Wegen dem Drecksack sitz ich im Loch!
-[HELP40:LAWYER3]
-Du kannst Autos mit dem Hammer oder einer ähnlichen Waffe zertrümmern.
+[SALH2AH:SALH2]
+~w~Zieh den Hurensohn zur Rechenschaft.
-[HELP41:LAWYER3]
-Oder du kannst sie mit einem Fahrzeug rammen.
+[SALH2O1:SALH2]
+~w~Fang Paulie Sindacco am ~y~Generatorenhaus~w~ des Cochrane Dam ab.
-[LAW3_10:LAWYER3]
-~g~Eine Nahkampfwaffe kannst du im ~h~Eisenwarenladen~g~ kaufen.
+[SALH2F1:SALH2]
+~r~Er ist entkommen! Salvatore wird nicht begeistert sein!
-[LAW3_20:LAWYER3]
-~g~Schrotte das Auto des Geschworenen!
+[SALH2CA:SALH2]
+~w~Ihr Idioten! Das ist Toni Cipriani! Macht ihn fertig!
-[LAW3_21:LAWYER3]
-Das kann doch wohl nicht wahr sein!
+[SALH2BA:SALH2]
+~w~Hey, Toni! Warum schwimmst du nicht her und leckst mich am Arsch?
-[LAW3_22:LAWYER3]
-Unglaublich!
+[SALH2BB:SALH2]
+~w~Hey, hier bin ich, Arschloch!
-[LAW3_23:LAWYER3]
-Ok! Ok! Ich hab kapiert!
+[SALH2BI:SALH2]
+~w~Bestell Salvatore schöne Grüße. Ich schick ihm 'ne Postkarte!
-[LAW3_24:LAWYER3]
-~g~Dieser Hammer wäre nützlich.
+[SALH2BC:SALH2]
+~w~Und was machst du jetzt, Trottel?
-[LAW3_7:LAWYER3]
-~g~Schüchtere die 2 Geschworenen ein, aber erledige sie NICHT!
+[SALH2BE:SALH2]
+~w~Du bist ein toter Mann!
-[HELP23:LAWYER3]
-Folge dem ~h~Hammer-Symbol~w~ auf dem Radar, wenn du beim Eisenwarenladen Nahkampfwaffen kaufen willst.
+[SALH2BF:SALH2]
+~w~Du bist ein Nichts!
-[LAW3_16:LAWYER3]
-Dämlicher Florida-Idiot!
+[SALH2BG:SALH2]
+~w~Überraschung! Drecksack!
-[LAW3_17:LAWYER3]
-Aus dem Weg!
+[SALH2BH:SALH2]
+~w~Ladies and gentlemen, Paulie Sindacco has left the building!
-{=================================== MISSION TABLE LAWYER4 ===================================}
+[SALH2BD:SALH2]
+~w~Du hast keine Chance, mich zu kriegen, Arschgesicht!
-[LAW4_A:LAWYER4]
-Avery, es versteht sich von selbst... Tommy! Tommy! Fortschritte gemacht? Nein, erzähl's mir später.
+[SALH2O2:SALH2]
+~w~Schalte ~r~Paulie Sindacco~w~ aus. Lass ihn nicht entkommen!
-[LAW4_B:LAWYER4]
-Tommy, das ist Avery Carrington. Kennt ihr euch nicht von der Party?
+[SALH2O3:SALH2]
+Schnapp dir einen fahrbaren Untersatz und erledige ~r~Paulie~w~ vom Ufer aus.
-[LAW4_C:LAWYER4]
-Nicht persönlich.
+{=================================== MISSION TABLE SALH3 ===================================}
-[LAW4_D:LAWYER4]
-Tagchen.
+[SALH3_1:SALH3]
+~w~Sal? Wie geht's?
-[LAW4_E:LAWYER4]
-Avery hat einen Vorschlag für uns.
+[SALH3_2:SALH3]
+~w~Scheiß bene! Einfach super!
-[LAW4_F:LAWYER4]
-Haben wir nicht was besseres zu tun?
+[SALH3_3:SALH3]
+~w~Erstens: Der neue Bürgermeister hat gedeichselt, dass ich nicht gegen Kaution rauskomme.
-[LAW4_G:LAWYER4]
-Ich versuch hier, unseren Hals zu retten. Also würdest du mich bitte ausreden lassen?
+[SALH3_4:SALH3]
+~w~Zweitens: Wir stecken immer noch im Krieg mit den verfluchten Triaden und Diablos.
-[LAW4_H:LAWYER4]
-Ich hab Angst. Aber wenn ich schon Ende der Woche sterbe, möchte ich wenigstens nicht arm sterben.
+[SALH3_5:SALH3]
+~w~Drittens: Ich hab läuten hören, dass die geschissenen Yakuza die Stadt übernehmen wollen.
-[LAW4_I:LAWYER4]
-Jetzt beruhigt euch, ihr beiden.
+[SALH3_6:SALH3]
+~w~Ansonsten ist alles in bester Ordnung!
-[LAW4_J:LAWYER4]
-Junge, wenn du mir hilfst, sorge ich dafür, dass jeder, der dir Ärger macht, unter die Erde kommt.
+[SALH3_7:SALH3]
+~w~Jahrelang hatte der Mob die Herrschaft und jetzt haben wir alles sauber verschissen!
-[LAW4_K:LAWYER4]
-Ok, was kann ich für Sie tun?
+[SALH38:SALH3]
+~w~Boss, ich kann das alles richten.
-[LAW4_L:LAWYER4]
-Eine Spedition hat ihr Lager auf einem Top-Grundstück - und will nicht verkaufen.
+[SALH39:SALH3]
+~w~Die Yakuza haben ein Riesenwaffenarsenal in Aspatria.
-[LAW4_M:LAWYER4]
-Die sitzen da drauf wie die Ratten in ihren Löchern. Also müssen wir dieses Ungeziefer ausräuchern.
+[SALH310:SALH3]
+~w~Die hält jetzt keiner mehr auf!
-[LAW4_N:LAWYER4]
-Fahr hin und stich ein wenig ins Wespennest.
+[SALH311:SALH3]
+~w~Das werden wir sehen.
-[LAW4_O:LAWYER4]
-Das wird die Security beschäftigen. Dann schleichst du dich rein und machst den Laden platt.
+[SALH3_A:SALH3]
+~w~Fahr zu dem ~y~Yakuza-Gelände.
-[LAW4_P:LAWYER4]
-Und du könntest dich bei Rafael's neu einkleiden. Kann 'ne Weile dauern, aber mach das ruhig mal.
+[SALH3C1:SALH3]
+~w~Finde einen Weg auf das ~y~Gelände.
-[LAW4_Q:LAWYER4]
-Das gibt ein Fest.
+[SALH3C2:SALH3]
+~w~Heilige Scheiße! Das gibt's doch nicht!
-[LAW4_R:LAWYER4]
-Wenn alles läuft wie geplant, komm mal zu mir ins Büro...
+[SALH3C3:SALH3]
+~w~Zerstöre den ~r~Panzer!
-[LAW4_1:LAWYER4]
-Bitte, geht auseinander! Die Geschäftsleitung wird sich aller Probleme annehmen!
+[SALH3C4:SALH3]
+~w~Verdammt, was...?!
-[LAW4_2:LAWYER4]
-Bitte, geht auseinander! Geht wieder nach Hause!
+[SALH3C5:SALH3]
+~w~Macht ihn fertig!
-[LAW4_3:LAWYER4]
-Bitte, geht auseinander! Das ist nicht akzeptabel!
+[SALH3C6:SALH3]
+~w~Der ~r~Panzer ~w~ist gut geschützt. Normale Waffen können gegen dieses schwere Stück Material nichts ausrichten!
-[LAW4_4:LAWYER4]
-Bitte, geht auseinander! Ihr landet alle auf der Straße!
+[SALH3G1:SALH3]
+~w~Hey, Freundchen, da drin ist nichts für dich.
-[LAW4_5:LAWYER4]
-Die Knüppel raus, Jungs! Diesen Kommis zeigten wir's!
+[SALH3G2:SALH3]
+~w~Zugang nur für Yakuza, wenn ich das recht sehe!
-[LAW4_13:LAWYER4]
-Fange mit mind. 4 Arbeitern Streit an, um einen Aufruhr zu starten.
+[SALH3G3:SALH3]
+~w~Mach dich vom Acker!
-[LAW4_14:LAWYER4]
-~g~Zerstöre die Transporter auf dem Gelände!
+[SALH3_B:SALH3]
+~w~Das Yakuza-Auto hat sie getäuscht!
-[HELP38:LAWYER4]
-Wenn du jemanden ausschaltest, der eine Waffe trägt, lässt er sie fallen.
+[SALH3_C:SALH3]
+~w~Fahr auf das ~y~Gelände~w~ und sieh dich um.
-[HELP39:LAWYER4]
-Du kannst explosive Fässer anvisieren und abschießen, aber bleib auf Distanz.
+{=================================== MISSION TABLE SALH4 ===================================}
-{=================================== MISSION TABLE MIAMI_1 ===================================}
+[SALH4_1:SALH4]
+~w~Sal? Bist du da?
-[T4X4_1A:MIAMI_1]
-~g~Du hast ~1~ Sekunden, um ~y~24~g~ Checkpoints abzufahren. ~g~Die ~y~REIHENFOLGE IST BELIEBIG.
+[SALH4_2:SALH4]
+~w~Anthony! Ich komme hier raus!
-[T4X4_1B:MIAMI_1]
-~y~PASSIERE~g~ den ersten Checkpoint, dann läuft die ~r~STOPPUHR.
+[SALH42A:SALH4]
+~w~Heute ist meine Vorverhandlung!
-[T4X4_1C:MIAMI_1]
-~1~ von 24!
+[SALH4_3:SALH4]
+~w~Super!
-[GETBIK1:MIAMI_1]
-Du hast ~1~ Sekunden, um auf eine PCJ 600 zu steigen!
+[SALH44C:SALH4]
+~w~Ja, Toni. Wenn du meinst.
-[GETBIK3:MIAMI_1]
-~r~Du brauchst eine PCJ 600, um diese Mission durchzuführen!
+[SALH44E:SALH4]
+~w~Hey, da kommen die Wachen... Wir sehen uns am Eingang.
-{=================================== MISSION TABLE MM ===================================}
+[SALH4_5:SALH4]
+~w~Beschaff dir einen Streifenwagen!
-[BLOD_04:MM]
-ZUSTAND AUTO:
+[SALH45A:SALH4]
+~w~Du brauchst einen Streifenwagen, sonst wird der Konvoi misstrauisch!
-[BLOD_05:MM]
-~g~ZIELZEIT: ~1~ Minute
+[SALH4_6:SALH4]
+~w~Bring dich vor dem ~y~Polizeirevier~w~ in Stellung.
-[BLOD_06:MM]
-~g~ZIELZEIT: ~1~ Minuten
+[SALH4_7:SALH4]
+~w~Heilige Scheiße!
-[BLOD_07:MM]
-NEUE Bestzeit: ~1~ Sekunden
+[SALH4_8:SALH4]
+~w~Schütze den ~b~Transporter~w~ und sorg dafür, dass er heil ankommt!
-[BLOD_08:MM]
-Zerstörte Autos: ~1~
+[SALH4_9:SALH4]
+~w~Entferne dich nicht zu weit von dem ~b~Transporter!
-[BLOD_09:MM]
-$~1~
+[SALH410:SALH4]
+~w~Gleich verlierst du den ~b~Transporter!
-[BLOD_10:MM]
-SIEGER!!
+[SALH411:SALH4]
+~r~Du hast den Transporter verloren! Sal wurde hingerichtet!
-[BLOD_01:MM]
-Fahr durch die Checkpoints, um deine Gesamtzeit zu verlängern.
+[SALH412:SALH4]
+~r~Der Transporter wurde zerstört!
-[BLOD_02:MM]
-Wenn die Gesamtzeit abgelaufen ist, hast du versagt.
+[SALH413:SALH4]
+~w~Reiz die Bullen nicht - sonst kommt Sal nicht gegen Kaution raus!
-[BLOD_03:MM]
-Um zu gewinnen, muss deine Gesamtzeit die Zielzeit überschreiten!
+[SALH416:SALH4]
+~w~Gib dem ~b~Konvoi~w~ bis zu seinem Ziel Geleitschutz.
-{=================================== MISSION TABLE OVALRIG ===================================}
+[SALH417:SALH4]
+~r~Du hast es vermasselt! Die Cops haben die Vorverhandlung abgesagt!
-[HOTR_01:OVALRIG]
-~g~Das Rennen geht über 12 Runden. Nur die ersten drei Plätze qualifizeren für einen Gewinn.
+[SALH420:SALH4]
+~r~Sal wurde getötet!
-[HOTR_02:OVALRIG]
-~g~Wird dein Auto zerstört, wirst du disqualifiziert.
+[SALH421:SALH4]
+~r~Du hast den Transporter verloren!
-[HOTR_03:OVALRIG]
-~g~Wird dein Auto beschädigt, kannst du es an der Box reparieren lassen.
+[SALH422:SALH4]
+~w~Häng die Bullen ab, sonst lenkst du zu viel Aufmerksamkeit auf den Konvoi!
-[HOTR_04:OVALRIG]
-~g~Da geht es aus dem Stadion raus.
+[SALH424:SALH4]
+~w~Zerstöre die ~y~Straßensperre!
-[HOTR_05:OVALRIG]
-Zustand Auto:
+[SALH415:SALH4]
+~w~Schön, wieder ein freier Mann zu sein.
-[HOTR_06:OVALRIG]
-Runden:
+[SALH418:SALH4]
+~w~Aber hör zu, ich fahr nach Hause und zieh mir diese stinkenden Lumpen aus, okay?
-[HOTR_07:OVALRIG]
-Neue Bestzeit: ~1~:0~1~
+[SALH419:SALH4]
+~w~Wir treffen uns bei mir.
-[HOTR_08:OVALRIG]
-Zeit: ~1~:~1~
+[SALH414:SALH4]
+~w~Illegale Straßensperre in dieser Gegend gemeldet...
-[HOTR_10:OVALRIG]
-Absolvierte Zeit:
+[SALH44A:SALH4]
+~w~Solange ich hier drin sitze, wer soll sie aufhalten?
-[HOTR_09:OVALRIG]
-Position:
+[SALH4_4:SALH4]
+~w~Ja, aber ich hab den Verdacht, die Sizilianer wollen nicht, dass ich im Gericht ankomme.
-[HOTR_12:OVALRIG]
-~r~Dein Fahrzeug ist zerstört worden!
+[SALH44B:SALH4]
+~w~Hey, da müssen sie erst mal mit mir fertig werden, Sal.
-[HOTR_13:OVALRIG]
-~r~Du hast das Rennen nicht gewonnen!
+[SALH44D:SALH4]
+~w~Sorg einfach dafür, dass ich zu meinem Gerichtstermin komme!
-[HOTR_14:OVALRIG]
-~r~Du bist disqualifiziert worden!
+{=================================== MISSION TABLE SALH5 ===================================}
-[HOTR_15:OVALRIG]
-Zeit: ~1~:~1~
+[SALH51A:SALH5]
+~w~Gib Gas, Toni!
-[HOTR_16:OVALRIG]
-Zeit: ~1~:0~1~
+[SALH51B:SALH5]
+~w~Wenn du mich fragst, haben es die Sizilianer auf den Bürgermeister abgesehen.
-[HOTR_17:OVALRIG]
-Bestzeit: ~1~:~1~
+[SALH51C:SALH5]
+~w~Wir müssen ihnen zuvorkommen.
-[HOTR_18:OVALRIG]
-Bestzeit: ~1~:0~1~
+[SALH511:SALH5]
+~w~Das sieht nicht gut aus.
-[HOTR_19:OVALRIG]
-Bestzeit: Nicht verfügbar
+[SALH554:SALH5]
+~w~Gib Gas, Toni!
-[HOTR_20:OVALRIG]
-Neue Bestzeit: ~1~:~1~
+[SALH512:SALH5]
+~w~Du hast ~b~Sal~w~ zurückgelassen - hol ihn!
-[HOTR_21:OVALRIG]
-Neue Bestzeit: ~1~:0~1~
+[SALH513:SALH5]
+~w~Verdammt! Sie sind schon da!
-[HOTR_22:OVALRIG]
-Beste Platzierung: Nicht verfügbar
+[SALH560:SALH5]
+~w~Mach sie fertig, Toni!
-[HOTR_23:OVALRIG]
-Beste Platzierung: 1.
+[SALH561:SALH5]
+~w~Ich schnapp mir den Bürgermeister!
-[HOTR_24:OVALRIG]
-Beste Platzierung: 2.
+[SALH514:SALH5]
+~w~Die elenden Bastarde haben ihn schon!
-[HOTR_25:OVALRIG]
-Beste Platzierung: 3.
+[SALH555:SALH5]
+~w~Komm, Toni! Hier lang!
-[HOTR_26:OVALRIG]
-Beste Platzierung: ~1~.
+[SALH515:SALH5]
+~w~Da sind sie!
-[HOTR_27:OVALRIG]
-Beste Rundenzeit: ~1~.~1~ Sekunden
+[SALH517:SALH5]
+~w~Wo sind die Bastarde hergekommen?
-[HOTR_28:OVALRIG]
-Beste Rundenzeit: ~1~.0~1~ Sekunden
+[SALH556:SALH5]
+~w~Hinter uns, Toni!
-[HOTR_29:OVALRIG]
-$~1~
+[SALH562:SALH5]
+~w~Toni, da vorn!
-[HOTR_30:OVALRIG]
-1. PLATZ
+[SALH519:SALH5]
+~w~Toni! Schalte den Hubschrauber aus!
-[HOTR_31:OVALRIG]
-2. PLATZ
+[SALH522:SALH5]
+~w~Die denken, die können sich beim Leuchtturm verstecken!
-[HOTR_32:OVALRIG]
-3. PLATZ
+[SALH557:SALH5]
+~w~Mach die Bastarde fertig!
-[HOTR_33:OVALRIG]
-Beste Rundenzeit: Nicht verfügbar
+[SALH558:SALH5]
+~w~Klasse geschossen, Toni!
-[HOTR_11:OVALRIG]
-Neue beste Rundenzeit: ~1~.~1~ Sekunden
+[SALH559:SALH5]
+~w~Bringen wir die Sache zu Ende.
-[HOTR_34:OVALRIG]
-Neue beste Rundenzeit: ~1~.0~1~ Sekunden
+[SALH526:SALH5]
+~w~Ich fahre! Du hältst sie uns vom Leib!
-{=================================== MISSION TABLE PHIL1 ===================================}
+[SALH527:SALH5]
+~w~Okay, Toni... jetzt gilt's.
-[PHI1_HP:PHIL1]
-Wenn du Granaten mit Fernzünder benutzt, wirf die Granate, dann löse die Explosion zu einem beliebigen Zeitpunkt aus.
+[SALH528:SALH5]
+~w~Wie viele von den Bastarden sind auf diesem Felsen?
-[PHIL1_A:PHIL1]
-Phil?
+[SALH553:SALH5]
+~w~Kaum erschießt du einen, schon beißt dir der nächste in den Arsch!
-[PHIL1_B:PHIL1]
-SCHNELL WEG!
+[SALH523:SALH5]
+~r~Du hast Salvatore der Mordlust der Sizilianer ausgeliefert!
-[PHIL1_C:PHIL1]
-Schnell weg!
+[SALH524:SALH5]
+~r~Salvatore wurde getötet!
-[PHIL1_E:PHIL1]
-Scheiße, Phil, das Zeug trinkst du?
+[SALH552:SALH5]
+~r~Der Bürgermeister wurde getötet!
-[PHIL1_F:PHIL1]
-Hey, du musst es nicht trinken.
+[SALH573:SALH5]
+~r~Du hast dein Boot zerstört! Du hast sie verloren!
-[PHIL1_G:PHIL1]
-Das haut schon rein, wenn du nur dran riechst.
+[SALH516:SALH5]
+<NOT USED>~w~Take out the guards and then let's get after them in that boat!
-[PHIL1_H:PHIL1]
-Hör mal, Phil, du sagtest, du könntest mir Artillerie besorgen...
+[SALH518:SALH5]
+<NOT USED>~w~Another ~r~boat~w~ incoming...
-[PHIL1_I:PHIL1]
-Klar.
+[SALH525:SALH5]
+<NOT USED>~w~Ha! They've left a rocket launcher on this thing!
-[PHIL1_J:PHIL1]
-In letzter Zeit macht mir ein mexikanischer Waffenschieber Konkurrenz.
+[SALH520:SALH5]
+<NOT USED>~y~I'll move closer to shore so we're more protected... Take it down!
-[PHIL1_K:PHIL1]
-Der müsste jetzt gerade auf seiner wöchentlichen Runde sein.
+[SALH521:SALH5]
+<NOT USED>~w~Good work! Let's move out!
-[PHIL1_L:PHIL1]
-Ramm mit deiner Karre die Ware von seinem Wagen runter, bevor er wieder abtaucht.
+[SALH53A:SALH5]
+~w~Torini... typisch.
-[PHIL1_M:PHIL1]
-Tust mir einen großen Gefallen damit.
+[SALH53B:SALH5]
+~w~Lass ihn los!
-[PHIL1_N:PHIL1]
-Und dann mach ihn fertig.
+[SALH53C:SALH5]
+~w~Der Bürgermeister gehört mir!
-[PHI1_01:PHIL1]
-~g~Ramme die Waffen von der Ladefläche des Waffenschiebers.
+[SALH53D:SALH5]
+~w~DIESE STADT gehört mir!
-[PHI1_02:PHIL1]
-~g~Der Waffenhändler hat die Ladung verloren. Schlag die Kiste kaputt und nimm die Waffe.
+[SALH53E:SALH5]
+~w~Salvatore...
-[PHI1_03:PHIL1]
-~g~Sie haben anscheinend Verstärkung gerufen.
+[SALH53F:SALH5]
+~w~Sizilien wollte nie questo schifo di citta.
-[PHI1_04:PHIL1]
-~g~Jetzt erledige die restlichen Waffenschieber.
+[SALH53G:SALH5]
+~w~Aber als die Zahlungen ausblieben, was sollten wir machen...?
-[PHI1_06:PHIL1]
-Pass doch auf, wo du hinfährst!
+[SALH53H:SALH5]
+~w~Das war nichts Persönliches.
-[PHI1_07:PHIL1]
-Hey!
+[SALH53I:SALH5]
+~w~Nichts Persönliches?
-[PHIL1_O:PHIL1]
-Huuuuhuuu!
+[SALH53J:SALH5]
+~w~Nach dem, was ihr mir angetan habt!
-[PHIL1_D:PHIL1]
-Komm nie mit 'ner offenen Flamme in die Nähe von Phil Cassidys TNT-Whiskey!
+[SALH53K:SALH5]
+~w~Ich reiß dir das scheiß Herz aus dem Leib!
-{=================================== MISSION TABLE PHIL2 ===================================}
+[SALH5TD:SALH5]
+~w~Schieß ~r~Massimos Helikopter~w~ ab!
-[PHIL2_A:PHIL2]
-Hey, Phil, wie geht's?
+[SALH5MO:SALH5]
+~r~Massimo~w~ verschwindet!
-[PHIL2_B:PHIL2]
-Hey, Tommy. Alles klar? Lange nicht gesehen...
+[SALH5GO:SALH5]
+~r~Massimo ist entkommen!
-[PHIL2_C:PHIL2]
-Du solltest wirklich die Finger von dem TNT-Whiskey lassen.
+[SALH571:SALH5]
+~w~Du musst zum ~y~Pier.
-[PHIL2_D:PHIL2]
-Das Zeug riecht ja wie Terpentin. Mir brennen schon die Augen.
+[SALH570:SALH5]
+~w~Erledige diese ~r~sizilianischen Mafiosi!
-[PHIL2_E:PHIL2]
-Lass stecken, Tommy.
+[SALH572:SALH5]
+~w~Erledige diesen ~r~sizilianischen Gangster!
-[PHIL2_F:PHIL2]
-Komm hier rüber, ich will dir nämlich was zeigen.
+[SALH510:SALH5]
+~w~Fahr zum ~y~Rathaus~w~. Und Vorsicht vor sizilianischen Gangstern!
-[PHIL2_G:PHIL2]
-Wahnsinn! Das rieche ich ja schon von hier. Mir ist schon ganz schwindlig.
+[SICI_01:SALH5]
+Nein, ich melde mich später...
-[PHIL2_H:PHIL2]
-Kümmer dich nicht um den Geruch. Tommy, sieh dir das an.
+[SICI_04:SALH5]
+Hey, wir sind beide wieder da!
-[PHIL2_I:PHIL2]
-Billige Schrottbatterien. Da auf der Bank sind noch welche.
+[SICI_05:SALH5]
+Wir haben's geschafft, hm?
-[PHIL2_J:PHIL2]
-Tata!
+[SICI_06:SALH5]
+Stimmt.
-[PHIL2_K:PHIL2]
-Oh, verflucht!
+[SICI_07:SALH5]
+Wir haben mit den Forellis aufgeräumt.
-[PHI2_01:PHIL2]
-~g~Schnell, bring Phil ins Krankenhaus.
+[SICI_08:SALH5]
+Die Sindaccos haben wir in die Wüste geschickt.
-[PHI2_03:PHIL2]
-~r~Phil Cassidy ist tot!!! Wer soll Liberty nun mit Waffen versorgen?
+[SICI_09:SALH5]
+Jetzt rufen die Sizilianer an, dass sie Frieden wollen.
-[PHI2_05:PHIL2]
-Nicht ins Krankenhaus, Mann! Zu viele Cops und Vietcong!
+[SICI_10:SALH5]
+Den wollen wir alle! Aber meinen, nicht deren scheiß Frieden.
-[PHI2_06:PHIL2]
-Ich kenn 'nen Ex-Army-Arzt, der schuldet mir einen Gefallen und 'nen Rasenmäher.
+[SICI_11:SALH5]
+Jetzt bin ich am Ruder.
-[PHI2_07:PHIL2]
-Er hat 'ne Praxis unten in Little Havana. Uh, guck mal, ein Riesenfisch.
+[SICI_12:SALH5]
+Und kein Trottel aus der alten Heimat macht mir Vorschriften.
-[PHI2_08:PHIL2]
-Achtung! Da in den Bäumen - Vietcong!
+[SICI_13:SALH5]
+Ich hab ihnen gesagt, sie sollen sich verpissen.
-[PHI2_09:PHIL2]
-Spinn ich, oder ist die Straße aus Gummi?
+[SICI_14:SALH5]
+Was? War das klug?
-[PHI2_10:PHIL2]
-Broken Spoon an Mother Hen, bitte kommen!
+[SICI_15:SALH5]
+Hey, ich bin jetzt der Boss. Ich!
-[PHI2_11:PHIL2]
-Spooney Wooney Woo Woo Woooo!
+[SICI_16:SALH5]
+Fahren wir zum Bürgermeister, damit er die Anklage gegen mich zurückzieht.
-[PHI2_12:PHIL2]
-Er kommt mich holen, Jungchen!
+[FIN1_01:SALH5]
+Hey, Bürgermeister!
-[PHI2_13:PHIL2]
-Schwarze Schwingen breiten sich über mir aus...
+[FIN1_03:SALH5]
+Ja, danke.
-[PHI2_14:PHIL2]
-Es ist wunderschön, Mann. Wunderschön... mir ist nur so kalt...
+[FIN1_04:SALH5]
+Und das heißt...
-[PHI2_15:PHIL2]
-Roger! Wir haben einen betrunkenen Fahrer.
+[FIN1_05:SALH5]
+Äh, dass die Stadt Ihnen dankbar ist?
-[PHI2_04:PHIL2]
-Phils Gesundheitszustand:
+[FIN1_06:SALH5]
+Noch mal von vorn.
-[PHI_AS1:PHIL2]
-PHIL-MISSIONEN ERFÜLLT
+[FIN1_07:SALH5]
+Dass Sie für mich arbeiten, klar?
-[PHI_AS2:PHIL2]
-~g~Bei Phil gibt es neue Waffen zu kaufen.
+[FIN1_08:SALH5]
+Ach ja, dass ich für Sie arbeite.
-{=================================== MISSION TABLE PIZZA ===================================}
+[FIN1_09:SALH5]
+Gut. Rufen Sie uns nicht an, wir rufen Sie an.
-[PIZ1_01:PIZZA]
-~g~Liefere diese Pizzas aus. Du musst den Kunden die Pizzas zuwerfen, während du an ihnen vorbeifährst.
+[FIN1_10:SALH5]
+Raus mit dir, du Penner.
-[PIZ1_02:PIZZA]
-~g~Du hast alle Pizzas zugestellt. Fahr zurück und hole noch mehr.
+[FIN1_11:SALH5]
+Danke, Mr. Leone.
-[PIZ1_05:PIZZA]
-~g~Du hast 5 Minuten, um die Pizzas zu liefern, sonst rufen die Kunden einen anderen Pizza-Service an.
+[FIN1_12:SALH5]
+Toni, es ist geschafft. Wir zwei haben jetzt das Sagen.
-[PIZ1_07:PIZZA]
-~r~Du hast den Kunden erledigt! Du bist gefeuert.
+[FIN1_13:SALH5]
+Wir sind ein Team, hm?
-[PIZ1_08:PIZZA]
-~r~Die Zeit ist um. Du bist gefeuert.
+[FIN1_14:SALH5]
+Du musst nur noch eine letzte Kleinigkeit für mich tun.
-[PIZ1_09:PIZZA]
-~r~Du hast dein Motorrad geschrottet! Du bist gefeuert.
+[FIN1_15:SALH5]
+Ich hab ein paar Unannehmlichkeiten am Hals...
-[PIZ1_11:PIZZA]
-Hey! Steig wieder aufs Motorrad!
+[FIN2_01:SALH5]
+Hey, Onkel! Wie geht's?
-[PIZ1_12:PIZZA]
-Verbleibende Pizzas:
+[FIN2_02:SALH5]
+Siehst gut aus.
-[PIZ1_06:PIZZA]
-Drücke die ~h~ R3-Taste~w~, wenn du auf einem Bike sitzt und die Mission abbrechen willst.
+[FIN2_03:SALH5]
+Ah, Salvatore. Wir wollten nur Klarheit schaffen.
-[PIZ1_13:PIZZA]
-Liefere sie schön heiß ab.
+[FIN2_04:SALH5]
+Ja, Onkel. Das finde ich gut.
-[PIZ1_14:PIZZA]
-Kumpel, Pizzas für dich.
+[FIN2_07:SALH5]
+Gut, sehr gut.
-[PIZ1_15:PIZZA]
-Hey, na los, Mister, liefere sie schnell aus.
+[FIN2_08:SALH5]
+Verschlagener alter Sack.
-[PIZ1_16:PIZZA]
-Worauf wartest du, Mister? Du sollst Pizzas liefern.
+[FIN2_09:SALH5]
+Ich trau dem Scheißkerl nicht über den Weg.
-[PIZ1_17:PIZZA]
-Ich weiß, du wolltest kein Pizza-Lieferant sein. Na ja, mir egal.
+[FIN2_23:SALH5]
+Jedem lacht mal das Glück.
-[PIZ1_18:PIZZA]
-Liefere die aus.
+[FIN2_10:SALH5]
+Aber wir haben's geschafft.
-[PIZ1_19:PIZZA]
-Die müssen ausgeliefert werden.
+[FIN2_11:SALH5]
+Ja, wir haben aufgeräumt. Hast echt gute Arbeit geleistet, Toni.
-[PIZ1_20:PIZZA]
-Na los, Mister, liefere die Dinger aus, oder du fliegst.
+[FIN2_12:SALH5]
+Ich wusste immer, dass du was taugst. Hast mir oft die Haut gerettet.
-[PIZ1_21:PIZZA]
-Die Leute warten, Kumpel.
+[FIN2_13:SALH5]
+Ich weiß solche Treue zu schätzen.
-[PIZ1_22:PIZZA]
-Wartest du auf bessere Zeiten? Die müssen ausgeliefert werden!
+[FIN2_14:SALH5]
+Danke.
-[PIZ1_23:PIZZA]
-Liefer den verdammten Fraß aus, Mister.
+[FIN2_15:SALH5]
+Ein guter Arbeiter, respektvoll. Das mag ich.
-[PIZ1_24:PIZZA]
-Die müssen ausgeliefert werden, Kumpel.
+[FIN2_19:SALH5]
+Ist Freundschaft nicht unbezahlbar?
-[PIZ1_25:PIZZA]
-Mann, kannst du die übernehmen?
+[FIN2_20:SALH5]
+Eine wie die zwischen uns beiden?
-[PIZ1_26:PIZZA]
-Mister, liefere die Dinger schnell ab, hopp, Amigo.
+[FIN2_21:SALH5]
+Schäm dich! Komm her.
-[PIZ1_27:PIZZA]
-Komm schon, wir sind unter Druck, liefere die Dinger aus.
+[FIN2_22:SALH5]
+Bist ein guter Junge, aber schäm dich.
-[PIZ1_28:PIZZA]
-Du schon wieder? Liefere die hier schnell aus, Kumpel.
+[SICI_02:SALH5]
+- Hey, Toni! ~n~ - Sal! Du bist wieder da, wo du hingehörst.
-[PIZ1_29:PIZZA]
-Keine Trödelei diesmal, Kumpel.
+[FIN2_05:SALH5]
+- Dann hast du mit der alten Heimat Frieden geschlossen? ~n~ - Klar, ich und alle meine Leute.
-[PIZ1_30:PIZZA]
-Na los, du fauler Hund, liefere den Fraß rechtzeitig aus.
+[FIN2_16:SALH5]
+- Also kriegst du die halbe Million, wie versprochen. ~n~ - 'ne halbe? Hast du nicht 'ein paar' gesagt?
-[PIZ1_31:PIZZA]
-Du wirst nie befördert, wenn du diesmal nicht schneller machst.
+[FIN2_18:SALH5]
+Ich habe eine Million gesagt! Aber was soll's?
-[PIZ1_32:PIZZA]
-~r~Ist dir die Pizza zu heiß?
+[FIN1_02:SALH5]
+Wir haben Sie eben vor diesem Haufen irrer Sizilianer gerettet.
-[PIZ1_33:PIZZA]
-~g~Kehre zum Restaurant zurück, um weitere Aufträge zu bekommen.
+{=================================== MISSION TABLE DONH1 ===================================}
-[PIZ1_34:PIZZA]
-~g~Pizza geliefert, hier ist dein Geld.
+[DONH1JA:DONH1]
+~w~Toni, mein Ex-Mentor Avery Carrington trifft heute im Flieger ein.
-[PIZ_WON:PIZZA]
-Pizza-Mission abgeschlossen. Deine max. Gesundheit erhöht sich auf 150
+[DONH1JB:DONH1]
+~w~Mir ist zu Ohren gekommen, dass er für die Panlantic Corporation arbeitet.
-{=================================== MISSION TABLE PORN1 ===================================}
+[DONH1JC:DONH1]
+~w~Die tun alles, um an eine 1-A-Immobilie ranzukommen.
-[POR1_15:PORN1]
-Hey, Tommy, kommst du auf eine Aufwärmrunde mit rein!?
+[DONH1JD:DONH1]
+~w~Wir müssen seine Grunderwerbspläne in die Finger kriegen.
-[POR1_14:PORN1]
-Du bist engagiert!
+[DONH1JE:DONH1]
+~w~Häng dich an ihn dran, Toni!
-[POR1_A:PORN1]
-Action!
+[DONH1CA:DONH1]
+~w~Äh, Toni, wie wär's mit einem Fahrzeug?
-[POR1_B:PORN1]
-Wow! Der ist aber groß!
+[DONH1DA:DONH1]
+~w~Zum Flughafen, Toni.
-[POR1_C:PORN1]
-30cm, das ist Vorschrift, Baby.
+[DONH1DB:DONH1]
+~w~Jede Minute ist kostbar.
-[POR1_D:PORN1]
-SCHNITT! Wer ist dieser Idiot? Du da! Was machst du in meinem Studio? Was willst du?
+[DONH1EA:DONH1]
+~w~Für diesen Einfall muss ich mich selbst loben.
-[POR1_E:PORN1]
-Was soll das alles hier?
+[DONH1EB:DONH1]
+~w~Ich übertreffe mich mal wieder.
-[POR1_F:PORN1]
-Aliens? Angelruten?
+[DONH1EC:DONH1]
+~w~Ich werde damit ein Vermögen machen.
-[POR1_G:PORN1]
-Wer hat jemals einen so großen Hai gesehen?
+[DONH1ED:DONH1]
+~w~Jawohl, ein Vermögen.
-[POR1_H:PORN1]
-Das muss alles raus hier.
+[DONH1EE:DONH1]
+~w~Selbst Avery wäre stolz.
-[POR1_I:PORN1]
-Wieso bist du in diese Branche gegangen, du Idiot?
+[DONH1GA:DONH1]
+~w~Da ist er!
-[POR1_J:PORN1]
-Hah?
+[DONH1GB:DONH1]
+~w~Leg ihn um, Toni!
-[POR1_K:PORN1]
-Wegen der Pussys, deswegen. Was ist das??
+[DONH1GC:DONH1]
+~w~Ich brauche die Pläne!
-[POR1_L:PORN1]
-Das ist meine Kunst- SICHERHEITSDIENST!
+[DONH1HA:DONH1]
+~w~Bitte, Toni. Er entwischt!
-[POR1_M:PORN1]
-Hör zu, du aufgeblasener Penner, du gehörst jetzt mir. Mir gehört das alles hier.
+[DONH1IA:DONH1]
+~w~Kapitale Leistung, Toni! Wortwörtlich!
-[POR1_N:PORN1]
-Wir krempeln den Laden hier um.
+[DONH1IB:DONH1]
+~w~Los, begeben wir uns damit in die Sicherheit meines, äh, Refugiums.
-[POR1_O:PORN1]
-Ich mache dich reich.
+[DONH1O0:DONH1]
+~w~Fahr Donald Love zum ~y~Flughafen.
-[POR1_P:PORN1]
-Äh, du...du bist Tommy Vercetti? Aber ich dachte, du wärst...
+[DONH1O1:DONH1]
+~w~Beseitige ~r~Avery Carrington~w~ und klau die Pläne!
-[POR1_Q:PORN1]
-Ganz recht.
+[DONH1O2:DONH1]
+~r~Avery~w~ haut ab! Halte ihn auf!
-[POR1_R:PORN1]
-Wir ändern hier ein paar Dinge und dann machen wir richtig Kohle.
+[DONH1O3:DONH1]
+~r~Avery~w~ nimmt ein anderes Fahrzeug. Lass ihn nicht entkommen!
-[POR1_S:PORN1]
-Hast du dir schon mal überlegt...
+[DONH1O4:DONH1]
+~r~Avery~w~ haut ab! Schnapp ihn dir!
-[POR1_T:PORN1]
-Aber zuerst brauchen wir mal ein paar hübsche Mädels hier.
+[DONH1O5:DONH1]
+~w~Hol ~b~Donald Love~w~ ab.
-[POR1_U:PORN1]
-Ja, Girls sind ok, aber du...wow!
+[DONH1O6:DONH1]
+~w~Gute Arbeit! Nimm die ~g~Pläne~w~ auf.
-[POR1_02:PORN1]
-~g~Schalte Candys Agent aus, dann komm wieder und hole Candy.
+[DONH1O7:DONH1]
+~w~Bring Donald und die Pläne zurück zur ~y~Absteige.
-[POR1_04:PORN1]
-Hey, Candy. Ich suche Filmtalente. Interessiert?
+[DONH1O8:DONH1]
+~w~Du hast die ~g~Pläne~w~ verloren! Kehr um und hol sie.
-[POR1_05:PORN1]
-Klar! Aber da musst du mit meinem Agenten reden.
+[DONH1OA:DONH1]
+~w~Sie sind hinter dir her! ~r~Avery~w~ haut ab! Leg ihn um!
-[POR1_06:PORN1]
-Was zum Teufel soll das?
+[DONH1OB:DONH1]
+~w~Du brauchst ein Fahrzeug.
-[POR1_07:PORN1]
-Du hättest heute zu Hause bleiben sollen!
+[DONH1OC:DONH1]
+~w~Verliere ~b~Donald~w~ nicht!
-[POR1_7B:PORN1]
-Was sagt man zu so 'nem Arschloch?
+[DONH1OD:DONH1]
+~w~Vorsicht! Die Pläne sind futsch, wenn ~r~Averys Auto~w~ zerstört wird, solang er drin sitzt!
-[POR1_08:PORN1]
-Hey, Mercedes!
+[DONH1OE:DONH1]
+~r~Avery Carrington~w~ entkommt. Los, hinterher!
-[POR1_09:PORN1]
-Hi, Tommy. Na, ein bisschen feiern?
+[DONH1F0:DONH1]
+~r~Die Pläne wurden vernichtet!
-[POR1_10:PORN1]
-Jetzt nicht, Süße. Bist du an Filmaufnahmen interessiert?
+[DONH1F1:DONH1]
+~r~Avery Carrington ist entkommen!
-[POR1_11:PORN1]
-Klar. Wenn's schön billig und dreckig ist.
+[DONH1F2:DONH1]
+~r~Donald ist tot!
-[POR1_13:PORN1]
-~g~Bring die Girls ins Studio zu Steve.
+[DONH1OF:DONH1]
+~r~Avery Carrington~w~ ist fast an seinem Ziel angekommen. Halte ihn auf!
-[POR1_17:PORN1]
-Wow, cooler Hai!
+[DONH1O9:DONH1]
+~w~Lass ~b~Donald~w~ nicht zurück! Diese Kolumbianer legen ihn um!
-[POR1_18:PORN1]
-~r~Mercedes ist erledigt!
+[DONH1FA:DONH1]
+~w~Hmm, die Panlantic lässt Avery offenbar vom Kartell beschützen.
-[POR1_20:PORN1]
-Tommy, wo willst du hin? Komm zurück!
+[LAND_01:DONH1]
+Ich weiß, was du denkst, Toni. Hochmut kommt vor dem Fall.
-[POR1_21:PORN1]
-Wo willst du hin?
+[LAND_02:DONH1]
+Aber das ist nur ein vorübergehendes Tief.
-[POR1_22:PORN1]
-Tommy, wann sehen wir uns mal ganz allein, nur du und ich?
+[LAND_03:DONH1]
+Alles klar.
-[POR1_01:PORN1]
-~g~Candy Suxxx wäre perfekt für die Hauptrolle!
+[LAND_04:DONH1]
+Ach, tu nicht so pikiert.
-[POR1_12:PORN1]
-~g~Nimm Candy mit zu deinem Treffen mit Mercedes.
+[LAND_05:DONH1]
+Ich weiß, es war ekelhaft von mir, zu sagen, dass es deine Schuld war,
-[POR1_16:PORN1]
-Vielleicht später, Schätzchen...
+[LAND_06:DONH1]
+doch Hybris ist ein ekelhafter Bettgefährte - fast so eklig wie Termiten.
-[POR1_24:PORN1]
-~g~Geh zurück und hole Candy.
+[LAND_07:DONH1]
+Und, glaub mir, ich habe beide genossen.
-[POR1_25:PORN1]
-~g~Du hast Candy vergessen. Geh sie holen.
+[LAND_08:DONH1]
+Wart's ab, wir beide sind bald wieder da!
-[POR1_23:PORN1]
-~g~Candy wird sich um das Geschäft in ~h~Downtown~g~ kümmern.
+[LAND_09:DONH1]
+Ich war nie weg.
-[POR1_26:PORN1]
-~g~Da ist Candy. Sie scheint wieder mit dem Kongressabgeordneten Shrub zusammen gewesen zu sein.
+[LAND_10:DONH1]
+Wir sitzen in einem Boot, Amigo.
-[POR1_27:PORN1]
-Los, gehen wir.
+[LAND_11:DONH1]
+Nein.
-[POR1_28:PORN1]
-Tommy, sei vorsichtig! Meine Implantate sind noch nicht versichert!
+[LAND_12:DONH1]
+Bitte!
-[POR1_29:PORN1]
-Das nennst du fahren?
+[LAND_13:DONH1]
+'Bitte'? Vergessen Sie's, Freundchen.
-[POR1_30:PORN1]
-Danach kann ich keinen Porno mehr machen!
+[LAND_18:DONH1]
+Komm - ich erzähl's dir im Auto.
-[POR1_31:PORN1]
-Was ist los? Willst du mich umbringen? Ich dachte, ich wäre der Star!
+[LAND_19:DONH1]
+Du hast deins doch dabei? Meins ist, äh, in der Inspektion.
-{=================================== MISSION TABLE PORN2 ===================================}
+[LAND_16:DONH1]
+- 10% wovon? Davon? Sie sind zu gütig. ~n~ - Nein! Von 'ner richtig großen Sache.
-[POR2_A:PORN2]
-Was macht die Filmerei, Steve?
+[LAND_14:DONH1]
+- 'Es war nur deine Schuld.' Erbärmlich. ~n~ - 10%?
-[POR2_B:PORN2]
-Tja, Candy ist ein Naturtalent, und die Neue ist unersättlich!
+{=================================== MISSION TABLE DONH2 ===================================}
-[POR2_C:PORN2]
-Die hatte schon vor der ersten Probe das halbe Team durch.
+[DONH2_1:DONH2]
+~w~Begib dich zur ~y~Kirche~w~ auf Staunton Island.
-[POR2_D:PORN2]
-Jedenfalls, morgen haben wir einen Außendreh. Wir schießen ein paar Boot-Szenen.
+[DONH2_2:DONH2]
+~w~Verprügle den ~r~Reporter ~w~oder erzwinge mit vorgehaltener Waffe die Fotos von ihm.
-[POR2_E:PORN2]
-Boot-Szenen? Was für Boot-Szenen?
+[DONH2_3:DONH2]
+~w~Du hast Fotos von mir. Wo sind sie?
-[POR2_F:PORN2]
-Die Fischer zappeln im Netz der Leidenschaft, als ein riesiger Hai daherkommt -
+[DONH2_4:DONH2]
+~w~Tu mir bitte nichts!
-[POR2_G:PORN2]
-Was habe ich über den Riesenhai gesagt?
+[DONH2_5:DONH2]
+~w~Wo sind die verdammten Fotos!?
-[POR2_H:PORN2]
-Ich sagte, 'KEIN RIESENHAI', ok?
+[DONH2_6:DONH2]
+~w~Ich weiß nicht, wovon du redest!
-[POR2_I:PORN2]
-Halt die Kameras auf die Mädels gerichtet!
+[DONH2_7:DONH2]
+~w~Wo sind sie?
-[POR2_J:PORN2]
-Ok, ok. Hey, Tommy, probieren kann ich's ja mal, oder?
+[DONH2_8:DONH2]
+~w~Bitte! Nicht!
-[POR2_K:PORN2]
-Habt ihr die Flyer drucken lassen?
+[DONH2_9:DONH2]
+~w~Mach schon, du Memme! Rück sie raus!
-[POR2_L:PORN2]
-Ja, aber man wird uns die Dinger nicht verteilen lassen. Ich meine,
+[DONH210:DONH2]
+~w~Okay! Okay!
-[POR2_M:PORN2]
-die sind einfach zu, äh, zu deutlich.
+[DONH2EX:DONH2]
+~w~Du kriegst die Fotos!
-[POR2_N:PORN2]
-Mach dir darüber keine Gedanken.
+[DONH211:DONH2]
+~w~Ich hab den Film in meinem Versteck!
-[POR2_O:PORN2]
-Ich hab da so meine Ideen, wie wir die verteilen.
+[DONH212:DONH2]
+~w~Fahr zum ~y~Versteck des Reporters.
-[POR2_P:PORN2]
-Ok. Hey, Candy, äh, in meinen Wohnwagen.
+[DONH213:DONH2]
+~w~Hilfe! Hilfe! Ich werde entführt!
-[POR2_01:PORN2]
-~g~Hinter den Studios steht ein altes Wasserflugzeug, das mal als Requisite für einen Indy-Film diente.
+[DONH214:DONH2]
+~w~Hilfe! Er bringt mich um!
-[POR2_02:PORN2]
-~g~Suche dir einen Checkpoint aus, um mit dem Abwurf der Flyer zu beginnen.
+[DONH215:DONH2]
+~w~Ich bin zu begnadet, um zu sterben!
-[POR2_03:PORN2]
-~g~Wirf die Flyer überall bis zum End-Checkpoint ab.
+[DONH216:DONH2]
+~w~Ich darf nicht sterben. Mein Roman ist nicht fertig!
-[POR2_04:PORN2]
-~r~TREIBSTOFFMANGEL!!!
+[DONH217:DONH2]
+~w~Von so einer Scheiße hat mein Redakteur nichts gesagt!
-[POR2_05:PORN2]
-Benutze es, um die Flyer in der Stadt zu verteilen.
+[DONH218:DONH2]
+~w~Rühr keinen Muskel, Arschkrätze!
-[DILDO:PORN2]
-Skimmer-Tankinhalt:
+[DONH219:DONH2]
+~w~Stehen bleiben, du Flachwichser!
-[POR2_Q:PORN2]
-Oh, Mann.
+[DONH220:DONH2]
+~w~Zum Kuckuck nochmal, bleib gefälligst hier!
-[PORN2_9:PORN2]
-~g~Du hast ~1~ Sekunden, um zu einer Skimmer zurückzukehren, bevor die Mission endet.
+[DONH221:DONH2]
+~w~Toni! Endlich!
-{=================================== MISSION TABLE PORN3 ===================================}
+[DONH222:DONH2]
+~w~Ein Reporter hat Averys Exitus beobachtet!
-[POR3_A:PORN3]
-Ok, was ist jetzt wieder?
+[DONH223:DONH2]
+~w~Er hat Fotos! Herrgott, ich bin erledigt!
-[POR3_B:PORN3]
-Schsch!
+[DONH224:DONH2]
+~w~Regen Sie sich ab! Wo steckt dieser Reporter?
-[POR3_C:PORN3]
-Nun, nach seiner Begegnung mit den Nympho-Aliens
+[DONH225:DONH2]
+~w~Oh Toni, du bist ein Schatz!
-[POR3_D:PORN3]
-kann unser Held an nichts anderes denken, als an einen riesigen Phallusberg-
+[DONH226:DONH2]
+~w~Wie es heißt, recherchiert er undercover in der Kirche auf Staunton Island.
-[POR3_E:PORN3]
-und da wollen wir die Szene mit dem Bottich voll Kartoffelpüree drehen, aber dann...
+[DONH227:DONH2]
+~w~Hol die Fotos und beerdige ihn!
-[POR3_F:PORN3]
-Das interessiert mich nicht die Bohne.
+[DONH228:DONH2]
+~r~Ned ist entwischt!
-[POR3_G:PORN3]
-D-Dreh einfach weiter. Weiter, weiter.
+[DONH230:DONH2]
+~w~Beseitige ~r~Ned Burner.
-[POR3_H:PORN3]
-Hey, Tommy...
+[DONH231:DONH2]
+~r~Ned starb, ehe du die Fotos kassiert hast!
-[POR3_I:PORN3]
-Du hast am Telefon was von rechtlichen Problemen gesagt?
+[DONH229:DONH2]
+Blödsinn!
-[POR3_J:PORN3]
-Ach ja! Der Kongressabgeordnete Alex Shrub ist auf Wahlkampftour und buhlt um Stimmen bei den Puritanern.
+[DONCUTA:DONH2]
+~w~Bitte sehr! Ich hab sie noch nicht entwickeln lassen.
-[POR3_K:PORN3]
-Es heißt, er unterstützt ein Verbot der, sagen wir mal, eher
+[DONCUTB:DONH2]
+~w~Du Stück Scheiße!
-[POR3_L:PORN3]
-fleischlichen Bereiche der großartigen Unterhaltungsindustrie unseres Landes.
+[DONH2SM:DONH2]
+Angst
-[POR3_M:PORN3]
-Großartig.
+[DONH233:DONH2]
+Schüchtere den Reporter weiter ein. Wenn sein Angstpegel fällt, könnte er versuchen, zu fliehen.
-[POR3_N:PORN3]
-Candy! Du kennst doch Shrub.
+[DONH2LB:DONH2]
+~w~Du hast ~b~den Reporter ~w~zurückgelassen. Du musst ihn holen.
-[POR3_O:PORN3]
-Macht ihr auch ausgefallene Sachen?
+[DONH2LC:DONH2]
+~r~Du hast den Reporter verloren.
-[POR3_P:PORN3]
-Oh ja, oh ja, oh ja! Ja, ja, ja, JA, Oooooooh!
+{=================================== MISSION TABLE DONH3 ===================================}
-[POR3_Q:PORN3]
-Bitte sag, dass du das hast.
+[DONH3I1:DONH3]
+~w~Ich bin wieder da!
-[POR3_R:PORN3]
-Gehörte das zum, äh... oder war das die Antwort für...
+[DONH3I2:DONH3]
+~w~Zurück von den Toten! Emporgestiegen wie ein Phönix aus der Asche.
-[POR3_S:PORN3]
-Hey, ich kann das nie unterscheiden. Jedenfalls...
+[DONH3I3:DONH3]
+~w~Wie Lazarus. Jawohl, Lazarus Love!
-[POR3_T:PORN3]
-Das beste wird sein, du folgst ihr nach dem Dreh.
+[DONH3I4:DONH3]
+~w~Bald bin ich wieder reich!
-[POR3_U:PORN3]
-Mal sehen, ob sie dich zu ihrem neuen Liebesnest führt.
+[DONH3I5:DONH3]
+~w~Die Panlantic wird mir ein Vermögen dafür zahlen, dass der Deal steigt!
-[POR3_V:PORN3]
-Hast du eine Kamera?
+[DONH3I6:DONH3]
+~w~Wir haben es geschafft, Toni!
-[POR3_X:PORN3]
-Ja. Gebt ihm eine Kamera.
+[DONH3I7:DONH3]
+~w~Kann sein.
-[POR3_02:PORN3]
-~r~Du hast den Abgeordneten erledigt! Jetzt kannst du ihn nicht mehr erpressen.
+[DONH3I8:DONH3]
+~w~Zeit für eine kleine Soiree mit einer hochexklusiven Gästeliste.
-[POR3_03:PORN3]
-~r~Du hast die Bodyguards des Abgeordneten aufgescheucht. Sie werden ihn sofort wegbringen.
+[DONH3I9:DONH3]
+~w~Komm!
-[POR3_04:PORN3]
-Candy, könntest du mich Martha nennen?
+[DONH3C1:DONH3]
+~w~Wir brauchen ein Transportmittel, Toni. Wir haben nicht viel Zeit.
-[POR3_05:PORN3]
-Oh, Alex - ich meine Martha - ich tu alles, was du willst.
+[DONH3L1:DONH3]
+~w~Du brauchst ~b~Donald.~w~ Kehr um und hol ihn!
-[POR3_06:PORN3]
-Martha, jemand sieht uns zu. Wie erregend.
+[DONH3L2:DONH3]
+~w~Los, Toni! Wir müssen uns sputen!
-[POR3_07:PORN3]
-Sie da! Geben Sie mir die Kamera.
+[DONH3L3:DONH3]
+~w~Bring die Leiche zurück!
-[POR3_01:PORN3]
-~g~Folge Candys ~h~Stretch-Limo~g~.
+[DONH3_5:DONH3]
+~w~Toni, das wird eine todschicke Party.
-[POR3_15:PORN3]
-~r~Du hast Candys Stretch-Limo geschrottet!
+[DONH35D:DONH3]
+~w~Mit schick toten Gästen.
-[POR3_17:PORN3]
-~g~Begib dich mit dem Film zurück ins Pornostudio.
+[DONH35A:DONH3]
+~w~Suche eine ~b~Leiche.
-[POR3_19:PORN3]
-~r~Der Film ist alle!
+[DONH35B:DONH3]
+~w~Hol ~b~Averys Leiche.
-[POR3_21:PORN3]
-~g~Du hast Candys Stretch-Limo verloren!
+[DONH35C:DONH3]
+~w~Hol ~b~Neds Leiche.
-[POR3_22:PORN3]
-~g~Das WK Chariot Hotel gegenüber seines Balkons dürfte eine ideale Position zum Fotografieren bieten.
+[DONH3_6:DONH3]
+~w~Schaffe Donald und Avery zum ~y~Flughafen.
-[POR3_23:PORN3]
-~g~Es gibt eine Seitentür, durch die du in das Hotel kommst.
+[DONH36A:DONH3]
+~w~Hey! Bring den Krankenwagen zurück!
-[POR3_08:PORN3]
-Halte die~h~ ~k~~PED_LOCK_TARGET~ ~w~gedrückt, um mit der Kamera zu ~h~zielen~w~.
+[DONH36B:DONH3]
+~w~Avery.
-[POR3_09:PORN3]
-Halte die~h~ ~k~~PED_LOCK_TARGET~ ~w~gedrückt, um mit der Kamera zu ~h~zielen~w~.
+[DONH36C:DONH3]
+~w~Was bist du seit unserem letzten Treffen gealtert!
-[POR3_10:PORN3]
-Drücke die~h~ ~k~~PED_SNIPER_ZOOM_IN~~w~, um ~h~heranzuzoomen ~w~und die~h~ ~k~~PED_SNIPER_ZOOM_OUT~~w~, um wieder ~h~wegzuzoomen~w~.
+[DONH36D:DONH3]
+~w~Du füttertest mich stets mit Perlen der Weisheit
-[POR3_11:PORN3]
-Drücke die~h~ ~k~~PED_SNIPER_ZOOM_IN~~w~, um ~h~heranzuzoomen ~w~und die~h~ ~k~~PED_SNIPER_ZOOM_OUT~~w~, um wieder ~h~wegzuzoomen~w~.
+[DONH36E:DONH3]
+~w~und bald werde ich wieder speisen!
-[POR3_12:PORN3]
-Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um ein Bild zu machen.
+[DONH36F:DONH3]
+~w~Mein Gott! Er trägt ein Toupet!
-[POR3_13:PORN3]
-Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um ein Bild zu machen.
+[DONH36G:DONH3]
+~w~Toni, bring mich und Avery zu seinem Privatjet am Flughafen.
-[POR3_14:PORN3]
-Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um ein Bild zu machen.
+[DONH3_7:DONH3]
+~w~Bring Donald und Ned zum ~y~Flughafen.
-[POR3_20:PORN3]
-~g~Wenn du ein Transportmittel brauchst, nimm den ~h~Sparrow~g~ hinter dem Haus.
+[DONH37F:DONH3]
+~w~Toni, bring mich und Ned zum Flughafen.
-[POR3_16:PORN3]
-~g~Du brauchst drei gute kompromittierende Fotos von Alex Shrub mit Candy.
+[DONH37A:DONH3]
+~w~Hey! Der Typ klaut die Leiche!
-[POR3_24:PORN3]
-GESCHOSSENE FOTOS:
+[DONH37B:DONH3]
+~w~Ned Burner, Superreporter.
-{=================================== MISSION TABLE PORN4 ===================================}
+[DONH37C:DONH3]
+~w~Ach, Ned. Ich gebe Ihnen die Exklusivrechte an
-[POR4_A:PORN4]
-Tut mir leid, ich kann das jetzt nicht schlucken.
+[DONH37D:DONH3]
+~w~meiner wunderbaren Party.
-[POR4_B:PORN4]
-Ach KOMM, Darling!
+[DONH37E:DONH3]
+~w~Und ich lade längst nicht jeden auf meine kleine Sause ein.
-[POR4_C:PORN4]
-Der ist ausgestattet wie ein Pottwal, Herrgott noch mal,
+[DONH37G:DONH3]
+~w~Die Auswahlkriterien sind tödlich.
-[POR4_D:PORN4]
-wie kannst du dich da nicht einfühlen?!
+[DONH3_8:DONH3]
+~w~Bring Averys Leiche zum ~y~Flughafen.
-[POR4_E:PORN4]
-Aber Stevie...
+[DONH3_9:DONH3]
+~w~Bring Neds Leiche zum ~y~Flughafen.
-[POR4_F:PORN4]
-Wie geht's meinem Starregisseur?
+[DONH3A1:DONH3]
+~w~Schaff Averys gammeligen Kadaver her, ehe uns die Wachleute entdecken.
-[POR4_G:PORN4]
-Oh Mann. Der Kampf zwischen künstlerischer Ambition und
+[DONH3A2:DONH3]
+~w~Seine Obduktion beginnt jeden Augenblick.
-[POR4_H:PORN4]
-diesem Rumgenudle tobt unvermindert.
+[DONH3N1:DONH3]
+~w~Schaff Ned Burners Leiche her, ehe uns die Wachleute entdecken. Er soll jeden Augenblick bestattet werden.
-[POR4_I:PORN4]
-Und bevor du fragst: Ja, alle vier Videos werden veröffentlicht, wenn...
+[DONH3F1:DONH3]
+~r~Love ist tot.
-[POR4_J:PORN4]
-Schätzchen, kannst du BITTE die Anaconda im Bild halten,
+[DONH3F2:DONH3]
+~r~Du hast Averys Leiche verloren!
-[POR4_K:PORN4]
-die kostet pro Stunde mehr als du!
+[DONH3F3:DONH3]
+~r~Du hast Neds Leiche verloren!
-[POR4_L:PORN4]
-Oh, sorry, Steve.
+[DONH3C2:DONH3]
+~w~Die Airport Security wird Avery Carringtons Hangar um 22:00 Uhr absperren.
-[POR4_M:PORN4]
-Ich hab mir gedacht, als Werbung für den Start brauchen wir einen richtigen Knaller.
+[DONH3F4:DONH3]
+~r~Zu spät - die Airport Security hat den Hangar abgesperrt!
-[POR4_N:PORN4]
-Irgendwas, was so richtig Furore macht in der Stadt. Hast du eine Idee?
+[DONH3F5:DONH3]
+~r~Zu spät - die Airport Security hat Donald mit Averys Leiche gefunden!
-[POR4_O:PORN4]
-Na ja, früher gab's da immer Galas,
+[DONH3W1:DONH3]
+~w~Beeil dich! Die Airport Security wird Avery Carringtons Hangar um 22:00 Uhr absperren.
-[POR4_P:PORN4]
-Stars, Limos, riesige Suchscheinwerfer am Nachthimmel...
+[DONH3F6:DONH3]
+~r~Zu spät - die Airport Security hat Donald mit Neds Leiche gefunden!
-[POR4_Q:PORN4]
-Suchscheinwerfer? Ich hab eine Idee...
+{=================================== MISSION TABLE DONH4 ===================================}
-[POR4_R:PORN4]
-....ja, ja, ja. Die heißen Mädels mit ihren Paillettenkleidern und die Limos, oh, Premieren.
+[DONH4A:DONH4]
+~w~Donald schickt mich, 'ne äh, Bestellung abholen.
-[POR4_S:PORN4]
-O ja, Ma'am, natürlich, Ma'am,
+[DONH4B:DONH4]
+~w~Alles klar.
-[POR4_T:PORN4]
-Und die Presse und die Lichter-Flut...
+[DON4EX1:DONH4]
+~w~Ich hab, was ihr braucht. Kostet aber was.
-[POR4_01:PORN4]
-~g~Begib dich nach ~y~Downtown~g~und richte den Scheinwerfer auf dem Gebäude aus.
+[DON4EX2:DONH4]
+~w~Don meinte, du streckst es vor und er gibt's dir dann zurück.
-[POR4_02:PORN4]
-~g~Du brauchst ein schnelles Bike, um von Dach zu Dach zu springen. Der Wachmann fährt immer mit einer ~y~PCJ 600~g~zur Arbeit...
+[DONH4C:DONH4]
+~w~Sicher.
-[POR4_03:PORN4]
-~g~Du wirst auf die Gebäudedächer müssen. In eines der oberen Büros sollte ein Lift führen...
+[DONH4D:DONH4]
+~w~Klar! Stell ihn doch zu Händen 'Leck mich' aus.
-[POR4_06:PORN4]
-~g~Kehre in das tiefer gelegene Büro zurück, wenn du noch mal auf die Dächer musst.
+[DONH4E:DONH4]
+~w~Wo ist die Bestellung?
-[POR4_07:PORN4]
-~g~Du brauchst ein Motorrad, um von Gebäude zu Gebäude zu springen.
+[DONH4F:DONH4]
+~w~Scheiße, Kleiner. Das dauert, bis sowas zusammengebastelt ist.
-[POR4_08:PORN4]
-~g~Brich durch das Fenster, um zu starten. Du hast bis 07:00 Zeit. Dann wird es zu hell, um ungesehen hinaufzukommen.
+[DON4EX4:DONH4]
+~w~Ich melde mich.
-[POR4_09:PORN4]
-~g~Die Pfeile zeigen dir, zu welchem Gebäude du als nächstes springen musst.
+[DONH4G:DONH4]
+Mission erfüllt!
-[POR4_10:PORN4]
-~r~Es ist zu hell, um ungesehen dort hinaufzukommen.
+[DONH4_1:DONH4]
+KEIN(E)
-[POR4_11:PORN4]
-Kehre zur Leiter zurück, wenn du noch mal auf die Dächer musst.
+[DONH4PS:DONH4]
+~w~8-Ball wird sich melden, sobald die Waren fertig sind.
-[POR4_05:PORN4]
-~g~Diese Treppe führt zu einem tiefer gelegenen Büro.
+{=================================== MISSION TABLE DONH5 ===================================}
-[POR_AS1:PORN4]
-FILMSTUDIO-MISSIONEN ERFÜLLT
+[DONH5_0:DONH5]
+Van
-[POR_AS2:PORN4]
-~g~Inter Global Films generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[DNH5_A0:DONH5]
+~w~Mann, die Karre ist knallvoll, verstehst du? Fahr vorsichtig.
-{=================================== MISSION TABLE PROT1 ===================================}
+[DNH5_A1:DONH5]
+~w~Ja? Alles bestens.
-[PRO1_A:PROT1]
-Oh, wir müssen diesen Laden umbauen. Das muss älter aussehen.
+[DNH5_A2:DONH5]
+~w~Klar. Ich verbinde.
-[PRO1_B:PROT1]
-Ich kann diesen Look nicht ab, Tommy. Was meinst du, sollen wir eine Bar einbauen..?
+[DNH5_A3:DONH5]
+~w~Toni, noch ein kleiner Job und wir schwimmen im Geld.
-[PRO1_D:PROT1]
-Hört mal.
+[DNH5_A4:DONH5]
+~w~Wir haben Pläne von Fort Staunton studiert. Die Schwachpunkte liegen entlang der alten U-Bahn, die drunter verläuft.
-[PRO1_E:PROT1]
-Die Zeit ist gekommen, die Stadt zu übernehmen. Sie wartet nur auf uns.
+[DNH5_A5:DONH5]
+~w~Super, Don! Da muss ich nur an 100 beknackten Italienern vorbei.
-[PRO1_F:PROT1]
-Wir müssen langsam Gebiete einnehmen.
+[DNH5_A6:DONH5]
+~w~Einfach den Porter Tunnel entlang, dann findest du den Eingang schon.
-[PRO1_G:PROT1]
-Vice City soll merken, dass wir die neuen Bosse sind, versteht ihr?
+[DNH5_B0:DONH5]
+~w~Hey! Du hast hier nichts zu suchen!
-[PRO1_H:PROT1]
-Jetzt beruhigt euch mal kurz. Allmählich kapiere ich schon, wie das ganze hier läuft.
+[DNH5_B1:DONH5]
+~w~Verschwinde gefälligst!
-[PRO1_I:PROT1]
-Was du brauchst, ist eine legale Fassade, Tommy, Immobilien. Hat mir nicht geschadet.
+[DNH5_C0:DONH5]
+~w~Steig in den ~b~Van.
-[PRO1_J:PROT1]
-Wir müssen die Muskeln spielen lassen, sonst war die ganze harte Arbeit umsonst.
+[DNH5_C4:DONH5]
+~w~Bring die ~y~Sprengkörper~w~ an!
-[PRO1_K:PROT1]
-Die Geschäftsleute hier wissen, dass Diaz weg ist und weigern sich, Schutzgeld zu zahlen.
+[DNH5_C5:DONH5]
+~w~Bring die übrigen ~y~Sprengkörper~w~ an!
-[PRO1_L:PROT1]
-Oh, wir könnten es mit Schmiergeld versuchen...
+[DNH5_C6:DONH5]
+~w~Verschwinde durch den ~y~U-Bahn-Eingang!
-[PRO1_M:PROT1]
-Schmiergeld? Blödsinn! Ich zeig euch, wie man denen Angst macht.
+[DNH5_D0:DONH5]
+~w~Die Forellis? Was machen die denn hier?
-[PRO1_01:PROT1]
-~g~Demoliere die Schaufenster der Läden und die Inhaber werden darum betteln, zahlen zu dürfen.
+[DNH5_D1:DONH5]
+~w~Lass die Forellis nicht den Van schrotten!
-[PRO1_03:PROT1]
-~r~Du sollst abhauen, nicht Kaffee trinken gehen.
+[DNH5_1:DONH5]
+~w~Stoß das Tor mit einem Fahrzeug auf.
-[PRO1_04:PROT1]
-Mein Lebenswerk! Zerstört!
+[DONH5_2:DONH5]
+~w~Ramm fester gegen das Tor!
-[PRO1_05:PROT1]
-Ich bin ruiniert...RUINIERT!!
+[DNH5_X0:DONH5]
+~r~Der Van ist Schrott!
-[PRO1_06:PROT1]
-Ich zahle einen Haufen Schutzgeld!
+[DNH5_C1:DONH5]
+~w~Steig wieder in den ~b~Van.
-[PRO1_07:PROT1]
-Mein schönes Schaufenster!
+[DNH5_C2:DONH5]
+~w~Fahr zu einem der ~y~Eingänge~w~ des Porter Road Tunnels.
-[PRO1_08:PROT1]
-Mein Laden! Mein schöner Laden!
+[DNH5_C3:DONH5]
+~w~Folge dem ~y~Tunnel.
-[PRO1_09:PROT1]
-Vercetti. Merkt euch den Namen.
+[DNH5_E0:DONH5]
+~w~Erledige die ~r~Bauarbeiter.
-[PRO1_10:PROT1]
-Ich bin jetzt der Boss in der Stadt. ICH!
+[DNH5_E1:DONH5]
+~w~Erledige den ~r~Bauarbeiter.
-[BUYP1:PROT1]
-Du kannst jetzt in bestimmten Gegenden auf der Karte Objekte kaufen.
+[DNH5_E2:DONH5]
+~w~Die Forellis haben dir den Rückweg abgeschnitten. Finde einen anderen ~y~Ausgang.
-[BUYP2:PROT1]
-Wenn du ein Gebäude mit grüner Markierung siehst, kannst du dieses kaufen.
+[DNH5_E3:DONH5]
+~w~Benutze ein Fahrzeug, um durch die Tore zu brettern und den ~y~Ausgang~w~ zu erreichen.
-[PRO1_N:PROT1]
-Ich bin in fünf Minuten zurück...
+[DNH5_X1:DONH5]
+~r~Die Forellis haben den Van geschrottet!
-[PRO1_11:PROT1]
-~g~Begib dich zum ~y~North Point Einkaufszentrum~g~ in ~y~Vice Point~g~.
+[DNH5_W1:DONH5]
+~w~Geh nicht zu weit von dem ~b~Van~w~ weg!
-[PRO1_12:PROT1]
-~g~Zerbrich die Schaufenster eines jeden Ladens, und die Inhaber werden um neuen Schutz betteln.
+[DNH5_E4:DONH5]
+~w~Hinterlasse keine ~r~Zeugen!
-[PRO1_C:PROT1]
-Du bist mein Anwalt, nicht mein Innenarchitekt. Klar?
+{=================================== MISSION TABLE DONH6 ===================================}
-[BUYP3:PROT1]
-Stell dich in die Markierung und drücke die ~h~~k~~PED_ANSWER_PHONE~~w~-Taste, um das Objekt zu kaufen.
+[DONH6_V:DONH6]
+~r~v1.00
-[PRO1_13:PROT1]
-~g~Du hast fünf Minuten, um alle zu demolieren.
+[DONH6_1:DONH6]
+~w~Begib dich zum ~y~Haus.
-{=================================== MISSION TABLE PROT2 ===================================}
+[DONH6_5:DONH6]
+~w~Oh mein Gott! Toni! Tu was!
-[PRO2_01:PROT2]
-~g~Schalte die Wachen aus, die die Front Page Bar beschützen und finde raus, wer hinter ihnen steckt.
+[DONH6_6:DONH6]
+~w~Du hast ~1~ Sekunden, um zu dem Anwesen zurückzukehren!
-[PRO2_08:PROT2]
-~g~Die DBP Security wird wissen, dass du kommst. Schnapp sie dir, ehe sie abhauen.
+[DONH6_7:DONH6]
+Rückkehrzeit
-[PRO2_A:PROT2]
-Was gibt's für Probleme?
+[DONH6_8:DONH6]
+~r~Du bist nicht zur Villa zurückgekehrt. Donald wurde hingerichtet!
-[PRO2_B:PROT2]
-Eine Bar weigert sich zu zahlen.
+[DONH610:DONH6]
+~w~Besorg ein Auto!
-[PRO2_C:PROT2]
-Die glauben, die werden von so einer Schlägerbande beschützt.
+[DONH611:DONH6]
+~w~Du lieber Gott! Noch mehr von denen!
-[PRO2_D:PROT2]
-Aber keine Sorge, Tommy, ich regle das.
+[DONH624:DONH6]
+~w~Gas geben, Toni!
-[PRO2_E:PROT2]
-Das nennst du regeln?
+[DONH612:DONH6]
+~w~Geschafft!
-[PRO2_F:PROT2]
-Ihr zwei. Hebt mal den Hintern...
+[DONH623:DONH6]
+~w~Fahr mich zu Averys Jet. Er und Ned sind noch an Bord, also fliege ich nicht alleine.
-[PRO2_G:PROT2]
-Los.
+[DONH622:DONH6]
+~w~Begib dich zu ~y~Averys Jet.
-[PRO2_10:PROT2]
-Zwei sind abgehauen. Finde sie und bring die Sache zuende.
+[DONH613:DONH6]
+~w~Wir müssen zum Flughafen.
-[PRO2_11:PROT2]
-Steig in den Wagen, Nichtsnutz.
+[DONH625:DONH6]
+~w~Begib dich zum ~y~Flughafen.
-[PRO2_02:PROT2]
-Dein Schutz braucht ein bisschen mehr Schutz.
+[DONH615:DONH6]
+~w~Du hast ~b~Donald~w~ nicht dabei! Kehr um und hol ihn!
-[PRO2_03:PROT2]
-Ach, verdammt! Nicht schon wieder! Das brauche ich wirklich nicht!
+[DONH619:DONH6]
+~r~Donald ist tot!
-[PRO2_04:PROT2]
-Diese Idioten arbeiten eigentlich für die DBP Security gleich um die Ecke.
+[DONH6_9:DONH6]
+~w~D.? Kommen Sie! Los!
-[PRO2_05:PROT2]
-Macht ihr das mal unter euch aus.
+[DONH614:DONH6]
+~w~Ist die Luft wirklich rein, Toni?
-[PRO2_06:PROT2]
-Wir sehen uns.
+[DONH616:DONH6]
+~w~Oh... mein...GARTEN!
-[PRO2_07:PROT2]
-Ja, ja. Wenn's sein muss.
+[DOH616A:DONH6]
+~w~Was hast du meinem wunderbaren Garten angetan?!
-[PRO2_09:PROT2]
-~g~Begib dich zur Front Page Bar und sprich mit dem Besitzer.
+[DONH617:DONH6]
+~w~D., machen wir den Garten oder die Fliege? Es liegt bei Ihnen.
-{=================================== MISSION TABLE PROT3 ===================================}
+[DONH618:DONH6]
+~w~Bring mich zum Flughafen!
-[PRO3_A:PROT3]
-Du Trottel! Was hast du dir dabei gedacht?!
+[DONH620:DONH6]
+~w~Abschiede sind mir zuwider, mein Freund.
-[PRO3_B:PROT3]
-Ist dir klar, was das bedeutet?!
+[DOH620A:DONH6]
+~w~Sagen wir einfach 'Adieu'.
-[PRO3_C:PROT3]
-Das könnte das Ende für uns alle sein!
+[DONH621:DONH6]
+~w~D., es war... lehrreich.
-[PRO3_D:PROT3]
-Der Zeitzünder muss hin gewesen sein.
+[DONH66S:DONH6]
+~w~Du hast ~1~ Sekunde, um zu dem Anwesen zurückzukehren!
-[PRO3_E:PROT3]
-Der Laden war mit Sprengstoff vollgepackt wie eine Feuerwerkfabrik.
+[DONH66A:DONH6]
+~w~Beseitige diese ~r~kolumbianischen Gangster!
-[PRO3_F:PROT3]
-Dann hat jemand den Cops einen Tipp gegeben...
+[DONP_01:DONH6]
+Raupen... Raupe... Raupe... Raup... Nein, das bringt nichts.
-[PRO3_G:PROT3]
-Was gibt's für Probleme, Jungs?
+[DONP_02:DONH6]
+Ommm. Mist!
-[PRO3_H:PROT3]
-Mike sollte einen Laden im Einkaufszentrum abfackeln,
+[DONP_03:DONH6]
+Es ist zum... Scheiße, hätte ich nur was Kaltes zum Kuscheln,
-[PRO3_I:PROT3]
-aber er hat's vermasselt und jetzt wimmelt es dort von Bullen.
+[DONP_06:DONH6]
+Antonio! Ach, ich bin auf der Suche nach Erleuchtung,
-[PRO3_J:PROT3]
-Wir müssen unser Zeug holen und verschwinden!
+[DONP_07:DONH6]
+aber heute wird daraus wohl nichts.
-[PRO3_K:PROT3]
-Langsam, ihr beiden, lasst mich kurz nachdenken!
+[DONP_08:DONH6]
+Vielleicht morgen.
-[PRO3_L:PROT3]
-Tommy Vercetti läuft nicht einfach weg.
+[DONP_09:DONH6]
+Sie klangen nervös auf dem Band.
-[PRO3_M:PROT3]
-Die Cops werden das Gebäude sorgfältig durchkämmen, oder?
+[DONP_10:DONH6]
+Nervös? Ich meditiere. Nervös, moi?
-[PRO3_N:PROT3]
-Aber das dauert.
+[DONP_11:DONH6]
+Ich bin eins mit dem Universum - unmöglich!
-[PRO3_O:PROT3]
-Wir müssen den Laden selbst abfackeln.
+[DONP_12:DONH6]
+Ach, Scheiße, stimmt.
-[PRO3_P:PROT3]
-Ja, aber...
+[DONP_13:DONH6]
+Eine Horde Kolumbianer wollte herkommen,
-[PRO3_Q:PROT3]
-Nur ein Cop kommt auch nur in die Nähe von dem Laden!
+[DONP_14:DONH6]
+um mich gegebenenfalls umzulegen, wenn ich nicht schweige und alle schmiere.
-[PRO3_R:PROT3]
-Dann gehen wir eben als Cops.
+[DONP_15:DONH6]
+Ach so. Das erklärt dann wohl, warum draußen massenhaft Kolumbianer rumlauern.
-[PRO3_S:PROT3]
-Wir brauchen Uniformen und einen Streifenwagen.
+[DONP_16:DONH6]
+Scheiße! Bitte, Antonio, du musst mich hier rausschaffen!
-[PRO3_T:PROT3]
-Und das alles nur wegen dir, Mike.
+[DONP_17:DONH6]
+Ich will nicht... Bitte! Ich will nicht sterben!
-[PRO3_U:PROT3]
-Tut mir leid.
+[DONP_18:DONH6]
+Wohl doch nicht so ganz eins mit dem Universum?
-[PRO3_V:PROT3]
-Ich hab's.
+[DONP_19:DONH6]
+Danke, Toni! Ich mach's dir... Ich mach's dir wieder gut, Ehrenwort.
-[PRO3_W:PROT3]
-Wir müssen die Cops hereinlocken,
+[DONP_04:DONH6]
+- dann wär's so einfach... ~n~ - Was gibt's, D?
-[PRO3_X:PROT3]
-dann sperren wir sie ein
+{=================================== MISSION TABLE TOSH1 ===================================}
-[PRO3_Y:PROT3]
-und überwältigen sie.
+[TOSH1AB:TOSH1]
+~w~Haltet ihn auf!
-[PRO3_Z:PROT3]
-Guter Plan. Los geht's!
+[TOSH1AC:TOSH1]
+~w~Schnappt ihn!
-[PRO3_A1:PROT3]
-Ok.
+[TOSH1AD:TOSH1]
+~w~Knallt ihn ab!
-[PRO3_01:PROT3]
-Ok, Lance, machen wir die Cops auf uns aufmerksam!
+[TOSH1AA:TOSH1]
+~w~Da ist er!
-[PRO3_02:PROT3]
-~g~ Nimm den Streifenwagen und lege die Bombe im Tarbrush Coffee Shop im Einkaufszentrum.
+[TOSH120:TOSH1]
+~w~Klau die ~b~Waffenlieferung~w~ der Yakuza in Bedford Point.
-[PRO3_03:PROT3]
-~g~Du hast Lance vergessen. Hole ihn.
+[TOSH121:TOSH1]
+~w~Du musst an den ~r~Yakuza-Wachen~w~ vorbei.
-[PRO3_04:PROT3]
-~g~ Los geht's.
+[TOSH122:TOSH1]
+~w~Achte auf weitere ~r~Yakuza-Boote.
-[PRO3_05:PROT3]
-~r~Du hast Lance erledigt!
+[TOSH130:TOSH1]
+~w~Bring die Waffen zu ~y~Toshikos Kontaktperson.
-[PRO3_07:PROT3]
-~g~Die Tarnung ist aufgeflogen. Beeilung, platziere die Bombe!
+[TOSH131:TOSH1]
+~w~Zurück zur ~b~Waffenlieferung.
-[PRO3_09:PROT3]
-Fessle und kneble sie!
+[TOSH1BA:TOSH1]
+~w~Prima Artillerie hast du da, mein Junge!
-[PRO3_10:PROT3]
-Uuh! Passt perfekt!
+[TOSH1BB:TOSH1]
+~w~Ich hab an diesen Docks so viel zu tun, dass ich von hier aus operieren sollte,
-[PRO3_11:PROT3]
-Bisschen eng im Schritt vielleicht...
+[TOSH1BC:TOSH1]
+~w~statt auf der anderen Seite der scheiß Insel!
-[PRO3_12:PROT3]
-Oh ja, ja. Meine auch, meine auch.
+[TOSH1BD:TOSH1]
+~w~War jedenfalls 'n Knaller!
-[PRO3_13:PROT3]
-Vorsicht, Bruder! Kein Cop fährt so schlecht!
+[TOSH1DB:TOSH1]
+~r~Die Waffen wurden vernichtet!
-[PRO3_14:PROT3]
-Denk dran, lächle die anderen Cops an.
+[TOSH1PH:TOSH1]
+~w~Die Yakuza werden ihre Lieferung bewachen. Du wirst vielleicht erst bei Phil Cassidy vorbeifahren müssen.
-[PRO3_15:PROT3]
-Hallo, Officer. Hübsche Marke, hübsche Marke.
+[DEAD_01:TOSH1]
+Das soll der knallharte Gangster sein?
-[PRO3_16:PROT3]
-Ganz toll, Lance.
+[DEAD_02:TOSH1]
+Sie wirken nicht sehr knallhart.
-[PRO3_17:PROT3]
-Ok, die Zünder sind auf 5 Sekunden gestellt.
+[DEAD_03:TOSH1]
+Danke.
-[PRO3_18:PROT3]
-5 Sekunden?!! Nichts wie raus hier!
+[DEAD_04:TOSH1]
+Wissen Sie, was es heißt, ohne Liebe zu leben, Mr. Toni?
-[PRO3_19:PROT3]
-Jetzt sind sie so richtig stocksauer.
+[DEAD_05:TOSH1]
+Dass man mit dem Hass lebt.
-[PRO3_20:PROT3]
-~g~Bring 2 Cops dazu, dir in die Garage zu folgen.
+[DEAD_06:TOSH1]
+Ich glaub's Ihnen einfach mal.
-[PRO3_21:PROT3]
-~g~Beschaff dir einen Fahndungslevel, damit dir die Cops in die Garage folgen.
+[DEAD_07:TOSH1]
+Ich hege ernsthaft den Wunsch, einen Menschen zu zerstören, Mr. Cipriani.
-[PRO3_22:PROT3]
-~g~Das Garagentor ist blockiert! Du musst es freiräumen, damit es schließen kann.
+[DEAD_08:TOSH1]
+Zerstören, nicht nur zu töten.
-[PRO3_23:PROT3]
-~g~Stell dich in die Markierung, um die Bombe zu platzieren.
+[DEAD_09:TOSH1]
+Ich will ihn und seine Organisation schwach und gedemütigt sehen, bevor er stirbt.
-[PRO3_24:PROT3]
-~g~Verschwinde aus der Nähe des Cafés!
+[DEAD_10:TOSH1]
+Ich will, dass er leidet.
-[PRO_AS1:PROT3]
-SCHUTZGELD-MISSIONEN ERFÜLLT
+[DEAD_11:TOSH1]
+Okay.
-[PRO_AS2:PROT3]
-~g~Das Vercetti Estate generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[DEAD_12:TOSH1]
+Der Mensch, den Sie zerstören sollen, ist mein Mann. Kazuki Kasen.
-[PRO3_08:PROT3]
-~g~Du musst zurück zu ~h~Vercetti Estate~g~ auf ~h~Starfish Island~g~.
+[DEAD_13:TOSH1]
+Keine Sorge.
-{=================================== MISSION TABLE RACES ===================================}
+[DEAD_14:TOSH1]
+Für Ihre Dienste werden Sie fürstlich entlohnt.
-[RACES_2:RACES]
-~g~Du brauchst ein Fahrzeug! Das ist kein Wettlaufen!
+[DEAD_15:TOSH1]
+Und wenn ich ablehne?
-[RACES_3:RACES]
-3..2..1.. LOS, LOS, LOS!
+[DEAD_16:TOSH1]
+Nein. Während ich seinen Tod lediglich wünsche, brauchen Sie ihn.
-[RACES_8:RACES]
-~r~Du hast das Rennen nicht gewonnen!
+[DEAD_17:TOSH1]
+Sie haben ihm doch bereits einen schweren Schlag zugefügt, Mr. Cipriani.
-[RACES00:RACES]
-Rennen ~1~:
+[DEAD_18:TOSH1]
+Nun gut. Er erwartet heute eine weitere Waffenlieferung.
-[RACES01:RACES]
-Todeskaracho
+[DEAD_19:TOSH1]
+Ich will, dass Sie ihm diese direkt unter seiner ignoranten Nase wegstehlen.
-[RACES02:RACES]
-Ocean Drive
+{=================================== MISSION TABLE TOSH2 ===================================}
-[RACES03:RACES]
-Küsten-Rallye
+[TOSH2AA:TOSH2]
+~w~Mr. Toni.
-[RACES04:RACES]
-Capital Cruise
+[TOSH2AL:TOSH2]
+~w~Ihre Taten haben meinen Mann in enorme Rage versetzt.
-[RACES05:RACES]
-Tour!
+[TOSH2AB:TOSH2]
+~w~Sie haben ihn und seine Leute
-[RACES06:RACES]
-V.C. Endurance
+[TOSH2AM:TOSH2]
+~w~so dumm aussehen lassen wie sie sind.
-[RACES07:RACES]
-Startgebühr: $~1~
+[TOSH2AC:TOSH2]
+~w~Ich habe mich bemüht. Und jetzt, Prinzessin?
-[RACES08:RACES]
-Bestzeit: ~1~:~1~
+[TOSH2AE:TOSH2]
+~w~Mein Mann transferiert eine beträchtliche Summe von seinem Casino.
-[RACES09:RACES]
-Beste Platzierung: 1.
+[TOSH2AF:TOSH2]
+~w~Sie sollen das gesamte Geld vernichten.
-[RACES10:RACES]
-Beste Platzierung: 2.
+[TOSH2AG:TOSH2]
+~w~Ich wüsste die Kohle verdammt gut anzulegen, Süße.
-[RACES11:RACES]
-Beste Platzierung: 3.
+[TOSH2AH:TOSH2]
+~w~Sein Geld soll vor aller Augen auf der Straße verbrennen.
-[RACES12:RACES]
-Beste Platzierung: 4.
+[TOSH2AI:TOSH2]
+~w~Okay, okay. Wann geht der Transport über die Bühne?
-[RACES13:RACES]
-Streckenlänge: ~1~.~1~ km
+[TOSH2AJ:TOSH2]
+~w~Er ist bereits im Gange.
-[RACES15:RACES]
-Bestzeit: Nicht verfügbar
+[TOSH2AK:TOSH2]
+~w~Sie verlassen in diesem Augenblick das Casino. Bitte! Sie haben nicht viel Zeit.
-[RACES16:RACES]
-Beste Platzierung: Nicht verfügbar
+[TOSH2O0:TOSH2]
+~w~Zerstöre alle ~r~Geldtransporter.~w~ Lass keinen zum ~y~Yakuza-Komplex~w~ durch!
-[RACES19:RACES]
-Du hast nicht genug Geld, um an diesem Rennen teilzunehmen.
+[TOSH2O1:TOSH2]
+~w~Sie hauen ab! Lass keinen ~r~Van~w~ entwischen!
-[RACES22:RACES]
-Bestzeit: ~1~:0~1~
+[TOSH2O2:TOSH2]
+~w~Du hast sie verschreckt! Lass die ~r~Vans~w~ nicht entwischen!
-[RACES23:RACES]
-Streckenlänge: ~1~.~1~ Meilen
+[TOSH2E1:TOSH2]
+~w~Der ~r~Konvoi~w~ nähert sich dem ~y~Yakuza-Komplex!
-[RACES_1:RACES]
-~g~Schnapp dir ein schnelles Fahrzeug und begib dich zur Startlinie.
+[TOSH2E2:TOSH2]
+~w~Ein ~r~Van~w~ ist fast am ~y~Yakuza-Komplex!
-[RACEHLP:RACES]
-~w~Drücke die~h~ ~k~~PED_SPRINT~~w~, um das ausgewählte Rennen zu starten. Drücke die~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, um abzubrechen.
+{=================================== MISSION TABLE TOSH3 ===================================}
-{=================================== MISSION TABLE RCHELI1 ===================================}
+[TOSH3M1:TOSH3]
+~w~Jemand zu Hause?
-[WRECKED:RCHELI1]
-~r~Das Fahrzeug ist Schrott!
+[TOSH3M2:TOSH3]
+~w~Mr. Toni? Augenblick, bitte.
-[RCH1_4:RCHELI1]
-Verbleibende Checkpoints:
+[TOSH3M3:TOSH3]
+~w~Mein Mann kocht vor Wut.
-[RCH1_7:RCHELI1]
-~g~Es gibt insgesamt 20 Checkpoints.
+[TOSH3EA:TOSH3]
+~w~Er fragt sich, wieso Sie ihn so präzise zu treffen wussten.
-[RCH1_12:RCHELI1]
-~g~Der ferngesteuerte Helikopter gerät außer Reichweite!
+[TOSH3M4:TOSH3]
+~w~Wenn er kein Idiot ist, geht ihm bald ein Licht auf.
-[RCH1_13:RCHELI1]
-~r~Der ferngesteuerte Helikopter ist außer Reichweite!
+[TOSH3M5:TOSH3]
+~w~Helfen wir ihm doch. Seine Leute sind alte Klatschbasen.
-[RCH1_8:RCHELI1] { reVC update }
-~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~, um deinen Heli zu sprengen.
+[TOSH3EB:TOSH3]
+~w~Liefern wir ihnen Gesprächsstoff.
-{=================================== MISSION TABLE RCPLNE1 ===================================}
+[TOSH3M6:TOSH3]
+~w~Wohin wollen wir?
-[RCPL1_4:RCPLNE1]
-~g~Miss dich mit 3 anderen ferngesteuerten Maschinen in einem CHECKPOINT RENNEN
+[TOSH3M7:TOSH3]
+~w~In die Oper.
-[RCPL1_5:RCPLNE1]
-~g~Flieg durch die Checkpoints, die über Vice City verteilt sind.
+[TOSH3M8:TOSH3]
+~w~Ich und Oper? Machen Sie Witze?
-[RCPL1_6:RCPLNE1] { reVC update }
-~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~, um dein Flugzeug zu sprengen.
+[TOSH3M9:TOSH3]
+~w~Aber woher denn, Mr. Toni? In die Oper geht doch jeder gern.
-[RCPL1_8:RCPLNE1]
-~g~Dein ferngesteuertes Flugzeug gerät außer Reichweite!
+[TOSH3A:TOSH3]
+~w~Wenn Sie meinen Wagen vorfahren, holen wir Ihren Smoking ab.
-[RCPL1_9:RCPLNE1]
-~r~Dein ferngesteuertes Flugzeug ist außer Reichweite!
+[TOSH3EC:TOSH3]
+~w~Schnell. Die Vorstellung fängt gleich an.
-{=================================== MISSION TABLE RCRACE1 ===================================}
+[TOSH3B:TOSH3]
+~w~Fahre ~b~Toshikos Wagen~w~ vor.
-[RCRC1_1:RCRACE1]
-~g~Liefere dir mit 3 anderen RC Bandits ein CHECKPOINT-RENNEN über 2 RUNDEN.
+[TOSH3C:TOSH3]
+~w~Hol ~b~Toshiko~w~ ab.
-[RCRC1_3:RCRACE1]
-~g~Letzte Runde!
+[TOSH3C2:TOSH3]
+~w~Hol einen Smoking von ~y~Mr. Benz.
-[RCR1_4:RCRACE1]
-Verbleibende Runden:
+[TOSH3B3:TOSH3]
+~w~Fahr Toshiko zurück zu ihrer ~y~Wohnung.
-[RCR1_1:RCRACE1]
-~g~Tritt in einem Checkpoint-Rennen gegen 3 andere ferngesteuerte Autos an.
+[TOSH3B4:TOSH3]
+~r~Du hast Toshiko zurückgelassen.
-[RCR1_2:RCRACE1]
-~g~Du musst als erster 2 volle Runden auf dem Kurs fahren!
+[TOSH3B2:TOSH3]
+Steig wieder in ~b~Toshikos Wagen.
-[RCR1_6:RCRACE1]
-~g~Dein ferngesteuertes Auto gerät außer Reichweite!
+[TOSH3C3:TOSH3]
+~w~Fahr zur ~y~Oper.
-[RCR1_7:RCRACE1]
-~r~Dein ferngesteuertes Auto ist außer Reichweite!
+[TOSH3D:TOSH3]
+~w~Wo wollen Sie hin? Wir kommen zu spät!
-{=================================== MISSION TABLE ROCK1 ===================================}
+[TOSH3D2:TOSH3]
+~w~Lassen Sie mich bitte nicht hier, Toni-San!
-[RBM1_A:ROCK1]
-AllllllllRrrighttt!
+[TOSH3Z1:TOSH3]
+~w~Halten sie mich für einen schlechten Menschen?
-[RBM1_B:ROCK1]
-Fantastisch, einfach fantastisch!
+[TOSH3Z2:TOSH3]
+~w~Na ja, Prinzessin, ich bin auch kein Heiliger.
-[RBM1_D:ROCK1]
-Hey, kennst du die Jungs von Love Fist?
+[TOSH3Z3:TOSH3]
+~w~Einen Heiligen könnte ich auch nicht brauchen.
-[RBM1_E:ROCK1]
-Nein, aber ihre Musik habe ich immer geliebt.
+[TOSH3Z4:TOSH3]
+~w~Mein Mann ist Samurai, Mr. Toni.
-[RBM1_F:ROCK1]
-Ich stelle dir die Band vor.
+[TOSH3Z5:TOSH3]
+~w~Er ist sehr stark, aber sehr, sehr schlecht.
-[RBM1_G:ROCK1]
-Das ist P, Percy, Dick, und Willy ist auf dem Klo. Und das vorher in der Kabine war Jezz.
+[TOSH3Z6:TOSH3]
+~w~Er heiratete mich nur, um Wakagashira in Liberty City zu werden.
-[RBM1_H:ROCK1]
-Jungs, ich möchte euch einen guten Freund vorstellen.
+[TOSH3Z7:TOSH3]
+~w~Geliebt hat er mich nie. Er bevorzugt die Gesellschaft seiner Männer.
-[RBM1_I:ROCK1]
-Das ist Tommy. Wir kennen uns schon ewig.
+[TOSH3Z8:TOSH3]
+~w~Verstehen Sie mich?
-[RBM1_J:ROCK1]
-Alles paletti, Mann.
+[TOSH3Z9:TOSH3]
+~w~Wenn er Ihnen auf die Schliche kommt, bringt er Sie um. Das wissen Sie.
-[RBM1_K:ROCK1]
-Und, äh, wie war dein Name noch mal?
+[TOSH3Z0:TOSH3]
+~w~Mich interessiert weder Leben noch Tod, nur noch die Freiheit.
-[RBM1_L:ROCK1]
-Lass das, Jezz. Merk dir eines,
+[TOSH3ZB:TOSH3]
+~w~Entspannte Einstellung.
-[RBM1_M:ROCK1]
-mit mir kannst du diese Spielchen nicht machen.
+[TOSH3E:TOSH3]
+~w~Italiener- und Japsenblut vermischt sich nicht.
-[RBM1_N:ROCK1]
-Ich bin dir einfach über, Sonnenscheinchen.
+[TOSH3F:TOSH3]
+~w~Außer, beide sind auf dem Pflaster verspritzt!
-[RBM1_O:ROCK1]
-Die Sache ist die, Tom, die Jungs brauchen Hilfe.
+[TOSH3G:TOSH3]
+~w~Schütze Toshiko und fliehe in ~b~ihrem Wagen.
-[RBM1_P:ROCK1]
-Die haben hier keine Connections, kein Vitamin B.
+[TOSH3H:TOSH3]
+~w~Schütze ~b~Toshiko~w~ und bringe sie zurück in ihre ~y~Wohnung.
-[RBM1_Q:ROCK1]
-Wir brauchen Stoff, Alter.
+[TOSH3S1:TOSH3]
+~w~Mein Wagen!
-[RBM1_R:ROCK1]
-Damit wir den alten Love Fist Spirit finden, verstehst du?!
+[TOSH3S2:TOSH3]
+~w~Retten Sie uns, Toni!
-[RBM1_S:ROCK1]
-Wir sind hier in Vice City, Mann. Wo liegt das Problem?
+[TOSH3S3:TOSH3]
+~w~Kommen Sie, Toni!
-[RBM1_U:ROCK1]
-Love Juice, Mann!
+[TOSH3S4:TOSH3]
+~w~Bringen Sie uns hier fort!
-[RBM1_V:ROCK1]
-Love Juice?
+[TOSH3S5:TOSH3]
+~w~Retten Sie mich!
-[RBM1_W:ROCK1]
-Genau. 2 Teile TNT-Whiskey, 1 Teil Koks, 5 Päckchen Brause und 1 Liter Sprit.
+[TOSH3S6:TOSH3]
+~w~Hilfe!
-[RBM1_X:ROCK1]
-Kannst du uns weiterhelfen, Alter?
+[TOSH3S7:TOSH3]
+~w~Wir schaffen es nicht!
-[RBM1_Y:ROCK1]
-Es würde den Jungs wirklich viel bedeuten.
+[TOSH3S8:TOSH3]
+HILFE!
-[RBM1_Z:ROCK1]
-Du kannst den Jungs doch helfen, oder?
+[TOSH3S9:TOSH3]
+~r~Toshiko ist tot!
-[RBM1_7:ROCK1]
-~r~Du hast den Love Juice nicht rechtzeitig besorgt!
+[TOSH310:TOSH3]
+~r~Toshikos Wagen wurde zerstört!
-[RBM1_8:ROCK1]
-~r~Mercedes ist erledigt!
+[TOSH311:TOSH3]
+~r~Die Zeit ist um!
-[RBM1_10:ROCK1]
-~r~Du Idiot! Du hast die Ware vernichtet!
+[TOSH3_1:TOSH3]
+KEIN(E)
-[RBM1_13:ROCK1]
-~g~Bring den Love Juice und Mercedes zu der Band bevor sie auf die Bühne muss.
+[TOS3NE1:TOSH3]
+~w~Beschütze Toshiko und erledige die ~r~Forelli-Gangster.
-[RBM1_15:ROCK1]
-~r~Du hast den Dealer verloren, unser Geld und den Stoff!
+[TOS3NE2:TOSH3]
+~w~Flüchte in ~b~Toshikos Auto.
-[RBM1_17:ROCK1]
-~g~Knöpf dir den Dealer vor und hol dir den Stoff!
+[TOSH3EI:TOSH3]
+~w~Die Oper beginnt um 20:00 Uhr. Verspäte dich nicht!
-[MOB_07A:ROCK1]
-Hey, die Jungs könnten ein bisschen Gesellschaft vertragen, falls du weißt, was ich meine...
+{=================================== MISSION TABLE TOSH4 ===================================}
-[MOB_07B:ROCK1]
-Da kenne ich genau die richtige.
+[TOSH4O2:TOSH4]
+~w~Kazukis Helikopter will zum ~y~Casino!
-[ROK1_5:ROCK1]
-Hey, Mercedes!
+[TOSH4O4:TOSH4]
+~w~Beseitige ~r~Kazuki!
-[ROK1_6:ROCK1]
-Hi, Tommy. Na, wie läuft's so?
+[TOSH4O5:TOSH4]
+~w~Begib dich zu ~y~Toshikos Wohnung.
-[ROK1_7:ROCK1]
-Alles bestens. Hör mal, willst du die Jungs von Love Fist verführen?
+[TOSH4_3:TOSH4]
+~w~Kazuki kommt in dem Helikopter an! Begib dich zum Helipad und leg ihn um.
-[ROK1_8:ROCK1]
-Ok, aber dafür bist du mir einen Gefallen schuldig.
+[TOSH4Y1:TOSH4]
+~w~Schnappt ihn!
-[RBM1_14:ROCK1]
-~g~Du brauchst ein Auto oder Motorrad!
+[TOSH4Y2:TOSH4]
+~w~Legt ihn um!
-[RBM1_1:ROCK1]
-~g~Hol Mercedes in ihrer Wohnung ab.
+[TOSH4CA:TOSH4]
+~w~Meine Leute beschämen mich,
-[RBM1_12:ROCK1]
-~g~Besorg die Zutaten für den 'Love Juice' von dem Dealer.
+[TOSH4CB:TOSH4]
+~w~doch es geziemt sich, dass ich dich selbst töte.
-[ROK1_2:ROCK1]
-NICHT MEHR BENÖTIGT
+[TOSH4CC:TOSH4]
+~w~Ihr zwei! Verschwindet!
-[ROK1_3:ROCK1]
-NICHT MEHR BENÖTIGT
+[TOSH4CD:TOSH4]
+~w~Ich stoße mein Schwert mit großer Freude in dich hinein.
-[MERC_39:ROCK1]
-Wir sehen uns später, Big Boy.
+[TOSH4CE:TOSH4]
+~w~Ja, hab ich auch schon gehört.
-[RBM1_C:ROCK1]
-Hey, Tommy! Schön, dass du kommen konntest.
+[TOSH4K1:TOSH4]
+~w~Erschießt ihn!
-[RBM1_9:ROCK1]
-~g~Besorg von dem Dealer Love Juice für Love Fist!
+[TOSH4K2:TOSH4]
+~w~Legt ihn um!
-[ROK1_1A:ROCK1]
-Suchst du was Bestimmtes? Ich habe genau, was du brauchst!
+[TOSH4_7:TOSH4]
+~w~Bringe Toshiko Kazukis Schwert als Beweis, dass er tot ist.
-[ROK1_9:ROCK1]
-Danke für die Kohle, du Trottel!
+[TOSH4_8:TOSH4]
+~w~Du hast Kazuki verschreckt! Er flieht! Die Chance, ihn zu beseitigen, ist vertan!
-[RBM1_T:ROCK1]
-Wir brauchen Love Juice, Mann, klar?
+[TOSH4_C:TOSH4]
+Kazuki
-{=================================== MISSION TABLE ROCK2 ===================================}
+[TOSH4AA:TOSH4]
+~w~Hallo?
-[RBM2_A:ROCK2]
-Tommy, Mann, bin ich froh, dich zu sehen!
+[TOSH4AB:TOSH4]
+~w~Ich nehme ein Bad, Toni-San.
-[RBM2_B:ROCK2]
-Was ist los?
+[TOSH4AC:TOSH4]
+~w~Wir haben kaum noch Zeit.
-[RBM2_C:ROCK2]
-Schlechte Vibes, Tommy...
+[TOSH4AD:TOSH4]
+~w~Mein Mann weiß jetzt, wer hinter seinen Verlusten steckt.
-[RBM2_E:ROCK2]
-Da ist so 'n Typ, wir kennen ihn kaum, aber er kennt uns.
+[TOSH4AE:TOSH4]
+~w~Er kommt, um mich zu töten. Und Sie auch.
-[RBM2_F:ROCK2]
-So wie er da. Weiß alles über uns.
+[TOSH4AF:TOSH4]
+~w~Ich hab nicht vor, auf ihn zu warten. Wo ist er?
-[RBM2_G:ROCK2]
-Weiß, dass Willy auf Damenunterwäsche steht, eh!
+[TOSH4AG:TOSH4]
+~w~In Belleville. Er versammelt seine Leute.
-[RBM2_H:ROCK2]
-Oder dass Percy auf Duran Duran steht!
+[TOSH4AJ:TOSH4]
+~w~Doch bald wird er herkommen.
-[RBM2_K:ROCK2]
-Ja, die Liebesrakete, schon gut. Aber hör zu, dieser Typ...
+[TOSH4AH:TOSH4]
+~w~Sayonara, Süße.
-[RBM2_L:ROCK2]
-ja, ja, der Typ will Love Fist ausknipsen.
+[TOSH4AI:TOSH4]
+~w~Mein Gebet begleitet Sie, Toni-San. Viel Glück.
-[RBM2_M:ROCK2]
-Ausknipsen, Tommy.
+[TOSH4F1:TOSH4]
+~r~Kazuki lacht dich aus!
-[RBM2_N:ROCK2]
-Love Fist soll verschwinden. Wie es immer heißt: Die Besten sterben jung.
+[TOSH4OA:TOSH4]
+~w~Erledige Kazukis ~r~Wachen!
-[RBM2_O:ROCK2]
-Aber Tommy, du musst Love Fist retten!
+[TOSH4OB:TOSH4]
+~w~Fahr zurück zu ~y~Kazukis Casino!
-[RBM2_P:ROCK2]
-Wir geben in zwei Stunden eine Autogrammstunde, und ich glaube...
+[TOSH4OC:TOSH4]
+~w~Vorsicht - da kommen noch mehr ~r~Yakuza!
-[RBM2_Q:ROCK2]
-Und die Jungs glauben, dass der Kerl dort irgendwas plant.
+[TOSH4DA:TOSH4]
+~w~Erschießt ihn!
-[RBM2_1:ROCK2]
-~g~Fahre die Limo zum Ort der Autogrammstunde und versuche, den Irren zu finden.
+[TOSH4DB:TOSH4]
+~w~Erledigt ihn!
-[RBM2_2:ROCK2]
-~r~Du hast den Wagen der Band geschrottet!
+[TOSH4DC:TOSH4]
+~w~Erledigt ihn, ihr Arschlöcher!
-[RBM2_3:ROCK2]
-~g~Geh zu der Autogrammstunde!
+[TOSH4O1:TOSH4]
+~w~Begib dich zu ~y~Kazukis Versteck~w~ und leg ihn um!
-[RBM2_4:ROCK2]
-~g~Erledige den Irren. Lass ihn nicht entkommen!
+[TOSH4O3:TOSH4]
+~w~Begib dich zum ~y~Helipad!
-[RBM2_5:ROCK2]
-~r~Du hast ihn verloren, du Idiot!
+[CASH_01:TOSH4]
+Tja, Toshiko, jetzt ist es vorbei.
-[RBM2_7:ROCK2]
-~r~Die Fans wurden angegriffen. Der Irre wird nicht auftauchen!
+[CASH_02:TOSH4]
+Ja, ja, ich weiß. Hallo, Mr. Toni.
-[RBM2_8:ROCK2]
-~r~Die Security-Leute wurden angegriffen. Der Irre wird nicht auftauchen!
+[CASH_03:TOSH4]
+Hey. Tja, Sie haben gesiegt.
-[PSYCH_1:ROCK2]
-Love Fist wird in der Hölle braten!
+[CASH_04:TOSH4]
+Sie haben, was Sie wollten. Alles hat bestens geklappt.
-[PSYCH_2:ROCK2]
-Love Fist hat mein Leben zerstört!
+[CASH_06:TOSH4]
+Schön, ja, schön. Wirklich schön.
-[RBM2_I:ROCK2]
-Halt's Maul, du Irrer! Nur weil Jezz auf Schafe steht.
+[CASH_07:TOSH4]
+Jetzt heißt es Zahlemann und Söhne, Süßer.
-[RBM2_R:ROCK2]
-Hey, Schnauze!
+[CASH_08:TOSH4]
+Beide sind wir Narren und Mörder, Mr. Toni.
-[RBM2_D:ROCK2]
-Das ist kein Spaß, das ist 'ne brutale Geschichte, brutal, ok?
+[CASH_09:TOSH4]
+Kann schon sein.
-[RBM2_J:ROCK2]
-Ich sage nur, die Liebesrakete, ok?
+[CASH_10:TOSH4]
+Die Welt hat so eine verheerende Wirkung auf die Seele, finden Sie nicht auch, Mr. Toni?
-{=================================== MISSION TABLE ROCK3 ===================================}
+[CASH_11:TOSH4]
+Kann sein.
-[RBM3_A:ROCK3]
-Tommy! Tommy! Tommy, Mann, der Irre ist wieder da!
+[CASH_12:TOSH4]
+Aber Sie sind jetzt frei. Sie können nach Costa Rica oder Aruba gehen oder so.
-[RBM3_B:ROCK3]
-Was ist denn los?
+[CASH_13:TOSH4]
+Neu anfangen. Das wollten Sie doch immer.
-[RBM3_C:ROCK3]
-Dieser Irre lässt Love Fist nicht in Ruhe!
+[CASH_14:TOSH4]
+Ich glaube kaum, dass mir der Sinn nach einem Strandurlaub steht.
-[RBM3_D:ROCK3]
-Du hast ihn nicht erwischt, Mann. Und jetzt ist er wieder da.
+[CASH_15:TOSH4]
+Ich habe alles verloren, und das willentlich.
-[RBM3_E:ROCK3]
-Ja, ja, ja, und es ist nämlich so...
+[CASH_16:TOSH4]
+Mir wurde alles gewährt, was ich wollte.
-[RBM3_F:ROCK3]
-wir brauchen für die Limo einen Fahrer, dem wir vertrauen können,
+[CASH_17:TOSH4]
+Jetzt will ich nur noch frei sein.
-[RBM3_G:ROCK3]
-weil der Irre uns ständig bedroht!
+[CASH_18:TOSH4]
+Leben Sie wohl, Toni-San.
-[RBM3_I:ROCK3]
-Wir scheißen uns alle in die Hosen, Mann.
+{=================================== MISSION TABLE COPCAR ===================================}
-[RBM3_J:ROCK3]
-Ok, Jungs, nur die Ruhe. Ich mach das schon.
+[C_COMP1:COPCAR]
+~w~Bürgerwehr-Mission: Level 12 abgeschlossen! Kugelsichere Westen geben dir jetzt erhöhten Schutz!
-[RBM3_K:ROCK3]
-Normalerweise würde ich keine besoffenen, schottischen Tucken durch die Gegend kutschieren,
+[C_BREIF:COPCAR]
+~r~Verdächtiger~w~ wurde zuletzt in der Gegend von ~a~ gesichtet.
-[RBM3_L:ROCK3]
-aber für euch mache ich eine Ausnahme.
+[C_BREIG:COPCAR]
+~r~Verdächtige~w~ wurden zuletzt in der Gegend von ~a~ gesichtet.
-[ROK3_03:ROCK3]
-Dann mach mir einen großen.
+[C_RANGE:COPCAR]
+~r~Du bist außer Reichweite des Polizeifunks. Fahr näher an ein Polizeirevier heran!
-[ROK3_04:ROCK3]
-Hey, Tommy, nun mach mal halblang, Mann.
+[C_TIMEA:COPCAR]
+~w~Zeitbonus! +~1~ Sekunden
-[ROK3_08:ROCK3]
-Langsam wird's langweilig.
+[COPCART:COPCAR]
+~w~Du hast ~1~ Sekunden, um zu einem Polizeifahrzeug zurückzukehren, bevor die Mission endet.
-[ROK3_09:ROCK3]
-Halt bloß das Pedal durchgedrückt!!
+[COPCARU:COPCAR]
+~w~Du hast ~1~ Sekunde, um zu einem Polizeifahrzeug zurückzukehren, bevor die Mission endet.
-[ROK3_61:ROCK3]
-Wir müssen die Bombe finden!
+[C_CANC:COPCAR]
+~r~Bürgerwehr-Mission abgebrochen!
-[ROK3_28:ROCK3]
-Ich werd Bass in der Hölle spielen.
+[C_TIME:COPCAR]
+~r~Deine Zeit als Gesetzeshüter ist vorbei!
-[ROK3_30:ROCK3]
-Tu doch einer was!
+[C_PASS3:COPCAR]
+~w~BEDROHUNG AUSGERÄUMT! Belohnung: $~1~
-[ROK3_32:ROCK3]
-Ok, Obermacho, dann tu du doch was!
+[C_LEVEL:COPCAR]
+~r~Du hast die Kriminellen entkommen lassen!
-[ROK3_34:ROCK3]
-Willy könnte den TNT-Whiskey mit einem Strohhalm raussaugen.
+[C_RANG2:COPCAR]
+~r~Der Polizeifunk funktioniert nicht in der U-Bahn!
-[ROK3_37:ROCK3]
-Gebt Willy einen Strohhalm!
+{=================================== MISSION TABLE CARS ===================================}
-[ROK3_41:ROCK3]
-Welchen Draht, Tommy?
+[CARS_10:CARS]
+~w~Steig in ein Auto, um die Probefahrt zu starten, oder verlasse den Parkplatz, um die Mission zu beenden.
-[ROK3_42:ROCK3]
-Den grünen.
+[CARS_12:CARS]
+~w~Verlässt du das Auto, ist die Mission fehlgeschlagen.
-[ROK3_43:ROCK3]
-Da ist kein grüner. Oder ist der hier grün?
+[CARS_1:CARS]
+~w~Nimm einen der Kunden auf eine Probefahrt mit.
-[ROK3_44:ROCK3]
-Sieht für dich einer von den Drähten grün aus?
+[CARS_2:CARS]
+~w~Du musst herausfinden, was der jeweilige Kunde an Performance von einem Auto erwartet.
-[ROK3_49:ROCK3]
-Ich hab euch doch jahrelang nur mitgeschleppt.
+[CARS_3:CARS]
+~w~Zeige dann mittels deiner Fahrkünste, dass das Auto genau das zu bieten hat, was der Kunde sucht.
-[ROK3_51:ROCK3]
-Ein großes keifendes Weib.
+[CARS_5:CARS]
+~w~Beeindrucke den Kunden.
-[ROK3_52:ROCK3]
-Ja.
+[CARS_6:CARS]
+~w~Kunde k.o.! Nimm ein anderes Auto.
-[ROK3_53:ROCK3]
-Klappe jetzt und zieht einen Draht raus.
+[CARS_30:CARS]
+~w~Fahr zurück zum ~y~Autohandel~w~, um das Geschäft abzuschließen.
-[ROK3_54:ROCK3]
-Welchen?
+[CARS_C1:CARS]
+~w~Klasse, Mann, Sie schütteln die Bullen ab, hä?
-[ROK3_55:ROCK3]
-Den da...
+[CARS_C2:CARS]
+~w~Ja! Der Idiot hat's nicht anders gewollt!
-[ROK3_56:ROCK3]
-NEIN!
+[CARS_P1:CARS]
+~w~Wow! Der Schlitten geht ja Überschall!
-[ROK3_57:ROCK3]
-Mann, alles ok. Wir sind nicht hochgegangen, Alter. Tommy, Mann, gut gemacht. Rock 'n' Roll, Mann.
+[CARS_P2:CARS]
+~w~Wuhu!
-[ROK3_58:ROCK3]
-Müssen wir nicht zu einem Gig? Krach machen? Groupies abgreifen?
+[CARS_P3:CARS]
+~w~Da fährt ja meine Tante schneller!
-[ROK3_59:ROCK3]
-LOVE FIST!
+[CARS_P4:CARS]
+~w~Hat das Dings Airbags?
-[ROK3_60:ROCK3]
-Bist du fertig mit der Pulle?
+[CARS_M1:CARS]
+~w~Ah, was für eine schöne, gemütliche Fahrt.
-[RBM3_4:ROCK3]
-~r~Love Fist ist Geschichte!
+[CARS_M2:CARS]
+~w~Ist Ihnen klar, was die Höchstgeschwindigkeit hier ist?!
-[RBM3_6:ROCK3]
-DETONATION:
+[CARS_M3:CARS]
+~w~Oh, Gott! Sie bringen uns ja um!
-[RBM3_1:ROCK3]
-~g~Chauffiere Love Fist zu ihrem Auftritt.
+[CARS_O1:CARS]
+~w~Oh, ja! Endlich kein blöder Asphalt mehr!
-[RBM3_2:ROCK3]
-Falls du versuchst, aus dem Auto auszusteigen, wenn die Bombe scharfgemacht ist, wird sie explodieren...
+[CARS_O2:CARS]
+~w~Ab in die Wolken, Kumpel!
-[RBM3_3:ROCK3]
-Ist der Detonations-Balken am Anschlag, explodiert die Bombe.
+[CARS_O3:CARS]
+~w~Cooler Salto, Mann!
-[RBM3_8:ROCK3]
-Je schneller du fährst, desto niedriger der Detonations-Balken.
+[CARS_SC:CARS]
+~w~Verkauf getätigt. Provision: $~1~. Zeit-Bonus: ~1~ Sekunden.
-[RBM3_7:ROCK3]
-~g~BOMBE ENTSCHÄRFT!
+[CARS_SD:CARS]
+~w~Level ~1~ abgeschlossen. Provision: $~1~. Zeit-Bonus: ~1~ Sekunden.
-[ROK3_6A:ROCK3]
-~g~Love Fist. Ihr habt den Äther lange genug verschmutzt!
+[CARS_IR:CARS]
+~1~ HINTEREINANDER! Bonus! $~1~.
-[ROK3_6B:ROCK3]
-~g~Ich wollte euer Freund sein. Jetzt will ich, dass ihr untergeht.
+[CARS_RE:CARS]
+~w~Eine kleine Vergünstigung für unseren Top-Verkäufer!
-[ROK3_62:ROCK3]
-Wir dachten, wir zeigen dir mal unseren Rocktempel...
+[CARSIC1:CARS]
+~w~Ich brauch einen, in dem sie mich nicht so schnell schnappen, Mann.
-[ROK3_63:ROCK3]
-Kannst dir die Power von Love Fist reinziehen!
+[CARSIC2:CARS]
+~w~Ich brauch eins, mit dem ich's diesen Gehweg-Pennern zeigen kann.
-[ROK3_64:ROCK3]
-Hör sich das einer an, Mann. Das ist Pappmaché und Klebeband.
+[CARSIP1:CARS]
+~w~Das Baby sieht schnell aus!
-[ROK3_65:ROCK3]
-Hey, für die Kids ist es ein Tempel, und wir sind die Priester!
+[CARSIP2:CARS]
+~w~Oh, Mann! Ich wette, die Kiste kann fliegen!
-[ROK3_66:ROCK3]
-Tja, wenn die Kids es toll finden, dass ihre Priester dicht und unmusikalisch sind,
+[CARSIM1:CARS]
+~w~Es heißt, mit denen kann man schön gemütlich rollen.
-[ROK3_67:ROCK3]
-was soll man da sagen?
+[CARSIM2:CARS]
+~w~Seit meiner Operation brauch ich ein langsameres Auto.
-[ROK3_68:ROCK3]
-Oh, Mist, das Ding frisst schon wieder das Band.
+[CARSIO1:CARS]
+~w~Geiler Off-Roader! Fahren wir Gelände!
-[ROK3_69:ROCK3]
-Wenn das so ist, müssen wir live spielen.
+[CARSIO2:CARS]
+~w~Mein Kumpel legt mit seiner Karre geile Saltos hin - auf so Scheiß steh ich!
-[ROK3_70:ROCK3]
-Ooooh Shit! Mein Darm...
+[CARS_N1:CARS]
+~w~Die Schrottkarre kauf ich nicht!
-[ROK3_01:ROCK3]
-Endlich, Mann, Zeit für einen wohlverdienten Drink.
+[CARS_N2:CARS]
+~w~Haben Sie allen Ernstes geglaubt, ich kauf dieses Wrack!
-[ROK3_02:ROCK3]
-Die Halle ist nur 100 Meter die Straße runter.
+[CARS_N3:CARS]
+~w~Ihr Gebrauchtwagenhändler seid alle gleich!
-[ROK3_05:ROCK3]
-Ich werd irre, wenn ich keinen Sprit kriege.
+[CARS_Y1:CARS]
+~w~Ich nehm's!
-[ROK3_07:ROCK3]
-Tommy, mein Freund, wir müssen die Band retten!
+[CARS_Y2:CARS]
+~w~Das ist das ideale Auto für mich!
-[ROK3_29:ROCK3]
-Tommy, bleib auf dem Gas, Alter.
+[CARS_Y3:CARS]
+~w~Wir kommen ins Geschäft!
-[ROK3_31:ROCK3]
-Ganz toll. 'Tu doch einer was.' Was ist denn das für eine Ansage? Da kenn ich mutigere Mädels.
+[CARS_R1:CARS]
+~w~Das Modell gefällt mir, nur die Farbe nicht.
-[ROK3_33:ROCK3]
-Alter, ich bin Musiker. Vom Bomben-Entschärfen hab ich keinen blassen Dunst.
+[CARS_R2:CARS]
+~w~Lass das Auto umspritzen!
-[ROK3_35:ROCK3]
-Eben, so was liegt dir doch, was ich so höre.
+[CARS_D1:CARS]
+~w~Es gefällt mir, aber es ist ziemlich verbeult!
-[ROK3_38:ROCK3]
-Einen Strohhalm?! Dies ist der Tour-Bus von Love Fist!
+[CARS_D2:CARS]
+~w~Lass das Auto reparieren!
-[ROK3_39:ROCK3]
-Wo zum Geier sollte hier ein Strohhalm sein?
+[CARS_F1:CARS]
+~r~Du hast das Auto zerstört!
-[ROK3_46:ROCK3]
-Ich hätte euch alle rausschmeißen sollen, als es noch ging, Mann.
+[CARS_F2:CARS]
+~r~Du hast den Kunden umgebracht!
-[ROK3_47:ROCK3]
-Kapitalist.
+[CARS_F3:CARS]
+~r~Du hast zu lange gebraucht! Dem Kunden wurde langweilig!
-[ROK3_48:ROCK3]
-Kameradenschwein.
+[CARS_F4:CARS]
+~r~Der Kunde hasst das Auto!
-[ROK3_73:ROCK3]
-Jezz spielt das Band ab,
+[CARS_F5:CARS]
+~r~Deine Zeit als Autohändler ist vorbei!
-[RBM3_9:ROCK3]
-Wenn du angehalten wirst oder langsam fährst, wächst der Detonations-Balken.
+[CARS_F6:CARS]
+~r~Der Kunde hasst das Auto - du hast es geschrottet!
-[ROK3_50:ROCK3]
-Halt die Klappe. Du bist ein Idiot.
+[CARS_F7:CARS]
+~r~Der Kunde hasst das Auto - du bist zu schnell gefahren!
-[ROK3_36:ROCK3]
-Hey, ich war an dem Abend vielleicht komplett zugedröhnt!
+[CARS_F8:CARS]
+~r~Der Kunde hasst das Auto - du bist zu langsam gefahren!
-[RBM3_H:ROCK3]
-Ich scheiß mir in die Hose, Mann. Ich will zu meiner Mama!
+[CARS_SA:CARS]
+Verkauf
-[ROK3_45:ROCK3]
-Oh nein. Im Angesicht des Todes sieht alles grün aus.
+[CARS_7:CARS]
+~w~Steig in ein ~b~Auto!
-[ROK3_6C:ROCK3]
-~g~Wenn ihr langsamer werdet, geht eure Limo hoch, IHR UND EURE HAARIGEN ÄRSCHE mit dazu!
+[CARS_RF:CARS]
+~w~Capital Autos steht jetzt unter deinem 'Schutz'. Hol dir dein Schutzgeld regelmäßig ab.
-[ROK3_71:ROCK3]
-Wir müssen uns ranhalten. Danke nochmal, Tommy, du hast es echt drauf. Ciao.
+{=================================== MISSION TABLE BIKE ===================================}
-[ROK3_1:ROCK3]
-Endlich, Mann, Zeit für einen wohlverdienten Drink. Die Halle ist nur 100 Meter die Straße runter.
+[BIKE_10:BIKE]
+~w~Schwing dich auf ein Bike, um die Probefahrt zu starten, oder verlasse die Gasse, um die Mission zu beenden.
-[ROK3_2:ROCK3]
-Mach mir mal einen großen. Hey, Tommy, leg mal 'nen anderen Sound auf, Mann.
+[BIKE_12:BIKE]
+~w~Steigst du aus dem Sattel, ist die Mission fehlgeschlagen.
-[ROK3_3:ROCK3]
-Ich werd wirr im Kopf, wenn nichts zum Headbangen läuft. Hey, Tommy, leg mal dieses Band ein.
+[BIKE_1:BIKE]
+~w~Nimm einen der Kunden auf eine Probefahrt mit.
-[ROK3_4:ROCK3]
-Love Fist. Ihr habt den Äther lange genug verschmutzt! Ich wollte euer Freund sein.
+[BIKE_2:BIKE]
+~w~Du musst herausfinden, was der jeweilige Kunde an Performance von einem Motorrad erwartet.
-[ROK3_5:ROCK3]
-Jetzt will ich, dass ihr untergeht. Wenn ihr langsamer werdet, geht eure Limo hoch, IHR UND EURE HAARIGEN ÄRSCHE mit dazu!
+[BIKE_3:BIKE]
+~w~Zeige dann mittels deiner Fahrkünste, dass das Motorrad genau das zu bieten hat, was der Kunde sucht.
-[ROK3_6:ROCK3]
-Tommy, mein Freund, du musst die Band retten! Langsam wird's langweilig. Halt bloß das Pedal durchgedrückt!!
+[BIKE_5:BIKE]
+~w~Beeindrucke den Kunden.
-[ROK3_7:ROCK3]
-Wir müssen die Bombe finden! Können wir nicht einfach den ganzen Tag rumfahren? Wir haben jedenfalls jede Menge zu saufen.
+[BIKE_30:BIKE]
+~w~Fahr zurück zum ~y~Motorradhandel~w~, um das Geschäft abzuschließen.
-[ROK3_8:ROCK3]
-Könnte die Bombe nicht unter der Motorhaube sein? Da kommen wir nie ran, ohne anzuhalten! Wir werden alle sterben! Ich besauf mich!
+[BIKE_C1:BIKE]
+~w~Klasse, Mann, Sie schütteln die Bullen ab, hä?
-[ROK3_9:ROCK3]
-Hey, hier gibt's eine Warteschlange, Alter! Die Lösung liegt nicht in der Minibar! Weg da!
+[BIKE_C2:BIKE]
+~w~Ja! Der Idiot hat's nicht anders gewollt!
-[ROK3_10:ROCK3]
-Hey, aus der Wodkapulle kommen Drähte raus! Das ist kein Wodka, das ist TNT-WHISKEY!
+[BIKE_P1:BIKE]
+~w~Ja! Das Ding ist unglaublich!
-[ROK3_11:ROCK3]
-WAAAAAAGGGHHHH!!!! Das Ding ist scharfgemacht!! WAAAAAAAAAAGGGHHHHHH!!!!
+[BIKE_P2:BIKE]
+~w~Super!
-[ROK3_12:ROCK3]
-Man hat mir immer gesagt, der Alk wird mich killen... Das kenn ich aus dem Fernsehen. Du musst einen der Drähte rausziehen. Welchen Draht? Weiß ich doch nicht, Mann.
+[BIKE_P3:BIKE]
+~w~Komm, können Sie nicht schneller fahren!
-[ROK3_13:ROCK3]
-Keinen Schimmer. Willy, sag doch mal was. Ich werd Bass in der Hölle spielen.
+[BIKE_P4:BIKE]
+~w~Vorsicht!
-[ROK3_14:ROCK3]
-Tommy, bleib auf dem Gas, Mann. Tu doch einer was! Ganz toll...
+[BIKE_M1:BIKE]
+~w~Ah, was für eine schöne, gemütliche Fahrt.
-[ROK3_15:ROCK3]
-'Tu doch einer was.' Was ist denn das für eine Ansage? Da kenn ich mutigere Mädchen. Ok, Obermacho, dann tu du doch was!
+[BIKE_M2:BIKE]
+~w~Ist Ihnen klar, was die Höchstgeschwindigkeit hier ist?!
-[ROK3_16:ROCK3]
-Alter, ich bin Musiker. Mit Bomben kenne ich mich nicht aus. Willy könnte den TNT-Whiskey mit einem Strohhalm raussaugen.
+[BIKE_M3:BIKE]
+~w~Oh, Gott! Sie bringen uns ja um!
-[ROK3_17:ROCK3]
-Eben, so was liegt dir doch, was ich so höre. Hey, ich war total blau an dem Abend, das wisst ihr ganz genau!
+[BIKE_O1:BIKE]
+~w~Oh, ja! Endlich kein blöder Asphalt mehr!
-[ROK3_18:ROCK3]
-Gebt Willy einen Strohhalm! Einen Strohhalm?! Wi sind im Band-Auto von Love Fist!
+[BIKE_O2:BIKE]
+~w~Ab in die Wolken, Kumpel!
-[ROK3_19:ROCK3]
-Wo zum Geier sollte hier ein Strohhalm sein? Welchen Draht, Tommy? Den grünen. Da ist kein grüner.
+[BIKE_O3:BIKE]
+~w~Geile Stunts, Kumpel!
-[ROK3_20:ROCK3]
-Oder ist der hier grün? Sieht für dich einer von den Drähten grün aus?
+[BIKE_SC:BIKE]
+~w~Verkauf getätigt. Provision: $~1~. Zeit-Bonus: ~1~ Sekunden.
-[ROK3_21:ROCK3]
-Oh nein. Im Angesicht des Todes sieht alles grün aus. Ich hätte euch alle rausschmeißen sollen, als es noch ging, Mann.
+[BIKE_IR:BIKE]
+~1~ HINTEREINANDER! Bonus! $~1~.
-[ROK3_22:ROCK3]
-Kameradenschwein. Kapitalist. Ich hab euch doch jahrelang nur mitgeschleppt. Halt die Klappe. Du bist ein Idiot.
+[BIKE_RE:BIKE]
+~w~Eine kleine Vergünstigung für unseren Top-Verkäufer!
-[ROK3_23:ROCK3]
-Ein großes keifendes Weib. Ja. Klappe jetzt und zieht einen Draht raus. Welchen? Den da...
+[BIKE_RF:BIKE]
+~w~Hogs & Cogs steht jetzt unter deinem 'Schutz'. Hol dir dein Schutzgeld regelmäßig ab.
-[ROK3_24:ROCK3]
-NEIN! Mann, alles ok. Wir sind nicht hochgegangen, Alter.
+[BIKEIC1:BIKE]
+~w~Ich brauch eins, mit dem sie mich nicht so schnell schnappen, Mann.
-[ROK3_25:ROCK3]
-Tommy, Mann, gut gemacht. Rock 'n' Roll, Mann. Müssen wir nicht zu einem Gig?
+[BIKEIC2:BIKE]
+~w~Ich brauch eins, mit dem ich's diesen Gehweg-Pennern zeigen kann.
-[ROK3_26:ROCK3]
-Krach machen? Groupies abgreifen? LOVE FIST!
+[BIKEIP1:BIKE]
+~w~Der Ofen sieht schnell aus!
-[ROK3_27:ROCK3]
-Bist du fertig mit der Pulle?
+[BIKEIP2:BIKE]
+~w~Ich will was, was Weiber beeindruckt!
-{=================================== MISSION TABLE SERG1 ===================================}
+[BIKEIM1:BIKE]
+~w~Es heißt, mit denen kann man schön gemütlich rollen.
-[TEX1_0:SERG1]
-~g~Die Zielperson ist auf der Driving Range. Sorg dafür, dass er seinen letzten Golfball geschlagen hat!
+[BIKEIM2:BIKE]
+~w~Ich hab erst heute den Führerschein gemacht, deshalb brauch ich ein langsameres Bike.
-[TEX1_A:SERG1]
-Komm rein und setz dich auf deinen Hintern, Junge.
+[BIKEIO1:BIKE]
+~w~Geile Gelände-Gurke! Fahren wir Off-road!
-[TEX1_B:SERG1]
-Mein Daddy hat immer gesagt, einem geschenkten Gaul schaut man nicht ins Maul. Hat's auch nie getan.
+[BIKEIO2:BIKE]
+~w~Mit dem Ding kann man coole Stunts machen, oder?
-[TEX1_C:SERG1]
-Ein Gläschen alter Kentucky gefällig?
+[BIKE_N1:BIKE]
+~w~Die Schrottmühle kauf ich nicht!
-[TEX1_D:SERG1]
-Nein danke.
+[BIKE_N2:BIKE]
+~w~Haben Sie allen Ernstes geglaubt, ich kauf dieses Wrack!
-[TEX1_E:SERG1]
-Ein nüchterner Denker, das gefällt mir.
+[BIKE_N3:BIKE]
+~w~Ihr Gebrauchtmotorradhändler seid alle gleich!
-[TEX1_F:SERG1]
-Im Immobiliengeschäft geht's nicht um hochtrabende Verträge.
+[BIKE_Y1:BIKE]
+~w~Ich nehm's!
-[TEX1_G:SERG1]
-Es geht um Land. Und darum, dieses Land zu kriegen. Kannst du mir folgen?
+[BIKE_Y2:BIKE]
+~w~Das ist das ideale Motorrad für mich!
-[TEX1_H:SERG1]
-Oh, ja.
+[BIKE_Y3:BIKE]
+~w~Wir kommen ins Geschäft!
-[TEX1_I:SERG1]
-Ich will, dass so ein sturer Hund sein Land hergibt.
+[BIKE_R1:BIKE]
+~w~Das Modell gefällt mir, nur die Farbe nicht.
-[TEX1_J:SERG1]
-Mir scheint, du könntest ihn dazu überreden.
+[BIKE_R2:BIKE]
+~w~Lass das Motorrad umspritzen!
-[TEX1_K:SERG1]
-Ich bin der reinste Überredungskünstler.
+[BIKE_D1:BIKE]
+~w~Es gefällt mir, aber es ist ziemlich verbeult!
-[TEX1_L:SERG1]
-Ja. Er wird im Country Club sein, auf dem Golfplatz.
+[BIKE_D2:BIKE]
+~w~Lass das Motorrad reparieren!
-[TEX1_M:SERG1]
-Knarren sind dort verboten. Seine Bodyguards werden also unbewaffnet sein.
+[BIKE_F1:BIKE]
+~r~Du hast das Motorrad zerstört!
-[TEX1_N:SERG1]
-Du sollst ihn so richtig gründlich vermöbeln.
+[BIKE_F2:BIKE]
+~r~Du hast den Kunden umgebracht!
-[TEX1_O:SERG1]
-Hier, ich hab dir einen Mitgliedsausweis besorgt. Aber du brauchst passendere Kleidung.
+[BIKE_F3:BIKE]
+~r~Du hast zu lange gebraucht! Dem Kunden wurde langweilig!
-[TEX1_2:SERG1]
-~g~Begib dich jetzt zum Leaf Links Golf Club.
+[BIKE_F4:BIKE]
+~r~Der Kunde hasst das Motorrad!
-[TEX1_3:SERG1]
-Wer ist der Kerl? Jungs, nehmt ihn euch vor.
+[BIKE_F5:BIKE]
+~r~Deine Zeit als Motorradhändler ist vorbei.
-[TEX1_6:SERG1]
-Hübscher Hintern, Baby!
+[BIKE_F6:BIKE]
+~r~Der Kunde hasst das Motorrad - du hast es geschrottet!
-[TEX1_7:SERG1]
-Bin ich das?
+[BIKE_F7:BIKE]
+~r~Der Kunde hasst das Motorrad - du bist zu schnell gefahren!
-[TEX1_8:SERG1]
-Jedesmal wenn du in einen Golfwagen steigst, erhältst du automatisch einen Golfschläger, vorausgesetzt, du hast nicht schon eine Nahkampfwaffe.
+[BIKE_F8:BIKE]
+~r~Der Kunde hasst das Motorrad - du bist zu langsam gefahren!
-[TEX1_9:SERG1]
-Schnapp ihn dir!
+[BIKE_B1:BIKE]
+~w~Du hast ~1~ Sekunden, um wieder auf das ~b~Motorrad~w~ zu steigen!
-[TEX1_10:SERG1]
-Mach den Irren fertig!
+[BIKE_B2:BIKE]
+~w~Lass den ~b~Kunden~w~ wieder auf das Motorrad steigen!
-[TEX1_1:SERG1]
-~g~Besorg dir bei Jocksport Golferklamotten.
+[BIKE_B3:BIKE]
+~w~Lass den ~b~Kunden~w~ auf das Motorrad steigen!
-{=================================== MISSION TABLE SERG2 ===================================}
+[BIKE_SA:BIKE]
+Verkauf
-[TEXEXIT:SERG2]
-~g~Jetzt verschwinde aus Little Haiti!
+[BIKE_7:BIKE]
+~w~Steig auf ein ~b~Motorrad!
-[TEX_2A:SERG2]
-~g~Großartig! Sie haben dich bemerkt!
+[BIKE_S1:BIKE]
+~w~Du hast alle Freeways, die wir vorrätig hatten, verkauft!
-[TEX_2B:SERG2]
-~r~Narr! Die Leute müssen SEHEN, dass der Täter ein Kubaner ist!
+[BIKE_S2:BIKE]
+~w~Du hast alle PCJ 600, die wir vorrätig hatten, verkauft!
-[TEX_2C:SERG2]
-~g~Besorge dir bei Rafael's Kleidung in den Farben der kubanischen Gang.
+[BIKE_S3:BIKE]
+~w~Du hast alle Faggios, die wir vorrätig hatten, verkauft!
-[TEX_2D:SERG2]
-~g~Nimm dir jetzt den Boss der Haitianer in Romeros Beerdigungsinstitut vor.
+[BIKE_S4:BIKE]
+~w~Du hast alle Sanchez, die wir vorrätig hatten, verkauft!
-[TEX2_A:SERG2]
-Tommy, das ist Donald Love. Donald, das ist Tommy Vercetti,
+[BIKE_SN:BIKE]
+~w~Es wurde neue Ware angeliefert!
-[TEX2_B:SERG2]
-der neueste Draufgänger hier in der Stadt.
+{=================================== MISSION TABLE RAC1 ===================================}
-[TEX2_C:SERG2]
-Ja...äh...
+[RAC1_A0:RAC1]
+~w~Wenn du beweisen willst, dass deine Karre keine Schrottmühle ist, dann starte beim nächsten Straßenrennen.
-[TEX2_D:SERG2]
-Donald, sei still und hör zu. Vielleicht kannst du was lernen.
+{=================================== MISSION TABLE RAC2 ===================================}
-[TEX2_E:SERG2]
-Also. Nichts lässt Immobilienpreise schneller abstürzen als ein guter alter Bandenkrieg.
+[RAC2_A0:RAC2]
+~w~Hey, es heißt, es findet ein Straßenrennen statt. Fahr deine Karre an die Startlinie.
-[TEX2_F:SERG2]
-Außer vielleicht eine Katastrophe, eine biblische Plage oder so,
+{=================================== MISSION TABLE RAC3 ===================================}
-[TEX2_G:SERG2]
-aber das ginge hier wohl zu weit.
+[RAC3_A0:RAC3]
+~w~Gibt kein schnelleres Auto, gibt keinen besseren Fahrer.
-[TEX2_H:SERG2]
-Kannst du mir folgen, Brillenschlange?
+[RAC3_A1:RAC3]
+~w~Ich seh dich dann beim nächsten Straßenrennen... im Rückspiegel.
-[TEX2_I:SERG2]
-Jüngst starb ein haitianischer Gang-Boss. Man tippt, es waren die Kubaner, aber keiner weiß es.
+{=================================== MISSION TABLE BIK1 ===================================}
-[TEX2_J:SERG2]
-Aber wir wollen sicher gehen. Du verkleidest dich als kubanischer Hombre
+[BIK1_A0:BIK1]
+~w~Du glaubst, du kannst mich schlagen? Keine Chance!
-[TEX2_K:SERG2]
-und machst Krawall bei der Beerdigung. Misch sie auf und dann verzieh dich.
+[BIK1_A1:BIK1]
+~w~Fahr dein Motorrad an die Startlinie und dann geht's los!
-[TEX2_L:SERG2]
-Kannst du mir folgen, Donald?
+{=================================== MISSION TABLE BIK2 ===================================}
-[TEX2_M:SERG2]
-Das dürfte das Fass zum Überlaufen bringen, was?
+[BIK2_A0:BIK2]
+~w~Wenn du glaubst, du kannst mich bei 'nem Rennen schlagen, dann lass deine Reifen sprechen!
-[TEX2_N:SERG2]
-Und wir lehnen uns zurück und sehen zu, wie die Preise purzeln.
+[BIK2_A1:BIK2]
+~w~Wir sehen uns an der Startlinie.
-{=================================== MISSION TABLE SERG3 ===================================}
+{=================================== MISSION TABLE BIK3 ===================================}
-[TEX3_A:SERG3]
-Pass auf, Junge. Ich habe ein Problem und denke, du könntest mir weiterhelfen.
+[BIK3_A0:BIK3]
+~w~Es ist ganz einfach: Auf zwei Rädern schlägt mich keiner. Legen wir los.
-[TEX3_B:SERG3]
-Ich bin kein Bauunternehmer.
+{=================================== MISSION TABLE TT1 ===================================}
-[TEX3_C:SERG3]
-Nein, ich dachte mehr an deine Talente als Abrissunternehmer.
+[TT1_A0:TT1]
+~w~~k~ ~AMBUY~ ~w~zum Teilnehmen. ~n~~k~ ~AMEXI~ ~w~zum Abbrechen.
-[TEX3_D:SERG3]
-Das hier zeigt, was wir geplant haben. Und so-
+[TT1_0:TT1]
+Zeit
-[TEX3_E:SERG3]
--so sieht der betreffende Grund heute aus.
+[TT1_1:TT1]
+~w~Neuer Rundenrekord: ~1~:~1~
-[TEX3_F:SERG3]
-Sie wollen sagen, das neue Bürohaus da ist Ihnen im Weg.
+[TT1_1A:TT1]
+~w~Neuer Rundenrekord: ~1~:0~1~
-[TEX3_G:SERG3]
-Gut mitgedacht.
+[TT1_C1:TT1]
+~w~3
-[TEX3_H:SERG3]
-Also, ich verdrücke mich eine Weile aus der Stadt,
+[TT1_C2:TT1]
+~w~2
-[TEX3_I:SERG3]
-und wenn dieses Bürogebäude urplötzlich irreparable Schäden aufweist, dann...
+[TT1_C3:TT1]
+~w~1
-[TEX3_J:SERG3]
-....fühlen Sie sich als guter Mensch verpflichtet, einzuspringen und
+[TT1_C4:TT1]
+~w~LOS!
-[TEX3_K:SERG3]
--für die Neugestaltung eines wichtigen Gebiets der Stadt zu sorgen?
+[TT1_D1A:TT1]
+~w~Höhe: ~1~ Fuß
-[TEX3_L:SERG3]
-Wo finde ich mehr Männer wie dich?
+[TT1_D2:TT1]
+~w~Runde ~1~ - Zeit: ~1~:~1~
-[TEX3_1:SERG3]
-~g~Benutze den ferngesteuerten Helikopter, um Bomben zu 4 Zielen an dem zur Sprengung vorgesehenen Gebäude zu transportieren.
+[TT1_D3:TT1]
+~w~Runde ~1~ - Zeit: ~1~:0~1~
-[TEX3_2:SERG3]
-~g~Du musst an jedem Ziel eine Bombe abwerfen. Die Reihenfolge ist beliebig.
+[TT1_D4:TT1]
+~w~Runde
-[TEX3_3:SERG3]
-~g~Steuere den Helikopter direkt über eine Bombe, um sie aufzunehmen. Die Bombe heftet sich dann automatisch an den Helikopter.
+[TT1_F2:TT1]
+~r~Du hast die Strecke verlassen!
-[TEX3_5:SERG3]
-~g~Wenn eine Bombe ihr Ziel verfehlt, kannst du sie erneut aufnehmen und es nochmal versuchen.
+[TT1_F3:TT1]
+~r~Du hast das Motorrad geschrottet!
-[TEX3_7:SERG3]
-~g~Dann hast du noch 7 Minuten, um die restlichen Bomben im Ziel zu platzieren.
+[TT1_D5A:TT1]
+~w~Höhe: ~1~ Fuß - $10 Bonus!
-[TEX3_8:SERG3]
-~g~Du hast das Ziel verfehlt! Nimm die Bombe wieder auf und versuche es nochmal!
+[TT1_D1:TT1]
+~w~Höhe: ~1~ Meter
-[TEX3_10:SERG3]
-~g~Wirf die Bombe über einem der Ziele ab.
+[TT1_D5:TT1]
+~w~Höhe: ~1~ Meter - $10 Bonus!
-[TEX3_11:SERG3]
-Verbleibende Ziele:
+[TT1_2:TT1]
+~w~Du hast die Ziel-Zeit unterboten! Nächster Kurs freigeschaltet - $100 Bonus!
-[TEX3_17:SERG3]
-~r~Die Zeit ist um. Du hast es nicht geschafft, das Gebäude zu sprengen.
+[TT1_3:TT1]
+~w~Du hast die Ziel-Zeit unterboten - $100 Bonus!
-[TEX3_18:SERG3]
-~r~Dein Helikopter wurde zerstört! Wie willst du jetzt die Bomben transportieren?
+[TTDONE:TT1]
+~w~Alle Kurse absolviert! Du hast die 'Manchez' freigeschaltet.
-[TEX3_19:SERG3]
-~r~Deine Bombe ist im Wasser gelandet! Du brauchst ALLE 4 Bomben, um die Sprengung vorzunehmen.
+[TT1_2A:TT1]
+~r~Du hast die Ziel-Zeit nicht erreicht.
-[TEX3_20:SERG3]
-~g~Dein Helikopter ist fast außer Reichweite. Du musst zurück zur Baustelle, um deine Arbeit zuende zu bringen!
+[TT1_2B:TT1]
+~r~Du hast den Streckenrekord nicht unterbieten können.
-[TEX3_21:SERG3]
-~r~Dein Helikopter befindet sich außer Reichweite!
+{=================================== MISSION TABLE RCR ===================================}
-[TEX3_24:SERG3]
-Drücke ~h~~k~~VEHICLE_LOOKLEFT~~w~, um den Helikopter gegen den Uhrzeigersinn zu drehen.
+[RCRACE3:RCR]
+~w~Schlage die anderen RC-Fahrzeuge in einem ~1~-Rundenrennen um den Park!
-[TEX3_25:SERG3]
-Drücke ~h~~k~~VEHICLE_LOOKLEFT~~w~, um den Helikopter im Uhrzeigersinn zu drehen.
+[RCRACE4:RCR]
+~w~Schlage die anderen RC-Fahrzeuge in einem ~1~-Rundenrennen um den Flughafen!
-[TEX3_27:SERG3]
-~g~Über eine Haupttreppe hat man Zugang zu allen Stockwerken des Gebäudes.
+[RCRACE7:RCR]
+~w~Mach dich bereit...
-[TEX3_31:SERG3]
-~r~Du hast den Wagen mit den Bomben und dem ferngesteuerten Helikopter zerstört!
+[RCRLAP5:RCR]
+~w~Neuer Rundenrekord: ~1~ Sekunden!
-[TEX3_32:SERG3]
-Du kannst ~h~nach hinten sehen~w~, indem du ~h~gleichzeitig ~k~~VEHICLE_LOOKLEFT~ und ~k~~VEHICLE_LOOKRIGHT~ drückst~w~.
+[RCRLAP6:RCR]
+~w~Noch ~1~ Runden!
-[TEX3_4:SERG3] { reVC update }
-~g~Um eine Bombe abzuwerfen, drücke die~h~ ~k~~VEHICLE_FIREWEAPON~~w~.
+[RCRLAP7:RCR]
+~w~Letzte Runde!
-[TEX3_29:SERG3] { reVC update }
-Um eine Bombe abzuwerfen, drücke die~h~ ~k~~VEHICLE_FIREWEAPON~.
+[RCRLTME:RCR]
+Rundenzeit
-[TEX3_26:SERG3]
-Drücke die ~h~~k~~VEHICLE_BRAKE~~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~verliert dann an Höhe.
+[RCRLOSE:RCR]
+~r~Verloren! Du bist und bleibst ein Amateur!
-[TEX3_22:SERG3]
-Drücke die ~h~~k~~VEHICLE_ACCELERATE~~w~, um die Rotorgeschwindigkeit zu erhöhen, der Helikopter ~h~gewinnt dann an Höhe.
+[RCRLOS2:RCR]
+~r~Du gewinnst nie ein Rennen, wenn du nicht auf dem Kurs bleibst!
-[TEX3_16:SERG3]
-~g~Begib dich zu dem ~w~TOPFUN~g~-Wagen nahe dem zum Abriss vorgesehenen Gebäude.
+[RCRTIME:RCR]
+~w~Du hast ~h~~1~ ~w~Sekunden, um auf die Strecke zurückzukehren!
-[TEX3_33:SERG3]
-Wenn du eine Bombe aufgenommen hast, zeigt dir das Radar die Position des Ziels in Relation zu dem ferngesteuerten Helikopter.
+[RCRWIN1:RCR]
+~w~Gratuliere! Du hast GESIEGT - aber den Rundenrekord nicht verbessert!
-[TEX3_34:SERG3]
-Ein ~h~nach oben zeigendes Dreieck ~w~bedeutet, dass das Ziel sich in ~h~größerer Höhe ~w~befindet als der Helikopter.
+[RCRWIN2:RCR]
+~w~Dein nächstes Rennen geht über ~1~ Runden!
-[TEX3_35:SERG3]
-Ein ~h~nach unten zeigendes Dreieck ~w~bedeutet, dass das Ziel sich in ~h~geringerer Höhe ~w~befindet als der Helikopter.
+[RCRWIN3:RCR]
+~w~RC-Rennen in Belleville Park, Staunton ist jetzt verfügbar.
-[TEX3_36:SERG3]
-Ein ~h~Viereck ~w~ bedeutet, dass das Ziel sich auf ~h~der gleichen Höhe ~w~befindet wie der Helikopter.
+[RCRWIN4:RCR]
+~w~RC-Rennen im Shoreside Airport ist jetzt verfügbar.
-[TEX3_6:SERG3]
-~g~Wenn du die erste Bombe aufgenommen hast, wird der Zeitzünder aktiviert.
+[RCRWIN5:RCR]
+~w~Du hast alle Levels geschafft! Jetzt verbessere noch deine Rundenbestzeiten!
-[TEX3_28:SERG3]
-Um ~h~eine Bombe aufzunehmen~w~, steuere den Helikopter direkt über sie. Der Helikopter kann immer nur eine Bombe tragen.
+[RCR1:RCR]
+~w~1
-[TEX3_30:SERG3]
-~g~Um eine Bombe aufzunehmen, steuere den Helikopter direkt über sie. Der Helikopter kann immer nur eine Bombe tragen.
+[RCR2:RCR]
+~w~2
-[TEX3_12:SERG3]
-~g~Bombe platziert! Es bleiben nur noch 3 Ziele! Hol die nächste Bombe.
+[RCR3:RCR]
+~w~3
-[TEX3_13:SERG3]
-~g~Bombe platziert! Es bleiben nur noch 2 Ziele! Hol die nächste Bombe.
+[RCRGO:RCR]
+~w~LOS!
-[TEX3_14:SERG3]
-~g~Bombe platziert! Es bleibt nur noch 1 Ziel! Hol die nächste Bombe.
+[RCBLAP:RCR]
+Bisherige Rundenbestzeit: ~1~:~1~
-[TEX3_15:SERG3]
-~r~Zeitzünder aktiviert! ~g~ Du musst die ~w~4 Bomben ~g~in der verbleibenden Zeit platzieren.
+[RCBLAP1:RCR]
+Bisherige Rundenbestzeit: ~1~:0~1~
-[TEX3_37:SERG3]
-Zieh den ~h~ Rechten Analog-Stick zurück~w~, um die Rotorgeschwindigkeit zu erhöhen, der Helikopter ~h~ gewinnt dann an Höhe.
+[RCBLA2:RCR]
+Rundenrekord: ~1~:~1~
-[TEX3_38:SERG3] { reVC update }
-{Drück den ~h~ ~k~~VEHICLE_ACCELERATE~~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~ verliert dann an Höhe.}
-Drück den ~h~ Rechten Analog-Stick nach vorn~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~ verliert dann an Höhe.
+[RCBLA3:RCR]
+Rundenrekord: ~1~:0~1~
-[TEX3_39:SERG3]
-Um eine Bombe abzuwerfen, drücke die ~h~~k~~VEHICLE_HANDBRAKE~~g~-Taste.
+[RCRRLA1:RCR]
+~w~Neuer Rundenrekord: ~1~:~1~
-[TEX3_40:SERG3]
-Um eine Bombe abzuwerfen, drücke die ~h~~k~~VEHICLE_HANDBRAKE~~w~-Taste.
+[RCRRLA2:RCR]
+~w~Neuer Rundenrekord: ~1~:0~1~
-[TEX3_23:SERG3]
-Mit ~h~~k~~VEHICLE_TURRETUP~~w~ und ~h~~k~~VEHICLE_TURRETDOWN~~w~ neigst du den Helikopter in die Richtung, in die du ihn steuern willst.
+[RCRACEA:RCR]
+Thrashin' RC
-{=================================== MISSION TABLE TAXI1 ===================================}
+[RCRACEB:RCR]
+Ragin' RC
-[FARES:TAXI1]
-FAHRTEN:
+[RCRACEC:RCR]
+Chasin' RC
-[TAXI1:TAXI1]
-~g~Besorg dir einen Fahrgast.
+[RCLE11:RCR]
+Thrashin' RC LEVEL 1
-[TSCORE2:TAXI1]
-$~1~
+[RCLE12:RCR]
+Thrashin' RC LEVEL 2
-[IN_ROW:TAXI1]
-~1~ SERIEN-Bonus! $~1~
+[RCLE13:RCR]
+Thrashin' RC LEVEL 3
-[TAXI3:TAXI1]
-~r~Dein Fahrgast ist entsetzt geflohen!
+[RCLE21:RCR]
+Ragin' RC LEVEL 1
-[TAXI7:TAXI1]
-~r~Dein Wagen ist Schrott. Repariere ihn.
+[RCLE22:RCR]
+Ragin' RC LEVEL 2
-[TAXI4:TAXI1]
-Fahrt abgeschlossen!
+[RCLE23:RCR]
+Ragin' RC LEVEL 3
-[TAXI5:TAXI1]
-SPEED BONUS!!
+[RCLE31:RCR]
+Chasin' RC LEVEL 1
-[TAXI6:TAXI1]
-Taxi-Mission beendet
+[RCLE32:RCR]
+Chasin' RC LEVEL 2
-[TAXIH1:TAXI1]
-Halte neben einem markierten Fußgänger, um ihn einsteigen zu lassen, dann bringe ihn rechtzeitig an sein Fahrtziel.
+[RCLE33:RCR]
+Chasin' RC LEVEL 3
-[FARE1:TAXI1]
-~g~Fahrtziel ~w~'Pole Position Club' ~g~in Ocean Beach.
+[RCRACE2:RCR]
+~w~Schlage die anderen RC-Fahrzeuge in einem ~1~-Rundenrennen um die Baustelle!
-[FARE3:TAXI1]
-~g~Fahrtziel ~w~'Marina' ~g~in Ocean Beach.
+[RCRWIN6:RCR]
+~w~Fahr noch mal und versuch deine Rundenbestzeit zu verbessern.
-[FARE4:TAXI1]
-~g~Fahrtziel ~w~'Ammu-Nation' ~g~in Ocean Beach.
+[RCQUIT:RCR]
+~r~Batterien gleich leer?
-[FARE5:TAXI1]
-~g~Fahrtziel ~w~'Eisenwarenladen' ~g~in Washington Beach.
+[RCRFAIL:RCR]
+~r~Du hast es nicht geschafft, Erster zu werden!
-[FARE6:TAXI1]
-~g~Fahrtziel ~w~'North Point Einkaufszentrum' ~g~in Vice Point.
+[RCRLAP1:RCR]
+~c~1. ~w~RUNDE
-[MFARE1:TAXI1]
-~g~Fahrtziel ~w~'Ammu-Nation' ~g~in Downtown.
+[RCRLAP2:RCR]
+~c~2. ~w~RUNDE
-[MFARE2:TAXI1]
-~g~Fahrtziel ~w~'Terminal' ~g~im Escobar International Airport.
+[RCRLAP3:RCR]
+~c~3. ~w~RUNDE
-[WFARE3:TAXI1]
-~g~Fahrtziel ~w~'Sunshine Autos' ~g~in Little Havana.
+[RCRLAP4:RCR]
+~c~4. ~w~RUNDE
-[WFARE4:TAXI1]
-~g~Fahrtziel ~w~'Kaufman-Taxis' ~g~in Little Haiti.
+[RCRWIN:RCR]
+~w~Gratulation. Du hast mit einer Rundenbestzeit von ~1~:~1~ GEWONNEN! $500 Bonus!
-[WFARE5:TAXI1]
-~g~Fahrtziel ~w~'Eisenwarenladen' ~g~in Little Havana.
+[RCRWINB:RCR]
+~w~Gratulation. Du hast mit einer Rundenbestzeit von ~1~:0~1~ GEWONNEN! $500 Bonus!
-[WFARE6:TAXI1]
-~g~Fahrtziel ~w~'Howlin Petes Bike Emporium' ~g~in Downtown.
+{=================================== MISSION TABLE TOUR ===================================}
-[FARE7:TAXI1]
-~g~Fahrtziel ~w~'die Juweliere' ~g~in Vice Point.
+[TOUR_H1:TOUR]
+~w~Foto-Tipps: Stell dich ~h~vor~w~ den Touristen, ~h~nicht zu weit weg.~w~ Achte darauf, dass sowohl der ~h~Tourist als auch die Hintergrundszenerie~w~ im Bild ist.
-[FARE8:TAXI1]
-~g~Fahrtziel ~w~'der Strand' ~g~in Ocean Beach.
+[TOUR_I2:TOUR]
+~w~Für besonders hochwertige Fotos erhältst du eine Bonuszahlung!
-[FARE9:TAXI1]
-~g~Fahrtziel ~w~'der Strand' ~g~in Washington Beach.
+[TOUR_S0:TOUR]
+~w~Du hast noch ~h~~1~~w~ Bilder übrig.
-[FARE10:TAXI1]
-~g~Fahrtziel ~w~'der Strand' ~g~in Vice Point.
+[TOUR_S1:TOUR]
+~w~Du hast nur noch 1 Bild übrig. Sorg dafür, dass es ein gutes wird!
-[FARE11:TAXI1]
-~g~Fahrtziel ~w~'das Krankenhaus' ~g~in Ocean Beach.
+[TOUR_S2:TOUR]
+~w~Verschwende deinen Film nicht! Du hast noch ~h~~1~~w~ Bilder übrig.
-[FARE12:TAXI1]
-~g~Fahrtziel ~w~'das Krankenhaus' ~g~in Vice Point.
+[TOUR_S4:TOUR]
+~w~Du musst den ~b~Touristen~w~ richtig im Bild haben! Du hast noch ~h~~1~~w~ Bilder übrig.
-[FARE13:TAXI1]
-~g~Fahrtziel ~w~'die Polizeistation' ~g~in Washington Beach.
+[TOUR_F1:TOUR]
+~r~Der Tourist ist tot!
-[FARE14:TAXI1]
-~g~Fahrtziel ~w~'die Polizeistation' ~g~in Vice Point.
+[TOUR_F2:TOUR]
+~r~Du hast den Touristen verloren!
-[FARE15:TAXI1]
-~g~Fahrtziel ~w~'die Pizzagaststätte' ~g~in Vice Point.
+[TOUR_F3:TOUR]
+~r~Du hast kein Foto von dem Touristen gemacht!
-[WFARE7:TAXI1]
-~g~Fahrtziel ~w~'die Polizeistation' ~g~in Little Havana.
+[TOUR_F4:TOUR]
+~r~Die Zeit ist um!
-[WFARE8:TAXI1]
-~g~Fahrtziel ~w~'die Polizeistation' ~g~in Downtown.
+[TOUR_F5:TOUR]
+~r~Touristen-Mission abgebrochen.
-[WFARE9:TAXI1]
-~g~Fahrtziel ~w~'das Krankenhaus' ~g~in Downtown.
+[TOUR_F6:TOUR]
+~r~Der Dieb ist mit der Kamera des Touristen entkommen!
-[WFARE10:TAXI1]
-~g~Fahrtziel ~w~'das Krankenhaus' ~g~in Little Havana.
+[TOUR_O1:TOUR]
+~w~Bring den Touristen zu der ~y~Sehenswürdigkeit.
-[WFARE11:TAXI1]
-~g~Fahrtziel ~w~'der Stadium' ~g~in Downtown.
+[TOUR_O2:TOUR]
+~w~Lass den ~b~Touristen~w~ nicht zurück!
-[WFARE12:TAXI1]
-~g~Fahrtziel ~w~'die Pizzagaststätte' ~g~in Little Haiti.
+[TOUR_O3:TOUR]
+~w~Begleite den ~b~Touristen~w~ zu Fuß zu der Foto-Location.
-[WFARE13:TAXI1]
-~g~Fahrtziel ~w~'die Pizzagaststätte' ~g~in Downtown.
+[TOUR_O4:TOUR]
+~w~Mach das Foto mit der Kamera des ~b~Touristen.
-[WFARE14:TAXI1]
-~g~Fahrtziel ~w~'die Docks' ~g~in Viceport.
+[TOUR_O5:TOUR]
+~w~Bring den Touristen jetzt zum ~y~Flughafen.
-[WFARE15:TAXI1]
-~g~Fahrtziel ~w~'die Apotheke' ~g~in Little Haiti.
+[TOUR_O6:TOUR]
+~w~Schnell! Die Zeit wird knapp!
-[FARE2:TAXI1]
-~g~Fahrtziel ~w~'Malibu Club' ~g~in Vice Point.
+[TOUR_O7:TOUR]
+~w~Nimm den ~b~Touristen~w~ mit.
-{=================================== MISSION TABLE TAXICUT ===================================}
+[TOUR_O8:TOUR]
+~w~Nimm den nächsten ~b~Touristen~w~ mit, ehe die Zeit um ist.
-[TAXC_A:TAXICUT]
-Schätze, sie sind der neue Besitzer.
+[TOUR_O9:TOUR]
+~w~Du solltest wirklich den ~b~Touristen~w~ begleiten! Du verschwendest Zeit.
-[TAXC_B:TAXICUT]
-Sind Sie 'n Mafioso? Oder vom Kartell? Sehen nicht aus wie ein Mexikaner.
+[TOUR_OA:TOUR]
+~w~Der ~b~Tourist~w~ wartet darauf, dass du ein Foto machst. Beeil dich, die Zeit wird knapp!
-[TAXC_C:TAXICUT]
-Egal. Halten Sie schon endlich Ihre Predigt von wegen 'Jetzt wird alles anders',
+[TOUR_W1:TOUR]
+~w~Lohn: ~h~$~1~~w~ Sorry, kein Bonus dieses Mal.
-[TAXC_D:TAXICUT]
-bedrohen Sie ein paar von den Fahrern-
+[TOUR_W2:TOUR]
+~w~Lohn: ~h~$~1~~w~ plus ~h~$~1~~w~ Bonus für ein gutes Foto!
-[TAXC_E:TAXICUT]
-aber nicht Ted, der ist gerade an der Leiste operiert.
+[TOUR_W3:TOUR]
+~w~Lohn: ~h~$~1~~w~ plus ~h~$~1~~w~ Bonus für ein großartiges Foto!
-[TAXC_F:TAXICUT]
-Tja, also, hier wird sich einiges ändern, Lady.
+[TOUR_W4:TOUR]
+~w~Lohn: ~h~$~1~~w~ plus ~h~$~1~~w~ Bonus für ein exzellentes Foto!
-[TAXC_G:TAXICUT]
-Aber nicht doch, Jungchen. Überlassen Sie das lieber mir -
+[TOUR_W5:TOUR]
+~w~Prima! Alle 'Erst knipsen, dann starten'-Missionen abgeschlossen. Du erhältst $~1~ Vollständigkeits-Bonus!
-[TAXC_H:TAXICUT]
-Ich mach das schon seit Jahren.
+[TOURDAM:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Bring diesen Touristen zum Cochrane Dam und mach ein Foto zum Beweis, dass er dort war!
-[TAXC_I:TAXICUT]
-Alles mal herhören.
+[TOURBRI:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Diese Dame möchte die Callahan Bridge von der Portland-Seite aus sehen.
-[TAXC_J:TAXICUT]
-Wir haben eine neue Geschäftsleitung, und es wird sich wieder mal einiges ändern hier.
+[TOURDRK:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Fotografiere diesen Filmfan vor dem Haus des Schauspielers Black Lightman, in Cedar Grove, Shoreside Vale.
-[TAXC_K:TAXICUT]
-Unsere neue Geschäftsleitung, die-
+[TOURSTA:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Fotografiere diesen Sportfan vor dem Liberty Memorial Coliseum in Staunton.
-[TAXC_L:TAXICUT]
-Von welcher Gang sind Sie?
+[TOURCHU:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Geleite dieses Schäfchen zur historischen Liberty Cathedral in Staunton.
-[TAXC_M:TAXICUT]
-Ich gehöre keiner Gang an.
+[TOURBCH:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Zeige diesem Touristen den herrlichen Anblick von Portland Rocks Leuchtturm von Portland Beach aus.
-[TAXC_N:TAXICUT]
-Und wie heißen Sie, junger Mann?
+[TOURCHI:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Die orientalische Atmosphäre des Chinatown Plaza in Portland ist das exotische Traumziel dieses Touristen.
-[TAXC_O:TAXICUT]
-Vercetti, Tommy Vercetti.
+[TOURSHO:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Die Freundinnen dieser Touristin sollen glauben, dass sie in der exklusiven Staunton Shopping Mall shoppen war. Mach dort ein Foto von ihr.
-[TAXC_P:TAXICUT]
-Unsere neue Geschäftsleitung, die Vercetti Gang,
+[TOURCAS:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Hier ist ein Spieler, der vor dem weltberühmten Casino in Staunton fotografiert werden möchte.
-[TAXC_Q:TAXICUT]
-wird dafür sorgen, dass wir keinen Ärger kriegen.
+[TOURMUS:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Diese Gelehrte möchte ein Foto, das die beeindruckenden Dimensionen des Museums in Staunton zeigt.
-[TAXC_R:TAXICUT]
-Capiche? Ende!
+[TOURHAL:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Dieser Tourist möchte, bevor er abreist, noch einmal das Rathaus in Staunton sehen.
-[TAXC_S:TAXICUT]
-Wie fanden Sie das 'Capiche'? Ich fand's gut.
+[TOURRED:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Seine Kumpel meinen, er traut sich nicht in einen Strip Club in Portlands Rotlichtviertel. Beweise das Gegenteil!
-[TAXC_T:TAXICUT]
-Also, so ist das immer gelaufen:
+[TOURMU0:TOUR]
+~w~Der ~r~Dieb~w~ hat die Kamera des Touristen geklaut! Beschaff sie wieder!
-[TAXC_U:TAXICUT]
-Wir führen die Firma weiter wie gewohnt.
+[TOURMU1:TOUR]
+~w~Ein Gauner weniger, der die Straßen unsicher macht! Nimm die ~g~Kamera.
-[TAXC_V:TAXICUT]
-Wenn die Konkurrenz Ärger macht, gebt ihr ihnen eines auf die Mütze.
+[TOUR00:TOUR]
+~w~Bring den Touristen zum ~y~Cochrane Dam~w~ in Shoreside Vale.
-[TAXC_W:TAXICUT]
-Dann geben die uns eines auf die Mütze.
+[TOUR01:TOUR]
+~w~Bring den Touristen zum ~y~Liberty Memorial Coliseum~w~ in Staunton.
-[TAXC_X:TAXICUT]
-Dann geben sie denen eines auf die Mütze.
+[TOUR02:TOUR]
+~w~Bring den Touristen zum ~y~Chinatown Plaza~w~ in Portland.
-[TAXC_Y:TAXICUT]
-Und so weiter, und so fort. Kapiert?
+[TOUR03:TOUR]
+~w~Bring den Touristen zur ~y~Liberty Cathedral~w~ in Staunton.
-[TAXC_Z:TAXICUT]
-Äh, ja, ich glaub schon.
+[TOUR06:TOUR]
+~w~Bring den Touristen zum ~y~Strip Club~w~ in Portlands Rotlichtviertel.
-[TAXC_A1:TAXICUT]
-Schnappen Sie sich ein Taxi aus der Garage, wenn Sie Lust haben.
+[TOUR07:TOUR]
+~w~Bring den Touristen zum ~y~Liberty City Museum~w~ in Staunton.
-{=================================== MISSION TABLE TAXIWA1 ===================================}
+[TOUR08:TOUR]
+~w~Bring den Touristen zum ~y~Casino~w~ in Staunton.
-[OUTTIME:TAXIWA1]
-~r~Zu langsam, Mann, zu langsam!
+[TOUR10:TOUR]
+~w~Bring diesen Touristen zum ~y~Rathaus~w~ in Staunton.
-[TAX1_1:TAXIWA1]
-Ok, eine V.I.P. müsste von Starfish Island abgeholt werden. Jemand interessiert?
+[TOUR11:TOUR]
+~w~Bring diesen Touristen zum ~y~Portland Beach.
-[TAX1_2:TAXIWA1]
-Tommy hier. Ich übernehme das.
+[TOUR04:TOUR]
+~w~Bring den Touristen zur ~y~Callahan Bridge~w~, Portland-Seite.
-[TAX1_3:TAXIWA1]
-Das ist meine Fuhre. Hau ab!
+[TOUR09:TOUR]
+~w~Bring den Touristen zum ~y~Haus des Schauspielers Black Lightman~w~, in Cedar Grove, Shoreside Vale.
-[TAX1_4:TAXIWA1]
-Los, los, steigen Sie ein. Schnell!
+[TOUR_I1:TOUR]
+~w~Zeige Touristen Liberty Citys berühmte Sehenswürdigkeiten.
-[TAX1_5:TAXIWA1]
-Ok, ok! Aber tun Sie mir nichts!
+[TOUR_IA:TOUR]
+~w~Mach dort Andenkenfotos von ihnen.
-[TAXW1_1:TAXIWA1]
-~g~Hol die V.I.P. auf Starfish Island ab.
+[TOUR_IB:TOUR]
+~w~Dann bring sie rechtzeitig für ihren Rückflug zum Flughafen.
-[TAXW1_2:TAXIWA1]
-~g~Hol die V.I.P. zurück! Schalte den anderen Wagen aus!
+[TOURMEM:TOUR]
+~w~SEHENSWÜRDIGKEIT ~1~: ~w~Dieser Veteran will seiner gefallenen Kameraden beim Denkmal im Belleville Park, Staunton gedenken.
-[TAXW1_3:TAXIWA1]
-~r~Die V.I.P. ist Geschichte!
+[TOUR05:TOUR]
+~w~Bring den Touristen zum ~y~Liberty City War Memorial~w~ im Belleville Park, Staunton.
-[TAXW1_4:TAXIWA1]
-~r~Die V.I.P. wurde abgesetzt!
+{=================================== MISSION TABLE PIZZA ===================================}
-[TAXW1_6:TAXIWA1]
-~g~Bring die V.I.P zum Flughafen!
+[PIZ1_06:PIZZA]
+~w~Bist du auf dem Moped, drücke~h~ ~k~ ~TGSUB~~w~, um die Mission abzubrechen.
-{=================================== MISSION TABLE TAXIWA2 ===================================}
+[PIZ1_02:PIZZA]
+~w~Du hast keine Pizzas mehr! Fahr zu ~y~Joe's Pizza Restaurant~w~ zurück und hol neue.
-[TAX2_1:TAXIWA2]
-An alle Wagen. Wir kriegen nirgends Fahrgäste. Was ist los mit euch?
+[PIZ1_07:PIZZA]
+~r~Du hast den Kunden umgebracht! Du bist gefeuert!
-[TAX2_2:TAXIWA2]
-VC-Taxi ist dauernd schneller als wir. Die haben einfach zu viele Autos. Keine Chance.
+[PIZ1_08:PIZZA]
+~r~Du hast keine Zeit und keinen Job mehr!
-[TAX2_3:TAXIWA2]
-Mr. Vercetti, wenn Sie zufällig mithören: Sie müssen ein paar VC-Taxis ausschalten, sonst sind wir pleite!
+[PIZ1_09:PIZZA]
+~r~Du hast unser Moped geschrottet! Verschwinde!
-[TAXW2_1:TAXIWA2]
-~g~Schalte 3 Taxis der Konkurrenz aus!
+[PIZ1_11:PIZZA]
+~w~Du brauchst das Pizza-~b~Moped~w~, um die Bestellungen auszuliefern!
-{=================================== MISSION TABLE TAXIWA3 ===================================}
+[PIZ1_12:PIZZA]
+Pizzas
-[TAX3_1:TAXIWA3]
-Wagen 13, eine Miss Cortez möchte von Ihnen ganz persönlich in Downtown abgeholt werden.
+[PIZ1_13:PIZZA]
+~w~Pizza! Heiß und lieferbereit! Ich liebe Pizza!
-[TAX3_2:TAXIWA3]
-Ok, verstanden. Wagen 13 Ende.
+[PIZ1_14:PIZZA]
+~w~Die sind zum Liefern! ...Also liefer mal!
-[TAX3_3:TAXIWA3]
-Hmmm, keine Spur von Mercedes...
+[PIZ1_15:PIZZA]
+~w~Die da ist extrascharf!
-[TAXW3_3:TAXIWA3]
-~g~Schalte das Taxi des Anführers aus!
+[PIZ1_16:PIZZA]
+~w~Nimm den Finger aus dem Arsch und liefer die aus, pronto!
-[TAXW3_2:TAXIWA3]
-~g~Halte durch, bis die Zeit abgelaufen ist.
+[PIZ1_17:PIZZA]
+~w~Diese Pizzas sollen HEUTE ausgeliefert werden, nicht nächstes Jahr.
+
+[PIZ1_18:PIZZA]
+~w~Ist Pizza liefern unter deiner Würde? Oh, Verzeihung, Herr Professor!
+
+[PIZ1_19:PIZZA]
+~w~Lieferst du die jetzt aus, oder was?
+
+[PIZ1_20:PIZZA]
+~w~Du bist gefeuert! ...War nur Spaß! Wird aber Ernst, wenn die nicht rechtzeitig ausgeliefert werden!
+
+[PIZ1_21:PIZZA]
+~w~Pizzas! Mach schon! Da warten Fettsäcke drauf!
-[TAX_AS1:TAXIWA3]
-TAXIUNTERNEHMEN ERWORBEN
+[PIZ1_22:PIZZA]
+~w~Hast du auf die Pizzas gespuckt? ... solltest du! Dann schmecken sie besser!
-[TAX_AS2:TAXIWA3]
-~g~Kaufman-Taxis generiert nun bis zu $~1~ Einkünfte. Hol dir das Geld regelmäßig ab.
+[PIZ1_23:PIZZA]
+~w~Glaubst du etwa, die liefern sich von selbst aus?
-[TAX3_4:TAXIWA3]
-Wird Zeit, dass der Schutzengel von Kaufman-Taxis eine vor den Latz kriegt!
+[PIZ1_24:PIZZA]
+~w~Wenn die kalt sind, bis du sie ablieferst, dann gibt's Zunder!
-[TAX3_5:TAXIWA3]
-Hey, Freundchen, dir zieh ich das Fell über die Ohren!
+[PIZ1_25:PIZZA]
+~w~Beweg diesmal deinen Arsch!
-{ reVC updates }
-{ new languages }
-[FEL_JAP]
-JAPANISCH
+[PIZ1_26:PIZZA]
+~w~Hey, liefer die aus!
-[FEL_POL]
-POLNISCH
+[PIZ1_27:PIZZA]
+~w~Okay, liefer die aus, dann komm wieder und hol mehr.
-[FEL_RUS]
-RUSSISCH
+[PIZ1_28:PIZZA]
+~w~Unsere Pizzas schlagen alles! Liefer die rechtzeitig aus, sonst schlag ich dich!
-{ new display menus }
-[FET_GFX]
-GRAFIK-SETUP
+[PIZ1_29:PIZZA]
+~w~Du willst noch mehr? Hab ich dich nicht schon genug beschimpft heute?
-[FED_MIP]
-MIP MAPPING
+[PIZ1_30:PIZZA]
+~w~Ich glaub, auf eine hab ich draufgeniest. Was soll's! Nimm sie mit!
-[FED_AAS]
-KANTENGLÄTTUNG
+[PIZ1_31:PIZZA]
+~w~Ich hasse diesen Job! Aber wenigstens kann ich dich rumkommandieren.
-[FED_FIL]
-TEXTURFILTERUNG
+[PIZ1_3A:PIZZA]
+~w~Wenn die nicht rechtzeitig geliefert werden, dann ist die Holzkohle im Ofen die einzige, die du heute siehst.
-[FED_BIL]
-BILINEAR
+[PIZ1_32:PIZZA]
+~r~Schmecken dir unsere Pizzas nicht?
-[FED_TRL]
-TRILINEAR
+[PIZ1_33:PIZZA]
+~w~Fahr zurück zu ~y~Joe's Pizza Restaurant~w~ für neue Bestellungen.
-[FED_WND]
-FENSTERMODUS
+[PIZ1_34:PIZZA]
+~w~Pizza serviert, Kohle kassiert!
-[FED_FLS]
-VOLLBILD
+[PIZ_WON:PIZZA]
+~w~Pizza-Job erledigt. Prima! Der maximale Wert für deine Gesundheit wurde erhöht!
-[FEM_CSB]
-CUTSCENE BALKEN
+[PIZ_WO1:PIZZA]
+~w~Joe's Pizza Restaurant steht jetzt unter deinem 'Schutz'. Hol dir dein Schutzgeld regelmäßig ab.
-[FEM_SCF]
-BILDSCHIRMFORMAT
+[PIZ1_01:PIZZA]
+~w~Liefere diese Pizzas so schnell wie möglich an unsere ~b~Kunden~w~.
-[FEM_ISL]
-KARTENSPEICHERNUTZUNG
+[PIZ1_05:PIZZA]
+~w~Wirf sie den Kunden auf die gleiche Art zu, wie ein Drive-by ausgeführt wird.
-[FEM_LOW]
-NIEDRIG
+{=================================== MISSION TABLE TAXI ===================================}
-[FEM_MED]
-MITTEL
+[TAXI1:TAXI]
+~w~Such dir einen ~b~Fahrgast.
-[FEM_HIG]
-HOCH
+[TAXI1A:TAXI]
+~w~Hier in der Nähe sind keine Fahrgäste - such weiter!
-[FEM_2PR]
-PS2 ALPHA TEST
+[TAXI2:TAXI]
+~r~Die Zeit ist um!
-[FEC_FRC]
-FREIE KAMERA
+[TAXI3:TAXI]
+~w~Dein Fahrgast ist entsetzt geflohen!
-{ Linux joy detection }
-[FEC_JOD]
-JOYSTICK ERKENNEN
+[TAXI4:TAXI]
+~w~Fahrt abgeschlossen: $~1~
-[FEC_JPR]
-Drücke eine beliebige Taste auf dem Joystick der für das Spiel verwendet werden soll, und er wird ausgewählt.
+[TAXI4A:TAXI]
+~w~Fahrt abgeschlossen: $~1~ + ~1~ SERIEN-BONUS! $~1~
-[FEC_JDE]
-Joystick erkannt
+[TAXI5:TAXI]
+~w~SPEED-BONUS: $~1~
-{ mission restart }
-[FET_RMS]
-MISSION WIEDERHOLEN
+[TAXI5A:TAXI]
+~w~SPEED-BONUS: $~1~ + ~1~ SERIEN-BONUS! $~1~
-[FESZ_RM]
-WIEDERHOLEN?
+[TAXI7:TAXI]
+~w~Dein Wagen ist Schrott, lass ihn reparieren!
-[FED_VPL]
-FAHRZEUG-PIPELINE
+[TAXI8:TAXI]
+~r~Taxi-Mission abgebrochen.
-[FED_PRM]
-CHARAKTER KANTEN LICHT
+[TAXI9:TAXI]
+~r~Dein Taxi wurde zerstört!
-[FED_RGL]
-GLÄNZENDE STRAßEN
+[FARES:TAXI]
+Fahrten
-[FED_CLF]
-FARBFILTER
+[TIP:TAXI]
+Trinkgeld
-[FED_WLM]
-WELT LIGHTMAPS
+[FARE9:TAXI]
+~w~Fahrtziel: ~y~'Portland Docks'.
-[FED_MBL]
-BEWEGUNGSUNSCHÄRFE
+[FARE20:TAXI]
+~w~Fahrtziel: ~y~'Der Park' ~w~in Belleville.
-[FEM_SIM]
-SIMPEL
+[FARE22:TAXI]
+~w~Fahrtziel: ~y~'Cochrane Dam'.
-[FEM_NRM]
-NORMAL
+[FARE2:TAXI]
+~w~Fahrtziel: ~y~'Head Radio'~w~, Harwood.
-[FEM_MOB]
-MOBILE
+[FARE3:TAXI]
+~w~Fahrtziel: ~y~'Der Fährhafen'~w~, Harwood.
-[FED_MFX]
-MATFX
+[FARE4:TAXI]
+~w~Fahrtziel: ~y~'Die Klinik'~w~, Portland View.
-[FED_NEO]
-NEO
+[FARE7:TAXI]
+~w~Fahrtziel: ~y~'Die Baustelle'~w~, Hepburn Heights.
-[FEM_PS2]
-PS2
+[FARE8:TAXI]
+~w~Fahrtziel: ~y~'Cipriani Restaurant'~w~, Saint Mark's.
-[FEM_XBX]
-XBOX
+[FARE10:TAXI]
+~w~Fahrtziel: ~y~'Punk Noodles'~w~, Chinatown.
-[FEC_IVP]
-PAD VERTIKAL INVERTIEREN
+[FARE12:TAXI]
+~w~Fahrtziel: ~y~'Der Fährhafen'~w~, Rockford.
-[FEM_NON]
-NONE
+[FARE13:TAXI]
+~w~Fahrtziel: ~y~'Die Kirche'~w~, Bedford Point.
-[FEC_DS2]
-DUALSHOCK 2
+[FARE14:TAXI]
+~w~Fahrtziel: ~y~'Büro der Liberty Tree Zeitung'~w~, Bedford Point.
-[FEC_DS3]
-DUALSHOCK 3
+[FARE15:TAXI]
+~w~Fahrtziel: ~y~'Liberty Universität'~w~, Liberty Campus.
-[FEC_DS4]
-DUALSHOCK 4
+[FARE16:TAXI]
+~w~Fahrtziel: ~y~'Hogs 'n' Cogs'~w~, Gegend von Belleville Park.
-[FEC_360]
-XBOX 360 CONTROLLER
+[FARE17:TAXI]
+~w~Fahrtziel: ~y~'Gerichtsgebäude'~w~, Gegend von Belleville Park.
-[FEC_ONE]
-XBOX ONE CONTROLLER
+[FARE18:TAXI]
+~w~Fahrtziel: ~y~'Mr. Benz'~w~, Bedford Point.
-[FEC_NSW]
-NINTENDO SWITCH CONTROLLER
+[FARE19:TAXI]
+~w~Fahrtziel: ~y~'Joe's Pizza'~w~, Bedford Point.
-[FEC_TYP]
-GAMEPAD-TYP
+[FARE21:TAXI]
+~w~Fahrtziel: ~y~'Terminal A'~w~, Francis International Airport.
-[FET_AGS]
-KONTROLLEREINSTELLUNGEN
+[FARE23:TAXI]
+~w~Fahrtziel: ~y~'Die Villa'~w~, Cedar Grove.
-[FEM_AUT] { aspect ratio related }
-AUTO
+[FARE24:TAXI]
+~w~Fahrtziel: ~y~'Die Klinik'~w~, Pike Creek.
+
+[FARE25:TAXI]
+~w~Fahrtziel: ~y~'Der Park'~w~, Shoreside Vale.
+
+[FARE26:TAXI]
+~w~Fahrtziel: ~y~'North West Towers'~w~, Wichita Gardens.
+
+[FARE27:TAXI]
+~w~Fahrtziel: ~y~'Das Bus-Depot'~w~, Trenton.
+
+[FARE28:TAXI]
+~w~Fahrtziel: ~y~'Mr. Benz'~w~, Chinatown.
+
+[FARE29:TAXI]
+~w~Fahrtziel: ~y~'Mr. Benz'~w~, Pike Creek.
+
+[FARE30:TAXI]
+~w~Fahrtziel: ~y~'Terminal C'~w~, Francis International Airport.
+
+[FARE31:TAXI]
+~w~Fahrtziel: ~y~'AM Petroleum'~w~, Pike Creek.
+
+[FARE32:TAXI]
+~w~Fahrtziel: ~y~'Liberty Pharmaceuticals'~w~, Pike Creek.
+
+[FARE11:TAXI]
+~w~Fahrtziel: ~y~'Phil Cassidy's Fully Cocked Gun Shop'~w~, Bedford Point.
+
+[FARE1A:TAXI]
+~w~Fahrtziel: ~y~'Paulie's Revue Bar'~w~, Rotlichtviertel.
+
+[FARE1C:TAXI]
+~w~Fahrtziel: ~y~'Sex Club Seven'~w~, Rotlichtviertel.
+
+[FARE5:TAXI]
+~w~Fahrtziel: ~y~'Ammu-Nation'~w~, Rotlichtviertel.
+
+[FARE6:TAXI]
+~w~Fahrtziel: ~y~'Capital Autos',~w~ Saint Mark's.
+
+{=================================== MISSION TABLE AMBU ===================================}
+
+[A_FAIL2:AMBU]
+~r~Deine Trödelei war tödlich für den Patienten!
+
+[A_FAIL3:AMBU]
+~r~Der Patient ist tot!
+
+[ATUTOR4:AMBU]
+~w~Jede Erschütterung mindert die Überlebenschancen des Patienten!
+
+[A_TIME:AMBU]
+~w~Patient eingeladen! +~1~ Sekunden
+
+[A_TIME2:AMBU]
+~w~Bonus! +~1~ Sekunden
+
+[AREWARD:AMBU]
+~w~Level ~1~ abgeschlossen! Belohnung: $~1~
+
+[A_RANGE:AMBU]
+~r~Du bist außer Reichweite des Notarztfunks. Fahr näher an eine Klinik heran!
+
+[ATUTOR5:AMBU]
+~w~Sammle einen ~b~Patienten~w~ auf.
+
+[ATUTOR6:AMBU]
+~w~Bring den Patienten zur ~y~Klinik!
+
+[ATUTOR7:AMBU]
+~w~Sammle noch mehr ~b~Patienten~w~ auf, oder bring diesen zur ~y~Klinik.
+
+[A_FULL:AMBU]
+~w~Dein Krankenwagen ist voll! Bring deine Patienten zur ~y~Klinik!
+
+[A_RANG2:AMBU]
+~r~Der Notarztfunk funktioniert nicht in der U-Bahn!
+
+{=================================== MISSION TABLE TV ===================================}
+
+[TV_01:TV]
+Slash TV
+
+[TV_02:TV]
+~w~Erledige alle irren Psychopathen... die greifen in einer Tour an!
+
+[TV_03:TV]
+~w~Mit jedem Level wird es schwerer und es gibt mehr Gegner... und auch mehr Preise zu gewinnen!
+
+[TV_04:TV]
+~w~LEVEL ~1~
+
+[TV_10:TV]
+~w~Du hast einen Sonderpreis gewonnen!
+
+[TV_09:TV]
+Gesamtpreisgeld bei diesem Spiel: $~1~!
+
+[TV_05:TV]
+~w~LEVEL GESCHAFFT!
+
+[TV_06:TV]
+~w~$~1~ Preisgeld!
+
+[TV_07:TV]
+~w~MACH DICH BEREIT...
+
+[TV_08:TV]
+~w~LOS!
+
+{=================================== MISSION TABLE NOODLE ===================================}
+
+[NDL1_02:NOODLE]
+~w~O-oh, keine Nudelsnacks mehr! Fahr zu ~y~Punk Noodles~w~ zurück und hol neue.
+
+[NDL1_06:NOODLE]
+~w~Bist du auf dem Moped, drücke~h~ ~k~ ~TGSUB~~w~, um die Mission abzubrechen.
+
+[NDL1_07:NOODLE]
+~r~Du hast den Kunden umgebracht! Du bist gefeuert!
+
+[NDL1_08:NOODLE]
+~r~Die Zeit ist um. Du bist gefeuert!
+
+[NDL1_09:NOODLE]
+~r~Du hast unser Moped geschrottet! Du bist gefeuert!
+
+[NDL1_11:NOODLE]
+~w~Steig wieder auf das ~b~Moped!
+
+[NDL1_12:NOODLE]
+Nudelsnacks
+
+[NDL1_13:NOODLE]
+~w~Nudeln! Rudel von Nudeln, also ab mit Gehudel!
+
+[NDL1_14:NOODLE]
+~w~Unsere Kunden kriegen gar nicht genug von meinen Nudeln.
+
+[NDL1_15:NOODLE]
+~w~Ich hab hier Nudeln, die ausgeliefert werden müssen!
+
+[NDL1_16:NOODLE]
+~w~Versuch, die Nudeln rechtzeitig zu liefern!
+
+[NDL1_17:NOODLE]
+~w~Hey, Dödel! Diese Nudeln müssen ausgeliefert werden!
+
+[NDL1_18:NOODLE]
+~w~Liefer diese Nudeln aus, aber dalli!
+
+[NDL1_19:NOODLE]
+~w~Unsere Kunden wollen heiße Nudeln, keine kalten!
+
+[NDL1_20:NOODLE]
+~w~Du verträgst die Hitze in der Küche nicht? Konfuzius sagt: dann dreh den Herd runter.
+
+[NDL1_21:NOODLE]
+~w~Liefere diese Nudeln aus, ja?
+
+[NDL1_22:NOODLE]
+~w~Noch mehr Nudeln zum Ausliefern.
+
+[NDL1_23:NOODLE]
+~w~Nudeln, Nudeln, Nudeln! Bring sie schön heiß an den Mann!
+
+[NDL1_24:NOODLE]
+~w~Da warten Leute drauf! ...Heiliger Bimbam!
+
+[NDL1_25:NOODLE]
+~w~Ist diese Bestellung noch nicht ausgeliefert worden?
+
+[NDL1_26:NOODLE]
+~w~Worauf wartest du? Auf das chinesische Neujahr?
+
+[NDL1_27:NOODLE]
+~w~Diese Nudeln werden kalt. Beeil dich!
+
+[NDL1_28:NOODLE]
+~w~Ich wollte Astronaut werden. Aber der Laden gehört meinem Vater, was hätte ich machen sollen?
+
+[NDL1_29:NOODLE]
+~w~Wenn du deinen Job behalten willst, beweg deinen Arsch und liefer die aus.
+
+[NDL1_30:NOODLE]
+~w~Kross gebratene Nudeln... versteh die, wer will, aber sie schmecken!
+
+[NDL1_31:NOODLE]
+~w~Ich hätte gedacht, Pizzaliefern wär eher dein Ding.
+
+[NDL1_3A:NOODLE]
+~w~Sie wollen immer noch mehr. Also komm wieder, wenn du fertig bist.
+
+[NDL1_32:NOODLE]
+~r~Was ist los? Magst du keine Nudeln?
+
+[NDL1_33:NOODLE]
+~w~Fahr zu ~y~Punk Noodles~w~ zurück für weitere Bestellungen.
+
+[NDL1_34:NOODLE]
+~w~Nudeln serviert, Kohle kassiert!
+
+[NDL_WON:NOODLE]
+~w~Gratuliere, Nudel-Job erledigt! Der maximale Wert für deine Gesundheit wurde erhöht!
+
+[NDL_WO1:NOODLE]
+~w~Punk Noodles steht jetzt unter deinem 'Schutz'. Hol dir dein Schutzgeld regelmäßig ab.
+
+[NDL1_01:NOODLE]
+~w~Liefere diese Nudelsnacks an unsere ~b~Kunden~w~ - und zwar dalli!
+
+[NDL1_05:NOODLE]
+~w~Wirf sie den Kunden auf die gleiche Art zu, wie ein Drive-by ausgeführt wird.
+
+{=================================== MISSION TABLE MPSURV ===================================}
+
+[SAL01:MPSURV]
+~w~Maria, ich geh in die Klinik und lass mir den 'du-weißt-schon' richten.
+
+[SAL02:MPSURV]
+~w~Danach wird mein kleiner Soldat wieder strammstehen wie eh und je...
+
+[SAL04:MPSURV]
+~w~PS: Halt dich bereit fürs 'Manöver', wenn ich rauskomme, Baby.
+
+[SAL05:MPSURV]
+~w~PPS: ...Und lass diesen Brief nicht einfach herumliegen!
+
+[SAL03:MPSURV]
+~w~Pass solange auf dich auf, denn ein Haufen Leute würde alles geben, um meinen Laden zu übernehmen.
+
+[SAL03A:MPSURV]
+~w~Selbst ihr Leben!
+
+{=================================== MISSION TABLE JDREF ===================================}
+
+[JDT1_BA:JDREF]
+~w~Für einen Leone hab ich keine Arbeit!
+
+[JDT1_BB:JDREF]
+~w~...hey, Toni, komm wieder, wenn du weniger auffällig aussiehst.
+
+[CHNGOUT:JDREF]
+~w~Zieh dein Leone-Outfit aus, sonst darf JD nicht zusammen mit dir gesehen werden.
+
+{=================================== MISSION TABLE CRED01 ===================================}
+
+[CR01_01:CRED01]
+~n~ ~n~ ~n~ ~n~CREDITS
+
+[CR01_02:CRED01]
+~n~ ~n~ ~n~ ~n~ROCKSTAR NORTH
+
+[CR01_03:CRED01]
+~n~ ~n~ ~n~ ~n~Producer ~n~Leslie Benzies
+
+[CR01_04:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Aaron Garbut
+
+[CR01_05:CRED01]
+~n~ ~n~ ~n~ ~n~Technical Direction ~n~Obbe Vermeij, Adam Fowler
+
+[CR01_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~Written By ~n~Dan Houser, James Worrall ~n~ & David Bland
+
+[CR01_07:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Alexander Roger, Alexander Illes, ~n~Andrzej Madajczyk, Barane Chan, ~n~Derek Payne, Derek Ward,
+
+[CR01_08:CRED01]
+~n~ ~n~Gordon Yeoman, Graeme Williamson, ~n~Greg Smith, James Broad, ~n~John Gurney, John Whyte,
+
+[CR01_09:CRED01]
+~n~ ~n~Keith McLeman, Mark Nicholson, ~n~Shaun McKillop
+
+[CR01_10:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Programmer ~n~Matthew Smith
+
+[CR01_11:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Design and Mastering ~n~Allan Walker
+
+[CR01_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Cut Scene Animator ~n~Mondo Ghulam
+
+[CR01_13:CRED01]
+~n~ ~n~ ~n~ ~n~Cut Scene Animator ~n~Dermot Bailie
+
+[CR01_14:CRED01]
+~n~ ~n~ ~n~ ~n~Character Animator ~n~Felipe Busquets
+
+[CR01_15:CRED01]
+~n~ ~n~ ~n~ ~n~In-Game Animation ~n~Gus Braid, Terry Kenny
+
+[CR01_16:CRED01]
+~n~ ~n~ ~n~ ~n~Characters Artist ~n~Ian McQue
+
+[CR01_17:CRED01]
+~n~ ~n~ ~n~ ~n~Vehicle Artist ~n~Joylon Orme
+
+[CR01_18:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Art ~n~Rick Stirling, Alisdair Wood
+
+[CR01_19:CRED01]
+~n~ ~n~ ~n~ ~n~Music Producer ~n~Craig Conner
+
+[CR01_20:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Design and Dialogue Editor ~n~Will Morton
+
+[CR01_21:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Dialogue Editor ~n~Jon McCavish
+
+[CR01_22:CRED01]
+~n~ ~n~ ~n~ ~n~Development Support ~n~Milly Cottam
+
+[CR01_23:CRED01]
+~n~ ~n~ ~n~ ~n~Graphic Designers ~n~Stuart Petri, Steve Walsh
+
+[CR01_24:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~William Mills
+
+[CR01_25:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Chris Rothwell, Andy Duthie, ~n~Chris McMahon, Neil Ferguson
+
+[CR01_26:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Craig Arbuthnott
+
+[CR01_27:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Test ~n~Neil Corbett
+
+[CR01_28:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Test ~n~David Murdoch, Neil Meikle, ~n~Alex Bazlinton, Brenda Carey
+
+[CR01_29:CRED01]
+~n~ ~n~ ~n~ ~n~Build Engineer / Lead Test ~n~Neil Walker
+
+[CR01_30:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Test ~n~George Williamson
+
+[CR01_31:CRED01]
+~n~ ~n~ ~n~ ~n~Test ~n~Brian Kelly, Lindsay Robertson, ~n~Sundram Soosay, Eugene Kuczerepa, ~n~Christopher Soosay, Ben Abbott,
+
+[CR01_32:CRED01]
+~n~ ~n~Oliver Elliott, Louis Dinan, ~n~Bobby Wright, Thomas Philips, ~n~Nick Rees, Ivor Williams
+
+[CR01_33:CRED01]
+~n~ ~n~ ~n~ ~n~Test Tools Programming ~n~James Whitcroft, Alex Carter
+
+[CR01_34:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Lorraine Roy
+
+[CR01_35:CRED01]
+~n~ ~n~ ~n~ ~n~IT Support ~n~Christine Chalmers, Dave Bruce
+
+[CR01_36:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Andrew Semple
+
+[CR01_37:CRED01]
+~n~ ~n~ ~n~ ~n~Office Administration ~n~Kim Gurney
+
+[CR01_38:CRED01]
+~n~ ~n~ ~n~ ~n~Administration Support ~n~Charlene Maguire, Kim Wilson
+
+[CR02_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LEEDS
+
+[CR02_02:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Gordon Hall
+
+[CR02_03:CRED01]
+~n~ ~n~ ~n~ ~n~Head of Development ~n~David Box
+
+[CR02_04:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Programming ~n~Andrew Greensmith, Matthew Shepcar ~n~ ~n~ ~n~ ~n~Console Programming ~n~Nigel Conroy, Richard Frankish, ~n~Andrew Greensmith, Robin Mangham, ~n~Damian McKenna, Finlay Munro, ~n~Stuart Roskell, Matthew Shepcar
+
+[CR02_05:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Jon Bellamy, Ross Childs, ~n~Nigel Conroy, Neil Dodwell, ~n~Alastair Dukes, David Huebner,
+
+[CR02_06:CRED01]
+~n~ ~n~Robin Mangham, Jason McGann, ~n~Warren Merrifield, Stephen McGreal
+
+[CR02_07:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Programming ~n~Finlay Munro, Charles Waddington
+
+[CR02_08:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Ian Bowden
+
+[CR02_09:CRED01]
+~n~ ~n~ ~n~ ~n~Art Department Director ~n~Chris Smart
+
+[CR02_10:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Character Artist ~n~Paul Smith
+
+[CR02_11:CRED01]
+~n~ ~n~ ~n~ ~n~Character Artist ~n~Chris Allison
+
+[CR02_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead City Artist ~n~Dan Roberts
+
+[CR02_13:CRED01]
+~n~ ~n~ ~n~ ~n~City Artists ~n~Paul McKee, James McHale, ~n~Siu Lee
+
+[CR02_14:CRED01]
+~n~ ~n~ ~n~ ~n~Cutscene Interiors ~n~Izzy Stewart
+
+[CR02_15:CRED01]
+~n~ ~n~ ~n~ ~n~Concept Artist ~n~John Wigley
+
+[CR02_16:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Character Animation ~n~Alan Bowker
+
+[CR02_17:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Artists ~n~Andy Walker, Jason Gee, ~n~Chris Edwards, Lee Clark
+
+[CR02_18:CRED01]
+~n~ ~n~ ~n~ ~n~Design Director ~n~David Bland
+
+[CR02_19:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~John Li
+
+[CR02_20:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Level Design ~n~Tony Gowland, Martyn Bramall
+
+[CR02_21:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Sam Hackett, Stephen Robertson, ~n~Tom Kingsley, Chris Edwards, ~n~Kris Gormley
+
+[CR02_22:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Designer ~n~Mark McGinley
+
+[CR02_23:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Paul Colls
+
+[CR02_24:CRED01]
+~n~ ~n~ ~n~ ~n~QA ~n~Jody Cobb, ~n~ ~n~Luke Brown, Nick Robey, ~n~Matthew Haven
+
+[CR02_25:CRED01]
+~n~ ~n~ ~n~ ~n~Company Secretary ~n~Naomi Martin
+
+[CR02_26:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Chris Waring
+
+[CR03_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC
+
+[CR03_02:CRED01]
+~n~ ~n~ ~n~ ~n~Executive Producer ~n~Sam Houser
+
+[CR03_03:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Creative ~n~Dan Houser
+
+[CR03_04:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Development ~n~Jamie King
+
+[CR03_05:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Alex Horton
+
+[CR03_06:CRED01]
+~n~ ~n~ ~n~ ~n~Chief Technology Officer ~n~Gary J. Foreman
+
+[CR03_07:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Producer ~n~Rich Rosado
+
+[CR03_08:CRED01]
+~n~ ~n~ ~n~ ~n~Director of Quality Assurance ~n~Jeff Rosa
+
+[CR03_09:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Analyst ~n~Lance Williams
+
+[CR03_10:CRED01]
+~n~ ~n~ ~n~ ~n~Project Lead ~n~Jameel Vega
+
+[CR03_11:CRED01]
+~n~ ~n~ ~n~ ~n~Rockstar Test Team ~n~Ethan Abeles, William Rompf, ~n~Christopher Mansfield, Chris Choi, ~n~Mike Hong, Tamara Carrion,
+
+[CR03_12:CRED01]
+~n~ ~n~Rich Huie, Mike Nathan, ~n~Vance Wallace, Marc Rodriguez, ~n~Adam Tetzloff
+
+[CR03_13:CRED01]
+~n~ ~n~ ~n~ ~n~Business Development Director ~n~Sean Macaluso
+
+[CR03_14:CRED01]
+~n~ ~n~ ~n~ ~n~Soundtrack Supervision ~n~Heinz Henn, Ivan Pavlovich, ~n~Tim Sweeney
+
+[CR04_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUT SCENES & DIALOGUE
+
+[CR04_02:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Director ~n~Navid Khonsari
+
+[CR04_03:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Performed by ~n~Danny Mastrogiorgio, Jeffrey C. Hawkins, ~n~Bruce MacVittie, David Zayas, ~n~Peter Appel, Hannah Moon, ~n~Alyssa Truppelli, Joe Lotruglio
+
+[CR04_04:CRED01]
+~n~ ~n~ ~n~ ~n~Voices Performed by ~n~Salvatore Leone - Frank Vincent ~n~Toni Cipriani - Danny Mastrogiorgio ~n~Donald Love - Will Janowitz
+
+[CR04_05:CRED01]
+~n~ ~n~ Vincenzo Cilli - Joe Lotruglio ~n~Maria Latore - Fiona Gallagher ~n~JD O'Toole - Greg Wilson
+
+[CR04_06:CRED01]
+~n~ ~n~Leon McAffrey - Ron Orbach ~n~Ray Machowski - Peter Appel ~n~Toshiko Kasen - Hannah Moon
+
+[CR04_07:CRED01]
+~n~ ~n~ Ned Burner - Peter Bradbury ~n~Ma Cipriani - Sondra James ~n~Giovanni Casa - Joel Jones
+
+[CR04_08:CRED01]
+~n~ ~n~Kazuki Kasen - Keenan Shimizu ~n~Massimo Torini - Duccio Faggella ~n~Mickey Hamfists - Chris Tardio
+
+[CR04_09:CRED01]
+~n~ ~n~Jane Hopper - Gordana Rashovich ~n~Mayor O'Donovan - John Braden ~n~8 Ball - Guru
+
+[CR04_10:CRED01]
+~n~ ~n~Radio Newscaster - Sharon Washington ~n~TV Reporter - Brooke Alexander
+
+[CR04_11:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Dialogue ~n~Una Cruickshank, Gregory Johnson, ~n~Sanford Santacroce, Ayana Osada
+
+[CR04_12:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Voices ~n~Jamie Hector, Jackson Loo, ~n~Bruce MacVittie, Jeff Gurner, ~n~Jamie Hector, Andrea Kessler,
+
+[CR04_13:CRED01]
+~n~ ~n~Lynne Horton, Phil Mikkelson, ~n~Koji Nonoyama, Devin Bennett, ~n~Jay Capozello, Mike Nathan,
+
+[CR04_14:CRED01]
+~n~ ~n~Ethan Abeles, Lance Williams, ~n~Natalya Wilson, Jay Gladstone, ~n~Craig Blair, Dave Edwards,
+
+[CR04_15:CRED01]
+~n~ ~n~Gregory Johnson, John Zurhellen, ~n~Blair Sadler, Georgia Sadler, ~n~Nicole Sadler, Judy Henderson,
+
+[CR04_16:CRED01]
+~n~ ~n~Kim Graham, Kerry Shaw, ~n~Tamara Carrion, Franceska Clemens, ~n~Navid Khonsari, Noelle Sadler,
+
+[CR04_17:CRED01]
+~n~ ~n~Nicholas Mongomery, Anthony Macbain, ~n~Ryan Rayhill, Josh Slater, ~n~Carmelo Gaeta, Hikari Yokoyama,
+
+[CR04_18:CRED01]
+~n~ ~n~Chris Jobin, Michael Rothstein, ~n~Stacey Rachels, Jennifer Koontz, ~n~Dan Merrill, Ali Khonsari,
+
+[CR04_19:CRED01]
+~n~ ~n~Ellen Rose, Chris Standal, ~n~Lorie Goodman, Neal Johnston, ~n~Son Garth, James Larsen,
+
+[CR04_20:CRED01]
+~n~ ~n~Karl Weibel, Ramin Khonsari, ~n~Ed. Thomas Jr., Stanton Sargent, ~n~Oswald Greene, Audrey Amey,
+
+[CR04_21:CRED01]
+~n~ ~n~Sanford Santacroce, Jeff Madrick, ~n~Ben Weaver, Andrea Kessler, ~n~CS Lee, Yoshi Amao,
+
+[CR04_22:CRED01]
+~n~ ~n~ Jackson Loo, Martha Morrison, ~n~Sarah Bloodsworth, Adam Deher, ~n~Billy Gonzalez
+
+[CR04_23:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Motion Graphics ~n~Maryam Parwana
+
+[CR04_24:CRED01]
+~n~ ~n~ ~n~ ~n~Dialogue Recording & Mixing ~n~Nicholas Montgomery
+
+[CR04_25:CRED01]
+~n~ ~n~ ~n~ ~n~Foley Recording ~n~Bryan Scibinico
+
+[CR04_26:CRED01]
+~n~ ~n~ ~n~ ~n~Foley recorded at Dig It Studios
+
+[CR04_27:CRED01]
+~n~ ~n~ ~n~ ~n~Production Team ~n~Noelle Sadler, Eli Weissman, ~n~Kerry Shaw, John Zurhellen, ~n~Peter Adler, Anthony Carvalho,
+
+[CR04_28:CRED01]
+~n~ ~n~Phil Poli, Jaesun Celebre, ~n~Franceska Clemens, Anthony Litton
+
+[CR04_29:CRED01]
+~n~ ~n~ ~n~ ~n~Casting ~n~Judy Henderson and Associates
+
+[CR04_30:CRED01]
+~n~Motion Capture recorded at Perspective Studios
+
+[CR05_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO
+
+[CR05_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ Banter, Talk Radio, Commercials and Imaging written by ~n~Dan Houser and Lazlow
+
+[CR05_03:CRED01]
+~n~ ~n~ ~n~ ~n~Production by ~n~Lazlow
+
+[CR05_04:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LCFR
+
+[CR05_05:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Smith Harrison, Karen Saltus
+
+[CR05_06:CRED01]
+~n~ ~n~ ~n~ ~n~Heartland Values with Nurse Bob ~n~Nurse Bob - Chuck Montgomery
+
+[CR05_07:CRED01]
+~n~ ~n~ ~n~ ~n~Guests and Callers ~n~Ayana Osada, Nick Montgomery, ~n~Russell Lewis, Nick Born, ~n~Sean Macaluso, Kerry Shaw,
+
+[CR05_08:CRED01]
+~n~ ~n~Chad Johnson, Craig Conner, ~n~Mary Elizabeth, Rob Cross, ~n~Josh Bitney
+
+[CR05_09:CRED01]
+~n~ ~n~ ~n~ ~n~Electron Zone ~n~Steve - Ptolemy Slocum ~n~Bill - Michael Urichek
+
+[CR05_10:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Alice Saltzman, Jeremy Wheaton, ~n~Ryan Rayhill, Maine Anderson, ~n~Patton Oswalt, Wil Wheaton, ~n~Anthony Cumia, Madena Parwana
+
+[CR05_11:CRED01]
+~n~ ~n~ ~n~ ~n~Breathing World ~n~Lee Chowder - Ashley Albert ~n~Crow - Gregg Martin
+
+[CR05_12:CRED01]
+~n~ ~n~ ~n~ ~n~Coq 'O' Vin ~n~Richard Goblin - Mike Shapiro
+
+[CR05_13:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Ben Krech
+
+[CR05_14:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Franceska Clemins, Sarah Bloodsworth, ~n~Adam Deher, Martha Morrison, ~n~Carmelo Gaeta
+
+[CR05_15:CRED01]
+~n~ ~n~ ~n~ ~n~Chatterbox ~n~Lazlow as himself
+
+[CR05_16:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Susan Lewis, Ben Weaver, ~n~Jacky Bam Bam, Ben Sparks, ~n~Deanna Moyer, Liezl Jacinto,
+
+[CR05_17:CRED01]
+~n~ ~n~Joshua Batista, Gregg Opie Hughes, ~n~Sondra James, Elizabeth Satterwhite
+
+[CR06_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~HEAD RADIO
+
+[CR06_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Michael Hunt - Russ Mottla
+
+[CR06_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jeff Berlin, Katelyn Hutchinson
+
+[CR06_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jeff Berlin
+
+[CR06_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Train" ~n~Conor & Jay ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Guitars by Jon McCavish ~n~Vocals by Julie Wemyss and Craig Conner
+
+[CR06_06:CRED01]
+~n~ ~n~ ~n~ ~n~"The One For Me" ~n~Cloud Nineteen ~n~Written & Produced by ~n~Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Guitars by Allan Walker & Chris Morton ~n~Lead Vocals by Raff ~n~Backing Vocals by Paul Mackie & Raff
+
+[CR06_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Take The Pain" ~n~Purser ~n~Written & Produced by ~n~Will Morton, Chris Morton ~n~Additional Lyrics by Paul Mackie ~n~Lead Vocals by Paul Mackie ~n~Additional Vocals by Will Morton
+
+[CR06_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Free Yourself" ~n~L-Marie featuring Raff ~n~Written & Produced by Craig Conner ~n~Vocals by L-Marie and Raff ~n~Backing Vocals by Craig Conner
+
+[CR06_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Drive" ~n~15 Ways ~n~Written & Produced by Colin Entwistle ~n~Vocals by Paul Mackie
+
+[CR06_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Welcome To The Real World" ~n~Rosco Stow ~n~Written & Produced by Craig Conner ~n~Guitars Written, Produced and Performed by Allan Walker ~n~Lead Vocals by Andy Dorrat ~n~Backing Vocals by Craig Conner, ~n~Anna Stuart and Kim Gurney
+
+[CR06_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Keep Dreaming" ~n~Vanilla Smoothie ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Allan Walker ~n~Vocals by Fiona Stoddart
+
+[CR07_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LIPS 106
+
+[CR07_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJs ~n~Cliff - Ed McMann ~n~Andee - Shelley Miller
+
+[CR07_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jonathan Hanst
+
+[CR07_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jonathan Hanst
+
+[CR07_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Funk In Time" ~n~Rudy La Fontaine ~n~Written & Produced by Jon McCavish ~n~Guitars by Julian Pais ~n~Vocals by Julian Pais
+
+[CR07_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Love Is The Feeling" ~n~Sawarr ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Vocals by Julie Wemyss
+
+[CR07_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Mine Until Monday" ~n~Sunshine Shine ~n~Written & Produced by Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Vocals by Paul Mackie & Raff
+
+[CR07_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Get Down" ~n~Credit Check ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Martyn Livingstone ~n~Bass by Andy Wilson ~n~Vocals by Louise Ferrier
+
+[CR07_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Tonight" ~n~Cool Timers ~n~Written & Produced by Craig Conner ~n~Vocals by Julie Wemyss
+
+[CR07_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Bassmatic" ~n~Nina Barry ~n~Written & Produced by Jon McCavish ~n~Vocals by Riz Maslen
+
+[CR07_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Into Something (C'mon Get Down)" ~n~The Jackstars ~n~Written & Produced By ~n~Craig Conner ~n~Vocals by Lucie Danti-Juan ~n~Backing vocals by ~n~Kevin Stacey & Craig Conner
+
+[CR08_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~DOUBLE CLEF FM
+
+[CR08_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Sergio Boccino - Robert Blumenfeld
+
+[CR08_03:CRED01]
+~n~ ~n~ ~n~ ~n~Caller ~n~Gerald Cosgrove
+
+[CR08_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Anvil Chorus" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~& Munich State Opera Choir ~n~Courtesy of Point Classics, LLC
+
+[CR08_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Tacea la notte placida" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra & ~n~Munich State Opera Choir ~n~(Eva Illes, Soprano) ~n~Courtesy of Point Classics, LLC
+
+[CR08_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Nabucco: Chorus of the Hebrew Slaves" ~n~Composed by Giuseppe Verdi ~n~Performed by Philharmonia Slavonica ~n~Courtesy of Point Classics, LLC
+
+[CR08_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Così fan tutte: È amore un ladroncello" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~Bratislava Opera Soloists, ~n~Choir and Orchestra ~n~(Ida Kirilova "Dorabella") ~n~Courtesy of Point Classics, LLC
+
+[CR08_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Marriage of Figaro: Overture" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~London Philharmonic Orchestra ~n~Courtesy of Point Classics, LLC
+
+[CR08_09:CRED01]
+~n~ ~n~ ~n~ ~n~"I Pagliacci: Vesti la giubba" ~n~Composed by Ruggiero Leoncavallo ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~(José Maria Perez, Tenor) ~n~Courtesy of Point Classics, LLC
+
+[CR09_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RISE FM
+
+[CR09_02:CRED01]
+~n~ ~n~ ~n~ ~n~Engineered by Mike Callaghan
+
+[CR09_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Boy Sanchez - Oliver Vaquer
+
+[CR09_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~DJ Andre, Lupus Thunder, ~n~Andi Hanley, Mat Ckillz, ~n~Couzin Ed, Lazlow,
+
+[CR09_05:CRED01]
+~n~ ~n~Terry Donovan, Bill Brissette, ~n~Juan Aller, Ed Andrews, ~n~Xeni Jardin, Matthew Orr, ~n~Jeff Berlin
+
+[CR09_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Sing It Back ~n~(Boris Musical Mix)" ~n~Moloko ~n~Written by M. Brydon, R. Murphy ~n~Published by Chrysalis Music (ASCAP) ~n~Remix and Additional Production by ~n~Boris Dlugosch ~n~(p) + © 1998 The Echo Label ~n~Courtesy of Chrysalis Music Limited
+
+[CR09_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Free" ~n~Ultra Nate ~n~Written by U. Nate, L. Springsteen, ~n~J. Ciafone ~n~Published by Warner/ Chappell Music/ BMG Music ~n~(p) + © 1997 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
+
+[CR09_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I Believe" ~n~Happy Clappers ~n~Written by C. Scott, G. Ripley, M. Knotts, M. Topham ~n~Published by All Boys Music Ltd ~n~(p) + © 1994 C J Scott Productions ~n~Courtesy of C J Scott Productions
+
+[CR09_09:CRED01]
+~n~ ~n~ ~n~ ~n~"House Music" ~n~Eddie Amador ~n~Written by Eddie Amador ~n~Published by ~n~Deep Dish Music ~n~(p) + © 1998 Yoshitoshi Records ~n~Courtesy of ~n~Deep Dish Recordings, Inc. ~n~by arrangement with ~n~Nasseri Music Business Solutions
+
+[CR09_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Feel What You Want" ~n~Kristine W ~n~Written by R. Dougan, R. Armstrong, ~n~K. Weitz ~n~Published by BMG Music/Weitz House Publishing (ASCAP)/ EMI Music Publishing ~n~(p) + © 1996 RCA/ BMG ~n~Courtesy of Sony BMG Entertainment
+
+[CR09_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Hideaway ~n~(Deep Dish Vocal Remix)" ~n~De'Lacy ~n~Written by K. Hedge, J. Milan ~n~Published by ~n~Warner-Tamerlane Publishing Corp ~n~Remix and Additional Production by ~n~Deep Dish ~n~(p) 1995 Easy Street Recordings Inc ~n~© 1998 Kickin Music Ltd ~n~Courtesy of Easy Street Recordings Inc. and Slip n' Slide Records
+
+[CR09_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Spin Spin Sugar ~n~(Armand's Dark Garage Mix)" ~n~Sneaker Pimps ~n~Written by I. Pickering, L. Coverdale Howe, C. Corner ~n~Remix and Additional Production by ~n~Armand Van Helden ~n~Published by BMG Songs, Inc ~n~(p) + © 1997 Clean Up Records Ltd ~n~Courtesy of EMI Music / ~n~One Little Indian, Ltd
+
+[CR09_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Plastic Dreams" ~n~Jaydee ~n~Written by R. Albers ~n~Published by TBM Holland ~n~(p) 1992 R & S Records ~n~© Robin Albers ~n~Courtesy of Robin "Jaydee" Albers
+
+[CR09_14:CRED01]
+~n~ ~n~ ~n~ ~n~"Altered States" ~n~Ron Trent ~n~Written by R. Trent ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
+
+[CR09_15:CRED01]
+~n~ ~n~ ~n~ ~n~"There Will Come A Day (Half Tab Dub)" ~n~The Absolute featuring Suzanne Palmer ~n~Written by M. Pichiotti, C.J. Snider ~n~Published by Much Noyse Music/ ~n~Hoobini Music (ASCAP) ~n~(p) + © 1995 Mark Productions, Inc ~n~Courtesy of Mark Productions, Inc
+
+[CR09_16:CRED01]
+~n~ ~n~ ~n~ ~n~"Positive Education" ~n~Slam ~n~Written by S. McMillan, O. Meikle, ~n~G. Gibbons, J. Muotone ~n~Published by EMI Music Publishing ~n~(p) + © 1997 Soma Recordings Ltd ~n~Courtesy of Soma Recordings Ltd
+
+[CR09_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Flash" ~n~Green Velvet ~n~Written by C. Jones ~n~Published by Curtis A. Jones Music (ASCAP) ~n~(p) 1995 Relief Records ~n~© 2000 Warner Bros. Records and N.E.W.S. Records and Relief Records ~n~Courtesy of Warner Strategic Marketing, N.E.W.S. Records, Relief Records
+
+[CR09_18:CRED01]
+~n~ ~n~ ~n~ ~n~"Circus Bells (Hardfloor Remix)" ~n~Robert Armani ~n~Written by R. Armani ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse/ ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
+
+[CR09_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Higher State Of Consciousness" ~n~Wink ~n~Written by J. Wink ~n~Published by Strictly Rhythm Publishing, Inc. (ASCAP) / Warner/Chappell Music / Wink Inc. (ASCAP) / EMI Music Publishing ~n~(p) + © 1995 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO DEL MUNDO
+
+[CR10_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Panjit Gavaskar - Hajaz Akram
+
+[CR10_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jessica Wachsman
+
+[CR10_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Raghupati (Folk Tune)" ~n~Ananda Shankar ~n~Arranged by A. Shankar, Lewinson, Hassilev ~n~Published by Warner Chappell Inc ~n~(p) + © 1970 Reprise Records for the U.S. and WEA International Inc ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Dum Maro Dum" ~n~Asha Bhosle ~n~Written by RD Burman, Anand Bakshi ~n~Published by Saregama India Ltd ~n~(p) + © 1971 Saregama India Ltd ~n~Courtesy of Saregama India Ltd
+
+[CR10_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Neeve Nanna (Only You Were Mine)" ~n~Vijaya Anand ~n~Written by Vijaya Anand ~n~Published by Shake Boom! (ASCAP)/ ~n~Luaka Bop Inc ~n~(p) 1988 Lahari/Audiovision ~n~© 1992 Sire Records Company ~n~Courtesy of ~n~Luaka Bop Records
+
+[CR10_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Kidda" ~n~Natacha Atlas ~n~Written by N. Atlas, J. Reynolds, J. Adams ~n~Published by Warner Chappell Music Ltd ~n~(p) + © 1997 Nation Records Ltd/ ~n~Beggars Banquet Records Ltd ~n~Courtesy of Nation Records Ltd/ ~n~Beggars Banquet Records Ltd
+
+[CR10_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Hebeena Hebeena" ~n~Farid El Atrache ~n~Written by Barakat, Atrache ~n~Published by Voices Of Lebanon ~n~(p) + © 1974 Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
+
+[CR10_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Aini Bet Ref" ~n~Ahmed Mneimneh ~n~Written by A. Alishaan ~n~Published by D. Dersahakian (ASCAP) ~n~(p) + © Voice of Stars & ~n~Lys Records ~n~Courtesy of Voice of Stars & ~n~Lys Records
+
+[CR10_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Im Nin'Alu" ~n~Ofra Haza ~n~Traditional, Arranged by I. Ashdot, B. Nagari ~n~Published by Blue Lake Music ~n~ (p) + © 1988 Sire Records Company ~n~Courtesy of Warner Strategic Marketing
+
+[CR10_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ballaa Tsoubou Hal Kahwa" ~n~Samira Tawfic ~n~Written by R. Al Khylani, J. Al A'ss ~n~Published by Copyright Control ~n~(p) + © Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
+
+[CR11_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~K-JAH
+
+[CR11_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Natalee Walsh Davis - Pascale Armand
+
+[CR11_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Karl Weibel, Pat McKay
+
+[CR11_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
+
+[CR11_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Pick a Sound" ~n~Selah Collins, Ruddy Ranks, Redeye ~n~Written by S. Collins, H. Burke, ~n~E. Donaldson ~n~Published by Copyright Control/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_06:CRED01]
+~n~ ~n~ ~n~ ~n~"What a Wonderful Feeling" ~n~Errol Bellot, Ruddy Ranks, Redeye ~n~Written by E. Bellot, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_07:CRED01]
+~n~ "Watch How the People Dancing" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by K. Wright ~n~Published by Jetstar ~n~Courtesy of Honest Jons Records
+
+[CR11_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Lean Boot" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson ~n~Published by Westbury Music/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Ready For the Dancehall Tonight" ~n~Peter Bouncer, Ruddy Ranks, Redeye ~n~Written by Peter McKenzie, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_10:CRED01]
+~n~ ~n~ ~n~ ~n~"You Ha Fe Cool" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson. ~n~Published by Westbury Music/MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ring My Number" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson. ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR11_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Run Come Call Me" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
+
+[CR12_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THE LIBERTY JAM
+
+[CR12_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~DJ Clue as himself
+
+[CR12_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jay Wright, Tom Yankowski, Chris Mercado, Vanessa Grullon
+
+[CR12_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
+
+[CR12_05:CRED01]
+~n~ ~n~ ~n~ ~n~"All I Need" ~n~Method Man ~n~Written by C. Smith, R. Diggs ~n~Published by Sony BMG Music ~n~(p) + © 1994 Def Jam Recordings ~n~Courtesy of Def Jam Recordings/ UME
+
+[CR12_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Shook Ones Pt. II" ~n~Mobb Deep ~n~Written by A. Johnson, K. Muchita ~n~Published by ~n~BMG Songs Inc. (ASCAP) ~n~(p) + © 1995 BMG Music ~n~Courtesy of RCA Records by arrangement with Sony BMG Ent
+
+[CR12_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Incarcerated Scarface" ~n~Raekwon ~n~Written by R. Diggs, C. Woods, A. Tilman ~n~Published by ~n~Careers-BMG Music Publishing Inc./ ~n~Wu Tang Publishing (BMI)/ ~n~Bridgeport Music ~n~(p) + © 1995 BMG Music
+
+[CR12_08:CRED01]
+Courtesy of RCA Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "You're Getting A Little Too Smart" as performed by The Detroit Emeralds. Courtesy of Westbound Records. Used by permission. All rights reserved
+
+[CR12_09:CRED01]
+~n~ ~n~ ~n~ ~n~"N.O.R.E." ~n~Noreaga ~n~Written by V. Santiago, J. Olivier, ~n~S. Barnes ~n~Published by Suite 1202 Music/ Jose Luis Gotcha Music (BMI)/ Slamuwell Productions/ Jelly's Jam LLC (ASCAP)/ ~n~12 & Under Music/
+
+[CR12_10:CRED01]
+Jumping Bean Songs LLC (BMI) ~n~(p) + © 1998 Penalty Recordings ~n~Courtesy of Warner Strategic Marketing
+
+[CR12_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Shut 'Em Down (Remix)" ~n~Onyx featuring Noreaga & Big Pun ~n~Written by F. Scruggs, K. Jones, T. Taylor, E. Hinson, E. Simmons ~n~Published by Universal Music/ ~n~Let Me Show You Music/ ~n~Jelly Jams Music/
+
+[CR12_12:CRED01]
+III Posse Music/ Ill Hill Billy'z Music/ Warner-Tamerlane Music ~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Beware" ~n~Big Pun ~n~Written by C. Rios, J. Tineo ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP), ~n~Administered by Jelly Jams Music (BMI)/ ~n~P.H.D. Music (ASCAP)
+
+[CR12_14:CRED01]
+(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent
+
+[CR12_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Twinz (Deep Cover 98)" ~n~Big Pun ~n~Written by C. Rios, J. Cartegena, ~n~C. Brodus, A. Young, C. Wolfe ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP)/ ~n~Jelly Jams Music (BMI)/ ~n~Sony Tunes Inc. (ASCAP)
+
+[CR12_16:CRED01]
+~n~(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "Deep Cover" as performed by Dr. Dre. Courtesy of Solar Records. Used by permission. All rights reserved
+
+[CR12_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Get At Me Dog" ~n~DMX featuring Sheek of The Lox ~n~Written by E. Simmons, D. Blackman, ~n~A. Fields, S. Taylor ~n~Published by Universal Music Publishing/ EMI April Music/ ~n~Sony ATV Tunes
+
+[CR12_18:CRED01]
+~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Ruff Ryders Anthem (Remix)" ~n~DMX featuring DJ Clue, Jadakiss, Styles, Drag-On & Eve ~n~Written by J. Phillips, M.J. Smalls, E. Shaw, K. Ifill, E. Simmons, K. Dean, E. Jeffers ~n~Published by Universal Music Publishing/ EMI Music Publishing
+
+[CR12_20:CRED01]
+(p) + © 1998 Roc-a-Fella Records ~n~Courtesy of Universal Music Enterprises
+
+[CR12_21:CRED01]
+~n~ ~n~ ~n~ ~n~"Do What You Feel" ~n~Redman featuring Method Man ~n~Written by P. Michael, R. Noble, C. Smith ~n~Published by Careers BMG/ Sony ATV Tunes/ Famous Music ~n~(p) + © 1996 Def Jam ~n~Courtesy of Universal Music Enterprises
+
+[CR12_22:CRED01]
+~n~ ~n~ ~n~ ~n~"Chain Gang Freestyle" ~n~The Lox & Black Rob ~n~Written by Frierson, Phillips, Styles, Jacobs, Ross, Shaw ~n~Published by EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_23:CRED01]
+~n~ ~n~ ~n~ ~n~"Chest2chest Freestyle" ~n~The Lox ~n~Written by Phillips, Styles, Jacobs, Shaw, Barnes, Lemay, Montgomery ~n~Published by Taggie Music (BMI)/ ~n~Universal Polygram Int'l. (ASCAP)/ ~n~EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_24:CRED01]
+This track contains a sample of "Next Level" as performed by Showbiz & AG. Courtesy of Universal Music Enterprises. Used by permission. All rights reserved
+
+[CR13_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~MSX 98
+
+[CR13_02:CRED01]
+~n~ ~n~ ~n~ ~n~MC ~n~Codebreaker as himself
+
+[CR13_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Timecode
+
+[CR13_04:CRED01]
+~n~ ~n~ ~n~ ~n~Station Production ~n~Timecode
+
+[CR13_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Renegade Snares" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Terrorist" ~n~Renegade ~n~Written, Produced & Engineered by ~n~A. Dookith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Finest Illusion (Legal Mix)" ~n~Foul Play ~n~Written, Produced & Engineered by ~n~J. Morrow, S. Bradshaw, ~n~S. Gurley ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future (FBD Project Remix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Stay Calm (Foul Play Remix)" ~n~DJ Pulse ~n~Written, Produced & Engineered by ~n~A. Brown ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Disturbance (Tango Remix)" ~n~Hyper-On Experience ~n~Written, Produced & Engineered by ~n~A. Banks, D. Demierre ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Cold Fresh Air" ~n~Higher Sense ~n~Written, Produced & Engineered by ~n~A. Miles, DJ Rhythm ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Thru The Vibe (2 on 1 Mix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_14:CRED01]
+~n~ ~n~ ~n~ ~n~"The Helicopter Tune" ~n~Deep Blue ~n~Written, Produced & Engineered by ~n~S. O'Keefe ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Dred Bass" ~n~Dead Dred ~n~Written, Produced & Engineered by ~n~W. Smith, L. Smith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR14_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~FLASHBACK FM
+
+[CR14_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Reni Wassulmaier - Barbara Rosenblatt
+
+[CR14_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Mike Shapiro
+
+[CR14_04:CRED01]
+~n~ ~n~ ~n~ ~n~"First Hand Experience ~n~In Second Hand Love" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_05:CRED01]
+~n~ ~n~ ~n~ ~n~"I Wanna Rock You" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~K. Forsey ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_06:CRED01]
+~n~ ~n~ ~n~ ~n~"E=MC2" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Chase" ~n~Giorgio Moroder ~n~Written by G. Moroder ~n~Published by Warner/ Chappell Music ~n~(p) + © 1978 Casablanca Films/ ~n~Columbia Pictures ~n~Courtesy of Sony Pictures Entertainment
+
+[CR14_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I'm Left, You're Right, She's Gone" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_09:CRED01]
+~n~ ~n~ ~n~ ~n~"From Here To Eternity" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Casablanca Records ~n~Courtesy of Universal Music Enterprises
+
+[CR15_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~COMMERCIAL VOICES
+
+[CR15_02:CRED01]
+~n~ ~n~ ~n~ ~n~Alex Anthony, Anouchka Benson, ~n~Audrey Amey, Bill Smith, ~n~Billy Gonzalez, Brian Thomas,
+
+[CR15_03:CRED01]
+~n~ ~n~Chris Jobin, Chris Silvestro, ~n~Craig Blair, Dan Houser, ~n~Dan Merrill, Ed Thomas,
+
+[CR15_04:CRED01]
+~n~ ~n~Ethan Abeles, Garth Johnston, ~n~Gregg Martin, Gregory Johnson, ~n~Hikari Yokoyama, James Ferrante,
+
+[CR15_05:CRED01]
+~n~ ~n~James Larson, Jay Capozello, ~n~Jayson Gladstone, Jeff Berlin, ~n~Jen Sweeney, Jessica Wachsman,
+
+[CR15_06:CRED01]
+~n~ ~n~ JJ Adler, Jonathan Hanst, ~n~Joshua Batista, Karen Saltus, ~n~Koji Nonoyami, Lance Williams,
+
+[CR15_07:CRED01]
+~n~ ~n~Lazlow, Lynne Horton, ~n~Michael Nathan, Mike Ferrante Jr., ~n~Chris Ferrante, Mike Shapiro,
+
+[CR15_08:CRED01]
+~n~ ~n~Natalya Wilson, Noelle Sadler, ~n~Phil Mikkelson, Ron Reeve, ~n~Smith Harrison, Stacy Rachels,
+
+[CR15_09:CRED01]
+~n~ ~n~ Steve Carlesi, Julie Wemyss, ~n~Kim Gurney
+
+[CR16_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUTSCENE MUSIC
+
+[CR16_02:CRED01]
+~n~ ~n~ ~n~ ~n~"Japanese Geisha" ~n~Sonia Slany ~n~Written by Sonia Slany ~n~Published by West One Music ~n~Courtesy of APM Music, LLC
+
+[CR16_03:CRED01]
+~n~ ~n~ ~n~ ~n~"The Heist" ~n~Bugz in the Attic ~n~Written by K. Tatham ~n~Published by Copyright Control ~n~(p) 2005 Bugz In The Attic ~n~Courtesy of Bugz In The Attic ~n~www.bugzintheattic.co.uk
+
+[CR16_04:CRED01]
+~n~ ~n~ ~n~ ~n~"A Dark March" ~n~Danger Mouse ~n~Written by Danger Mouse ~n~Published by ~n~Underground Animals (ASCAP)
+
+[CR17_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC PUBLISHING TEAM
+
+[CR17_02:CRED01]
+~n~ ~n~ ~n~ ~n~Terry Donovan, Jenefer Gross, ~n~Jennifer Kolbe, Devin Winterbottom, ~n~Adam Tedman, Michael Elkind,
+
+[CR17_03:CRED01]
+~n~ ~n~Paul Yeates, Hosi Simon, ~n~Daniel Einzig, Marlene Yamaguchi, ~n~Gauri Khindaria, Stanton Sarjeant,
+
+[CR17_04:CRED01]
+~n~ ~n~Jordan Chew, Ryan Rayhill, ~n~Devin Bennett, Todd Zuniga, ~n~Thomas O'Donnell, Maria Tabia,
+
+[CR17_05:CRED01]
+~n~ ~n~Anthony Carvalho, Lyonel Tollemache, ~n~John Notarfrancesco, Jerry Luna, ~n~Stuart Petri, Stephen Walsh,
+
+[CR17_06:CRED01]
+~n~ ~n~Michael Carnevale, Andrea Borzuku, ~n~John Schuhmann, Alice Chuang, ~n~Mike Torok, Mayumi Kobayashi,
+
+[CR17_07:CRED01]
+~n~ ~n~Elizabeth Satterwhite, Bruce Dugan, ~n~Eli Weissman, Phil Poli, ~n~Jaesun Celebre, Russell Lewis,
+
+[CR17_08:CRED01]
+~n~ ~n~Sean Mackenzie, Megan Henretta, ~n~Angus Wong, Kristine Severson
+
+[CR17_09:CRED01]
+~n~ ~n~ ~n~ ~n~Cover Art ~n~Steven Olds, Stephen Bliss, ~n~Anthony Macbain
+
+[CR17_10:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LONDON PD
+
+[CR17_11:CRED01]
+~n~ ~n~ ~n~ ~n~ Chris Madgwick, Chris Wood, ~n~Daimion Pinnock, David McCarthy, ~n~Graham Ainsley, Jurgen Mol,
+
+[CR17_12:CRED01]
+~n~ ~n~ Laura Battistuzzi, Maike Köhler, ~n~Shino Hori, Lucien King
+
+[CR18_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LINCOLN
+
+[CR18_02:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Mark Lloyd
+
+[CR18_03:CRED01]
+~n~ ~n~ ~n~ ~n~Deputy QA Manager ~n~Tim Bates
+
+[CR18_04:CRED01]
+~n~ ~n~ ~n~ ~n~QA Supervisor ~n~Kevin Hobson
+
+[CR18_05:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Tester ~n~Eddie Gibson ~n~ ~n~ ~n~ ~n~Secondary Lead Tester ~n~Mike Bennett
+
+[CR18_06:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Jonathan Stones, Mike Emeny, ~n~Andy Mason, Lee Johnson, ~n~Carl Young, Matthew Lunnon, ~n~Dan Goddard, Steve McGagh, ~n~Craig Reeve, Joby Luckett
+
+[CR18_07:CRED01]
+~n~ ~n~ ~n~ ~n~Localization Team ~n~ ~n~ ~n~ ~n~Localization Supervisor ~n~Chris Welsh
+
+[CR18_08:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Antoine Cabrol, Dominic Garcia, ~n~Paolo Ceccotti, Ferruccio Cinquemani, ~n~Nicolas Klimoff, Jesús Pérez Rosales ~n~ ~n~ ~n~ ~n~IT Support ~n~Nick McVey
+
+[CR19_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~SPECIAL THANKS
+
+[CR19_02:CRED01]
+~n~ ~n~ ~n~ ~n~Scooter, Ross Wallace, ~n~Steve Taylor, Kevin Wong, ~n~Kevin Bolt, John Haime,
+
+[CR19_03:CRED01]
+~n~ ~n~Dave Watson, Thomas French, ~n~James Arthur, Martin Connor, ~n~Brendon McDonald, Julie Wemyss,
+
+[CR19_04:CRED01]
+~n~ ~n~Raff Crolla, James Duffy, ~n~Kim Gurney, Andrew Ness, ~n~Andy Brooks (Gearbox), Alan Mcgregor,
+
+[CR19_05:CRED01]
+~n~ ~n~Chris McCallum, Fred, Narns, ~n~Alan, Taruki, Red, ~n~Big Foot, Rita Liberator, ~n~Elliot Torres
+
+[CR19_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THANKS
+
+[CR19_07:CRED01]
+~n~ ~n~ ~n~ ~n~Deborah Mannis-Gardner ~n~and Mark Schwartz. ~n~Randy Acker, Karen Adams, ~n~Mark Ainley, Robin Albers,
+
+[CR19_08:CRED01]
+~n~ ~n~Duncan Baker, Armen Boladian, ~n~Tanya Bridges, Richard Brown, ~n~Matt Brookman, Elena Byington,
+
+[CR19_09:CRED01]
+~n~ ~n~Ed Butts, Rob Cairns, ~n~Mike Callaghan, Joseph Carlone, ~n~Kevin Carson, Jason Chin,
+
+[CR19_10:CRED01]
+~n~ ~n~Allison Cipris, Alimah Deen, ~n~James Ellis, Helen English, ~n~Nasko Fejza, Scott Gardner,
+
+[CR19_11:CRED01]
+~n~ ~n~Jochem Gerrits, ~n~Laurie Goldstein Thomas Golubic, ~n~Nick Guarino, Jon Handle, ~n~Millie Hysu, Robert Jo,
+
+[CR19_12:CRED01]
+~n~ ~n~Paul Johannes, Gavin Johnson, ~n~Curtis A. Jones, Jennifer Justice, ~n~Rod Kotler, Diana La Pointe,
+
+[CR19_13:CRED01]
+~n~ ~n~Michael Lau, Jim Long, ~n~Alex De Maegd, John Massa, ~n~Kendall Minter, Steve Morgan,
+
+[CR19_14:CRED01]
+~n~ ~n~Giorgio Moroder, Suzanne Moss, ~n~Melissa Munana, Kirin Murphy, ~n~Kurosh Nasseri,
+
+[CR19_15:CRED01]
+~n~ ~n~Gwen Niles Sean Ogden ~n~aka DJ Nightshade, ~n~Robin Orlowski, Jonathan Palmer, ~n~Tanvi Patel, Jane Peterer,
+
+[CR19_16:CRED01]
+~n~ ~n~Mark Picchiotti, Rob Playford, ~n~Dan Quan, R. Ramnarayan, ~n~Mary Beth Roberts, ~n~Virgil Roberts, Lindsay Rodman,
+
+[CR19_17:CRED01]
+~n~ ~n~Jim Romano, Craig Roseberry, ~n~Gerry Rosenblatt, RZA, ~n~Ali Samii, Alan Scholefield,
+
+[CR19_18:CRED01]
+~n~ ~n~Christopher Scott, Suzi Scott, ~n~Fredro Scruggs, Jennefer Showalter, ~n~Alan Skiena, Saskia Slegers,
+
+[CR19_19:CRED01]
+~n~ ~n~Fran Spero, Lem Springsteen, ~n~David Steel, Jane Ventom, ~n~Christian Wiseman, Debi Wylde,
+
+[CR19_20:CRED01]
+~n~ ~n~Donna Young, Richie Zito
[FEM_PED]
PED DENSITY
@@ -14723,4 +17460,4 @@ CAR DENSITY
[DUMMY]
THIS LABEL NEEDS TO BE HERE !!!
-AS THE LAST LABEL DOES NOT GET COMPILED
+AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file
diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt
index 97f510cd..887f08b2 100644
--- a/utils/gxt/italian.txt
+++ b/utils/gxt/italian.txt
@@ -1,1500 +1,1529 @@
-{
- New strings are at the bottom of file.
- Do not change the order of strings.
- You can fix the typos of existing translation but please refrain from
- unnecessary edits like rephasing because you think it suits better for your taste.
-}
+[LETTER1]
+abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"$,.'-?!!SDBF
+
+[DEFNAM]
+Claude----------------------
[IN_VEH]
-~g~Ehi! Torna nel veicolo!
+~w~Ehi! Torna nel ~b~veicolo!
+
+[IN_VEH2]
+~w~Hai bisogno di un veicolo per questo lavoro!
+
+[IN_BOAT]
+~w~Hai bisogno di una barca per questo lavoro!
[HEY]
-~g~Non procedere da solo, stai insieme ai tuoi compagni!
+~w~Non procedere da solo, stai con i tuoi compagni!
-[HELP3]
-Ricorda che puoi eseguire uno scatto solo per brevi tratti.
+[HEY2]
+~w~Non allontanarti, stai col tuo gruppo!
-[HELP4_D]
-Sposta la ~h~levetta analogica destra~w~ verso l'alto per ~h~accelerare~w~.
+[HEY3]
+~w~Hai lasciato indietro 8-Ball! Torna a prenderlo!
-[HELP5_D]
-Sposta la ~h~levetta analogica destra~w~ verso il basso per ~h~frenare~w~ o, se il veicolo è fermo, per inserire la ~h~retromarcia~w~.
+[HEY6]
+~w~Hai abbandonato il tuo onore con lo Yakuza Kanbu. Devi proteggerlo!
-[HELP7_A]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per ~h~mirare~w~ con il fucile di precisione.
+[HEY7]
+~w~Un'arma extra potrebbe essere utile. Torna a prendere il tuo contatto!
-[HELP7_D]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per ~h~mirare~w~ con il fucile di precisione.
+[HEY9]
+~w~Vuoi sapere le ultime novità? Vai a trovare il contatto!
-[HELP10]
-Questa stella indica il tuo livello di sospetto.
+[GATE_1]
+~w~I Sindacco apriranno solamente a una delle loro macchine.
-[HELP11]
-Più stelle hai, maggiore è il tuo livello di sospetto.
+[HELPA]
+~w~Questo è il tuo ~h~rifugio.
-[HELP13]
-In alcuni casi potresti dover utilizzare passaggi non segnati sul radar.
+[HELPB]
+~w~Quando non sei in missione, puoi salvare i tuoi progressi raccogliendo l'~h~icona di salvataggio~w~. Il tempo avanzerà di 6 ore.
-[TIMER]
-Questa è una missione a tempo: devi portarla a termine prima che il contatore raggiunga lo zero.
+[HELPC]
+~w~I veicoli che si trovano nel ~h~garage vicino all'ingresso~w~ verranno conservati quando salvi la partita.
-[HORN]
-~g~Suona il clacson.
+[HELPD]
+Per uscire dal rifugio, cammina sul ~h~segno.
-[NOMONEY]
-~g~Ti servono più soldi!
+[HELP0]
+~w~Premi~h~ ~k~ ~VEEE~ ~w~per entrare o uscire da un veicolo.
-[REWARD]
-RICOMPENSA ~1~$
+[HELP1]
+~w~Fermati al centro del ~h~segno giallo.
-[M_FAIL]
-MISSIONE FALLITA!
+[HELP3]
+~w~Puoi scattare per un breve periodo di tempo prima di stancarti.
-[M_PASS]
-MISSIONE COMPLETATA! ~1~$
+[HELP4]
+~w~Premi~h~ ~k~ ~VEACC~ ~w~per ~h~accelerare,~h~ ~k~ ~VESTR~ ~w~per sterzare.
-[DEAD]
-MASSACRATO!
+[HELP5]
+~w~Premi~h~ ~k~ ~VEBRK~ ~w~per ~h~frenare~w~ oppure per fare ~h~inversione~w~ se il veicolo è fermo.
-[BUSTED]
-BECCATO!
+[HELP6]
+~w~Premi~h~ ~k~ ~VEHB~ ~w~per usare il ~h~freno a mano.
-[WEATHE1]
-FORZA TEMPO SOLEGGIATO
+[HELP7]
+~w~Tieni premuto~h~ ~k~ ~PDLT~ ~w~per mirare con un fucile da cecchino.
-[WEATHE2]
-FORZA TEMPO MOLTO SOLEGGIATO
+[HELP8]
+~w~Usa~h~ ~k~ ~SNZI~ ~w~e~h~ ~k~ ~SNZO~ ~w~per ~h~ingrandire o ridurre~w~ quando stai mirando.
-[WEATHE3]
-FORZA TEMPO NUVOLOSO
+[HELP10]
+~w~La ~h~stella gialla~w~ indica che sei ~h~ricercato~w~: gli agenti di polizia cercheranno di arrestarti.
-[WEATHE4]
-FORZA TEMPO PIOVOSO
+[HELP11]
+~w~Quando appaiono più stelle, la polizia cerca di fermarti con più impegno.
-[WEATHE5]
-FORZA TEMPO NEBBIOSO
+[HELP12]
+~w~Cammina sul ~h~segno giallo~w~ per iniziare una missione.
-[WEATHE6]
-TEMPO NORMALE
+[HELP13]
+~w~Cerca delle scorciatoie non segnalate sul ~h~radar~w~ e usale a tuo vantaggio!
-[NUMBER]
-~1~
+[HELP14]
+~w~Usa il ~h~radar~w~ per orientarti in città: segui il ~h~segnale giallo~w~ per raggiungere il ~h~rifugio.
-[LOADCAR]
-CARICAMENTO VEICOLO... (PREMI L1 PER ANNULLARE)
+[HELP16]
+~w~Usa~h~ ~k~ ~VESTR~ ~w~per sterzare.
-[CARSOFF]
-Veicoli disabilitati.
+[HELP17]
+~w~Phil Cassidy: per mercanzia di grosso calibro. È in arrivo nuova merce!
-[CARS_ON]
-Veicoli abilitati.
+[HELP18]
+~w~Consegnata nuova merce al negozio d'armi di Phil Cassidy!
-[TEXTXYZ]
-Scrittura coordinate sul file...
+[HELP18B]
+~w~Ora puoi prendere il ~h~mitragliatore~w~ da Phil Cassidy!
-[CHEATON]
-Modalità trucchi attivata
+[HELP19A]
+~w~Per eseguire una ~h~raffica laterale~w~, tieni premuto~h~ ~k~ ~VELL~ ~w~o~h~ ~k~ ~VELR~ ~w~e spara usando~h~ ~k~ ~VEWEP~.
-[CHEATOF]
-Modalità trucchi disattivata
+[HELP19C]
+~w~Puoi eseguire una raffica laterale solo se hai una ~h~mitragliatrice.
-[IMPORT1]
-Esci fuori e aspetta il tuo veicolo.
+[HELP19D]
+~h~Le moto ~w~ti permettono di ~h~sparare avanti~w~ usando~h~ ~k~ ~VEWEP~.
-[PAGEB11]
-Lanciafiamme depositato nel nascondiglio
+[HELP19F]
+~w~Puoi sparare avanti solo se hai una ~h~mitragliatrice.
-[WANT_A]
-Verrai arrestato solo se hai un ~h~livello di sospetto~w~.
+[HELP20]
+~w~Hai trovato una ~h~bustarella della polizia!~w~ Raccogliendole puoi ridurre il tuo ~h~livello di sospetto~w~ di una stella!
-[WANT_B]
-Il tuo ~h~livello di sospetto~w~ è rappresentato da una riga di stelle nell'angolo superiore destro dello schermo.
+[HELP21]
+~w~Usa~h~ ~k~ ~PDCWE~ ~w~per cambiare arma quando sei a piedi.
-[WANT_C]
-Adesso hai un ~h~livello di sospetto~w~ pari a uno...
+[HELP22]
+~w~Per trovare il ~h~magazzino di Vincenzo~w~, segui la ~h~V~w~ sul radar.
-[WANT_D]
-due...
+[HELP23]
+~w~Se il segnale è un ~h~triangolo rivolto verso il basso~w~, ~h~l'obiettivo~w~ è sotto di te.
-[WANT_E]
-tre...
+[HELP24]
+~w~Tieni premuto~h~ ~k~ ~VELL~ ~w~o~h~ ~k~ ~VELR~ ~w~per guardare a ~h~sinistra o destra~w~ in un veicolo. Premi entrambi per guardare ~h~indietro.
-[WANT_F]
-Man mano che il tuo ~h~livello di sospetto~w~ aumenta, attirerai l'attenzione di forze dell'ordine sempre più potenti.
+[HELP25]
+~w~Premi~h~ ~k~ ~CVEIW~ ~w~per cambiare ~h~la visuale.
-[WANT_G]
-Se vieni ~h~'beccato'~w~, verrai portato alla più vicina stazione di polizia.
+[HELP26]
+~w~Salta su una barca e premi~h~ ~k~ ~VEEE~ ~w~per guidarla.
-[WANT_H]
-I poliziotti prenderanno tutte le tue armi e parte dei tuoi risparmi come bustarella.
+[HELP27]
+~w~Se sei nei pressi di una barca, premi~h~ ~k~ ~VEEE~ ~w~per salire a bordo.
-[WANT_I]
-Qualsiasi missione stavi affrontando verrà considerata come fallita.
+[HELP29]
+~w~Premi~h~ ~k~ ~VEHN~ ~w~per suonare il ~h~clacson~w~.
-[WANT_J]
-Scoprirai alcuni modi per ridurre il tuo livello di sospetto procedendo nel gioco.
+[HELP30]
+~w~Usa~h~ ~k~ ~VECRS~ ~w~per scegliere le ~h~stazioni radio.
-[WANT_K]
-Se sei in un veicolo, i ~h~carozzieri~w~ potranno ~h~azzerare il tuo livello di sospetto~w~.
+[HELP33]
+~w~Ora che i killer sono stati pagati, porteranno a termine il loro lavoro a qualunque costo.
-[HEAL_B]
-Quando sei ~h~'massacrato'~w~, verrai trasportato al più vicino ospedale.
+[HELP34]
+~w~Tieni premuto~h~ ~k~ ~VELB~ ~w~per guardare indietro quando sei in macchina.
-[HEAL_C]
-Perderai tutte le tue armi e i dottori prenderanno parte dei tuoi risparmi per rimetterti in sesto.
+[HELP38]
+~w~Se uccidi qualcuno in possesso di un'arma, questa apparirà a terra.
-[HEAL_E]
-Scoprirai alcuni modi per curarti o per proteggerti dagli attacchi procedendo nel gioco.
+[HELP40]
+~w~Quando sei a piedi usa~h~ ~k~ ~PDLOO~ ~w~per guardarti attorno.
-[SAVE1]
-Passa attraverso la corona per ~h~salvare la partita~w~. Non puoi salvare durante una missione.
+[HELP58]
+~w~Tieni premuto~h~ ~k~ ~PDLT~ ~w~per ~h~agganciare un bersaglio~w~ e premi~h~ ~k~ ~PDFW~ ~w~per sparare!
-[SAVE2]
-Qualsiasi veicolo parcheggiato nel garage verrà salvato insieme alla partita.
+[HELP59]
+~w~Quando hai agganciato, usa~h~ ~k~ ~PDCTL~ ~w~per cambiare bersaglio.
-[AMMU]
-Entra in Ammu-Nation per comprare un'arma.
+[HELP60]
+~w~Alcuni barili esplodono se colpiti, ma ricordati di stare a distanza!
-[R_TIME]
-TEMPO DI GARA:
+[TANK]
+~w~Usa~h~ ~k~ ~VEWEA~ ~w~per mirare con il cannone del Rhino e~h~ ~k~ ~VEWEP~ ~w~per sparare.
-[PROP_1]
-Non hai abbastanza soldi per comprare questa proprietà.
+[ANSWER]
+~w~Premi~h~ ~k~ ~ANS~ ~w~per rispondere al cellulare e~h~ ~k~ ~VEEE~ ~w~per agganciare.
-[PROP_2]
-Non puoi comprare una proprietà mentre sei in missione.
+[BOMB]
+~w~Portando una macchina dentro il negozio di 8-Ball, potrai montare una ~h~bomba~w~ al prezzo di ~h~500$~w~.
-[IND_ZON]
-Vice City Beach
+[BRIDGE1]
+~w~Callahan Bridge: in costruzione. Data di fine lavori: maggio 1998
-[COM_ZON]
-Vice City Mainland
+[STRIK_1]
+~w~Sarai in grado di usare il ~h~traghetto~w~ per Staunton Island al termine dello sciopero.
-[BEACH1]
-Ocean Beach
+[SPRAY]
+~w~Guida il tuo veicolo nel ~h~Pay 'n' Spray~w~ per annullare il ~h~livello di sospetto~w~, ~h~ riparare ~w~e ~h~riverniciare ~w~la carrozzeria per ~h~100$.
-[BEACH2]
-Washington Beach
+[S_TRN_1]
+~w~Puoi usare le ~h~metropolitane~w~ per muoverti a Liberty City. Premi~h~ ~k~ ~VEEE~ ~w~per ~h~entrare ~w~o ~h~uscire~w~ da un treno.
-[BEACH3]
-Vice Point
+[TUBE1]
+~w~All'apertura della stazione, sarai in grado di prendere la ~h~metropolitana~w~ fino a Staunton Island.
-[GOLFC]
-Leaf Links
+[TUBE2]
+~w~All'apertura della stazione, sarai in grado di raggiungere l'~h~aeroporto internazionale Francis~w~.
-[STARI]
-Starfish Island
+[TUBE_2]
+~w~Per salire su una ~h~metropolitana~w~, premi~h~ ~k~ ~VEEE~.
-[DOCKS]
-Porto
+[SPRAY1]
+~w~Fermandoti al ~h~Pay 'n' Spray~w~ annullerai il tuo ~h~livello di sospetto~w~, ~h~riparerai ~w~e ~h~rivernicerai ~w~il tuo veicolo. Di solito costa ~h~100$~w~, ma questa volta è gratis.
-[HAVANA]
-Little Havana
+[HELPE31]
+~w~Durante il gioco, verranno sbloccati nuovi vestiti che possono essere recuperati da Mr. Benz.
-[HAITI]
-Little Haiti
+[HELPE32]
+~w~Durante il gioco, avrai l'opportunità di comprare armi più potenti presso Ammu-Nation.
-[PORNI]
-Prawn Island
+[HELPCOM]
+~w~Nuovi abiti sbloccati al rifugio!
-[DTOWN]
-Downtown
+[HELP41]
+~w~Fermati dentro il ~h~Pay 'n' Spray~w~ per riverniciare e riparare la tua macchina. Segui la ~h~bomboletta spray~w~ sul radar per raggiungere il ~h~Pay 'n' Spray.
-[VICE_C]
-Vice City
+[PAGEB1]
+~w~La ~h~pistola~w~ è disponibile al tuo rifugio!
-[A_PORT]
-Escobar International
+[PAGEB10]
+~w~Hai trovato tutti i pacchetti speciali! Ecco una ricompensa di ~h~50.000$!
-[JUNKY]
-Discarica
+[EXPO_W]
+~w~A Love Media serve uno di questi modelli!
-[PISTOL]
-Pistola
+[FERRY_2]
+~w~Torna quando c'è un traghetto ancorato.
-[PYTHON]
-.357
+[FERRY_3]
+~w~Il tuo veicolo non può salire sul traghetto!
-[UZI]
-Uz-1
+[FERRY_4]
+~w~I criminali ricercati non possono salire sul traghetto!
-[TEC9]
-Tec 9
+[FERRY_5]
+~w~Hai bisogno di ~h~25$~w~ per il biglietto. Torna quando avrai abbastanza soldi.
-[M4]
-M4
+[FERRY_6]
+~w~Non puoi usare un traghetto durante una missione.
-[INGRAM]
-Mac
+[FERR_SK]
+~w~Premi~h~ ~k~ ~TRSK~ ~w~per saltare il viaggio.
-[MP5]
-MP
+[FERR_C1]
+~w~Traghetto per Staunton. Costo: ~h~25$~w~. Premi~h~ ~k~ ~TGSUB~ ~w~per comprare un biglietto.
-[RUGER]
-Kruger
+[FERR_C2]
+~w~Traghetto per Portland. Costo: ~h~25$~w~. Premi~h~ ~k~ ~TGSUB~ ~w~per comprare un biglietto.
-[SNIPE]
-Fucile di precisione
+[A_H1]
+~w~~k~ ~AMBUY~ ~w~per comprare. ~n~~k~ ~AMEXI~ ~w~per uscire.
-[GRENADE]
-Granate
+[A_UZI_A]
+~w~La mini-mitraglietta è disponibile da Ammu-Nation!
-[SHOTGN1]
-Fucile a pompa
+[AMMU]
+~w~Le armi saranno disponibili da ~h~Ammu-Nation~w~ all'arrivo di nuova merce. Mi spiace per l'inconveniente.
-[SHOTGN2]
-S.P.A.S. 12
+[WANT_A]
+~w~Se vieni ~h~'beccato'~w~, verrai portato alla più vicina stazione di polizia.
-[SHOTGN3]
-Fucile a canne mozze
+[WANT_B]
+~w~Qualsiasi missione stessi affrontando verrà considerata fallita e i poliziotti ti prenderanno tutte le armi e parte dei risparmi.
-[ARMOUR]
-Giubbotto antiproiettile
+[WANT_C]
+~w~Puoi essere ~h~'beccato'~w~ solo se hai un ~h~livello di sospetto~w~, rappresentato da stelle nell'angolo superiore destro dello schermo.
-[LASER]
-.308 Fucile di precisione
+[WANT_D]
+~w~Più stelle possiedi, più la polizia cercherà di fermarti.
-[BASEBAT]
-Mazza da baseball
+[WANT_E]
+~w~Ci sono vari modi per ridurre il livello di sospetto: tieni gli occhi aperti.
-[HAMMER]
-Martello
+[WANT_F]
+~w~Mentre stai guidando, entra in un ~h~Pay 'n' Spray~w~ per eliminare il tuo livello di sospetto.
-[SCREWD]
-Cacciavite
+[HEAL_A]
+~w~Quando vieni ~h~'massacrato'~w~, verrai trasportato al più vicino ospedale.
-[CLEVER]
-Mannaia
+[HEAL_B]
+~w~Perderai tutte le tue armi e fallirai la missione in corso. Parte dei tuoi risparmi servirà per le cure mediche.
-[MACHETE]
-Macete
+[HEAL_C]
+~w~La tua ~h~salute~w~ è indicata da una barra rossa in alto a destra sullo schermo.
-[KNIFE]
-Coltello
+[HEAL_D]
+~w~Esistono diversi modi per curarsi: tieni gli occhi aperti.
-[KATANA]
-Katana
+[H_WE_01]
+~w~Cammina sulle armi per raccoglierle. Puoi farlo solamente quando sei a piedi.
-[CHAINSA]
-Motosega
+[H_WE_02]
+~w~Se hai già un'arma di quel tipo, premi~h~ ~k~ ~PUCF~ ~w~per rimpiazzare la tua arma con quella nuova.
-[G_COST]
-~1~$
+[PU_CF]
+~w~Premi~h~ ~k~ ~PUCF~ ~w~per prendere quest'arma. Ogni arma dello stesso tipo andrà perduta.
-[CAR_1]
-Ambulanza
+[CLOTHA]
+~h~~k~ ~AMMOV~ ~w~per vedere gli abiti. ~h~~k~ ~AMBUY~ ~w~per cambiarti d'abito. ~h~~k~ ~AMEXI~ ~w~per annullare.
-[MALIBU]
-Il club Malibu
+[CLOTHB]
+~w~Qui potrai cambiarti d'abito in qualsiasi momento.
-[MANSION]
-Villa di Diaz
+[SIREN_1]
+~w~Puoi attivare o disattivare le ~h~sirene~w~ premendo~h~ ~k~ ~VEHN~.
-[TMANS]
-Chez Tommy
+[FHOSE_1]
+~w~Tieni premuto~h~ ~k~ ~VEWEP~ ~w~per usare il cannone ad acqua.
-[STRIP]
-Il club Pole Position
+[PHOTO1]
+~w~Tieni premuto~h~ ~k~ ~PDLT~ ~w~per mirare con la macchina fotografica.
-[MALL1]
-North Point Mall
+[PHOTO2]
+~w~Mentre stai mirando con la macchina fotografica, usa~h~ ~k~ ~SNZI~ ~w~e~h~ ~k~ ~SNZO~ ~w~per ~h~ingrandire e ridurre.
-[BANKINT]
-El Banco Corrupto Grande
+[PHOTO3]
+~w~Premi~h~ ~k~ ~PDFW~ ~w~per scattare una foto mentre stai mirando.
-[RANGE]
-Poligono di tiro
+[BENZ_H1]
+~w~Segui la ~h~maglietta~w~ sul radar per trovare ~h~il negozio di vestiti Mr. Benz.
-[POL_HQ]
-Polizia di VC
+[BENZ_LE]
+~w~Il ~h~completo dei Leone~w~ è disponibile al rifugio.
-[INT_B]
-Un vecchio amico
+[BENZ_GU]
+~w~La ~h~divisa degli Avenging Angels~w~ è disponibile al rifugio.
-[INTB_1]
-~g~Vai all'ufficio degli avvocati.
+[BENZ_CH]
+~w~La ~h~divisa da autista~w~ è disponibile al rifugio.
-[LAW_1]
-Il party
+[BENZ_TU]
+~w~Lo ~h~smoking~w~ è disponibile al rifugio.
-[LAW_2]
-Rissa nel vicolo
+[ATUTOR]
+~w~Le missioni Paramedico possono essere attivate o disattivate premendo~h~ ~k~ ~TGSUB~.
-[LAW_3]
-Furia sulla giuria
+[CTUTOR]
+~w~Le missioni Vigilante possono essere attivate o disattivate premendo~h~ ~k~ ~TGSUB~.
-[LAW_4]
-Sommossa
+[FTUTOR]
+~w~Le missioni Pompiere possono essere attivate o disattivate premendo~h~ ~k~ ~TGSUB~.
-[COL_1]
-Fottuto traditore
+[TRATUT1]
+~w~Le missioni Sprint-atore ecologico possono essere attivate o disattivate premendo~h~ ~k~ ~TGSUB~.
-[COL_2]
-Sparatoria al Mall
+[TTUTOR]
+~w~Le missioni Tassista possono essere attivate o disattivate premendo~h~ ~k~ ~TGSUB~.
-[COL_3]
-Angeli custodi
+[A_COMP2]
+~w~Missione Paramedico: livello 12 completato! Non ti stancherai mentre corri!
-[COL_4]
-Sissignore, signore!
+[FIREPRO]
+~w~Missione Pompiere: livello 12 completato! Ora sei ignifugo!
-[COL_5]
-Tutti sul ponte!
+[RCHELP]
+~w~Per far ~h~esplodere~w~ la macchina radiocomandata, premi~h~ ~k~ ~VEWEP~.
-[COK_1]
-L'inseguimento
+[TAXIH1]
+~w~Fermati vicino a un ~h~pedone evidenziato~w~ per farlo salire a bordo e portarlo a destinazione prima che scada il tempo.
-[COK_2]
-Phnom Penh '86
+[TIPHLP]
+~h~La barra delle mance~w~ si accorcia se perdi ~h~tempo~w~ o se il taxi viene ~h~danneggiato.
-[COK_3]
-La barca più veloce
+[ANG_E3]
+~w~Cerca altri Avenging Angels a Chinatown.
-[COK_4]
-Domanda e offerta
+[ANGOUT]
+~w~Torna quando avrai indossato una divisa da ~h~Avenging Angel~w~.
-[KENT_1]
-Il braccio della morte
+[ANGCOM2]
+~w~Missioni Avenging Angels di Staunton: livello 15 completato! Adesso non perderai soldi se vieni arrestato!
-[ASS_1]
-Eliminazione
+[ANGCOM3]
+~w~Missioni Avenging Angels di Shoreside: livello 15 completato! Troverai un veicolo 'speciale' al rifugio!
-[BUD_1]
-Estorsione
+[TVOHELP]
+~w~Ritorna indossando la ~h~maschera da hockey.
-[BUD_2]
-Rissa al bar
+[TIMER]
+Questa è una missione a tempo: devi portarla a termine prima che il contatore raggiunga lo zero.
-[BUD_3]
-Cop Land
+[GARAGE]
+Porta la macchina al garage, poi esci.
-[CAP_1]
-Fuori l'esattore
+[TRASH]
+~g~Hai conciato male la tua macchina! Falla riparare!
-[FIN_1]
-Tieniti stretto gli amici...
+[WRECKED]
+~r~Il veicolo è a pezzi!
-[BANK_1]
-Senza via di fuga?
+[SPOOK]
+SPAVENTOMETRO
-[BANK_2]
-Il tiratore
+[SPOTTED]
+~r~Ti sono addosso!
-[BANK_3]
-L'autista
+[REWARD]
+~w~Ricompensa: ~1~$
-[BANK_4]
-La rapina
+[GAMEOVR]
+FINE PARTITA
-[CNT_1]
-Sfornare verdoni
+[Z]
+Valore asse Z: ~1~
-[CNT_2]
-Colpire il corriere
+[DEAD]
+MASSACRATO!
-[PORN_1]
-Giro di reclutamento
+[BUSTED]
+BECCATO!
+
+[GOODBOY]
+~w~50$ come bonus Buon Cittadino!!
+
+[NUMBER]
+~1~
+
+[SCORE]
+~1~$
+
+[LOADCAR]
+CARICAMENTO VEICOLO... (PREMI IL TASTO L PER ANNULLARE)
+
+[CARSOFF]
+Veicoli disabilitati.
+
+[CARS_ON]
+Veicoli abilitati.
+
+[TEXTXYZ]
+Scrittura coordinate sul file...
-[PORN_2]
-Il dodo del dildo
+[CHEATON]
+Modalità trucchi attivata
-[PORN_3]
-La foto di Martha
+[CHEATOF]
+Modalità trucchi disattivata
-[PORN_4]
-Riflettori sul punto G
+[IMPORT1]
+Esci fuori e aspetta il tuo veicolo.
-[TAX_1]
-Taxi di Kaufman
+[KE_PLYR]
+Giocatore
-[TAXI_1]
-VIP
+[KE_CTCS]
+Contatti
-[TAXI_2]
-Rivalità amichevole
+[KE_WEPS]
+Armi
-[TAXI_3]
-Cabmaggedon
+[KE_ADR]
+Adrenalina
-[ICE_1]
-Distribuzione
+[KE_BRIB]
+Bustarella
-[TEX_1]
-Ferro quattro
+[KE_HLTH]
+Salute
-[TEX_2]
-Due in un colpo
+[KE_KILF]
+Furia omicida
-[TEX_3]
-Il demolitore
+[KE_ARM]
+Protezione
-[PHIL_1]
-Corriere delle armi
+[KE_USJ]
+AcU
-[PHIL_2]
-Broda e Saigon
+[KE_PKG]
+Pacchetto speciale
-[BIKE_1]
-Due ruote d'acciaio
+[KE_INFO]
+Informazioni
-[BIKE_2]
-Bollire la pentola
+[DAM]
+Danno
-[BIKE_3]
-Valla a prendere!
+[KILLS]
+Uccisioni
-[ROCK_1]
-Il succo dell'amore
+[TIME]
+Tempo
-[ROCK_2]
-Killer psicotico
+[STOPS]
+Fermate
-[ROCK_3]
-Giro pubblicitario
+[BULL]
+Lingotto
-[ROCK_4]
-Love Fist!
+[EVID]
+Prove
-[HAT_1]
-Le polveri della zia
+[HEALTH]
+Danni
-[HAT_2]
-Bombardamento!
+[COLLECT]
+Raccolti
-[HAT_3]
-Tutto di nascosto
+[LEVEL]
+Livello
-[CUB_1]
-Gara sull'acqua
+[SALES]
+Vendite
-[CUB_2]
-Carne da cannone
+[CITYZON]
+Liberty City
-[CUB_3]
-Battaglia navale
+[VICE_C]
+Liberty City
-[CUB_4]
-Voodoo a doppio taglio
+[IND_ZON]
+Portland
-[JOB_1]
-Morte per strada
+[PORT_W]
+Callahan Point
-[JOB_2]
-Elimina la moglie
+[PORT_S]
+Atlantic Quays
-[JOB_3]
-Incidente...
+[PORT_E]
+Portland Harbor
-[JOB_4]
-L'ultima partenza
+[PORT_I]
+Trenton
-[JOB_5]
-Risoluzione
+[S_VIEW]
+Portland View
-[ANSWER]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per rispondere al cellulare.
+[CHINA]
+Chinatown
-[MOB_01A]
-Ciao vecchio mio! Sono Paul. Potrei avere delle informazioni per te, ma ti voglio parlare in privato.
+[EASTBAY]
+Portland Beach
-[MOB_01B]
-Mi sto godendo un aperitivo al Malibu.
+[LITTLEI]
+Saint Mark's
-[MOB_01C]
-Credo che mi dovrai un favore o due dopo questo, carino. Ci vediamo dopo.
+[REDLIGH]
+Red Light District
-[MOB_02A]
-Ssssnniiiiffffff! Ehi! Tommy? Ciao, Tommy!
+[TOWERS]
+Hepburn Heights
-[MOB_02B]
-Ci sono dei problemi alla stamperia. Faresti meglio ad andare a controllare.
+[HARWOOD]
+Harwood
-[MOB_02C]
-Un qualche tipo di casino. C'è qualcosa che non va. Devo andare.
+[ROADBR1]
+Callahan Bridge
-[MOB_03A]
-Mr. Vercetti? Ho qui davanti a me un pezzo di carta che afferma
+[ROADBR2]
+Callahan Bridge
-[MOB_03B]
-che lei si è preso carico dei debiti di BJ's Auto.
+[TUNNELP]
+Porter Tunnel
-[MOB_03C]
-Con l'improvvisa scomparsa di BJ, non ho altra scelta
+[BOMB1]
+Garage di 8-Ball
-[MOB_03D]
-che ritenerla responsabile delle sue debolezze finanziarie.
+[COM_ZON]
+Staunton Island
-[MOB_03E]
-Finché questo debito non sarà ripagato,
+[STADIUM]
+Aspatria
-[MOB_03F]
-dovrà considerare le strade di Vice City non molto amichevoli.
+[STADIU2]
+Aspatria
-[MOB_04A]
-Come butta, amico?
+[STADIU3]
+Aspatria
-[MOB_04B]
-Ascolta Tommy, mi sono dimenticato di dirti che avremo bisogno di qualche gorilla extra per il concerto.
+[HOSPI_2]
+Rockford
-[MOB_04C]
-C'è una banda di motociclisti e sarebbero una perfetta pubblicità.
+[UNIVERS]
+Liberty Campus
-[MOB_04D]
-Occupatene tu e ti farò accedere al back stage dello spettacolo, OK?
+[CONSTRU]
+Fort Staunton
-[MOB_05A]
-Ehi, sono Mitch! Ottimo lavoro, Tommy: è bello riavere indietro la mia vecchia bambina.
+[PARK]
+Belleville Park
-[MOB_05B]
-Dì a Mr. Kent Paul che avrà la sorveglianza per lo spettacolo.
+[COM_EAS]
+Newport
-[MOB_05C]
-Hai la mia parola.
+[SHOPING]
+Bedford Point
-[MOB_05D]
-Adesso tieniti fuori dai guai.
+[SHOP2]
+Bedford Point
-[MOB_06A]
-Tommy, si è parlato molto di te, ragazzo.
+[SHOP3]
+Bedford Point
-[MOB_06B]
-Pensavo ti servisse un po' di calore, per cui la zia Poulet ti ha preparato una bella zuppa, hmmm?
+[YAKUSA]
+Torrington
-[MOB_06C]
-Passa a trovarmi in cucina ogni tanto, OK Tommy?
+[SUB_ZON]
+Shoreside Vale
-[MOB_08A]
-Ehi, Tommy, ho pensato che ti potessero servire dei consigli.
+[AIRPORT]
+Aeroporto Int. Francis
-[MOB_08B]
-Quando hai un'operazione in corso, dovrai passare a ritirare i soldi della settimana.
+[PROJECT]
+Wichita Gardens
-[MOB_08C]
-Lascia pensare ai ragazzi che abbiano il controllo del posto e loro cercheranno di ridurne i profitti, OK?
+[SUB_IND]
+Pike Creek
-[MOB_08D]
-Ehi Ken, so come far funzionare le cose, OK.
+[SWANKS]
+Cedar Grove
-[MOB_08E]
-OK, OK! Lo so che lo sai. Lo so. Stavo solo...
+[BIG_DAM]
+Cochrane Dam
-[MOB_08F]
-Ti stavo solo ricordando che lo so, cioè che tu sai che io so.
+[SUB_ZO2]
+Shoreside Vale
-[MOB_08G]
-Solo per ricordartelo!
+[SUB_ZO3]
+Shoreside Vale
-[MOB_08H]
-Sì Ken, va bene...
+[CAR_1]
+Ambulanza
-[MOB_09A]
-Ehi Leo! Ho del lavoro per te!
+[CAR_2]
+Pompieri
-[MOB_09B]
-Non sono Leo!
+[CAR_3]
+Polizia
-[MOB_09C]
-Ehi, se Leo scopre che hai il suo telefono, ti farà a pezzi!
+[CAR_4]
+Vigilante
-[MOB_09D]
-Forse Leo è già morto. Forse ho ucciso Leo e ho preso il suo telefono: non ci hai pensato, idiota?
+[CAR_5]
+Barracks
-[MOB_09E]
-Hai ucciso Leo? Devi avere due grandi cojones. Vuoi lavorare per me?
+[CAR_6]
+Rhino
-[MOB_09F]
-Passa dal bar di mio padre a Little Havana e ne possiamo parlare.
+[CAR_7]
+Cruiser dell'FBI
-[MOB_10A]
-Tommy! Senti, devo chiederti un favore.
+[CAR_8]
+Securicar
-[MOB_10B]
-Steve! Come va il film?
+[CAR_9]
+Moonbeam
-[MOB_10C]
-Bene, bene. Senti ho, ehm, abbiamo bisogno di una scena di inseguimento, ma siamo a corto di denaro.
+[CAR_10]
+Pullman
-[MOB_10D]
-Ho lasciato qualche macchina in città. Sono certo che sai cosa fare.
+[CAR_11]
+Flatbed
-[MOB_10E]
-OK Steve, terrò un occhio aperto. Ci vediamo!
+[CAR_12]
+Linerunner
-[MOB_11A]
-Ciao figliolo, t'ho chiamato per darti un consiglio.
+[CAR_13]
+Nettezza
-[MOB_11B]
-Ciao Avery. Come butta?
+[CAR_14]
+Patriot
-[MOB_11C]
-Ci sono un sacco di opportunità in questa città se possiedi le proprietà giuste, mi segui?
+[CAR_15]
+Mr Whoopee
-[MOB_11D]
-Tutto chiaro...
+[CAR_16]
+Mule
-[MOB_11E]
-Volevo dirti di tenere gli occhi aperti: potresti trovare l'occasione giusta per far soldi. Ci becchiamo!
+[CAR_17]
+Yankee
-[MOB_11F]
-Ciao, Avery.
+[CAR_18]
+Pony
-[MOB12_A]
-Ehi Tommy! Sono Avery! Ascolta: sono piuttosto incasinato al momento
+[CAR_19]
+Bobcat
-[MOB12_B]
-e un mio rappresentante ha bisogno di un accompagnatore fino a Gator Keys.
+[CAR_20]
+Rumpo
-[MOB12_C]
-Sto cercando di acquistare del terreno da quelle parti, per cui mando qualcuno in avanscoperta.
+[CAR_21]
+Blista
-[MOB12_D]
-Mi faresti un favore? Potresti controllare che arrivi a destinazione tutto intero?
+[CAR_22]
+Dodo
-[MOB12_E]
-Certo, nessun problema Avery. Dove vuoi che lo passi a prendere?
+[CAR_23]
+Autobus
-[MOB12_F]
-Sta finendo un lavoro presso il cantiere. Gli ho detto che saresti passato lì.
+[CAR_24]
+Sentinel
-[MOB12_G]
-Nessun problema. Ci vediamo, Avery.
+[CAR_25]
+Cheetah
-[MOB13_A]
-Vercetti? VERCETTI!!! Maledizione, mi devi aiutare!
+[CAR_26]
+Banshee
-[MOB13_B]
-Mr. Moffat? Come sta la famiglia?
+[CAR_27]
+Stinger
-[MOB13_C]
-Brutto maledetto, BASTARDO! Mi hai sentito?
+[CAR_28]
+Infernus
-[MOB13_D]
-Beh, è stato un piacere chiacchierare...
+[CAR_29]
+Esperanto
-[MOB13_E]
-ASPETTA! Aspetta Vercetti... Tommy, posso chiamarti Tommy?
+[CAR_30]
+Kuruma
-[MOB13_F]
-Siamo entrambi professionisti, vero? Sono certo che sai riconoscere un affare, vero?
+[CAR_31]
+Limousine
-[MOB13_G]
-Non ho tempo da perdere, arriva al punto.
+[CAR_32]
+Perennial
-[MOB13_H]
-SOLDI. I soldi sono il punto!
+[CAR_33]
+Landstalker
-[MOB13_I]
-Sono fuggito nuovamente da quei maledetti, ma non ci metteranno molto a trovarmi... Pensano si tratti di uno stupido gioco!
+[CAR_34]
+Manana
-[MOB13_J]
-Sono a un telefono pubblico da qualche parte in questo posto di merda.
+[CAR_35]
+Idaho
-[MOB13_K]
-Aiutami a scappare prima che mi prendano e... e... oddio...
+[CAR_36]
+Stallion
-[MOB13_L]
-Beh, sono impegnato per i prossimi...
+[CAR_37]
+Taxi
-[MOB13_M]
-No! Non fare lo stronzo con me, abbi cuore! Nessuno dovrebbe fare una... una cosa simile!
+[CAR_38]
+Vecchio taxi
-[MOB13_N]
-Sono in ginocchio, Tommy: nella polvere a chiederti pietà...
+[CAR_39]
+Buggy
-[MOB13_O]
-Beh, forse potrei passare da quelle parti, vediamo se riesco a trovarti...
+[SINDACO]
+Sindacco Argento
-[MOB13_P]
-Oddio, stanno arrivando! Ti supplico, muoviti, muoviti!
+[HEARSE]
+Hearse
-[MOB_14A]
-Ehi, ciao Tommy: vedrai che mi adorerai!
+[LANDSTK]
+Landstalker
-[MOB_14B]
-Un piccolo uccellino mi ha detto che la divisione SWAT di Vice City ha un deposito presso un'importante banca,
+[IDAHO]
+Idaho
-[MOB_14C]
-dove tengono tutte le bustarelle intascate nel corso degli anni,
+[STINGER]
+Stinger
-[MOB_14D]
-un po' come una pensione per gli anni a venire.
+[LINERUN]
+Linerunner
-[MOB_14E]
-Logicamente, se questa informazione dovesse aiutarti a ottenere i soldi,
+[PEREN]
+Perennial
-[MOB_14F]
-immagino che ti sentiresti obbligato a passarmene una parte...
+[SENTINL]
+Sentinel
-[MOB_14G]
-Me lo ricorderò, grazie Kent.
+[PATRIOT]
+Patriot
-[MOB_14H]
-Sono Paul. Vengo dal Kent, vicino a Londra, cretino.
+[FIRETRK]
+Pompieri
-[MOB_14I]
-Le mie conoscenze di geografia non sono mai state un gran che.
+[TRASHM]
+Nettezza
-[MOB15_A]
-Tommy, amico, sono Paul, dal Kent,
+[STRETCH]
+Limousine
-[MOB15_B]
-un paio di squinzie hanno il tuo nome scritto dappertutto giù al Malibu.
+[MANANA]
+Manana
-[MOB15_C]
-Di cosa stai parlando?
+[INFERNS]
+Infernus
-[MOB15_D]
-Squinzie. Passere. Chiaro no? Strafighe. E anche ben messe, non credo fossero mignotte...
+[BLISTA]
+Blista
-[MOB15_E]
-Dovresti venire a dare un'occhiata.
+[PONY]
+Pony
-[MOB16_A]
-Tommy, sono Paulo, que pasa amigo?
+[MULE]
+Mule
-[MOB16_B]
-Che cosa vuoi Paul: non sono interessato a vestiti di marca taroccati.
+[CHEETAH]
+Cheetah
-[MOB16_C]
-Molto divertente, amico, ma lo sai che non tratto merce di seconda classe.
+[AMBULAN]
+Ambulanza
-[MOB16_D]
-Nah, ti ho chiamato per sapere se potevo avere una parte nei tuoi film,
+[FBICAR]
+Cruiser dell'FBI
-[MOB16_E]
-quando ero in Inghilterra ho fatto un sacco di cose, sai?
+[MOONBM]
+Moonbeam
-[MOB16_F]
-Ho attributi più forniti di te, amico.
+[ESPERAN]
+Esperanto
-[MOB16_G]
-Paul, grazie per l'offerta, lo terrò presente.
+[TAXI]
+Taxi
-[MOB16_H]
-Davvero, non scordarti di me dopo tutto quello che ho fatto per te.
+[KURUMA]
+Kuruma
-[MOB16_I]
-È proprio ciò che sto cercando di dimenticare...
+[BOBCAT]
+Bobcat
-[MOB17_A]
-Tommy Vercetti: come va, Mr. Pezzo Grosso?
+[WHOOPEE]
+Mr Whoopee
-[MOB17_B]
-Ho saputo le tue novità: un vero giocatore in città, eh...
+[BFINJC]
+BF Injection
-[MOB17_C]
-Paul, sei ubriaco.
+[POLICAR]
+Polizia
-[MOB17_D]
-No, idiota. Non sono ubriaco.
+[ENFORCR]
+Vigilante
-[MOB17_E]
-Solo un paio di bicchierini e qualche pillola: non dormo da un paio di giorni, sai...
+[SECURI]
+Securicar
-[MOB17_F]
-Comunque, niente prediche.
+[BANSHEE]
+Banshee
-[MOB17_G]
-Non sono uno stupido. Chi ti ha portato in questa città? Chi? Io, ecco chi.
+[PREDATR]
+Predator
-[MOB17_H]
-Davvero?
+[BUS]
+Autobus
-[MOB17_I]
-Davvero!
+[RHINO]
+Rhino
-[MOB17_J]
-Paul, sta' buono. Sono stato occupato, non fare l'idiota.
+[BARRCKS]
+Barracks OL
-[MOB17_K]
-Non sono un idiota, chiaro? Questo è ciò che hanno detto in riformatorio.
+[BARRACK]
+Barracks OL
-[MOB17_L]
-Stai forse cercando guai, amico? Beh, stai per trovarli!
+[TRAIN]
+Treno
-[MOB17_M]
-Tommy, amico. Per favore. Sei la mia più grande speranza! Per favore, non ridere di me.
+[HELI]
+Elicottero
-[MOB17_N]
-Paul, cerca di dormire, davvero.
+[DODO]
+Dodo
-[MOB18_A]
-Tommy, sono Paulo, come butta? Bene amico, comunque, volevo farti una chiamata.
+[COACH]
+Pullman
-[MOB18_B]
-Ossignore, amico, non crederai mai che razza di strafiga ho appena incontrato.
+[CABBIE]
+Vecchio taxi
-[MOB18_C]
-Non so esattamente chi fosse, ma passeggiava per Little Havana.
+[STALION]
+Stallion
-[MOB18_D]
-Ha detto che si chiamava Mercedes o qualcosa del genere. Oddio, dovresti proprio vedere questa gnocca.
+[RUMPO]
+Rumpo
-[MOB18_E]
-Riuscirebbe a succhiare via la mina da una matita. Mi ha detto che ero il migliore che avesse mai avuto e via dicendo.
+[RCBANDT]
+Bandit RC
-[MOB18_F]
-Dovresti farci un giro. Ci vediamo!
+[BELLYUP]
+Furgone Triade
-[MOB19_A]
-Tommy V, sono KP. Kent Paul. Gira voce che ti vogliano fare a pezzi.
+[MRWONGS]
+Mr Wongs
-[MOB19_B]
-Tieni gli occhi bene aperti, amico e ricorda: io non ti ho detto niente al riguardo.
+[MAFIACR]
+Leone Sentinel
-[MOB_20A]
-Ehi Tommy, sono Paul. Ho appena sentito che sei stato un ragazzaccio cattivo.
+[YARDICR]
+Lobo Yardie
-[MOB_20B]
-Qualcuno si è offeso per il tuo comportamento da grand'uomo, e adesso è davvero arrabbiato.
+[YAKUZCR]
+Stinger Yakuza
-[MOB_20C]
-Beh, non dire che non ti ho avvertito: vantarsi è un gioco pericoloso, amico.
+[DIABLCR]
+Stallion Diablo
-[MOB_20D]
-Comunque, ho anche sentito che c'è una taglia sulla tua testa e che qualcuno ti ha già preso di mira,
+[COLOMCR]
+Cruiser del Cartello
-[MOB_20E]
-per cui guardati la schiena e ricordati di me, amico.
+[HOODSCR]
+Rumpo XL degli Hood
-[MOB71_A]
-Tommy, Tommy, sono Cortez. Que pasa?
+[AEROPL]
+Aeroplano
-[MOB71_B]
-La situazione è interessante. A lei come va?
+[SPEEDER]
+Speeder
-[MOB71_C]
-Tommy, qui è sempre una battaglia. Scusami per la battuta scontata, ma abbiamo sventato un altro golpe.
+[REEFER]
+Reefer
-[MOB71_D]
-La gente non smette mai di pretendere di più.
+[PANLANT]
+Panlantic
-[MOB71_E]
-Da quando sono tornato da Vice City, abbiamo avuto tre rivoluzioni e quattro golpe falliti.
+[FLATBED]
+Flatbed
-[MOB71_F]
-Fortunatamente, sono stato promosso ogni volta.
+[YANKEE]
+Yankee
-[MOB71_G]
-Ti volevo chiedere di Mercedes.
+[BORGNIN]
+Bickle'76
-[MOB71_H]
-Sì? Cosa vuole sapere?
+[TOYZ]
+TOYZ
-[MOB71_I]
-Oh Tommy, ho sentito tutte queste storie e non so cosa pensare.
+[MCLARN]
+Lancer MF1
-[MOB71_J]
-Forse tutti si divertono a umiliarmi.
+[SHELBY]
+Hellenbach GT
-[MOB71_K]
-Forse pensa di poter fare ciò che vuole ma dimmi, Tommy: è tutto vero?
+[SUBARU]
+Impreza WRX
-[MOB71_L]
-ma dimmi, Tommy: è tutto vero?
+[SUPRA]
+Supra
-[MOB71_M]
-Che cosa?
+[SKYLINE]
+Skoiloine
-[MOB71_N]
-Le storie che ho sentito: sta pensando davvero di diventare avvocato?
+[CYCLONE]
+Cyclone GT
-[MOB71_O]
-Oh Tommy, che vergogna. Noi Cortez siamo una famiglia all'antica e non permetteremo mai che una di noi diventasse avvocato.
+[ESPRIT]
+V8 Ghost
-[MOB71_P]
-Ti prego, dimmi che non è vero. Non credo resisterei al colpo.
+[MINI]
+Tommy
-[MOB71_Q]
-Colonnello, le assicuro che Mercedes non diventerà mai un avvocato. Non si preoccupi.
+[HOTROD]
+Thunder-Rodd
-[MOB71_R]
-Grazie Tommy, la vergogna sarebbe schiacciante. Lei è una vera dama, non una parassita, capisci?
+[CAMPVAN]
+Rumpo elettorale
-[MOB71_S]
-Capisco, Colonnello.
+[BALLOT]
+Furgone elettorale
-[MOB71_T]
-Comunque, Tommy, devi scusarmi: è appena arrivato il nuovo ministro degli interni.
+[GHOST]
+Ghost
-[MOB71_U]
-Qualche anno fa, ho ucciso suo padre in un golpe fallito, per cui devo essere gentile. Buona giornata, amico.
+[ANGEL]
+Angel
-[MOB22_A]
-Tommy, ti stai rivelando molto utile, amico.
+[ANGEL2]
+Avenger
-[MOB22_B]
-Grazie, Cortez. Cosa mi dice del nostro accordo?
+[PIZZABO]
+Pizza Boy
-[MOB22_C]
-Tommy, sto lavorando senza sosta nel tentativo di raggiungere il fondo di questa fossa piena di bugie e inganni,
+[NOODLBO]
+Noodle Boy
-[MOB22_D]
-hai la mia parola al riguardo, ma nel frattempo,
+[FAGGIO]
+Faggio
-[MOB22_E]
-ti prego di accettare i più sinceri ringraziamenti da parte della gente per cui stai lavorando.
+[FREEWAY]
+Freeway
-[MOB_25A]
-Tommy, sono Cortez. I Francesi mi stanno causando tutti i problemi possibili.
+[SANCHEZ]
+Sanchez
-[MOB_25B]
-Maledetti ipocriti. Hanno passato secoli a derubare la povera gente e adesso osano chiamare me ladro!
+[SANCH2]
+Manchez
-[MOB_25C]
-Avrò bisogno del tuo aiuto il prima possibile.
+[F_PASS1]
+~w~Incendio spento! Ricompensa: ~1~$
-[MOB_25D]
-Sbrigati, Tommy: ho bisogno di te. Odio questi dannati Francesi.
+[F_RANGE]
+~r~La radio del camion dei pompieri è fuori campo, avvicinati a una stazione dei pompieri!
-[MOB_26A]
-Ehi, Tommy?
+[C0TGSUB]
+tasto R3
-[MOB_26B]
-Sì?
+[C0VESTR]
+levetta analogica sinistra, oppure tasti direzionali destro e sinistro
-[MOB_26C]
-Sono Baker. Volevo dirti che ho davvero apprezzato lo show.
+[C1VESTR]
+levetta analogica sinistra
-[MOB_26D]
-Io e i ragazzi vogliamo ringraziarti e ricordarti
+[C2VESTR]
+levetta analogica sinistra, oppure tasti direzionali destro e sinistro
-[MOB_26E]
-che hai tutto il nostro rispetto. Buona giornata, continua così.
+[C3VESTR]
+levetta analogica sinistra
-[MOB_29A]
-Salve, parlo con Mr. Tommy Vercetti?
+[C2VEHB]
+~T~
-[MOB_29B]
-Sì.
+[C3VEHB]
+tasto L1
-[MOB_29C]
-Beh, ho sentito dire che sei tu l'uomo da chiamare in caso di infestazione da parassiti.
+[C0VEHN]
+tasto L3
-[MOB_29D]
-Forse...
+[C0VELL]
+tasto L2
-[MOB_29E]
-Beh, ho in corso un'infestazione davvero pesante: Haitiani da tutte le parti.
+[C1VELL]
+tasto L2
-[MOB_29F]
-Mi chiamo Umberto Robina e vorrei incontrarmi con te al Cafe Robina il prima possibile,
+[C2VELL]
+tasto L2
-[MOB_29G]
-perché questa volta i fottuti Haitiani sono andati troppo oltre.
+[C3VELL]
+tasto L2
-[MOB_29H]
-Test
+[C0VELR]
+tasto R2
-[MOB_30A]
-Tommy, sono Umberto Robina.
+[C1VELR]
+tasto R2
-[MOB_30B]
-Come va al caffè?
+[C2VELR]
+tasto R2
-[MOB_30C]
-Oh, meraviglioso. Incredibile, Tommy, incredibile. Niente perdenti, Tommy, solo veri uomini, sai no, e donne stupende.
+[C3VELR]
+tasto R2
-[MOB_30D]
-Comunque, volevo dirti che per tutti noi adesso sei un vero Cubano.
+[C0VELB]
+tasto L2 + tasto R2
-[MOB_30E]
-Hai provato di essere all'altezza. Hai provato di avere due grandi cojones.
+[C1VELB]
+tasto L2 + tasto R2
-[MOB_30F]
-Err... grazie, Umberto. Nessuno mi ha detto una cosa simile da quando ho lasciato la galera. Ci becchiamo in giro.
+[C2VELB]
+tasto L2 + tasto R2
-[MOB_33A]
-Tommy, sono Phil: smettila di perdere tempo con le vaccate e ascoltami, intesi?
+[C3VELB]
+tasto L2 + tasto R2
-[MOB_33B]
-Bene. Ho un bel po' di broda bella forte quasi a perfetta fermentazione e mi chiedevo se ne volevi assaggiare un po'.
+[C0VECRS]
+tasto L1
-[MOB_33C]
-Ti assicuro, Tommy, che se ami bere, o se devi rimuovere della vernice, questa è la roba che fa per te.
+[C1VECRS]
+tasto SELECT
-[MOB_33D]
-Per me è stata una bomba, anche se non ci vedo più bene da un occhio. Ti aspetto, ciao.
+[C0VEWEI]
+levetta analogica sinistra in su e in giù, oppure tasti direzionali su e giù
-[MOB_34A]
-Tommy, mi è davvero piaciuto lavorare con te. Non mi divertivo così dalle scorrerie in Vietnam, amico.
+[C1VEWEI]
+levetta analogica sinistra in su e in giù
-[MOB_34B]
-Se mai ti servisse qualcosa, chiamami, capito?
+[C2VEWEI]
+levetta analogica sinistra in su e in giù, oppure tasti direzionali su e giù
-[MOB_34C]
-Ricordo sempre quelli coi quali ho prestato servizio,
+[C3VEWEI]
+levetta analogica sinistra in su e in giù
-[MOB_34D]
-e sono sicuro di poterti dare una mano, chiaro?
+[C0PDCWE]
+tasto L2 e tasto R2
-[MOB_35A]
-Tommy, la ferita si sta rimarginando bene. È divertente:
+[C1PDCWE]
+tasto L2 e tasto R2
-[MOB_35B]
-ho combattuti in sei campi di battaglia e sono sempre uscito senza un graffio... e adesso questo!
+[C0PUCF]
+tasto L1
-[MOB_35C]
-Phil senza un braccio. Comunque, ho una abbondante selezione di armi a una mano, per cui almeno non sarò disarmato!
+[C1PUCF]
+tasto L1
-[MOB_35D]
-Comunque, figliolo, lasciamo stare le stronzate sentimentali e vedi di scolarti qualcosa da parte mia!
+[C2PUCF]
+~T~
-[MOB_36A]
-Tommy, sono Phil. Ti volevo ringraziare di essere stato sul campo, figliolo.
+[C3PUCF]
+~O~
-[MOB_36B]
-Maledetti Viet, non perdono occasione per farti un attentato...
+[C0PDLT]
+tasto R1
-[MOB_36C]
-Comunque, la ferita sta guarendo: adesso non mi sentirò più in colpa quando riceverò il mio consueto assegno per disabili. Grazie, amico.
+[C1PDLT]
+tasto R1
-[MOB_40A]
-Ehi, Tommy, sono Sonny. Come va l'abbronzatura?
+[C2PDLT]
+tasto R1
-[MOB_40B]
-Non ho preso il sole.
+[C3PDLT]
+tasto L1
-[MOB_40C]
-Beh, non hai preso neanche i miei soldi, per cui mi chiedevo:
+[C0PDCTL]
+tasto L2 e tasto R2
-[MOB_40D]
-che cosa stai combinando? Dimmi un po', Tommy, che cosa fai?
+[C1PDCTL]
+tasto L2 e tasto R2
-[MOB_40E]
-Sto cercando i soldi, Sonny, non ti preoccupare.
+[C2PDCTL]
+tasto L2 e tasto R2
-[MOB_40F]
-Invece mi preoccupo, Tommy, è il mio stile,
+[C3PDCTL]
+tasto L2 e tasto R2
-[MOB_40G]
-poiché ho sempre dei problemi con gente che non ama rispettare i patti.
+[C0CVEIW]
+tasto SELECT
-[MOB_40H]
-Non diventare inaffidabile, Tommy, fallo per me...
+[C1CVEIW]
+tasti direzionali su e giù
-[MOB_40I]
-Fai un favore a entrambi. Non vedo l'ora di ricevere buone nuove.
+[C2CVEIW]
+tasto SELECT
-[MOB_41A]
-Tommy, ti ricordi di me?
+[C3CVEIW]
+tasto SELECT
-[MOB_41B]
-Ehi, Sonny.
+[C0PDBAK]
+tasto R3
-[MOB_41C]
-Sì, sono proprio io, Sonny. Siamo vecchi amici,
+[C1PDBAK]
+tasto R3
-[MOB_41D]
-e tu non mi scrivi mai, non mi chiami mai. Non vuoi più essere mio amico?
+[C2PDBAK]
+tasto R3
-[MOB_41E]
-Sono stato occupato a mettere le cose a posto. Non mi hai dato un gran che di aiuto da queste parti.
+[C3PDBAK]
+tasto R3
-[MOB_41F]
-Ah, è questa la mia colpa? Beh, ho sentito che sei stato molto occupato.
+[C0PDLO1]
+tasto L
-[MOB_41G]
-Occupato a uccidere i baroni della droga. Occupato a prendere il potere.
+[C1PDLO1]
+tasto L
-[MOB_41H]
-Non dimenticarti di noi, Tommy, poiché, te lo assicuro, io non mi sono dimenticato di te.
+[C2PDLO1]
+tasto L
-[MOB_42A]
-Tommy.
+[C3PDLO1]
+tasto L
-[MOB_42B]
-Sonny.
+[C0PDLO2]
+pad analogico
-[MOB_42C]
-Hai di sicuro dei problemi di udito, per cui proverò ancora...
+[C2PDLO2]
+pad analogico
-[MOB_42D]
-Tommy, dove sono i maledetti soldi, dov'è la maledetta roba e dov'è la mia parte dei tuoi ultimi guadagni?
+[C0ANS]
+tasto L1
-[MOB_42E]
-Tommy, mi stai facendo fare la figura dell'idiota, e io non sto ridendo.
+[C1ANS]
+tasto L1
-[MOB_43A]
-Tommy, Tommy, Tommy, avevo Sonny al telefono... OK, sei con me?
+[C2ANS]
+tasto L1
-[MOB_43B]
-Non so te, ma so che qualcuno sta minacciando di morte la mia famiglia,
+[C3ANS]
+tasto L1
-[MOB_43C]
-il che mi sta davvero facendo cagare sotto. Che cosa intendi fare?
+[WEATHER]
+FORZA TEMPO
-[MOB_43D]
-Stai calmo, Ken, andrà tutto bene.
+[WEATHE2]
+TEMPO NORMALE
-[MOB_43E]
-Io SONO calmo, calmo quanto un uomo in pericolo di vita!
+[GA_4]
+~w~Le bombe per le macchine costano 500$
-[MOB_43F]
-Ken, ora come ora ho altre cose per la testa,
+[GA_5]
+~w~Il tuo veicolo ha già una bomba installata.
-[MOB_43G]
-ci occuperemo di Forelli al momento giusto.
+[GA_6]
+~w~Parcheggia, attiva la bomba premendo~h~ ~k~ ~PED_FIREWEAPON~ ~w~ e FUGGI!
-[MOB_43H]
-Io sono calmo. Non ti sembro calmo? Forse è la morte incombente che mi sta facendo tremare la voce.
+[GA_7]
+~w~Innesca la bomba premendo ~h~ ~k~ ~PED_FIREWEAPON~ ~w~. La bomba esploderà all'accensione del motore.
-[MOB45_A]
-Tommy, dobbiamo parlare di un po' di cose.
+[GA_8]
+~w~Usa il detonatore per attivare la bomba.
-[MOB45_B]
-C'è qualche problema, Lance?
+[GA_9]
+Macchine speciali recuperate ~1~ su 10
-[MOB45_C]
-Si tratta di te, amico, non mi sembra di ricevere la fetta che merito.
+[GA_10]
+Non male. Eccoti ~1~$
-[MOB45_D]
-E inoltre, mi hai imbarazzato davanti ai ragazzi. Non lo posso permettere.
+[GA_11]
+Ne abbiamo già una. A noi non serve!
-[MOB45_E]
-Lance, non è andata così. Hai commesso degli errori.
+[GA_12]
+Bomba innescata
-[MOB45_F]
-Tommy, non sono il tuo fattorino. Non sono un tuo scagnozzo.
+[GA_13]
+Un furto da manuale. Completa la lista e ci sarà un bonus per te.
-[MOB45_G]
-Lance, non fare casini e non avremo alcun problema. Se faccio un errore, me la puoi far pagare in qualsiasi momento.
+[GA_14]
+Hai portato tutte le macchine. BENE! Eccoti un bonus.
-[MOB45_H]
-Tommy, ho fatto tutto per te e mi tratti come un idiota. Non farlo.
+[GA_15]
+~w~Spero che ti piaccia il nuovo colore.
-[MOB45_I]
-Lance, non ti causerò problemi e non ti pugnalerò alle spalle, promesso.
+[GA_17]
+~w~Motore nuovo e carrozzeria riverniciata!
-[MOB45_J]
-Rilassati. La cosa è già abbastanza difficile senza che tu ti metta a fare il tenero con me.
+[GA_19]
+Non siamo interessati a questo modello.
-[MOB45_K]
-Fidati: mi hai sentito, mi hai sentito?
+[GA_20]
+Di questo modello ne abbiamo in abbondanza. Non siamo interessati.
-[MOB45_L]
-Ti ho sentito, ma Tommy, non sopporterò ancora per lungo.
+[GA_22]
+~w~Non puoi mettere una bomba su una moto.
-[MOB45_M]
-Lance, non fare così: adesso sono io ad avvertirti.
+[GA_23]
+~w~Bomba installata. Lavoro e pezzi: 500$
-[MOB45_N]
-Mi hai sentito? Rilassati, prenditi qualche giorno e poi ne riparliamo, OK?
+[GA_24]
+~w~Bomba installata: questa la offre la casa!
-[MOB46_A]
-Tommy, sono Lance.
+[CR_1]
+~w~La gru non può alzare questo veicolo.
-[MOB46_B]
-Sì?
+[PU_MONY]
+~w~Non hai abbastanza soldi.
-[MOB46_C]
-Sono felice di sentirti Lance. Forza, stai tranquillo, stai tranquillo.
+[PAUSED]
+GIOCO IN PAUSA
-[MOB46_D]
-Sono nel mezzo di un problema: ho bisogno di te.
+[FEB_STA]
+Statistiche
-[MOB46_E]
-Niente, giusto per dire. Tommy, ce ne possiamo occupare.
+[FEB_MAP]
+Mappa
-[MOB46_F]
-Io e te, nessun problema. Capisci ciò che intendo?
+[FEB_BRI]
+Briefing
-[MOB46_G]
-Dobbiamo proprio farlo, se no siamo entrambi morti, Lance.
+[FEB_CON]
+Comandi
-[MOB46_H]
-Siamo andati troppo oltre, ma grazie della chiamata. Ci sentiamo più tardi.
+[FEB_AUD]
+Audio
-[MOB_47A]
-Tommy, sono Lance. Abbiamo un problema serio. Vieni qui in fretta.
+[FEB_DIS]
+Video
-[MOB52_A]
-Ehi, Leo, sembra ci sia un compratore per la roba di Diaz.
+[FEB_LAN]
+Lingua
-[MOB52_B]
-Devi fargli uno squillo, ragazzo, e preparare l'accordo, chiaro?
+[FEP_STA]
+STATISTICHE
-[MOB52_C]
-Dove ti trovi adesso?
+[FEP_MAP]
+MAPPA
-[MOB52_D]
-Stai bene Leo? Mi sembri un po' strano...
+[FEP_BRI]
+BRIEFING
-[MOB52_E]
-Dimmi dove ti trovi.
+[FEP_CON]
+COMANDI
-[MOB52_F]
-Chi diavolo sei? Passami subito Leo!
+[FEP_AUD]
+audio
-[MOB52_G]
-Leo se ne è andato per un po' e adesso sono io in carica.
+[FEP_DIS]
+video
-[MOB52_H]
-Fottiti, stronzo!
+[FEP_LAN]
+LINGUA:
-[MOB54_A]
-Ciao Tommy!
+[FEF_ST1]
+Chi è il più cattivo?
-[MOB54_B]
-Ciao Mercedes, come butta?
+[FEF_ST2]
+Quanti disastri hai provocato
-[MOB54_C]
-Ho un nuovo appartamento in Vice Point...
+[FEF_BR1]
+Ti sei perso?
-[MOB54_D]
-magari un giorno di questi potresti farci un salto.
+[FEF_CO1]
+Hai bisogno di più controllo, sfigato?
-[MOB54_E]
-Mi piacerebbe, ci sentiamo.
+[FEF_SA1]
+Keep your place in the pile!
-[MOB55_A]
-Tommy, sono io.
+[FEF_SA2]
+Salva e carica le partite
-[MOB55_B]
-Ciao Mercedes.
+[FEF_AU1]
+Pompa il volume!
-[MOB55_C]
-Tommy, sono così annoiata: perché non ci divertiamo un po' insieme?
+[FEF_AU2]
+Seleziona una stazione radio e gli effetti audio
-[MOB55_D]
-Cosa intendi dire?
+[FEF_DI1]
+Cambia la partita!
-[MOB55_E]
-Beh, lo so che sei occupato a combattere, uccidere e corrompere gente,
+[FEF_DI2]
+Customize the game for your TV
-[MOB55_F]
-ma io ho voglia di divertirmi un po'. Non ti scordare di me, capito?
+[FEF_LA1]
+Che cavolo stai dicendo Willis?
-[MOB56_A]
-Tommy, ho sentito che hai ucciso Ricardo Diaz.
+[FEF_LA2]
+Choose your preferred parlance
-[MOB56_B]
-C'è stato uno sfortunato incendio nella sua villa.
+[FEM_ON]
+Sì
-[MOB56_C]
-Credo sia morto bruciato nella sua camicia in acrilico.
+[FEM_OFF]
+No
-[MOB56_D]
-Tommy, sono così fiera di te. Lo sapevo che eri un vero uomo.
+[FEM_YES]
+Sì
-[MOB56_E]
-Era un inutile idiota senza testa: mi rendi orgogliosa di essere tua amica.
+[FEM_NO]
+No
-[MOB56_F]
-No, lo so che sei impegnato a prendere il possesso di questa città,
+[FEM_NON]
+Nessuna
-[MOB56_G]
-ma non dimenticarti di me, capito?
+[FEI_SEL]
+Seleziona
-[MOB57_A]
-Sono Mercedes. Non ti amo più, Tommy.
+[FEI_TAR]
+Bersaglio sì/no
-[MOB57_B]
-Proprio no, onestamente. Tu non sei più gentile con la tua Mercedes.
+[FEI_BAC]
+Indietro
-[MOB57_C]
-Non mi tratti più come una signora: mi ignori e io ti odio.
+[FEI_RES]
+Riprendi
-[MOB57_D]
-Insisto che tu venga a trovarmi immediatamente!
+[FEI_NAV]
+Muovi
-[MOB58_A]
-Tommy.
+[FEI_BTX]
+/
-[MOB58_B]
-Ehi Mercedes.
+[FEI_BTT]
+"
-[MOB58_C]
-Ehi sì, Mr. Tipo Duro. Sono davvero arrabbiata con te, Tommy.
+[FEI_STA]
+START
-[MOB58_D]
-Non farmi più passare le serate con Jezz Torrent.
+[FEI_BTD]
+pad analogico
-[MOB58_E]
-È davvero patetico. A metà delle scale ha iniziato a piagnucolare per il suo cane
+[FEI_BTU]
+;=
-[MOB58_F]
-che è morto quando aveva sette anni e a ripetere che la mamma non lo ha mai amato.
+[FEI_R1B]
+L \ R
-[MOB58_G]
-E Tommy, indossa una parrucca e un reggiseno quando è in intimità.
+[FEI_SCR]
+Scorri
-[MOB58_H]
-Non sono molto felice di te!
+[FEI_ZOO]
+Zoom
-[MOB59_A]
-Ooh Tommy, sono Mercedes.
+[FEH_STA]
+STATISTICHE
-[MOB59_B]
-Volevo solo dirti che mi sono divertita così tanto sul set del film.
+[FEH_CON]
+COMANDI
-[MOB59_C]
-Se hai qualcos'altro del genere, fammelo sapere.
+[FEH_AUD]
+AUDIO
-[MOB59_D]
-Lo penso davvero. Ho sempre desiderato fare l'attrice.
+[FEH_LAN]
+LINGUA
-[MOB59_E]
-Credo di aver imparato molto sull'approccio drammatico.
+[FEH_SGA]
+NUOVA PARTITA
-[MOB59_F]
-È così illuminante! Grazie, grazie! Spero di vederti presto! Adios.
+[FET_SG]
+SALVA PARTITA
-[MOB_99]
-Raggiungi il telefono pubblico.
+[FEH_BRI]
+BRIEFING
-[MOB_98]
-Raggiungi il telefono pubblico.
+[FEH_DIS]
+VIDEO
-[MOB_97]
-Raggiungi il telefono pubblico.
+[FEH_MAP]
+MAPPA
-[MOB_96]
-Raggiungi il telefono pubblico.
+[FEM_OK]
+OK
-[MOB_95]
-Raggiungi il telefono pubblico.
+[FEC_CRO]
+Abbassarsi
-[A_TIME]
-+~1~ secondi
+[FE_MLG]
+LEGENDA MAPPA
-[F_RANGE]
-~g~Sei fuori dal raggio d'azione della radio. Avvicinati alla stazione dei pompieri!
+[MAP_LEG]
+LEGENDA:
-[DODO_FT]
-Hai volato per ~1~ secondi!
+[LG_01]
+Posizione giocatore
-[GA_8]
-Usa il detonatore per attivare la bomba.
+[LG_13]
+Ammu-Nation
-[GA_10]
-Non male. Eccoti ~1~$
+[LG_16]
+Rifugio
-[GA_11]
-Ne abbiamo già una. A noi non serve!
+[LG_22]
+Pay 'n' Spray
-[GA_12]
-Bomba innescata
+[LG_23]
+Mr. Benz
-[GA_13]
-Un furto da manuale. Completa la lista e ci sarà un bonus per te.
+[LG_25]
+Telefono
-[GA_14]
-Hai portato tutte le macchine. BENE! Eccoti un bonus...
+[LG_26]
+Stazione radio Wildstyle
-[GA_15]
-Spero che ti piaccia il nuovo colore.
+[LG_27]
+Stazione radio Flash FM
-[GA_16]
-La riverniciatura è gratuita.
+[LG_28]
+Stazione radio KChat
-[GA_19]
-Non siamo interessati a questo modello.
+[LG_29]
+Stazione radio Fever 105
-[GA_20]
-Di questo modello ne abbiamo in abbondanza. Mi dispiace, non siamo interessati.
+[LG_30]
+Stazione radio VROck
-[CHASE]
-Massima attenzione dei media
+[LG_31]
+Stazione radio VCPR
-[CHASE1]
-Ignoto
+[LG_32]
+Stazione radio Espantoso
-[CHASE2]
-Noioso
+[LG_33]
+Stazione radio Emotion 98.3
-[CHASE3]
-Appena interessante
+[LG_34]
+Stazione radio Wave 103
-[CHASE4]
-Giornale locale, pagina 7
+[LG_35]
+Destinazione
-[CHASE5]
-Giornale locale, prima pagina
+[LG_36]
+Sun Yard
-[CHASE6]
-Vice Courier, 1 colonna
+[LG_37]
+Club a luci rosse
-[CHASE7]
-Vice Courier, prima pagina
+[LG_38]
+8-Ball
-[CHASE8]
-TV locale, 3 AM
+[LG_39]
+Confessionale della chiesa
-[CHASE9]
-TV locale, news
+[LG_40]
+Mamma Cipriani
-[CHASE10]
-TV locale, servizio in diretta
+[LG_41]
+Donald Love
-[CHASE11]
-UFA Today, pagina 12
+[LG_42]
+JD O'Toole
-[CHASE12]
-UFA Today, pagina 4
+[LG_43]
+Salvatore Leone
-[CHASE13]
-Foto in UFA Today
+[LG_44]
+Maria
-[CHASE14]
-TV nazionale, 4 AM
+[LG_45]
+McAffrey
-[CHASE15]
-TV nazionale, news
+[LG_46]
+Toshiko Kasen
-[CHASE16]
-TV nazionale, servizio in diretta
+[LG_47]
+Vincenzo Cilli
-[CHASE17]
-Avvenimento internazionale
+[LG_48]
+Negozio di bombe
-[CHASE18]
-Crisi nazionale
+[LG_49]
+Negozio di vestiti
-[CHASE19]
-Crisi internazionale
+[LG_50]
+Phil Cassidy
-[CHASE20]
-Evento mondiale
+[LG_51]
+Minaccia
-[CHASE21]
-Roba da leggenda
+[LG_52]
+Amico
-[CR_1]
-La gru non può alzare questo veicolo.
+[LG_53]
+Oggetto
-[PU_MONY]
-Non hai abbastanza soldi.
+[LG_54]
+Bersaglio
-[CO_ALL]
-Li hai presi tutti. Eccoti un piccolo extra...
+[FEO_CON]
+Impostazioni comandi
-[FEM_ON]
-ON
+[FEO_AUD]
+Impostazioni audio
-[FEM_OFF]
-OFF
+[FEO_DIS]
+Impostazioni video
-[FEM_YES]
-Sì
+[FEO_LAN]
+Impostazioni lingua
-[FEM_NO]
-No
+[FEO_PLA]
+Impostazioni giocatore
-[FEM_RET]
-Riprova
+[FEB_PMB]
+Briefing missioni precedenti:
[FEC_NA]
ND
[FEC_CWL]
-Scorri armi a sinistra
+Arma successiva
[FEC_CWR]
-Scorri armi a destra
+Arma precedente
-[FEC_LOF]
-Guarda avanti
+[FEC_CW]
+Cambia armi
+
+[FEC_CT]
+Cambia bersaglio
[FEC_TAR]
Bersaglio
@@ -1503,34 +1532,40 @@ Bersaglio
Movimento
[FEC_CAM]
-Modalità visuale
+Cambia visuale
[FEC_PAU]
Pausa
[FEC_ENV]
-Sali sul veicolo
+Sali sulla vettura
[FEC_JUM]
-Salta
+Salto
[FEC_ATT]
-Attacca o fuoco con arma
+Attacca o spara
[FEC_RUN]
Corri
[FEC_FPC]
-Visuale in prima persona
+Guarda
[FEC_LL]
-Guarda a sinistra
+Sguardo a sinistra
+
+[FEC_LB1]
+Sguardo
+
+[FEC_LB2]
+indietro
[FEC_LB]
-Guarda indietro
+Sguardo indietro
[FEC_LR]
-Guarda a destra
+Sguardo a destra
[FEC_HOR]
Clacson
@@ -1538,8 +1573,11 @@ Clacson
[FEC_VES]
Comandi veicolo
+[FEC_RSC]
+Cambia stazione radio
+
[FEC_BRA]
-Freno o retromarcia
+Freno o retro
[FEC_HAB]
Freno a mano
@@ -1550,47 +1588,104 @@ Arma vettura
[FEC_ACC]
Accelera
+[FEC_SMT]
+Missione speciale
+
[FEC_CCF]
-Configurazione :
+CONFIGURAZIONE:
[FEC_CF1]
-Config 1
+CONFIG. 1
[FEC_CF2]
-Config 2
+CONFIG. 2
[FEC_CF3]
-Config 3
+CONFIG. 3
[FEC_CF4]
-Config 4
+CONFIG. 4
[FEC_CDP]
-Schermata controller :
+TIPO:
[FEC_ONF]
-A piedi
+A PIEDI
[FEC_INC]
-In macchina
+IN MACCHINA
[FEC_VIB]
-Vibrazione :
+VIBRAZIONE:
+
+[FEC_ILU]
+INVERTI SGUARDO:
+
+[FEC_SWP]
+MOVIMENTO GIOCATORE:
+
+[FEC_AS]
+pad analogico
+
+[FEC_DP]
+tasti direzionali
+
+[FEA_SFX]
+VOLUME EFFETTI:
+
+[FEA_OUT]
+Uscita:
+
+[FEA_ST]
+Stereo
+
+[FEA_MNO]
+Mono
+
+[FEA_CTD]
+Attenzione! Questa caratteristica richiede delle periferiche compatibili DTS. Vuoi procedere?
+
+[FEA_DTS]
+DTS
+
+[FEA_RSS]
+STAZIONE RADIO:
+
+[FEA_NON]
+Radio spenta
+
+[FED_BRI]
+LUMINOSITÀ:
+
+[FED_TRA]
+TRACCE:
+
+[FED_RDR]
+MODALITÀ RADAR:
+
+[FED_HUD]
+MODALITÀ HUD:
+
+[FED_RDM]
+MAPPA & SEGNALI
+
+[FED_RDB]
+SOLO SEGNALI
[FEL_ENG]
-Inglese
+INGLESE
[FEL_FRE]
-Francese
+FRANCESE
[FEL_GER]
-Tedesco
+TEDESCO
[FEL_ITA]
-Italiano
+ITALIANO
[FEL_SPA]
-Spagnolo
+SPAGNOLO
[FED_DBG]
Menu Debug
@@ -1604,6 +1699,9 @@ Reload IPL
[FED_PAH]
Parse Heap
+[FED_RCD]
+CCullZones::RecalculateCullZoneData
+
[FED_DFL]
CTheScripts::DbgFlag
@@ -1625,6 +1723,90 @@ Debug Streaming Requests
[FED_SCP]
gbShowCollisionPolys
+[FEM_MCM]
+Menu MEMORY CARD
+
+[FEM_RMC]
+Register MemCard One
+
+[FEM_TFM]
+Test Format MemCard One
+
+[FEM_TUM]
+Test UnFormat MemCard One
+
+[FEM_CRD]
+Create Root Dir
+
+[FEM_CLI]
+Create And Load Icons
+
+[FEM_FFF]
+Fill First File with Guff
+
+[FEM_SOG]
+Save Only The Game
+
+[FEM_CES]
+Check Every 0kB4 Save
+
+[FEM_STG]
+Save The Game
+
+[FEM_STS]
+Save The Game under GTA3 name
+
+[FEM_CPD]
+Create copy protected mag directory
+
+[FEM_MC2]
+Memory Card Menu 2
+
+[FEM_TS]
+Test Save:
+
+[FEM_TL]
+Test Load:
+
+[FEM_TD]
+Test Delete:
+
+[FEM_SL0]
+Slot0
+
+[FEM_SL1]
+Salvataggio 1 assente
+
+[FEM_SL2]
+Salvataggio 2 assente
+
+[FEM_SL3]
+Salvataggio 3 assente
+
+[FEM_SL4]
+Salvataggio 4 assente
+
+[FEM_SL5]
+Salvataggio 5 assente
+
+[FEM_SL6]
+Salvataggio 6 assente
+
+[FEM_SL7]
+Salvataggio 7 assente
+
+[FES_LOA]
+CARICA PARTITA
+
+[ST_TIME]
+Tempo di gioco attuale
+
+[ST_OVTI]
+Tempo di gioco totale
+
+[NUMSHV]
+Numero di salvataggi
+
[PL_STAT]
Statistiche giocatore
@@ -1634,15 +1816,45 @@ Persone massacrate
[PE_WSOT]
Persone massacrate da altri
+[CAR_EXP]
+Macchine esplose
+
+[BOA_EXP]
+Imbarcazioni distrutte
+
[TM_BUST]
Arresti subiti
+[M_WASTE]
+Uomini massacrati
+
+[F_WASTE]
+Donne massacrate
+
+[PIG_WST]
+Poliziotti massacrati
+
[GNG_WST]
Membri delle gang massacrati
+[MED_WST]
+Infermieri massacrati
+
+[FIRE_WS]
+Pompieri massacrati
+
[DED_CRI]
Criminali massacrati
+[DED_DED]
+Vagabondi massacrati
+
+[DED_HOK]
+Prostitute massacrate
+
+[HEL_DST]
+Elicotteri distrutti
+
[PER_COM]
Percentuale completata
@@ -1652,128 +1864,173 @@ Kg di esplosivo utilizzati
[ACCURA]
Precisione
-[ST_WEAP]
-Budget armi
+[ELBURRO]
+Miglior tempo in Turismo (sec)
-[ST_PROP]
-Budget proprietà
+[CAR_CRU]
+Macchine demolite
-[ST_AUTO]
-Budget riparazioni e colorazione auto
+[HED_EX]
+Teste esplose
-[ST_PHOT]
-Fotografie scattate
+[ST_HEAD]
+Colpi alla testa
-[ST_LOAN]
-Visite degli usurai
+[BUL_FIR]
+Colpi sparati
-[ST_STOR]
-Edifici razziati
+[BUL_HIT]
+Colpi a segno
+
+[SPRAYIN]
+Riverniciature
-[ST_MOVI]
-Stunt nei film
+[TM_DED]
+Visite all'ospedale
-[ST_PIZZ]
-Pizze consegnate
+[ST_GANG]
+Gang meno amata
-[ST_GARB]
-Spazzatura raccolta
+[ST_GNG1]
+Leone
-[ST_ICEC]
-Gelati venduti
+[ST_GNG2]
+Triade
-[TOP_SHO]
-Miglior punteggio al poligono
+[ST_GNG3]
+Diablo
-[SHO_RAN]
-Graduatoria al poligono
+[ST_GNG4]
+Yakuza
-[SEAGULL]
-Gabbiani abbattuti
+[ST_GNG5]
+Yardie
-[PROPOWN]
-Proprietà posseduti
+[ST_GNG6]
+Colombiani
-[ST_TIME]
-Tempo di gioco
+[ST_GNG7]
+Hood
-[ST_FTIM]
-Ore di volo
+[ST_GNG8]
+Forelli
+
+[ST_GNG9]
+Sindacco
-[ST_PRAN]
-Graduatoria pilota
+[DAYSPS]
+Giorni trascorsi nel gioco
-[ST_RAN0]
-Apprendista
+[MMRAIN]
+Mm di pioggia caduti
-[ST_RAN1]
-Navigatore
+[ST_STAR]
+Totale stelle di sospetto
+
+[ST_STGN]
+Totale stelle di sospetto evase
-[ST_RAN2]
-Copilota
+[TOT_DIS]
+Distanza totale percorsa (miglia)
-[ST_RAN3]
-Pratico
+[TOTDISM]
+Distanza totale percorsa (m)
-[ST_RAN4]
-Competente
+[DISTBIK]
+Dist. percorsa in moto (miglia)
-[ST_RAN5]
-Anziano
+[DISTBIM]
+Distanza percorsa in moto (m)
-[ST_RAN6]
-Asso
+[DISTHEL]
+Dist. percorsa in elicottero (miglia)
-[ST_RAN7]
-Barone Rosso
+[DISTHEM]
+Dist. percorsa in elicottero (m)
-[ST_DRWN]
-Pesci sfamati
+[DISTBOA]
+Distanza percorsa in barca (miglia)
+
+[DISTBOM]
+Distanza percorsa in barca (m)
+
+[ST_WHEE]
+Impennata più lunga (sec)
+
+[ST_STOP]
+Frenata in punta più lunga (sec)
+
+[ST_2WHE]
+Permanenza su 2 ruote più lunga (sec)
+
+[ST_WHED]
+Distanza più lunga in impennata (m)
+
+[ST_STOD]
+Distanza più lunga in frenata (m)
+
+[ST_2WHD]
+Distanza più lunga su 2 ruote (m)
+
+[ST_FAPD]
+Volo più lungo in avanti (m)
+
+[FEST_HV]
+Livello massimo 'Vigilante'
+
+[FIRELVL]
+Livello massimo 'Pompiere'
+
+[ST_STOR]
+Negozi rapinati
+
+[ST_ASSI]
+Contratti da sicario completati
+
+[ST_FTIM]
+Ore di volo
[ST_FASH]
Budget abbigliamento
-[ST_DAMA]
-Proprietà distrutte
+[ST_WEAP]
+Budget armi
-[TM_DED]
-Visite all'ospedale
+[ST_PROP]
+Budget proprietà
-[DAYSPS]
-Giorni trascorsi nel gioco
+[ST_DAMA]
+Proprietà distrutte
-[NUMSHV]
-Visite al rifugio
+[ST_AUTO]
+Budget riparazioni e colorazione auto
[MXCARD]
-Distanza max salto FOLLE (ft)
+Distanza max salto folle (ft)
[MXCARJ]
-Altezza max salto FOLLE (ft)
+Altezza max salto folle (ft)
[MXCARDM]
-Distanza max salto FOLLE (m)
+Distanza max salto folle (m)
[MXCARJM]
-Altezza max salto FOLLE (m)
+Altezza max salto folle (m)
[MXFLIP]
-Numero max ribaltamenti FOLLI
+Numero max ribaltamenti folli
[MXJUMP]
-Numero max rotazioni FOLLI
+Massima rotazione folle in aria
-[BUL_FIR]
-Colpi sparati
-
-[BUL_HIT]
-Colpi a segno
+[FST_MFR]
+Stazione radio preferita
-[SPRAYIN]
-Riverniciature
+[FST_LFR]
+Stazione radio meno amata
[BSTSTU]
-Migliore acrobazia FOLLE
+Migliore acrobazia folle:
[INSTUN]
Acrobazia folle
@@ -1800,463 +2057,742 @@ Quadrupla acrobazia folle
Quadrupla acrobazia folle perfetta
[NOSTUC]
-Nessuna acrobazia FOLLE effettuata
+Nessuna acrobazia folle effettuata
[NOUNIF]
Acrobazie uniche completate
+[NOUNGM]
+Acrobazie uniche totali
+
[NMISON]
Missioni provate
+[NMMISP]
+Missioni completate
+
[PASDRO]
Passeggeri scaricati
[MONTAX]
Soldi guadagnati in taxi
+[CARSLD]
+Macchine vendute
+
+[MONCAR]
+Guadagni vendita auto
+
+[BIKESLD]
+Moto vendute
+
+[MONBIKE]
+Guadagni vendita moto
+
+[CARSEXP]
+Auto trovate per Love Media
+
+[SLTVLVL]
+Livello massimo 'Slash TV'
+
+[SLTVKIL]
+Rivali uccisi in Slash TV
+
+[MONTRS]
+Guagagni raccolta immondizia
+
+[HTMKLD]
+Killer uccisi
+
+[GDAMSP]
+Numero di missioni Avenging Angels superate
+
+[HGAJD]
+Uccisioni nelle missioni Avenging Angels
+
+[BNDRACE]
+Gare RC
+
+[FSTTRT]
+Tempo max rimasto in 'Alliva plima e intelo'
+
+[HGHTRC]
+Guadagno max in 'Alliva plima e intelo'
+
+[FSTHRT]
+Tempo migliore di gara in elicottero
+
+[BHLPOS]
+Posizione migliore di gara in elicottero
+
+[TMSOUT]
+Cambi d'abito
+
+[BSRPS0]
+'Rombi assettati'
+
+[BSRPS1]
+'Deimos-tri da sballo'
+
+[BSRPS2]
+'Wi-Cheetah 210 e lode'
+
+[BSRPS3]
+'Incontro a Red Light'
+
+[BSRPS4]
+'Torrington TT'
+
+[BSRPS5]
+'GP delle cosche'
+
+[DBIKE0]
+Percorso 1
+
+[DBIKE1]
+Percorso 2
+
+[DBIKE2]
+Percorso 3
+
+[DBIKE3]
+Percorso 4
+
+[DBIKE4]
+Percorso 5
+
+[DBIKE5]
+Percorso 6
+
+[DBIKE6]
+Percorso 7
+
+[DBIKE7]
+Percorso 8
+
+[DBIKE8]
+Percorso 9
+
+[DBIKE9]
+Percorso 10
+
+[DBIKEHE]
+'Fossi & Ridossi'
+
+[DBIKEBP]
+Posizione migliore
+
+[DBIKEFL]
+Giro migliore
+
+[DBIKEFT]
+Tempo migliore
+
+[ST_PHOT]
+Foto scattate
+
+[ST_PIZZ]
+Pizze consegnate
+
+[ST_NOOD]
+Noodle consegnati
+
+[MO_TOUR]
+Soldi guadagnati dai turisti
+
+[TA_TOUR]
+Turisti portati in luoghi turistici
+
+[SC_SCRA]
+Punteggio max in 'Disfida alla discarica'
+
+[SC_9MM]
+Punteggio max in '9mm di macello'
+
+[SC_SCOO]
+Punteggio max in 'Motorino sparacchino'
+
[DAYPLC]
Spesa giornaliera polizia
+[SEAGULL]
+Gabbiani abbattuti
+
[CRIMRA]
-Livello criminalità:
+LIVELLO CRIMINALITÀ
+
+[CHASE]
+Massima attenzione dei media
+
+[CHASE1]
+Ignoto
+
+[CHASE2]
+Noioso
+
+[CHASE3]
+Appena interessante
+
+[CHASE4]
+Giornale locale Pagina 7
+
+[CHASE5]
+Giornale locale Prima pagina
+
+[CHASE8]
+TV locale, 3 di mattino
+
+[CHASE9]
+TV locale, notiziario
+
+[CHASE10]
+TV locale, servizio in diretta
+
+[CHASE11]
+UFA Today Pagina 23
+
+[CHASE12]
+UFA Today Pagina 4
+
+[CHASE13]
+Foto in UFA Today
+
+[CHASE14]
+TV nazionale, 4 di mattino
+
+[CHASE15]
+TV nazionale, notiziario
+
+[CHASE16]
+TV nazionale, servizio in diretta
+
+[CHASE17]
+Avvenimento internazionale
+
+[CHASE18]
+Crisi nazionale
+
+[CHASE19]
+Crisi internazionale
+
+[CHASE20]
+Evento mondiale
+
+[CHASE21]
+Roba da leggenda
+
+[WHEEL01]
+~w~BONUS SU DUE RUOTE: ~1~$ Distanza: ~1~.~1~ m Tempo: ~1~ secondi
+
+[WHEEL02]
+~w~BONUS SU DUE RUOTE: ~1~$ Distanza: ~1~ piedi Tempo: ~1~ secondi
+
+[WHEEL06]
+~w~BONUS IMPENNATA: ~1~$ Distanza: ~1~.~1~ m Tempo: ~1~ secondi
+
+[WHEEL07]
+~w~BONUS IMPENNATA: ~1~$ Distanza: ~1~ piedi Tempo: ~1~ secondi
+
+[WHEEL11]
+BONUS FRENATA IN PUNTA: ~1~$ Distanza: ~1~.~1~ m Tempo: ~1~ secondi
+
+[WHEEL12]
+~w~BONUS FRENATA IN PUNTA: ~1~$ Distanza: ~1~ piedi Tempo: ~1~ secondi
-[STPR_1]
-Malibu
+[GMSTOR]
+Negozio di giochi
-[STPR_2]
-Tipografia
+[PREBRF]
+Briefing precedenti
-[STPR_3]
-Studio cinematografico
+[CNTLS]
+Comandi
-[STPR_4]
-Fabbrica di gelato
+[MUSMEN]
+Musica/Effetti
-[STPR_5]
-Lavaggio auto
+[GAMSET]
+Impostazioni di gioco
-[STPR_6]
-Compagnia di taxi
+[LANGUA]
+Lingua
-[STPR_7]
-Cantiere navale
+[DSPLAY]
+Video
+
+[DEBUGM]
+Menu Debug
+
+[QUITOP]
+Esci dalle opzioni
+
+[CONTRL]
+Configurazione comandi
[SET1EN]
-Config. 1. Abilitata.
+Config. 1. abilitata
-[GMSAVE]
-Salva partita
+[SET1]
+Config. 1.
-[FEDS_TB]
+[SET2EN]
+Config. 2 abilitata
+
+[SET2]
+Config. 2
+
+[SET3EN]
+Config. 3 abilitata
+
+[SET3]
+Config. 3
+
+[SET4EN]
+Config. 4 abilitata
+
+[SET4]
+Config. 4
+
+[GOBACK]
Indietro
-[FEST_OO]
-su
+[SOUND]
+AUDIO
-[FEC_TUC]
-Comandi torretta
+[MUSVOL]
+Volume musica
-[FEC_RS3]
-Stazioni radio (tasto L3)
+[SFXVOL]
+Volume effetti
-[FEC_HO3]
-Clacson (tasto L3)
+[SCROPT]
+OPZIONI VIDEO
-[C_FAIL]
-Missione Vigilante terminata!
+[CTRSCR]
+Centra schermo
-[C_ESCP]
-~r~Il sospettato è fuggito!
+[SCRFOR]
+Formato schermo
-[C_VIGIL]
-BONUS VIGILANTE!
+[GMSVLQ]
+SALVA-CARICA-ESCI
-[HEAL_A]
-La tua ~h~salute~w~ è indicata in color arancione in alto a destra sullo schermo.
+[GMREST]
+Riavvio del gioco
-[WRONGCD]
-Disco errato. Inserisci il disco corretto.
+[GMLOAD]
+Carica partita
-[NOCD]
-Il cassetto del disco è vuoto. Inserisci il disco.
+[GMSAVE]
+Salva partita
-[OPENCD]
-Il cassetto del disco è aperto: è necessario chiuderlo.
+[NOGMSV]
+Puoi salvare solamente presso il tuo nascondiglio.
-[CDERROR]
-Errore di lettura dal DVD Grand Theft Auto: Vice City.
+[DLFILE]
+Elimina file Grand Theft Auto
-[RESTART]
-Avvio di una nuova partita
+[CHFILE]
+SCEGLI IL FILE DA CARICARE
-[GA_3]
-Niente più sconti. $100 per la riverniciatura!
+[CHFIDL]
+SCEGLI IL FILE DA ELIMINARE
-[GA_1]
-Wow! Non tocco niente di COSÌ caldo!
+[SVCONF]
+CONFERMA SALVATAGGIO
-[GA_1A]
-Torna quando non sarai così occupato...
+[SVFNAM]
+Il nome del tuo salvataggio è
-[HELP9_C]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile di precisione.
+[LANGSL]
+SELEZIONE LINGUA
-[TAXI2]
-~r~Tempo scaduto!
+[ENGLIS]
+Inglese
-[PAGEB13]
-Salute consegnata al nascondiglio
+[GERMAN]
+Tedesco
-[PAGEB14]
-Adrenalina consegnata al nascondiglio
+[ITALIA]
+Italiano
-[FESZ_CA]
-Annulla
+[FRENCH]
+Francese
-[FES_NGA]
-Nuova partita
+[SPAIN]
+Spagnolo
-[FES_CAN]
-Annulla
+[RELIDE]
+Reload IDE
-[FESZ_QL]
-Tutti i progressi della partita attuale non ancora salvati andranno perduti. Vuoi procedere con il caricamento?
+[RELIPE]
+Reload IPL
-[FESZ_QD]
-Vuoi eliminare questa partita salvata?
+[PARSHP]
+Parse Heap
-[FESZ_QO]
-Vuoi procedere con la sovrascrittura di questa partita salvata?
+[DBGFON]
+CTheScripts::DbgFlag On
-[FESZ_QR]
-Sei sicuro di voler iniziare una nuova partita? Tutti i progressi fatti fino all'ultimo salvataggio andranno perduti. Vuoi procedere?
+[DBFOFF]
+CTheScripts::DbgFlag Off
-[T4X4_1]
-'Parco divertimenti PCJ'
+[BGWHON]
+Big White Debug Light Switched On
-[BMX_1]
-'Prova del fango'
+[BGWOFF]
+Big White Debug Light Switched Off
-[BMX_2]
-'Tracciato di prova'
+[DSTRON]
+Debug Streaming Requests On
-[BMXFAIL]
-~r~Non sei riuscito a stabilire un nuovo record!
+[DSTROFF]
+Debug Streaming Requests Off
-[T4X4_3]
-'TENUTA!'
+[PDRGON]
+ShowPedRoadGroups On
-[MM_1]
-'FOLLIA CONICA'
+[PRGOFF]
+ShowPedRoadGroups Off
-[T4X4_F]
-~r~Ti sei ritirato! Troppo difficile per te?
+[CRRGON]
+ShowCarRoadGroups On
-[LANDSTK]
-Landstalker
+[CRGOFF]
+ShowCarRoadGroups Off
-[IDAHO]
-Idaho
+[CLZOON]
+Show Cull Zones On
-[STINGER]
-Stinger
+[CLZOOF]
+Show Cull Zones Off
-[LINERUN]
-Linerunner
+[SHPLON]
+gbShowCollisionPolys On
-[PEREN]
-Familiare
+[SHPLOF]
+gbShowCollisionPolys Off
-[SENTINL]
-Sentinel
+[CULREC]
+CCullZones::RecalculateCullZoneData()
-[RIO]
-Rio
+[FORMM1]
+FormatMemCard 1 (teststuff)
-[PATRIOT]
-Patriot
+[UNFRM1]
+UnFormatMemCard 1 (teststuff)
-[FIRETRK]
-Camion dei pompieri
+[GORLEV]
+Quantità di sangue
-[TRASHM]
-Nettezza urbana
+[SICASS]
+Sick Fuck
-[STRETCH]
-Stretch
+[SICSIC]
+Sick Fucker
-[MANANA]
-Manana
+[SCASSL]
+Sick Fuck Selected
-[INFERNS]
-Infernus
+[SCSCSL]
+Sick Fucker Selected
-[VOODOO]
-Voodoo
+[PRVMEN]
+Briefing missioni precedenti
-[PONY]
-Pony
+[FORMEN]
+Format Menu
-[MULE]
-Mule
+[MEMTST]
+MemoryCardTest screen
-[CHEETAH]
-Cheetah
+[REGCAR]
+Register MemoryCard One
-[AMBULAN]
-Ambulanza
+[TEFONE]
+Test Format MemCard One
-[FBICAR]
-FBI Washington
+[TEUFON]
+Test UnFormat MemCard One
-[MOONBM]
-Moonbeam
+[CRROOT]
+CreateRootDir
-[ESPERAN]
-Esperanto
+[CRLDIC]
+Create and Load Icons
-[TAXI]
-Taxi
+[FLFSGF]
+Fill First File With Guff
-[WASHING]
-Washington
+[PUSAVE]
+Save Only the game
-[BOBCAT]
-Bobcat
+[CHEVOK]
+CheckEveryOkB4Save
-[WHOOPEE]
-Mr Whoopee
+[SVGMON]
+SaveTheGame
-[BFINJC]
-BF a iniezione
+[CNTSAV]
+Can't save the game. On a mission.
-[HUNTER]
-Hunter
+[CNCSAV]
+Can't save the game. You're in a car.
-[POLICAR]
-Polizia
+[CRMGSV]
+Create copy protected magazine directory
-[ENFORCR]
-Volante
+[MGSVCN]
+MagazineDirectory Created
-[SECURI]
-Securicar
+[MGSVNC]
+MagazineDirectory Not Created
-[BANSHEE]
-Banshee
+[YES]
+Sì
-[PREDATR]
-Predator
+[NO]
+No
-[BUS]
-Autobus
+[X]
+x
-[RHINO]
-Rhino
+[LAST]
+Ultimo messaggio.
-[BARRCKS]
-Caserma OL
+[GS_STYL]
+STILE DI GIOCO:
-[CUBAN]
-Cuban Hermes
+[GS_FFAL]
+LIBERO
-[HELI]
-Elicottero
+[GS_LOC]
+LUOGO:
-[DODO]
-Dodo
+[GS_SLMT]
+LIMITE PUNTI:
-[COACH]
-Pullman
+[GS_KLMT]
+LIMITE UCCISIONI:
-[CABBIE]
-Vecchio taxi
+[GS_TLMT]
+LIMITE TEMPO:
-[STALION]
-Stallion
+[GS_ULMT]
+ILLIMITATO
-[RUMPO]
-Rumpo
+[GS_PRUP]
+POTENZIAMENTI:
-[RCBANDT]
-Bandit radiocomandato
+[GS_RACE]
+GARA:
-[ROMERO]
-Carro funebre di Romero
+[GS_LAPS]
+GIRI:
-[PACKER]
-Packer
+[GS_OK]
+OK
-[ADMIRAL]
-Admiral
+[FEH_MP]
+MULTIGIOCATORE
-[SQUALO]
-Squalo
+[FEMP_J]
+Partecipa
-[SEASPAR]
-Sea Sparrow
+[FEMP_CS]
+PERSONAGGIO:
-[PIZZABO]
-Pizza Boy
+[FEMP_PS]
+IMPOSTAZIONI GIOCATORE
-[GANGBUR]
-Gang Burrito
+[FEMP_GS]
+SELEZIONA PARTITA
-[TROPIC]
-Tropic
+[FEMP_NG]
+NUOVA PARTITA
-[SPEEDER]
-Speeder
+[SVRLIST]
+ELENCO PARTITE
-[REEFER]
-Reefer
+[SVRINFO]
+DETTAGLI PARTITE
-[FLATBED]
-Flatbed
+[SVRNAME]
+NOME:
-[YANKEE]
-Yankee
+[NO_SVRS]
+RICERCA PARTITE...
-[CADDY]
-Caddy
+[NO_PLRS]
+RICERCA GIOCATORI...
-[ZEBRA]
-Taxi Zebra
+[NO_NAME]
+NESSUN NOME
-[TOPFUN]
-Top Fun
+[NO_WIFI]
+Per giocare partite multigiocatore, devi prima accendere l'interruttore WLAN.
-[SKIMMER]
-Skimmer
+[FEMP_SG]
+AVVIA PARTITA
-[PCJ600]
-PCJ 600
+[FEMP_S]
+Avvio
-[PHOENIX]
-Phoenix
+[FEMP_WS]
+In attesa dell'avvio della partita...
-[FAGGIO]
-Faggio
+[SVRLOST]
+Connessione con l'host interrotta.
-[FREEWAY]
-Freeway
+[NOSVRS]
+Non è stato trovato nessun host.
-[RCBARON]
-Baron radiocomandato
+[MP_WARN]
+Avviando una partita multigiocatore, perderai tutti i progressi fatti dall'ultimo salvataggio.
-[RCRAIDE]
-Raider radiocomandato
+[FEDS_XB]
+Seleziona
-[GLENDAL]
-Glendale
+[FEDS_TB]
+Indietro
-[OCEANIC]
-Oceanic
+[FEDS_ST]
+tasto START - RIPRENDI
-[SANCHEZ]
-Sanchez
+[FEST_OO]
+su
-[SPARROW]
-Sparrow
+[FED_SUB]
+SOTTOTITOLI:
-[LOVEFIS]
-Love Fist
+[FEC_TUC]
+Comandi torretta
-[COASTG]
-Coast Guard
+[FEC_SM3]
+Attiva missioni speciali (tasto R3)
-[DINGHY]
-Dinghy
+[FEC_RS3]
+Cambia stazione radio (tasto L3)
-[HERMES]
-Hermes
+[FEC_HO3]
+Clacson (tasto L3)
-[SABRE]
-Sabre
+[FIRST]
+~g~1°
-[SABRETU]
-Sabre Turbo
+[SECOND]
+~g~2°
-[WALTON]
-Walton
+[THIRD]
+~g~3°
-[REGINA]
-Regina
+[FOURTH]
+~g~4°
-[COMET]
-Comet
+[NOCONTE]
+Inserire un controller analogico (DUALSHOCK®) oppure un controller analogico (DUALSHOCK®2) nell'ingresso controller 1 per continuare.
-[DELUXO]
-Deluxo
+[WRCONT]
+Il controller inserito nell'ingresso controller 1 non è un controller supportato. GTA: Liberty City Stories necessita di un controller analogico (DUALSHOCK®) oppure di un controller analogico (DUALSHOCK®2).
-[BURRITO]
-Burrito
+[WRCONTE]
+Il controller inserito nell'ingresso controller 1 non è un controller supportato. GTA: Liberty City Stories necessita di un controller analogico (DUALSHOCK®) oppure di un controller analogico (DUALSHOCK®2).
-[SPAND]
-Spandex Express
+[WRONGCD]
+Disco errato. Inserisci il disco di GTA:Liberty City Stories.
-[MARQUIS]
-Marquis
+[NOCD]
+Il cassetto del disco è vuoto. Inserisci il disco di GTA:Liberty City Stories.
-[BAGGAGE]
-Baggage Handler
+[OPENCD]
+Il cassetto del disco è aperto: è necessario chiuderlo.
-[KAUFMAN]
-Taxi Kaufman
+[RESTART]
+Avvio di una nuova partita.
-[COASTMA]
-Coastguard Maverick
+[GA_3]
+~w~100$ per riverniciare!
-[MAVERIC]
-Maverick
+[GA_1A]
+~w~Torna quando non sarai così occupato...
-[RANCHER]
-Rancher
+[AWAY]
+~r~Qui non c'è proprio!
-[FBIRANC]
-FBI Rancher
+[GA_6B]
+~w~Parcheggia, attiva la bomba premendo~h~ ~k~ ~PDFW~ ~w~e FUGGI!
-[VIRGO]
-Virgo
+[GA_7B]
+~w~Innesca la bomba premendo ~h~ ~k~ ~PDFW~~w~. La bomba esploderà all'accensione del motore.
-[GREENWO]
-Greenwood
+[FESZ_CA]
+Annulla
-[HOTRING]
-Hotring Racer
+[FESZ_QU]
+Esci
-[BLISTAC]
-Blista Compact
+[FESZ_L1]
+Partita salvata con successo!
-[FEST_DF]
-Distanza a piedi (miglia)
+[FESZ_L2]
+Il nome del tuo salvataggio è:
-[FEST_DC]
-Distanza in auto (miglia)
+[FESZ_OK]
+OK
-[FESTDFM]
-Distanza a piedi (metri)
+[FES_LGA]
+Carica partita
-[FESTDCM]
-Distanza in auto (metri)
+[FES_DGA]
+ELIMINA DATI SALVATI
-[TOT_DIS]
-Distanza totale (miglia)
+[FES_NGA]
+NUOVA PARTITA
-[TOTDISM]
-Distanza totale (metri)
+[FES_CAN]
+Annulla
-[DISTHEL]
-Distanza in elicottero (miglia)
+[FESZ_QL]
+Tutti i progressi non salvati andranno persi. Procedere con il caricamento?
-[DISTHEM]
-Distanza in elicottero (metri)
+[FESZ_QD]
+Procedere all'eliminazione del salvataggio?
-[DISTBOA]
-Distanza in barca (miglia)
+[FESZ_QO]
+Procedere alla sovrascrittura del salvataggio?
-[DISTBOM]
-Distanza in barca (metri)
+[FESZ_QR]
+Sei sicuro di voler iniziare una nuova partita? Tutti i progressi dall'ultima partita salvata andranno persi. Procedere?
+
+[FESZ_QS]
+VUOI SALVARE?
+
+[T4X4_2A]
+~g~Hai ~y~2 minuti~g~ per attraversare ~y~12~g~ checkpoint! ~g~Puoi attraversarli in ~y~QUALSIASI ORDINE.
+
+[T4X4_2B]
+~1~ su 12!
+
+[T4X4_2C]
+~y~SUPERA~g~ il primo checkpoint per attivare il timer. ~g~Ogni checkpoint ti fornirà ~y~10 SECONDI~g~ extra.
+
+[T4X4_F]
+~r~Ti sei ritirato! Troppo difficile per te?
+
+[UPSIDE]
+~r~Ti sei ribaltato!
+
+[FEST_DF]
+Dist. percorsa a piedi (miglia)
+
+[FEST_DC]
+Dist. percorsa in macchina (miglia)
+
+[FESTDFM]
+Distanza percorsa a piedi (m)
+
+[FESTDCM]
+Distanza percorsa in macchina (m)
[FEST_LS]
Persone salvate in ambulanza
@@ -2267,12462 +2803,14657 @@ Criminali uccisi in missioni Vigilante
[FEST_FE]
Incendi estinti
+[FEST_LF]
+Volo più lungo con il Dodo
+
+[FEST_BD]
+Tempo migliore disinnesco bomba
+
[FEST_RP]
-Violenze eseguite
+Violenze completate
+
+[FEST_CN]
+Miglior tempo rimasto in 'Karmageddon'
+
+[FEST_TR]
+Uccisioni max in 'RC contro la Triade'
[FEST_MP]
Missioni completate
-[FEST_BB]
-Bling-bling Scramble:
-
[FEST_H0]
-Maggior numero di punti di controllo
+Maggior numero di checkpoint
[FEST_GC]
Auto delle gang distrutte:
-[FEST_H1]
-Distruzione Diablo
+[USJ]
+~w~BONUS ACROBAZIA UNICA!
-[FEST_H2]
-Massacro Mafioso
+[USJ_FAL]
+~w~ACROBAZIA UNICA FALLITA!
-[FEST_H3]
-Calamità al Casinò
+[HM1_1]
+~g~Uccidi 20 Purple Nine in 2 minuti e 30 secondi.
-[FEST_H4]
-Demolizioni Rumpo
+[KM1_8A]
+Premi~h~ ~k~ ~PDFW~ ~w~per ~h~attivare la bomba:~w~ ricorda di allontanarti!
-[USJ]
-BONUS ACROBAZIA UNICA!
+[KM1_8D]
+Premi~h~ ~k~ ~PDFW~ ~w~per ~h~attivare la bomba:~w~ ricorda di allontanarti!
[RATNG1]
-Cittadino onesto
+CITTADINO ONESTO
[RATNG2]
-Sconosciuto
+SCONOSCIUTO
[RATNG3]
-Pezzente
+PEZZENTE
[RATNG4]
-Furfantello
+FURFANTE
[RATNG5]
-Vandalo
+VANDALO
[RATNG6]
-Fattorino
+FACTOTUM
[RATNG7]
-Borsaiolo
+BORSEGGIATORE
[RATNG8]
-Cleptomane
+CLEPTOMANE
[RATNG9]
-Teppista
+TEPPISTA
[RATNG10]
-Ladruncolo
-
-[RATNG11]
-Sanguisuga
+LADRUNCOLO
[RATNG12]
-Truffatore
+TRUFFATORE
[RATNG13]
-Farabutto
+FARABUTTO
[RATNG14]
-Informatore
+INFORMATORE
[RATNG15]
-Imbroglione
+IMBROGLIONE
[RATNG16]
-Bullo
+BULLO
[RATNG17]
-Canaglia
+CANAGLIA
[RATNG18]
-Scapestrato
+SCAPESTRATO
[RATNG19]
-Ruffiano
+RUFFIANO
[RATNG20]
-Fuorilegge
+FUORILEGGE
[RATNG21]
-Delinquente
+DELINQUENTE
[RATNG22]
-Ladro
+LADRO
[RATNG23]
-Scagnozzo
+SCAGNOZZO
[RATNG24]
-Tirapiedi
+TIRAPIEDI
[RATNG25]
-Avanzo di galera
+AVANZO DI GALERA
[RATNG26]
-Ex galeotto
+EX DETENUTO
[RATNG27]
-Criminale
+CRIMINALE
[RATNG28]
-Picchiatore
+PICCHIATORE
[RATNG29]
-Saggio
+SPIONE
[RATNG30]
-Autista
+AUTISTA
[RATNG31]
-Guardia del corpo
+GUARDIA DEL CORPO
[RATNG32]
-Attaccabrighe
+ATTACCABRIGHE
[RATNG33]
-Cacciatore di taglie
+CACCIATORE DI TAGLIE
[RATNG34]
-Vigilante
+VIGILANTE
[RATNG35]
-Ronin
+RONIN
[RATNG36]
-Riparatore
+RIPARATORE
[RATNG37]
-Sicario
+SICARIO
[RATNG38]
-Socio
+SOCIO
[RATNG39]
-Macellaio
+MACELLAIO
[RATNG40]
-Pulitore
+PULITORE
[RATNG41]
-Assassino
+ASSASSINO
[RATNG42]
-Consigliere
+CONSIGLIERE
[RATNG43]
-Consulente
+UOMO D'ONORE
[RATNG44]
-Braccio destro
+BRACCIO DESTRO
[RATNG45]
-Esecutore
+ESECUTORE
[RATNG46]
-Tenente
+TENENTE
[RATNG47]
-Aiutante del boss
+AIUTANTE DEL BOSS
[RATNG48]
-Capo
+CAPO
[RATNG49]
-Boss
+BOSS
[RATNG50]
-Intoccabile
+INTOCCABILE
[RATNG51]
-Don
+DON
[RATNG52]
-Re della fottuta città
+PADRINO
+
+[TRAIN_1]
+Kurowski Station
+
+[TRAIN_2]
+Rothwell Station
+
+[TRAIN_3]
+Baillie Station
+
+[SUBWAY1]
+Portland Station
+
+[SUBWAY2]
+Rockford Station
+
+[SUBWAY3]
+Staunton South Station
+
+[SUBWAY4]
+Shoreside Terminal
+
+[DETON]
+DETONAZIONE
+
+[RCBOMB1]
+RC contro la Triade
+
+[RECORD]
+~w~Nuovo record: ~1~ uccisioni!
+
+[NRECORD]
+~r~Non hai battuto il record precedente di ~1~ uccisioni!
+
+[RCBOMBF]
+~r~Sei sceso dal furgone!
+
+[RC_2]
+Hai 2 minuti per far esplodere il maggior numero possibile di macchine della Mafia!
+
+[RC_3]
+Hai 2 minuti per far esplodere il maggior numero possibile di macchine della Yakuza!
+
+[RC_4]
+Hai 2 minuti per far esplodere il maggior numero possibile di macchine degli Yardie!
+
+[RC_5]
+Hai 2 minuti per far esplodere il maggior numero possibile di macchine degli Hood!
+
+[RC_6]
+Hai 2 minuti per far esplodere il maggior numero possibile di macchine del Cartello!
+
+[RAMPKA]
+~w~Hai bisogno di un veicolo per questa violenza.
[PAGE_00]
.
+[TURTXT]
+Mobile Massacre!
+
+[TURPASS]
+~w~Massacro completato!
+
+[TUR3D]
+~w~Danni
+
+[FTFRENZ]
+Furia camion dei pompieri
+
[WELCOME]
BENVENUTO A
[TSCORE]
-GUADAGNI: ~1~$
+~w~GUADAGNI TOTALI: ~1~ $
-[PBOAT_2] { reVC update }
-Premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con i cannoni della barca.
+[PBOAT_1]
+Premi~h~ ~k~ ~VEWEP~ ~w~per sparare con i cannoni della nave.
-[HJSTAT]
-Distanza: ~1~.~1~m Altezza: ~1~.~1~m Ribaltamenti: ~1~ Rotazioni: ~1~_
+[HM2_1]
+Usa le buggy RC per distruggere le macchine blindate. Premi~h~ ~k~ ~VEWEP~ ~w~per farle esplodere.
-[HJSTATW]
-Distanza: ~1~.~1~m Altezza: ~1~.~1~m Ribaltamenti: ~1~ Rotazioni: ~1~_ E che grande atterraggio!
+[HM2_1A]
+Usa le buggy RC per distruggere le macchine blindate. Premi~h~ ~k~ ~VEWEP~ ~w~per farle esplodere.
-[ATUTOR]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Infermiere.
+[HM2_2]
+~r~Non sei riuscito a distruggere tutte le macchine blindate!
+
+[HM2_6]
+~g~Macchina blindata distrutta!
+
+[FESZ_UC]
+ANNULLA
+
+[FEDS_SM]
+L1,R1 - CAMBIA MENU
+
+[FEDS_AS]
+;=- CAMBIA SELEZIONE
+
+[FEDSAS2]
+<>-CAMBIA SELEZIONE
+
+[FEDS_SS]
+L1,R1 - CAMBIA SELEZIONE
+
+[FEDSSC1]
+;-SCORRIMENTO VELOCE
+
+[FEDSSC2]
+=-FERMA SCORRIMENTO
+
+[FES_LOF]
+Caricamento fallito.
+
+[FES_SLO]
+IL SALVATAGGIO
+
+[FES_ISC]
+È DANNEGGIATO
+
+[FESZ_TI]
+SALVATAGGIO Z1
+
+[FESZ_SA]
+Salva partita
+
+[MC_LDFL]
+Caricamento fallito!
+
+[MC_NWRE]
+Riavvio del gioco in corso.
+
+[BIFP_1]
+~w~Ahia! Distanza della caduta: ~1~.~1~ m
+
+[BIFP_1F]
+~w~Ahia! Distanza della caduta: ~1~.~1~ piedi
+
+[DIAB1_5]
+TEMPO DI GARA:
+
+[F_FAIL1]
+~r~Missione Pompiere terminata.
+
+[F_CANC]
+~r~Missione Pompiere annullata!
+
+[F_FAIL3]
+~r~Sei arrivato tardi!
+
+[F_FAIL4]
+~r~Uno dei passeggeri è morto!
+
+[F_FAIL5]
+~r~Una delle macchine è stata distrutta!
+
+[F_FAIL6]
+~r~L'auto è stata distrutta!
+
+[F_EXTIN]
+Incendi
+
+[A_CANC]
+~r~Missione Paramedico annullata!
+
+[ALEVEL]
+~w~Missione Paramedico livello ~1~
+
+[A_FAIL1]
+~r~Missione Paramedico terminata.
[FEST_HA]
-Livello massimo della missione Infermiere
+Livello massimo 'Paramedico'
+
+[A_SAVES]
+~w~PERSONE SALVATE: ~1~
[C_KILLS]
-CRIMINALI UCCISI: ~1~
+~w~CRIMINALI UCCISI: ~1~
-[HJSTATF]
-Distanza: ~1~ piedi Altezza: ~1~ piedi Ribaltamenti: ~1~ Rotazioni: ~1~_
+[F_START]
+~b~Veicolo in fiamme ~w~avvistato nella zona di ~a~. Vai a spegnere il fuoco.
-[HJSTAWF]
-Distanza: ~1~ piedi Altezza: ~1~ piedi Ribaltamenti: ~1~ Rotazioni: ~1~_ E che grande atterraggio!
+[F_STAR1]
+~b~Veicoli in fiamme ~w~avvistati nella zona di ~a~. Vai a spegnere i fuochi.
-[CRED001]
-ROCKSTAR NORTH
+[F_REWAR]
+~w~INCENDIO SPENTO! Livello ~1~ completato. Ricompensa: ~1~$
-[CRD001A]
-DIRETTORE DELLO STUDIO
+[CINCAM]
+Camera mobile
-[CRD001B]
-ANDREW SEMPLE
+[FEDS_AM]
+<>-CAMBIA MENU
-[CRED002]
-PRODUTTORE
+[KABOOM]
+BOOM!
-[CRD002A]
-DIRETTORE DI SVILUPPO
+[SPLAT]
+SCHIACCHIATO!
-[CRED003]
-LESLIE BENZIES
+[PANCAK]
+SPIATTELLATO!
-[CRED004]
-DIRETTORE ARTISTICO
+[SOAKED]
+ANNEGATO!
-[CRED005]
-AARON GARBUT
+[HEAD]
+Head Radio
-[CRED006]
-DIRETTORI TECNICI
+[DBL_CLF]
+Double Clef FM
-[CRED007]
-OBBE VERMEIJ
+[FLASHB]
+Flashback FM
-[CRED008]
-ADAM FOWLER
+[RISE]
+Rise FM
-[CRED010]
-ANDREW DUTHIE
+[LIPS]
+Lips 106
-[CRED011]
-CRAIG FILSHIE
+[CHAT]
+Chatterbox FM
-[CRED012]
-WILLIAM MILLS
+[K_JAH]
+K-Jah Radio
-[CRED013]
-CHRIS ROTHWELL
+[GAM_FM]
+Game Radio FM
-[CRD013A]
-IMRAN SARWAR
+[MSX_FM]
+MSX FM
-[CRD013B]
-JAMES WORRALL
+[GA_2]
+~w~Motore nuovo e carrozzeria riverniciata: 100$
-[CRD013C]
-JOHN HAIME
+[PERPIC]
+Pacchetti speciali recuperati
-[CRED014]
-SCRITTO DA
+[GA_21]
+~w~Non puoi parcheggiare altri veicoli in questo garage.
-[CRED015]
-JAMES WORRALL
+[CHEAT1]
+Trucco attivato
-[CRED016]
-PAUL KUROWSKI
+[CHEAT2]
+Trucco armi
-[CRED017]
-DAN HOUSER
+[CHEAT3]
+Trucco salute
-[CRED018]
-PROGETTAZIONE PERSONAGGI PRINCIPALI
+[CHEAT4]
+Trucco armatura
-[CRD018A]
-PROGETTAZIONE PERSONAGGI
+[CHEAT5]
+Trucco livello di sospetto
-[CRED019]
-IAN MCQUE
+[CHEAT6]
+Trucco soldi
-[CRD019A]
-TOKS SOLARIN
+[CHEAT7]
+Trucco tempo atmosferico
-[CRD019B]
-ALAN DAVIDSON
+[FEDS_BA]
+tasto " - INDIETRO
-[CRED020]
-ANIMATORE CAPO
+[FED_WIS]
+PANORAMICO:
-[CRED021]
-ALEX HORTON
+[USJ_ALL]
+~w~TUTTE LE ACROBAZIE UNICHE COMPLETATE!
-[CRD022A]
-ANIMATORI
+[JAN]
+Gen
-[CRED022]
-LEE MONTGOMERY
+[FEB]
+Feb
-[CRD022B]
-DUNCAN SHIELDS
+[MAR]
+Mar
-[CRD022C]
-GUS BRAID
+[APR]
+Apr
-[CRED023]
-PROGETTAZIONE VEICOLI
+[MAY]
+Mag
-[CRD023A]
-JOLYON ORME
+[JUN]
+Giu
-[CRD023B]
-ALAN DUNCAN
+[JUL]
+Lug
-[CRD024A]
-CAPO PROGETTAZIONE VEICOLI
+[AUG]
+Ago
-[CRED024]
-PAUL KUROWSKI
+[SEP]
+Set
-[CRED025]
-PROGETTAZIONE MAPPA
+[OCT]
+Ott
-[CRED026]
-ADAM COCHRANE
+[NOV]
+Nov
-[CRED027]
-NIK TAYLOR
+[DEC]
+Dic
-[CRED028]
-GARY MCADAM
+[DEFDT]
+--:---:---- --:--:--
-[CRED029]
-KEIRAN BAILLIE
+[BONUS]
+~g~BONUS ~1~$
-[CRED030]
-ALISDAIR WOOD
+[TAXI_M]
+'Tassista'
-[CRED031]
-ANDREW SOOSAY
+[COP_M]
+'Vigilante'
-[CRD031A]
-STEVEN MULHOLLAND
+[FIRE_M]
+'Pompiere'
-[CRD031B]
-WAYLAND STANDING
+[AMBUL_M]
+'Paramedico'
-[CRD031C]
-CAMPBELL J. DICK
+[HJ_IS]
+~w~BONUS ACROBAZIA FOLLE: ~1~$
-[CRD031D]
-PROGETTAZIONE GRAFICA
+[HJ_PIS]
+~w~BONUS ACROBAZIA FOLLE PERFETTA: ~1~$
-[CRD031E]
-STUART PETRI
+[HJ_DIS]
+~w~BONUS DOPPIA ACROBAZIA FOLLE: ~1~$
-[CRED032]
-PROGRAMMATORE CAPO
+[HJ_PDIS]
+~w~BONUS DOPPIA ACROBAZIA FOLLE PERFETTA: ~1~$
-[CRD032A]
-PROGRAMMATORI
+[HJ_TIS]
+~w~BONUS TRIPLA ACROBAZIA FOLLE: ~1~$
-[CRED033]
-ALEXANDER ROGER
+[HJ_PTIS]
+~w~BONUS TRIPLA ACROBAZIA FOLLE PERFETTA: ~1~$
-[CRED034]
-GRAEME WILLIAMSON
+[HJ_QIS]
+~w~BONUS QUADRUPLA ACROBAZIA FOLLE: ~1~$
-[CRED035]
-BARANE CHAN
+[HJ_PQIS]
+BONUS QUADRUPLA ACROBAZIA FOLLE PERFETTA: ~1~$
-[CRED036]
-DEREK PAYNE
+[HJBAD]
+~w~Terribile atterraggio: avevi quasi guadagnato ~1~$!
-[CRED037]
-GORDON YEOMAN
+[HJUP]
+Salute al decollo: ~1~
-[CRD037A]
-ALAN CAMPBELL
+[HJDOWN]
+Salute all'atterraggio: ~1~
-[CRD037B]
-MARK HANLON
+[FESZ_LS]
+Caricamento completato.
-[CRD037C]
-ANDRZEJ MADAJCZYK
+[CEDBUG1]
+!!Debug Event!!
-[CRED038]
-CAPO PRODUZIONE MUSICA
+[CEDBUG2]
+!!Player is dead or not playing!!
-[CRED039]
-CRAIG CONNER
+[CEDBUG3]
+!!Player is in INDUSTRIAL level!!
-[CRED040]
-STUART ROSS
+[CEDBUG4]
+Trying to make COLLECTIVE with ~1~
-[CRED041]
-CAPO INGEGNERE AUDIO
+[CEDBUG5]
+Debug Value: ~1~
-[CRED042]
-ALLAN WALKER
+[CEDBUG6]
+Debug Values: A: ~1~ B: ~1~
-[CRD041A]
-INGEGNERE AUDIO
+[CEDBUG7]
+Debug Values: A: ~1~ B: ~1~ C: ~1~
-[CRD041B]
-AUDIO
+[LINE]
+This is Line ~1~
-[CRD042A]
-WILL MORTON
+[MRACE08]
+~w~Torna quando avrai un veicolo!
-[CRED043]
-PROGRAMMATORE AUDIO
+[MRACE01]
+~w~Aspetta dei rivali e poi suona il clacson per iniziare la gara!
-[CRED044]
-RAYMOND USHER
+[MRACE02]
+~w~La gara inizierà quando il primo giocatore suonerà il clacson.
-[CRED045]
-RESPONSABILE TESTING
+[MRACE05]
+~r~HAI PERSO!
-[CRED046]
-CRAIG ARBUTHNOTT
+[MRACE07]
+~r~Sei morto! Perdente!
-[CRED047]
-CAPO CQ
+[MRACE06]
+~r~Sei uno sfigato! Ti sei ritirato!
-[CRED048]
-NEIL CORBETT
+[MRACE09]
+~w~Torna in gara!
-[CRED049]
-KEVIN WONG
+[MRACE10]
+~w~Hai vinto (una fuga solitaria)!
-[CRED050]
-CQ
+[MRACEPO]
+Posizione
-[CRED051]
-DAVID BEDDOES
+[MRCPU03]
+HAI INCENDIATO TUTTI I RIVALI!
-[CRED052]
-DAVID WATSON
+[MRCPU04]
+STAI BRUCIANDO! ( ------- TRASHMASTER ODD-JOB MISSION ------- )
-[CRED053]
-BARRY CLARK
+[TRASH1]
+Sprint-atore ecologico
-[CRED054]
-ROSS SPARROW
+[TRASH1A]
+~w~Recupera i bidoni e porta l'immondizia alla discarica.
-[CRED055]
-JAMES ALLAN
+[TRASH1C]
+~w~Il tempo partirà quando recuperi un bidone. Puoi recuperarli in QUALSIASI ORDINE.
-[CRED056]
-NEIL MEIKLE
+[TRASH1G]
+~r~È troppo difficile per te? Sei immondizia!
-[CRD056A]
-GEORGE WILLIAMSON
+[TRASH1H]
+~r~Tempo scaduto!
-[CRD056B]
-MATT JONES
+[TRASH1J]
+~r~Ti sei allontanato troppo dal tuo percorso!
-[CRD056C]
-ROB HARBOUR
+[TRASH1K]
+~w~Recupera i ~g~bidoni!
-[CRD056D]
-TOM WHITTAKER
+[TRASH1L]
+~w~Torna alla ~y~discarica!
-[CRED057]
-CAPO SUPPORTO TECNICO
+[TRASH1M]
+~w~Immondizia recuperata! +~1~ secondi
-[CRED058]
-LORRAINE ROY
+[PCJINFO]
+~w~Passa tutti i 25 ~y~checkpoint~w~ entro ~1~ secondi.
-[CRD057A]
-SUPPORTO TECNICO
+[PCJFAIL]
+~r~Non sei riuscito a battere il tempo di ~1~ secondi!
-[CRED059]
-CHRISTINE CHALMERS
+[PCJPROM]
+~w~Hai ~1~ secondi per tornare sulla ~b~moto!
-[CRD060A]
-SUPPORTO UFFICIO
+[PCJPRO1]
+~w~Hai ~1~ secondo per tornare sulla ~b~moto!
-[CRD060B]
-KIM GURNEY
+[PCJDEST]
+~r~Moto distrutta!
-[CRD060C]
-CASSIE OLIVER
+[PCJRET]
+~r~Non sei riuscito a tornare alla moto.
-[CRED060]
-ROCKSTAR NEW YORK
+[PCJTIME]
+~r~Il tempo è scaduto!
-[CRED061]
-PRODUTTORE ESECUTIVO
+[PCJCHEC]
+~w~Checkpoint ~1~ di ~1~
-[CRED062]
-SAM HOUSER
+[TRRACE1]
+~w~Ottieni del tempo supplementare per ogni checkpoint superato...
-[CRED063]
-PRODUTTORE
+[TRRACE3]
+~w~Hai finito risparmiando ~1~ secondi!
-[CRED064]
-DAN HOUSER
+[TRRACE4]
+~w~Hai raggiunto per primo ~1~ checkpoint su ~1~.
-[CRED065]
-VP DI SVILUPPO
+[TRRACE5]
+~w~Hai guadagnato ~1~$!
-[CRED066]
-JAMIE KING
+[TRRACE6]
+~w~OTTIMO! Sei arrivato primo a tutti i checkpoint! Ottieni un bonus di 1.000$!
-[CRED067]
-CAPO RESPONSABILE TECNOLOGICO
+[TRRACE7]
+~r~Hai abbandonato la pista!
-[CRED068]
-GARY J. FOREMAN
+[TRRACE8]
+~r~La tua moto è stata distrutta!
-[CRED069]
-PRODUTTORE ASSOCIATO
+[TRRACE9]
+~r~Non sei riuscito a tornare alla moto in tempo!
-[CRED070]
-JEREMY POPE
+[TRRAC10]
+~r~Hai perso la tua moto!
-[CRD071A]
-DIRETTORE DEL CQ
+[TRRAC11]
+~r~Il tempo è scaduto!
-[CRD072A]
-JEFF ROSA
+[ANG]
+Avenging Angels
-[CRED071]
-SUPERVISORE MUSICA
+[ANG_1]
+~w~Ehi amico! Vogliamo ripulire questa città dal crimine!
-[CRED072]
-TERRY DONOVAN
+[ANG_2A]
+Premi~h~ ~k~ ~TGSUB~ ~w~per unirti agli Avenging Angels.
-[CRED073]
-SQUADRA DI PRODUZIONE
+[ANG_3]
+~w~Io e te potremmo fare nostra questa città. Ma, ehm... meglio comunque chiedere un po' d'aiuto.
-[CRED074]
-TERRY DONOVAN
+[ANG_3A]
+~w~Fermati vicino ad altri Avenging Angels per farli unire alla tua gang.
-[CRED075]
-JENNIFER KOLBE
+[ANG_4]
+~w~Yo! Mi sono messo questa divisa per spaccare un po' di ossa. Andiamo!
-[CRED076]
-JENEFER GROSS
+[ANG_5]
+~w~Conta su di me...
-[CRED077]
-LAURA PATERSON
+[ANG_6]
+~w~Bruciamo un po' di feccia!
-[CRED078]
-JEFF CASTANEDA
+[ANG_7]
+~w~Pestare è il massimo!
-[CRED079]
-JERONIMO BARRERA
+[ANG_7A]
+~w~Sei contento?
-[CRED080]
-CARLY SLATER
+[ANG_7B]
+~w~Non abbiamo bisogno di bulli per le nostre strade!
-[CRED081]
-JUNG KWAK
+[ANG_7C]
+~w~Non nel mio quartiere!
-[CRED082]
-BRIAN WOOD
+[ANG_7D]
+~w~È ora di contrattaccare!
-[CRED083]
-RENAUD SEBANNE
+[ANG_7E]
+~w~In questa città noi siamo la legge!
-[CRED084]
-RICHARD KRUGER
+[ANG_8]
+Tempo rimasto
-[CRD084A]
-DANIEL EINZIG
+[ANG_9]
+~w~Tempo prolungato!
-[CRD084B]
-JACEN BURROWS
+[ANG_10]
+~r~Il tempo è scaduto!
-[CRD084C]
-LINN PR
+[ANG_11]
+~w~C'è della gente 'sgradita' nei paraggi... diamo loro una lezione.
-[CRD084D]
-GRAFICA DI COPERTINA
+[ANG_12]
+~w~Una folla scatenata ha invaso le strade. Riportiamo l'ordine!
-[CRD084E]
-STEPHEN BLISS
+[ANG_13]
+~w~Questa città sta andando a rotoli. La gente crede di poter manifestare liberamente? Gliela faremo vedere!
-[CRED085]
-KENT PAUL'S 80 NOSTALGIA ZONE
+[ANG_13A]
+~w~Abbiamo avvistato una gang pericolosa che opprime la gente nelle strade....
-[CRED086]
-COMPOSTA DA DAN HOUSER
+[ANG_14]
+~w~È stato segnalato un altro crimine... Andiamo!
-[CRD086A]
-PRODOTTA DA ADAM TEDMAN
+[ANG_16]
+~w~Sono state avvistate alcune persone parcheggiare irregolarmente. ANDIAMO!
-[CRED087]
-WWW.KENTPAUL.COM E WWW.VICECITY.COM
+[ANG_16A]
+~w~Ci sono dei buoni a nulla che bighellonano in giro. È ora di fare un po' di pulizia.
-[CRED088]
-CREATO DA
+[ANG_OBJ]
+~w~Fai fuori quella fastidiosa ~r~gang.
-[CRD088A]
-ADAM TEDMAN
+[ANG_17]
+~w~Ben fatto amico! Grazie a te, questo quartiere è stato ripulito dal crimine. Per il momento...
-[CRD088B]
-DAVID YU
+[ANG_18]
+~w~Se la stanno svignando!
-[CRD088C]
-JERRY LUNA
+[ANG_19]
+~w~Cerca degli Avenging Angels e fermati vicino a loro per portarli in missione.
-[CRD088D]
-STUART PETRI
+[ANG_20]
+~w~Stanno scappando!
-[CRD088E]
-MICHAEL CARNEVALE
+[ANG_21]
+~w~Non lasciamoli fuggire!
-[CRD088F]
-GREG LAU
+[VIC1]
+Casa dolce casa
-[CRD088G]
-FUTABA HAYASHI
+[VIC2]
+Il pigro
-[CRED089]
-RESPONSABILE CQ
+[VIC3]
+Vendetta spacciatrice
-[CRED090]
-CRAIG ARBUTHNOTT
+[VIC4]
+Snuff
-[CRED091]
-CAPO ANALISTA
+[VIC5]
+Chi rompe paga
-[CRED092]
-ADAM DAVIDSON
+[VIC6]
+Chiavi in mano
-[CRD092A]
-JOE HOWELL
+[VIC7]
+Non aprite quel porto
-[CRD092B]
-MARC FERNANDEZ
+[MAR1]
+Shopping asfissiante
-[CRED093]
-ANALISTA DI GIOCO
+[MAR2]
+Portata a spasso
-[CRED094]
-RICHARD HUIE
+[MAR3]
+Un premio corposo
-[CRED095]
-SQUADRA TESTING ROCKSTAR
+[MAR4]
+Biker in calore
-[CRED096]
-LANCE WILLIAMS
+[MAR5]
+Overdose di problemi
-[CRED097]
-JOE GREENE
+[SAL1]
+L'offerta
-[CRED098]
-BRIAN PLANER
+[SAL2]
+Puttan tour!
-[CRD098A]
-ELIZABETH SATTERWHITE
+[SAL3]
+Strizza
-[CRD098B]
-JAMEEL VEGA
+[SAL4]
+Montagne russe
-[CRD098C]
-MIKE HONG
+[SAL5]
+Contrabbando
-[CRED099]
-LEE CUMMINGS
+[SAL6]
+Sabotaggio Sindacco
-[CRED100]
-SCENEGGIATURA
+[SAL7]
+Problema di Triade
-[CRED101]
-JAMES WORRALL
+[SAL8]
+A spasso con Leone
-[CRED102]
-DAN HOUSER
+[JDT1]
+Il puttaniere
-[CRED103]
-ADAM TEDMAN
+[JDT2]
+Amici in 5 minuti
-[CRED104]
-PAUL YEATES
+[JDT3]
+Una situazione esplosiva
-[CRED105]
-JENEFER GROSS
+[JDT4]
+Bambole a scoppio
-[CRED106]
-LAURA PATERSON
+[JDT5]
+Il salvatore di Salvatore
-[CRED107]
-SEQUENZE ANIMATE
+[JDT6]
+I cannoni di Leone
-[CRED108]
-SCRITTE DA DAN HOUSER E JAMES WORRALL
+[JDT7]
+La calma prima della tempesta
-[CRED109]
-DIREZIONE AUDIO DI DAN HOUSER E NAVID KHONSARI
+[JDT8]
+Uomo d'onore
-[CRED110]
-PRODOTTE DA JAMIE KING
+[MAC1]
+Moda bimbo
-[CRD110A]
-RICERCA TALENTI: JAMIE KING, SEAN MACALUSO
+[MAC2]
+Grosso casino a Chinatown
-[CRED111]
-CAST
+[MAC3]
+Grease Sucho
-[CRD111A]
-PERSONAGGI PRINCIPALI
+[MAC4]
+Carne morta
-[CRED112]
-TOMMY VERCETTI - RAY LIOTTA
+[MAC4_0]
+Casa
-[CRED113]
-KEN ROSENBERG - WILLIAN FICHTNER
+[MAC5]
+Figlio di nessuno
-[CRED114]
-SONNY FORELLI - TOM SIZEMORE
+[SALH1]
+Giustizia tosta
-[CRED115]
-STEVE SCOTT - DENNIS HOPPER
+[SALH2]
+La morte chiama
-[CRED116]
-AVERY CARRINGTON - BURT REYNOLDS
+[SALH3]
+Shogun Showdown
-[CRED117]
-RICARDO DIAZ - LUIS GUZMAN
+[SALH4]
+Un giorno da Leone
-[CRED118]
-LANCE VANCE - PHILIP MICHAEL THOMAS
+[SALH4_V]
+~r~v1,1
-[CRED119]
-COLONNELLO JUAN CORTEZ - ROBERT DAVI
+[SALH5]
+Scacco siculo
-[CRED120]
-UMBERTO ROBINA - DANNY TREJO
+[SALH5_V]
+~r~v1,1
-[CRED121]
-PHIL CASSIDY - GARY BUSEY
+[DONH1]
+Arraffa l'arraffatore
-[CRED122]
-MITCH BAKER - LEE MAJORS
+[DONH2]
+Ferma la stampa
-[CRED123]
-MERCEDES CORTEZ - FAIRUZA BALK
+[DONH3]
+Il festino cadaverico si rianima
-[CRED124]
-KENT PAUL - DANNY DYER
+[DONH4]
+Un'offerta bomba
-[CRED125]
-JEZZ TORRENT - KEVIN MCKIDD
+[DONH5]
+Disturbo della quiete pubblica
-[CRED126]
-CENTRALINISTA TAXI - DEBORAH HARRY
+[DONH6]
+Love fuggiasco
-[CRED127]
-CANDY SUXX - JENNA JAMESON
+[TOSH1]
+Il sesso debole
-[CRED128]
-BJ SMITH - LAWRENCE TAYLOR
+[TOSH2]
+Scotto col botto
-[CRED129]
-AUNTIE POULET - YOUREE CLEOMILI HARRIS
+[TOSH2F0]
+~r~Un furgone ha raggiunto il covo della Yakuza!
-[CRED130]
-SPACCIATORE - ARMANDO RIESCO
+[TOSH2F1]
+~r~Il convoglio ha raggiunto il covo dalla Yakuza!
-[CRED131]
-COUGAR - BLAYNE PERRY
+[TOSH2F2]
+~r~Non hai distrutto i portavalori!
-[CRED132]
-HILARY - CHARLES TUCKER
+[TOSH2M0]
+~w~Fuori uno!
-[CRED133]
-DEPUTATO ALEX SHRUB - CHRIS LUCAS
+[TOSH2M1]
+~w~Fuori un altro!
-[CRED134]
-VECCHIO KELLY - GEORGE DICENZO
+[TOSH3]
+La morte all'opera
-[CRD134A]
-CAM JONES - GREG SIMS
+[TOSH4]
+Kazuki dorme con le fishes
-[CRD134B]
-PSICOPATICO - HUNTER PLATIN
+[PO_MOB1]
+~w~Toni? Sono la mamma!
-[CRD134C]
-MAUDE, LA SIGNORA DEI GELATI - JANE GENNARO
+[POMOB1A]
+~w~Da quanto tempo sei tornato in città?
-[CRD134D]
-JETHRO - JOHN ZURHELLEN
+[POMOB1B]
+~w~Perché non sei ancora venuto a trovarmi?
-[CRD134E]
-GONZALES - JORGE PUPO
+[POMOB1C]
+~w~Cos'hai che non va?
-[CRD134F]
-DWAYNE - NAVID KHONSARI
+[POMOB1D]
+~w~Sono tua madre, per l'amor di Dio! Forza!
-[CRD134G]
-DICK - PETER MCKAY
+[PO_MOB2]
+~w~Ciao Fido! Sono Maria.
-[CRD134H]
-MIKE & PORNOSTAR - ROBERT CIHRA
+[PO_MOB3]
+~w~Ehi Toni! Sono JD.
-[CRD134I]
-PERCY - RUSSELL FOREMAN
+[POMOB3A]
+~w~Ho sentito tutto, stai facendo grandi cose.
-[CRED135]
-MOTION CAPTURE
+[POMOB3B]
+~w~Spero solo che non ti dimenticherai del tuo vecchio amico JD quando arriverai in vetta. Vero?
-[CRED136]
-ANIMATO DA
+[POMOB4A]
+~w~Che cazzo vuoi?
-[CRD136A]
-DIREZIONE TECNICA DI ALEX HORTON
+[POMOB4B]
+~w~Qualcuno che vada a prenderti il bucato o che ti pulisca il culo?
-[CRED137]
-DIRETTO DA
+[POMOB4C]
+~w~Non fare così, ascolta. Mi dispiace per tutto...
-[CRD137A]
-DIRETTO DA NAVID KHONSARI
+[POMOB4F]
+~w~Una bella fetta di torta all'arsenico?
-[CRED138]
-PRODOTTO DA
+[POMOB4G]
+~w~Scordatelo.
-[CRD138A]
-PRODOTTO DA JAMIE KING
+[POMOB4I]
+~w~Salvatore l'ha saputo e mi ha detto che dobbiamo crescere entrambi.
-[CRD138B]
-RENAUD SEBBANE
+[POMOB4J]
+~w~Io sto facendo la mia parte, mi spiace... Dai...
-[CRED139]
-REGISTRATO PRESSO PERSPECTIVE STUDIOS, BROOKLYN
+[PO_MOB5]
+~w~Toni? Sono Salvatore.
-[CRED140]
-ATTORI MOTION CAPTURE
+[POMOB5A]
+~w~Siamo in guai grossi! Porta qui il tuo culo il più rapidamente possibile!
-[CRD140A]
-BLAYNE PERRY
+[PO_MOB6]
+~w~Anthony? Sono Salvatore.
-[CRD140B]
-JONATHON SALE
+[POMOB6A]
+~w~Hai visto Maria?
-[CRD140C]
-CHARLES TUCKER
+[ST_MOB8]
+~w~Pronto?
-[CRD140D]
-EDDIE MARRERO
+[STMOB8A]
+~w~Toni? Sono Sal.
-[CRD140E]
-WILLIAM MCCALL
+[STMOB8B]
+~w~Devo parlarti, ma non mi fido di questi cazzo di telefoni.
-[CRD140F]
-JORGE PUPO
+[STMOB8C]
+~w~Ti chiamerò dal telefono pubblico fuori dal palazzo di giustizia.
-[CRD140G]
-ROBERT JACKSON
+[ST_MOB1]
+~w~Toni. Sono Donald.
-[CRD140H]
-TARA RADCLIFFE
+[STMOB1A]
+~w~Ho delle questioni in sospeso che richiedono le tue... particolari abilità.
-[CRD140I]
-JENIFER GAMBETESE
+[STMOB1B]
+~w~Vieni nel mio ufficio appena puoi.
-[CRD140J]
-KRIS ACHEVARRIA
+[ST_MOB2]
+~w~Pronto?
-[CRD140K]
-ALI ORDOUBADI
+[STMOB2A]
+~w~Cipriani? Sono io, McAffrey.
-[CRD140L]
-KAHLEEM POOLE
+[STMOB2B]
+~w~Ho delle novità che Salvatore potrebbe gradire.
-[CRED141]
-DIALOGHI PEDONI
+[STMOB2C]
+~w~Vediamoci al solito posto.
-[CRD141A]
-SCRITTI DA DAN HOUSER, MARC FERNANDEZ, GILLIAN TELLING E NAVID KHONSARI
+[ST_MOB3]
+~w~Pronto?
-[CRD141B]
-CON L'AIUTO DI JEREMY POPE, LANCE WILLIAMS E JENNY JEMISON
+[STMOB3A]
+~w~Sono Sal.
-[CRED142]
-SCRITTI DA
+[STMOB3B]
+~w~Ascolta, i Forelli avevano in pugno il sindaco Hole.
-[CRD142A]
-DAN HOUSER E JAMES WORRALL
+[STMOB3D]
+~w~Conosco un pezzo grosso che farebbe qualsiasi cosa per una poltrona.
-[CRED143]
-DIRETTI DA DAN HOUSER, CRAIG CONNER, MARC FERNANDEZ E ALLAN WALKER
+[STMOB3E]
+~w~È uno stronzo fatto e finito, quindi qualificato per il ruolo in questione.
-[CRED144]
-PRODOTTI DA RENAUD SEBANNE
+[STMOB3F]
+~w~Gli ho detto che lo avresti aiutato a vincere le elezioni... per noi!
-[CRED145]
-PEDONI
+[ST_MOB4]
+~w~Pronto.
-[CRED146]
-ADAM DAVIDSON, ADAM WATKINS, ALEJANDRO K. BROWN, ALEX ANTHONY SIOUKAS, ALEX GARCIA,
+[STMOB4A]
+~w~Toni. Sono io, Sal.
-[CRED147]
-ALICE SALTZMAN, ALISON CIHRA, AMY SALIMA, AMY SALZMAN, ANDREA VIDELA, ANTHONY ATTI,
+[STMOB4B]
+~w~Sento puzza di merda dei Forelli dietro a tutto questo.
-[CRED148]
-ANTHONY RIVERA, BIJAN SHAMS, BLAYNE PERRY, BRETT BISOGNO, BREYE MATA, BRIAN PANEN,
+[STMOB4C]
+~w~Ciò che voglio sapere è perché hanno convinto il sindaco a mettermi braci bollenti sotto al culo.
-[CRED149]
-BROCK VODER, CAREY BERTINI, CHARISSE LAMBERT, CHRIS DIFAT, CHRIS REISENBERGER,
+[STMOB4D]
+~w~Ascolta, dobbiamo vederci al molo.
-[CRED150]
-CHRISTOPHER BRODAY, CHRISTOPHER CARRO, CYNTHIA GREENE, DAMARIES LOPEZ, DAN LEE,
+[STMOB4E]
+~w~Dobbiamo fare un po' di ricerche.
-[CRED151]
-DAN SCHNEIDER, DAN TOYAMA, DAVID DEAN CHALTFIELD, JR., DAVID HARRISON, DAVID WILEY,
+[ST_MOB5]
+~w~Pronto!
-[CRED152]
-DEBORAH COLLINS, DEBRANDA CHANEY-GILES, DEMETRA KOUKOULAS, DENISE ROSADO,
+[STMOB5B]
+~w~Dirigiti verso il telefono pubblico di Torrington.
-[CRED153]
-DEVIN BENNETT, DEVIN WINTERBOTTOM, DORIS WOO, DOUGLAS HARRISON, DUNCAN COUTTS,
+[STMOB5C]
+~w~Ti devo parlare
-[CRED154]
-DUPE AJAYI, EDWIN AVELLANEDA, ELIZABETH HOWELL, ELIZABETH SATTERWHITE, ERIC NAGLE,
+[STMOB5D]
+~w~Sulla strada, voglio che ti incontri con un mio socio ad Aspatria.
-[CRED155]
-ESTEBAN KARPLUS, F. FONT, FUTABA HAYASHI, GENE HILGREEN, GERALD COSGROVE,
+[STMOB5E]
+~w~Ci aiuterà ad aumentare la pressione sui Forelli e sui Sindacco.
-[CRED156]
-GERARD LUNA, GILLIAN TELLING, GREGG CARLUCCI, GREGORY CLERVOIX, GREGORY SCHWEIZER,
+[ST_MOB6]
+~w~Pronto?
-[CRED157]
-HADLEY TOMICKI, J. ROSSETT, JAMEEL VEGA, JASON JONES, JEFF ROSA, JENNIFER JEMISON,
+[STMOB6A]
+~w~Toni? Sono Sal.
-[CRED158]
-JEREMY TAGGERT, JESSICA RIDER, JOSEPH GREENE,JOSEPH HOWELL, KATE DUKICH,
+[STMOB6B]
+~w~Vai al telefono pubblico di Liberty Campus.
-[CRED159]
-KEL O'NEILL, KEVIN HOPKINS, LADAWN JAMES, LANCE WILLIAMS, LAURA BUBBLES,
+[STMOB6C]
+~w~È importante.
-[CRED160]
-LAURA PATTERSON, LEE CUMMINGS, LETICIA L. YOUNG, LINDSAY KENNEDY, LISA ORITZ,
+[ST_MOB7]
+~w~Pronto?
-[CRED161]
-LORNA JORDAN, LUCIO AMADIO, MARCO FERNANDEZ, MARIKO TANAKA, MARLON MATTHEWS,
+[STMOB7A]
+~w~Toni? Sal.
-[CRED162]
-MARY TELLING, MASAYOSHI MITSUYAMA, MATTHEW CHUNG, MAX ALLSTADT, MAX BOGDANOV,
+[STMOB7B]
+~w~Vai a Belleville e cerca il telefono pubblico.
-[CRED163]
-MELISSA ALVAREZ, MICHAEL MAY, MICHAEL ROTHSTEIN, MIGUEL VIDAL, MIKE FEDERLINE,
+[STMOB7C]
+~w~Ci sono delle faccende urgenti da sbrigare.
-[CRED164]
-NATALIE DESCALZO, N'GAI MEMBERS, NICOLAS MALLO, NOELLE SADLER, NORBERT MORIVAN,
+[ST_MOB9]
+~w~Toni Cipriani.
-[CRED165]
-OSWALD GREENE, JR., PETER MCKAY, PETER APPEL, PRESTON SAVARESE, RAFAEL GONZALES,
+[STMOB9A]
+~w~Toni? Sono la tua mamma!
-[CRED166]
-RANDY JOHNSON, REY CONCEPCION, RICHARD KROGER, ROB TIBBS, ROBERT JACKSON,
+[STMOB9B]
+~w~Ho sentito che sei diventato un piccolo boss!
-[CRED167]
-ROBERT SCHULER, ROSS A. MCINTYRE, RUSSELL FOREMAN, RUTH NUNEZ, SALVADORE SUAZO,
+[STMOB9C]
+~w~...non ho mai dubitato di te per un secondo, figliolo!
-[CRED168]
-SAM WHITE, SANTOS GONZALES, SCOTT SMITH, SEYMOUR FRAILMAN, SPELMAN BRAUMAN,
+[STMOB9D]
+~w~...e viste le circostanze,
-[CRED169]
-STEPHANIE TELLING, STEVE KNEZEVICH, STEVE ROBERT, SUMIKO YASUDA, SUSAN LEWIS,
+[STMOB9E]
+~w~ho deciso di ritirare la taglia che avevo messo su di te.
-[CRED170]
-SYLVIA COLACIOS, TOMOKO MIYAZAKI, TRON, VERDEL HALE, YVES MONDESIR, ZENO LEINFELDER,
+[STMOB9F]
+~w~Lasciamoci alle spalle questa faccenda.
-[CRED171]
-DAVID BEDDOES, CHRISTINE CHALMERS, BARRY CLARK, NEIL CORBETT, KIM GURNEY, NEIL MEIKLE,
+[STMOB9G]
+~w~Dopo tutto l'ho fatto per amore.
-[CRED172]
-CASSIE OLIVER, LORRAINE ROY, DAVID WATSON, KEVIN WONG, WILL MORTON
+[STMOB9H]
+~w~Ah, quale razza di figlio può spingere la propria madre fino a questo punto?
-[CRED175]
-ADAM DAVIDSON
+[STMOB9I]
+~w~Ci vediamo presto, non dimenticarti della tua vecchia mamma.
-[CRED176]
-LANCE WILLIAMS
+[STMO10]
+~w~Pronto?
-[CRED177]
-NEIL MCCAFFREY
+[STMO10A]
+~w~Ehi osso duro, sono McAffrey.
-[CRED178]
-LAURA PATERSON
+[STMO10B]
+~w~I federali hanno catturato il tuo capo, Salvatore.
-[CRED179]
-REY CONCEPCION
+[STMO10C]
+~w~E sono veramente incazzati neri.
-[CRED180]
-CHARLES HEROLD
+[STMO10D]
+~w~Gli daranno la responsabilità di qualunque crimine in questa città.
-[CRED181]
-ANDREW GREENWALD
+[STMO10E]
+~w~Per questo motivo, noi non ci siamo mai visti. Capito?
-[CRED182]
-JAMES MIELKE
+[SH_MOB1]
+~w~Toni...?
-[CRED183]
-PETER SUCIU
+[SHMOB1A]
+~w~Sal? È lei?
-[CRED184]
-ALEX ODULIO
+[SHMOB1B]
+~w~Chiudete la bocca! Sto parlando con il mio avvocato!
-[CRED185]
-DON NKRUMAH
+[SHMOB1C]
+~w~Toni? ...ehm, voglio dire ...Lionel?
-[CRED186]
-KENDALL PITTMAN
+[SHMOB1D]
+~w~Ascolta, mi hanno preso. Incredibile.
-[CRED187]
-SAL SUAZO
+[SHMOB1E]
+~w~Sono in un fiume di merda in piena e non ho una pagaia.
-[CRED188]
-EREK MATEO
+[SHMOB1F]
+~w~Perciò vieni subito qui, ci sono delle faccende che devi sbrigare.
-[CRED189]
-CHRIS DIFATE
+[SHMOB1G]
+~w~...Lionel?
-[CRED190]
-LEILA MILTON
+[SH_MOB2]
+~w~Pronto?
-[CRED191]
-DARREN ZOLTOWSKI
+[SHMOB2A]
+~w~Toni? Sono Donald.
-[CRED192]
-VIRGINIA SMITH
+[SHMOB2B]
+~w~No, aspetta, non agganciare!
-[CRED193]
-KEVIN CASSIN
+[SHMOB2C]
+~w~Ho una proposta molto eccitante da farti...
-[CRED194]
-JASON SHIGEMORI
+[SHMOB2D]
+~w~Passa a trovarmi alla mia attuale... um... residenza e ti spiegherò tutto.
-[CRED195]
-KELLY KINSELLA
+[SHMOB2E]
+~w~Toni...?
-[CRED196]
-MOLLIE STICKNEY
+[SHMOB2F]
+~w~Ti prego Toni, sii buono, ti sto chiamando con gli ultimi spicc...
-[CRED197]
-STANTON SARJEANT
+[SH_MOB3]
+~w~Parlo con il signor Cipriani?
-[CRED198]
-LAURA WALSH
+[SHMOB3A]
+~w~Chi è? Come ha fatto ad avere il mio numero?
-[CRED199]
-MARK GARONE
+[SHMOB3B]
+~w~Chi impiega saggiamente le proprie risorse, ottiene ciò che vuole.
-[CRED200]
-JOANNA SLY
+[SHMOB3C]
+~w~Non dovrei dirglielo io, signor Cipriani.
-[CRED201]
-ELIZABETH HOWELL
+[SHMOB3D]
+~w~Ho bisogno del suo aiuto per risolvere una faccenda delicata.
-[CRED202]
-ANA HERCULES
+[SHMOB3E]
+~w~Aiuto che le sarà retribuito lautamente.
-[CRED203]
-SHIRLEY IRICK
+[SHMOB3F]
+~w~Le spiegherò tutto quando raggiungerà il mio appartamento a Torrington.
-[CRED204]
-KASHONA FIELDS
+[SH_MOB4]
+~w~Toni! Sono Sal!
-[CRED205]
-JOEL M. LILJE
+[SHMOB4A]
+~w~Ce l'hai fatta! Non ci posso credere, ragazzo!
-[CRED206]
-JOHN DIBENEDETTO
+[SHMOB4B]
+~w~Ci siamo quasi!
-[CRED207]
-NANCY GILES
+[SHMOB4C]
+~w~Vieni a trovarmi, abbiamo alcune faccende in sospeso.
-[CRED208]
-RYAN CROY
+[SH_MOB5]
+~w~Toni? Donald.
-[CRED209]
-JENNIFER KOLBE
+[SHMOB5A]
+~w~Per gestire a nostro vantaggio l'affare Panlantic dobbiamo... uhm...
-[CRED210]
-LIAM BURKE
+[SHMOB5B]
+~w~come posso dirlo in maniera delicata...
-[CRED211]
-SIGRID PREISSL
+[SHMOB5C]
+~w~'ripulire' una piccola zona di Fort Staunton.
-[CRED212]
-ANITA FITZSIMONS
+[SHMOB5D]
+~w~Quando dici 'noi', vuoi dire 'io' vero?
-[CRED213]
-PHILIPPA RASELLI
+[SHMOB5E]
+~w~Toni, sono un libro aperto per te.
-[CRED214]
-WIL QUESNEL
+[SHMOB5F]
+~w~Vai a trovare 8-Ball. Sono certo che potrà fornirci il materiale necessario.
-[CRED215]
-FALKO BURKERT
+[SHMOB5G]
+~w~Sono certo che potrà fornirci il materiale necessario.
-[CRED216]
-SARA SEWELL
+[SH_MOB6]
+~w~Amico? Sono 8-Ball.
-[CRED217]
-STAZIONI RADIO E MUSICA
+[SHMOB6A]
+~w~Il materiale è pronto per la consegna.
-[CRED218]
-CONSULENZA MUSICALE
+[AHIT_H0]
+~w~Tutto qui, testa di cazzo?
-[CRD218A]
-HEINZ HENN
+[AHIT_H1]
+~w~Al diavolo! Quando si arrederanno questi coglioni?
-[CRD218B]
-STUART ROSS
+[AHIT_H2]
+~w~Baciami il culo, cazzone!
-[CRED219]
-COORDINATORE TRACCE AUDIO
+[AHIT_H3]
+~w~Ragazzi, mi state facendo incazzare!
-[CRED220]
-TERRY DONOVAN
+[AHIT_BI]
+~w~Risparmiati le battute! Uno dei killer di mamma è vicino!
-[CRED221]
-PRODUTTORI ROCKSTAR GAMES
+[AHIT_TA]
+~w~Tieni gli occhi aperti! Uno dei killer di mamma è vicino!
-[CRED222]
-DAN HOUSER E LAZLOW
+[AHIT_BU]
+~w~Attenzione! Uno dei killer di mamma sta venendo a prenderti!
-[CRED223]
-PRODUTTORE ROCKSTAR NORTH
+[AHIT_AM]
+~w~Attenzione! Uno dei sicari di mamma ti ha avvistato!
-[CRED224]
-CRAIG CONNER
+[AHIT_VA]
+~w~Stai in guardia! Uno dei sicari di mamma è in zona!
-[CRED225]
-ALLAN WALKER
+[AHIT_PO]
+~w~Occhi aperti! Uno dei killer di mamma sta arrivando per ucciderti!
-[CRED226]
-LAZLOW
+[AHIT_CA]
+~w~Attento! Uno dei sicari di mamma si sta avvicinando!
-[CRED227]
-DJ BANTER E IMAGING
+[K_TKT]
+Disfida alla discarica
-[CRED228]
-SCRITTO DA DAN HOUSER E LAZLOW
+[K_TK2]
+~w~Passa attraverso le mete per conquistare punti.
-[CRED229]
-FLASH FM
+[K_TK4]
+~w~Conquista il maggior numero di punti prima che scada il tempo!
-[CRD229A]
-TONI-MARIA CHAMBERS
+[K_CD]
+~w~Hai ~1~ secondi per tornare sulla tua ~b~moto!
-[CRD229B]
-VOCE E PRODUZIONE IMAGING - JEFF BERLIN
+[K_TKP1]
+~w~1 punto!
-[CRED230]
-UN RINGRAZIAMENTO SPECIALE A
+[K_TKP2]
+~w~2 punti!
-[CRED231]
-TOMMY MOTTOLA,
+[K_TKP3]
+~W~3 punti!
-[CRED232]
-MICHELLE ANTHONY,
+[K_SC]
+Punti
-[CRED233]
-STEVE BARNETT,
+[K_SCX]
+~w~Hai realizzato ~1~ punti!
-[CRED234]
-CHUCK FLECKENSTEIN,
+[K_SCX1]
+~w~Hai realizzato 1 punto!
-[CRED235]
-RITA LIBERATOR
+[K_HSC1]
+~w~Nuovo record di ~1~ punti!
-[CRED236]
-MARTIN & CLAIRE LOGAN
+[K_HSC2]
+~r~Non sei riuscito a battere il record di ~1~ punti.
-[CRED237]
-SANDRA HUTTON
+[KRUSH]
+Adesso guadagnerai il quadruplo dei soldi usando il demolitore!
-[CRED238]
-CHRISTINE DAVIDSON
+[KRUSH2]
+Adesso guadagnerai l'ottuplo dei soldi usando il demolitore!
-[CRED239]
-ALAN, RED & BIGFOOT
+[TURFAIL]
+~r~LAVORO COMPLETATO!
-[CRED240]
-LE T
+[TKR1]
+9mm di macello
-[CRED241]
-COLIN DONALD
+[TKR2]
+Motorino sparacchino
-[CRED242]
-KERRY STALLWOOD
+[TCKILL]
+Uccisioni
-[CRED243]
-ALAN MCGREGOR
+[TCHEAL]
+Danni
-[CRED244]
-CHRIS MORTON
+[TC2_1]
+~r~Hai ucciso il tuo autista!
-[CRED245]
-EMIL BUSSE
+[TC2_2]
+~r~Veicolo distrutto!
-[CRED246]
-EMILY BAILLIE
+[TC2_3]
+~r~Tempo scaduto!
-[CRED247]
-KEVIN ARCHIBALD
+[TC_T_E]
+~w~Bersaglio eliminato! ~1~$
-[CRED248]
-MORAG KERR
+[TUP_BR]
+~w~Elimina più ~r~bersagli ~w~ possibili entro il tempo limite.
-[CRED249]
-CATH WALKER
+[TUP_BR2]
+~w~Elimina più di ~1~ ~r~bersagli ~w~per ottenere un nuovo record!
-[CRED250]
-ISO BAR
+[TUP_AD]
+~w~Hai 3 pillole di adrenalina, premi il tasto R1 per usarne una.
-[CRED251]
-WATERLINE
+[TUPSC1]
+~w~Nuovo record di ~1~ uccisioni!
-[CRED252]
-NEWS CAFE
+[TUPSC2]
+~r~Non sei riuscito a battere il record di ~1~ uccisioni.
-[CRD251A]
-THE POND
+[MPWCS1]
+The Wedding List
-[CRD252A]
-PIVO
+[MPWCS2]
+Ehi, dove sei stato?
-[CRED253]
-BUDGET VIDEO RENTALS
+[MPWCS3]
+Ascolta, mio figlio Joey sta per sposarsi!
-[CRED254]
-LORNA'S SCOOTER
+[MPWCS4]
+Gli ho trovato una ragazza davvero di classe, proprio come la mia Maria... non vedo l'ora di vederli assieme!
-[CRED255]
-GARETH MURFIN
+[MPWCS5]
+Però non voglio che lei lo veda alla guida di uno di quei catorci che ripara nella sua officina.
-[CRED256]
-GRAFICA ADDIZIONALE
+[MPWCS6]
+Perciò dovrai cercare un veicolo degno per l'occasione.
-[CRED257]
-TONY PORTER
+[MPWCS7]
+Mi assicurerò che valga il tuo tempo.
-[CRED258]
-CRAIG MOORE
+[MPTCS1]
+TANKS FOR THE MEMORIES
-[CRED259]
-SINCRONIZZAZIONE LABIALE SEQUENZE
+[MPTCS2]
+Sono Sal. Ho bisogno di creare un diversivo e tu mi darai una mano.
-[CRED260]
-COSGROVE HALL FILMS
+[MPTCS3]
+C'è un carro armato parcheggiato in città. Semina il caos, non fare complimenti!
-[CRED261]
-PRODUTTORE - OWEN BALLHATCHET
+[MPTCS4]
+Voglio che la gente creda di aver pisciato per sbaglio sulla tomba di Patton.
-[CRED262]
-ANIMATORE SENIOR- JON TURNER
+[MPTCS5]
+Ascolta, questo diversivo è molto importante, perciò ci saranno altre persone che tenteranno di partecipare.
-[CRED263]
-ANIMATORI - RICHARD DRUMM
+[MPTCS6]
+... E pagherò solamente quello che starà alla guida più tempo degli altri.
-[CRED264]
-DAVE BROWN
+[MPRCS1]
+Street Rage
-[CRED265]
-MAIR THOMAS
+[MPRCS2]
+Sono Salvatore Leone! Il vostro benefattore pubblico.
-[CRED266]
-PRASHANT PATEL
+[MPRCS3]
+...non date retta a quello che dice il ministero della giustizia!
-[CRED267]
-CONSULENTE TECNOLOGICO AUDIO
+[MPRCS4]
+Sono amico di Liberty City, sono buono e generoso. Ecco perché ho sponsorizzato la gara odierna.
-[CRED268]
-RIK EDE DI GAMESOUND LTD.
+[MPRCS5]
+Quanto mi costerà questa stronzata?
-[CRED269]
-SUPPORTO INTEGRAZIONE DTS
+[MPRCS6]
+COSA? Portami al pronto soccorso, sento un dolore al petto!
-[CRED270]
-TED LAVERTY DI DTS
+[MPHPCS2]
+Sono Sal... i federali stanno controllando il mio telefono perciò devo stare attento.
-[CRED271]
-CHRIS GREER DI DTS
+[MPHPCS3]
+Ci sono una valigetta piena di bigliettoni da 100 e un elenco di nomi sotto al telefono. Indovina di cosa ho bisogno...
-[CRED272]
-JASON PAGE DI DTS
+[MPHPCS4]
+...Aspetta! Non voglio dividere i soldi con questi stronzi.
-[CRED273]
-RICERCA E ANALISI
+[MPHPCS5]
+Sai cosa fare... salda il conto.
-[CRED274]
-VROCK
+[MPHPCS6]
+Aspetta, non volevo dire 'salda il tuo di conto'... intendevo... uhm...
-[CRED275]
-DJ: LAZLOW COME SE STESSO
+[MPHPCS7]
+Ascolta, uccidi tutti gli stronzi sull'elenco e basta!
-[CRED276]
-VOCE IMAGING - JOE KELLY
+[DEB0]
+DEBUG 0
-[CRED277]
-PRODUZIONE IMAGING - JONATHAN HANST
+[DEB1]
+DEBUG 1
-[CRED278]
-WAVE 103
+[DEB2]
+DEBUG 2
-[CRED279]
-DJ: ADAM FIRST - JAMIE CANFIELD
+[DEB3]
+DEBUG 3
-[CRED280]
-VOCE IMAGING - JEN SWEENEY
+[DEB4]
+DEBUG 4
-[CRED281]
-PRODUZIONE IMAGING - JONATHAN HANST
+[NUM0]
+DEBUG 0 (~1~)
-[CRED282]
-FEVER 105
+[NUM1]
+DEBUG 1 (~1~)
-[CRED283]
-DJ: OLIVER 'LADYKILLER' BISCUIT - JULIUS DYSON
+[NUM2]
+DEBUG 2 (~1~)
-[CRED284]
-VOCE IMAGING MASCHILE - ED MCMANN
+[NUM3]
+DEBUG 3 (~1~)
-[CRED285]
-VOCE IMAGING FEMMINILE - SHAWNEE SMITH
+[NUM4]
+DEBUG 4 (~1~)
-[CRED286]
-PRODUZIONE IMAGING - LISTEN KITCHEN
+[CARS]
+'Venditore di macchine'
-[CRED287]
-EMOTION 98.3
+[BIKE]
+'Venditore di moto'
-[CRED288]
-DJ: FERNANDO - FRANK CHAVEZ
+[RACE_0]
+Posizione
-[CRED289]
-VOCE IMAGING - JEN SWEENEY
+[RACE_FL]
+~w~GIRO FINALE
-[CRED290]
-PRODUZIONE IMAGING - JONATHAN HANST
+[RACE_X0]
+~w~Recupera una macchina e vai alla ~y~partenza!
-[CRED291]
-RADIO ESPANTOSO
+[RACE_X1]
+~w~Recupera una moto e vai alla ~y~partenza!
-[CRED292]
-DJ: PEPE - TONY CHILRODES
+[RACE_X2]
+~w~Hai bisogno di una macchina per correre questa gara!
-[CRED293]
-WILDSTYLE
+[RACE_X3]
+~w~Hai bisogno di una moto per correre questa gara!
-[CRED294]
-DJ: MISTER MAGIC COME SE STESSO
+[RACE_X4]
+~w~Hai ~1~ secondi per trovare una macchina.
-[CRED295]
-VOCE IMAGING - FRANK SILVESTRO
+[RACE_X5]
+~w~Hai ~1~ secondi per trovare una moto.
-[CRED296]
-PRODUZIONE IMAGING - LAZLOW
+[RACE_X6]
+~w~Hai 1 secondo per trovare una macchina.
-[CRED297]
-KCHAT
+[RACE_X7]
+~w~Hai 1 secondo per trovare una moto.
-[CRED298]
-SCRITTA DA DAN HOUSER E LAZLOW
+[RACE_T0]
+~r~Non sei arrivato primo!
-[CRED299]
-PRODOTTA E MIXATA DA LAZLOW
+[RACE_T1]
+~r~Sei stato squalificato per aver lasciato la tua macchina.
-[CRED300]
-DJ AMY SHECKENHAUSEN - LEYNA WEBER
+[RACE_T2]
+~r~Uno dei rivali è morto, la gara è stata annullata!
-[CRED301]
-JEZ TORRENT - KEVIN MCKIDD
+[RACE_T3]
+~r~Sei stato squalificato per aver lasciato la tua moto.
-[CRED302]
-MANDY - COLLEEN CORBETT
+[RACE_Y3]
+~w~3...
-[CRED303]
-MICHELLE CARAPADIS - MARY BIRDSONG
+[RACE_Y2]
+~w~2...
-[CRED304]
-MR.ZOO - CARL DOWLING
+[RACE_Y1]
+~w~1...
-[CRED305]
-GETHSEMANEE - LYNN LIPTON
+[RACE_Y]
+~w~VIA!
-[CRED306]
-CLAUDE MAGINOT - JOHN MAUCERI
+[RACE_Z1]
+~w~1° POSTO!
-[CRED307]
-BJ SMITH - LAWRENCE TAYLOR
+[RACE_Z2]
+~w~2° POSTO!
-[CRED308]
-THOR - FRANK FAVA
+[RACE_Z3]
+~w~3° POSTO!
-[CRED309]
-VOCI PUBBLICITÀ
+[RACE_Z4]
+~w~ULTIMO POSTO!
-[CRED310]
-COUZIN ED, JOSH CLARK, JASON BUHRMESTER, JUAN ALLER, WAYNE OLIVER, SUSAN LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN, DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP, KEITH BROADAS
+[RACE_R1]
+~w~RECORD: ~1~:~1~~1~ NUOVO RECORD!
-[CRED311]
-LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN,
+[RACE_R2]
+~w~NUOVO RECORD!
-[CRED312]
-DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP,
+[RACE_S0]
+~w~TEMPO: ~1~:~1~~1~
-[CRED313]
-KEITH BROADAS
+[RACE_S1]
+~w~MIGLIOR GIRO: ~1~:~1~~1~
-[CRED314]
-VCPR
+[RAC1]
+Rombi assettati
-[CRED315]
-SCRITTO DA DAN HOUSER E LAZLOW
+[RAC2]
+Deimos-tri da sballo
-[CRED316]
-PRODOTTO DA LAZLOW
+[RAC3]
+Wi-Cheetah 210 e lode
-[CRED317]
-MAURICE CHAVEZ - PHILLIP ANTHONY RODRIGUEZ
+[BIK1]
+Incontro a Red Light
-[CRED318]
-JONATHAN FREELOADER - PATRICK OLSEN
+[BIK2]
+Torrington TT
-[CRED319]
-MICHELLE MONTANIUS - KELLY GUEST
+[BIK3]
+GP delle cosche
-[CRED320]
-DEP. ALEX SHRUB - CHRIS LUCAS
+[TT1]
+'Fossi & Ridossi'
-[CRED321]
-CALLUM CRAYSHAW - SEAN MODICA
+[TT1_A1]
+~w~< PERCORSO ~1~ >
-[CRED322]
-JOHN F. HICKORY - LJ GANSEN
+[TT1_B1]
+~w~Obiettivo del percorso: ~1~:~1~
-[CRED323]
-PASTOR RICHARDS - DAVID GREEN
+[TT1_B1A]
+~w~Obiettivo del percorso: ~1~:0~1~
-[CRED324]
-JAN BROWN - MAUREEN SILLIMAN
+[TT1_B2]
+~w~Miglior tempo del percorso: ~1~:~1~
-[CRED325]
-BARRY STARK - RENAUD SEBBANE
+[TT1_B2A]
+~w~Miglior tempo del percorso: ~1~:0~1~
-[CRED326]
-JENNY LOUISE CRAB - MARY BIRDSONG
+[TT1_B3]
+~w~Miglior tempo del giro: ~1~:~1~
-[CRED327]
-KONSTANTINOS SMITH - KONSTANTINOS.COM
+[TT1_B3A]
+~w~Miglior tempo del giro: ~1~:0~1~
-[CRED328]
-JEREMY ROBARD - PETER SILVESTRO
+[TT1_B4]
+~w~~1~:~1~
-[CRED329]
-PUBBLICITÀ RADIO
+[TT1_B4A]
+~w~~1~:0~1~
-[CRED330]
-SCRITTE DA DAN HOUSER E LAZLOW
+[TT1_B5]
+~w~Nuovo record del percorso! ~1~:~1~
-[CRED331]
-PRODOTTE DA LAZLOW
+[TT1_B5A]
+~w~Nuovo record del percorso! ~1~:0~1~
-[CRED332]
-JINGLE AGGIUNTIVI PRODOTTI DA CRAIG CONNER
+[TT1_L]
+~r~ Non disponibile.
-[CRED333]
-VOCI PUBBLICITÀ
+[A_PISTO]
+~w~< Pistola >
-[CRED334]
-ADAM DAVIDSON, ALEX ANTHONY, ALICE SALTZMAN, AMY SALZMAN, KATE DUKICH,
+[A_UZI]
+~w~< Mini-mitraglietta >
-[CRED335]
-ARAN RONICLE, BARB JONES, BEN KRECH, BRIAN THOMAS, BROCK YODER, CHRIS
+[A_AK]
+~w~< AK47 >
-[CRED336]
-FERRANTE, CRAIG CONNER, DAVE RYAN, DAVID GREEN, DORIS WOO, DOUGLAS
+[A_SNIPE]
+~w~< Fucile di precisione >
-[CRED337]
-HARRISON, ED MCMANN, FRANK CHAVEZ, FRANK FAVA, GENE HILGREEN, GREG
+[A_GRENA]
+~w~< Granate >
-[CRED338]
-SCHWEIZER, HUNTER PLATIN, JAMES FERRANTE, JEFF BERLIN, JEFF ROSA, JOE KELLY,
+[A_ARMOU]
+~w~< Giubbotto antiproiettile >
-[CRED339]
-JOHN MAUCERI, JOSH CLARK, JULIE WEMYSS, KEVIN STRALEY, KIM GURNEY, LANCE
+[A_ROCKE]
+~w~< Lanciarazzi >
-[CRED340]
-WILLIAMS, LAURA PATERSON, LAZLOW, LISA ORTIZ, LORNA JORDAN, LUCIEN JONES,
+[A_SHOTG]
+~w~< Fucile a pompa >
-[CRED341]
-MAUREEN SILLIMAN, MIKE FERRANTE JR., PETE GUSTIN, PETER SILVESTRO, RAFF
+[A_M4]
+~w~< M4 >
-[CRED342]
-CROLLA, RANDY JOHNSON, RICHARD KRUGER, RON REEVE, SHELLEY MILLER, SKY, TJ ALLARD
+[A_FLAME]
+~w~< Lanciafiamme >
-[CRD344A]
-AUDIO REGISTRATO PRESSO DIGITAL ARTS STUDIOS,
+[A_MINIG]
+~w~< Mitragliatore >
-[CRED344]
-NYC, TRACK 9 STUDIOS, NYC,
+[A_COST]
+~w~Costo: ~h~~1~$
-[CRED345]
-WEDDINGTON MULTIMEDIA, LOS ANGELES,
+[A_COST2]
+~w~Costo: ~h~~1~$ ~n~ ~r~Comprando quest'arma sostituirai quella in uso.
-[CRD345A]
-SYNC SOUND, NYC E RADIO LAZLOW, LONG ISLAND.
+[A_COST3]
+~w~Costo: ~h~~1~$ ~n~ ~r~Il tuo giubbotto antiproiettile è in buone condizioni.
-[CRED346]
-UN RINGRAZIAMENTO A AXEL ERICSON E WON LEE DI DIGITAL ARTS, PAUL VASQUEZ DI TRACK 9 STUDIOS, JOHN BOWEN E JOHN HASSLER DI SYNC SOUND
+[A_COST4]
+~w~Costo: ~h~~1~$ ~n~ ~r~Non puoi acquistare questo oggetto.
-[CRED347]
-MARK LLOYD
+[A_STOCK]
+~r~Scorte esaurite.
-[CRED348]
-TIM BATES
+[A_VIC4]
+~w~Normalmente una pistola costa 240$, ma questa l'ha pagata Vincenzo.
-[CRED349]
-KIT BROWN
+[A_DONS4]
+~w~Donald Love ha già pagato per questo.
-[CRED350]
-ANDY MASON
+[A_NEDS4]
+~w~Un tizio della chiesa ti ha prenotato uno di questi.
-[CRED351]
-PHIL DEANE
+[A_TALK1]
+~w~Ho tutte le armi da difesa domestica di cui hai bisogno.
-[CRED352]
-PHIL ALEXANDER
+[A_TALK2]
+~w~Vuoi anche una licenza?
-[CRED353]
-MATT HEWITT
+[A_TALK3]
+~w~Non devo vedere nessun documento, mi sembri una persona fidata.
-[CRED354]
-DENBY GRACE
+[A_TALK4]
+~w~Puoi provare il poligono di tiro sul retro, sei il benvenuto.
-[CRED355]
-ANTOINE CABROL
+[BENZ_GO]
+~w~Cambiati d'abito!
-[CRED356]
-JONOTHAN STONES
+[PIZ_B01]
+~w~Hai ~1~ secondo per tornare sul ~b~motorino delle pizze!
-[CRED357]
-MIKE BLACKBURN
+[PIZ_B02]
+~w~Hai ~1~ secondi per tornare sul ~b~motorino delle pizze!
-[CRED358]
-TIM MCGAFF
+[PIZ_F04]
+~r~Non sei riuscito a tornare al motorino delle pizze!
-[CINCAM]
-Camera mobile
+[NDL_B01]
+~w~Hai ~1~ secondo per tornare sul ~b~motorino dei noodle!
-[RC4]
-'LA FURIA DI RUMPO'
+[NDL_B02]
+~w~Hai ~1~ secondi per tornare sul ~b~motorino dei noodle!
-[LEGAL]
-~g~Elimina la minaccia criminale!
+[NDL_F04]
+~r~Non sei riuscito a tornare al motorino dei noodle!
-[GA_2]
-Motore nuovo e carrozzeria riverniciata. Gli sbirri non ti riconosceranno!
+[EXPO_D]
+~w~Ecco un premio: ~1~$! Completa l'elenco per un ottenere un bonus!
-[HELP15]
-Quando sei a piedi, premi il ~h~~k~~PED_LOOKBEHIND~~w~ per ~h~guardare indietro~w~. Usa la ~h~levetta analogica destra~w~ per ~h~guardarti attorno~w~.
+[PUPSPN]
+~w~POTENZIAMENTO DISPONIBILE!
-[FEC_LB4]
-Guarda indietro (tasto R3)
+[PUPMEGA]
+~y~SUPER DANNO!
-[PERPIC]
-Pacchetti speciali recuperati
+[PUPREGN]
+~y~AUMENTO DELLA SALUTE!
-[CO_ONE]
-Pacchetto speciale ~1~ su ~1~
+[PUPINVS]
+~y~INVISIBILITÀ!
-[GA_21]
-Non puoi parcheggiare altri veicoli in questo garage.
+[PUPFREZ]
+~y~FURIA!
-[CHEAT1]
-Trucco attivato
+[MPK]
+ha ucciso
-[CHEAT2]
-Trucco armi
+[MPKHEAD]
+con un colpo alla testa!
-[CHEAT3]
-Trucco salute
+[MPNEED]
+ha bisogno di
-[CHEAT4]
-Trucco armatura
+[MPNAME]
+Nome
-[CHEAT5]
-Trucco livello di sospetto
+[MPSCORE]
+Punteg.
-[CHEAT6]
-Trucco soldi
+[MPPING]
+Ping
-[CHEAT7]
-Trucco tempo atmosferico
+[MPCPS]
+Checkpoint
-[USJ_ALL]
-TUTTE LE ACROBAZIE UNICHE COMPLETATE
+[MPTIME]
+Tempo
-[JAN]
-Gen
+[MPBONUS]
+Bonus
-[FEB]
-Feb
+[MPQG]
+Abbandonare la partita?
-[MAR]
-Mar
+[MPQUIT]
+Esci
-[APR]
-Apr
+[MPCONT]
+Continua
-[MAY]
-Mag
+[MPHIGH]
+Tempo maggiore
-[JUN]
-Giu
+[MPBY]
+da
-[JUL]
-Lug
+[MPOVER]
+Fine partita
-[AUG]
-Ago
+[MPFIRST]
+è arrivato primo
-[SEP]
-Set
+[MPWITH]
+vince con $
-[OCT]
-Ott
+[MPHP05]
+~w~5 secondi al prossimo obiettivo.
-[NOV]
-Nov
+[MPHP04]
+~w~4 secondi al prossimo obiettivo.
-[DEC]
-Dic
+[MPHP03]
+~w~3 secondi al prossimo obiettivo.
-[DEFDT]
---:---:---- --:--:--
+[MPHP02]
+~w~2 secondi al prossimo obiettivo.
-[BONUS]
-~g~BONUS ~1~$
+[MPHP01]
+~w~1 secondo al prossimo obiettivo.
+
+[RCRANGE]
+~w~Fuori campo!
+
+[CAD5_AA]
+Sono Sal.
+
+[CAD5_AB]
+I Forelli mi hanno fatto incazzare! Devono pagare!
+
+[CAD5_AC]
+Recupera le loro macchine più prestigiose...
+
+[CAD5_AD]
+...e portale al parcheggio dei Sindacco, i loro principali competitori.
+
+[CAD5_AE]
+Assicurati che i Forelli non rubino le macchine dei Sindacco per rappresaglia.
+
+[CAD5_AF]
+'O capisti?
+
+[CAD4_AA]
+Sono io, Sal.
+
+[CAD4_AB]
+Devo un favore a Franco Forelli, e tu mi aiuterai a ripagarlo.
+
+[CAD4_AC]
+i Sindacco hanno delle macchine davvero eleganti nel loro parcheggio.
+
+[CAD4_AD]
+Voglio che tu le prenda e le porti al parcheggio dei Forelli.
+
+[CAD4_AE]
+Assicurati che non vengano rubate macchine dei Forelli mentre sei in azione.
+
+[CAD4_AF]
+Mi raccomando, niente cazzate.
+
+[MPC_000]
+Toni
+
+[MPC_001]
+'Lionel'
+
+[MPC_002]
+Cipriani
+
+[MPC_003]
+Chauffeur
+
+[MPC_004]
+13th
+
+[MPC_005]
+Toni the Tux
+
+[MPC_006]
+Fury
+
+[MPC_007]
+The King
+
+[MPC_008]
+Cocks
+
+[MPC_009]
+Streak
+
+[MPC_010]
+'T'
+
+[MPC_011]
+Dragon
+
+[MPC_012]
+JD
-[HORN1]
-Premi il ~h~~k~~VEHICLE_HORN~~w~ per attivare il ~h~clacson~w~.
+[MPC_013]
+The Gimp
-[HORN2]
-Premi il ~h~~k~~VEHICLE_HORN~~w~ per attivare il ~h~clacson~w~.
+[MPC_014]
+Avery
-[HORN3]
-Premi il ~h~~k~~VEHICLE_HORN~~w~ per attivare il ~h~clacson~w~.
+[MPC_015]
+Choc-Choc
+
+[MPC_016]
+8-Ball
+
+[MPC_017]
+Maria
+
+[MPC_018]
+'Hamfists'
+
+[MPC_021]
+No.1
+
+[MPC_023]
+Hung Lo
+
+[MPC_025]
+Yamazaki
+
+[MPC_031]
+Officer '69'
+
+[MPC_032]
+The Specialist
+
+[MPC_034]
+G.I. Jones
+
+[MPC_035]
+Sam
+
+[FEA_FM0]
+HEAD RADIO
+
+[FEA_FM1]
+DOUBLE CLEF FM
+
+[FEA_FM2]
+K-JAH
+
+[FEA_FM3]
+RISE FM
+
+[FEA_FM4]
+LIPS 106
+
+[FEA_FM5]
+RADIO DEL MUNDO
+
+[FEA_FM6]
+MSX 98
+
+[FEA_FM7]
+FLASHBACK FM
+
+[FEA_FM8]
+THE LIBERTY JAM
+
+[FEA_FM9]
+LCFR
+
+[MRACELA]
+Giro
+
+[DTB_01]
+~w~Difendi la tua base dagli attacchi avversari.
+
+[DTB_02]
+~w~Proteggi a tutti i costi le tue macchine.
+
+[CAD2_AB]
+~w~Buone nuove, i Forelli e i Sindacco sono nuovamente ai ferri corti.
+
+[CAD2_AC]
+~w~Entrambi vogliono il monopolio della vendita delle automobili a Liberty.
+
+[CAD2_AD]
+~w~Visto che abbiamo 'aiutato' i Forelli la settimana scorsa...
+
+[CAD2_AE]
+~w~...è giunta l'ora di bilanciare la situazione.
+
+[CAD2_AF]
+~w~Aiuta i Sindacco a ripulire il parcheggio dei Forelli.
+
+[POMOB6B]
+~w~Vedo quella cagna solamente quando ha bisogno di soldi!
+
+[POMOB2A]
+~w~Salvatore mi ha dato il tuo numero... beh, diciamo che l'ho trovato nella sua rubrica! Ma, vabbè!
+
+[POMOB2B]
+~w~Sei il suo nuovo tirapiedi, vero? Beh, voglio andare un po' a spasso.
+
+[POMOB2C]
+~w~Ti aspetto quanto prima.
+
+[GS_RGUN]
+INIZIA CON ARMI:
+
+[TUSHTK]
+Angelo ingiustificato
+
+[SC_WICH]
+Punteggio max 'Angelo ingiustificato'
+
+[NE_WIFI]
+Errore di rete. L'interruttore WLAN è spento. Accendi l'interruttore WLAN per affrontare partite multigiocatore.
+
+[BNDRAC0]
+RC allo sbando
+
+[BNDRAC1]
+RC allo scozzo
+
+[BNDRAC2]
+RC all'inseguimento
+
+[GS_G1]
+LIBERTY CITY SURVIVOR
+
+[GS_G2]
+STREET RAGE
+
+[GS_G3]
+PROTECTION RACKET
+
+[GS_G4]
+GET STRETCH
+
+[GS_G5]
+TANKS FOR THE MEMORIES
+
+[GS_G6]
+THE HIT LIST
+
+[GS_G7]
+THE WEDDING LIST
+
+[TRCR1]
+~w~1...
+
+[TRCR2]
+~w~2...
+
+[TRCR3]
+~w~3...
+
+[TRCRGO]
+~w~VIA!
+
+[GA_16]
+~w~La riverniciatura è in omaggio.
+
+[NEW_TAX]
+~w~Missioni Tassista completate! È stato consegnato un nuovo modello ai taxi Mean Street di Trenton!
+
+[EXPO_2]
+~w~Se fornirai loro in buone condizioni i veicoli dei quali hanno bisogno, verrai ben ricompensato.
+
+[FEMP_NC]
+Connessione di rete in corso... Attendere...
+
+[C1TGSUB]
+tasto R3
+
+[C2TGSUB]
+tasto R3
+
+[C3TGSUB]
+~S~
+
+[C2VEHN]
+tasto R1
+
+[C2VECRS]
+tasto L3
+
+[C3VECRS]
+~O~
+
+[C2PDCWE]
+tasto L2 e tasto R2
+
+[C3PDCWE]
+tasto L2 e tasto R2
+
+[BENZ_LA]
+~w~La ~h~divisa da avvocato~w~ è disponibile al rifugio.
+
+[BENZ_TR]
+~w~Gli ~h~abiti casual~w~ sono disponibili al rifugio.
+
+[SLH1_OU]
+~w~Hai bisogno di un ~h~abito da avvocato~w~ per poter visitare Sal.
+
+[SLH1_OR]
+~w~Devi vestirti da avvocato per incontrare Sal.
+
+[L_TRN_1]
+~w~Puoi usare la ~h~sopraelevata~w~ per muoverti a Portland. Premi~h~ ~k~ ~VEEE~ ~w~per entrare o uscire dal treno.
+
+[HELP2]
+~w~Premi~h~ ~k~ ~PDSPR~ ~w~mentre stai correndo per compiere ~h~uno scatto.
+
+[STMOB5A]
+~w~Toni, Sal.
+
+[SCH_TK7]
+~r~Hai abbandonato la discarica.
+
+[STMOB3C]
+~w~Ma dobbiamo prendere noi il controllo del municipio.
+
+[SALH3A]
+~w~Recupera un mezzo di trasposto per Donald.
+
+[MPCASH]
+Soldi
+
+[MPCARS]
+Auto
+
+[CRUSHED]
+Valore rottamazione ~1~$
+
+[BENZ_BO]
+~w~Recupera un cambio di ~h~biancheria~w~ dal rifugio.
+
+[BENZ_EL]
+~w~L'~h~abito 'The King'~w~ è disponibile al rifugio.
+
+[BENZ_CO]
+~w~L'~h~abito mascotte dei Cox~w~ è disponibile al rifugio.
+
+[BENZ_HE]
+~w~Missioni Avenging Angels di Shoreside: livello 15 completato! L'~h~abito da supereroe~w~ è disponibile al rifugio.
+
+[BENZ_DR]
+~w~L'~h~abito 'Dragon'~w~ è disponibile al rifugio.
+
+[TRTIT]
+Alliva plima e intelo
+
+[TRRACE2]
+~w~Attento! I fratelli Wong non promettono nulla di buono...
+
+[MPTOTAL]
+Tempo
+
+[TOUR_W6]
+~w~Esclusiva Landstalker blindata consegnata al rifugio. Vedi di tenerla al sicuro in garage!
+
+[OUTFITS]
+Abiti sbloccati
+
+[MPHPMAR]
+è stato condannato a morte.
+
+[FEC_CWT]
+Cambia armi/bersagli
+
+[EXPO_1]
+~w~Love Media ha bisogno di premi da distribuire nelle sue competizioni 'Car-razy Give Away'!
+
+[PCJLAP]
+~w~Nuovo giro migliore di ~1~ secondi!
+
+[MPBLCAR]
+Macchina blu:
+
+[MPRDCAR]
+Macchina rossa:
+
+[RAMP_A]
+~w~VIOLENZE COMPLETATE! ~1~$
+
+[FET_SAV]
+Salva partita
+
+[FET_WRN]
+Attenzione! Sono stati attivati uno o più trucchi e ciò potrebbe influire sul salvataggio. Si consiglia di non salvare questa partita.
+
+[HELP39]
+~w~Usa~h~ ~k~ ~VEWEI~ ~w~per spostare il peso quando sei su una moto.
[FEC_EXV]
-Esci dal veicolo
+Scendi dal veicolo
-[TAXI_M]
-'TAXI DRIVER'
+[MPCOLL]
+AUTO NECESSARIE:
-[COP_M]
-'VIGILANTE'
+[FEMP_HG]
+OSPITA PARTITA
-[FIRE_M]
-'POMPIERE'
+[FEMP_JG]
+PARTECIPA
-[AMBUL_M]
-'INFERMIERE'
+[K_TK3]
+~w~1 punto per le mete ~g~verdi~w~, 2 punti per quelle ~y~gialle~w~ e 3 punti per le ~r~rosse.
-[HJ_IS]
-BONUS ACROBAZIA FOLLE: ~1~$
+[FEMP_GJ]
+SCEGLI LA PARTITA
-[HJ_PIS]
-BONUS ACROBAZIA FOLLE PERFETTA: ~1~$
+[FEMP_H]
+HOST:
-[HJ_DIS]
-BONUS DOPPIA ACROBAZIA FOLLE: ~1~$
+[FEMP_P]
+GIOCATORI:
-[HJ_PDIS]
-BONUS DOPPIA ACROBAZIA FOLLE PERFETTA: ~1~$
+[FEMP_HN]
+OSPITA NUOVA PARTITA
-[HJ_TIS]
-BONUS TRIPLA ACROBAZIA FOLLE: ~1~$
+[PO_MOB4]
+~w~Ehi... sono io, Vincenzo.
-[HJ_PTIS]
-BONUS TRIPLA ACROBAZIA FOLLE PERFETTA: ~1~$
+[POMOB4D]
+~w~Ehi. Passa a trovarmi, ho qualcosa per te.
-[HJ_QIS]
-BONUS QUADRUPLA ACROBAZIA FOLLE: ~1~$
+[POMOB4E]
+~w~Sì? Cosa? Un paio di scarpe di cemento?
-[HJ_PQIS]
-BONUS QUADRUPLA ACROBAZIA FOLLE PERFETTA: ~1~$
+[POMOB4H]
+~w~No. Andiamo Toni, mi dispiace per come sono andate le cose.
-[FESZ_LS]
-Caricamento completato.
+[FEMP_F]
+PIENO
-[HELI_1A]
-Prova le tue abilità con lo Sparrow: scopri quanto velocemente riesci a completare il percorso.
+[FEMP_R]
+RIPRISTINA PREDEFINITI
-[HELI_1B]
-Percorso completato!
+[YOU]
+TU
-[HELIODD]
-Strani incarichi con l'elicottero
+[NE_POW]
+Si è verificato un errore di rete. È stato spento l'interruttore POWER/HOLD (accensione/blocco funzioni).
-[INT2_M]
-Hanno una fattoria in Panama.
+[FEMP_SQ]
+Sei sicuro di voler iniziare una partita multigiocatore?
-[INT2_N]
-OK, va bene, ascoltate:
+[BIKETXT]
+~w~Hogs & Cogs è aperto dalle 08:00 alle 18:00. Torna quando è aperto!
-[INT2_O]
-quando arriviamo volete che resti in macchina
+[RACE_2]
+Tempo
-[INT2_P]
-o preferite che venga con voi altri?
+[FEF_CO2]
+Scegli la configurazione dei comandi più adatta al tuo stile di gioco.
-[INT2_Q]
-No, resta in macchina.
+[TYREPOP]
+Pneumatici esplosi con proiettili
-[INT2_R]
-Lo sapete, ci ho pensato su.
+[FE_INIP]
+Inizializzazione menu di pausa... Attendi...
-[INT2_S]
-Penso proprio che resterò in macchina.
+[DON4EX3]
+~w~Accetti un assegno?
-[INT4_A]
-Fottuti! Siamo fottuti!
+[CRUSH]
+~w~Guadagna soldi con la rottamazione! Alcuni veicoli possono essere demoliti se lasciati nella zona con gli pneumatici.
-[INT4_B]
-È sempre la stessa storia,
+[ANG_15]
+~w~Una banda di fannulloni ha appena rubato la macchina di un poveraccio, facciamoli fuori!
-[INT4_C]
-metto fuori la testa per un maledetto secondo,
+[CDERROR]
+Attendere prego...
-[INT4_D]
-e il fato mi tira palate di merda in faccia!
+[FEC_LOF]
+Guarda avanti
-[INT4_E]
-Bene, vaffanculo!
+[FEC_LFA]
+Sguardo/Mira precisa
-[INT4_F]
-Smettila di fare casino e di lamentarti. Siamo vivi, non è vero?
+[MPHELP]
+AIUTO
-[INT4_G]
-Fammi scendere qua.
+[C1VEHN]
+tasto L1
-[INT4_H]
-Fai scomparire la macchina e fatti una bella dormita.
+[C3VEHN]
+tasto L3
-[INT4_I]
-Passerò domani a trovarti in ufficio e troveremo un modo per risolvere questo casino.
+[MPOBJ]
+OBIETTIVO:
-[INT4_J]
-OK, mi sembra un'ottima idea, andrò a dormire.
+[MPLEG]
+LEGENDA RADAR:
-[INT4_K]
-Che cosa intendi fare?
+[GS_O1]
+Ciascuno per sé! Uccidi tutti gli altri giocatori!
-[INT4_L]
-Tornare nella mia stanza,
+[GS_O2]
+Guida attraverso i checkpoint e raggiungi per primo il traguardo.
-[INT4_M]
-schiarirmi le idee e risolvere questo casino.
+[GS_OD3]
+Difendi quattro limousine nella tua base dagli attacchi.
-[INT4_N]
-OK.
+[GS_O6]
+Uccidi il giocatore 'condannato' il più velocemente possibile. Se sei il 'condannato', resisti.
-[LAW]
-MISSIONI DELL'AVVOCATO
+[GS_O7]
+Recupera le macchine disseminate in città, poi portale negli appositi container.
-[LAW1_1]
-~g~Vai a prendere degli abiti nuovi dal negozio di vestiti Rafael's.
+[FHOSE_2]
+~h~~k~ ~VEWEA~ ~w~corregge la mira del cannone.
-[LAW4_6]
-Brucia l'amministrazione!
+[MPI01]
+POTENZIAM.
-[LAW4_7]
-Uccidi i responsabili!
+[MPI02]
+SALUTE
-[LAW4_8]
-Combattere, combattere, combattere, combattere,.
+[MPI03]
+PROTEZIONE
-[LAW4_9]
-Più ferie, meno lavoro!
+[MPI04]
+ARMA
-[LAW4_11]
-Combattere, combattere, combattere, combattere,.
+[SPIDER]
+Deimos SP
-[LAW4_12]
-Viva la rivoluzione.
+[PONTIAC]
+Phobos Vt
-[GENERAL]
-MISSIONI DEL COLONNELLO
+[FORELLI]
+Forelli ExSess
-[GEN3_4]
-Tommy Vercetti. Andiamo...
+[AHIT_LO]
+Per il momento l'hai seminato, ma tornerà per finire il lavoro.
-[GEN3_13]
-Che cosa diavolo ti prende? Vai sul tetto dall'altra parte del cortile prima che arrivino!
+[FEM_ROF]
+Radio spenta
-[GEN3_17]
-Meeerda! Stai cercando di ammazzarmi?
+[GA_1]
+~ w~Stai scherzando! Non ho intenzione di toccarla!
-[GEN3_21]
-~g~Ha preso i soldi di Diaz! Inseguilo e riprendili!
+[TRA_NEX]
+Prossima fermata:
-[GEN3_24]
-~r~Diaz è morto! Non sei riuscito a proteggerlo!
+[TRA_CUR]
+Fermata attuale:
-[GEN3_26]
-~r~Hai ucciso Diaz!
+[PAGEB2]
+~w~Il ~h~fucile a pompa~w~ è disponibile al tuo rifugio!
-[GEN3_27]
-~r~Hai ucciso una guardia di Diaz!
+[PAGEB3]
+Il ~h~giubbotto antiproiettile~w~ è disponibile al tuo rifugio!
-[GEN3_31]
-~g~Vai all'appuntamento e proteggi Diaz.
+[PAGEB4]
+~w~La ~h~mitraglietta~w~ è disponibile al tuo rifugio!
-[GEN3_32]
-~g~Raggiungi il tetto nell'edificio di fronte a Lance e appostati.
+[PAGEB5]
+~w~Il ~h~calibro .357~w~ è disponibile al tuo rifugio!
-[COKE]
-MISSIONI DEL BARONE DELLA COCA
+[PAGEB6]
+~w~L'~h~M4~w~ è disponibile al tuo rifugio!
-[COK1_3]
-Spero tu cada e ti rompa l'osso del collo!
+[PAGEB7]
+~w~Il ~h~fucile di precisione con laser ~w~è disponibile al tuo rifugio!
-[COK1_6]
-Sono stanco di tutto questo.
+[PAGEB8]
+~w~Il ~h~lanciafiamme~w~ è disponibile al tuo rifugio!
-[COK2_7]
-Vedi quei segnali, ragazzo? Cerca di colpire le luci!
+[PAGEB9]
+~w~Il ~h~lanciarazzi~w~ è disponibile al tuo rifugio!
-[COK2_10]
-Di certo sei più bravo a sparare che a parlare.
+[PAGE_01]
+Crivella ~1~ membri della Triade in 2 minuti!
-[COK2_11]
-Grazie. Anche tu hai una bella parlantina.
+[PAGE_02]
+Fai esplodere ~1~ veicoli in 2 minuti!
-[COK2_12]
-Lo so, Tommy.
+[PAGE_03]
+Incenerisci ~1~ Diablo in 2 minuti!
-[COK2_18]
-Ti diverti con Kenny Loggins.
+[PAGE_04]
+Uccidi ~1~ mafiosi di Leone in 2 minuti!
-[COK2_19]
-Cielo, adoro questo album!
+[PAGE_05]
+Brucia ~1~ veicoli in 2 minuti!
+
+[PAGE_06]
+Investi ~1~ pedoni in 2 minuti!
-[COK2_26]
-~r~Hai ucciso Lance!
+[PAGE_07]
+Distruggi ~1~ veicoli in 2 minuti!
-[COK3_1]
-Non sparare, amico!
+[PAGE_08]
+Massacra ~1~ pedoni in 2 minuti!
-[COK3_2]
-Che cosa sta succedendo?
+[PAGE_09]
+Brucia ~1~ membri della Yakuza in 2 minuti!
-[COK3_3]
-Sta prendendo la barca. Farabutto!
+[PAGE_10]
+Assassina ~1~ Forelli in 2 minuti!
-[COK3_4]
-Aiuto! Un idiota sta rubando la barca!
+[PAGE_11]
+Investi ~1~ pedoni in 2 minuti!
-[COK4_W]
-Uugghh! Questo è l'ultimo.
+[PAGE_12]
+Ammazza ~1~ pedoni in 2 minuti!
-[COK4_X]
-Vado ad accendere...
+[PAGE_13]
+Uccidi ~1~ membri della Yakuza in 2 minuti!
-[COK4_Y]
-A quanto sembra abbiamo dei nuovi amici.
+[PAGE_15]
+Massacra ~1~ pedoni in 2 minuti!
-[COK4_2]
-Sì.
+[PAGE_16]
+Distruggi ~1~ veicoli in 2 minuti!
-[COK4_6]
-Sai dove stiamo andando?
+[PAGE_17]
+Cecchina ~1~ pedoni in 2 minuti!
-[COK4_7]
-Ci siamo persi?
+[PAGE_18]
+Distruggi ~1~ veicoli in 2 minuti!
-[COK4_8]
-Abbiamo un po' di competizione!
+[PAGE_20]
+Brucia ~1~ pedoni in 2 minuti!
-[COK4_9]
-Falli fuori!
+[MPI05]
+NEMICO
-[COK4_9A]
-È giunta l'ora di un po' di Lance Vance Dance!
+[MPI07]
+CHECKPOINT
-[COK4_10]
-Sono pronti per il macero! E per sfamare i pesci.
+[MPI08]
+PROSSIMO
-[COK4_11]
-Ce l'abbiamo fatta! Le altre imbarcazioni non sono della nostra classe.
+[MPI09]
+TRAGUARDO
-[COK4_17]
-Stanno iniziando a pregare!
+[MPI10]
+PILOTA
-[COK4_18]
-I miei piedi sono bagnati! STIAMO IMBARCANDO ACQUA!
+[MPI11]
+BASE
-[COK4_21]
-Ponte in arrivo!
+[MPI12]
+BASE NEMICA
-[COK4_22]
-Lanciati, sta per esplodere!
+[MPI13]
+CARRO ARMATO
-[COK4_23]
-Bel colpo!
+[MPI14]
+OBIETTIVO
-[COK4_29]
-~r~Hai ucciso Lance!
+[MPI15]
+MACCHINA
-[ASS1_6]
-Vai Tommy, andrà tutto bene!
+[MPI16]
+CONTAINER
-[ASS1_7]
-Beccatevi questo, maledetti assassini!
+[FEI_LEG]
+Legenda sì/no
-[ASS1_8]
-Sono bloccato!
+[SR_ON]
+Ora che ti sei fatto un nome nei circuiti cittadini, fai attenzione ad altri sfidanti intenzionati a contattarti.
-[ASS1_9]
-Ti copro io Tommy!
+[FEC_FRA]
+Mira libera
-[ASS1_10]
-Ehi, questo sì che è un bel confine alberato.
+[KAR_ON]
+Torna quando vuoi al camion dei pompieri per tentare di battere il tuo miglior tempo!
-[ASS1_11]
-Ehi Tommy, posso avere la stanza con la vista sulla baia?
+[DON2EX5]
+~w~8-ball non cambierà idea finché non pagherai 20.000$.
-[ASS1_12]
-Che bel soffitto alto che c'è qui...
+[PCJTIT]
+GO GO Faggio
-[ASS1_3]
-Lance! Ho bisogno di copertura!
+[FEA_MUS]
+VOLUME RADIO:
-[ASS1_5]
-Lance!
+[FEST_GO]
+Tempo migliore nella missione Go Go Faggio
-[ASS1_15]
-~g~Distruggi la dimora e uccidi Diaz!
+[RC_1]
+~w~Uccidi più di ~1~ membri della Triade: riceverai tempo bonus per ogni eliminazione!
-[ASS1_17]
-~g~Sono disponibili più strade all'interno della villa.
+[EXPO_C]
+~w~Grazie! Quella era l'ultima! Ti abbiamo lasciato un bel regalo davanti al tuo appartamento di Newport!
-[TAXWAR]
-MISSIONI GUERRA DEI TAXI
+[TRRACE0]
+~w~Passa attraverso i ~y~checkpoint~w~ e arriva vivo alla fine del percorso!
-[NOTAXI]
-~g~Hai bisogno di un taxi Kaufman per attivare questa missione.
+[RACE_P1]
+~w~1°
-[TAXW1_5]
-~g~Devi avere un taxi Kaufman!
+[RACE_P2]
+~w~2°
-[TAX2_4]
-Forza, Tommy.
+[RACE_P3]
+~w~3°
-[TAX2_5]
-Riempilo di botte!
+[RACE_P4]
+~w~4°
-[TAX2_6]
-Non ha neppure il permesso.
+[OUTF_00]
+~w~Abito casual
-[TAX2_7]
-Maledetti servizi di limousine.
+[OUTF_01]
+~w~Vestito dei Leone
-[TAXW3_1]
-~g~Vai a prendere Mercedes.
+[OUTF_03]
+~w~Uniforme degli Avenging Angels
-[RACE1]
-~g~3..2..1.. VIA VIA VIA!
+[OUTF_04]
+~w~Abito da autista
-[RACE2]
-~g~3
+[OUTF_05]
+~w~Abito da avvocato
-[RACE3]
-~g~2
+[OUTF_06]
+~w~Smoking
-[RACE4]
-~g~1
+[OUTF_07]
+~w~Abito 'The King'
-[RACE5]
-~g~VIA!
+[OUTF_08]
+~w~Abito mascotte dei Cox
-[FIRST]
-~b~PRIMO
+[OUTF_09]
+~w~Biancheria
-[SECOND]
-~b~SECONDO
+[OUTF_10]
+~w~Abito da supereroe
-[THIRD]
-~b~TERZO
+[OUTF_11]
+~w~Abito 'Dragon'
-[FOURTH]
-~b~QUARTO
+[SLTVMON]
+Soldi guadagnati con Slash TV
-[RACETM]
-~b~TEMPO DI GARA: ~1~:~1~
+[DBIKEAI]
+Miglior salto realizzato (m)
-[RACETM2]
-~b~TEMPO DI GARA: ~1~:0~1~
+[MPC_039]
+Vincenzo
-[RACEFA]
-~r~Non sei riuscito a vincere la gara!
+[MPC_040]
+Salvatore
-[TEX1_5]
-~r~È riuscito a fuggire!
+[MPC_041]
+Toshi
-[SEG3_1]
-TEMPO:
+[MPC_042]
+Toshiko
-[SEG3_2]
-~g~Raggiungi il van che contiene il Raider radiocomandato e le bombe a tempo.
+[MPC_043]
+Ophelia Lardaz
-[SEG3_3]
-~g~Devi utilizzare il RAIDER RADIOCOMANDATO per trasportare le 4 bombe nelle 4 aree bersaglio all'interno del cantiere.
+[MPC_044]
+Ed Banger
-[SERG3_5]
-~g~Puoi trasportare solo una bomba alla volta e non puoi raccogliere dell'esplosivo correttamente posizionato.
+[MPC_045]
+Robin Emblind
-[SEG3_7]
-~g~Una volta posizionata la PRIMA bomba con successo su di un bersaglio, partirà il conto alla rovescia, dovrai piazzare tutti gli esplosivi entro il tempo limite.
+[MPC_046]
+Mrs. Menalot
-[SEG3_8]
-~g~Le 4 bombe devono essere tutte posizionate su ognuno dei bersagli per passare la missione e demolire l'edificio.
+[MPC_047]
+Hugh Jazz
-[SEG3_9]
-~g~Bomba piazzata! Ancora 3.
+[MPC_048]
+Wayne
-[SEG3_10]
-~g~Bomba piazzata! Ancora 2.
+[MPC_049]
+Paulie
-[SEG3_11]
-~g~Bomba piazzata! Ne manca una sola.
+[MPC_050]
+Anne Job
-[SEG3_12]
-~g~Bomba NON piazzata! Recupera l'esplosivo!
+[MPC_051]
+Randy Boner
-[SEG3_13]
-~g~Piazza la bomba nella zona bersaglio.
+[MPC_052]
+Owen Monie
-[SEG3_14]
-~r~Tempo esaurito: hai fallito nel demolire l'edificio.
+[MPC_053]
+Ekant Sing
-[SEG3_15]
-~r~Il Raider radiocomandato è stato distrutto! Come farai adesso a trasportare le bombe?
+[MPC_054]
+M.T.Head
-[AVERY]
-MISSIONI DI AVERY
+[MPC_055]
+Rick O'Shea
-[ASM]
-MISSIONI DA SICARIO
+[MPC_056]
+Arden Long
-[ASM_1]
-MISSIONE DA SICARIO 1
+[MPC_057]
+Ann Thrax
-[ASM1_1]
-~g~Mr. Teal, il tuo aiuto nello sradicare gli stranieri è stato inestimabile per il nostro lavoro. Ho un altro lavoro con un contatto più 'diretto'. I dettagli sono stati attaccati sotto al telefono.
+[MPC_058]
+Fay Slift
-[ASM1_2]
-~g~Raggiungi il telefono pubblico presso il Mall in Washington Beach.
+[MPC_059]
+Mona Lott
-[ASM1_3]
-~g~Carl Pearson, fattorino di una pizzeria. Non deve completare le sue consegne.
+[C0VEACC]
+~X~
-[ASM1_4]
-~g~Uccidi il fattorino prima che possa completare le sue consegne.
+[C1VEACC]
+~X~
-[ASM_2]
-MISSIONE DA SICARIO 2
+[C2VEACC]
+~X~
-[ASM_3]
-MISSIONE DA SICARIO 3
+[C3VEACC]
+levetta analogica destra in su
-[ASM3_A]
-Marcus Hammond, Franco Carter, Dick Tanner, Nick Kong e Stuntman Driver fanno tutti parte di un'associazione europea che si sta preparando a commettere una rapina.
+[C0VEBRK]
+~S~
-[ASM3_B]
-Si trovano tutti nella loro posizione pronti all'azione. Voglio che vengano tutti eliminati prima che inizi il colpo. Ho disposto delle utili armi nei paraggi.
+[C1VEBRK]
+~S~
-[ASM3_1]
-~g~Recupera le armi che Mr. Black ha lasciato per te.
+[C2VEBRK]
+~S~
-[ASM3_2]
-~g~Non avvicinarti troppo, se no il bersaglio potrebbe vederti.
+[C3VEBRK]
+levetta analogica destra in giù
-[ASM3_3]
-~g~Per un'eliminazione più rapida, colpisci da una locazione vicino alle loro postazioni ed evita di farti vedere.
+[C0VEHB]
+tasto R1
-[ASM3_4]
-~g~Ti ha visto! Fallo fuori il prima possibile!
+[C1VEHB]
+tasto R1
-[ASM3_5]
-~g~Marcus Hammond si trova presso dei cartelli pubblicitari in Washington.
+[C0VEEE]
+~T~
-[ASM3_6]
-~g~Franco Carter si trova presso la DBP Security vicino a Ocean Drive.
+[C1VEEE]
+~T~
-[ASM3_7]
-~g~Dick Tanner si trova presso la gioielleria in Vice Point.
+[C2VEEE]
+tasto L1
-[ASM3_8]
-~g~Nick Kong si trova presso Washington Beach.
+[C3VEEE]
+~T~
-[ASM3_9]
-~g~Stuntman Driver si trova presso Washington Beach.
+[C0VEWEP]
+~O~
-[ASM3_10]
-~r~Non sei riuscito a eliminarli tutti quanti.
+[C1VEWEP]
+~O~
-[ASM_4]
-MISSIONE DA SICARIO 4
+[C2VEWEP]
+~O~
-[ASM4_1]
-~g~Recupera il fucile che ti abbiamo lasciato tra le foglie presso il terminal dell'aeroporto.
+[C3VEWEP]
+tasto R1
-[ASM4_2]
-~g~Non mancare il bersaglio o allarmerai le sue guardie del corpo: ricorda di tenere una certa distanza per evitare di essere visto.
+[C0PDSPR]
+~X~
-[ASM4_3]
-~g~Osserva la donna sul balcone sopra ai banconi del check-in dentro il terminal. NON UCCIDERLA.
+[C1PDSPR]
+~X~
-[ASM4_4]
-~g~Elimina l'uomo a cui passa la valigetta ma solo DOPO CHE L'AVRÀ RACCOLTA. Poi recupera la valigetta e portala ad Ammu-Nation in Downtown.
+[C0SNZI]
+~S~
-[ASM4_5]
-~g~Recupera la valigetta!
+[C1SNZI]
+~S~
-[ASM4_6]
-~g~Porta la valigetta ad Ammu-Nation in Downtown
+[C0SNZO]
+~X~
-[ASM4_7]
-~r~Hai ucciso la donna, idiota!
+[C1SNZO]
+~X~
-[ASM4_8]
-~r~Il bersaglio ha sentito il colpo d'arma da fuoco! L'accordo è saltato!
+[C0PDFW]
+~O~
-[ASM4_9]
-~r~Il bersaglio è salito a bordo del volo!
+[C1PDFW]
+~O~
-[ASM4_10]
-~g~Sembra tu non sia l'unico interessato alla valigetta! Portala in fretta ad Ammu-Nation!
+[C0TRSK]
+~X~
-[ASM4_11]
-~r~Il bersaglio ti ha visto! L'accordo è saltato!
+[C1TRSK]
+~X~
-[ASM4_13]
-~g~Ti ha visto e sta scappando! Uccidilo e recupera la valigetta!
+[C2TRSK]
+~X~
-[ASM4_14]
-~g~L'indicatore della distanza nella parte superiore destra dello schermo ti tiene informato sulla distanza dal bersaglio. Se si riempirà, verrai avvistato.
+[C3TRSK]
+~X~
-[ASM_5]
-MISSIONE DA SICARIO 5
+[C0AMBUY]
+~X~
-[KICK]
-KICKSTART
+[C1AMBUY]
+~X~
-[KICK1_3]
-~g~Numero di volte che hai appoggiato i piedi: ~1~
+[C2AMBUY]
+~X~
-[KICK1_4]
-~g~Penalità: ~1~ secondi
+[C3AMBUY]
+~X~
-[BANK]
-MISSIONI RAPINA
+[C0AMEXI]
+~T~
-[BANK1]
-MISSIONE RAPINA 1
+[C1AMEXI]
+~T~
-[BANK2]
-MISSIONE RAPINA 2
+[C2AMEXI]
+~T~
-[BJM2_3]
-PERCENTUALE DI CENTRI: ~1~%
+[C3AMEXI]
+~T~
-[BJM2_15]
-PUNTEGGIO:
+[C2PDSPR]
+~O~
-[BJM2_18]
-PUNTEGGIO DA BATTERE:
+[C3PDSPR]
+~X~
-[BJM2_19]
-~g~Colpisci il maggior numero di bersagli entro il tempo limite!
+[C2SNZI]
+~T~
-[BJM2_21]
-~g~Colpisci il maggior numero di bersagli finché hai ancora colpi.
+[C3SNZI]
+~S~
-[BANK3]
-MISSIONE RAPINA 3
+[C2SNZO]
+~S~
-[BJM3_1]
-~g~Trova una macchina da corsa e posizionati sulla griglia di partenza.
+[C3SNZO]
+~X~
-[BNK4_2A]
-I ragazzi dell'officina hanno fatto un ottimo lavoro su questa piccola.
+[C2PDFW]
+~X~
-[BNK4_3G]
-Ommerda, abbiamo la polizia alle calcagna!
+[C3PDFW]
+tasto R1
-[BNK4_3H]
-...e non siamo ancora neanche arrivati.
+[MPC_020]
+Rico Garlik
-[BNK4_3K]
-Dobbiamo seminare prima la polizia...
+[MPC_022]
+Lou Scannon
-[BNK4_3L]
-Cristo Tommy, stai cercando di farci fuori?
+[MPC_024]
+Cruz Vormen
-[BNK4_3N]
-Tutto ciò che amo finisce a pezzi!
+[MPC_026]
+Busta Moves
-[BNK422A]
-Cam, quanto tempo?
+[MPC_027]
+Juan Kerr
-[BK4_23A]
-Mi bastano 3 minuti!
+[MPC_028]
+Nick Yakar
-[BNK4_26]
-Maledizione! Ecco che arrivano!
+[MPC_029]
+Lou Bricant
-[BNK4_32]
-Usa l'esplosivo per aprire le cassette di sicurezza!
+[MPC_030]
+Lance Urwell
-[BNK4_43]
-Vi copro io il culo, PARTI!
+[MPC_033]
+Agent Ochre
-[BNK4_51]
-A me sembri a posto.
+[MPC_036]
+Papi Love
-[KENT]
-MISSIONI DI KENT PAUL
+[MPC_037]
+Lucy Lastic
-[KENT1]
-MISSIONE DI KENT PAUL 1
+[MPC_038]
+Bill Durzbum
-[COUNT]
-MISSIONI DI FALSIFICAZIONE
+[MPISCOL]
+Oggetto raccolto
-[COUNT1]
-MISSIONE DI FALSIFICAZIONE 1
+[MPSTART]
+Avvio partita...
-[COUNT2]
-MISSIONE DI FALSIFICAZIONE 2
+[MRACEC1]
+~w~1...
-[BIKE]
-MISSIONI DEI MOTOCICLISTI
+[MRACEC2]
+~w~2...
-[BIKE1]
-MISSIONE DEI MOTOCICLISTI 1
+[MRACEC3]
+~w~3...
-[BIKE2]
-MISSIONE DEI MOTOCICLISTI 2
+[MPC_019]
+Phil DeGirth
-[BIKE3]
-MISSIONE DEI MOTOCICLISTI 3
+[GDA_HL]
+Livello massimo 'Avenging Angel'
-[GOAWAY1]
-Ritorna quando avrai completato le missioni per la gang di Haiti.
+[MP_SNEW]
+Carica o avvia una nuova partita a giocatore singolo o multigiocatore.
-[HAIT]
-MISSIONI DEGLI HAITIANI
+[DON2EX9]
+~r~Ned~w~ sta scappando! Non perderlo!
-[HAIT1]
-MISSIONE DEGLI HAITIANI 1
+[FEI_CHA]
+Cambia squadra
-[HAIT2]
-MISSIONE DEGLI HAITIANI 2
+[FES_RES]
+RIPRISTINA IMPOSTAZIONI
-[HAIT3]
-MISSIONE DEGLI HAITIANI 3
+[FESZ_QT]
+Sei sicuro di voler ripristinare le impostazioni audio, video e dei comandi? Procedere?
-[HAM3_6]
-~g~Utilizza il fucile di precisione che ti ho lasciato per completare la missione.
+[FEH_LOA]
+PARTITA
-[ROCK]
-MISSIONI DELLA BAND
+[MPEMPTY]
+Vuota
-[ROK1_4]
-~g~OK, credo tu stessi cercando questo...
+[FEMP_SN]
+AVVIA PARTITA (2 o più giocatori richiesti)
-[ROK1_1E]
-~g~Ti costerà di più di quanto hai!
+[JD_SUIT]
+~w~JD non può affidarti lavori se sei vestito come uno dei Leone!
-[ROK1_1F]
-~g~Ritorna quando avrai i soldi.
+[SAVD_SH]
+- rifugio.
-[RBM2_6]
-~g~Wow! È un uomo, bloccalo!
+[SAVD_DY]
+Giorno
-[ROCK3]
-MISSIONE DELLA BAND 3
+[SAVD_CO]
+completato.
-[ROK3_6D]
-~r~insieme alle vostre GROSSE TESTE DA CAPELLONI!
+[SAVD_AL]
+Portland - rifugio. Giorno 71, $57640. 17% completato.
-[ROK3_40]
-Vicino al fottuto minibar?
+[SAV_SLT]
+Nuovo salvataggio
-[RBM3_5]
-~g~Porta i Love Fist allo spettacolo.
+[POMOB6C]
+~w~Passa al più presto a trovarmi. Ho del lavoro per te.
-[CUBANM]
-MISSIONI DEI CUBANI
+[ANG_2]
+~w~Premi~h~ ~k~ ~TGSUB~ ~w~per attivare o disattivare le missioni Avenging Angels.
-[CUBAN1]
-MISSIONE DEI CUBANI 1
+[TVHELP]
+~w~Premi~h~ ~k~ ~TGSUB~ ~w~per attivare o disattivare le missioni Slash TV.
-[CUBAN2]
-MISSIONE DEI CUBANI 2
+[PAGERA]
+~w~L'~h~M60~w~ è disponibile al tuo rifugio!
-[CUB2_10]
-~r~Dovresti uccidere gli Haitiani, non i Cubani.
+[CO_ALL]
+~w~Raccolti tutti i pacchetti speciali!
-[CUBAN3]
-MISSIONE DEI CUBANI 3
+[CO_ONE]
+~w~Pacchetto speciale: ~1~ su ~1~ raccolto!
-[CUBAN4]
-MISSIONE DEI CUBANI 4
+[PAGE_14]
+Spazza via ~1~ gangster Colombiani in 2 minuti!
-[CUB4_05]
-~r~Ti avevo detto di restare in macchina! Adesso non riusciremo mai a entrare!
+[PAGE_19]
+Investi ~1~ gangster Colombiani in 2 minuti!
-[CUB4_25]
-OK, andiamo.
+[ANG_22]
+~r~Missione Avenging Angel annullata.
-[PROT]
-MISSIONI DI PROTEZIONE
+[SLATVQO]
+~r~Missione Slash TV annullata.
-[PRO1_H]
-Perché non ti calmi per un secondo, sto finalmente cominciando a capire come funzionano le cose da queste parti.
+[C0FREE1]
+tasto L3
-[PRO1_02]
-~g~Esci dal Mall.
+[C1FREE1]
+tasto L3
-[PRO3_06]
-~g~Fai perdere le tracce.
+[C2FREE1]
+tasto L3
-[PORN]
-MISSIONI PORNOGRAFIA
+[C3FREE1]
+tasto L3
-[PORN1]
-MISSIONE PORNOGRAFIA 1
+[C0FREE2]
+levetta analogica sinistra
-[POR1_03]
-~r~Candy è morta!
+[C2FREE2]
+levetta analogica sinistra
-[PORN2]
-MISSIONE PORNOGRAFIA 2
+[ANGCOM1]
+~w~Missioni Avenging Angels di Portland: livello 15 completato! La motocicletta esclusiva 'Avenger' ti attende al rifugio!
-[PORN3]
-MISSIONE PORNOGRAFIA 3
+[K_CE]
+~w~Hai ~1~ secondo per tornare sulla tua ~b~moto!
-[POR3_18]
-Sei stato visto!
+[HELP31]
+~w~Se vieni ~h~'beccato'~w~ o ~h~'massacrato'~w~ durante una missione, apparirà questo ~h~taxi~w~.
-[PORN4]
-MISSIONE PORNOGRAFIA 4
+[LOSER]
+~y~SCONFITTA!
-[POR4_04]
-~g~Gli uffici sono dall'altra parte di questo cancello.
+[RCRHELP]
+~w~Premi~h~ ~k~ ~TGSUB~ ~w~per ~h~abbandonare la gara~w~.~h~ ~k~ ~VEWEP~ ~w~per riposizionare la macchina radiocomandata all'ultimo checkpoint.
-[PHIL]
-MISSIONI DI PHIL
+[SRC_ON]
+Ora che ti sei fatto un nome nelle gare di macchine illegali, altri sfidanti proveranno a contattarti.
-[PHIL1]
-MISSIONE DI PHIL 1
+[SRB_ON]
+Ora che ti sei fatto un nome nelle gare di moto illegali, altri sfidanti proveranno a contattarti.
-[PHI1_06]
-Ma che combini, come diavolo guidi?
+[RACE_R0]
+~w~RECORD PRECEDENTE: ~1~:~1~~1~
-[PHI1_07]
-Ehi!
+[POMOB3C]
+~w~Ehi, passa di qua quando vuoi amico.
-[PHIL2]
-MISSIONE DI PHIL 2
+[MPHPCS1]
+The Hit List
-[PIZ1_A]
-MISSIONE RECAPITO PIZZE
+[MPWLGOC]
+Esci dalla macchina.
-[PIZ1_03]
-~g~Ritorna alla pizzeria e prendi le nuove ordinazioni.
+[MPWLLTC]
+Esci dal container.
-[PIZ1_04]
-~g~Ecco le nuove ordinazioni.
+[MPWLDTC]
+Consegna la macchina.
-[PIZ1_10]
-Premi il ~h~tasto R3~w~ per annullare la missione.
+[MPWLCD]
+Macchina consegnata.
-[CNTBUY1]
-Tipografia acquistata: ~1~$
+[MPWLNGC]
+Ora prendi le macchine.
-[CARBUY]
-Concessionario acquistato: ~1~$
+[MPAUTO]
+MOSTRA 1 VOLTA
-[PORNBUY]
-Studio cinematografico acquistato: ~1~$
+[MRACEGO]
+~w~VIA
-[ICEBUY]
-Fabbrica di gelato acquistata: ~1~$
+[MRACE04]
+HAI VINTO
-[TAXIBUY]
-Compagnia di taxi acquistata: ~1~$
+[MRACEWI]
+ha vinto la gara
-[BANKBUY]
-Malibu acquistato: ~1~$
+[MRCPU01]
+~y~RIPARAZIONE ISTANTANEA
-[BOATBUY]
-Cantiere navale acquistato: ~1~$
+[DTB01]
+difendi le macchine
-[PRNT_NO]
-Non puoi ancora comprare la tipografia, prova più tardi.
+[DTB02]
+distruggi le macchine
-[CAR_NO]
-Non puoi ancora comprare il concessionario, prova più tardi.
+[DTB03]
+hanno perso una macchina
-[PORN_NO]
-Non puoi ancora comprare lo studio cinematografico, prova più tardi.
+[DTB04]
+hanno distrutto una macchina
-[ICE_NO]
-Non puoi ancora comprare la fabbrica di gelato, prova più tardi.
+[MPWIN]
+ha vinto
-[TAXI_NO]
-Non puoi ancora comprare la compagnia di taxi, prova più tardi.
+[MPKSELF]
+è stato ucciso
-[BANK_NO]
-Non puoi ancora comprare il Malibu, prova più tardi.
+[MPMORE]
+uccisioni
-[BOAT_NO]
-Non puoi ancora comprare il cantiere navale, prova più tardi.
+[MP1MORE]
+uccisione
-[PRNT_R3]
-Premi il tasto R3 per acquistare la tipografia per ~1~$
+[MPSTRT]
+Inizia
-[CAR_R3]
-Premi il tasto R3 per acquistare il concessionario per ~1~$
+[MPTANK]
+ha il carro armato
-[PORN_R3]
-Premi il tasto R3 per acquistare lo studio cinematografico per ~1~$
+[MPONE]
+deve recuperare solo una macchina
-[ICE_R3]
-Premi il tasto R3 per acquistare la fabbrica di gelato per ~1~$
+[MPDEL]
+ha consegnato una macchina
-[TAXI_R3]
-Premi il tasto R3 per acquistare la compagnia di taxi per ~1~$
+[MPGOCAR]
+Cerca la macchina
-[BANK_R3]
-Premi il tasto R3 per acquistare il Malibu per ~1~$
+[MPGOGAR]
+Consegna la macchina
-[BOAT_R3]
-Premi il tasto R3 per acquistare il cantiere navale per ~1~$
+[MPDEST]
+Veicolo bersaglio distrutto
-[COL2_6]
-Fermo, brutto maiale imperialista americano!
+[MPLEFT]
+ha abbandonato la partita
-[COL2_6B]
-Questa è proprietà del governo francese.
+[MPHPGO2]
+~w~Sei stato condannato a morte
-[COL2_6C]
-È finita!
+[MPHPKI]
+~w~Hai ucciso un sicario
-[COL3_A]
-Thomas, grazie per essere venuto.
+[LOCKON]
+Agganciato
-[COL3_B]
-Scusami se giungo subito al punto.
+[MPHPGO]
+~w~Elimina il bersaglio
-[COL3_C]
-Diaz mi ha chiesto di sovrintendere una piccola transizione di lavoro.
+[MPTNK]
+Prendi il carro armato
-[COL3_D]
-Speriamo vada meglio dell'ultima...
+[MRCPU02]
+HAI FATTO ESPLODERE I PNEUMATICI DEI RIVALI
-[COL3_E]
-Ed è per questo che ho pensato a te, amico.
+[MRCPU05]
+I TUOI PNEUMATICI SONO ESPLOSI
-[COL3_F]
-Ho lasciato un po' di supporto al parcheggio multipiano.
+[MRCPU06]
+~y~Pneumatici aderenti
-[COL3_G]
-Raccogli il materiale, poi raggiungi e sorveglia gli uomini di Diaz all'incontro.
+[WINNER]
+~Y~VITTORIA
-[COL4_2]
-Non so signore!
+[MPDRAW]
+~w~PATTA
-[COL4_5]
-Signorsì, signore!
+[MPDADDY]
+SEI IL NUOVO CAPO IN CITTÀ.
-[COL4_10]
-Andiamo a prendere delle ciambelle.
+[MPRUN]
+ORA GOVERNANO LA CITTÀ.
-[COL4_16]
-Signore! Sposto il veicolo, signore!
+[MPBITCH]
+CHI È IL TUO NUOVO CAPO, EH STRONZO?
-[COL4_25]
-Autodistruzione del veicolo attivata!
+[FEMP_SM]
+Gioca a Grand Theft Auto con gli amici o con qualche losco sconosciuto nei dintorni.
-[COL5_6]
-Mercedes, quella ragazza sarà la mia rovina.
+[MPYL]
+SCONFITTA!
-[COL5_8]
-Maledetti scarafaggi!
+[MPTMWIN]
+SONO I MIGLIORI
-[COL5_5]
-Morite, maiali Francesi!
+[GS_SCAR]
+VEICOLO:
-[CNT2_1]
-Uccidetelo
+[GS_MIN]
+minuto
-[CNT2_2]
-Recuperate le matrici!
+[GS_MINS]
+minuti
-[CNT2_3]
-Proteggete il corriere.
+[MPTNKGA]
+Hai il carro armato, sei un duro.
-[FINKILL]
-OK ragazzi, uccidetelo!
+[MPTNKGB]
+Non perderlo.
-[FIN_6]
-Sonny è interessato alla mia cassaforte e ai miei soldi...
+[GS_TYPE]
+SCENARIO:
-[FIN_10]
-Sonny? SONNY! Sto venendo a prenderti!
+[CLILOST]
+Connessione interrotta con gli altri giocatori.
-[RACES_4]
-3
+[ONEHPC]
+Completato al 100 percento! Un piccolo regalo ti attende a Fort Staunton.
-[RACES_5]
-2
+[MPBLTM]
+sindacco
-[RACES_6]
-1
+[MPRDTM]
+forelli
-[RACES_7]
-VIA!
+[MTN_1]
+Sindacco
-[RACES_9]
-Tempo: ~1~:~1~
+[MTN_2]
+Forelli
-[RACES]
-TEMPO:
+[MPRDCAP]
+Macchina catturata
-[RACES17]
-Nuovo miglior tempo: ~1~:~1~
+[MPBLCAP]
+Macchina catturata
-[RACES20]
-Nuovo miglior tempo: ~1~:0~1~
+[MPRDST]
+Macchina rubata
-[RACES21]
-Tempo: ~1~:0~1~
+[MPBLST]
+Macchina rubata
-[RCH1_1]
-~g~Usa l'elicottero radiocomandato, il Raider, per PASSARE ATTRAVERSO i punti di controllo.
+[MPBLEST]
+Macchina rubata
-[RCH1_2]
-~g~I punti di controllo sono sparsi per tutto l'aeroporto.
+[MPRDRET]
+Macchina riportata
-[RCH1_3]
-~g~Hai ~c~8 MINUTI~g~ per attraversarli tutti e ~c~20~g~!
+[MPBLRET]
+Macchina riportata
-[RCH1_5]
-Tempo
+[MPRDPOS]
+Macchina fuori posizione
-[RCRC1_1]
-~g~Sfida nella GARA A TAPPE altri 3 Bandit radiocomandati su 2 GIRI.
+[MPBLPOS]
+Macchina fuori posizione
-[RCRC1_2]
-~g~Raggiungi subito la griglia di partenza!
+[GS_TEAM]
+ALLEATI CON:
-[RCRC1_3]
-~g~Giro finale!
+[FEMP_TS]
+ALLEATI CON:
-[RCRC1_4]
-~g~3
+[MPTEAM]
+Gang
-[RCRC1_5]
-~g~2
+[GS_OA3]
+Distruggi quattro limousine nella base rivale.
-[RCRC1_6]
-~g~1
+[GS_O4]
+Ruba l'auto dell'altra gang e riportala alla tua base. Nel mentre, proteggi la tua di auto.
-[RCRC1_7]
-~g~VIA!
+[MPI06]
+MEMBRO GANG
-[RCRC1_8]
-~g~Tempo di gara: ~1~ secondi
+[FEMP_ST]
+AVVIA PARTITA (sono necessari uno o più giocatori per gang)
-[RCPL1_1]
-~g~Sfida nella GARA A TAPPE altri 3 Baron radiocomandati.
+[HELP32]
+~w~Per una modica cifra (o gratuitamente se non hai soldi), verrai trasportato sul ~h~luogo del contatto~w~ della tua ultima missione.
-[RCPL1_2]
-~g~Devi attraversare la ~o~CORONA CENTRALE~g~ per passare con successo un punto di controllo.
+[BENZ_HO]
+La ~h~salopette~w~ è disponibile al rifugio. Indossala e torna di notte per partecipare a Slash TV.
-[RCPL1_3]
-~g~Raggiungi subito la griglia di partenza!
+[SLATXT]
+~w~Torna indossando la 'salopette' tra le 18:00 e le 05:00 per partecipare a Slash TV.
-[FEA_2SP]
-2 altoparlanti
+[OUTF_02]
+~w~Salopette
-[FEA_4SP]
-Più di 2 altoparlanti
+[CAN_CON]
+~w~Premi nuovamente~h~ ~k~ ~TGSUB~ ~w~per annullare la missione.
-[FEA_EAR]
-Cuffie
+[GNG1]
+I LEONE
-[FEA_NAH]
-NESSUNA PERIFERICA AUDIO
+[GNG2]
+LA TRIADE
-[FET_APP]
-APPLICA
+[GNG3]
+I DIABLO
-[FES_SKN]
-NOME SKIN
+[GNG4]
+I YAKUZA
-[FES_DAT]
-DATA
+[GNG5]
+GLI YARDIE
-[FES_SET]
-Usa skin
+[GNG6]
+I COLOMBIANI
-[FET_DEF]
-Ripristina predefiniti
+[GNG7]
+GLI HOOD
-[FESZ_QZ]
-Sei sicuro di voler salvare la partita?
+[GNG8]
+I SINDACCO
-[FES_SCG]
-Salvare la partita?
+[GNG9]
+I FORELLI
-[FES_LCG]
-Vuoi caricare e continuare la partita?
+[GNG0]
+I SICILIANI
-[FEC_FIR]
-Fuoco
+[MP_GNG1]
+GANG 1 SCELTA:
-[FEC_NWE]
-Arma successiva
+[MP_GNG2]
+GANG 2 SCELTA:
-[FEC_PWE]
-Arma precedente
+[GS_TEMS]
+GUERRA DI GANG
-[FEC_FOR]
-Avanti
+[CARS_O]
+~w~Se vuoi guadagnare un po' di soldi, la Capital Autos di Harwood sta cercando un nuovo venditore.
-[FEC_BAC]
-Indietro
+[CARTXT]
+~w~Capital Autos è aperto dalle 08:00 alle 18:00. Torna quando è aperto!
-[FEC_LEF]
-Sinistra
+[GS_TO1]
+Elimina la gang rivale!
-[FEC_RIG]
-Destra
+[MPTNEED]
+hanno bisogno di
-[FEC_ZIN]
-Ingrandisci
+[MPTWIN]
+vincono
-[FEC_ZOT]
-Riduci
+[BADTEAM]
+Una delle gang è rimasta senza giocatori.
-[FEC_EEX]
-Entra o esci
+[RACELAP]
+Giro
-[FEC_RAD]
-Radio
+[GS_D1]
+RIVIVI LO SPETTACOLO CLASSICO! IL RITORNO DEL DARWINISMO URBANO!
-[FEC_SUB]
-Sottomissione
+[GS_D2]
+CHI È IL MIGLIORE ALLA GUIDA (O A INGANNARE)?
-[FEC_CMR]
-Cambia visuale
+[GS_D3]
+PROTEGGI LE TUE MACCHINE DA FARABUTTI E VANDALI.
-[FEC_JMP]
-Salto
+[GS_D4]
+RUBA LA MACCHINA DELLA GANG NEMICA E DERIDILI.
-[FEC_SPN]
-Scatto
+[GS_D5]
+CHI VUOLE DAVVERO IL CARRO ARMATO?
-[FEC_HND]
-Freno a mano
+[GS_D6]
+IL CONDANNATO DEV'ESSERE MASSACRATO.
-[FEC_LOL]
-Sguardo a sinistra
+[GS_D7]
+RECUPERA LE MACCHINE PER CONTANTI.
-[FEC_LOR]
-Sguardo a destra
+[HELP61]
+~w~Quando il ~h~segnale triangolare è rivolto verso l'alto~w~ il ~h~bersaglio si trova sopra di te~w~. Un ~h~segnale quadrato~w~ indica che il ~h~bersaglio è alla tua stessa altezza.
-[FEC_NTR]
-Bersaglio successivo
+[ST_DRWN]
+Pesci sfamati
-[FEC_PTT]
-Bersaglio precedente
+[RACE_T4]
+~r~Sei stato squalificato per non aver trovato una macchina.
-[FEC_LBA]
-Sguardo indietro
+[RACE_T5]
+~r~Sei stato squalificato per non aver trovato una moto.
-[FEC_CEN]
-Centra visuale
+[PCJ600]
+PCJ-600
-[FET_CCN]
-Classico
+[FEC_HBB]
+Freno a mano~h~ ~k~ ~VEACC~ ~w~e~h~ ~k~ ~VEBRK~
-[FET_SCN]
-Predefinito
+[HJSTAT]
+~w~Distanza: ~1~.~1~ m Altezza: ~1~.~1~ m Ribaltamenti: ~1~ Rotazione: ~1~°
-[FET_CFT]
-A PIEDI
+[HJSTATW]
+~w~Distanza: ~1~.~1~ m Altezza: ~1~.~1~ m Ribaltamenti: ~1~ Rotazione: ~1~° ...e che grande atterraggio!
-[FET_CCR]
-IN MACCHINA
+[HJSTATF]
+~w~Distanza: ~1~ piedi Altezza: ~1~ piedi Ribaltamenti: ~1~ Rotazione: ~1~°
-[FET_CAC]
-AZIONE
+[HJSTAWF]
+~w~Distanza: ~1~ piedi Altezza: ~1~ piedi Ribaltamenti: ~1~ Rotazione: ~1~° ...e che grande atterraggio!
-[FEC_IBT]
--
+[MPUNLK]
+Nuovi contenuti multigiocatore sbloccati. Umilia gli altri giocatori con i nuovi oggetti a tua disposizione!
-[FEC_MXO]
-MXB1
+[MPUNLKA]
+Tutti i contenuti multigiocatore sbloccati. Umilia gli altri giocatori con i nuovi oggetti a tua disposizione!
-[FEC_MXT]
-MXB2
+[TOUR]
+Soddisfatti o non pagati
-[FEC_UNB]
-NON ASSEGNATO
+[NDL1_A]
+Spaghi pirati
-[FEC_TFL]
-Sguardo+Torretta a SX
+[PIZ1_A]
+Pizza da trambusto
-[FEC_TFR]
-Sguardo+Torretta a DX
+[GS_SCUT]
+MOSTRA INTRO:
-[FEC_MWF]
-VOLANTE SU
+[TR_00]
+GARA UNO
-[FEC_MWB]
-VOLANTE GIÙ
+[TR_01]
+GARA DUE
-[FEC_ORR]
-o
+[TR_02]
+GARA TRE
-[FEC_NUS]
-NON USATO
+[TR_03]
+GARA QUATTRO
-[FEC_LUD]
-Sguardo su
+[TR_04]
+GARA CINQUE
-[FEC_LDU]
-Sguardo giù
+[TR_05]
+GARA SEI
-[FEC_CMP]
-COMBO: SGUARDO SX+DX
+[TR_06]
+GARA SETTE
-[LAW_1A]
-law_1a
+[TR_07]
+GARA OTTO
-[LAW_1B]
-law_1b
+[CHSE]
+INSEGUIMENTO
-[LAW_2A]
-law_2a
+[NOCHANG]
+Non puoi cambiare abito durante questa missione.
-[LAW_2B]
-law_2b
+[OUTF_12]
+Antonio
-[FEH_STA]
-STATISTICHE
+[OUTF_13]
+Tuta
-[FEH_LOA]
-CARICA
+[OUTF_14]
+Bravo ragazzo
-[FEH_CON]
-COMANDI
+[OUTF_15]
+Anticonformista
-[FEH_AUD]
-AUDIO
+[BENZ_AN]
+~w~L'~h~abito 'Antonio'~w~ è disponibile al rifugio.
-[FEH_DIS]
-VIDEO
+[BENZ_SW]
+~w~L'~h~abito 'Tuta'~w~ è disponibile al rifugio.
-[FEH_LAN]
-LINGUA
+[BENZ_GD]
+~w~L'~h~abito 'Bravo ragazzo'~w~ è disponibile al rifugio.
-[FEH_SGA]
-NUOVA PARTITA
+[BENZ_WI]
+~w~L'~h~abito 'Anticonformista'~w~ è disponibile al rifugio.
-[FEO_CON]
-Impostazioni controller
+[RAMPAGE]
+VIOLENZA
-[FEO_AUD]
-Impostazioni audio
+[GS_TTGT]
+TEMPO SUL CARRO:
-[FEO_DIS]
-Impostazioni video
+[GS_O5]
+Per vincere, devi sopravvivere il più a lungo possibile nel carro armato. Danneggia il carro armato per rubarlo a un altro giocatore.
-[FEO_LAN]
-Impostazioni lingua
+[HELP28]
+~w~Per lanciare un'~h~arma esplosiva~w~ premi~h~ ~k~ ~PDFW~. ~w~Più a lungo tieni premuto~h~ ~k~ ~PDFW~ ~w~più lontano l'arma verrà lanciata.
-[FEO_PLA]
-Impostazioni giocatore
+[RATNG53]
+Disonorevole
-[FEA_OUT]
-Uscita
+[RATNG54]
+Ratto ingannevole
-[FEA_ST]
-Stereo
+[RATNG55]
+Pescecane
-[FEA_DTS]
-DTS
+[RATNG56]
+Artista del raggiro
-[FEA_RSS]
-Stazione radio
+[RATNG57]
+Il Don di tutti i bugiardi
-[FEA_NON]
-NO RADIO
+[RATNG11]
+SANGUISUGA
-[FEA_FM0]
-WILDSTYLE
+[CHASE6]
+Liberty Tree Pagina 2
-[FEA_FM1]
-FLASH FM
+[CHASE7]
+Liberty Tree Prima pagina
-[FEA_FM2]
-KCHAT
+[AUTOLD]
+Caricamento dal Memory Stick™ in corso... Non rimuovere il Memory Stick™ o spegnere il sistema.
-[FEA_FM3]
-FEVER 105
+[LDFAIL]
+Caricamento fallito. Il salvataggio è danneggiato.
-[FEA_FM4]
-VROCK
+[MEMCHKA]
+Memory Stick™ non trovato. Sono richiesti almeno
-[FEA_FM5]
-VCPR
+[MEMCHKB]
+per salvare la partita.
-[FEA_FM7]
-EMOTION 98.3
+[MEMCHKC]
+Spazio insufficiente sul Memory Stick™ per salvare la partita. Sono richiesti almeno
-[FEA_FM8]
-WAVE 103
+[MEMCHKD]
+per salvare la partita.
-[FED_BRI]
-Luminosità
+[M_FAIL]
+MISSIONE FALLITA!
-[FED_TRA]
-Tracce :
+[M_OVER]
+MISSIONE TERMINATA!
-[FED_SUB]
-Sottotitoli
+[M_PASS]
+~Y~MISSIONE COMPLETATA! ~n~~1~$
-[FED_WIS]
-Panoramico
+[M_PASSN]
+~Y~MISSIONE COMPLETATA!
-[FED_POS]
-Posizione schermo
+[MRACE11]
+~w~Torna su un veicolo per finire la gara
-[FEP_RES]
-Riprendi
+[FEI_LE1]
+Mostra legenda
-[FEP_STG]
-Avvia partita
+[FEI_LE2]
+Nascondi legenda
-[FEP_STA]
-Statistiche
+[FEI_TA1]
+Metti bersaglio
-[FEP_BRI]
-Briefing
+[FEI_TA2]
+Togli bersaglio
-[FEP_OPT]
-Opzioni
+[C1FREE2]
+levetta analogica sinistra
-[FEP_QUI]
-Esci
+[C3FREE2]
+levetta analogica sinistra
-[FES_LOA]
-Carica partita
+[FEA_MP3]
+TRACCE SCELTE:
-[FES_DEL]
-Elimina partita
+[FEA_NA]
+NON DISPONIBILE
-[FEC_CSU]
-Impostazioni controller
+[MPC_060]
+Antonio
-[FEC_RED]
-Ridefinisci comandi
+[MPC_061]
+Tuta
-[FEC_MOU]
-Impostazioni mouse
+[MPC_062]
+Bravo ragazzo
-[DISTGOL]
-Distanza percorsa su cart da golf (miglia)
+[MPC_063]
+Anticonformista
-[DISTGOM]
-Distanza percorsa su cart da golf (metri)
+[MPC_064]
+Kazuki
-[ST_FAVR]
-Stazione radio preferita
+[NUMDBL1]
+DEBUG 1 (~1~) (~1~)
-[ST_WSTR]
-Stazione radio meno amata
+[SVRMBRS]
+GIOCATORI:
-[ST_FAVV]
-Veicolo preferito
+[RAMP_P]
+VIOLENZA SUPERATA!
-[ST_STAR]
-Totale stelle di sospetto
+[RAMP_F]
+VIOLENZA FALLITA!
-[ST_HEAD]
-Colpi alla testa
+[MPWLPAC]
+ha preso una macchina bersaglio.
-[ST_GANG]
-Gang meno amata
+[MPWLDAC]
+ha consegnato una macchina bersaglio.
-[ST_STGN]
-Totale stelle di sospetto evase
+[LDWAIT]
+Premi ~X~ per continuare.
-[TYREPOP]
-Pneumatici esplosi con proiettili
+[LOADING]
+Caricamento in corso...
-[TYRESLA]
-Pneumatici tagliati con una lama
+[RACEP1]
+1°
-[ST_BRK]
-Numero di uccisioni nel Bloodring
+[RACEP2]
+2°
-[ST_LTBR]
-Permanenza massima nel Bloodring (sec)
+[RACEP3]
+3°
-[ST_GNG1]
-Cubani
+[RACEP4]
+4°
-[ST_GNG2]
-Haitiani
+[RACEP5]
+5°
-[ST_GNG3]
-Teppistelli
+[RACEP6]
+6°
-[ST_GNG4]
-Gang di Diaz
+[FEA_UT]
+TRACCIA SCONOSCIUTA
-[ST_GNG5]
-Sorveglianza
+[LOADIN2]
+Caricamento...
-[ST_GNG6]
-Gang di motociclisti
+[DNH5_X2]
+~r~Non hai piazzato tutte le bombe.
-[ST_GNG7]
-Gang di Vercetti
+[MRACE12]
+HAI
-[ST_GNG8]
-Giocatori di golf
+[MRACE13]
+SECONDI PER TROVARE UN VEICOLO
-[FEA_FM6]
-ESPANTOSO
+[MRACE14]
+SECONDO PER TROVARE UN VEICOLO
-[ST_ASSI]
-Contratti da sicario completati
+[DTB_03]
+~w~Vince la squadra che protegge più a lungo le sue macchine.
-[DISTBIK]
-Distanza percorsa in moto (miglia)
+[PUPCOL]
+ha raccolto un potenziamento
-[DISTBIM]
-Distanza percorsa in moto (metri)
+[TNKCSE]
+Danneggia il carro armato per rubarlo a un altro giocatore.
-[HOTEL]
-Hotel Ocean View
+[TNKTM]
+Per vincere, devi sopravvivere il più a lungo possibile nel carro armato.
-[ICC1_1]
-~g~Utilizza il camioncino dei gelati per distribuire droga in Vice City.
+[MPFAIL]
+FALLIMENTO
-[ICC1_2]
-~g~Parcheggia il camioncino e premi ~h~~k~~VEHICLE_HORN~~w~ per attivare il campanello e attrarre i clienti.
+[GS_LOC2]
+LUOGO:
-[ICC1_3]
-~g~Riceverai soldi per ogni transizione, ma più ne esegui, maggiori saranno le probabilità di attirare l'attenzione della polizia.
+[DTBSWPA]
+Hai respinto i Sindacco per
-[KICK1_9]
-PUNTI DI CONTROLLO RIMANENTI:
+[DTBSWPB]
+Ora distruggi le loro macchine in un tempo minore.
-[FIN_B6]
-Non hai abbastanza soldi per avviare questa missione.
+[DTBSWPC]
+Hai distrutto le macchine dei Forelli in
-[TEX3_3]
-~g~Per raccogliere una bomba, avvicinati con l'elicottero: la bomba verrà automaticamente raccolta.
+[DTBSWPD]
+Ora proteggi le tue macchine per più tempo.
-[TEX3_9]
-~g~Raccogli una bomba avvicinandole l'elicottero.
+[CHANOP]
+Cambia opzione
-[HELP22]
-Raggiungi la casa verde sul radar.
+[MPSSCT]
+LIMITE SOLDI:
-[FES_FMS]
-Formattazione completata. Seleziona OK per continuare.
+[F_RANG2]
+~r~La radio del camion dei pompieri non funziona in metropolitana!
-[FES_SSC]
-Salvataggio completato. Seleziona OK per continuare.
+[T_RANG2]
+~r~Non ci sono rifiuti da raccogliere in metropolitana!
+
+[T_RANGE]
+~r~Qui non ci sono rifiuti da raccogliere!
+
+[FEU_YES]
+SÌ
+
+[FEU_NO]
+NO
+
+[HELP43]
+~w~Usa il freno a mano per far virare più rapidamente la barca.
+
+[RACE_T6]
+~r~Uno dei veicoli è a pezzi, la gara è stata annullata!
+
+[FED_POS]
+POSIZIONE SCHERMO
+
+[FES_DSS]
+Seleziona il salvataggio da eliminare:
+
+[FES_LSS]
+Seleziona il salvataggio da caricare:
[FES_DSC]
Eliminazione completata. Seleziona OK per continuare.
-[FESZ_QC]
-Vuoi sovrascrivere il salvataggio corrotto?
+[FES_DEL]
+Elimina salvataggio
-[FES_CHE]
-Attenzione! Uno o più trucchi sono stati attivati: ciò influenzerà il salvataggio. Si consiglia di non salvare questa partita.
+[FES_DGM]
+ELIMINA SALVATAGGIO
-[FET_SG]
+[ITBEG]
+In principio...
+
+[FET_LG]
+CARICA PARTITA
+
+[FES_SCG]
+Salvare la partita attuale?
+
+[FESZ_QZ]
+Sei sicuro di voler salvare questa partita?
+
+[FES_SSC]
+Salvataggio completato. Seleziona OK per continuare.
+
+[FEM_NTF]
+La memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 non è formattata.
+
+[FES_CFM]
+Formattazione della memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 in corso... Non rimuovere la memory card (8MB) (per PlayStation®2) né il controller e non resettare/spegnere la console!
+
+[FES_LOQ]
+Caricamento fallito! Il salvataggio sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 non è compatibile con questo gioco. Provare a caricare un salvataggio differente. Riavvio del gioco in corso...
+
+[FEM_NTH]
+Nessuna memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1.
+
+[FES_CMP]
+Salvataggio fallito! Controllare la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 e riprovare.
+
+[FESZ_FO]
+La memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 non è formattata. Vuoi formattarla adesso?
+
+[FES_NOC]
+Nessuna memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1.
+
+[FES_LOE]
+Caricamento fallito! Controllare la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 e riprovare. Riavvio del gioco in corso...
+
+[FES_DEE]
+Eliminazione fallita! Controllare la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 e riprovare.
+
+[SLONFM]
+Formattazione fallita! Controllare la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 e riprovare.
+
+[SLONDR]
+Spazio libero insufficiente sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1. Inserire una memory card (8MB) (per PlayStation®2) nell'ingresso MEMORY CARD 1 con almeno 330 KB di spazio libero per salvare questa partita.
+
+[SLNSP]
+Spazio libero insufficiente sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1. Per salvare questa partita sono richiesti almeno altri 101 KB di spazio libero sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1.
+
+[SLONNF]
+La memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 non è formattata. Vuoi formattarla adesso?
+
+[FESZ_FF]
+Formattazione fallita! Controllare la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 e riprovare.
+
+[MCDNSP]
+Nessuna memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1. Per poter salvare la tua partita, inserire una memory card (8MB) (per PlayStation®2) con almeno 330 KB di spazio libero. Iniziare comunque?
+
+[MCGNDP]
+Spazio libero insufficiente sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1. Sono richiesti almeno 330 KB di spazio libero per salvare questa partita. Iniziare comunque?
+
+[MCGNSP]
+Spazio libero insufficiente sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1. Per salvare questa partita sono richiesti almeno altri 101 KB di spazio libero sulla memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1. Iniziare comunque?
+
+[FESZ_WR]
+Salvataggio dati in corso... Non rimuovere la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1, né il controller e non resettare/spegnere la console!
+
+[FELD_WR]
+Caricamento dati in corso... Non rimuovere la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1, né il controller e non resettare/spegnere la console!
+
+[FEDL_WR]
+Eliminazione dati in corso... Non rimuovere la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1, né il controller e non resettare/spegnere la console!
+
+[C0VEWEA]
+levetta analogica destra
+
+[C1VEWEA]
+levetta analogica destra
+
+[C2VEWEA]
+levetta analogica destra
+
+[C3VEWEA]
+tasti direzionali
+
+[C0PDLOO]
+levetta analogica destra
+
+[C1PDLOO]
+levetta analogica destra
+
+[C2PDLOO]
+levetta analogica destra
+
+[C3PDLOO]
+levetta analogica destra
+
+[C0AMMOV]
+levetta analogica sinistra o tasti direzionali
+
+[C1AMMOV]
+levetta analogica sinistra o tasti direzionali
+
+[C2AMMOV]
+levetta analogica sinistra o tasti direzionali
+
+[C3AMMOV]
+levetta analogica sinistra o tasti direzionali
+
+[FEC_ACB]
+Accelera/Frena
+
+[FEM_SL8]
+Salvataggio 8 assente
+
+[FES_SAV]
SALVA PARTITA
-[FEH_BRI]
-BRIEFING
+[FES_FMS]
+Formattazione completata.
-[FEH_MAP]
-MAPPA
+[MCDNCK]
+Controllo della memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 in corso... Non rimuovere la memory card (8MB) (per PlayStation®2) né i controller e non resettare/spegnere la console.
-[FEM_OK]
-OK
+[FESZ_QC]
+Vuoi sovrascrivere questo salvataggio danneggiato?
-[FEC_CRO]
-Abbassarsi
+[NOCONT]
+Inserire un controller analogico (DUALSHOCK®) oppure un controller analogico (DUALSHOCK®2) nell'ingresso controller 1 per continuare.
-[FEC_CR3]
-Abbassarsi (tasto L3)
+[FES_LCF]
+Caricamento fallito! Controllare la memory card (8MB) (per PlayStation®2) inserita nell'ingresso MEMORY CARD 1 e riprovare.
-[FEC_SMT]
-Sottomissione
+[DBGHELP]
+~h~DEBUG MENU~w~ Select Item with ~h~left button & right button. ~w~Press ~h~X button ~w~to launch. Press ~h~TRIANGLE button ~w~to quit menu.
-[FEC_SM3]
-Sottomissione (tasto R3)
+[DBGSEL1]
+Level Skip Menu
-[FEC_RSC]
-Stazioni radio
+[DBGSEL2]
+Car Viewer
-[ST_PR01]
-Apprendista
+[DBGSEL3]
+Character Viewer
-[ST_PR02]
-Aviere
+[DBGSEL4]
+Building Viewer
-[ST_PR03]
-Ufficiale
+[DBGSEL5]
+Weapon Cheat
-[ST_PR04]
-Caporale
+[DBGSEL6]
+Player Cheat
-[ST_PR05]
-Tenente
+[DBGSEL7]
+Weather and Time Changer
-[ST_PR06]
-Sergente
+[DBGSEL8]
+Marketing Camera
-[ST_PR07]
-Capitano
+[DBGSEL9]
+MoCap Menu
-[ST_PR08]
-Biggs
+[DBGSE10]
+USJ Editor
-[ST_PR09]
-Wedge
+[DBGSE11]
+Toggle Player Coordinates
-[ST_PR10]
-Barone rosso
+[DBGFIL0]
+Ped Selector
-[ST_PR11]
-Goose
+[DBGFIL1]
+Car Selector
-[ST_PR12]
-Viper
+[PLCHLD]
+Placeholder: mission will complete in 5 seconds
-[ST_PR13]
-Jester
+[PLCHLD2]
+Placeholder Cutscene
-[ST_PR14]
-Chappy
+[PLCHLD3]
+Placeholder (MOCAP) Cutscene
-[ST_PR15]
-Iceman
+[LS_MAC]
+Ma Cipriani stream
-[ST_PR16]
-Maverick
+[LS_JDT]
+J.D. O'Toole stream
-[ST_PR17]
-Noops
+[LS_SAL]
+Salvatore stream
-[ST_PR18]
-Maresciallo
+[LS_COMP]
+Completed all Missions in this stream
-[ST_PR19]
-Asso
+[TEMP1]
+Number: ~1~
-[FET_LG]
-CARICA PARTITA
+[LS2_H1]
+Use ~h~analog up & down ~w~to select story stream. Use ~h~analog left & right ~w~to select mission. Use ~h~L button & R button ~w~to select an island. Press ~h~X button ~w~to start mission. Press ~h~TRIANGLE button ~w~to exit.
-[CAR_EXP]
-Veicoli distrutti
+[LS2_H2]
+You cannot use levelskip when you are ~h~on a mission.
-[BOA_EXP]
-Imbarcazioni distrutte
+[LS2_VIC]
+~y~Vincenzo Cilli -~g~ ~a~
-[HEL_DST]
-Velivoli distrutti
+[LS2_MAC]
+~y~Ma Cipriani -~g~ ~a~
-[STFT_01]
-Tempo migliore in 'Due ruote d'acciaio'
+[LS2_JDT]
+~y~J.D. O'Toole -~g~ ~a~
-[STFT_02]
-Tempo migliore in 'L'autista'
+[LS2_SAL]
+~y~Salvatore -~g~ ~a~
-[STFT_03]
-Tempo migliore nella prova del fango
+[LS2_MAR]
+~y~Maria -~g~ ~a~
-[STFT_04]
-Tempo migliore con gli aerei radiocomandati
+[LS2_NED]
+~y~Ned Burner -~g~ ~a~
-[STFT_05]
-Tempo migliore con le macchine radiocomandate
+[LS2_DON]
+~y~Donald Love -~g~ ~a~
-[STFT_06]
-Tempo migliore di raccolta con l'elicottero
+[LS2_RAY]
+~y~Ray Machowski -~g~ ~a~
-[STFT_07]
-Tempo migliore in 'Terminal Velocity'
+[LS2_TOS]
+~y~Toshiko Kasen -~g~ ~a~
-[STFT_08]
-Tempo migliore in 'Ocean Drive'
+[FREEON]
+Time Frozen
-[STFT_09]
-Tempo migliore in 'Border Run'
+[FREEOFF]
+Time Unfrozen
-[STFT_10]
-Tempo migliore in 'Capital Cruise'
+[WTC_INS]
+Use ~h~analog up & down ~w~to change weather. Use ~h~analog left & right ~w~to change hour. Press ~h~TRIANGLE button ~w~to exit. Press ~h~SQUARE button ~w~to freeze time.
-[STFT_11]
-Tempo migliore in 'Tour!'
+[WTC_TIM]
+TIME: ~1~:00
-[STFT_12]
-Tempo migliore in 'V.C. Endurance'
+[WTC_WE0]
+WEATHER: CLOUDY
-[STHC_01]
-Punteggio migliore al poligono
+[WTC_WE1]
+WEATHER: EXTRA COLOURS
-[STHC_02]
-Miglior percentuale di colpi al poligono
+[WTC_WE2]
+WEATHER: EXTRA SUNNY
-[STHC_03]
-Numero di traffici di droga
+[WTC_WE3]
+WEATHER: FOGGY
-[HELP24]
-Adesso puoi accettare le missioni del Colonnello.
+[WTC_WE4]
+WEATHER: HURRICANE
-[HELP25]
-Adesso puoi accettare le missioni di Avery Carrington.
+[WTC_WE5]
+WEATHER: RAINY
-[HELP29]
-Puoi far visita al negozio di abbigliamento quando non sei in missione.
+[WTC_WE6]
+WEATHER: SNOW
-[HELP30]
-Quando compri nuovi abiti, il tuo livello di sospetto scenderà a zero.
+[WTC_WE7]
+WEATHER: SUNNY
-[BJM2_22]
-~r~Sei uscito dal poligono di tiro!
+[CVHELP]
+Use ~h~up button and down button ~w~to change character. Use ~h~left button and right button ~w~to rotate camera. HOLD ~h~SQUARE ~w~to zoom in (toggles upper and lower body). Press ~h~TRIANGLE ~w~to quit character viewer.
-[BJM2_23]
-~g~Se esci dal poligono di tiro durante la competizione, fallirai la missione.
+[VMENU1]
+--------- Select a Viewer --------- --- ~h~Car~w~ - Character - Building --
-[ASM4_24]
-Distanza:
+[VMENU2]
+--------- Select a Viewer --------- --- Car - ~h~Character~w~ - Building --
-[RBM1_6]
-~g~Porta Mercedes e la 'Love Juice' al gruppo nello studio di registrazione.
+[VMENU3]
+--------- Select a Viewer --------- --- Car - Character - ~h~Building~w~ --
-[RBM1_3]
-NON NECESSARIO
+[CV_C]
+COMPARISON MODEL
-[HAM1_5]
-NON NECESSARIO
+[CV_0]
+ROW: -- MODEL: player
-[RBM1_11]
-NON NECESSARIO
+[CV_1]
+ROW: 114 MODEL: cop
-[HELP31]
-Per eseguire un assalto in macchina, guarda a destra o a sinistra premendo il tasto L2 o il tasto R2.
+[CV_2]
+ROW: 115 MODEL: swat
-[HELP34]
-Hai bisogno di una mitragliatrice per eseguire un assalto in macchina.
+[CV_3]
+ROW: 116 MODEL: fbi
-[STRIP_1]
-~r~Soldi insufficienti, brutto idiota.
+[CV_4]
+ROW: 117 MODEL: army
-[EXIT_1]
-Premi ~k~~PED_SPRINT~ per uscire.
+[CV_5]
+ROW: 118 MODEL: medic
-[ASM1_A]
-Mr. Teal, il tuo aiuto nello sradicare gli stranieri è stato inestimabile per il nostro lavoro. Ho un altro compito con un contatto più 'diretto'.
+[CV_6]
+ROW: 119 MODEL: fireman
-[ASM1_B]
-I dettagli per il prossimo colpo sono stati attaccati sotto al telefono.
+[CV_7]
+ROW: 71 MODEL: male01
-[ASM1_C]
-Ho un altro compito con un contatto più 'diretto'.
+[CV_9]
+ROW: 120 MODEL: taxi_d
-[SCARF]
-Appartamento 3c
+[CV_10]
+ROW: 2 MODEL: pimp
-[LAW4_10]
-La ricca amministrazione ci ha rotto!
+[CV_11]
+ROW: 13 MODEL: criminal01
-[GEN1_04]
-~g~Attraversa la porta per accedere alla piattaforma sul tetto di Gonzalez.
+[CV_12]
+ROW: 14 MODEL: criminal02
-[GEN1_17]
-~g~Gonzalez sta fuggendo! Seguilo attraverso le porte e finiscilo!
+[CV_13]
+ROW: 15 MODEL: male02
-[RCH1_9]
-~b~TEMPO TOTALE: ~1~:~1~
+[CV_14]
+ROW: 16 MODEL: male03
-[RCH1_10]
-~b~TEMPO TOTALE: ~1~:0~1~
+[CV_15]
+ROW: 121 MODEL: fatmale01
-[WHEEL01]
-BONUS DOPPIO SU DUE RUOTE: ~1~$ Distanza: ~1~.~1~ m Tempo: ~1~ secondi
+[CV_16]
+ROW: 17 MODEL: fatmale02
-[WHEEL02]
-BONUS DOPPIO SU DUE RUOTE: ~1~$ Distanza: ~1~ piedi Tempo: ~1~ secondi
+[CV_17]
+ROW: 18 MODEL: female01
-[WHEEL03]
-BONUS SU DUE RUOTE: ~1~$ Tempo: ~1~ secondi
+[CV_18]
+ROW: 19 MODEL: female02
-[WHEEL04]
-BONUS SU DUE RUOTE: ~1~$ Distanza: ~1~.~1~ m
+[CV_19]
+ROW: 20 MODEL: female03
-[WHEEL05]
-BONUS SU DUE RUOTE: ~1~$ Distanza: ~1~ piedi
+[CV_20]
+ROW: 21 MODEL: fatfemale01
-[WHEEL06]
-BONUS IMPENNATA: ~1~$ Distanza: ~1~.~1~ m Tempo: ~1~ secondi
+[CV_21]
+ROW: 22 MODEL: fatfemale02
-[WHEEL07]
-BONUS IMPENNATA: ~1~$ Distanza: ~1~ piedi Tempo: ~1~ secondi
+[CV_22]
+ROW: 23 MODEL: prostitute
-[WHEEL08]
-BONUS IMPENNATA: ~1~$ Tempo: ~1~ secondi
+[CV_23]
+ROW: 24 MODEL: prostitute2
-[WHEEL09]
-BONUS IMPENNATA: ~1~$ Distanza: ~1~.~1~ m
+[CV_24]
+ROW: 25 MODEL: p_man1
-[WHEEL10]
-BONUS IMPENNATA: ~1~$ Distanza: ~1~ piedi
+[CV_25]
+ROW: 26 MODEL: p_man2
-[WHEEL11]
-BONUS FRENATA IN PUNTA: ~1~$ Distanza: ~1~.~1~ m Tempo: ~1~ secondi
+[CV_26]
+ROW: 27 MODEL: p_wom1
-[WHEEL12]
-BONUS FRENATA IN PUNTA: ~1~$ Distanza: ~1~ piedi Tempo: ~1~ secondi
+[CV_27]
+ROW: 28 MODEL: p_wom2
-[WHEEL13]
-BONUS FRENATA IN PUNTA: ~1~$ Tempo: ~1~ secondi
+[CV_28]
+ROW: 29 MODEL: ct_man1
-[WHEEL14]
-BONUS FRENATA IN PUNTA: ~1~$ Distanza: ~1~.~1~ m
+[CV_29]
+ROW: 30 MODEL: ct_man2
-[WHEEL15]
-BONUS FRENATA IN PUNTA: ~1~$ Distanza: ~1~ piedi
+[CV_30]
+ROW: 31 MODEL: ct_wom1
-[ROK3_72]
-Love Fist!
+[CV_31]
+ROW: 32 MODEL: ct_wom2
-[POR1_19]
-Ehi!
+[CV_32]
+ROW: 33 MODEL: li_man1
-[DESPERA]
-Desperado
+[CV_33]
+ROW: 34 MODEL: li_man2
-[MOB_99A]
-Raggiungi il telefono pubblico vicino al Mall in Washington.
+[CV_34]
+ROW: 35 MODEL: li_wom1
-[MOB_98A]
-Raggiungi il telefono pubblico in Vice Point.
+[CV_35]
+ROW: 36 MODEL: li_wom2
-[MOB_96A]
-Raggiungi il telefono pubblico al terminal dell'aeroporto.
+[CV_36]
+ROW: 37 MODEL: docker1
-[MOB_95A]
-Raggiungi il telefono pubblico in Little Havana.
+[CV_37]
+ROW: 38 MODEL: docker2
-[BNK1_1]
-La posso aiutare, signore?
+[CV_38]
+ROW: 39 MODEL: scum_man
-[BNK1_2]
-Un impostore!
+[CV_39]
+ROW: 40 MODEL: scum_wom
-[BNK1_3]
-È impazzito!
+[CV_40]
+ROW: 41 MODEL: worker1
-[BNK1_4]
-Ma chi diavolo sei?
+[CV_41]
+ROW: 42 MODEL: worker2
-[BNK1_5]
-Dov'è il tuo distintivo?
+[CV_42]
+ROW: 43 MODEL: b_man1
-[BNK1_6]
-Eccoli là! Sparate per uccidere!
+[CV_43]
+ROW: 44 MODEL: b_man2
-[MOB_24A]
-Salve: Mr Vercetti?
+[CV_44]
+ROW: 67 MODEL: b_man3
-[MOB_24B]
-Sì.
+[CV_45]
+ROW: 45 MODEL: b_wom1
-[MOB_24C]
-Sono Cortez. Eri invitato al mio party.
+[CV_46]
+ROW: 46 MODEL: b_wom2
-[MOB_24D]
-Sì, ricordo.
+[CV_47]
+ROW: 70 MODEL: b_wom3
-[MOB_24E]
-Mr. Vercetti, è stato davvero uno sfortunato incidente quello avvenuto al tuo accordo.
+[CV_48]
+ROW: 47 MODEL: mod_man
-[MOB_24F]
-Lo so.
+[CV_49]
+ROW: 48 MODEL: mod_wom
-[MOB_24G]
-Sappi che io e la mia gente stiamo facendo il massimo per scoprire cosa è successo.
+[CV_50]
+ROW: 49 MODEL: st_man
-[MOB_24H]
-Se vuoi parlarne in prima persona, mi troverai sulla mia barca. Buona giornata, senor.
+[CV_51]
+ROW: 50 MODEL: st_wom
-[BNK2_2]
-MIRARE 3-2-1 FUOCO!
+[CV_52]
+ROW: 51 MODEL: fan_man1
-[BNK2_3]
-AREA RIPULITA!
+[CV_53]
+ROW: 52 MODEL: fan_man2
-[BNK2_6]
-Questo tipo è pazzo!
+[CV_54]
+ROW: 53 MODEL: fan_wom
-[ANGEL]
-Angel
+[CV_55]
+ROW: 54 MODEL: hos_man
-[CUBJET]
-Jetmax Cubano
+[CV_56]
+ROW: 55 MODEL: hos_wom
-[SANDKIN]
-Sandking
+[CV_57]
+ROW: 56 MODEL: const1
-[POLMAV]
-Maverick della polizia
+[CV_58]
+ROW: 57 MODEL: const2
-[BOXVILL]
-Boxville
+[CV_59]
+ROW: 58 MODEL: shopper1
-[BENSON]
-Benson
+[CV_60]
+ROW: 59 MODEL: shopper2
-[HOTRINA]
-Hotring Racer
+[CV_61]
+ROW: 60 MODEL: shopper3
-[HOTRINB]
-Hotring Racer
+[CV_62]
+ROW: 61 MODEL: stud_man
-[BLOODRA]
-Bloodring Banger
+[CV_63]
+ROW: 62 MODEL: stud_wom
-[BLOODRB]
-Bloodring Banger
+[CV_64]
+ROW: 63 MODEL: cas_man
-[MAFIACR]
-Cruiser della Mafia
+[CV_65]
+ROW: 64 MODEL: cas_wom
-[COP_M2]
-'VICE SQUAD'
+[CV_79]
+ROW: 123 MODEL: gang01 LEONE_A
-[COP_M3]
-'BROWN THUNDER'
+[CV_80]
+ROW: 124 MODEL: gang02 LEONE_B
-[BJM2_20]
-~g~Quando finisci il ~w~tempo~g~ o i ~w~colpi~g~, il turno è finito!
+[CV_81]
+ROW: 69 MODEL: gang03 TRIAD_A
-[BNK3_2]
-Non intendo guidare per te, per niente, e lo dirò ai miei compagni di terapia.
+[CV_82]
+ROW: 3 MODEL: gang04 TRIAD_B
-[FEM_SL1]
-Salvataggio 1 non trovato
+[CV_83]
+ROW: 4 MODEL: gang05 DIABLO_A
-[FEM_SL2]
-Salvataggio 2 non trovato
+[CV_84]
+ROW: 5 MODEL: gang06 DIABLO_B
-[FEM_SL3]
-Salvataggio 3 non trovato
+[CV_85]
+ROW: 68 MODEL: gang07 YAKUZA_A
-[FEM_SL4]
-Salvataggio 4 non trovato
+[CV_86]
+ROW: 6 MODEL: gang08 YAKUZA_B
-[FEM_SL5]
-Salvataggio 5 non trovato
+[CV_87]
+ROW: 7 MODEL: gang09 YARDIE_A
-[FEM_SL6]
-Salvataggio 6 non trovato
+[CV_88]
+ROW: 8 MODEL: gang10 YARDIE_B
-[FEM_SL7]
-Salvataggio 7 non trovato
+[CV_89]
+ROW: 9 MODEL: gang11 COLOMBIAN_A
-[FEM_SL8]
-Salvataggio 8 non trovato
+[CV_90]
+ROW: 10 MODEL: gang12 COLOMBIAN_B
-[FEA_CHA]
-Modifica uscita audio in STEREO. Attendere...
+[CV_91]
+ROW: 11 MODEL: gang13 HOOD_A
-[FEA_CHD]
-Attenzione! Modifica uscita audio da STEREO a DTS. Attendere...
+[CV_92]
+ROW: 12 MODEL: gang14 HOOD_B
-[FEI_SEL]
-Seleziona
+[CV_93]
+ROW: 89 MODEL: gang15 Forelli thug1
-[FEI_BAC]
-Indietro
+[CV_94]
+ROW: 90 MODEL: gang16 Forelli thug2
-[FEI_RES]
-Riprendi
+[CV_95]
+ROW: 88 MODEL: gang17 Sindacco thug1
-[FEI_NAV]
-Naviga
+[CV_96]
+ROW: 89 MODEL: gang18 Sindacco thug2
-[FEI_BTX]
-Tasto / -
+[CV_109]
+ROW: 65 MODEL: SAL_01 Salvatore (Mob Don)
-[FEI_BTT]
-Tasto " -
+[CV_110]
+ROW: 66 MODEL: RAY_01 Ray (Bad Cop)
-[FEI_STA]
-Tasto START -
+[CV_111]
+ROW: 72 MODEL: VINC_01 Vincenzo Cilli
-[FEI_BTD]
-; = > < -
+[CV_112]
+ROW: 73 MODEL: GRDANG1 Avenging Angel
-[FEI_STO]
-Stop
+[CV_113]
+ROW: 74 MODEL: NED_01 Ned Burner (Reporter)
-[MOB_68A]
-Ehi Tommy, ho una sorpresa per te.
+[CV_114]
+ROW: 75 MODEL: MASTOR Massimo Torrini (Assassin)
-[MOB_68B]
-Sono allo studio cinematografico con dei grandi artisti.
+[CV_115]
+ROW: 76 MODEL: TOOL_01 JD O'Toole
-[MOB_68C]
-Perché non vieni a farci visita?
+[CV_116]
+ROW: 77 MODEL: Not used Fthr Kenny
-[MOB_68D]
-Lo sai che è una buona idea, vero? Ci vediamo.
+[CV_117]
+ROW: 78 MODEL: GRDANG2 Avenging Angel 2
-[OUTFT1]
-Da strada
+[CV_118]
+ROW: 79 MODEL: M_HOLE Mayor RC Hole
-[OUTFT2]
-Eleganti
+[CV_119]
+ROW: 80 MODEL: FRANFOR Franco Forelli
-[OUTFT3]
-Tuta
+[CV_120]
+ROW: 81 MODEL: KAZUKI Kazuki Kasen
-[OUTFT4]
-Sportivo
+[CV_121]
+ROW: 82 MODEL: PAULIE Paulie Sindacco
-[OUTFT5]
-Havana
+[CV_122]
+ROW: 83 MODEL: HOPPER Jane Hopper
-[OUTFT6]
-Da poliziotto
+[CV_123]
+ROW: 84 MODEL: AVERY Avery Carrington
-[OUTFT7]
-Da rapina
+[CV_124]
+ROW: 85 MODEL: CASA Giovanni Casa
-[OUTFT8]
-Casual
+[CV_125]
+ROW: 86 MODEL: BABY Giovanni Casa (baby)
-[OUTFT9]
-Mr. Vercetti
+[CV_126]
+ROW: 87 MODEL: MCAFFRY Det. Leon McAffrey
-[OUTFT10]
-Da corsa
+[CV_127]
+ROW: 92 MODEL: EIGHT 8Ball
-[OUTFT13]
-MC Tommy
+[CV_128]
+ROW: 93 MODEL: MAR_01 Maria
-[HOTR_07]
-Nuovo miglior tempo: ~1~:0~1~
+[CV_129]
+ROW: 94 MODEL: LOVE_01 Donald Love
-[HOTR_08]
-Tempo: ~1~:~1~
+[CV_130]
+ROW: 95 MODEL: MICKEYH Mickey H
-[GEN3_45]
-Arriveranno fra pochi minuti: troviamo un buon punto dove appostarci...
+[CV_131]
+ROW: 96 MODEL: WAYNE Wayne (Biker Dude)
-[CAR_AS1]
-BENI CONCESSIONARIA ACQUISITI
+[CV_132]
+ROW: 97 MODEL: BIKER1 Biker Dude 1
-[CAR_AS2]
-~g~La concessionaria d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[CV_133]
+ROW: 98 MODEL: BIKER2 Biker Dude 2
-[BUYSAVE]
-~g~Se non sei in missione, potrai ora salvare la partita da qui gratuitamente.
+[CV_134]
+ROW: 99 MODEL: DONOVAN O'Donovan
-[BUYGARG]
-~g~Potrai anche depositare i mezzi in questo garage.
+[CV_135]
+ROW: 100 MODEL: KAS_01 Toshiko Kasen (kimono)
-[STRPBUY]
-Club Pole Position acquistato: ~1~$
+[CV_136]
+ROW: 101 MODEL: WKAS_01 Toshiko Kasen (western)
-[STRP_R3]
-Premi il tasto R3 per acquistare il club Pole Position per ~1~$
+[CV_137]
+ROW: 104 MODEL: JDMADE JD O'Toole - Made Man
-[NBMN_R3]
-Premi il tasto R3 per acquistare Elswanko Casa per ~1~$
+[CV_138]
+ROW: 106 MODEL: THUG_01 Sicilian Thug 1
-[GA_4]
-Le bombe per le macchine costano 1000$
+[CV_139]
+ROW: 107 MODEL: THUG_02 Sicilian Thug 2
-[GA_5]
-La tua macchina ha già una bomba installata.
+[CV_140]
+ROW: 109 MODEL: CAMP_MAN Campaign Worker
-[GA_6] { reVC update }
-Parcheggiala, attivala premendo il ~h~~k~~VEHICLE_FIREWEAPON~~w~ e DATTELA A GAMBE!
+[CV_141]
+ROW: 110 MODEL: CAMP_WOM Campaign Worker 2
-[GA_7] { reVC update }
-Arma la bomba con il ~h~~k~~VEHICLE_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla.
+[CV_142]
+ROW: 111 MODEL: MIGUEL Miguel
-[GA_6B] { reVC update }
-Parcheggiala, attivala premendo il ~h~~k~~VEHICLE_FIREWEAPON~~w~ e DATTELA A GAMBE!
+[CV_143]
+ROW: 112 MODEL: DELIASS Deli Assistant
-[GA_7B] { reVC update }
-Arma la bomba con il ~h~~k~~VEHICLE_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla.
+[CV_144]
+ROW: 113 MODEL: HOBO_01 Donald Love 2
-[MOB_70A]
-Tommy, sono io, il Colonnello Cortez. Ascolta senor, credo tu sia una persona capace di risolvere i problemi.
+[CV_68]
+ROW: 122 MODEL: HITMAN Hitman
-[MOB_70B]
-Mi troverai sulla mia barca.
+[CV_146]
+ROW: 125 MODEL: HOLEJOG Mayor RC Hole (Jogging outfit)
-[PICK1]
-Giubbotto antiproiettile consegnato all'hotel Ocean View!
+[CV_147]
+ROW: 126 MODEL: Chauff Chauffeur
-[PICK2]
-.357 consegnato al nascondiglio!
+[CV_148]
+ROW: 128 MODEL: plr2 (Lawyer)
-[PICK3]
-Motosega consegnata al nascondiglio!
+[CV_149]
+ROW: 129 MODEL: plr3 (Travel clothes)
-[PICK4]
-Lanciafiamme consegnato al nascondiglio!
+[CV_150]
+ROW: 130 MODEL: plr4 (Chauffeur)
-[PICK5]
-.308 Fucile di precisione consegnato al nascondiglio!
+[CV_151]
+ROW: 131 MODEL: plr5 (Hockey mask)
-[PICK6]
-Mitragliatore consegnato al nascondiglio!
+[CV_152]
+ROW: 132 MODEL: plr6 (Tuxedo)
-[PICK7]
-Lanciamissili consegnato al nascondiglio!
+[CV_153]
+ROW: 133 MODEL: plr7 (Avenging Angel)
-[PICK8]
-Sea Sparrow adesso disponibile alla villa!
+[CV_154]
+ROW: 134 MODEL: plr8 (The King of Rock'n Roll)
-[PICK9]
-Carro armato adesso disponibile alle caserme!
+[CV_155]
+ROW: 135 MODEL: plr9 (Cock's Mascot)
-[PICK10]
-Hunter adesso disponibile alle caserme!
+[CV_156]
+ROW: 136 MODEL: plr10 (Boxer Shorts)
-[HELP41]
-o puoi speronarli con il tuo mezzo
+[CV_157]
+ROW: 137 MODEL: plr11 (Bad Super Hero)
-[ICC1_6]
-~g~Utilizza il Mr. Whopee per distribuire i prodotti Cherry Poppers per Vice City.
+[CV_158]
+ROW: 138 MODEL: plr12 (Dragon)
-[ICC1_12]
-PROPRIETÀ ACQUISTATA!
+[CV_159]
+ROW: 139 MODEL: PHILC Phil Cassidy
-[CLOTH1]
-Abiti eleganti consegnati a Rafaels in Ocean Beach.
+[CV_160]
+ROW: 140 MODEL: GREASE Grease Zuko
-[CLOTH2]
-Abiti da strada consegnati al nascondiglio.
+[CV_161]
+ROW: 141 MODEL: GUN_ASS Gun assistant
-[CLOTH3]
-Tuta consegnata a Tooled Up nel Mall North Point.
+[CV_162]
+ROW: -- MODEL: JD_shot JD shot dead
-[CLOTH4]
-Abiti sportivi consegnati al club di Golf in Leafs Links.
+[CV_163]
+ROW: -- MODEL: BODYBAG bodybag
-[CLOTH5]
-Abiti havana consegnati a Little Havana Streetwear in Little Havana.
+[CV_164]
+ROW: 142 MODEL: SAL_CON Sal Convict
-[CLOTH6]
-Abiti da poliziotto consegnati alla stazione di polizia in Washington Beach.
+[VV_131]
+ID:131 MODEL: Landstalker (TBC)
-[CLOTH7]
-Abiti casual consegnati a Gash nel Mall North Point.
+[VV_135]
+ID:135 MODEL: Perenial (TBC)
-[CLOTH8]
-Abiti Mr. Vercetti consegnati a Collar & Cuffs in Ocean Beach.
+[VV_138]
+ID:138 MODEL: Firetruck
-[CLOTH9]
-Abiti da corsa consegnati a Jocksport in Downtown.
+[VV_141]
+ID:141 MODEL: Manana (TBC)
-[CLOTH10]
-Abiti da rapina consegnati al club Malibu in Vice Point.
+[VV_148]
+ID:148 MODEL: FBI Car (TBC)
-[RBM1_9]
-~g~Recupera della Love Juice dallo spacciatore per i Love Fist!
+[VV_152]
+ID:152 MODEL: Kuruma (TBC)
-[MOB_62A]
-Tommy, sono Ricardo Diaz. Ti volevo ringraziare per l'aiuto ai miei uomini.
+[VV_164]
+ID:164 MODEL: Dodo (TBC)
-[MOB_62B]
-Ho chiesto a quel coglione di Cortez e mi ha detto che il vero affare sei tu. Amico, vienimi a trovare.
+[VV_169]
+ID:169 MODELL: Rc Bandit
-[MOB_62C]
-Ho bisogno di un tipo come te. Sono circondato da coglioni,
+[VV_170]
+ID:170 MODEL: BellyUp (Triad) (TBC)
-[MOB_62D]
-coglioni dappertutto, davvero. Ti farò diventare ricco.
+[VV_172]
+ID:172 MODEL: Leone Sentinel (TBC)
-[GOAWAY2]
-~g~Ritorna quando avrai completato le missioni dei motociclisti.
+[VV_174]
+ID: 174 MODEL: Yakuza (TBC)
-[COL2_9]
-Idiota di un americano! Ti sei fatto seguire!
+[VV_179]
+ID:179 MODEL: Flatbed (TBC)
-[LOADCOL]
-Caricamento...
+[VV_181]
+ID:181 MODEL: Borgnine Taxi (TBC)
-[STFT_17]
-Tempo migliore in 'Parco divertimenti PCJ'
+[VV_188]
+ID: 188 MODEL: Sindacco Argento (TBC)
-[STFT_18]
-Tempo migliore in 'Prova del fango'
+[VV_189]
+ID: 189 MODEL: Forelli Lexcess (TBC)
-[STFT_19]
-Tempo migliore in 'Tracciato di prova'
+[VV_192]
+ID:192 MODEL: Speeder (TBC)
-[NEW_REC]
-Nuovo record!!! ~1~ minuti e ~1~ secondi.
+[BV_H1]
+Press CIRCLE to swap building model.
-[BMX_HOW]
-~g~Fai due giri sul tracciato sterrato, ~y~passando attraverso~g~ i ~y~PUNTI DI CONTROLLO~g~!
+[BV_0A]
+ROW: 2 - Portland. Safehouse Exterior. Press CIRCLE to swap.
-[BMXREW1]
-~g~Ogni volta che batti il tuo record precedente per i due giri,
+[BV_0B]
+ROW:24 - Portland. Safehouse Interior. Press CIRCLE to swap.
-[BMXREW2]
-~g~otterrai una ~y~RICOMPENSA~g~ più cospicua!
+[BV_1]
+ROW: 3 - Portland. Ferry Terminal.
-[BMXRAIN]
-~g~È come se piovesse...
+[BV_2A]
+ROW: 4 - Portland. Callahan Bridge 1. Press CIRCLE to swap.
-[ITBEG]
-All'inizio...
+[BV_2B]
+ROW: 4 - Portland. Callahan Bridge 2. Press CIRCLE to swap.
-[NBMNBUY]
-El Swanko Casa acquistata: ~1~$
+[BV_3]
+ROW: 5 - Portland. Les Cargo Freighter.
-[LNKVBUY]
-Appartamento Links View acquistato: ~1~$
+[BV_4A]
+ROW: 6 - Portland. Doll's House Brothel 1. Press CIRCLE to swap.
-[HYCOBUY]
-Condominio Hyman acquistato: ~1~$
+[BV_4B]
+ROW: 6 - Portland. Doll's House Brothel 2. Press CIRCLE to swap.
-[BUYGARS]
-~g~Puoi parcheggiare altri veicoli in questi garage.
+[BV_5]
+ROW: 7 - Portland. Tower Block.
-[OCHEBUY]
-Appartamento Ocean Heights acquistato: ~1~$
+[BV_6]
+ROW: 8 - Portland. Eddie's Garage.
-[WASHBUY]
-1102 Washington Street acquistata: ~1~$
+[BV_7]
+ROW: 9 - Portland. Bowler's Fist Pub.
-[VCPTBUY]
-3321 Vice Point acquistata: ~1~$
+[BV_8]
+ROW:10 - Portland. Hepburn Heights.
-[SKUMBUY]
-Skumole Shack acquistato: ~1~$
+[BV_9]
+ROW:11 - Portland. Short Stay Hotel.
-[HELP6_C]
-Premi il ~h~~k~~VEHICLE_HANDBRAKE~~w~ per tirare il freno a mano.
+[BV_10]
+ROW:12 - Portland. Car Dealership.
-[HELP2_A]
-Premi il ~h~~k~~PED_SPRINT~~w~ mentre corri per effettuare uno ~h~scatto~w~.
+[BV_11]
+ROW:13 - Portland. Bus Graveyard.
-[HELP4_A]
-Premi il ~h~~k~~VEHICLE_ACCELERATE~~w~ per ~h~accelerare~w~.
+[BV_12A]
+ROW:14 - Portland. Drugs Warehouse 1 (awaiting approval). Press CIRCLE to swap.
-[HELP5_A]
-Premi il ~h~~k~~VEHICLE_BRAKE~~w~ per frenare o, se il veicolo è fermo, per inserire la retromarcia.
+[BV_12B]
+ROW:14 - Portland. Drugs Warehouse 2 (awaiting approval). Press CIRCLE to swap.
-[HELP8_A]
-Premi il ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ per zoomare col fucile e il ~x~tasto /~w~ per allargare il campo.
+[BV_13]
+ROW:15 - Portland. Ma Cipriani's Restaurant.
-[PBOAT_1] { reVC update }
-Premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con i cannoni della barca.
+[BV_14]
+ROW:17 - Portland. Basketball Court, Callahan.
-[SEG3_4] { reVC update }
-~g~Puoi raccogliere una bomba avvicinando il Raider telecomandato. Per posizionare la bomba, premi il ~h~~k~~VEHICLE_FIREWEAPON~.
+[BV_15]
+ROW:18 - Portland. Bike Shop.
-[RCR1_3] { reVC update }
-~g~Se desideri interrompere la missione, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~ per far esplodere la macchina.
+[BV_16]
+ROW:19 - Portland. Building near Basketball Court.
-[HELP32] { reVC update }
-Poi spara con il ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[BV_17A]
+ROW:20 - Portland. Luigi's Nightclub 1.
-[HELP33] { reVC update }
-Poi spara con il ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[BV_17B]
+ROW:20 - Portland. Luigi's Nightclub 2.
-[TTUTOR]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Taxi.
+[BV_17C]
+ROW:20 - Portland. Luigi's Nightclub 3.
-[TTUTOR2]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Taxi.
+[BV_18]
+ROW:21 - Portland. Casa's Gourmet Deli.
-[FTUTOR]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Camion dei pompieri.
+[BV_19]
+ROW:22 - Portland. Rusty Ship.
-[FTUTOR2]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Camion dei pompieri.
+[BV_20]
+ROW:23 - Portland. Door for Shopfront.
-[CTUTOR]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Vigilante.
+[BV_21]
+ROW:25 - Staunton. Casino.
-[CTUTOR2]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Vigilante.
+[BV_22]
+ROW:26 - Staunton. Phil Cassidy's Store.
-[HELP8_B]
-Premi il ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ per ~h~zoomare~w~ col fucile e il ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ per ~h~allargare~w~ il campo.
+[BV_23]
+ROW:27 - Staunton. Zip store.
-[ATUTOR3]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Infermiere.
+[BV_24]
+ROW:28 - Staunton. Container Park.
-[GUN_H1]
-~w~Premi il ~h~~k~~PED_SPRINT~~w~ per comprare. ~w~Premi il ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per uscire.
+[BV_25]
+ROW:29 - Staunton. Ferry Terminal.
-[PU_CF3] { reVC update }
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per sostituire l'arma attuale con quella presente in questo slot.
+[BV_26A]
+ROW:30 - Staunton. Fort Staunton 1 NORTH.
-[PU_CF4] { reVC update }
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per sostituire l'arma attuale con quella presente in questo slot.
+[BV_26B]
+ROW:30 - Staunton. Fort Staunton 2 NORTH.
-[HELP9_B]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per sparare con il fucile di precisione.
+[BV_27A]
+ROW:30 - Staunton. Fort Staunton 1 SOUTH.
-[HELP37]
-Se non vuoi entrare in un veicolo mentre stai assalendo un guidatore, premi il ~h~~k~~PED_SPRINT~~w~.
+[BV_27B]
+ROW:30 - Staunton. Fort Staunton 2 SOUTH.
-[HELP6_A]
-Premi il ~h~~k~~VEHICLE_HANDBRAKE~~w~ per tirare il freno a mano.
+[BV_28]
+ROW:31 - Ferry - Not Visible At Present.
-[HELP6_D]
-Premi il ~h~~k~~VEHICLE_HANDBRAKE~~w~ per tirare il freno a mano.
+[BV_29A]
+ROW:32 - Staunton. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[HELP26]
-Premi il ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per entrare o uscire da un veicolo.
+[BV_29B]
+ROW:32 - Staunton. Safehouse Interior. Press CIRCLE to swap.
-[HELP27]
-Premi il ~h~~k~~VEHICLE_TURRETUP~~w~ o ~h~~k~~VEHICLE_TURRETDOWN~~w~ per spostare il peso sulla moto.
+[BV_30]
+ROW:33 - Staunton. Steps Added To Building.
-[HELP28]
-Premi il ~h~~k~~VEHICLE_TURRETUP~~w~ o ~h~~k~~VEHICLE_TURRETDOWN~~w~ per spostare il peso sulla moto.
+[BV_31]
+ROW:34 - Portland. Outbuilding.
-[HELP35]
-Premi il ~h~~k~~GO_LEFT~~w~ o la ~h~~k~~GO_RIGHT~~w~ per sterzare.
+[BV_32A]
+ROW:34 - Shoreside. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[HELP36]
-Premi il ~h~~k~~GO_LEFT~~w~ o la ~h~~k~~GO_RIGHT~~w~ per sterzare.
+[BV_32B]
+ROW:34 - Shoreside. Safehouse Interior. Press CIRCLE to swap.
-[HELP42]
-Segui il ~q~segnalino rosa~w~ per trovare l'hotel.
+[BV_33]
+Not in Doc - Staunton - Warehouse Interior (not internally approved).
-[HELP19]
-Cammina sul ~q~segnalino rosa~w~ per continuare.
+[BV_34A]
+Not in Doc - Staunton - Church Exterior. Press CIRCLE to swap.
-[HELP1]
-Fermati al centro del ~q~segnalino rosa~w~.
+[BV_34B]
+Not in Doc - Staunton - Church Interior for scripted cutscene. Press CIRCLE to swap.
-[HELP12]
-Cammina nel centro del ~q~segnalino rosa~w~ per attivare una missione.
+[MODWOR]
+Modify World Speed
-[SEG3_6]
-~g~Per colpire con successo un bersaglio, devi sganciare la bomba nell'area con un ~q~segnalino rosa~g~. Puoi posizionare le bombe in un ordine qualsiasi.
+[MODTIT]
+Changing World Speed
-[S_PROMP]
-Quando non sei in missione, puoi salvare la partita raccogliendo il bonus ~h~audiocassetta~w~.
+[NEDS2]
+La passione del colpo
-[HELP16]
-Passa attraverso la porta principale dell'hotel ~h~Ocean View~w~ per entrare nell'edificio.
+[NEDS3]
+Karmageddon
-[HELP43]
-~g~Raggiungi l'hotel ~h~Ocean View~g~ in Ocean Drive.
+[NEDS4]
+Falsi idoli
-[HELI_F1]
-~r~Gara a tappe con l'elicottero annullata!
+[DONS1]
+Il candidato del festino cadaverico
-[AMMUHLP]
-Se hai bisogno di armi, fai un salto ad ~h~Ammu-Nation~w~. Segui il ~h~segnale a forma di pistola~w~ sul radar.
+[GAR_WIL]
+Porta la macchina al garage.
-[HELI_1]
-Tappa elicottero Downtown
+[DONS2]
+Guida il voto
-[HELI_2]
-Tappa elicottero Ocean Beach
+[DONS3]
+Pene elettorali
-[HELI_3]
-Tappa elicottero Vice Point
+[DONS4]
+Elezioni infuocate
-[HELI_4]
-Tappa elicottero Little Haiti
+[DONS5]
+Love & pallottole
-[FST_MFR]
-Stazione radio preferita
+[DONS6]
+La contraffazione conta
-[FST_LFR]
-Stazione radio meno amata
+[DONS7]
+Love agli sgoccioli
-[FEI_HOL]
-Trattieni
+[DONS7AA]
+Toni, devi aiutarmi!
-[FEI_ZOO]
-Zoom
+[DONS7AB]
+O'Donovan ha le prove che mi associano a Salvatore, siamo fottuti!
-[FEI_BTR]
-> < -
+[DONS7AC]
+Calmati, le prove spariscono tutti i giorni.
-[FEI_NA]
-N\D
+[DONS7AD]
+Per non parlare di giudici, testimoni, giurati...
-[MESA]
-Mesa Grande
+[DONS7AE]
+Speravo che la vedessi così.
-[STRP_NO]
-Non puoi ancora comprare il club a luci rosse, prova più tardi.
+[DONS7AF]
+Uno dei miei uomini ha seguito il tipo con le prove.
-[CHSE]
-INSEGUI
+[DONS7AG]
+L'appuntamento è sotto il cavalcavia di Newport.
-[NBMN_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare El Swanko Casa per ~1~$
+[SALS1]
+Una passeggiata nel parco
-[NBMN_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare El Swanko Casa per ~1~$
+[SALS2]
+Toni d'onore
-[NBMN_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare El Swanko Casa per ~1~$
+[SALS3]
+Colto sul fatto
-[LNKV_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare l'appartamento Links View per ~1~$
+[SALS4]
+Ricerca e salvataggio
-[LNKV_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare l'appartamento Links View per ~1~$
+[SALS5]
+Negoziazione pacifica
-[LNKV_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare l'appartamento Links View per ~1~$
+[SALS6]
+Ambasciator porta pena
-[HYCO_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il condominio Hyman per ~1~$
+[RAYS1]
+Sayonara Sindacco
-[HYCO_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il condominio Hyman per ~1~$
+[RAYS2]
+Ga-Yardie!
-[HYCO_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il condominio Hyman per ~1~$
+[RAYS3]
+Crazy '69'
-[OCHE_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare l'appartamento Ocean Heights per ~1~$
+[RAYS4]
+La notte dei rastoni viventi
-[OCHE_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare l'appartamento Ocean Heights per ~1~$
+[RAYS5]
+Scarica abusiva
-[OCHE_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare l'appartamento Ocean Heights per ~1~$
+[MC_01]
+MOCAP Scenes
-[WASH_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare 1102 Washington Street per ~1~$
+[MC_02]
+Non puoi andare in missione quando stai usando il selettore di sequenze.
-[WASH_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare 1102 Washington Street per ~1~$
+[MC_04]
+Seleziona la scena che preferisci e premi CROCE. Premi TRIANGOLO per uscire.
-[WASH_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare 1102 Washington Street per ~1~$
+[MC_03]
+~g~nome sequenza - nome script ~w~
-[VCPT_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare 3321 Vice Point per ~1~$
+[MC_S01]
+1. Biker - mar4
-[VCPT_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare 3321 Vice Point per ~1~$
+[MC_S02]
+2. Bonevoy - jdt1
-[VCPT_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare 3321 Vice Point per ~1~$
+[MC_S03]
+3. Campain - dons3
-[SKUM_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare lo Skumole Shack per ~1~$
+[MC_S04]
+4. Cashchp - tosh4
-[SKUM_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare lo Skumole Shack per ~1~$
+[MC_S05]
+5. Contban - sal5
-[SKUM_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare lo Skumole Shack per ~1~$
+[MC_S06]
+6. Crazy69 - rays3
-[PRNT_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la tipografia per ~1~$
+[MC_S07]
+7. Cuttest - none
-[PRNT_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la tipografia per ~1~$
+[MC_S08]
+8. Deadly - tosh1
-[PRNT_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la tipografia per ~1~$
+[MC_S09]
+9. Donprob - donh6
-[CAR_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il concessionario per ~1~$
+[MC_S10]
+10. Drivnmr - sal8
-[CAR_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il concessionario per ~1~$
+[MC_S11]
+11. Electon - dons7
-[CAR_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il concessionario per ~1~$
+[MC_S12]
+12. Homswet - vic1
-[PORN_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare lo studio cinematografico per ~1~$
+[MC_S13]
+13. Hotwhel - vic6
-[PORN_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare lo studio cinematografico per ~1~$
+[MC_S14]
+14. Kidnapp - jdt5
-[PORN_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare lo studio cinematografico per ~1~$
+[MC_S15]
+15. Landgrb - donh1
-[ICE_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la fabbrica di gelato per ~1~$
+[MC_S16]
+16. Morgue - dons1
-[ICE_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la fabbrica di gelato per ~1~$
+[MC_S17]
+17. Overdos - mar5
-[ICE_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la fabbrica di gelato per ~1~$
+[MC_S18]
+18. Rufjust - salh1
-[TAXI_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la compagnia di taxi per ~1~$
+[MC_S19]
+19. Sayonar - rays1
-[TAXI_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la compagnia di taxi per ~1~$
+[MC_S20]
+20. sicilan - salh5
-[TAXI_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la compagnia di taxi per ~1~$
+[MC_S21]
+21. Theofer - sal1
-[BANK_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il Malibu per ~1~$
+[MC_S22]
+22. Intro
-[BANK_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il Malibu per ~1~$
+[MC_S23]
+23. Final
-[BANK_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il Malibu per ~1~$
+[MC_S24]
+24. Final_2
-[BOAT_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il cantiere navale per ~1~$
+[NEDS1]
+L.C. Confidential
-[BOAT_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il cantiere navale per ~1~$
+[WILGAR2]
+Abbandona la macchina ed esci.
-[BOAT_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il cantiere navale per ~1~$
+{=================================== MISSION TABLE SAL1 ===================================}
-[STRP_L]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il club Pole Position per ~1~$
+[SAL1_M1:SAL1]
+~w~Salvatore vuole parlare.
-[STRP_T]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il club Pole Position per ~1~$
+[SAL1_M2:SAL1]
+~w~Non sto al gioco di Salvatore.
-[STRP_C]
-Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare il club Pole Position per ~1~$
+[SAL1_M3:SAL1]
+~w~Grazie per la donazione, ragazzo... ci si vede.
-[STOCK]
-~r~scorte esaurite
+[SAL1_M5:SAL1]
+~w~Ehi!
-[HELP14]
-Per trovare l'ufficio dell'avvocato, segui la ~h~L~w~ sul radar.
+[SAL1_D1:SAL1]
+~w~Ehi! Crumiro!
-[RAMPAGE]
-VIOLENZA!
+[SAL1_D2:SAL1]
+~w~Prendiamolo!
-[RAMP_F]
-VIOLENZA FALLITA!
+[SAL1_D3:SAL1]
+~w~Eccolo!
-[RAMP_P]
-VIOLENZA COMPIUTA!
+[SAL1_D4:SAL1]
+~w~È andato di là!
-[RAMP_A]
-TUTTE LE VIOLENZE COMPIUTE!
+[SAL1_E1:SAL1]
+~w~Fuggi dal porto!
-[PAGE_01]
-Uccidi ~1~ membri della gang in 2 minuti!
+[SAL1_A1:SAL1]
+~w~Incontrati con la sindacalista, Jane Hopper, a ~y~Portland Docks.
-[PAGE_02]
-Distruggi ~1~ veicoli in 2 minuti!
+[THEO_01:SAL1]
+Ehi capo, tutto bene?
-[PAGE_03]
-Uccidi sparando in corsa ~1~ membri della gang in 2 minuti!
+[THEO_02:SAL1]
+Ti pare che stia bene?
-[PAGE_04]
-Travolgi ~1~ membri della gang in 2 minuti!
+[THEO_03:SAL1]
+No.
-[PAGE_05]
-Fai saltare la testa a ~1~ membri della gang in 2 minuti!
+[THEO_04:SAL1]
+E allora perché fai domande da coglione?
-[SENTXS]
-Sentinel XS
+[THEO_05:SAL1]
+Perché apri la bocca per dire ovvietà?
-[MAP_LEG]
-Legenda
+[THEO_06:SAL1]
+Non posso credere di essere circondato da gente come te.
-[VCNMAV]
-VCN Maverick
+[THEO_07:SAL1]
+Mi dispiace.
-[LG_01]
-Posizione giocatore
+[THEO_08:SAL1]
+Ascolta Toni, scusami. Sei uno dei miei più fidati alleati.
-[LG_02]
-Avery Carrington
+[THEO_09:SAL1]
+Dopo quello che hai fatto, sei diventato come un figlio per me, anzi di più,
-[LG_03]
-Contatto motociclisti
+[THEO_10:SAL1]
+meglio di qualsiasi figlio.
-[LG_04]
-Colonnello Cortez
+[THEO_11:SAL1]
+Tua madre è una donna fortunata.
-[LG_05]
-Ricardo Diaz
+[THEO_12:SAL1]
+Così si dice.
-[LG_06]
-Kent Paul
+[THEO_13:SAL1]
+Anthony, è la fine per i tipi come noi.
-[LG_07]
-Avvocato
+[THEO_14:SAL1]
+Siamo dinosauri, dei dildo... dei dodo, come diavolo si chiamano...
-[LG_08]
-Phil Cassidy
+[THEO_15:SAL1]
+Persino nella mia famiglia mi sento come Gesù circondato da dodici Giuda.
-[LG_09]
-Cantiere navale
+[THEO_16:SAL1]
+Senti questa.
-[LG_10]
-Club Malibu
+[THEO_17:SAL1]
+C'è una sindacalista, una puttana, che mi deve fare un favore,
-[LG_11]
-Cubani
+[THEO_18:SAL1]
+e questa mi chiede dei soldi.
-[LG_12]
-Studio cinematografico
+[THEO_19:SAL1]
+Mi serviva solamente l'accesso al porto per 24 ore durante lo sciopero,
-[LG_13]
-AmmuNation
+[THEO_20:SAL1]
+sciopero che io ho contribuito a organizzare, per far scaricare della droga...
-[LG_14]
-Haitiani
+[THEO_21:SAL1]
+e in cambio ottengo questa merdosa richiesta!
-[LG_15]
-Ferramenta
+[THEO_22:SAL1]
+Sono persone per le quali ho lottato personalmente,
-[LG_16]
-Nascondiglio
+[THEO_23:SAL1]
+persone per le quali ho ucciso, persone oneste.
-[LG_17]
-Fabbrica di gelato
+[THEO_26:SAL1]
+È una disgrazia. È la fine per gli uomini d'onore come me e te.
-[LG_18]
-Taxi Kaufman
+[THEO_27:SAL1]
+Ascoltami Toni, voglio che le porti una cosa.
-[LG_19]
-Love Fist
+[THEO_28:SAL1]
+Vuole stare al gioco di una puttana?
-[LG_20]
-Tipografia
+[THEO_29:SAL1]
+Al momento che scelta abbiamo?
-[LG_21]
-Proprietà
+[THEO_30:SAL1]
+Ascolta: vai là, pagala e dille che vorrei fare due chiacchiere.
-[LG_22]
-Pay 'n' Spray
+[THEO_31:SAL1]
+Vai.
-[LG_23]
-Negozio di vestiario
+[THEO_24:SAL1]
+- E come vengo ripagato? ~n~ - È un insulto.
-[LG_24]
-Dimora di Tommy
+{=================================== MISSION TABLE SAL2 ===================================}
-[LG_25]
-Telefono
+[SAL2_N:SAL2]
+Donne
-[LG_26]
-Stazione radio Wildstyle
+[SAL2_A0:SAL2]
+~w~È uno dei tuoi nuovi tirapiedi, Sal?
-[LG_27]
-Stazione radio Flash FM
+[SAL2_A1:SAL2]
+~w~Signor Leone?
-[LG_28]
-Stazione radio KChat
+[SAL2_A2:SAL2]
+~w~Toni! Come stai?
-[LG_29]
-Stazione radio Fever 105
+[SAL2_A3:SAL2]
+~w~Sono felice che sei passato. Devi fare un lavoretto per me...
-[LG_30]
-Stazione radio VROck
+[SAL2_A4:SAL2]
+~w~Se non riesco a portare quella cagna di sindacalista dalla mia parte, di certo posso farcela con i suoi uomini. 'O capisti?
-[LG_31]
-Stazione radio VCPR
+[SAL2_A:SAL2]
+~w~Raccogli sei ~b~prostitute~w~ e portale al picchetto presso il porto di Portland.
-[LG_32]
-Stazione radio Espantoso
+[SAL2_B0:SAL2]
+~w~Tesoro! Non ci sto a fare le cose di gruppo, idiota!
-[LG_33]
-Stazione radio Emotion 98.3
+[SAL2_B1:SAL2]
+~w~Quando riuscirai a fare più posto, ti farò posto io! Non intendo viaggiare sul tetto, tesoro!
-[LG_34]
-Stazione radio Wave 103
+[SAL2_D0:SAL2]
+~w~Sei da solo, tesoro?
-[LG_36]
-Sun Yard
+[SAL2_D1:SAL2]
+~w~Ehi, bel fusto! Vuoi divertirti un po'?
-[LG_37]
-Club a luci rosse
+[SAL2_D2:SAL2]
+~w~Dolcezza... io e te potremmo divertirci!
-[MAP_YAH]
-TU SEI QUI
+[SAL2_D3:SAL2]
+~w~Dov'è la festa, tesoro?
-[TAXSHRT]
-~g~Puoi utilizzare questo taxi Kaufman per arrivare a destinazione invece di guidare. Ti costerà 9$.
+[SAL2_D4:SAL2]
+~w~Ehi, baby! Vuoi divertirti con me?
-[FE_MLG]
-LEGENDA MAPPA
+[SAL2_D5:SAL2]
+~w~Ciao, zuccherino! ...Sono Candy!
-[FED_RDR]
-RADAR
+[SAL2_F0:SAL2]
+~w~Ehi! Vengo anch'io!
-[FED_HUD]
-INTERFACCIA
+[SAL2_F1:SAL2]
+~w~Ora siamo solo io e te, vero?
-[FED_RDL]
-GRANDE
+[SAL2_F2:SAL2]
+~w~Ci diamo dentro o cosa, tesoro?
-[FED_RDB]
-SOLO SEGNALI
+[SAL2_F3:SAL2]
+~w~Allora, dov'è la festa?
-[FED_HUF]
-DISSOLVENZA
+[SAL2_F4:SAL2]
+~w~Eh dai! Non fare così.
-[FEST_HV]
-Massimo livello missione Vigilante
+[SAL2_F5:SAL2]
+~w~Voglio solo divertirmi con te!
-[BRIBE1]
-Hai appena raccolto una bustarella della polizia: il tuo livello di sospetto è sceso di una stella.
+[SAL2_G0:SAL2]
+~w~Portala al ~y~picchetto!
-[CLOHELP]
-Abiti puliti!
+[SAL2_G1:SAL2]
+~w~Porta le ragazze al ~y~picchetto!
-[SUNSHIN]
-Sunshine Autos
+[SAL2_G2:SAL2]
+~w~Occupati del ~r~cliente!
-[CHERRYP]
-Gelateria Cherry Popper
+[SAL2_G3:SAL2]
+~w~Occupati dei ~r~clienti!
-[KAUFCAB]
-Taxi Kaufman
+[SAL2_G4:SAL2]
+~w~Trova altre ~b~ragazze!
-[BOATYAR]
-Cantiere navale
+[SAL2_H:SAL2]
+~w~Dov'è la festa, tesoro?
-[WANT_L]
-Il tuo livello di sospetto è sospeso: se commetterai un crimine mentre le stelle lampeggiano, il tuo livello di sospetto verrà ripristinato.
+[SAL2_P:SAL2]
+~w~Divertitevi, ragazzi! Omaggio di Salvatore Leone!
-[HOTRNG]
-HOTRING
+[SAL2_I0:SAL2]
+~w~Trovatene un'altra, idiota! Questa è mia!
-[BLODRNG]
-BLOODRING
+[SAL2_I1:SAL2]
+~w~Ehi! Tu chi sei, un dannato guardone?
-[DIRTRNG]
-DIRTRING
+[SAL2_I3:SAL2]
+~w~Ehi! Chi diavolo sei? Prendiamolo!
-[FEC_ABR]
-Accelera, frena o inverti marcia
+[SAL2_I5:SAL2]
+~w~Ehi amico! Mettiti in coda! Noi siamo arrivati prima.
-[FEI_BTU]
-; = -
+[SAL2_I7:SAL2]
+~w~Sei il migliore! Non fermarti... oh sì, paparino!
-[FEI_SCR]
-Scorri
+[SAL2_I9:SAL2]
+~w~Per cui dacci dentro...
-[LG_35]
-Destinazione
+[SAL2_K0:SAL2]
+~w~Mai fare gli stronzi con Toni Cipriani!
-[BOAT_AS]
-~g~Il cantiere navale d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[SAL2_K1:SAL2]
+~w~Forza! Andiamo!
-[BOAT_A2]
-CANTIERE NAVALE COMPLETATO
+[SAL2_K2:SAL2]
+~w~Forza bella! Muovi il culo!
-[BOAT_N]
-Tappa Charlie
+[SAL2_C0:SAL2]
+~w~Ehi! Torna qua, bellezza! ...non mordo mica!
-[BOAT_P]
-~g~Raccogli i pacchi prima dello scadere del tempo.
+[SAL2_C1:SAL2]
+~w~Ehi, dolcezza! Dove stai andando?
-[FEI_R1B]
-Tasto R1 \ R2 -
+[SAL2_L0:SAL2]
+~w~Non ho intenzione di aspettarti tutto il giorno, stronzo!
-[HELP9_A]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per sparare con il fucile di precisione.
+[SAL2_L1:SAL2]
+~w~Bello, guarda che lavoro a ore!
-[HELP21]
-Premi il tasto ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per entrare o uscire da un veicolo.
+[SAL2_X0:SAL2]
+~r~Tempo scaduto!
-[CREAM]
-Distribuzione
+[SAL2_X1:SAL2]
+~r~Hai ucciso troppe prostitute!
-[UMBERTO]
-Cafe Robina
+[SAL2_X2:SAL2]
+~r~Hai attaccato gli scaricatori di porto. Non si fideranno più di te!
-[PU_CF1]
-Premi il tasto ~h~~k~~PED_ANSWER_PHONE~~w~ per raccogliere quest'arma e sostituirla con qualsiasi altra dello stesso tipo in tuo possesso.
+[SAL2_X3:SAL2]
+~r~Hai attaccato le ragazze degli scaricatori di porto. Non si fideranno più di te!
-[FED_RDM]
-MAPPA E INDICATORI
+[SAL2_G5:SAL2]
+~w~Sembra tu abbia un ammiratore.
-[FEC_ILU]
-Sguardo invertito in prima persona :
+[SAL2_I8:SAL2]
+~w~Non vuoi finire in galera, vero dolcezza?
-[NITRO]
-Tutti i taxi adesso hanno il super salto! Premi il pulsante del clacson.
+[SAL2_I6:SAL2]
+~w~Sì! Sì!...
-[RATNG53]
-Inaffidabile
+[SAL2_M:SAL2]
+~w~Cerca di non ucciderle! Trova un'altra ~b~ragazza.
-[RATNG54]
-Imbarazzante
+[SAL2_W1:SAL2]
+~w~Hai solo fino alle 0~1~:~1~ prima che il picchetto cambi turno!
-[RATNG55]
-Hacker
+[SAL2_W2:SAL2]
+~w~Hai solo fino alle ~1~:~1~ prima che il picchetto cambi turno!
-[RATNG56]
-Baro
+[SAL2_G6:SAL2]
+~w~Fermati sul ~y~segnale giallo~w~ per scaricare le ragazze.
-[RATNG57]
-Bugiardo assoluto
+[SAL2_G7:SAL2]
+~w~Disturba il cliente per far uscire la ~b~ragazza~w~ dalla macchina.
-[STHC_04]
-Miglior punteggio con la palla sulla spiaggia
+[SAL2_B:SAL2]
+~w~Non puoi far entrare altre ragazze nella tua macchina.
-[STHC_05]
-Miglior risultato Hotring
+{=================================== MISSION TABLE SAL3 ===================================}
-[STFT_13]
-Tempo migliore corsa in elicottero a Downtown
+[SAL3_A0:SAL3]
+~w~Toni! Come sta il mio ragazzo?
-[STFT_14]
-Tempo migliore corsa in elicottero a Ocean Beach
+[SAL3_A1:SAL3]
+~w~Mi sembri un po' magro. La mamma ti fa da mangiare come si deve?
-[STFT_15]
-Tempo migliore corsa in elicottero a Vice Point
+[SAL3_A2:SAL3]
+~w~Sto bene, signor Leone.
-[STFT_16]
-Tempo migliore corsa in elicottero a Little Haiti
+[SAL3_A3:SAL3]
+~w~Ascolta, questi sindacalisti, mi hanno davvero scocciato.
-[STFT_21]
-Tempo migliore nell'Hotring
+[SAL3_A5:SAL3]
+~w~...ma dobbiamo dare una scossa ad alcuni pezzi grossi 'meno ricettivi'.
-[STFT_22]
-Giro migliore nell'Hotring
+[SAL3_B0:SAL3]
+~w~Spaventa i ~r~sindacalisti importanti.~w~ Assicurati che capiscano la lezione!
-[STFT_20]
-Tempo migliore in 'Cone Crazy'
+[SAL3_B3:SAL3]
+~w~D'ora in poi faranno come viene loro ordinato.
-[HELP44]
-Fermati nel ~q~ segnalino rosa.
+[SAL3_BA:SAL3]
+~w~Sei un pazzo! Non voglio problemi!
-[HELP45]
-Premi il ~h~~k~~PED_DUCK~~w~ per abbassarti. In questo modo migliorerai la precisione con le armi da fuoco.
+[SAL3_CA:SAL3]
+~w~Cosa diavolo combini? Sei matto?!?
-[RCR1_5]
-Corsa Bandit radiocomandati
+[SAL3_DA:SAL3]
+~w~Mi mancavano ancora due rate! Brutto figlio di puttana!
-[RCPL1_7]
-Corsa Baron radiocomandati
+[SAL3_BB:SAL3]
+~w~D'ora in avanti vedi di fare come ti viene ordinato!
-[RCH1_11]
-Raccolta Raider radiocomandato
+[SAL3_CB:SAL3]
+~w~Stai fuori dagli affari di Leone!
-[FEA_CTD]
-Attenzione! Questa caratteristica richiede delle periferiche compatibili DTS. Vuoi procedere?
+[SAL3_A4:SAL3]
+~w~Alcuni iniziano a vedere le cose a modo mio...
-[FEM_STE]
-USA STEREO
+[SAL3_A6:SAL3]
+~w~Hai capito cosa intendo?
-[FEM_UDY]
-USA DTS
+[SAL3_B1:SAL3]
+~w~Da morti non impareranno la lezione. Non uccidere altri ~r~sindacalisti!
-[GREET]
-Saluti da...
+[SAL3_B2:SAL3]
+~r~Dovevi spaventarli, non ucciderli!
-[LANCE_1]
-Ehi bello, guida con più prudenza!
+[SAL3_B4:SAL3]
+~w~Trova un altro ~r~sindacalista~w~ da raddrizzare.
-[LANCE_2]
-Ehi, guarda cosa hai combinato!
+{=================================== MISSION TABLE SAL5 ===================================}
-[LANCE_3]
-Ehi, ma dove stai andando adesso?
+[SAL5_D3:SAL5]
+~w~Porta il ~h~veicolo ~w~nel garage.
-[LANCE_4]
-Cosa diavolo stai facendo?
+[SAL5_D4:SAL5]
+~w~Esci dal veicolo e abbandona il ~h~garage.
-[LAW4_15]
-Più soldi!
+[SAL5_B:SAL5]
+~w~Recupera un veicolo con quattro posti e carica dei ~b~rinforzi.
-[MERC_5]
-Bella machina, Mr. Vercetti.
+[SAL5_C:SAL5]
+~w~Ti serve un veicolo con quattro posti.
-[MERC_26]
-PIÙ VELOCE, PIÙ VELOCE, PIÙ VELOCE!
+[SAL5_C0:SAL5]
+~w~Carica i ~b~rinforzi.
-[MERC_27]
-Attento Tommy, mi hanno rifatto il naso il mese scorso.
+[SAL5_C1:SAL5]
+~w~Hai bisogno di un veicolo con più posti per caricare i ~b~rinforzi.
-[MERC_28]
-Tommy, guida con attenzione.
+[SAL5_C2:SAL5]
+~w~Raggiungi i ~y~Portland Docks.
-[MERC_29]
-Tommy, vai più piano!
+[SAL5_AA:SAL5]
+~w~Ehi... Ese... dovevi arrivare ore fa!
-[MERC_30]
-Tommy per favore, fai fuori qualcun altro!
+[SAL5_AB:SAL5]
+~w~Basta lagne, Miguel. Hai la roba?
-[MERC_31]
-Tommy, baby, non farmi fuori!
+[SAL5_AG:SAL5]
+~w~...hai i soldi?
-[MERC_32]
-Tommy, sono felice che hai rubato questa macchina!
+[SAL5_AH:SAL5]
+~w~Certo...
-[MERC_40]
-Mi sono davvero divertita.
+[SAL5_AI:SAL5]
+~w~Cosa?
-[MERC_43]
-Adios, angioletto.
+[SAL5_AJ:SAL5]
+~w~Brutto bastardo!
-[MERC_44]
-Continua a lavorarci, capito?
+[SAL5_C8:SAL5]
+~w~Entra nel ~b~veicolo~w~ con la droga e scappa via!
-[MERC_45]
-Ciao, bellezza.
+[SAL5_C9:SAL5]
+~w~Porta il veicolo al ~y~garage di Salvatore.
-[COL5_17]
-Oddio, hanno un elicottero!
+[SAL5_D1:SAL5]
+~w~Torna sul ~b~veicolo!
-[COL5_18]
-Abbatti l'elicottero!
+[SAL5_D2:SAL5]
+~r~La droga è stata distrutta!
-[COL5_19]
-Tommy, abbatti quell'elicottero!
+[SAL5_AF:SAL5]
+~w~Eh eh ah ah! Mi piaci, Toni. Hai due grosse palle, come un toro!
-[COL5_20]
-Sta tornando! Distruggi l'elicottero!
+[SAL5_C3:SAL5]
+~w~Semina la polizia!
-[COL5_21]
-Ma guarda quanto è grosso!
+[SAL5_D5:SAL5]
+~r~La droga è stata sequestrata!
-[COL5_22]
-Sta tornando di nuovo!
+[SAL5_AD:SAL5]
+~w~Ehi, anch'io ho i miei impegni, Toni. La prossima volta mi trovo un altro compratore!
-[FEA_DSM]
-Attenzione! Questo salvataggio utilizza il DTS e richiede periferiche compatibili. Scegli se vuoi procedere utilizzando l'uscita DTS o quella STEREO.
+[SAL5_AE:SAL5]
+~w~Non troveresti qualcun altro pronto a pagare tanto quanto noi.
-[STFT_23]
-Tempo migliore per la tappa Charlie
+[SAL5_D6:SAL5]
+~w~Fai fuori gli ~r~spacciatori!
-[HELP50]
-Premi il tasto ~h~~k~~PED_ANSWER_PHONE~~w~ per posizionare la visuale da dietro.
+[CONT_01:SAL5]
+Stai zitta, puttana ingrata.
-[HELP51]
-Premi il tasto ~h~~k~~PED_ANSWER_PHONE~~w ~ per posizionare la visuale da dietro.
+[CONT_06:SAL5]
+È l'unico modo nel quale riuscirai a toccarmi in questa vita.
-[HELP52]
-Premi il tasto ~h~~k~~PED_ANSWER_PHONE~~w ~ per posizionare la visuale da dietro.
+[CONT_07:SAL5]
+Perché cazzo dovrei aver voglia di toccarti?
-[HELP53]
-Premi il tasto ~h~~k~~PED_CYCLE_WEAPON_LEFT~~w~ o il tasto ~h~~k~~PED_CYCLE_WEAPON_RIGHT~~w~ per passare in rassegna le armi disponibili.
+[CONT_08:SAL5]
+Non mi piace la roba usata.
-[HELP46]
-Sono disponibili otto diversi tipi di arma.
+[CONT_09:SAL5]
+Mi fai schifo.
-[HELP47]
-Puoi trasportare una sola arma per tipo alla volta: un tipo di pistola, un tipo di fucile a pompa...
+[CONT_12:SAL5]
+Oh, ti prego. Sai una cosa?
-[HELP54]
-~w~Costo: ~1~$ ~r~Comprando quest'arma sostituirai quella in uso.
+[CONT_15:SAL5]
+Ciao, Toni...
-[HELP2A2]
-Premi il tasto ~h~~k~~PED_SPRINT~~w~ mentre corri per effettuare uno ~h~scatto~w~.
+[CONT_16:SAL5]
+Voglio i miei soldi, vecchio!
-[HLPSN_A]
-Il fucile di precisione ti permette di ingrandire l'immagine e colpire i bersagli con precisione dalla distanza.
+[CONT_17:SAL5]
+Fuori di qui, puttana.
-[HLPSN_B]
-Tieni premuto il tasto ~h~~k~~PED_LOCK_TARGET~~w~ per ~h~mirare~w~ col fucile di precisione.
+[CONT_18:SAL5]
+Ehi, Anthony, sei troppo buono.
-[HLPSN_C]
-Tieni premuto il tasto ~h~L1~w~ per ~h~mirare~w~ col fucile di precisione.
+[CONT_19:SAL5]
+Donne, che vuoi farci, eh?
-[HLPSN_D]
-Premi il tasto ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ per ~h~zoomare~w~ col fucile e il tasto ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ per ~h~allargare il campo~w~.
+[CONT_20:SAL5]
+Fortunatamente c'è qualcuno di cui posso fidarmi... tu, Toni.
-[HLPSN_E]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile di precisione.
+[CONT_21:SAL5]
+Sei molto importante per me, te l'ho mai detto?
-[HLPSN_F]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile di precisione.
+[CONT_22:SAL5]
+Non ti si drizza nemmeno più, vecchio bastardo.
-[HLPSN_G]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile di precisione.
+[CONT_23:SAL5]
+Non con te. Non mi piace usare i cessi pubblici, brutta zoccola!
-[PLANE_H]
-Usa il tasto ~h~~k~~VEHICLE_ACCELERATE~~w~ per accelerare e a sinistra e a destra per curvare.
+[CONT_24:SAL5]
+È molto importante. Ascolta, adesso ci siamo solo io e te al comando.
-[PLANE_4] { reVC update }
-{Usa il tasto ~h~~k~~VEHICLE_ACCELERATE~~w~ per accelerare e a sinistra e a destra per curvare.}
-Usa la levetta analogica destra per accelerare, premi la levetta analogica sinistra in basso per salire, in alto per scendere e a sinistra e a destra per curvare.
+[CONT_25:SAL5]
+Abbiamo sbaragliato quegli imbecilli.
-[HELP55]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per attaccare lo chef.
+[CONT_26:SAL5]
+Come fai a saperlo? Sei più interessato a uscire con gli uomini!
-[STPR_8]
-Club Pole Position
+[CONT_27:SAL5]
+E tu sei felice solamente quando hai le mutande calate fino alle caviglie
-[STPR_9]
-3321 Vice Point
+[CONT_28:SAL5]
+e la schiena contro un muro!
-[STPR_10]
-Appartamento Links View
+[CONT_29:SAL5]
+Merda, ho conosciuto dei conigli cui piace scopare meno di te!
-[STPR_11]
-El Swanko Casa
+[CONT_33:SAL5]
+Allora, sta arrivando una spedizione di quello che sai.
-[STPR_12]
-1102 Washington Street
+[CONT_34:SAL5]
+Questa operazione ci farà diventare entrambi importanti.
-[STPR_13]
-Appartamento Ocean Heights
+[CONT_35:SAL5]
+Deve filare tutto liscio.
-[STPR_14]
-Skumole Shack
+[CONT_36:SAL5]
+Ho solo bisogno di una persona di cui fidarmi, che segua alcuni miei affari.
-[STPR_15]
-Condominio Hyman
+[CONT_37:SAL5]
+Va bene Toni, ci sentiamo più tardi.
-[RCCANX]
-~r~Aereo radiocomandato annullato.
+[CONT_38:SAL5]
+Un'altra cosa. Non ho mai conosciuto una ragazza con le mutande idrauliche.
-[CLT_HL2]
-Quando viene raccolto un bonus vestiti, vengono rimosse una o due stelle del livello di sospetto.
+[CONT_39:SAL5]
+Cristo, è stupefacente! Perché l'ho sposata?
-[CRED009]
-PROGETTAZIONE MISSIONI
+[CONT_40:SAL5]
+Volevo una troia e ho sposato una zoccola!
-[CRED359]
-LEE JOHNSON
+[CONT_41:SAL5]
+Nella mia vita precedente devo aver veramente fatto incazzare qualcuno,
-[CRED360]
-HENDRIK LESSER
+[CONT_42:SAL5]
+oramai ne sono certo.
-[CRED361]
-PASQUALE STACCHIOTTI
+[CONT_02:SAL5]
+- Se sento ancora una sola parola uscire dalla tua bocca... ~n~ - Dai, forza cazzone.
-[CRED362]
-ENRIQUE FERNANDEZ
+[CONT_04:SAL5]
+- Cosa vuoi fare? Picchiarmi? ~n~ - Perché dovrei...
-[CRED363]
-PAUL BYERS
+[CONT_10:SAL5]
+- Io? Ti faccio schifo? Cosa? ~n~ - Sì! Schifo!
-[CRED364]
-MIKE EMENY
+[CONT_13:SAL5]
+- Mio padre aveva ragione quando diceva che sei solo un ciccione maleducato... ~n~ - Certo, certo, certo...
-[CRED365]
-ROB DUNKIN
+[CONT_43:SAL5]
+- Ascolta, è importante... ~n~ - Vai a farti fottere, Salvatore Leone!
-[CRED366]
-CHARLIE KINLOCH
+[CONT_31:SAL5]
+- Sei solo una testa di cazzo, un povero stronzo italiano. ~n~ - Vai TU a farti fottere! E infatti l'hai data a tutti!
-[CRED367]
-KEVIN HOBSON
+{=================================== MISSION TABLE SAL4 ===================================}
-[CRED368]
-JIM CREE
+[SAL4_I1:SAL4]
+~w~Questo sciopero continuerà fin quando non riceverò delle garanzie dalla città!
-[MOB_66A]
-Tommy, Tommy, Tommy, perché sei tornato qua?
+[SAL4_I2:SAL4]
+~w~Mafiosi: pensano di poter pilotare il sindacato... si sbagliano!
-[MOB_66B]
-Te l'avevo detto che non vi volevamo più vedere.
+[SAL4_I3:SAL4]
+~w~Non mi spaventano!
-[MOB_67A]
-Tommy, credo che dovresti andartene, capito?
+[SAL4_I4:SAL4]
+~w~Sono più uomo io di tutti loro messi assieme!
-[MOB_67B]
-I ragazzi Haitiani non sono molto felici di te.
+[SAL4_I5:SAL4]
+~w~Ascolta questa merda.
-[MOB_18A]
-Tommy, sono Paulo, come stai? Bene amico, ascolta: volevo farti una chiamata.
+[SAL4_I6:SAL4]
+~w~Dovrei far uccidere questa puttana. Sta tirando troppo la corda!
-[MOB_18B]
-Ossignore, amico, non crederai mai che razza di strafiga ho appena incontrato.
+[SAL4_I7:SAL4]
+~w~...beh, possiamo sempre giocare in due.
-[MOB_18C]
-Una prostituta forse, passeggiava per Little Havana.
+[SAL4_I8:SAL4]
+~w~Toni, devi portarle un messaggio a mio nome!
-[MOB_18D]
-Ha detto che si chiamava Mercedes o qualcosa del genere.
+[SAL4_A2:SAL4]
+~w~Rimuovi l'~r~autista~w~ dall'equazione.
-[MOB_18E]
-Oddio, dovresti proprio vedere questa gnocca.
+[SAL4_A3:SAL4]
+~w~Ehi!
-[MOB_18F]
-Riuscirebbe a succhiare via la mina da una matita. Mi detto che ero il migliore che avesse mai avuto e via dicendo.
+[SAL4_A4:SAL4]
+~w~Sali sulla ~b~limousine.
-[MOB_18G]
-Dovresti farci un giro. Ci vediamo!
+[SAL4_A5:SAL4]
+~w~Riporta la limousine alla ~y~stazione radio!
-[MOB_72A]
-Tommy, sono io, Lance. Tieni la bocca chiusa Tommy, perché non ho tempo da perdere.
+[SAL4_A6:SAL4]
+~w~Ora aspetta la Hopper.
-[MOB_72B]
-Non mi importa cos'hai da dire. Perché dovrei? Non te ne frega niente di me, non è vero?
+[SAL4_A7:SAL4]
+~w~Parcheggia la limousine nel posto giusto. Hopper non deve sospettare di nulla.
-[MOB_72C]
-Dovresti fare più attenzione a me. Dovresti darmi la fetta che merito. Lo sai...
+[SAL4_B1:SAL4]
+~w~Al molo dei traghetti di Harwood, a tutto gas!
-[MOB_72D]
-Tommy... senti amico, mi dispiace. È solo che...
+[SAL4_B2:SAL4]
+~w~Agli ordini!
-[MOB_72E]
-La gente mi ha sempre trattato con accondiscenda, come se fossi un bambino.
+[SAL4_C1:SAL4]
+~w~Spaventa a morte la Hopper!
-[MOB_72F]
-Mio fratello lo farebbe. Per favore, amico, tu non farlo.
+[SAL4_C2:SAL4]
+Terrore
-[MOB_72G]
-Devo andare.
+[SAL4S1:SAL4]
+~w~Ehi, fai con calma, non è mica una gara!
-[MOB_63A]
-Tommy, sono Earnest. Earnest Kelly.
+[SAL4S2:SAL4]
+~w~Stai andando dalla parte giusta?
-[MOB_63B]
-Come stai?
+[SAL4S3:SAL4]
+~w~Ehi, non sei il mio autista!
-[MOB_63C]
-Non male. Avrò bisogno di un bastone per camminare, ma dovrei tornare al lavoro ben presto.
+[SAL4S4:SAL4]
+~w~Chi diavolo sei?!?
-[MOB_63D]
-Bene.
+[SAL4S5:SAL4]
+~w~Taci!
-[MOB_63E]
-Ho sentito di Lance. Che brutto storno, eh?
+[SAL4S6:SAL4]
+~w~D'ora in avanti farai tutto ciò che ti dice Salvatore Leone!
-[MOB_63F]
-Sì.
+[SAL4S7:SAL4]
+~w~'O capisti?
-[MOB_63G]
-Mai fidarsi di qualcuno che cammina per strada in pigiama. Ecco cosa dico. Sono felice che l'hai fatto fuori. Spero che sia stato doloroso per lui.
+[SAL4S8:SAL4]
+~w~Io... mi rifiuto di farmi ricattare così!
-[MOB_63H]
-Credo di sì. Non credevo fosse quel genere di persona...
+[SAL4S9:SAL4]
+~w~Vedremo!
-[MOB_63I]
-Tommy, per essere un pazzo violento, sei piuttosto ingenuo. Tornerò presto al lavoro e ti insegnerò un paio di cose sulla vita. Ci sentiamo.
+[SAL4S10:SAL4]
+~w~Fammi subito uscire!
-[MOB_63J]
-Fai con calma, Earnest. Abbi cura di te.
+[SAL4S11:SAL4]
+~w~Ti prego! Ci ucciderai entrambi!
-[MOB_16A]
-Tommy, sono Paulo, que pasa amigo?
+[SAL4S12:SAL4]
+~w~Noooooo!
-[MOB_16B]
-Che cosa vuoi Paul: non sono interessato a vestiti di marca taroccati.
+[SAL4S13:SAL4]
+~w~Cos'ho fatto per meritarmi questo?
-[MOB_16C]
-Molto divertente, amico, ma lo sai che non tratto merce di seconda classe. Nah, ti ho chiamato per sapere se potevo avere una parte nei tuoi film.
+[SAL4_F1:SAL4]
+~w~Dov'è la mia limousine?
-[MOB_16D]
-Quando ero in Inghilterra ho fatto un sacco di cose, sai? Ho attributi più forniti di te, amico.
+[SAL4_F2:SAL4]
+~w~Non sei il mio autista, chiamo la polizia!
-[MOB_16E]
-Paul, grazie per l'offerta, lo terrò presente.
+[SAL4_F3:SAL4]
+~r~Troppo tardi, Hopper ti ha visto!
-[MOB_16F]
-Davvero, non scordarti di me dopo tutto quello che ho fatto per te.
+[SAL4_F4:SAL4]
+~w~Salvatore può andare a farsi fottere!
-[MOB_16G]
-È proprio ciò che sto cercando di dimenticare...
+[SAL4_F5:SAL4]
+~r~La limousine è a pezzi!
-[MOB_17A]
-Tommy Vercetti: come va, Mr. Pezzo Grosso? Ho saputo le tue novità: un vero giocatore in città, eh...
+[SAL4_F6:SAL4]
+~r~Hopper è morta!
-[MOB_17B]
-Paul, sei ubriaco.
+[SAL4_F7:SAL4]
+~r~Hopper è fuggita!
-[MOB_17C]
-No, idiota. Non sono ubriaco. Solo un paio di bicchierini e qualche pillola: non dormo da un paio di giorni, sai...
+[SAL4_F8:SAL4]
+~r~La limousine rovinata ha spaventato Hopper.
-[MOB_17D]
-Comunque, niente prediche. Non sono uno stupido. Chi ti ha portato in questa città? Chi? Io, ecco chi.
+[SAL4_F9:SAL4]
+~r~Hopper è stata spaventata.
-[MOB_17F]
-Davvero?
+[SAL4_P1:SAL4]
+~w~OK! OK! Ne ho avuto abbastanza!
-[MOB_17G]
-Niente prediche, smettila! Ti ho fatto conoscere la gente giusta, ti ho mostrato che corde tirare. Ho fatto molto per te e questo è il modo con cui mi ringrazi.
+[SAL4P1A:SAL4]
+~w~Farò ciò che vuoi.
-[MOB_17H]
-Mi ignori. Non mi aiuti a entrare dopo tutto ciò che ho fatto per te! Cosa credi che sia? Un idiota?
+[SAL4_P2:SAL4]
+~w~Porta Hopper al ~y~picchetto presso al molo dei traghetti.
-[MOB_17I]
-Paul, sta' buono. Sono stato occupato, non fare l'idiota.
+[SAL4_P3:SAL4]
+~w~E non scordi il nostro accordo, signora!
-[MOB_17J]
-Non sono un idiota, chiaro? Questo è ciò che hanno detto in riformatorio. Stai forse cercando guai, amico? Beh, stai per trovarli!
+[SAL4_H1:SAL4]
+~w~Un eccesso di velocità, qualche collisione e un paio di salti dovrebbero spaventare Hopper.
-[MOB_17K]
-Tommy, amico. Per favore. Sei la mia più grande speranza! Per favore, non ridere di me.
+[SAL4_F0:SAL4]
+~r~Troppo tardi! La Hopper ha lasciato la stazione radio!
-[MOB_17L]
-Paul, cerca di dormire, davvero.
+[SAL4_A:SAL4]
+~w~Raggiungi la ~y~stazione radio~w~ prima delle 0~1~:00, quando Hopper si allontanerà.
-[MOB_73A]
-Tommy, sono Steve.
+[SAL4_A1:SAL4]
+~w~Raggiungi la ~y~stazione radio~w~ prima delle ~1~:00, quando Hopper si allontanerà.
-[MOB_73B]
-Ehi Steve.
+{=================================== MISSION TABLE SAL6 ===================================}
-[MOB_73C]
-Ehi, ciao genio. Sei uno spettacolo! Anch'io sono uno spettacolo! Ci adorano. Stiamo battendo tutti i record, amico.
+[SAL6_A0:SAL6]
+~w~Toni, abbiamo problemi. Grossi problemi!
-[MOB_73D]
-Stiamo ottenendo dei grandi riconoscimenti. Finalmente posso comprare una casa al mio vecchio così se ne starà zitto.
+[SAL6_A1:SAL6]
+~w~Che succede, Sal?
-[MOB_73E]
-Eeer, mi sembra perfetto, Steve.
+[SAL6_A3:SAL6]
+~w~Ci stanno massacrando!
-[MOB_73F]
-Perfetto? È meraviglioso! Meraviglioso, MERAVIGLIOSO! Non ha mai creduto in me. Non pensava fossi un artista, ma adesso ce l'ho fatta.
+[SAL6_A4:SAL6]
+~w~Abbiamo appena finito una guerra e... BANG! Siamo nel mezzo di un'altra!
-[MOB_73G]
-Sono il miglior direttore sadomaso di tutti i tempi, amico. Volevo solo dirti che è stato un piacere averti incontrato.
+[SAL6_A5:SAL6]
+~w~Lo giuro, quando le cose vanno bene... mi hanno fatto il malocchio! Un fottuto malocchio!
-[MOB_73H]
-Grazie Steve.
+[SAL6_A6:SAL6]
+~w~Ehi! Non si preoccupi, boss! Ci penserò io.
-[MOB_73I]
-Ti voglio bene, amico. Non cambiare, capito?
+[SAL6_AA:SAL6]
+~w~Sal ha lasciato nel garage le armi di cui avrai bisogno.
-[MOB_73J]
-Capito. Ci sentiamo Steve.
+[SAL6_B:SAL6]
+~w~Ferma l'assalto dei ~r~Diablo~w~ prima che tutti gli uomini di Leone vengano uccisi!
-[BOLLOX]
-Premi il tasto ~o~R1~w~ per sganciare una bomba. Premi il tasto ~t~"~w~ per annullare.
+[SAL6_1:SAL6]
+~w~~1~ uomini di Leone ancora vivi!
-[BRID_OP]
-Pericolo uragano terminato: tutti i ponti per la terra ferma sono nuovamente aperti.
+[SAL6_2:SAL6]
+~w~1 uomo di Leone ancora vivo!
-[BRID_CL]
-Pericolo uragano: tutti i ponti per la terra ferma sono chiusi.
+[SAL6_C1:SAL6]
+~w~Toni, ci stanno massacrando!
-[LG_38]
-Bersaglio
+[SAL6_C2:SAL6]
+~w~Non mi pagano abbastanza per questo!
-[ASSET_C]
-POLE POSITION COMPLETATA!
+[SAL6_C3:SAL6]
+~w~Toni, sei pazzo! Ti farai ammazzare!
-[ASSET_D]
-~g~ Il Club Pole Position generera' un reddito fino ad un massimo di $~1~ al giorno. Ritira il denaro regolarmente!
+[SAL6_E1:SAL6]
+~w~Sal?
-[ST_WHEE]
-Impennata più lunga (sec)
+[SAL6_E2:SAL6]
+~w~Toni! È finita? Com'è andata?
-[ST_STOP]
-Frenata in punta più lunga (sec)
+[SAL6_E3:SAL6]
+~w~Direi male, Sal.
-[ST_2WHE]
-Permanenza su 2 ruote più lunga (sec)
+[SAL6_E4:SAL6]
+~w~Ho salvato un po' di uomini, ma ne abbiamo persi molti prima che arrivassi.
-[ST_WHED]
-Distanza piu' lunga in impennata (m)
+[SAL6_E5:SAL6]
+~w~Ho paura che perderemo questa parte della città.
-[ST_STOD]
-Distanza piu' lunga in frenata (m)
+[SAL6_E6:SAL6]
+~w~Dovranno passare sul mio cadavere! Non è ancora finita!
-[ST_2WHD]
-Distanza piu' lunga su 2 ruote (m)
+[SAL6_E7:SAL6]
+~w~Non voglio perdere niente! I Leone non si ritirano mai!
-[OUTFT11]
-Tuta da ginnastica
+[SAL6_E8:SAL6]
+~w~Mi hai sentito, Toni?
-[OUTFT12]
-Frankie
+[SAL6_E9:SAL6]
+~w~Come desidera, Sal.
-[RELOAD]
-~g~Hai vinto l'abilita' di ricarica veloce!
+[SAL6_G0:SAL6]
+~r~Tutti gli uomini di Leone sono morti.
-[APACHE]
-Hunter consegnato all'eliporto di Ocean Beach
+[SAL6_Z1:SAL6]
+Leone
-[CRED369]
-JOHN MCCARDLE
+[SAL6_Z2:SAL6]
+Diablo
-[CRED370]
-DAVID MURDOCH
+[SAL6_X0:SAL6]
+Got threat
-[CRED371]
-CHRIS BROWN
+[SAL6_X1:SAL6]
+Had threat
-[CRED372]
-PAUL GREEN
+[SAL6_X2:SAL6]
+Find threat
-[CRED373]
-KYLE MILNE
+[SAL6_X3:SAL6]
+Complain
-[CUNTY]
-Nuovi vestiti consegnati alla Proprieta' di Vercetti!
+[SAL6_C0:SAL6]
+~w~Che si fottano! Andiamocene da qui!
-[GOODBOY]
-$50 Come Bonus Buon Cittadino!
+[SAL6_A2:SAL6]
+~w~Dove andremo a finire? I Diablo ci hanno assalito in Hepburn!
-[NEWCONT]
-Nuovo ~h~Punto di Contatto~w~ disponibile alla Marina di Ocean Beach!!
+{=================================== MISSION TABLE SAL7 ===================================}
-[FIRELVL]
-Missione Camion dei pompieri livello ~1~
+[SAL7_01:SAL7]
+~w~Salve, Sal!
-[HELP56]
-Premi il tasto ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ per cambiare la modalità di visuale.
+[SAL7_02:SAL7]
+~w~Toni! Cosa ne pensi della mia nuova macchina?
-[HELP57]
-Premi il tasto ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ per cambiare la modalità di visuale.
+[SAL7_05:SAL7]
+~w~È una meraviglia, vero? Super accessoriata, il massimo in circolazione.
-[HELP58]
-Mentre prendi la mira, premi il ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~, ~h~~k~~PED_CYCLE_TARGET_RIGHT~~w~ per cambiare bersaglio.
+[SAL7_A6:SAL7]
+~w~...oh, sì... crisi di mezz'età!
-[HELP59]
-Mentre prendi la mira, premi il ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~, ~h~~k~~PED_CYCLE_TARGET_RIGHT~~w~ per cambiare bersaglio.
+[SAL7_07:SAL7]
+~w~Sta' zitta! Toni, ascolta.
-[HELP60]
-Se premi il tasto ~h~~k~~PED_SPRINT~~w~ mentre assalti una macchina, non entrerai nel veicolo.
+[SAL7_08:SAL7]
+~w~Ho una valanga di soldi che devono essere raccolti dal mio magazzino presso Callahan Point.
-[HELP61]
-Adesso hai colpi infiniti e il doppio dell'energia su tutti i veicoli.
+[SAL7_10:SAL7]
+~w~Mi fido solo di te per questo lavoro.
-[CRED374]
-KEVIN YUN
+[SAL7_11:SAL7]
+~w~Voi ragazze volete parlare tutto il giorno? Possiamo andare?
-[CRED375]
-ERICK COBBS
+[SAL7_12:SAL7]
+~w~Maledizione, donna! Ti ho dato il permesso di parlare?
-[CRED376]
-RANDY BLAKE
+[SAL7_20:SAL7]
+~w~Forza! muoversi!
-[CRED377]
-BRANDON LIM
+[SAL7_21:SAL7]
+~w~OK...
-[CRED378]
-BRANDON FENOL
+[SAL7_22:SAL7]
+~w~Andiamo!
-[CRED379]
-MICHAEL MANOLE
+[SAL7_23:SAL7]
+~w~Ehi, Toni! Come stai?
-[CRED380]
-ALETHEIA SIMONSON
+[SAL7_30:SAL7]
+~w~Raggiungi il ~y~magazzino.
-[CRED381]
-JOHN JANSEN
+[SAL7_40:SAL7]
+~w~Raccogli tutti i soldi di Salvatore prima che vadano in fumo!
-[FEC_LB1]
-Guarda
+[SAL7_50:SAL7]
+~w~Riporta il malloppo da ~y~Salvatore.
-[FEC_LB2]
-indietro
+[SAL7_NM:SAL7]
+~w~Ritorna dentro! Non hai raccolto tutti i ~g~soldi.
-[FEC_LB3]
-Guarda indietro
+[SAL7_E1:SAL7]
+~w~Uccidiamolo!
-[FEC_R3]
-(tasto R3)
+[SAL7_E2:SAL7]
+~w~Muori!
-[FEC_PED]
-Comandi a piedi
+[SAL7_E3:SAL7]
+~w~Eccone uno!
-[FEC_VEH]
-Comandi in un veicolo
+[SAL7_E4:SAL7]
+~w~Non riesco a vederlo!
-[FEC_FPR]
-Comandi in prima persona
+[SAL7_T1:SAL7]
+~w~Indietro!
-[FEC_CMM]
-Comandi comuni
+[SAL7_T2:SAL7]
+~w~Come ti senti adesso!
-[FEC_PWL]
-Cammina a sinistra
+[SAL7_T3:SAL7]
+~w~Fatevi sotto!
-[FEC_PWR]
-Cammina a destra
+[SAL7_T4:SAL7]
+~w~Prendi questo!
-[FEC_PWF]
-Cammina in avanti
+[SAL7_F1:SAL7]
+~r~Non hai recuperato tutti i soldi di Salvatore in tempo!
-[FEC_PWT]
-Cammina verso la telecamera
+[SAL7_06:SAL7]
+~w~Cos'è questo odore?
-[FEC_PLB]
-Guardati indietro
+[SAL7_42:SAL7]
+~w~Raccogli i ~g~soldi~w~ prima che vadano in fumo!
-[FEC_PFR]
-Spara con l'arma
+{=================================== MISSION TABLE SAL8 ===================================}
-[FEC_CLE]
-Arma precedente
+[SAL8_VE:SAL8]
+~r~v1,2
-[FEC_CRI]
-Arma successiva
+[SAL8_11:SAL8]
+~w~Prendi una macchina e facciamo un giro...
-[FEC_LKT]
-Aggancia bersaglio
+[SAL8_12:SAL8]
+~w~Raggiungi il terminal dei traghetti.
-[FEC_PJP]
-Salto Ped
+[SAL812A:SAL8]
+~w~Ma c'è lo sciopero in corso... non ci saranno traghetti.
-[FEC_PSP]
-Scatto Ped
+[SAL812B:SAL8]
+~w~Tu guida, io mi occupo di pensare.
-[FEC_PSH]
-Sparo Ped
+[SAL8_14:SAL8]
+~w~Dio santo! I poliziotti sono dappertutto! Via da qui, in fretta!
-[FEC_TLF]
-Bersaglio successivo a sinistra
+[SAL8_15:SAL8]
+~w~Dove stiamo andando?
-[FEC_TRG]
-Bersaglio successivo a destra
+[SAL8_16:SAL8]
+~w~Il ponte Callahan!
-[FEC_CCM]
-Centra visuale dietro al giocatore
+[SAL816A:SAL8]
+~w~...Il ponte Callahan non è ancora stato terminato!
-[FEC_SZI]
-Ingrandimento fucile di precisione
+[SAL816B:SAL8]
+~w~Termineranno noi se non ti dai una mossa! Forza, sbrigati!
-[FEC_SZO]
-Riduzione fucile di precisione
+[SAL816C:SAL8]
+~w~Raggiungi ~y~Callahan Bridge.
-[FEC_LKL]
-Sguardo a sinistra
+[SAL8_17:SAL8]
+~w~Cosa diavolo stai combinando?
-[FEC_LRT]
-Sguardo a destra
+[SAL8_18:SAL8]
+~w~Toni! Abbiamo bisogno di una macchina!
-[FEC_LUP]
-Sguardo verso l'alto
+[SAL818A:SAL8]
+~w~Non ho intenzione di camminare per strada!
-[FEC_LDN]
-Sguardo verso il basso
+[SAL8_19:SAL8]
+~w~Hai lasciato indietro ~b~Salvatore~w~. Torna a prenderlo!
-[FEC_LBH]
-Guarda dietro al veicolo
+[SAL8_20:SAL8]
+~w~Portaci fuori di qui!
-[FEC_LLF]
-Guarda a sinistra del veicolo
+[SAL8_22:SAL8]
+~w~Toni, ce l'hai fatta! Sapevo di potermi fidare di te!
-[FEC_LRG]
-Guarda a destra del veicolo
+[SAL822B:SAL8]
+Ora ascolta: conosco un posto sicuro dove possiamo nasconderci per un po'.
-[FEC_HRN]
-Clacson
+[SAL822C:SAL8]
+Forza, andiamo.
-[FEC_HBR]
-Freno a mano
+[SAL8_25:SAL8]
+~w~Avremo bisogno di tutti i cavalli di questo affare! Premi il pedale, Toni!
-[FEC_ACL]
-Acceleratore
+[SAL825A:SAL8]
+~w~OMMERDAAAAAA!
-[FEC_BRK]
-Freno
+[SAL8_26:SAL8]
+Velocità di salto
-[FEC_TSM]
-Attiva/Disattiva sottomissioni
+[SAL8_27:SAL8]
+~w~Bene, questo è il posto.
-[FEC_CRD]
-Cambia stazione radio
+[SAL8_28:SAL8]
+~w~Darò un'occhiata in giro. Voglio controllare delle cose.
-[FEC_ENT]
-Entra/Esci da un veicolo
+[SAL828A:SAL8]
+~w~Ci vediamo qui più tardi.
-[FEC_WPN]
-Spara con l'arma
+[SAL8_29:SAL8]
+~r~Sal è stato ucciso!
-[FEC_PAS]
-Pausa
+[SAL829A:SAL8]
+~w~I poliziotti vi hanno visto!
-[FEC_FPO]
-Attiva/Disattiva visuale di puntamento
+[SAL831:SAL8]
+~w~Rifugio di Staunton ora disponibile!
-[FEC_SMS]
-Mostra/Nascondi puntatore del mouse
+[SAL833:SAL8]
+~w~Stai lontano dai poliziotti!
-[FEC_CMS]
-Cambia la modalità di visuale in qualsiasi situazione
+[SAL823A:SAL8]
+~w~O forse no?
-[FEC_TSS]
-Salva un'immagine di gioco
+[SAL8_24:SAL8]
+~w~Benché la metropolitana e il servizio di traghetti siano ufficialmente aperti,
-[FEC_DBG]
-Menu debug
+[SAL824A:SAL8]
+~w~i militanti dei lavoratori continuano a ostruire parti della città.
-[FEC_TGD]
-Pad game/Debug
+[SAL824B:SAL8]
+~w~Il ponte mobile che connette Staunton Island e Shoreside Vale è stato chiuso.
-[FEC_TDO]
-Disabilita visuale debug
+[SAL824C:SAL8]
+~w~Gli scioperanti si rifiutano di credere alle promesse delle autorità sul futuro dei traghetti.
-[FEC_IVH]
-Inverti mouse orizzontalmente
+[SAL824D:SAL8]
+~w~Come nota positiva, il nuovo ponte Callahan è ormai quasi completato.
-[FEC_MSL]
-PULSANTE SX
+[SAL824E:SAL8]
+~w~Ma il completamento di questo collegamento di Liberty City non può essere rimandato ulteriormente.
-[FEC_MSM]
-PULSANTE CEN
+[SAL8_23:SAL8]
+~w~Lo sciopero che ha tagliato Portland dal resto della città è finalmente terminato.
-[FEC_MSR]
-PULSANTE DX
+[SAL812C:SAL8]
+~w~Raggiungi il ~y~molo dei traghetti.
-[FEC_QUE]
-???
+[SAL8WAN:SAL8]
+I poliziotti vogliono DAVVERO prendere Salvatore! Riverniciando il veicolo farai perdere le tue tracce solo momentaneamente.
-[FEC_TWO]
-Un massimo di due tasti per comando.
+[SAL8_21:SAL8]
+~w~Raggiungi il ~y~ponte!
-[FEC_UMS]
-Un pulsante del mouse può essere assegnato a un solo comando!
+[SAL830:SAL8]
+~w~Raggiungi il ~y~rifugio.
-[FEC_OMS]
-Solo un pulsante del mouse.
+[SAL822A:SAL8]
+~w~Ti bacerei se ti fossi fatto la barba!
-[FEC_UJS]
-Un pulsante del joystick può essere usato per un solo comando!
+[SAL832:SAL8]
+~w~Ti serve un mezzo!
-[FEC_OJS]
-Solo un pulsante del joystick.
+[DRIV_01:SAL8]
+Allora?
-[FEC_PTL]
-Usa Aggancia bersaglio con Arma precedente
+[DRIV_02:SAL8]
+Allora cosa?
-[FEC_PTR]
-Usa Aggancia bersaglio con Arma successiva
+[DRIV_03:SAL8]
+Non fare l'ingenuo con me, ragazzino.
-[FEC_LBC]
-Usa Guarda a sinistra con Guarda a destra
+[DRIV_06:SAL8]
+Ho sentito cosa hai detto in giro sul mio conto.
-[FEC_JBO]
-JOY ~1~
+[DRIV_07:SAL8]
+Credi che sia un'idiota? Eh?
-[FEC_WAR]
-Attenzione
+[DRIV_08:SAL8]
+È questo quello che pensi?
-[FEC_OKK]
-OK
+[DRIV_09:SAL8]
+Capo, non ho detto una sola parola su di lei.
-[FEC_DLF]
-Eliminazione fallita.
+[DRIV_10:SAL8]
+Ma che cazzo, non so cosa mi stia succedendo.
-[FEC_SVU]
-Salvataggio fallito.
+[DRIV_11:SAL8]
+Gesù.
-[FEC_LUN]
-Caricamento fallito. File corrotto: è necessario eliminarlo.
+[DRIV_12:SAL8]
+Sto diventando paranoico, Toni. Un fottuto paranoico.
-[FEC_PAD]
-Gamepad
+[DRIV_13:SAL8]
+Solo perché credo che mi odiano tutti, non vuol dire che non sia così, non so se mi spiego...
-[FEC_JOY]
-Joystick
+[DRIV_14:SAL8]
+C'è qualcuno che mi sta addosso: quel fottuto sindaco!
-[FES_CSA]
-Seleziona una skin dalla seguente lista:
+[DRIV_15:SAL8]
+Mi accuserà di tutte quelle stronzate che stanno accadendo giù nel quartiere.
-[FET_HRD]
-IMPOSTAZIONI PREDEFINITE RIPRISTINATE
+[DRIV_16:SAL8]
+Tutte! Comprese quelle che ho fatto davvero.
-[FET_MST]
-STERZO VIA MOUSE
+[DRIV_17:SAL8]
+Coraggio, dobbiamo occuparci di questa faccenda.
-[FEC_STR]
-NUM ASTERISCO
+[DRIV_04:SAL8]
+- Facevo lo stesso quando tua madre batteva ancora. ~n~ - Qual è il problema?
-[FET_MIG]
-SINISTRA, DESTRA, ROTELLA PER MODIFICARE
+{=================================== MISSION TABLE JDT1 ===================================}
-[FET_CIG]
-INDIETRO PER AZZERARE - PULSANTE SX, INVIO PER MODIFICARE
+[JDT1_CA:JDT1]
+~w~Sono sicuro che le ragazze mi stiano fregando.
-[FET_DSN]
-Skin predefinita.bmp
+[JDT1_CB:JDT1]
+~w~Ci conviene perlustrare il quartiere e vedere di persona.
-[FET_RSO]
-RIPRISTINATE IMPOSTAZIONI ORIGINALI
+[JDT1_DA:JDT1]
+~w~Quella è una delle mie ragazze!
-[FET_RSC]
-HARDWARE NON DISPONIBILE - RIPRISTINATE IMPOSTAZIONI ORIGINALI
+[JDT1_DB:JDT1]
+~w~Ehi! Riconosco quella ragazza.
-[FEA_3DH]
-HARDWARE AUDIO
+[JDT1_DC:JDT1]
+~w~È una delle mie ragazze.
-[FEA_SPK]
-CONFIGURAZIONE ALTOPARLANTI
+[JDT1_DD:JDT1]
+~w~Quella è una delle nostre.
-[FEM_LOD]
-DISTANZA VISUALE
+[JDT1_DE:JDT1]
+~w~Quella ragazza lì...
-[FEM_VSC]
-SINCRONIA FRAME
+[JDT1_DF:JDT1]
+~w~Fermati vicino a lei.
-[FEM_FRM]
-LIMITATORE FRAME
+[JDT1_DG:JDT1]
+~w~Accosta vicino a lei.
-[FEM_MM]
-MENU PRINCIPALE
+[JDT1_DH:JDT1]
+~w~Carichiamola in macchina.
-[FED_RES]
-RISOLUZIONE
+[JDT1_DI:JDT1]
+~w~Parcheggia vicino a lei.
-[FET_CTL]
-IMPOSTAZIONI DEI COMANDI
+[JDT1_DJ:JDT1]
+~w~Avvicinati a lei.
-[FET_OPT]
-OPZIONI
+[JDT1_MA:JDT1]
+~w~Ciao JD. Stavo giusto per portarti questi, davvero!
-[FEC_MSH]
-SENSIBILITÀ MOUSE
+[JDT1_MB:JDT1]
+~w~Ehi! Non ti fidi più di me, JD?
-[FEC_IVV]
-INVERTI MOUSE VERTICALMENTE
+[JDT1_MC:JDT1]
+~w~Ehi JD. Poco movimento... ecco tutto quello che ho.
-[FET_MTI]
-CONFIGURAZIONE COL MOUSE
+[JDT1_MD:JDT1]
+~w~Parli del diavolo... Ecco i tuoi fottuti soldi!
-[FEC_FNC]
-F~1~
+[JDT1_ME:JDT1]
+~w~Ehi JD. Ho i tuoi soldi proprio qui.
-[FEC_IRT]
-INS
+[JDT1_MF:JDT1]
+~w~Non credevi mica che mi sarei tenuta questi soldi, vero?
-[FEC_DLL]
-CANC
+[JDT1_MG:JDT1]
+~w~Stai controllando noi ragazze, JD?
-[FEC_HME]
-HOME
+[JDT1_MH:JDT1]
+~w~Eccoli qua... contali pure se vuoi!
-[FEC_END]
-FINE
+[JDT1_EA:JDT1]
+~w~Ehi! Quel pappone sta derubando una mia ragazza!
-[FEC_PGU]
-PAG SU
+[JDT1_EB:JDT1]
+~w~Toni, recupera i soldi!
-[FEC_PGD]
-PAG GIÙ
+[JDT1_EC:JDT1]
+~w~Cosa diavolo sta facendo quel pappone?
-[FEC_UPA]
-SU
+[JDT1_ED:JDT1]
+~w~Sta rubando i miei soldi!
-[FEC_DWA]
-GIÙ
+[JDT1_EE:JDT1]
+~w~Prendilo, Toni!
-[FEC_LFA]
-SINISTRA
+[JDT1_45:JDT1]
+~w~Riprendi al pappone i ~g~soldi.
-[FEC_RFA]
-DESTRA
+[JDT1_46:JDT1]
+~w~Il pappone è scappato!
-[FEC_NUM]
-NUM
+[JDT1_FA:JDT1]
+~w~In quella macchina c'è una mia ragazza!
-[FEC_NMN]
-NUM~1~
+[JDT1_FB:JDT1]
+~w~Avvicinati in retromarcia alla ~b~macchina~w~, così posso dare una sbirciata.
-[FEC_FWS]
-NUM /
+[JDT1_FC:JDT1]
+~w~...piano adesso, non vogliamo disturbarli!
-[FEC_PLS]
-NUM +
+[JDT1_FD:JDT1]
+~w~Più vicino...
-[FEC_MIN]
-NUM -
+[JDT1_FE:JDT1]
+~w~Più vicino...
-[FEC_DOT]
-NUM .
+[JDT1_FF:JDT1]
+~w~Piano...
-[FEC_NLK]
-BLOC NUM
+[JDT1_IA:JDT1]
+~w~Ma che cazzo, Toni! Li hai spaventati!
-[FEC_ETR]
-INVIO
+[JDT1_GA:JDT1]
+~w~Maledizione, Toni! Non vedo un accidente!
-[FEC_SLK]
-BLOC SCORR
+[JDT1_75:JDT1]
+~w~Aspetta che la ~b~ragazza~w~ dia i soldi a JD!
-[FEC_PSB]
-PAUSA
+[JDT1_HA:JDT1]
+~w~...oh sì!
-[FEC_BSP]
-INDIETRO
+[JDT1_HB:JDT1]
+~w~Forza, baby!
-[FEC_TAB]
-TAB
+[JDT1_HC:JDT1]
+~w~Vengo, vengo!
-[FEC_CLK]
-BLOC MAIUSC
+[JDT1_HD:JDT1]
+~w~...oh Sì!
-[FEC_RTN]
-RET
+[JDT1_HE:JDT1]
+~w~È stato meraviglioso!
-[FEC_LSF]
-MAIUSC SX
+[JDT1_HF:JDT1]
+~w~Abbiamo finito?
-[FEC_RSF]
-MAIUSC DX
+[JDT1_JA:JDT1]
+~w~Bel lavoro, Toni!
-[FEC_LCT]
-CTRL SX
+[JDT1_JB:JDT1]
+~w~Non credo che le ragazze di questo turno mi causeranno altri problemi.
-[FEC_RCT]
-CTRL DX
+[JDT1_LA:JDT1]
+~w~Toni! Hai fatto davvero una bella cazzata!
-[FEC_LAL]
-ALT SX
+[JDT1_LB:JDT1]
+~w~Me ne torno al club!
-[FEC_RAL]
-ALT DX
+[JDT1_ML:JDT1]
+~w~Ancora ~1~$ da raccogliere!
-[FEC_LWD]
-WIN SX
+[JDT1O01:JDT1]
+~w~Sali sul ~b~furgone di JD.
-[FEC_RWD]
-WIN DX
+[JDT1O02:JDT1]
+~w~Hai lasciato indietro ~b~JD~w~. Torna a prenderlo!
-[FEC_WRC]
-CLIC WIN
+[JDT1O03:JDT1]
+~w~Aspetta che ~b~JD~w~ salga su.
-[FEC_SPC]
-BARRA
+[JDT1O04:JDT1]
+~w~Cerca le ragazze di JD nel Red Light District.
-[WIN_TTL]
-Grand Theft Auto VC
+[JDT1O05:JDT1]
+~w~Ritorna al ~y~club di JD.
-[WIN_95]
-Grand Theft Auto VC non è supportato da Windows 95
+[JDT1O07:JDT1]
+~w~Fermati vicino alla ~b~ragazza.
-[WIN_DX]
-Grand Theft Auto VC richiede DirectX versione 8.1 o superiore
+[JDT1O08:JDT1]
+~w~Uccidi il ~r~pappone.
-[FET_EIG]
-IMPOSSIBILE ASSEGNARE UN COMANDO A QUESTA AZIONE
+[JDT1O09:JDT1]
+~w~Raccogli i soldi da una delle ~b~ragazze di JD.
-[FET_DAM]
-MODELLAZIONE ACUSTICA DINAMICA
+[JDT1_F1:JDT1]
+~r~Il furgone di JD è stato distrutto!
-[FEQ_SRE]
-Sei sicuro di voler uscire? Tutti i progressi dall'ultimo salvataggio verranno persi. Vuoi procedere?
+[JDT1_F2:JDT1]
+~r~JD è morto!
-[FEQ_SRW]
-Sei sicuro di voler uscire dal gioco?
+[JDT1_F3:JDT1]
+~r~Non hai raccolto abbastanza soldi durante il turno!
-[FET_QG]
-ESCI DAL GIOCO
+[JDT1_D1:JDT1]
+~w~Le ragazze di JD lavorano nel ~y~Red Light District.~w~ Ritorna lì!
-[FEN_STA]
-AVVIA LA PARTITA
+[JDT1_F4:JDT1]
+~r~Sono morte troppe ragazze di JD!
-[FET_PAU]
-MENU PAUSA
+[JDT1_KA:JDT1]
+~w~Cosa diavolo era?
-[REPLAY]
-REPLAY
+[JDT1_KB:JDT1]
+~w~Abbiamo colpito qualcosa?
-[FEC_ANS]
-Azione
+[JDT1_KC:JDT1]
+~w~Attento a come guidi, Toni!
-[CVT_MSG]
-Conversione texture per prestazioni ottimali con la tua scheda video
+[JDT1_81:JDT1]
+~w~Hai spaventato il tipo! Non vuole di certo un pubblico!
-[FEC_SFT]
-MAIUSC
+[JDT1O10:JDT1]
+~w~Avvicinati alla ~b~macchina~w~ nel vicolo.
-[FEH_VMP]
-VEDI MAPPA
+[JDT1O11:JDT1]
+~w~Suona il clacson per attirare la loro attenzione!
-[FES_DEE]
-Eliminazione fallita! Prova nuovamente.
+[JDT1O12:JDT1]
+~w~Più a lungo lascerai lavorare la ragazza, maggiori saranno i guadagni.
-[FES_CMP]
-Salvataggio fallito! Prova nuovamente.
+[JDT1_MO:JDT1]
+Debito
-[FESZ_WR]
-Salvataggio partita. Un momento...
+[JDT1_H1:JDT1]
+~w~Usa ~k~ ~VEHN~ per suonare il clacson.
-[FELD_WR]
-Caricamento partita. Un momento...
+[JDT1_WA:JDT1]
+~w~Muoviti! Il turno delle ~b~ragazze~w~ finisce alle ~1~:~1~!
-[FEDL_WR]
-Eliminazione salvataggio. Un momento...
+[JDT1_WB:JDT1]
+~w~Muoviti! Il turno delle ragazze finisce alle ~1~:~1~!
-[PCRESRT]
-Avvio nuova partita. Un momento...
+[JDT1O06:JDT1]
+~w~Raccogli i soldi di JD dalle sue prostitute. Fai in fretta, il loro turno finisce alle ~1~:~1~.
-[FET_STI]
-Configurazione standard
+[JDT1_WC:JDT1]
+~w~Muoviti! Il turno delle ~b~ragazze~w~ finisce alle ~1~:0~1~!
-[FET_CTI]
-Configurazione classica
+[JDT1_WD:JDT1]
+~w~Muoviti! Il turno delle ragazze finisce alle ~1~:0~1~!
-[FET_PS]
-IMPOSTAZIONE SKIN GIOCATORE
+[JDT1P06:JDT1]
+~w~Raccogli i soldi di JD dalle sue prostitute. Fai in fretta, il loro turno finisce alle ~1~:0~1~.
-[FEH_NA]
-OPZIONE NON DISPONIBILE
+[BONE_01:JDT1]
+Ehi JD! Vieni fuori!
-[FEH_MPH]
-MOUSE, FRECCE PER MUOVERSI - PAGSU, PAGGIÙ, ROTELLINA PER LO ZOOM, L - LEGENDA
+[BONE_02:JDT1]
+Ehi JD, fottuto depravato, esci da questo cazzo di posto
-[FEA_MP3]
-RIPRODUTTORE MP3
+[BONE_03:JDT1]
+prima che entri io e ti spezzi le gambe.
-[NO_PCCD]
-Inserisci il CD di GTA Vice City o premi Esc per annullare
+[BONE_04:JDT1]
+Sto venendo... ma non in quel senso, ah ah ah!
-[FEH_SSA]
-FRECCE PER MUOVERSI - S PER SALVARE
+[BONE_05:JDT1]
+Ehi Toni, que pasa? Abbracciami.
-[FES_CMI]
-ULTIMA MISSIONE COMPLETATA
+[BONE_06:JDT1]
+Woah, sei tutto appiccicoso!
-[FET_STS]
-STATISTICHE SALVATE NEL FILE 'STATS.HTML' + 'STATS.TXT'
+[BONE_07:JDT1]
+Oh è quella roba che si spalmano le spogliarelliste, sai...
-[WIN_VDM]
-Memoria video insufficiente per eseguire Grand Theft Auto VC
+[BONE_08:JDT1]
+Ne vanno matte, sai. La mettono dappertutto e uh... allora, come andiamo?
-[FEC_ERI]
-Errore! Uno o più azioni non sono assegnate a nessun tasto o pulsante. Assicurati che a tutte le azioni corrisponda un comando.
+[BONE_09:JDT1]
+Ma come cazzo sei vestito?
-[FEC_TFU]
-Torretta + Inclina in su
+[BONE_10:JDT1]
+Cosa, questo? Sono l'esploratore del sesso.
-[FEC_TFD]
-Torretta + Inclina in giù
+[BONE_11:JDT1]
+Sai che mi piace... sperimentare, no?
-[FET_RIG]
-SELEZIONA IL NUOVO COMANDO PER QUESTA AZIONE
+[BONE_16:JDT1]
+Sai, questo è un problema. Ci stanno fregando.
-[FEA_NM3]
-NESSUN FILE MP3 TROVATO
+[BONE_17:JDT1]
+Bene, aspetta qui.
-[FEA_MPB]
-INCREMENTO VOLUME MP3
+[BONE_18:JDT1]
+Devo andare a cambiarmi... questa cosa, sai...
-[FEA_MUS]
-VOLUME MUSICA
+[BONE_19:JDT1]
+Ehi Raven, fine della festa, metti via il doppio vibratore.
-[FEA_SFX]
-VOLUME EFFETTI
+[BONE_20:JDT1]
+Ehi Toni, andiamo a fare un giro insieme.
-[CVT_ERR]
-Spazio su disco esaurito; è necessario liberare dello spazio prima di poter procedere. Premi ESC per annullare.
+[BONE_21:JDT1]
+Dobbiamo andare a controllare delle cose... OK! OK!
-[FEA_ADP]
-RILEVAMENTO AUTOMATICO
+[BONE_12:JDT1]
+- Non c'è niente di male, eh? Puoi guardare se vuoi. ~n~ - Sei davvero malato, non dire un'altra parola.
-{=================================== MISSION TABLE AMBULAE ===================================}
+[BONE_14:JDT1]
+- OK, rilassati Toni... ~n~ - Dove sono i miei soldi?
-[ATUTOR2:AMBULAE]
-~g~Conduci i pazienti all'ospedale guidando CON PRUDENZA! Qualsiasi scossone può ucciderli.
+{=================================== MISSION TABLE JDT2 ===================================}
-[A_FULL:AMBULAE]
-~r~Ambulanza piena!
+[JDT2_I1:JDT2]
+~w~Grazie a Dio sei qua, Toni!
-[A_FAIL2:AMBULAE]
-~r~La tua scarsa sollecitudine è stata fatale al paziente!
+[JDT2_I2:JDT2]
+~w~Ho appena ricevuto la soffiata che stanno arrivando i poliziotti!
-[A_FAIL3:AMBULAE]
-~r~Il paziente è morto!
+[JDT2_I3:JDT2]
+~w~Allora? Hai un permesso.
-[A_PASS:AMBULAE]
-Salvato!
+[JDT2_I4:JDT2]
+~w~Non per alcune delle cose che avvengono qua dentro!
-[A_COMP2:AMBULAE]
-Non ti stancherai mai!
+[JDT2_I5:JDT2]
+~w~Salvatore è dentro, sta facendo una... visita 'speciale'... alle ragazze...
-[A_COMP1:AMBULAE]
-Missioni Infermiere completate: ~1~$
+[JDT2_I6:JDT2]
+~w~Dobbiamo farlo uscire prima che arrivino i poliziotti!
-[A_CANC:AMBULAE]
-~r~Missione Infermiere annullata!
+[JDT2_I7:JDT2]
+~w~Aspettalo sul davanti!
-[A_COMP3:AMBULAE]
-Missione Infermiere completata! Non ti stancherai mentre corri!
+[JDT2_I8:JDT2]
+~w~Mai un momento di tregua...
-[ALEVEL:AMBULAE]
-Missione Infermiere livello ~1~
+[JDT2_05:JDT2]
+~w~Portami subito via di qui!
-[A_FAIL1:AMBULAE]
-Missione Infermiere terminata.
+[JDT2_06:JDT2]
+~w~Toni? Semina i poliziotti! Non portare quegli idioti a casa mia!
-[A_SAVES:AMBULAE]
-PERSONE SALVATE: ~1~
+[JDT2_A1:JDT2]
+~w~Sali in ~b~macchina.
-{=================================== MISSION TABLE ASSIN1 ===================================}
+[JDT2_A2:JDT2]
+~w~Non abbandonare ~b~Salvatore!~w~ Torna a prenderlo!
-[ASM1_5:ASSIN1]
-~r~Ha completato le sue consegne!
+[JDT2_A3:JDT2]
+~w~Porta Salvatore a ~y~casa.
-[ASM1_6:ASSIN1]
-Consegne rimanenti:
+[JDT2_A5:JDT2]
+~r~Salvatore è morto!
-[ASM1_7:ASSIN1]
-~g~Carl Pearson, fattorino di una pizzeria. Uccidilo prima che completi le sue consegne.
+[JDT2_C1:JDT2]
+~w~Oggi hai fatto un bel lavoro, ragazzo. Mi è sempre piaciuto il tuo stile.
-[ASM1_D:ASSIN1]
-Mr. Teal, il tuo aiuto nello sradicare gli stranieri è stato inestimabile per il nostro lavoro.
+[JDT2_C2:JDT2]
+~w~Grazie, signor Leone.
-{=================================== MISSION TABLE ASSIN2 ===================================}
+[JDT2_C3:JDT2]
+~w~Sai, credo che Vincenzo stia approfittando troppo del tuo tempo.
-[ASM2_1:ASSIN2]
-~g~Mrs. Dawson lascerà presto la gioielleria in Vice Point. Devi ucciderla. Deve sembrare un incidente d'auto.
+[JDT2_C4:JDT2]
+~w~Ho bisogno di un bravo ragazzo come te.
-[ASM2_3:ASSIN2]
-~g~Sta per esplodere! Allontanati!
+[JDT2_C5:JDT2]
+~w~Chiamami ogni tanto. Zio Sal si occuperà di te.
-[ASM2_4:ASSIN2]
-~r~Hai danneggiato la sua auto, ma lei non è sopra! Adesso non ci entrerà di sicuro!
+[JDT2_A9:JDT2]
+~r~Salvatore è stato beccato!
-[ASM2_5:ASSIN2]
-~r~È riuscita a scappare!
+[JDT2_B2:JDT2]
+~w~Semina la polizia!
-[ASM2_6:ASSIN2]
-~r~Sei stato visto troppo vicino alla scena dell'incidente!
+[JDT2_A6:JDT2]
+~w~Torna alla ~b~macchina~w~ di Salvatore prima che i poliziotti lo becchino!
-[ASM2_7:ASSIN2]
-~g~Non utilizzare armi! Deve sembrare un incidente! Spingila fuori strada!
+[JDT2_F1:JDT2]
+~r~Hai abbandonato Salvatore!
-[ASM2_8:ASSIN2]
-~g~La morte di Mrs. Dawson deve sembrare un incidente. Non utilizzare armi.
+[JDT2_A4:JDT2]
+~w~Porta Salvatore lontano dal club e semina i poliziotti!
-[ASM2_9:ASSIN2]
-~g~Avrai bisogno di una vettura per questo lavoro!
+{=================================== MISSION TABLE JDT3 ===================================}
-[ASM2_10:ASSIN2]
-~g~Quando la sua macchina prende fuoco, allontanati il più possibile dal luogo dell'incidente.
+[JDT3_AA:JDT3]
+~w~Ehi Toni... non posso uscire adesso, sono occupato... sai, no?
-[ASM2_11:ASSIN2]
-Aiuto!
+[JDT3_AB:JDT3]
+~w~Cosa? Cosa succede lì dentro? ...e cos'è questo odore?
-[ASM2_12:ASSIN2]
-Qualcuno mi aiuti!
+[JDT3_AC:JDT3]
+~w~Senti, Toni... oggi abbiamo per le mani dei veri, ah... specialisti.
-[ASM2_13:ASSIN2]
-Oddio!
+[JDT3_AD:JDT3]
+~w~Questa roba vale oro su internet!
-[ASM2_A:ASSIN2]
-Complimenti per l'ottimo lavoro, Mr. Teal. Il mio cliente è molto soddisfatto.
+[JDT3_AE:JDT3]
+~w~Comunque, dovresti preoccuparti della bisca dei Leone a Saint Mark's.
-[ASM2_2:ASSIN2]
-Salute:
+[JDT3_AG:JDT3]
+~w~I Sindacco sono furenti al riguardo.
-{=================================== MISSION TABLE ASSIN3 ===================================}
+[JDT3_AH:JDT3]
+~w~Ho sentito che vogliono far saltare in aria il posto.
-[ASM3_11:ASSIN3]
-TEMPO:
+[JDT3_B:JDT3]
+~w~Fai fuori i ~r~sabotatori dei Sindacco!
-[ASM3_C:ASSIN3]
-Una gang europea ha pianificato un furto in banca a Vice City. I miei clienti preferirebbero che il colpo non vada a segno.
+[JDT3_C:JDT3]
+~r~Hanno ~w~piazzato una bomba fuori dal ~y~casinò!
-[ASM3_D:ASSIN3]
-Ogni membro della gang ha un nascondiglio nella città: alcuni hanno dei lavori di copertura, altri sono in vacanza.
+[JDT3_D:JDT3]
+Esplode in
-[ASM3_E:ASSIN3]
-Dettagli e posizione più probabile di ogni bersaglio sono riportati nel nastro sotto al telefono.
+[JDT3_E:JDT3]
+~w~Ancora un paio di esplosioni e il ~y~casinò~w~ sarà a pezzi!
-[ASM3_14:ASSIN3]
-~g~Dick Tanner si trova presso la DBP Security in Ocean Drive.
+[JDT3_F:JDT3]
+~w~Ancora una e il ~y~casinò~w~ verrà distrutto!
-[ASM3_15:ASSIN3]
-~g~Marcus Hammond e Franco Carter si trovano presso la gioielleria in Vice Point.
+[JDT3_H:JDT3]
+~w~Altri ~r~Sindacco~w~ in avvicinamento! Fermali!
-[ASM3_16:ASSIN3]
-~g~Nick Kong si trova presso Washington Beach.
+[JDT3_I:JDT3]
+~w~La bomba sul camion è innescata!
-[ASM3_18:ASSIN3]
-~g~Non avvicinarti troppo, se no il bersaglio potrebbe vederti e sarai costretto a inseguirlo!
+[JDT3_J:JDT3]
+~w~Il ~y~casinò~w~ è salvo. Allontanati!
-[ASM3_19:ASSIN3]
-~g~Ti ha visto! Fallo fuori!
+[JDT3_K:JDT3]
+~w~Devono aver sabotato il camion, è bloccato con la marcia più bassa!
-[ASM3_20:ASSIN3]
-~g~Ti hanno visto! Falli fuori entrambi!
+[JDT3_L:JDT3]
+~r~Rinforzi dei Sindacco~w~ in avvicinamento al ~y~casinò!
-[ASM3_21:ASSIN3]
-~r~Non hai ucciso tutti i membri della gang in tempo!
+[JDT3_M:JDT3]
+~w~I ~r~Sindacco~w~ non vogliono arrendersi! Ne arrivano degli altri!
-[ASM3_22:ASSIN3]
-~g~Non avvicinarti troppo, se no i bersagli potrebbero vederti e cercare di scappare!
+[JDT3_N:JDT3]
+~w~Stanno ritirandosi. Non lasciar fuggire nessun ~r~Sindacco!
-[ASM3_12:ASSIN3]
-~g~Un assortimento di armi è stato lasciato per te nel caso di bisogno. Hai ~h~9 MINUTI~g~ per uccidere tutti i membri della gang.
+[JDT3_O:JDT3]
+Dist. di sicurezza
-[ASM3_13:ASSIN3]
-~g~Mike Griffin lavora su un cartello pubblicitario in Washington.
+[JDT3_P:JDT3]
+~w~I Sindacco hanno preparato un immenso camion bomba! Vogliono eliminare il casinò in un colpo solo!
-[ASM3_17:ASSIN3]
-~g~Charlie Dilson è in macchina in Washington.
+[JDT3_Q:JDT3]
+~w~Defendi il ~y~casinò.
-{=================================== MISSION TABLE ASSIN4 ===================================}
+[JDT3_R:JDT3]
+~w~Vai a controllare il ~y~casinò.
-[ASM4_12:ASSIN4]
-Distanza:
+[JDT3_S:JDT3]
+~w~Ferma il ~r~camion bomba~w~ prima che distrugga il ~y~casinò!
-[ASM4_15:ASSIN4]
-~g~Recupera il fucile di precisione alla tua destra.
+[JDT3_T:JDT3]
+~w~Sposta il ~r~camion~w~ lontano dal ~y~casinò~w~ prima che esploda!
-[ASM4_16:ASSIN4]
-~g~Osserva la donna sul balcone: scenderà per le scale e chiederà l'ora a un uomo.
+[JDT3_BA:JDT3]
+~w~Toni? Sono JD.
-[ASM4_17:ASSIN4]
-~g~Solo quando la conversazione avrà termine, dovrai uccidere l'uomo con cui ha parlato ma NON la donna.
+[JDT3_BB:JDT3]
+~w~Ho sentito che degli uomini dei Sindacco si stanno dirigendo verso di te.
-[ASM4_18:ASSIN4]
-~g~Una volta eliminato il bersaglio, recupera la sua valigetta e portala ad Ammu-Nation in Downtown.
+[JDT3_BC:JDT3]
+~w~E hanno degli esplosivi, un mucchio di esplosivi!
-[ASM4_19:ASSIN4]
-~g~Tieni la distanza dal bersaglio: la barra nella parte superiore destra dello schermo indica quanto gli sei vicino.
+[JDT3_BD:JDT3]
+~w~Fai attenzione!
-[ASM4_20:ASSIN4]
-~g~Se si riempirà, verrai avvistato.
+[JDT3_BE:JDT3]
+~w~Grazie JD!
-[ASM4_21:ASSIN4]
-~g~Recupera la valigetta!
+[JDT3_BF:JDT3]
+~w~Apprezzo il gesto.
-[ASM4_22:ASSIN4]
-~g~Porta la valigetta ad Ammu-Nation in Downtown.
+[JDT3_G:JDT3]
+~r~Il casinò è stato distrutto!
-[ASM4_23:ASSIN4]
-~g~Ti ha visto e sta fuggendo! Uccidilo e recupera la valigetta!
+{=================================== MISSION TABLE JDT4 ===================================}
-[ASM4_25:ASSIN4]
-~r~Hai ucciso la donna, idiota!
+[JDT4_3:JDT4]
+~w~Le guardie del bordello si fideranno solo di ~h~macchine dei Sindacco.
-[ASM4_26:ASSIN4]
-~r~Il bersaglio è salito a bordo del volo!
+[JDT4_A1:JDT4]
+~w~Di classe: se perdi al tavolo, puoi incassare nel culo!
-[ASM4_27:ASSIN4]
-~r~Il bersaglio ti ha visto! Avresti dovuto tenerti a distanza!
+[JDT4_B0:JDT4]
+~w~Trova un veicolo adatto e montaci su una bomba.
-[ASM4_28:ASSIN4]
-~r~Il bersaglio ti ha visto! Ti ha sentito sparare!
+[JDT4_B1:JDT4]
+~w~Torna nel ~b~veicolo~w~ con la bomba.
-[ASM4_29:ASSIN4]
-~r~Dovevi ucciderlo solo dopo che aveva parlato con la donna!
+[JDT4_B3:JDT4]
+~w~Esci dal veicolo e dattela a gambe.
-[ASM4_A:ASSIN4]
-È giunta l'ora di occuparsi di pesci più grossi, Mr Teal. Troverai un fucile tra le foglie alla tua destra.
+[JDT4_B4:JDT4]
+~w~Fai esplodere la bomba!
-[ASM4_B:ASSIN4]
-Osserva la donna sul balcone sopra i banchi dei check-in: scenderà per le scale e chiederà l'ora a un uomo.
+[JDT4_B5:JDT4]
+~w~Porta il veicolo nel ~h~negozio di bombe~w~ e fanne montare una.
-[ASM4_C:ASSIN4]
-Dovrai uccidere questa persona, recuperare la sua valigetta e portarla nella locazione riportata sotto al telefono.
+[JDT4_B6:JDT4]
+~w~Non avvicinarti troppo!
-{=================================== MISSION TABLE ASSIN5 ===================================}
+[JDT4_C0:JDT4]
+~r~Eri troppo vicino all'esplosione.
-[ASM5_A:ASSIN5]
-C'è uno scambio di beni sopra il tetto della fabbrica di gelato Cherry Popper.
+[JDT4_C1:JDT4]
+~w~Mettilo sul conto di JD!
-[ASM5_B:ASSIN5]
-Uccidi tutti gli elementi coinvolti, recupera la merce e portala all'eliporto presso l'aeroporto.
+[JDT4_D0:JDT4]
+~w~Chi va là?
-[ASM5_C:ASSIN5]
-Alla tua sinistra troverai un cancello che porta al retro della fabbrica.
+[JDT4_D2:JDT4]
+~w~Deve essere uno nuovo.
-[ASM5_1:ASSIN5]
-~g~Entra nel cortile dietro alla fabbrica di gelato Cherry Popper e apriti la strada fino al luogo dello scambio.
+[JDT4_0:JDT4]
+CONTO ALLA ROVESCIA
-[ASM5_2:ASSIN5]
-~g~Recupera la merce e portala all'eliporto presso l'aeroporto.
+[JDT4_1:JDT4]
+~w~Non puoi mettere una bomba su questo veicolo!
-[ASM5_3:ASSIN5]
-~g~Porta la merce all'eliporto presso l'aeroporto!
+[JDT4_2:JDT4]
+~w~Segui la ~h~bomba~w~ sul radar per raggiungere il negozio di ~h~8-Ball.
-{=================================== MISSION TABLE BANKJ1 ===================================}
+[JDT4_A0:JDT4]
+~w~Senti Toni, i Sindacco hanno questo posto, 'The Dolls House'.
-[WANTED1:BANKJ1]
-~g~Semina i poliziotti per perdere il tuo livello di sospetto.
+[JDT4_AA:JDT4]
+~w~Un casinò e un bordello in uno.
-[BJM1_A:BANKJ1]
-Tommy! Ehi Tommy, guarda qua, è grandioso! Ho fatto installare un minibar!
+[JDT4_A2:JDT4]
+~w~Eh eh! Beh, il posto è la chiave della loro posizione.
-[BJM1_B:BANKJ1]
-Abbiamo un intero bar al piano di sotto, Ken.
+[JDT4_A3:JDT4]
+~w~Se riuscissi a, uh... metterlo fuori gioco... cioè, uh... farlo esplodere o altro...
-[BJM1_C:BANKJ1]
-Sì, sì, certo. Beh, ho portato quella lavagna che mi avevi richiesto.
+[JDT4_A4:JDT4]
+~w~Ti assicuro che Salvatore ci coprirà di soldi!
-[BJM1_D:BANKJ1]
-Ah, questi sono i benefici della scuola dell'obbligo: l'abilità di seguire le istruzioni.
+[JDT4_D1:JDT4]
+~w~Non lo riconosco...
-[BJM1_E:BANKJ1]
-Adesso mi serve uno scassinatore.
+[JDT4_B2:JDT4]
+~w~Parcheggia il veicolo nel ~y~garage~w~ del 'The Doll's House'.
-[BJM1_F:BANKJ1]
-Oh, va bene, beh, fammi pensare... scassinatore, scassinatore, scassinatore... Trovato! Questo tipo ti farà impazzire!
+[JDT4_B7:JDT4]
+~w~Guida con attenzione, se lo danneggi troppo, esploderà!
-[BJM1_G:BANKJ1]
-Ahh, nah, quello schmuck. È dentro.
+[JDT4_B8:JDT4]
+~w~Parcheggia il veicolo nel ~y~garage~w~ del 'The Doll's House'.
-[BJM1_H:BANKJ1]
-Dentro dove?
+[JDT4_4:JDT4]
+~w~Premi~h~ ~k~ ~PDFW~ ~w~per ~h~detonare~w~ la bomba.
-[BJM1_I:BANKJ1]
-In una cella nel quartier generale della polizia in attesa di trasferimento.
+[JDT4_B9:JDT4]
+~w~I Sindacco hanno disinnescato la bomba!
-[BJM1_J:BANKJ1]
-Credo stia per essere rilasciato sulla parola...
+{=================================== MISSION TABLE JDT5 ===================================}
-[BJM1_1:BANKJ1]
-~g~Fai fuggire Cam Jones dalla custodia della polizia!
+[JDT5_B0:JDT5]
+~w~Quello è uno dei tipi che ha rapito Salvatore!
-[BJM1_3:BANKJ1]
-~g~Troverai ciò che ti serve nello spogliatoio della stazione.
+[JDT5_D0:JDT5]
+~w~Dove si trova? Nel bagagliaio?
-[BJM1_21:BANKJ1]
-~g~La tessera per le celle si trova nel piano superiore della stazione.
+[JDT5_D1:JDT5]
+~w~Bene. Portiamolo al demolitore. Il capo lo vuole più piatto di una pizza.
-[BNK1_7:BANKJ1]
-Cam Jones?
+[JDT5_E:JDT5]
+~w~Libera Salvatore dalla ~b~macchina~w~ prima che venga demolita!
-[BNK1_8:BANKJ1]
-Ti sto facendo scappare!
+[JDT5_E0:JDT5]
+~w~Ti hanno visto!
-[BNK1_10:BANKJ1]
-Sì, sono io...
+[JDT5_E1:JDT5]
+~w~La ~b~macchina~w~ è incustodita! Prendila!
-[BNK1_11:BANKJ1]
-Come vuoi!
+[JDT5_E2:JDT5]
+~w~Porta la macchina alla ~y~villa di Salvatore.
-[BNK1_13:BANKJ1]
-Devo fare un lavoro e tu sarai il mio scassinatore.
+[JDT5_E3:JDT5]
+~w~Torna in ~b~macchina.
-[BNK1_14:BANKJ1]
-Sempre meglio che restare col culo in galera!
+[JDT5_F0:JDT5]
+~w~Mmmphhh... mmmphhh... mpphh!
-[BJM1_22:BANKJ1]
-~g~Riporta Cam a casa sua!
+[JDT5_F3:JDT5]
+~w~Mmpphh... Arrgghh... mmpphh!
-[BJM1_23:BANKJ1]
-~g~Prima devi recuperare la tessera!
+[JDT5_F4:JDT5]
+~w~Mmpphh... Arrgghh... Arrggghh... Arrg!
-[BNK1_12:BANKJ1]
-Fai perdere le tracce e riportami a casa!
+[JDT5_F5:JDT5]
+~w~Yarrgghh... Yarragh... Mmpphh!
-[BJM1_20:BANKJ1]
-Metti via l'arma o ne pagherai le conseguenze!
+[JDT5_G0:JDT5]
+~w~Ma come cazzo guidi? Volevi uccidermi?
-[BJM1_5:BANKJ1]
-Solo personale autorizzato oltre a questo punto!
+[JDT5_G1:JDT5]
+~w~Signor Leone. Boss. Mi dispiace.
-[BJM1_2:BANKJ1]
-~r~Dovevi far fuggire Cam, non farlo morire!
+[JDT5_G2:JDT5]
+~w~Cosa posso dire?
-[BJM1_4:BANKJ1]
-È armato! Uccidetelo!
+[JDT5_G4:JDT5]
+~w~Faccio esplodere le loro teste! Non finisce qui!
-{=================================== MISSION TABLE BANKJ2 ===================================}
+[JDT5_G5:JDT5]
+~w~...Dio santo, Toni... mi hai salvato il culo. Chiamami Sal!
-[BJM2_A:BANKJ2]
-Abbiamo bisogno di un tiratore. Ne conosci uno?
+[JDT5_X0:JDT5]
+~r~Non è facile inseguire un cadavere!
-[BJM2_B:BANKJ2]
-Ehi Tommy, Tommy, Tommy, questa roba ti tiene in forma, amico.
+[JDT5_X1:JDT5]
+~r~Lo hai perso!
-[BJM2_C:BANKJ2]
-WoooOOOooo!
+[JDT5_F1:JDT5]
+~w~È lei, signor Leone? Sono io, Toni.
-[BJM2_D:BANKJ2]
-Potrei essere io il tuo tiratore! Spara! Spara!
+[JDT5_F2:JDT5]
+~w~Non si preoccupi, la faccio uscire immediatamente!
-[BJM2_E:BANKJ2]
-Non sei un tiratore, sei un idiota.
+[JDT5_G3:JDT5]
+~w~Figli di puttana! Credono di potermi fare questo?
-[BJM2_F:BANKJ2]
-Fatti un drink e sta zitto.
+[JDT5_X2:JDT5]
+~r~Sal non ce l'ha fatta.
-[BJM2_G:BANKJ2]
-Ehi, via dai miei piedi! Ye ye ye ow ow.
+[JDT5_X4:JDT5]
+~r~Ti ha visto. Ora non troverai più Sal!
-[BJM2_H:BANKJ2]
-Cam, cosa mi dici?
+[JDT5_X3:JDT5]
+~r~Salvatore è stato spappolato!
-[BJM2_I:BANKJ2]
-Beh, il miglior tiratore in città è un tipo chiamato Cassidy.
+[JDT5_C:JDT5]
+~w~Segui la ~r~macchina~w~, ma tieniti a distanza.
-[BJM2_J:BANKJ2]
-Davvero?
+[JDT5_0:JDT5]
+~w~Se spari alla macchina, potresti colpire Salvatore!
-[BJM2_K:BANKJ2]
-Sì. Un militare, o per lo meno crede di esserlo.
+[JDT5_H0:JDT5]
+~w~Segui la ~r~macchina~w~, ma non avvicinarti troppo.
-[BJM2_L:BANKJ2]
-Non credo sia mai stato nell'esercito, ma sicuramente sa come tenere in mano un'arma.
+[JDT5_H1:JDT5]
+~w~Sei troppo vicino!
-[BJM2_M:BANKJ2]
-Lo troverai di sicuro al poligono di tiro.
+[JDT5_H2:JDT5]
+~w~Non allontanarti troppo dalla ~r~macchina.
-[BJM2_2A:BANKJ2]
-Sei Phil Cassidy?
+[JDT5_H3:JDT5]
+~w~Sei troppo lontano!
-[BJM2_2B:BANKJ2]
-Perché?
+[KIDN_01:JDT5]
+JD!
-[BJM2_2C:BANKJ2]
-Sto cercando un uomo che sappia come sparare. Da quello che vedo, non sono molto convinto...
+[KIDN_02:JDT5]
+Toni, grazie al cielo sei qui.
-[BJM2_2D:BANKJ2]
-Figliolo, potrei colpire una mosca sulla tua testa a 30 metri di distanza.
+[KIDN_03:JDT5]
+Sto sudando come una vacca al macello... sto impazzendo.
-[BJM2_2E:BANKJ2]
-Davvero?
+[KIDN_06:JDT5]
+Oddio non ci posso credere, mi strapperà le palle
-[BJM2_2F:BANKJ2]
-Certo. Ho fatto pratica nell'esercito.
+[KIDN_07:JDT5]
+e le metterà in una teca, non necessariamente in quest'ordine.
-[BJM2_2G:BANKJ2]
-Lo sparo alla mosca è così popolare nell'esercito? Per fortuna non pago le tasse.
+[KIDN_08:JDT5]
+Oddio! Mi sento come il giorno in cui l'FBI ha sequestrato il mio hard disk!
-[BJM2_2H:BANKJ2]
-Stai cercando di fare lo spiritoso?
+[KIDN_13:JDT5]
+Oddio non ci posso credere...
-[BJM2_2I:BANKJ2]
-Ah ah ah ah ah!
+[KIDN_14:JDT5]
+Perché a me? Non è colpa mia.
-[BJM2_2J:BANKJ2]
-Spariamo.
+[KIDN_15:JDT5]
+Ma conosci Salvatore: mi metterà alle calcagna la buoncostume.
-[BJM2_1:BANKJ2]
-~g~Raggiungi Ammu-Nation in Downtown e parla con Phil Cassidy.
+[KIDN_16:JDT5]
+Oddio, mi accuseranno di essermi fatto una minorenne.
-[BJM2_4:BANKJ2]
-PUNTEGGIO PRIMO TURNO: ~1~
+[KIDN_17:JDT5]
+Sei mai stato in prigione per quello, amico?
-[BJM2_6:BANKJ2]
-PUNTEGGIO SECONDO TURNO: ~1~
+[KIDN_18:JDT5]
+Ti fanno un culo così sotto le docce!
-[BJM2_7:BANKJ2]
-PUNTEGGIO TOTALE: ~1~
+[KIDN_19:JDT5]
+Oddio, e aveva 18 anni! Omioddio! Sarà anche peggio!
-[BJM2_9:BANKJ2]
-~G~Raggiungi il punto di partenza del secondo turno.
+[KIDN_20:JDT5]
+Ascolta un po', coglione: mi dici che cazzo sta succedendo?
-[BJM2_11:BANKJ2]
-~r~Phil è morto!
+[KIDN_04:JDT5]
+- Ora cosa facciamo? ~n~ - In che senso?
-[BJM2_12:BANKJ2]
-~r~Uno dei tiratori è morto!
+[KIDN_11:JDT5]
+- No, no... ho già preso troppe pasticche... ~n~ - Cosa sta succedendo?
-[BJM2_14:BANKJ2]
-~g~Raggiungi la prossima area!
+[KIDN_09:JDT5]
+Oddio, ho il cuore che pompa a mille. Hai del Valiom?
-[BJM2_17:BANKJ2]
-~g~Vai a parlare con Phil.
+[KIDN_10:JDT5]
+O del Rohapnin? Hai del...
-[BJM2_24:BANKJ2]
-~g~Il bersaglio più vicino vale un punto.
+[KIDN_21:JDT5]
+È Salvatore. È stato rapito all'uscita del club.
-[BJM2_25:BANKJ2]
-~g~Il bersaglio centrale vale due punti.
+[KIDN_23:JDT5]
+Beh, non facevi prima a dirmelo invece di stordirmi con tutte queste stronzate? Dai, andiamo.
-[BJM2_27:BANKJ2]
-~g~In questo turno, tutti i bersagli valgono un punto.
+{=================================== MISSION TABLE JDT6 ===================================}
-[BNK2_4:BANKJ2]
-Hoooeee!
+[JDT6_A0:JDT6]
+~w~Grazie a Dio! Toni.
-[BNK2_5:BANKJ2]
-Non riusciresti a colpire neanche un elefante!
+[JDT6_A1:JDT6]
+~w~JD? Ehi, sono sul retro del...
-[BNK2_7:BANKJ2]
-Fammi un favore, aiutami a mettere a segno un colpo.
+[JDT6_A2:JDT6]
+~w~Lo so. Ti ho visto arrivare. Pregavo che ti facessi vivo!
-[BNK2_8:BANKJ2]
-Figliolo, da come hai sparato, se mi chiedessi di sposarti direi di sì.
+[JDT6_A3:JDT6]
+~w~Salvatore è impazzito!
-[BNK2_9A:BANKJ2]
-Figliolo, ficcati la tua parlata e le tue grandi idee là dove non batte il sole. Non sai sparare per niente.
+[JDT6_A6:JDT6]
+~w~Assicurati che nessuno ferisca Salvatore.
-[BNK2_9B:BANKJ2]
-Non sai sparare per niente.
+[JDT6_0:JDT6]
+Salvatore
-[BJM2_28:BANKJ2]
-PUNTEGGIO TERZO TURNO: ~1~
+[JDT6_1:JDT6]
+~r~Salvatore non ce l'ha fatta.
-[BJM2_26:BANKJ2]
-~g~Il bersaglio più lontano vale tre punti.
+[JDT6_3:JDT6]
+~w~Salvatore arriverà fra ~1~ secondi.
-[BNK2_1:BANKJ2]
-MUNIZIONI VERE
+[JDT6_5:JDT6]
+~w~Proteggi ~b~Salvatore~w~ dai ~r~Sindacco.
-[RANGE_1:BANKJ2]
-PUNTEGGIO PER COLPO: ~1~
+[JDT6_6:JDT6]
+~w~Una delle ~b~guardie di Salvatore~w~ è stata uccisa!
-[BJM2_2:BANKJ2]
-~g~Per interrompere il turno, premi il ~h~~k~~PED_JUMPING~~g~.
+[JDT6_7:JDT6]
+~w~Entrambe le ~b~guardie di Salvatore~w~ sono state uccise!
-[BJM2_N:BANKJ2]
-Rilassati.
+[JDT6_8:JDT6]
+~w~I poliziotti!
-{=================================== MISSION TABLE BANKJ3 ===================================}
+[JDT6_10:JDT6]
+~w~Trova una posizione tattica prima che arrivi Salvatore.
-[BJM3_A:BANKJ3]
-Le cose stanno iniziando a prendere forma.
+[JDT6_11:JDT6]
+~w~Dove stai andando? Salvatore ha bisogno di protezione nel Red Light District!
-[BJM3_B:BANKJ3]
-Qual è il piano Tommy? Que pasa, amigo?
+[JDT6_12:JDT6]
+Salvatore è arrivato
-[BJM3_C:BANKJ3]
-La tua parte consiste nel continuare a fare l'idiota. Comunque, adesso abbiamo bisogno di un pilota.
+[JDT6_D1:JDT6]
+~w~Ehi...
-[BJM3_D:BANKJ3]
-Tommy, lo farò io. Io so guidare bene.
+[JDT6_D4:JDT6]
+~w~Qualcuno ha fatto cadere un dollaro!
-[BJM3_E:BANKJ3]
-Ti serve Hilary, capo. Di certo non un sapientone avvocato del cazzo.
+[JDT6_C0:JDT6]
+~w~È il meglio che sapete fare?
-[BJM3_F:BANKJ3]
-Hilary è la persona giusta. Non troverai nessuno capace di guidare così veloce. Gli posso fare una chiamata.
+[JDT6_C1:JDT6]
+~w~Fatevi sotto!
-[BJM3_G:BANKJ3]
-Ehi Hil, sono Phil. Come butta? No, lascia stare, ne parliamo un'altra volta. Mi faresti un favore?
+[JDT6_C2:JDT6]
+~w~Siete delle checche!
-[BJM3_H:BANKJ3]
-Ho qui un tipo del nord... No, no, non credo abbia fatto il servizio militare, ma ha bisogno di un guidatore.
+[JDT6_C3:JDT6]
+~w~Oh, ne vuoi anche tu!
-[BJM3_I:BANKJ3]
-Per un po' di azione. OK, capisco.
+[JDT6_C4:JDT6]
+~w~Prendi questo!
-[BJM3_J:BANKJ3]
-Che cosa ha detto?
+[JDT6_C5:JDT6]
+~w~Brutti topi bastardi!
-[BJM3_K:BANKJ3]
-Beh, ci sta, nessun problema. Beh, un piccolo problema c'è: ha subito uno shock da abbandono.
+[JDT6_C6:JDT6]
+~w~Sono il migliore!
-[BJM3_L:BANKJ3]
-Sembra non voglia lavorare con nessuno che non sia capace di batterlo. Qualcosa che ha a che fare con la sua vecchia.
+[JDT6_A4:JDT6]
+~w~Sta venendo quaggiù di persona per uccidere qualsiasi Sindacco riesca a trovare...
-[BJM3_M:BANKJ3]
-Comunque, vuole prima sfidarti in una corsa, ha detto che ci aspettava fuori...
+[JDT6_A5:JDT6]
+~w~...per cui mi sono preparato. Ho lasciato un fucile sul tetto dall'altra parte della strada.
-[BJM3_2A:BANKJ3]
-Sei Tommy? Beh, certo che sei Tommy, cioè...
+[JDT6_9:JDT6]
+~w~Raccogli il ~g~fucile di precisione~w~ sul tetto.
-[BJM3_2B:BANKJ3]
-Per quale altro motivo qualcuno vorrebbe parlare con me?
+{=================================== MISSION TABLE JDT7 ===================================}
-[BJM3_2C:BANKJ3]
-OK, vedila in questo modo...
+[JDT7_VE:JDT7]
+~r~v1,00
-[BJM3_2D:BANKJ3]
-Io guiderò SE, e solo SE, tu sai guidare come si deve.
+[JDT7_02:JDT7]
+~w~Allora Salvatore ha fatto pulizia... e ora sta rassettando anche casa tua!
-[BJM3_2E:BANKJ3]
-Lasciami solo... e non te lo perdonerò mai.
+[JDT7_03:JDT7]
+~w~Toni, ora è tutta mia!
-[BJM3_2:BANKJ3]
-~r~Hilary è morto!
+[JDT703A:JDT7]
+~w~Quei fottuti Sindacco sono stati scacciati a calci.
-[BJM3_4:BANKJ3]
-~g~Hai bisogno di una vettura per partecipare!
+[JDT7_04:JDT7]
+~w~Ascolta, ho sentito che i Siciliani stanno cercando di mettere pace tra le famiglie.
-[BNK3_1:BANKJ3]
-OK. Guiderò per te, ma per favore trattami male!
+[JDT7_4A:JDT7]
+~w~C'è un pezzo grosso in questo momento a casa di Sal.
-[BNK3_3A:BANKJ3]
-Corsa illegale in corso presso Vice Point.
+[JDT7_4B:JDT7]
+~w~Il problema è che sente puzza di bruciato.
-[BNK3_3B:BANKJ3]
-A tutte le pattuglie.
+[JDT7_4C:JDT7]
+~w~Vuole che qualcuno lo raggiunga, segua questo tipo e scopra cosa combina.
-[BNK3_3C:BANKJ3]
-Queste corse sono illegali e vietate!
+[JDT7_06:JDT7]
+~r~Non hai raggiunto l'elicottero in tempo: Massimo se n'è già andato!
-{=================================== MISSION TABLE BANKJ4 ===================================}
+[JDT7_07:JDT7]
+~w~Segui ~r~Massimo.~w~ Non perderlo!
-[BNK4_A:BANKJ4]
-~w~Come potete vedere, signori, questi saranno i soldi più facili della storia.
+[JDT7_08:JDT7]
+~r~Massimo~w~ si sta allontanando!
-[BNK4_B:BANKJ4]
-~w~Tommy, seriamente, dovresti pensare di fare l'avvocato.
+[JDT7_09:JDT7]
+~r~Hai fatto scappare Massimo!
-[BNK4_C:BANKJ4]
-~w~Ma che cosa ti fumi, amico? Non è per niente un piano semplice!
+[JDT7_10:JDT7]
+~w~L'elicottero sta per atterrare: non avvicinarti troppo o li allarmerai...
-[BNK4_D:BANKJ4]
-~w~Beh, chi ha bisogno di un piano semplice?
+[JDT7_11:JDT7]
+~r~Ti sei avvicinato troppo. Sei stato visto!
-[BNK4_E:BANKJ4]
-~w~Prendi il comunismo, beh, quello era un piano semplice. Non ha fatto così bene alla Russia, no?
+[JDT7_14:JDT7]
+~r~Massimo~w~ sta muovendosi... seguilo nuovamente...
-[BNK4_F:BANKJ4]
-~w~Rilassatevi, OK? Con una squadra come la nostra, non ci saranno problemi.
+[JDT7_15:JDT7]
+~w~Massimo~w~ sta per atterrare lassù...
-[BNK4_G:BANKJ4]
-~w~Abbiamo Cam per la cassaforte. Phil? Noi ci occuperemo della sorveglianza, mentre Hilary guiderà l'auto per la fuga.
+[JDT7_16:JDT7]
+~w~Devi ~y~avvicinarti~w~ di più...
-[BNK4_H:BANKJ4]
-~w~Uh, eh eh, non ti stai dimenticando qualcuno? Qualcuno che ti ha costantemente aiutato in questa città? Qualcuno...?
+[JDT7_17:JDT7]
+~r~Ti sei fatto scoprire!
-[BNK4_I:BANKJ4]
-~w~Ken... Ken, ma certo. Il nostro Ken si occuperà di lavare il denaro sporco e di tenere le birre al fresco.
+[JDT7_21:JDT7]
+~w~Ti hanno visto! Fai fuori i membri della ~r~Triade!
-[BNK4_J:BANKJ4]
-~w~Non ho ancora capito cosa ci sto a fare io qua.
+[JDT7_12:JDT7]
+~w~Come siamo rimasti d'accordo,
-[BNK4_K:BANKJ4]
-~w~Beh, è semplice: non hai mai visto un film d'azione?
+[JDT712A:JDT7]
+~w~se farai il lavoro dei miei soci, verrai ben ricompensato.
-[BNK4_L:BANKJ4]
-~w~Entriamo nella banca, sventoliamo in giro l'arma e usciamo molto ricchi.
+[JDT7_13:JDT7]
+~w~...Hepburn Heights apparterrà ai Diablo.
-[P_DEAD:BANKJ4]
-~r~Phil è morto!
+[JDT7_18:JDT7]
+~w~...per cui, tieni quei bastardi dei Leone a Portland,
-[C_DEAD:BANKJ4]
-~r~Cam è morto!
+[JDT718A:JDT7]
+e quando i miei soci controlleranno la città, ci ricorderemo di te.
-[H_DEAD:BANKJ4]
-~r~Hilary è morto!
+[JDT718B:JDT7]
+Ci pensiamo noi.
-[P_HIND:BANKJ4]
-~r~Hai perso Phil!
+[JDT7_20:JDT7]
+~w~Da quella parte! Un Leone!
-[C_HIND:BANKJ4]
-~r~Cam è restato indietro!
+[JDT7_22:JDT7]
+Distanza
-[H_HIND:BANKJ4]
-~r~Hai abbandonato Hilary!
+[JD_FIN:JDT7]
+~w~Elimina tutti i membri della ~r~Triade!
-[GETCAR:BANKJ4]
-~g~Entra nell'auto e preparati alla rapina!
+[JDT7_05:JDT7]
+~w~Raggiungi la ~y~villa di Salvatore~w~ prima che Massimo si allontani!
-[TRASHED:BANKJ4]
-~r~HAI DISTRUTTO L'AUTO PER LA FUGA!!!
+[JDT7O07:JDT7]
+~w~Raggiungi la ~y~villa di Salvatore~w~. Massimo la lascerà alle ~1~:~1~.
-[BNK4_1:BANKJ4]
-Guido io.
+[JDT7O08:JDT7]
+~w~Sono quasi le ~1~:~1~. Massimo sta per andarsene!
-[BNK4_2:BANKJ4]
-Ottimo. Un passeggero. Aspetta che lo dica al resto del gruppo.
+{=================================== MISSION TABLE JDT8 ===================================}
-[BNK4_3A:BANKJ4]
-Ehi, fai attenzione alla macchina, Tommy!
+[JDT8_A0:JDT8]
+~w~Toni... oggi succederà! Oggi diventerò un 'uomo d'onore'!
-[BNK4_3B:BANKJ4]
-Tommy, Hilary occupa troppo spazio!
+[JDT8_A1:JDT8]
+~w~JD l'intoccabile? Che Dio ci aiuti!
-[BNK4_3C:BANKJ4]
-Non è vero!
+[JDT8_A2:JDT8]
+~w~Ho atteso tanto questo momento... non si sarebbe mai avverato senza di te, Toni.
-[BNK4_3D:BANKJ4]
-Invece sì!
+[JDT8_A3:JDT8]
+~w~Ehi! Mi scendono le lacrime! Forza!
-[BNK4_3E:BANKJ4]
-Ehi, state entrambi zitti o ve ne andate a piedi.
+[JDT8_A4:JDT8]
+~w~Ehi Mickey! Come va?
-[BNK4_3F:BANKJ4]
-Sì Hilary.
+[JDT8_A5:JDT8]
+~w~Siederò di dietro... OK.
-[BNK4_3I:BANKJ4]
-Perdio, Phil, smettila di sventolare quell'affare in giro!
+[JDT8_C:JDT8]
+~w~Entra nella ~b~macchina~w~ e porta JD al suo 'battesimo'.
-[BNK4_3J:BANKJ4]
-Sì, finirai col cavare un occhio a qualcuno!
+[JDT8_C2:JDT8]
+~w~Torna in ~b~macchina.
-[BNK4_3M:BANKJ4]
-La mia bambina! È a pezzi!
+[JDT8_C3:JDT8]
+~w~Guida verso la ~y~cerimonia.
-[BNK4_3O:BANKJ4]
-Sei accecato dall'illusione di permanenza.
+[JDT8_B0:JDT8]
+~w~Ah, Toni, sai cosa? Non ci credo che stia per succedere.
-[BNK4_3P:BANKJ4]
-Cosa?
+[JDT8_B1:JDT8]
+~w~Ho atteso così a lungo.
-[BNK4_3Q:BANKJ4]
-Pensi che tutto duri per sempre.
+[JDT8_B2:JDT8]
+~w~Mi sono fatto il culo per i Sindacco per anni e niente!
-[BNK4_3R:BANKJ4]
-La giovinezza, le persone care, la pizza...
+[JDT8_B3:JDT8]
+~w~I bastardi non mi hanno dato la possibilità
-[BNK4_3S:BANKJ4]
-Ma tutto passa e finisce e tu lo devi accettare.
+[JDT8_B5:JDT8]
+~w~Ma Salvatore, Dio lo benedica, non si è fatto influenzare da queste sciocchezze.
-[BNK4_3T:BANKJ4]
-Ehi, hai ragione. Grazie Cam.
+[JDT8_B6:JDT8]
+~w~Sai cosa ti dico?
-[BNK4_3U:BANKJ4]
-È un piacere.
+[JDT8_B7:JDT8]
+~w~È meraviglioso!
-[BNK4_3V:BANKJ4]
-Ehi Tommy, perché ci siamo fermati?
+[JDT8_B8:JDT8]
+~w~Toni, sono così emozionato!
-[BNK4_4A:BANKJ4]
-~w~Hilary, continua a guidare attorno al quartiere.
+[JDT8_B9:JDT8]
+~w~Toni, non so neanche cosa fare... sono così emozionato!
-[BNK4_5:BANKJ4]
-~w~OK Tommy, OK.
+[JDT8_BA:JDT8]
+~w~Guardami, non posso credere che stia per succedere!
-[BNK4_6:BANKJ4]
-~w~QUESTA È UNA RAPINA!
+[JDT8_BB:JDT8]
+~w~Finalmente, eh Toni? Oggi diventerò un 'uomo d'onore'!
-[BNK4_7:BANKJ4]
-~w~NESSUNO SI MUOVA!
+[JDT8_D1:JDT8]
+~w~Dov'è Salvatore?
-[BNK4_8:BANKJ4]
-~w~TUTTI CONTRO QUEL MURO!
+[JDT8_D2:JDT8]
+~w~Toni, ti offro il primo giro...
-[BNK4_9:BANKJ4]
-Phil, mantieni il controllo!
+[JDT8_D3:JDT8]
+~w~(PLACEHOLDER SFX) BANG!
-[BNK4_10:BANKJ4]
-Ricevuto capo!
+[JDT8_H0:JDT8]
+~w~Ehi, quel tipo era un fottuto cane.
-[BNK4_11:BANKJ4]
-Vieni Cam, la cassaforte è di sopra...
+[JDT8_H1:JDT8]
+~w~Ha fottuto il suo stesso boss! Disgrazia'.
-[BK4_12A:BANKJ4]
-Maledizione! È una Flange 9000!
+[JDT8_H2:JDT8]
+~w~Salvatore non si sarebbe mai fidato di quel fottuto bastardo.
-[BK4_12B:BANKJ4]
-Potrei impiegare ore ad aprirla,
+[JDT8_H3:JDT8]
+~w~Scarica la fottuta macchina nel fiume.
-[BK4_12C:BANKJ4]
-o cinque minuti se trovi l'amministratore.
+[JDT8_H4:JDT8]
+~w~Dammi un passaggio lungo la strada.
-[BNK4_13:BANKJ4]
-Vado a scoprire dove si è rintanato.
+[JDT8_J:JDT8]
+~w~Entra in ~b~macchina~w~ e porta Mickey a casa.
-[BK4_14A:BANKJ4]
-Phil, va tutto bene?
+[JDT8_J1:JDT8]
+~w~I poliziotti ti hanno visto con la macchina!
-[BNK4_15:BANKJ4]
-Certo. Tutto liscio come l'olio.
+[JDT8_J2:JDT8]
+~w~I poliziotti ti hanno visto con la ~b~macchina!
-[BNK4_16:BANKJ4]
-Tu, tu vieni con me!
+[JDT8_J3:JDT8]
+~w~Torna in ~b~macchina!
-[BNK4_17:BANKJ4]
-OK, OK! Ti prego, non sparare!
+[JDT8_J4:JDT8]
+~w~Scarica Mickey a ~y~casa sua.
-[BNK4_18:BANKJ4]
-HO DETTO NESSUNO SI MUOVA!
+[JDT8_K0:JDT8]
+~w~Me ne vado da qui!
-[BK4_19A:BANKJ4]
-L'apertura è temporizzata,
+[JDT8_K1:JDT8]
+~w~Ricorda. Scarica la macchina nel fiume.
-[BK4_19B:BANKJ4]
-potete anche rinunciarci!
+[JDT8_F:JDT8]
+~w~Scarica la macchina nel fiume.
-[BK4_20A:BANKJ4]
-Diamine, posso aggirare l'apertura a tempo,
+[JDT8_F1:JDT8]
+~w~Scarica la ~b~macchina~w~ nel fiume.
-[BK4_20B:BANKJ4]
-ma poi avremo bisogno del tuo codice per spalancarla!
+[JDT8_G5:JDT8]
+~r~JD è morto!
-[BNK4_21:BANKJ4]
-Sta qua. Se fai uno scherzo diventi cibo per pesci. Chiaro?
+[JDT8_G6:JDT8]
+~r~Mickey è morto!
-[BK4_24A:BANKJ4]
-Vado a controllare Phil, torno subito.
+[JDT8_G8:JDT8]
+~r~Dovevi scaricare la macchina nel fiume.
-[BK4_24B:BANKJ4]
-Te l'avevo detto di non toccare l'allarme!
+[JDT8_X0:JDT8]
+~w~Toni, dove stai andando?
-[BNK4_25:BANKJ4]
-La squadra SWAT sarà qui fra pochi minuti!
+[JDT8_X3:JDT8]
+~w~Faremo tardi.
-[BNK4_27:BANKJ4]
-Un po' di aiuto non farebbe male, Tommy.
+[JDT8_X1:JDT8]
+~w~Se i poliziotti vedono una macchina in questo stato, ci fermano di sicuro!
-[BNK4_28:BANKJ4]
-SWAT di Vice City! Siete completamente circondati!
+[JDT8_X2:JDT8]
+~w~La cerimonia è ad Harwood.
-[BNK4_29:BANKJ4]
-Circondati? AH AH AH Aaaaaaaaaah!
+[JDT8_A6:JDT8]
+~w~Toni... oggi succederà!
-[BNK4_30:BANKJ4]
-Si stanno cagando addosso, corrotti bastardi!
+[JDT8_A7:JDT8]
+~w~Oggi diventerò un 'uomo d'onore'!
-[BK4_31A:BANKJ4]
-Tommy! La cassaforte è aperta!
+[JDT8_A8:JDT8]
+~w~JD l'intoccabile?
-[BK4_34A:BANKJ4]
-OK, abbiamo i fondi pensione della SWAT. Andiamocene da qui!
+[JDT8__1:JDT8]
+~w~Ho atteso tanto questo momento...
-[BK4_34B:BANKJ4]
-OK, l'avete voluto voi! Il tempo è scaduto!
+[JDT8__2:JDT8]
+~w~Non si sarebbe mai avverato senza di te, Toni.
-[BK4_35A:BANKJ4]
-Stanno assalendo l'edificio!
+[JDT8_A9:JDT8]
+~w~Che Dio ci aiuti!
-[BK4_35B:BANKJ4]
-Al riparo!
+[JDT8_D0:JDT8]
+~w~Ehi, ci siamo?
-[BNK4_36:BANKJ4]
-Dov'è Cam?
+[JDT8_B4:JDT8]
+~w~solo per un po' di sangue irlandese nelle mie vene.
-[BNK4_37:BANKJ4]
-Non ce l'ha fatta...
+[JDT8_G7:JDT8]
+~r~I tuoi passeggeri sono morti!
-[BNK4_38:BANKJ4]
-Questo è l'ultimo. VIA! VIA! VIA!
+[JDT8_C4:JDT8]
+~w~Elimina i ~r~sicari dei Sindacco~w~ prima che uccidano JD!
-[BNK_39:BANKJ4]
-Merda! Dov'è Hilary?
+[JDT8_0:JDT8]
+~w~Riverniciando il veicolo guadagnerai un po' di tempo, ma se i poliziotti vedranno il cadavere sul posto del passeggero, ricominceranno l'inseguimento.
-[BK4_40A:BANKJ4]
-Gliela do io l'illusione di permanenza!
+[JDT8_K:JDT8]
+~w~Oddio, no!
-[BNK4_42:BANKJ4]
-Ehi, ragazzi! Entrate, vi copro io!
+[JDT8_BC:JDT8]
+~w~Toni, amico, devi darti una calmata.
-[BNK4_44:BANKJ4]
-Ce l'abbiamo fatta! Siamo ricchi, RICCHI!
+[JDT8_C5:JDT8]
+~w~Fai fuori i ~r~sicari dei Sindacco.
-[BNK4_45:BANKJ4]
-Peccato che Cam non ce l'ha fatta, era un bravo ragazzo!
+{=================================== MISSION TABLE MAC1 ===================================}
-[BNK4_46:BANKJ4]
-Sì, comunque... ora ce n'è più per noi!
+[MAC1_AA:MAC1]
+~w~Ma?
-[BNK4_47:BANKJ4]
-Maledettamente vero! YEEEEHAAAH!
+[MAC1_AB:MAC1]
+~w~Sono io! Sono tornato!
-[BNK4_48:BANKJ4]
-Tommy, vuoi un massaggio?
+[MAC1_AC:MAC1]
+~w~Toni? Dove diavolo sei stato?
-[BNK4_49:BANKJ4]
-Ciao Mercedes! Sì, effettivamente sono un po' teso...
+[MAC1_AM:MAC1]
+~w~Neanche una chiamata durante tutto questo tempo!
-[BNK450A:BANKJ4]
-Sai cosa ti dico Tommy? Sai cosa ti dico? I membri corrotti della SWAT faranno meglio a fare attenzione finché Kent Paul è in città.
+[MAC1_AD:MAC1]
+~w~Non avevano i telefoni nel posto in cui eri?
-[BNK450B:BANKJ4]
-Eddai, dammene una fetta più grande! Amico, dai! Mi devo comprare dei vestiti nuovi!
+[MAC1_AE:MAC1]
+~w~Dai Ma, andiamo, sai che non potevo chiamare!
-[BNK4_94:BANKJ4]
-~w~OK, ragazzi. Procediamo come pianificato.
+[MAC1_AF:MAC1]
+~w~Un vero uomo avrebbe chiamato la sua mamma.
-[BM_DEAD:BANKJ4]
-~r~Hai bisogno dell'amministratore vivo!
+[MAC1_AG:MAC1]
+~w~Dovresti prendere esempio da Giovanni Casa.
-[ASSET_A:BANKJ4]
-RAPINA ALLA BANCA COMPLETATA!
+[MAC1_AN:MAC1]
+~w~Chiama sua madre tutti i giorni.
-[ASSET_B:BANKJ4]
-~g~Il Malibu d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[MAC1_AH:MAC1]
+~w~Lui sì che è un brav'uomo.
-[IDIOT:BANKJ4]
-~r~Vai in giro vestito come un pazzo e attiri l'attenzione! Sei un IDIOTA!
+[MAC1_AO:MAC1]
+~w~...e la sua salsiccia siciliana è la migliore della città!
-{=================================== MISSION TABLE BARON1 ===================================}
+[MAC1_AI:MAC1]
+~w~Casa! Ma mamma! Casa non è un brav'uomo, è un pervertito!
-[COK1_A:BARON1]
-Forza, dai, forza! Yeh yeh aaaah...
+[MAC1_AJ:MAC1]
+~w~Sono solo delle fandonie! Che razza di uomo sei, Toni?
-[COK1_B:BARON1]
-Stupido cavallo! Ti taglierò la testa!
+[MAC1_AK:MAC1]
+~w~Va bene mamma, come dici tu.
-[COK1_C:BARON1]
-Chi è questo stronzo?
+[MAC1_AL:MAC1]
+~w~Magari telefono a Giovanni... chissà come sta.
-[COK1_D:BARON1]
-Tommy Vercetti, ti ricorderai di me.
+[MAC1_HA:MAC1]
+~w~Sono dell'umore giusto per del vero amore...
-[COK1_E:BARON1]
-Scusami, sono un po' ansioso. Mai fidarsi di un fottuto cavallo!
+[MAC1_17:MAC1]
+~w~Prova a tua mamma che Giovanni Casa non è un tipo a posto!
-[COK1_F:BARON1]
-Hai fatto un bel lavoro: adesso lavori per me.
+[MAC1_B:MAC1]
+~w~Vai al tuo ~y~appartamento ~w~per prendere la macchina fotografica.
-[COK1_H:BARON1]
-Come ti ho detto, amigo, lavori per me. Adesso sta zitto. Un qualche giuda mi ha tradito.
+[MAC1_B0:MAC1]
+~w~Vai al ~y~negozio di Casa.
-[COK1_I:BARON1]
-Pensava non sapessi quanti soldi stessi facendo, ma rubarmi il 3% è come rubarmi il 100%.
+[MAC1B2:MAC1]
+~w~Bello scatto! Ora porta la foto a ~y~casa di mamma.
-[COK1_J:BARON1]
-Nessuno fa questo a me. NESSUNO!!!
+[MAC1_B3:MAC1]
+~w~Avvicinati furtivamente a ~r~Casa, ~w~poi scatta una foto significativa!
-[COK1_K:BARON1]
-Seguilo nel suo appartamento e scopri dove va! Successivamente, lo elimineremo noi.
+[MAC1_B5:MAC1]
+~w~Non spaventarlo.
-[COK1_1:BARON1]
-Ommerda!
+[MAC1_B6:MAC1]
+~r~Hai finito la pellicola! E non hai ancora scattato una foto da portare come prova a tua madre.
-[COK1_2:BARON1]
-Troppo lento, nonnino!
+[MAC1_B7:MAC1]
+~w~Prendi la ~g~macchina fotografica.
-[COK1_4:BARON1]
-Perdente.
+[MAC1_C0:MAC1]
+~w~Non avvicinarti troppo a ~r~Casa~w~ o diventerà sospettoso!
-[COK1_5:BARON1]
-Ti conviene continuare a correre, stronzo!
+[MAC1_C1:MAC1]
+~r~L'hai spaventato! Adesso non riuscirai più a scattare quella foto!
-[COK1_8:BARON1]
-~g~Svelto! Recupera un mezzo e inseguilo!
+[MAC1_C2:MAC1]
+~r~Qualcosa ha spaventato Casa!
-[COK1_9:BARON1]
-~r~Dovevi inseguirlo, non ucciderlo!
+[MAC1_C3:MAC1]
+~r~Hai perso le tracce di Casa!
-[COK1_10:BARON1]
-~r~Entra nella casa del ladro e scopri dove ha nascosto il denaro.
+[MAC1_C4:MAC1]
+~r~Casa è stato massacrato!
-[COK1_11:BARON1]
-~g~Dai un'occhiata da questa finestra.
+[MAC1_C5:MAC1]
+~w~Sei troppo vicino a ~r~Casa!
-[COK1_7:BARON1]
-~g~È scappato sul tetto: stagli dietro ma non ucciderlo!
+[MAC1_C6:MAC1]
+~w~Non perdere di vista ~r~Casa!
-[COK1_G:BARON1]
-Lavoro per soldi.
+[MAC1_D0:MAC1]
+~w~Pare che Casa abbia trovato un po' di azione.
-{=================================== MISSION TABLE BARON2 ===================================}
+[MAC1_JA:MAC1]
+~w~OK signore! È l'ora della poppata!
-[COK2_A:BARON2]
-Ma che fottuti incompetenti non siete?
+[MAC1_JB:MAC1]
+~w~Chi vuole essere la mia mamma?
-[COK2_B:BARON2]
-IDIOTI! IDIOTI! IDIOTI! IDIOTI!
+[MAC1_JC:MAC1]
+~w~Oddio!
-[COK2_C:BARON2]
-Tommy,
+[MAC1_IA:MAC1]
+~w~OK signore, datemi un minuto e sarò da voi.
-[COK2_D:BARON2]
-questi idioti... cercano sempre di fregarti.
+[MAC1_IB:MAC1]
+~w~Mi metterò qualcosa di più... comodo.
-[COK2_E:BARON2]
-È questo il problema in questo business.
+[MAC1_CA:MAC1]
+~w~Stringimi forte forte!
-[COK2_F:BARON2]
-Che cosa credi di fare? Aaaaah!
+[MAC1_CB:MAC1]
+~w~Ho bisogno di coccole!
-[COK2_G:BARON2]
-Questi stronzi hanno fallito miseramente.
+[MAC1_DA:MAC1]
+~w~Lecca il mio pupazzo! Leccalo!
-[COK2_H:BARON2]
-Ben presto anche i papà e le mamme penseranno di poter spacciare coca in Vice City.
+[MAC1_EA:MAC1]
+~w~Andiamo ragazze! Venite a giocare!
-[COK2_I:BARON2]
-Chi sarà il prossimo adesso? La fottuta mafia?
+[MAC1_FA:MAC1]
+~w~MERDA! C'è qualcuno qui!
-[COK2_J:BARON2]
-La base della loro banda è una fortezza al piano terra,
+[MAC1_FB:MAC1]
+~w~Veloci! Salite sul furgone!
-[COK2_K:BARON2]
-per cui Quentin... Quentin! QUENTIN!
+[MAC1_GA:MAC1]
+~w~Oddio! Oddio!
-[COK2_L:BARON2]
-Lui ti porterà in volo sull'area!
+[MAC1_GB:MAC1]
+~w~NON GUAR-DAR-MI!
-[COK2_M:BARON2]
-Sradicateli!
+[MAC1_BA:MAC1]
+~w~Ehi Ma!
-[COK2_N:BARON2]
-Che cosa credi di fare?
+[MAC1_BB:MAC1]
+~w~Guarda questa foto! È quel 'brav'uomo' di Giovanni Casa... che indossa un fottuto pannolino!
-[COK2_O:BARON2]
-Che cosa fai qua?
+[MAC1_BC:MAC1]
+~w~È così che passi il tuo tempo?
-[COK2_P:BARON2]
-Ehi, ho chiesto in giro ed è ovvio
+[MAC1_BD:MAC1]
+~w~Nascondendoti dietro gli alberi facendo foto agli uomini?
-[COK2_Q:BARON2]
-che Diaz ha fatto saltare l'accordo e ha freddato mio fratello.
+[MAC1_BE:MAC1]
+~w~Che hai che non va Antonio? Mi vuoi disonorare!
-[COK2_R:BARON2]
-E ucciderà anche te!
+[MAC1_BF:MAC1]
+~w~Ma...
-[COK2_S:BARON2]
-Io posso far fuori Diaz!
+[MAC1_BG:MAC1]
+~w~E, pannolino o non pannolino, rimane un uomo migliore di te!
-[COK2_T:BARON2]
-No, ascoltami! Io mi occuperò di Diaz:
+[MAC1_B8:MAC1]
+~w~Adesso esci.
-[COK2_U:BARON2]
-sta cominciando a fidarsi di me.
+[MAC1_B1:MAC1]
+~w~Segui ~r~Casa~w~, ma non avvicinarti troppo.
-[COK2_1:BARON2]
-Ho una domanda, però: perché 'Quentin'?
+[MAC1_C7:MAC1]
+~w~Effettua uno zoom su ~r~Casa ~w~per scattare la foto che lo coprirà di ~r~vergogna.
-[COK2_2:BARON2]
-Non lo so, mi è sempre piaciuto... Quentin Vance...
+[MAC1_D1:MAC1]
+~w~Continua a seguire ~r~Casa~w~. Potresti scattare una bella foto.
-[COK2_3:BARON2]
-Vance? Tu sei Lance Vance?
+{=================================== MISSION TABLE MAC2 ===================================}
-[COK2_4:BARON2]
-Ehi, ne ho avuto abbastanza a scuola!
+[MAC2_AA:MAC2]
+~w~Ma!... Ma!... andiamo Ma... parlami.
-[COK2_5:BARON2]
-Hai mai provato a sparare con quelli da un elicottero?
+[MAC2_AB:MAC2]
+~w~Non c'è più nessuna 'Ma' per te, codardo!
-[COK2_8:BARON2]
-Dove ci stiamo dirigendo?
+[MAC2_AC:MAC2]
+~w~Non puoi prendermi in giro... so perché non vuoi più tornare qui.
-[COK2_9:BARON2]
-Prawn Island.
+[MAC2_AD:MAC2]
+~w~Ti stai facendo spaventare da alcuni membri della Triade!
-[COK2_13:BARON2]
-Lance Vance. Brutto bastardo.
+[MAC2_AE:MAC2]
+~w~Tuo padre, Dio l'abbia in gloria, non si sarebbe mai fatto cacciare da casa sua.
-[COK2_14:BARON2]
-OK, siamo quasi arrivati.
+[MAC2_AF:MAC2]
+~w~Ma mamma!
-[COK2_15:BARON2]
-Faremo un paio di passaggi.
+[MAC2_AG:MAC2]
+~w~Al contrario di te, tuo padre non era un pisciasotto!
-[COK2_16:BARON2]
-Cerca di colpire il maggior numero di nemici possibile.
+[MAC2_AH:MAC2]
+~w~Finché la Triade non ti porterà rispetto, non sarai più mio figlio!
-[COK2_17:BARON2]
-Poi ti scarico e dovrai cavartela da solo.
+[MAC2_AI:MAC2]
+~w~Forse una figlia, ma di sicuro non un figlio.
-[COK2_20:BARON2]
-Merda! Siamo in una zona di guerra! Abbatti un po' di gente!
+[MAC2_B1:MAC2]
+~w~Dimostra a mamma che non hai paura della Triade. Prenditi cura delle ~r~due gang della Triade~w~ a Chinatown!
-[COK2_21:BARON2]
-Stiamo sotto tiro, amico!
+[MAC2_I1:MAC2]
+~w~Un capobanda della Triade si trova in quel ~r~furgone del pesce~w~ blindato. Mandalo fuori strada!
-[COK2_22:BARON2]
-Questo affare è maledettamente costoso da riparare! Falli fuori!
+[MAC2_I2:MAC2]
+~w~Il ~r~furgone ~w~sta scappando e sta lasciando cadere il carico! Attento!
-[COK2_23:BARON2]
-OK, adesso dovrai cavartela da solo... Buona fortuna, fratello!
+[MAC2_I3:MAC2]
+~w~Stanno scappando! Elimina la feccia della ~r~Triade ~w~!
-[COK2_24:BARON2]
-Condizioni elicottero:
+[MAC2_I4:MAC2]
+~w~Ti hanno visto! Massacra tutti i membri della ~r~Triade!
-[COK2_25:BARON2]
-~g~Recupera i soldi sul tetto.
+[MAC2_I5:MAC2]
+~w~Sei nel territorio della ~r~Triade~w~. Fai attenzione!
-[COK2_27:BARON2]
-Sei nel MIO territorio, stronzo!
+[MAC2_I6:MAC2]
+~w~Fuori una. Adesso elimina l'altra ~r~gang!
-[COK2_28:BARON2]
-Stai per affondare!
+[MAC2_BA:MAC2]
+~w~Sì! Stai guardando Ma?
-[COK2_6:BARON2]
-No. Farò un po' di pratica lungo la strada.
+[MAC2_BB:MAC2]
+~w~Toni Cipriani vi sta prendendo a calci nel culo!
-[OPEN_B:BARON2]
-Il blocco stradale per la terraferma è stato rimosso.
+[MAC2_BC:MAC2]
+~w~Ricordatevi questo nome, teste di pesce!
-[COK2_V:BARON2]
-sta cominciando a fidarsi di me.
+{=================================== MISSION TABLE MAC3 ===================================}
-{=================================== MISSION TABLE BARON3 ===================================}
+[MAC3_A0:MAC3]
+~w~Ma? Sono tornato...
-[COK3_A:BARON3]
-Scommetto che adesso non vi divertite più!
+[MAC3_A1:MAC3]
+~w~Guarda come sei magro!
-[COK3_B:BARON3]
-Ah ah ah ah!
+[MAC3_A2:MAC3]
+~w~Se vivessi ancora qui con tua madre, come dovrebbe fare ogni figlio, mangeresti bene!
-[COK3_C:BARON3]
-Woh! Fai attenzione a dove punti quel coso.
+[MAC3_A3:MAC3]
+~w~E guarda con che macchine vai in giro!
-[COK3_D:BARON3]
-Basta con merda di piccione sulla MIA macchina, vero Tommy?
+[MAC3_A4:MAC3]
+~w~Mi fai vergognare di te Antonio, davvero.
-[COK3_E:BARON3]
-Direi di sì.
+[MAC3_A5:MAC3]
+~w~La gente crede che ti abbia cresciuto male!
-[COK3_F:BARON3]
-Hai proprio ragione. Adesso ascolta:
+[MAC3_A6:MAC3]
+~w~Che posso fare, Ma? Sai che farei qualsiasi cosa per te.
-[COK3_G:BARON3]
-sai chi possiede la barca più veloce della costa est?
+[MAC3_A7:MAC3]
+~w~Oggi quel Sucho correrà in centro.
-[COK3_H:BARON3]
-Non così su due piedi.
+[MAC3_A8:MAC3]
+~w~Se solo potessi essere come lui!
-[COK3_I:BARON3]
-IO. E voglio che la situazione non cambi.
+[MAC3_A9:MAC3]
+~w~Lui sì che tratta sua madre con rispetto.
-[COK3_J:BARON3]
-Ogni contrabbandiere da qui a Caracas ha un solo sogno: un'imbarcazione più veloce.
+[MAC3_AA:MAC3]
+~w~Naturalmente, se tuo padre fosse qui, avrebbe di sicuro vinto la gara,
-[COK3_K:BARON3]
-Si mormora che il cantiere Hull-o-Caust ha appena finito di costruirne una
+[MAC3_AB:MAC3]
+~w~...e tolto dalla faccia di Sucho quel sorrisino da imbecille!
-[COK3_L:BARON3]
-per una testa di cazzo del Costa Rica.
+[MAC3_AC:MAC3]
+~w~Sì, gli avrebbe fatto ingoiare un po' di piombo!
-[COK3_M:BARON3]
-E Tommy... IO VOGLIO QUELLA BARCA!!!
+[MAC3_AD:MAC3]
+~w~Ah, tuo padre era un grand'uomo, con due palle così!
-[COK3_N:BARON3]
-Credo che siano tornati i tuoi piccioni.
+[MAC3_B0:MAC3]
+~w~Dimostra di essere all'altezza di Sucho. Vinci la gara e poi fallo fuori.
-[COK3_O:BARON3]
-Ah! Pensavo di averti preso. Da dove salti fuori?
+[MAC3_C0:MAC3]
+~w~Hai battuto ~r~Sucho~w~, adesso fallo fuori!
-[COK3_P:BARON3]
-Piccioni! Boom! Ah ah ah!
+[MAC3_C1:MAC3]
+~r~Sucho~w~ sta tentando di scappare
-[COK3_5:BARON3]
-~g~Trova l'interruttore per abbassare l'imbarcazione.
+[MAC3_X0:MAC3]
+~r~Hai fatto fuggire Sucho!
-[COK3_6:BARON3]
-~g~Porta la barca alla villa di Diaz.
+[MAC3_C2:MAC3]
+~r~Sucho~w~ sta scappando!
-[COK3_7:BARON3]
-~r~Hai distrutto la barca!
+{=================================== MISSION TABLE MAC4 ===================================}
-[COK3_8:BARON3]
-~g~Raggiungi il cantiere al porto e ruba la barca più veloce.
+[MAC4_A0:MAC4]
+~w~Ma!... Ma!... ci sei?
-[COK3_9:BARON3]
-~g~Adesso entra nella barca.
+[MAC4_A1:MAC4]
+~w~Non ho intenzione di rivolgerti la parola, Toni!
-{=================================== MISSION TABLE BARON4 ===================================}
+[MAC4_A2:MAC4]
+~w~Sei una vergogna per le tue radici siciliane!
-[COK4_A:BARON4]
-Sputa fuori! CATORCIO DI PLASTICA!
+[MAC4_A3:MAC4]
+~w~Dopo aver scattato quella foto a Casa, ha smesso di pagare il pizzo.
-[COK4_B:BARON4]
-Come osi farmi questo?
+[MAC4_A4:MAC4]
+~w~E tu cosa hai fatto per rimediare?
-[COK4_C:BARON4]
-Chi credi di essere, brutto pezzo di merdosa plastica! Aaarrgh!
+[MAC4_A5:MAC4]
+~w~NULLA!
-[COK4_D:BARON4]
-VAFFANCULO!
+[MAC4_A6:MAC4]
+~w~Tuo padre l'avrebbe ridotto in polpette con le sue mani!
-[COK4_E:BARON4]
-Se hai distrutto il mio film favorito di El Burro ti spacco!
+[MAC4_A8:MAC4]
+~w~ma ci vuole del fegato per offendere un membro della famiglia Cipriani!
-[COK4_F:BARON4]
-Che altro posso fare?
+[MAC4_A9:MAC4]
+~w~Mi piacerebbe che tu avessi le sue palle!
-[COK4_G:BARON4]
-Forse non è collegato...
+[MAC4_AA:MAC4]
+~w~Ti piacerebbe che avessi le sue palle?
-[COK4_H:BARON4]
-Cosa?
+[MAC4_AB:MAC4]
+~w~OK Ma! L'hai voluto te!
-[COK4_I:BARON4]
-Merda... non importa, ne posso comprare a centinaia.
+[MAC4_B:MAC4]
+~w~Passa dal ~y~negozio di Giovanni Casa~w~ e 'convincilo' a fare un giretto con te.
-[COK4_J:BARON4]
-Adesso Tommy,
+[MAC4_B0:MAC4]
+~w~Ciao, Toni... come butta?
-[COK4_K:BARON4]
-ogni mese un freelance naviga fino a Vice City e ormeggia il suo yacht.
+[MAC4_B1:MAC4]
+~w~Che succede?
-[COK4_L:BARON4]
-Vende il suo carico alla prima imbarcazione.
+[MAC4_B2:MAC4]
+~w~Un gatto ti ha mangiato la lingua?
-[COK4_M:BARON4]
-Voglio che tu prenda la barca più veloce,
+[MAC4_B3:MAC4]
+~w~Casa, io e te dobbiamo parlare...
-[COK4_N:BARON4]
-batta tutti gli altri stronzi
+[MAC4_B4:MAC4]
+~w~Da qualche parte, in privato.
-[COK4_O:BARON4]
-e riporti qui il carico, OK?
+[MAC4_C:MAC4]
+~w~Non lasciare che ~r~Casa~w~ esca vivo.
-[COK4_P:BARON4]
-Fammi indovinare, pensavi mi avrebbe fatto comodo un angelo custode?
+[MAC4_C1:MAC4]
+~w~Pagherò il pizzo, Toni! Lo giuro!
-[COK4_Q:BARON4]
-Vorrei solo che mi lasciassi venire, amico mio.
+[MAC4_C2:MAC4]
+~w~Oh, andiamo Toni! Ti darò tutto quello che vuoi!
-[COK4_R:BARON4]
-Puoi continuare con queste stronzate alla rambo,
+[MAC4_C3:MAC4]
+~w~Farò qualsiasi cosa Toni! Qualsiasi cosa! Non farmi del male!
-[COK4_S:BARON4]
-ma sono sicuro che un giorno o l'altro ti salverò il culo.
+[MAC4_D1:MAC4]
+~w~OK! OK! Mi hai convinto!
-[COK4_T:BARON4]
-e allora vorrai baciarmi!
+[MAC4_D2:MAC4]
+~w~OK! OK! Mi arrendo! Mi arrendo! Non farmi più del male!
-[COK4_U:BARON4]
-Sei pazzo.
+[MAC4_D3:MAC4]
+~w~Vieni con me, testa di cazzo!
-[COK4_V:BARON4]
-Ah ah ah!
+[MAC4_E0:MAC4]
+~w~Porta Casa alla ~y~segheria.
-[COK4_1:BARON4]
-Allora Tommy, sappiamo che è stato Diaz a far saltare il nostro affare...
+[MAC4_E1:MAC4]
+~w~Non abbandonare ~b~Casa!
-[COK4_3:BARON4]
-Allora per quale motivo continuiamo a lavorare per lui?
+[MAC4_F0:MAC4]
+~w~Quindi... ehm... dove siamo diretti?
-[COK4_4:BARON4]
-Più cose scopriamo adesso, meno dovremo imparare quando ci impossesseremo di questa città!
+[MAC4_F1:MAC4]
+~w~Posso stare tranquillo vero, Toni?
-[COK4_5:BARON4]
-Mi piace il tuo stile, amico. Molto fico.
+[MAC4_F2:MAC4]
+~w~...ti darò i soldi che vi devo... lo giuro!
-[COK4_12:BARON4]
-Attento, stanno arrivando da tutte le parti!
+[MAC4_F3:MAC4]
+Ho bisogno di un po' di tempo!
-[COK4_13:BARON4]
-Preso! Torniamo da Diaz il più velocemente possibile!
+[MAC4_F4:MAC4]
+~w~A tua mamma piace ancora la salsiccia piccante?
-[COK4_14:BARON4]
-Ne vuoi un po'?
+[MAC4_F5:MAC4]
+Posso dargliene un po', nessun problema!
-[COK4_15:BARON4]
-Salutami i pesci!
+[MAC4_G0:MAC4]
+~w~Quindi... ehm... di cosa vuoi parlare Toni?
-[COK4_16:BARON4]
-Prendi questo! E questo!
+[MAC4_G1:MAC4]
+~w~Dei soldi della protezione?
-[COK4_19:BARON4]
-Altri guai in arrivo!
+[MAC4_G2:MAC4]
+~w~Vero?
-[COK4_20:BARON4]
-Ci stanno sparando da quel molo!
+[MAC4_G3:MAC4]
+~w~...Toni?
-[COK4_24:BARON4]
-Bel colpo, amico. Sei un vero pazzo di prima classe.
+[MAC4_G4:MAC4]
+~w~Possiamo parlarne, vero Toni?
-[COK4_25:BARON4]
-Beh, grazie.
+[MAC4_G6:MAC4]
+~w~Di questi tempi la gente non parla molto, Toni.
-[COK4_26:BARON4]
-Ci vediamo, Tommy.
+[MAC4_G7:MAC4]
+~w~Fermati lì e chiudi quella cazzo di bocca, Casa.
-[COK4_27:BARON4]
-OK, Mr. Lance Vance Dance.
+[MAC4_G8:MAC4]
+~w~OK Toni! Ma io...
-[COK4_28:BARON4]
-~g~Raggiungi lo yacht prima delle altre imbarcazioni!
+[MAC4_G9:MAC4]
+~w~Ehi Toni! Stai attento con quella roba! È l'interruttore per...
-[COK4_31:BARON4]
-~g~Raggiungi la barca più veloce attraccata al molo!
+[MAC4_GA:MAC4]
+~w~AAARRRGGGHHHHHHHH!
-[COK4_32:BARON4]
-~r~Troppo lento!
+[MAC4_GB:MAC4]
+~w~Vattene immediatamente!
-[COK4_33:BARON4]
-~r~Hai distrutto la barca!
+[MAC4_H:MAC4]
+~w~La 'salsiccia di Casa' è sul ~b~furgone~w~ e deve essere consegnata al negozio.
-[COK4_34:BARON4]
-~g~Affonda quelle imbarcazioni!
+[MAC4_H1:MAC4]
+~w~Fai la consegna al ~y~negozio di Casa.
-[COK4_35:BARON4]
-Condizioni barca:
+[MAC4_H2:MAC4]
+~w~Non abbandonare il ~b~furgone~w~!
-{=================================== MISSION TABLE BARON5 ===================================}
+[MAC4_H3:MAC4]
+~w~Semina i poliziotti!
-[PROP_A:BARON5]
-PROPRIETÀ ACQUISITA!
+[MAC4_I0:MAC4]
+~w~Una consegna speciale di carne per la salsiccia?
-[COK4_30:BARON5]
-~r~Lance è morto!
+[MAC4_I1:MAC4]
+~w~Non mi ha avvertito nessuno!
-[ASS1_A:BARON5]
-Ho messo un po' di cannoni nel bagagliaio.
+[MAC4_I2:MAC4]
+~w~Wow! Quale zoo abbiamo rapinato questa volta?
-[ASS1_B:BARON5]
-Accidenti! Dove hai trovato tutta questa roba?
+[MAC4_I3:MAC4]
+~w~C'è un mucchio di carne qui!
-[ASS1_C:BARON5]
-La tenevo da parte per una giornata di pioggia.
+[MAC4_I4:MAC4]
+~w~...Mmmm! Buona! OK, la prendo.
-[ASS1_D:BARON5]
-Ti piace?
+[MAC4_I6:MAC4]
+~w~Se dovesse scoprirlo, andrà fuori di testa!
-[ASS1_E:BARON5]
-Sì, mi piace.
+[MAC4_I7:MAC4]
+~w~E io sarò fottuto!
-[ASS1_F:BARON5]
-Brutto idiota...
+[MAC4_X0:MAC4]
+~r~Troppo rapido e indolore per essere una vera operazione siciliana!
-[ASS1_G:BARON5]
-La mia bellissima casa...
+[MAC4_X1:MAC4]
+~r~Dovevi consegnare il furgone!
-[ASS1_H:BARON5]
-Guarda cosa hai combinato!
+[MAC4_X2:MAC4]
+~r~Hai abbandonato Casa!
-[ASS1_I:BARON5]
-Questo è per mio fratello!
+[MAC4_E2:MAC4]
+~w~Non uscire dalla ~y~segheria!
-[ASS1_J:BARON5]
-Mi fidavo di te, Tommy!
+[MAC4_I5:MAC4]
+~w~È un bene che Casa non sia qui.
-[ASS1_K:BARON5]
-Ti avrei fatto diventare...
+[MAC4_G5:MAC4]
+~w~Sì sì, parlare fa bene.
-[ASS1_L:BARON5]
-Buona notte, Mr. Diaz.
+[MAC4_CN:MAC4]
+~w~Chiamate i poliziotti!
-[ASS1_1:BARON5]
-Questo posto sarà zeppo di stronzi... fai attenzione...
+[MAC4_CO:MAC4]
+~w~Aiuto!
-[ASS1_2:BARON5]
-Non preoccuparti, Tommy, ti copro io.
+[MAC4_CP:MAC4]
+~w~Qualcuno mi aiuti!
-[ASS1_4:BARON5]
-Diaz deve essere qui dentro!
+[MAC4_CQ:MAC4]
+~w~Aiuto!
-[ASS1_13:BARON5]
-DIAZ? Sono venuto a prendermi il tuo business!
+[MAC4_CR:MAC4]
+~w~Qualcuno mi aiuti!
-[ASS1_14:BARON5]
-TOMMY! Mi hai tradito... Idiota! Ti ucciderò fra un attimo!
+[MAC4_CS:MAC4]
+~w~Fatemi uscire da qui!
-[ASS1_16:BARON5]
-~g~Uccidi Diaz!
+[MAC4_A7:MAC4]
+~w~Casa è un tipo divertente,
-[BUD1:BARON5]
-Lance
+[MAC4_C0:MAC4]
+~w~Non possiamo risolvere civilmente la faccenda, Toni?
-[ASS1_18:BARON5]
-~g~La porta è chiusa: trova un percorso alternativo.
+[MAC4_1:MAC4]
+~w~Raggiungi ~r~Casa~w~ avvicinandoti di soppiatto dietro di ~r~lui.
-[ASS1_19:BARON5]
-Di qua!
+{=================================== MISSION TABLE MAC5 ===================================}
-[ASS1_20:BARON5]
-Tommy, ho un problema con Quentin, non con te!
+[MAC5_AA:MAC5]
+~w~Ma? Ci sei?
-{=================================== MISSION TABLE BIKE1 ===================================}
+[MAC5_AB:MAC5]
+~w~Toni? ...Sono al telefono...
-[BM1_A:BIKE1]
-Dov'è Baker?
+[MAC5_AC:MAC5]
+~w~...sì, sì è qui... OK... OK... lo terrò impegnato... addio.
-[BM1_B:BIKE1]
-Sto cercando Big Mitch Baker...
+[MAC5_AD:MAC5]
+~w~Toni? Sei venuto a far arrabbiare di nuovo la tua mamma eh?
-[BM1_C:BIKE1]
-Chi lo cerca?
+[MAC5_AE:MAC5]
+~w~Passi le giornate a fare il duro.
-[BM1_D:BIKE1]
-Tommy Vercetti.
+[MAC5_AF:MAC5]
+~w~Non vieni mai a trovarmi e non mi presenti le tue fidanzate.
-[BM1_E:BIKE1]
-Vercetti.
+[MAC5_AG:MAC5]
+~w~Cosa vuoi? Sei dimagrito e così pallido!
-[BM1_F:BIKE1]
-Non mi sembri della polizia, il che ti ha fatto guadagnare un minuto.
+[MAC5_AH:MAC5]
+~w~Mi stai uccidendo ricoprendomi di vergogna e disonore. ~w~Beh, non più.
-[BM1_G:BIKE1]
-Ti conviene parlare in fretta.
+[MAC5_AI:MAC5]
+~w~Da questo momento in poi.... è finita.
-[BM1_H:BIKE1]
-Kent Paul mi ha detto che saresti stato interessato a occuparti della sorveglianza di uno spettacolo che sta allestendo.
+[MAC5_AJ:MAC5]
+~w~Ho messo una taglia sulla tua testa Antonio, è l'unica maniera...
-[BM1_I:BIKE1]
-Kent Paul? Sheesh! Non mi stupisce abbia mandato te.
+[MAC5_AK:MAC5]
+~w~...sei sempre stato un ragazzo disobbediente.
-[BM1_J:BIKE1]
-L'ultima volta che è stato qui è uscito dalla finestra con il vestitino che gli hanno dato alla nascita.
+[MAC5_AL:MAC5]
+~w~Cosa? Ma!
-[BM1_K:BIKE1]
-Sei interessato o no?
+[MAC5_AM:MAC5]
+~w~È la cosa migliore figliolo... almeno cerca di morire come un vero uomo!
-[BM1_L:BIKE1]
-Facciamo solo favori tra compagni.
+[MAC5_AN:MAC5]
+~w~Devi finirla di disonorarmi!
-[BM1_M:BIKE1]
-Come faccio a diventarlo?
+[MAC5_B1:MAC5]
+~w~I sicari di mamma sono qui!
-[BM1_N:BIKE1]
-Non è uno circolo sportivo, amico. Sai guidare una moto?
+[MAC5_B2:MAC5]
+~w~Dimostra a mamma che vali di più dei suoi ~r~sicari.~w~ Uccidili tutti!
-[BM1_O:BIKE1]
-Sai sederti su uno sgabello e bere birra?
+[MAC5_B3:MAC5]
+~w~Adesso sono infuriati! ~r~Eliminali!
-[BM1_P:BIKE1]
-Cougar, Zeppelin, scoprite se questa ragazzina sa portare una moto...
+[MAC5_B4:MAC5]
+~w~I ~r~sicari~w~ sanno che sei qui. Devi allontanarti da Saint Mark's!
-[BM1_2:BIKE1]
-~g~Hai bisogno di una Freeway o di un'Angel per gareggiare!
+[MAC4_B6:MAC5]
+~w~Stanno arrivando altri ~r~sicari~w~! Allontanati da Saint Mark's. Sanno dove sei!
-[BM1_3:BIKE1]
-~r~I partecipanti sono stati attaccati!
+[MAC4_B7:MAC5]
+~w~GRANATA! CORRI!
-[BIKE1_1:BIKE1]
-Bene, bei vestiti. Vediamo cosa sai fare.
+[MAC5_C1:MAC5]
+~w~Questo li ha messi fuori gioco... ma ora che i killer sono stati pagati, porteranno a termine il loro lavoro a qualunque costo.
-[BM1_1:BIKE1]
-~g~Recupera una Freeway o un'Angel e posizionati sulla griglia di partenza.
+[MAC5_C2:MAC5]
+~w~Ricorda... TORNERANNO!
-{=================================== MISSION TABLE BIKE2 ===================================}
+[HM1:MAC5]
+~w~Non hanno intenzione di mollare! Stanno arrivando altri ~r~sicari~w~. Falli fuori!
-[BM2_1:BIKE2]
-CAOS:
+[HM2:MAC5]
+~w~Attento! Dei ~r~sicari~w~ si stanno avvicinando. Ammazzali!
-[BM2_A:BIKE2]
-Ah ah ah, ti ho preso di nuovo!
+[HM3:MAC5]
+~w~Stanno arrivando altri ~r~sicari~w~. Spazzali via!
-[BM2_B:BIKE2]
-Ehi, Vercetti.
+[HM4:MAC5]
+~w~Altri ~r~sicari~w~ in avvicinamento! Eliminali!
-[BM2_C:BIKE2]
-Cougar ha detto che sai portare la moto come si deve.
+[MAC5_B5:MAC5]
+~w~Occupati dei rimanenti ~r~sicari~w~, ma rimani fuori da Saint Mark's!
-[BM2_D:BIKE2]
-Già, quanti altri giretti devo ancora fare?
+{=================================== MISSION TABLE MAR1 ===================================}
-[BM2_E:BIKE2]
-Sono un uomo molto impegnato.
+[MAR1M1:MAR1]
+~w~Sei in ritardo! Tipico degli uomini.
-[BM2_F:BIKE2]
-Se serve una bella scazzottata per mettere le cose a posto, dillo chiaramente.
+[MAR1M2:MAR1]
+~w~Voglio andare a fare shopping... e tu farai da autista.
-[BM2_G:BIKE2]
-Essere uno di noi non significa solo azzuffarsi. Si tratta di far parte di una famiglia.
+[MAR1M3:MAR1]
+~w~Per cui sii disponibile: oggi voglio divertirmi, a costo di vederti morto!
-[BM2_H:BIKE2]
-Sì, sono già stato parte di una famiglia. Non ha funzionato.
+[MAR1M4:MAR1]
+~w~Devo solo finire di prepararmi....
-[BM2_I:BIKE2]
-Sì, certo, ma questa famiglia si occupa dei suoi membri.
+[MAR1M5:MAR1]
+~w~Chi se ne frega! Sono bellissima. Andiamo, Toni!
-[BM2_J:BIKE2]
-Non chiediamo a uno di fare il lavoro sporco per poi lasciarlo marcire quindici anni ai lavori forzati.
+[MAR1_B:MAR1]
+~w~Porta Maria al ~y~negozio.
-[BM2_K:BIKE2]
-Sì, esatto. Ho fatto la mia parte.
+[MAR1_D:MAR1]
+~w~Aspettami qua, dolcezza... non ci metterò molto...
-[BM2_L:BIKE2]
-Questa è la più grande famiglia di disadattati, reietti e derelitti.
+[MAR1_D2:MAR1]
+~w~Volevo solo vedere com'era alla luce del sole!
-[BM2_M:BIKE2]
-Merda, alcuni di noi sono stati persino traditi dalla propria nazione.
+[MAR1_E:MAR1]
+~w~Andiamocene da qui!
-[BM2_N:BIKE2]
-Sono stato imprigionato durante il Vietnam. Brutta storia.
+[MAR1_E3:MAR1]
+~w~Torna indietro e prendi ~b~Maria.
-[BM2_O:BIKE2]
-Ed è per questo che ti chiedo di far bollire la pentola.
+[MAR1_F:MAR1]
+~W~Divertente! Ma ho bisogno di comprare dell'altra roba.
-[BM2_P:BIKE2]
-Questa fottuta nazione ha bisogno di un bel calcio nel culo, e saremo noi a darglielo.
+[MAR1_G:MAR1]
+~w~Tieni il motore acceso...
-[BM2_Q:BIKE2]
-Per cui esci, prendi una moto e mostra a questa città quanto siamo arrabbiati!
+[MAR1_GB:MAR1]
+~w~Eddai Maria! Basta con i furti!
-[BM2_R:BIKE2]
-Va bene.
+[MAR1_GC:MAR1]
+~w~Ehi, silenzio bambino! Prima c'è stato un piccolo malinteso!
-[BM2_2:BIKE2]
-~g~Devi riempire l'indicatore del caos entro il tempo stabilito per mostrare quanto sei arrabbiato!
+[MAR1_G2:MAR1]
+~w~Te l'ho detto, non ho niente nascosto qua sotto!
-[BM2_3:BIKE2]
-~g~Questo suono indica che hai riempito parte dell'indicatore, continua così.
+[MAR1_H:MAR1]
+~w~Riportami a casa!
-[BM2_4:BIKE2]
-~r~Non sei riuscito a riempire l'indicatore del caos in tempo!
+[MAR1_I:MAR1]
+~w~Se mi lasci qui, Salvatore ti farà tagliare le palle!
-{=================================== MISSION TABLE BIKE3 ===================================}
+[MAR1_J:MAR1]
+~r~Maria è morta! Oh, che disastro per l'umanità!
-[BM3_A:BIKE3]
-Ehi, ciao Mitch.
+[MAR1_K:MAR1]
+~w~Toni, tesoro, oggi mi sono davvero divertita.
-[BM3_B:BIKE3]
-Accidenti Vercetti, hai davvero le palle.
+[MAR1_K2:MAR1]
+~w~Magari potresti passare più tardi, così potremo divertirci ancora...
-[BM3_C:BIKE3]
-Adesso voglio vedere se sei pronto a combattere per la tua famiglia.
+[MAR1_K3:MAR1]
+~w~Ci vediamo dopo, carino!
-[BM3_D:BIKE3]
-Una gang locale ha fatto l'errore di rubare il mio mezzo...
+[MAR1_L:MAR1]
+~w~Abbiamo i poliziotti alle calcagna! Liberati di loro!
-[BM3_E:BIKE3]
-probabilmente come prova di coraggio o qualcosa del genere.
+[MAR1_L2:MAR1]
+~w~Credo tu li abbia seminati! Andiamo a fare shopping!
-[BM3_F:BIKE3]
-Io e i miei uomini stavamo per andare a dar loro una lezione sul rispetto.
+[MAR1_M:MAR1]
+~w~FERMA, LADRA!
-[BM3_G:BIKE3]
-Comunque,
+[MAR1EXT:MAR1]
+~w~Riporta Maria al suo ~y~appartamento.
-[BM3_H:BIKE3]
-ho pensato che sarebbe stata un'ottima occasione per la tua iniziazione.
+[MAR1_1:MAR1]
+NESSUNO
-[BM3_I:BIKE3]
-Riportami indietro la mia moto e potrai dire a Paul che avrà la sua sorveglianza.
+[MAR1_D3:MAR1]
+~w~Tieni giù le mani!
-[BM3_2:BIKE3]
-~r~Dovevi riportare indietro la moto, non distruggerla!
+[MAR1_G3:MAR1]
+~w~Toglimi quelle manacce di dosso!
-[BM3_3:BIKE3]
-~g~Riporta la moto al bar!
+[MAR1_E2:MAR1]
+~w~Cerca di far perdere le tue tracce!
-[BM3_4:BIKE3]
-~g~Sali sulla moto!
+{=================================== MISSION TABLE MAR2 ===================================}
-[INTRUDE:BIKE3]
-~g~Ti hanno visto!
+[MAR2_AA:MAR2]
+~w~Basta! Uno dei tirapiedi di Salvatore sta per portarmi da te...
-[BM3_6:BIKE3]
-~g~Si sono rintanati dietro Ammu-Nation in Downtown.
+[MAR2_AB:MAR2]
+~w~...oh, è davvero un bel tipo
-[BM3_7:BIKE3]
-~g~Avrai bisogno di una moto più veloce per accedere al tetto.
+[MAR2_AC:MAR2]
+~w~Forse un po' magro.
-[BM3_8:BIKE3]
-~g~Usa la moto per saltare da queste scale fino al tetto nella parte più lontana della strada.
+[MAR2_AE:MAR2]
+~w~Comunque... voglio qualcosa per far baldoria, ma la dispensa è vuota.
-[BM3_1:BIKE3]
-~g~Una gang locale ha rubato la Angel di Mitch Baker: riportala indietro!
+[MAR2_AF:MAR2]
+~w~Hai della neve? Pura?
-[BM3_9:BIKE3]
-~g~Recupera l'Angel di Mitch Baker e vattene!
+[MAR2_AG:MAR2]
+~w~Ottimo. Ciao!
-{=================================== MISSION TABLE BMX_1 ===================================}
+[MAR2_AH:MAR2]
+~w~Forza Toni. Devi portarmi in un posto.
-[BMX_REC:BMX_1]
-~g~Nuovo record stabilito: ~1~!!
+[MAR2_BA:MAR2]
+~w~Non hai una macchina?
-[GETBIK2:BMX_1]
-Hai ~1~ secondi per salire su una Dirt Bike!
+[MAR2_BB:MAR2]
+~w~Muoviamoci. Il mio pusher non mi aspetterà tutto il giorno.
-{=================================== MISSION TABLE BOATBUY ===================================}
+[MAR2_3F:MAR2]
+~w~Porta Maria all'incontro col suo ~y~pusher.
-[DRUG_1:BOATBUY]
-Salve? Saaalve? Salve?
+[MAR2_BC:MAR2]
+~w~Eccoli là. Parcheggia dietro di loro, bravo ragazzino.
-[DRUG_2:BOATBUY]
-Tranquillo amico, sono qua.
+[MAR2_GA:MAR2]
+~w~Aspettami qui.
-[DRUG_3:BOATBUY]
-Ehi, damerino! Dimmi, sei il nuovo proprietario?
+[MAR2_GB:MAR2]
+~w~Non mi piace la situazione.
-[DRUG_4:BOATBUY]
-Sì. Qual è la barca più veloce?
+[MAR2_GC:MAR2]
+~w~Grazie per l'interessamento, ma sono la donna di Salvatore, andrà tutto bene.
-[DRUG_5:BOATBUY]
-È già in acqua, amico,
+[MAR2_GE:MAR2]
+~w~Non vado da nessuna parte con te! Chi diavolo credi di essere?
-[DRUG_6:BOATBUY]
-pensavo che la volessi provare.
+[MAR2_GF:MAR2]
+~w~Guida!
-[DRUG_7:BOATBUY]
-Amico, ha già sopra un bel motore da 300 cavalli...
+[MAR2_GG:MAR2]
+~w~Toni!
-[DRUG_8:BOATBUY]
-...e la struttura in vetroresina: vola davvero sull'acqua!
+[MAR2_GH:MAR2]
+~w~Oh merda!
-[DRUG_9:BOATBUY]
-Può andare da zero a sessanta in quattro secondi spaccati...
+[MAR2_19:MAR2]
+~w~Uccidi i ~r~Sindacco!
-[DRUG_10:BOATBUY]
-e può tenere venti pacchi della migliore erba giamaicana nella stiva!
+[MAR2_EA:MAR2]
+~w~Sei felice?
-[DRUG_11:BOATBUY]
-Dacci dentro, amico, è pronta a volare!
+[MAR2_EB:MAR2]
+~w~Toni Cipriani. Mio eroe!
-[DRUG_12:BOATBUY]
-Yo yo, uh, ehi amico, hai da accendere?
+[MAR2_EC:MAR2]
+~w~Sai cosa? Mi sono divertita abbastanza. Portami a casa, bello.
-[DRUG_13:BOATBUY]
-Amico?
+[MAR2_HA:MAR2]
+~w~Senti, uh, vuoi salire per un... uh... un caffè e un dolcetto?
-{=================================== MISSION TABLE CAP_1 ===================================}
+[MAR2_HB:MAR2]
+~w~La prossima volta.
-[CAP1_B1:CAP_1]
-~g~La Mafia sta tassando il tuo business. Trovali e falli fuori.
+[MAR2_HC:MAR2]
+~w~Sicuro? Beh, chiamami.
-[CAP1_B2:CAP_1]
-~g~La Mafia ha tassato il tuo cantiere navale!
+[MAR2_O2:MAR2]
+~w~Riporta Maria al suo ~y~appartamento.
-[CAP1_B3:CAP_1]
-~g~La Mafia ha tassato la tua fabbrica di gelato!
+[MAR2_CA:MAR2]
+~w~Forza, Toni!
-[CAP1_B4:CAP_1]
-~g~La Mafia ha tassato la concessionaria!
+[MAR2_CB:MAR2]
+~w~Accidenti Toni, muoviti!
-[CAP1_B5:CAP_1]
-~g~La Mafia ha tassato la tua compagnia di taxi!
+[MAR2_CC:MAR2]
+~w~Salvami, Toni!
-[CAP_01:CAP_1]
-OK, qual è l'emergenza?
+[MAR2_CD:MAR2]
+~w~Aiuto!
-[CAP_02:CAP_1]
-CHI?
+[MAR2_CE:MAR2]
+~w~Muoooooovitiiiii!
-[CAP_03:CAP_1]
-Tommy... dei maledetti mafiosi... dicevano di essere venuti a prendere la loro fetta...
+[MAR2_FA:MAR2]
+~w~Ora da chi comprerò la roba?
-[CAP_04:CAP_1]
-...dicevano che erano soldi di Mr. Forello... mi sento di merda.
+[MAR2_FB:MAR2]
+~w~Sei un idiota, Toni!
-[CAP_05:CAP_1]
-Forelli? SONNY Forelli?
+[MAR2_LM:MAR2]
+~w~Hai lasciato indietro ~b~Maria~w~. Torna a prenderla.
-[CAP_06:CAP_1]
-Sì, quel nome... credo... hanno davvero insistito...
+[MAR2_MD:MAR2]
+~r~Maria è morta.
-[CAP_07:CAP_1]
-Non preoccuparti amico, non sono arrabbiato con te.
+[MAR2_WA:MAR2]
+~w~Gli ~r~spacciatori~w~ stanno fuggendo!
-[CAP_08:CAP_1]
-Portalo all'ospedale.
+[MAR2_DM:MAR2]
+~r~Hai perso gli spacciatori!
-[CAP_09:CAP_1]
-Tommy... fai a quel tipo un nuovo buco da cui cagare...
+[MAR2_DA:MAR2]
+~w~Bell'eroe che sei!
-[CAP_10:CAP_1]
-Ho intenzione di fargliene due.
+[MAR2_DF:MAR2]
+~r~Hai fatto scappare i pusher di Maria!
-[CAP1_2:CAP_1]
-Conosci le regole, Vercetti!
+[MAR2_18:MAR2]
+~w~Per salvare Maria, tampona la ~r~macchina dei Sindacco~w~!
-[CAP1_3:CAP_1]
-Mr. Forelli manda i suoi saluti!
+[MAR2_AD:MAR2]
+~w~...certo.
-[CAP1_4:CAP_1]
-È il macellaio di Harwood!
+{=================================== MISSION TABLE MAR3 ===================================}
-[CAP1_5:CAP_1]
-Dì a Sonny di stare alla larga!
+[MAR3_A0:MAR3]
+~w~Caro Toni, mi sono offerta come primo premio in una gara su strada.
-[CAP1_6:CAP_1]
-Vice City è MIA adesso, NON sua.
+[MAR3_A1:MAR3]
+~w~Se Salvatore lo scopre, saremo entrambi in un mare di guai.
-[CAP1_7:CAP_1]
-Pensi di potermi tagliar fuori, Vercetti?
+[MAR3_A2:MAR3]
+~w~Per cui ti conviene venire a salvarmi il culo... magari potrebbe diventare tuo!
-[CAP1_8:CAP_1]
-Ti inseguiremo fino a farti fuori, Vercetti.
+[MAR3_A3:MAR3]
+~w~Tua per sempre, Maria.
-[CAP1_9:CAP_1]
-Non hai nessuna possibilità, brutto cazzone psicopatico.
+[MAR3_E0:MAR3]
+~w~Forza, Maria. Andiamo.
-[CAP1_10:CAP_1]
-Ti ucciderò, Vercetti.
+[MAR3_E1:MAR3]
+~w~Finalmente! Mr. Osso Duro fa la sua mossa.
-[CAP1_11:CAP_1]
-Sei sempre stato uno stronzo.
+[MAR3_E2:MAR3]
+~w~Senti, Maria... sei la donna di Salvatore...
-[CAP1_12:CAP_1]
-Ti ammazzo, Vercetti.
+[MAR3_E3:MAR3]
+~w~Non sono di nessuno!
-[CAP1_B6:CAP_1]
-~g~Hai trovato l'esattore: uccidilo!
+[MAR3_E4:MAR3]
+~w~...sei così fottutamente bigotto!
-[CAP1_B7:CAP_1]
-~g~Hai perso l'esattore.
+[MAR3_E5:MAR3]
+~w~Forza Wayne! Andiamo a divertirci!
-[CAP1_B8:CAP_1]
-~r~L'esattore ha tassato tutte le tue proprietà.
+{=================================== MISSION TABLE MAR4 ===================================}
-[CAP1_B9:CAP_1]
-~g~La Mafia ha tassato il Malibu!
+[MAR4_B1:MAR4]
+~w~Wayne si trova con la sua banda a ~y~Chinatown.
-[CAP1_B0:CAP_1]
-~g~La Mafia ha tassato lo studio cinematografico!
+[MAR4_B2:MAR4]
+~w~Raggiungilo e concialo per le feste!
-[CAP1_C2:CAP_1]
-~g~La Mafia è arrivata al cantiere navale!
+[MAR4_C1:MAR4]
+~r~Wayne~w~ sta fuggendo! Ruba una moto e uccidilo!
-[CAP1_C3:CAP_1]
-~g~La Mafia è arrivata alla fabbrica di gelato!
+[MAR4_C3:MAR4]
+~w~Lo stai perdendo! Non far fuggire ~r~Wayne!
-[CAP1_C4:CAP_1]
-~g~La Mafia è arrivata al concessionario!
+[MAR4_D1:MAR4]
+~w~Sei Wayne?
-[CAP1_C5:CAP_1]
-~g~La Mafia è arrivata alla compagnia di taxi!
+[MAR4_D2:MAR4]
+~w~Chi vuole saperlo?
-[CAP1_C9:CAP_1]
-~g~La Mafia è arrivata al Malibu!
+[MAR4_D3:MAR4]
+~w~Sono un amico di Maria.
-[CAP1_C0:CAP_1]
-~g~La Mafia è arrivata allo studio cinematografico!
+[MAR4_D4:MAR4]
+~w~...picchiare le ragazze ti fa andare su di giri, vero?
-[CAP1_D2:CAP_1]
-~g~La Mafia sta abbandonando il cantiere navale!
+[MAR4_D5:MAR4]
+~w~Quella puttana se l'è cercata!
-[CAP1_D3:CAP_1]
-~g~La Mafia sta abbandonando la fabbrica di gelato!
+[MAR4_D6:MAR4]
+~w~Davvero? Beh, ora è il tuo turno!
-[CAP1_D4:CAP_1]
-~g~La Mafia sta abbandonando il concessionario!
+[MAR4_D7:MAR4]
+~w~Prendiamolo!
-[CAP1_D5:CAP_1]
-~g~La Mafia sta abbandonando la compagnia di taxi!
+[MAR4_T1:MAR4]
+~w~Forza, osso duro!
-[CAP1_D9:CAP_1]
-~g~La Mafia sta abbandonando il Malibu!
+[MAR4_T2:MAR4]
+~w~Sei un perdente!
-[CAP1_D0:CAP_1]
-~g~La Mafia sta abbandonando lo studio cinematografico!
+[MAR4_T3:MAR4]
+~w~Non sai neanche guidare una moto!
-[CAP1B10:CAP_1]
-Hai beccato gli esattori. Altri stanno arrivando.
+[MAR4_T4:MAR4]
+~w~Se ti avvicini abbastanza, potrai baciarmi il culo!
-{=================================== MISSION TABLE CARBUY ===================================}
+[MAR4_F1:MAR4]
+~r~Hai fatto scappare Wayne!
-[CAR1_1:CARBUY]
-B.J. Smith. E tu devi essere Mr. Vercetti.
+[MAR4_P1:MAR4]
+~w~Hai preso il coglione!
-[CAR1_2:CARBUY]
-Ti andrebbe un giro?
+[MAR4_H1:MAR4]
+Wayne
-[CAR1_3:CARBUY]
-Perché no.
+[MAR4_C4:MAR4]
+~w~Non perdere ~r~Wayne. ~w~Inseguilo e fallo fuori!
-[CAR1_4:CARBUY]
-Bene, mi dispiace un po' vendere il concessionario.
+[BIK_01:MAR4]
+Cos'hai preso questa volta?
-[CAR1_5:CARBUY]
-È stato il mio primo investimento da quando mi sono messo in proprio.
+[BIK_02:MAR4]
+Niente.
-[CAR1_6:CARBUY]
-Ma adesso è giunta l'ora di andare avanti.
+[BIK_03:MAR4]
+Di cosa ti sei fatta, eh?
-[CAR1_7:CARBUY]
-Lasci la città?
+[BIK_04:MAR4]
+Eroina? Sedativi? Allucinogeni? Troppa coca?
-[CAR1_8:CARBUY]
-Non troppo in fretta, spero?
+[BIK_08:MAR4]
+Chi è stato a ridurti così?
-[CAR1_9:CARBUY]
-No. Sto per prepararmi al pensionamento e ai miei futuri investimenti.
+[BIK_09:MAR4]
+Nessuno.
-[CAR1_10:CARBUY]
-Il mercato non tirava molto,
+[BIK_10:MAR4]
+Chi è stato?
-[CAR1_11:CARBUY]
-e la mia squadra si è preoccupata personalmente di diventare
+[BIK_11:MAR4]
+Il tipo col quale mi sto vedendo, Wayne.
-[CAR1_12:CARBUY]
-più creativa nella produzione di contanti.
+[BIK_12:MAR4]
+Il tipo col quale ti stai vedendo? Sei la donna del capo!
-[CAR1_13:CARBUY]
-Logicamente, potrei smantellare l'organizzazione prima di vendere.
+[BIK_13:MAR4]
+Andiamo Toni, non essere bigotto... malgrado tutto mi fa andare su di giri, hai presente?
-[CAR1_14:CARBUY]
-Diamine, potrei radere al suolo tutto quanto se volessi.
+[BIK_14:MAR4]
+Una ragazza ne ha bisogno.
-[CAR1_15:CARBUY]
-Quest'area è in pieno sviluppo.
+[BIK_15:MAR4]
+In più ti rende una belva a letto.
-[CAR1_16:CARBUY]
-Oh, non mi preoccuperei di ciò.
+[BIK_16:MAR4]
+Zitta. Perché quella testa di cazzo
-[CAR1_17:CARBUY]
-Il posto mi sembra perfetto.
+[BIK_17:MAR4]
+ti ha conciato così?
-[CAR1_18:CARBUY]
-Sì, lo è, allora siamo d'accordo?
+[BIK_18:MAR4]
+Gli ho detto che ero innamorata di un altro.
-{=================================== MISSION TABLE CARPAR1 ===================================}
+[BIK_19:MAR4]
+Gli ho detto di noi, Toni.
-[MM_1_A:CARPAR1]
-~g~Attraversa ~y~5 punti di controllo ~r~SENZA~g~ abbattere i ~r~CONI~g~! ~g~Puoi attraversarli in ~y~QUALSIASI ORDINE~g~.
+[BIK_22:MAR4]
+Dove si trova questo Wayne?
-[CONE_1:CARPAR1]
-~r~Hai abbattuto un cono!
+[BIK_23:MAR4]
+Bazzica in un bar di Chinatown.
-[MM_1_C:CARPAR1]
-~y~ATTRAVERSA~g~ un punto di controllo per attivare il TIMER. ~g~Ogni punto di controllo ti fornirà ~y~~1~ SECONDI~g~ extra.
+[BIK_24:MAR4]
+Ti amo, Toni Cipriani.
-{=================================== MISSION TABLE COPCAR ===================================}
+[BIK_06:MAR4]
+- Troppo storta o troppo poco carica? ~n~ - Stai zitto, Toni!
-[KILLS:COPCAR]
-UCCISIONI:
+[BIK_05:MAR4]
+Carenza di Diceypam?
-[C_BREIF:COPCAR]
-~g~Sospettato visto in prossimità dell'area ~a~.
+[BIK_20:MAR4]
+- E poi mi ha colpita! ~n~ - Non c'è nessun noi, cazzo! Mi farai uccidere.
-[C_PASS:COPCAR]
-MINACCIA ELIMINATA: ~1~$
+{=================================== MISSION TABLE MAR5 ===================================}
-[COPCART:COPCAR]
-~g~Hai ~1~ secondi per tornare a un veicolo della polizia prima che la missione abbia termine.
+[MAR5_EA:MAR5]
+~w~Perché mi hai portato qui?
-[C_CANC:COPCAR]
-~r~Missione Vigilante annullata!
+[MAR5_EB:MAR5]
+~w~Non è qui la mia roba... questa è la zona dove bazzicava Wayne.
-[C_TIME:COPCAR]
-~r~È scaduto il tuo tempo come tutore della legge!
+[MAR5_EC:MAR5]
+~w~...Ora ricordo! Ho lasciato delle 'bombe' in Hepburn Heights!
-[C_COMP1:COPCAR]
-Missione Vigilante livello 12 completata: valore massimo dell'armatura aumentato a 150.
+[MAR5_ED:MAR5]
+~w~Ehi, è quella puttana di Maria! E quello è lo stronzo che ha ucciso Wayne!
-[CLEVEL:COPCAR]
-Missione Vigilante livello ~1~
+[MAR5_AA:MAR5]
+~w~Ho nascosto la 'bomba' dietro al cestino!
-{=================================== MISSION TABLE COUNT1 ===================================}
+[MAR5_AB:MAR5]
+~w~Merda! Hanno portato via il cestino!
-[CM1_A:COUNT1]
-Mr. Vercetti? Ehi, hai comprato la vecchia tipografia?
+[MAR5_AC:MAR5]
+~w~Aspetta! Ora ricordo! Ne ho lasciata una dose nel mio appartamento!
-[CM1_B:COUNT1]
-Sì, il mio vecchio un tempo lavorava nel campo.
+[MAR5_AD:MAR5]
+~w~Sei sicura?
-[CM1_C:COUNT1]
-Avrei voluto seguire le sue orme, ma... ho deciso di vivere diversamente.
+[MAR5_AE:MAR5]
+~w~Certo che sì!
-[CM1_D:COUNT1]
-Stai progettando di vendere il vecchio macchinario smontandolo in pezzi?
+[MAR5_BA:MAR5]
+~w~Volevo dire l'appartamento di Salvatore! Sì, quello di Salvatore!
-[CM1_E:COUNT1]
-Ho pensato che potremmo stampare ancora qualcosa... un giornale, una rivista...
+[MAR5_BB:MAR5]
+~w~Accidenti, Maria!
-[CM1_F:COUNT1]
-Che merda, figliolo, roba di bassa qualità. Ho sempre sognato stampare soldi. Non è poi così difficile.
+[MAR5_FA:MAR5]
+~w~Che autista sei? Ci hai messo una vita! Potevo morire di overdose!
-[CM1_G:COUNT1]
-Sai, l'ho fatto su scala ridotta per anni.
+[MAR5_FB:MAR5]
+~w~Sono a pezzi! Mi serve un nuovo guardaroba, qualche piccolo ritocco qua è là!
-[CM1_H:COUNT1]
-Davvero?
+[MAR5_FC:MAR5]
+~w~Tesoro... hai dei soldi da parte?
-[CM1_I:COUNT1]
-Certo. Ma prima abbiamo bisogno di matrici di buona qualità.
+[MAR5_FD:MAR5]
+~w~Er... non proprio...
-[CM1_J:COUNT1]
-Ma certo! C'è già un'organizzazione di falsificatori in azione in Florida.
+[MAR5_FE:MAR5]
+~w~Allora perché ci hai provato con me? Sono la donna di Salvatore!
-[CM1_K:COUNT1]
-Un'organizzazione?
+[MAR5_FF:MAR5]
+~w~Lui è ricco sfondato! Non avvicinarti più a me!
-[CM1_L:COUNT1]
-Sì. Beh, ho sentito solo delle voci.
+[MAR5_CA:MAR5]
+~w~(groan)
-[CM1_M:COUNT1]
-Conosco un tipo che si intende di voci...
+[MAR5_CB:MAR5]
+~w~Oh merda, mi sa che sto per vomitare...
-[CM1_N:COUNT1]
-Un tempo passavo le serate con lui, mentre pulivo i rulli...
+[MAR5_CC:MAR5]
+~w~Sono davvero a pezzi, Toni!
-[CM1_2A:COUNT1]
-Accidenti che culo incredibile!
+[MAR5_CD:MAR5]
+~w~Non mi sento per niente bene.
-[CM1_2B:COUNT1]
-Va bene, bellezza, sei tu che ci perdi!
+[MAR5_CE:MAR5]
+~w~Stai guidando troppo veloce! E troppo lento!
-[CM1_2C:COUNT1]
-Ehi, ciao amico, come butta?
+[MAR5_NC:MAR5]
+~b~Maria~w~ può a mala pena camminare. Trova un mezzo!
-[CM1_2D:COUNT1]
-Che cosa sai della falsificazione?
+[MAR5_ND:MAR5]
+~w~Maria può a mala pena camminare. Trova un mezzo!
-[CM1_2E:COUNT1]
-Oh, sto bene Paul, e a te?
+[MAR5_DA:MAR5]
+~w~Ti facciamo a pezzi, stronzo!
-[CM1_2F:COUNT1]
-Vieni qua.
+[MAR5_DB:MAR5]
+~w~Tu e la puttana morirete stanotte!
-[CM1_2G:COUNT1]
-Va bene! Va bene! Va bene! Sei ovviamente un tipo impegnato.
+[MAR5_DC:MAR5]
+~w~Hai fatto un grande errore a metterti contro di noi!
-[CM1_2H:COUNT1]
-Tutto ciò che so sul campo è che la Triade fornisce le matrici.
+[MAR5_LM:MAR5]
+~w~Hai lasciato indietro ~b~Maria~w~. Torna a prenderla.
-[CM1_2I:COUNT1]
-Hanno una società di spedizioni nel porto,
+[MAR5_O1:MAR5]
+~w~Porta Maria al ristorante a ~y~Callahan Point.
-[CM1_2J:COUNT1]
-il capo di certo saprà quando passeranno nuovamente delle matrici!
+[MAR5_O2:MAR5]
+~w~Porta Maria a ~y~Hepburn Heights.
-[CM1_2K:COUNT1]
-Grazie Paul.
+[MAR5_O3:MAR5]
+~w~Porta Maria al ~y~suo appartamento.
-[CM1_2L:COUNT1]
-Qual è il tuo problema, sei un maniaco!
+[MAR5_O4:MAR5]
+~w~Porta Maria alla ~y~villa di Salvatore.
-[CM1_2M:COUNT1]
-Dammi un altro drink, in fretta!
+[MAR5_O5:MAR5]
+~w~Torna a prendere ~b~Maria.
-[CM1_3:COUNT1]
-~g~Ti hanno visto!
+[MAR5_MD:MAR5]
+~r~Maria è morta.
-[CM1_5:COUNT1]
-~g~Incontrati con Kent Paul al Malibu Club!
+[MAR5_O6:MAR5]
+~w~Carica ~b~Maria~w~.
-[CNT1_1:COUNT1]
-Chi sei? Oooof! Aaiieee! Non il viso! Non il viso!
+[OVER_01:MAR5]
+Oh, ehi bello... pensavo non ce l'avresti fatta.
-[CM1_1:COUNT1]
-~g~Vai alla compagnia marittima Chartered Libertine nel porto.
+[OVER_02:MAR5]
+Ma che diavolo hai?
-[CM1_2:COUNT1]
-~g~L'ufficiale delle spedizioni è in possesso delle informazioni che ti servono.
+[OVER_03:MAR5]
+Oops! Niente dolcezza, va tutto bene.
-[CNT1_2:COUNT1]
-OK, parlerò, parlerò!
+[OVER_04:MAR5]
+Alzati, stupida puttana. Di cosa ti sei fatta?
-[CM1_6:COUNT1]
-~g~Ritorna con le informazioni alla tipografia!
+[OVER_05:MAR5]
+Fatta? Nulla...
-{=================================== MISSION TABLE COUNT2 ===================================}
+[OVER_06:MAR5]
+Sai, un paio di queste, un paio di quelle, un paio di verdi, un paio di rosse...
-[CNT2_B1:COUNT2]
-Bene, il corriere porterà le matrici al porto oggi stesso.
+[OVER_07:MAR5]
+Oh e queste pasticcone che mi faccio spedire dall'Olanda.
-[CNT2_B2:COUNT2]
-Ho intenzione di intercettare il corriere, recuperare le matrici, far perdere le tracce e tornare qua.
+[OVER_08:MAR5]
+Intense come l'inferno! Sto da Dio.
-[CNT2_B3:COUNT2]
-Bene. A seconda di quanto bene vadano le cose,
+[OVER_09:MAR5]
+No... non è vero.
-[CNT2_B4:COUNT2]
-potremmo avere cinque minuti per stampare soldi prima che l'associazione dei falsificatori ci trovi, o potremmo avere tutto l'anno.
+[OVER_10:MAR5]
+Ho bisogno di una bomba e starò bene!
-[CNT2_B5:COUNT2]
-In ogni caso, voglio veder bigliettoni verdi uscire cinque minuti dopo che sarò tornato. Tutto chiaro?
+[OVER_11:MAR5]
+Sono qui da qualche parte.
-[CNT2_B6:COUNT2]
-Non preoccuparti, Tommy. Saremo pronti.
+[OVER_12:MAR5]
+Cos'è una bomba?
-[CNT2_B7:COUNT2]
-Io e i ragazzi saremo in giro per il quartiere se mai dovessi avere bisogno di una mano con gli inseguitori.
+[OVER_13:MAR5]
+Una bomba? Non sai cos'è una bomba?
-[CNT2_B8:COUNT2]
-Ottimo: siete tutti pronti? Perfetto. Ci vediamo più tardi...
+[OVER_14:MAR5]
+Oh Toni, sei così all'antica!
-[CNT2_01:COUNT2]
-~g~Il ~r~corriere~g~ con le matrici arriverà fra pochi attimi al ~y~porto~g~ in elicottero.
+[OVER_17:MAR5]
+Ho bisogno di una bomba, Toni! Morirò!
-[CNT2_02:COUNT2]
-~r~Il corriere è scappato con l'elicottero.
+[OVER_18:MAR5]
+Mi sono già sentita così male, sono in overdose.
-[CNT2_03:COUNT2]
-~r~Il corriere è arrivato a destinazione sano e salvo. Sei in ritardo!
+[OVER_19:MAR5]
+Portami una bomba, Toni!
-[CNT2_04:COUNT2]
-~r~Hai distrutto le matrici nell'esplosione!
+[OVER_20:MAR5]
+Le ho lasciate in un ristorante a Callahan Point.
-[CNT2_05:COUNT2]
-~g~Hai preso le matrici. Riportale alla tipografia.
+[OVER_21:MAR5]
+Allora andiamo, forza!
-[CNT2_06:COUNT2]
-~g~Il corriere è morto e ha lasciato cadere le matrici: raccoglile prima che lo faccia qualcun altro.
+[OVER_15:MAR5]
+- Toni, ti amo. ~n~ - Dici cose senza senso.
-[CNT2_07:COUNT2]
-~g~Una delle guardie ha raccolto le matrici: non lasciarlo scappare!
+{=================================== MISSION TABLE VIC1 ===================================}
-[CNT2_08:COUNT2]
-~g~Il ~r~corriere~g~ con le matrici è arrivato al porto.
+[VIC1I11:VIC1]
+~w~Ti ho trovato un posticino dove stare, Toni.
-[CNT2_4:COUNT2]
-Faccende private, non sei il ben venuto.
+[VIC1I12:VIC1]
+~w~Sembra fatto apposta per te.
-[CNT2_09:COUNT2]
-BENI TIPOGRAFIA ACQUISITI
+[VIC1I13:VIC1]
+~w~Andremo prima là.
-[CNT2_10:COUNT2]
-~g~La tipografia d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[VIC1I14:VIC1]
+~w~Sei molto generoso...
-[CNT2_11:COUNT2]
-~r~Le matrici adesso sono in fondo all'oceano!
+[VIC1_3:VIC1]
+~w~Porta Vincenzo al suo ~y~magazzino.
-{=================================== MISSION TABLE CUBAN1 ===================================}
+[VIC1_4:VIC1]
+~w~Torna in ~b~macchina.
-[CUB1_A:CUBAN1]
-Sì amico?
+[VIC1_5:VIC1]
+~w~Porta Vincenzo al ~y~rifugio.
-[CUB1_B:CUBAN1]
-Ehi, tranquillo papà, è venuto per me. Sei tu l'uomo?
+[VIC1_6:VIC1]
+~w~Cammina sul segnale giallo all'~y~ingresso.
-[CUB1_C:CUBAN1]
-Oh sì, sei tu l'uomo. Credo per lo meno, vero?
+[VIC1_7:VIC1]
+~w~Cammina sull'icona dei vestiti per cambiarti d'abito.
-[CUB1_D:CUBAN1]
-No, non credo.
+[VIC1_8:VIC1]
+~w~Torna fuori da Vincenzo.
-[CUB1_E:CUBAN1]
-Ah sì? Vieni qua, osso duro.
+[VIC1_9:VIC1]
+~w~Porta Vincenzo ad ~y~Atlantic Quays.
-[CUB1_F:CUBAN1]
-Pensi di potermi prendere in giro?
+[VIC1_9A:VIC1]
+~w~Adesso portami a casa.
-[CUB1_G:CUBAN1]
-Credi di poter fare lo stupido con me?
+[VIC1_10:VIC1]
+~w~Sali in ~b~macchina.
-[CUB1_H:CUBAN1]
-No, credo tu stia facendo abbastanza lo stupido per entrambi.
+[VIC1_D1:VIC1]
+~w~Cazzo Toni! Guidi come una puledra imbizzarrita!
-[CUB1_I:CUBAN1]
-Ehi figliolo, ha detto che sei stupido.
+[VIC1_D2:VIC1]
+~w~Attento a questa cazzo di macchina!
-[CUB1_J:CUBAN1]
-E io lo chiamo femminuccia, papà.
+[VIC1_D3:VIC1]
+~w~Toni, smettila di mancarmi di rispetto e guida come un vero uomo!
-[CUB1_K:CUBAN1]
-Guarda un po' come va in giro vestito.
+[VIC1_C1:VIC1]
+~w~Eccoci qui, Toni, 'casa dolce casa'. Non male, vero?
-[CUB1_L:CUBAN1]
-Che cos'è questa? L'ultima moda femminile per la notte?
+[VIC1_C2:VIC1]
+~w~E questo cesso schifoso dovrebbe essere casa mia?
-[CUB1_M:CUBAN1]
-Perché un osso duro come te si veste da donnina?
+[VIC1_C3:VIC1]
+~w~Oh! Ti si addice molto.
-[CUB1_N:CUBAN1]
-Hai le mutandine come le signorine, eh?
+[VIC1_C4:VIC1]
+~w~Stai mancando di rispetto al vecchio Vincenzo.
-[CUB1_O:CUBAN1]
-Cos'hai contro le donne? Preferisci gli uomini, amico?
+[VIC1_C5:VIC1]
+~w~Ora, osso duro, porta le tue chiappe di sopra e mettiti dei vestiti decenti.
-[CUB1_P:CUBAN1]
-Mi piacciono le donne! Tutte le donne! Adoro mia madre, chico.
+[VIC1_C6:VIC1]
+~w~Non ho tempo da perdere, perciò muoviti.
-[CUB1_Q:CUBAN1]
-Va bene, va bene, ti credo sulla parola.
+[VIC1_C7:VIC1]
+~w~Ehi Toni, gli appartamenti costano cari.
-[CUB1_R:CUBAN1]
-Sai guidare, amigo?
+[VIC1_C8:VIC1]
+~w~Ricordati sempre chi paga le bollette da queste parti.
-[CUB1_S:CUBAN1]
-Certo... come una donna.
+[VIC1_C9:VIC1]
+~w~IO! Babbo Vincenzo!
-[CUB1_T:CUBAN1]
-Molto divertente. Mi piaci, ragazzo. Forse ci puoi aiutare.
+[VIC1C10:VIC1]
+~w~Quindi, da adesso in poi lavori per me.
-[CUB1_U:CUBAN1]
-Potresti provare di essere un uomo. Huh?
+[VIC1C11:VIC1]
+~w~Perciò sarà meglio che torni qui il prima possibile.
-[CUB1_V:CUBAN1]
-Porta fuori la barca.
+[VIC1_F:VIC1]
+~r~Vincenzo è morto.
-[CUB1_W:CUBAN1]
-Mostra di avere due grossi cojones,
+[HOMS_01:VIC1]
+Ehi, eccoci qui...
-[CUB1_X:CUBAN1]
-e non piccoli minuscoli chiquita.
+[HOMS_02:VIC1]
+Ascolta Toni, so che ci hai fatto un favore,
-[CUB1_02:CUBAN1]
-OK amico, trattala come una vera signora.
+[HOMS_03:VIC1]
+e so anche che sei fuori da molto tempo,
-[CUB1_03:CUBAN1]
-Non male, sei un vero uomo.
+[HOMS_04:VIC1]
+perciò voglio che te la prenda con calma, OK?
-[CUB1_04:CUBAN1]
-Accidenti, hai davvero due grossi cojones, amigo.
+[HOMS_05:VIC1]
+Vincenzo si prenderà cura di te.
-[CUB1_05:CUBAN1]
-Amigo, sei un vero uomo.
+[HOMS_06:VIC1]
+Se hai bisogno di soldi, chiedili a lui.
-[CUB1_06:CUBAN1]
-E tu ti reputi un uomo?
+[HOMS_07:VIC1]
+Se ti serve un lavoro, Lucky si prenderà cura di te.
-[CUB1_07:CUBAN1]
-Sei un piccolo gattino impaurito, bamboccio: vai a piangere dalla mamma!
+[HOMS_08:VIC1]
+Cos'altro può chiedere un membro della famiglia?
-[CUB1_08:CUBAN1]
-Sei un grande spreco di spazio. Cammini come un uomo, parli come un uomo, ma guidi come un idiota.
+[HOMS_09:VIC1]
+Persino mio figlio non viene trattato così bene.
-[CUB1_09:CUBAN1]
-Amico, sei tu l'uomo. Mi piaci, amico. Mi piaci molto.
+[HOMS_10:VIC1]
+Ma signor Leone, ne è passata di acqua,
-[CUB1_10:CUBAN1]
-A qualsiasi ora, amico, perché tu hai i cojones e tutti i miei amici hanno grandi cajones.
+[HOMS_11:VIC1]
+voglio dire, ho fatto molto per questa famiglia.
-[CUB1_11:CUBAN1]
-~r~Hai ucciso Rico!
+[HOMS_12:VIC1]
+E adesso vi aspettate che prenda gli ordini da questo... questo... questo...
-[CUB1_12:CUBAN1]
-Passa per il primo punto di controllo per cominciare il test.
+[HOMS_13:VIC1]
+Beh, non mi sembra... giusto.
-[CUB1_14:CUBAN1]
-Torna alla barca!
+[HOMS_14:VIC1]
+Toni, so cosa hai fatto e nessuno ti è più riconoscente di me, davvero,
-[CUB1_15:CUBAN1]
-~r~Sei troppo lento, amico.
+[HOMS_15:VIC1]
+ma l'idea che tu venga qui
-[CUB1_01:CUBAN1]
-Ehi, sono Rico. Sei tu l'uomo con i grandi cojones?
+[HOMS_16:VIC1]
+e ti metta a discutere i miei ordini è, francamente,
-[CUB1_13:CUBAN1]
-~g~Hai tre minuti per completare il percorso.
+[HOMS_17:VIC1]
+fuori luogo. 'O capisti?
-{=================================== MISSION TABLE CUBAN2 ===================================}
+[HOMS_18:VIC1]
+Capisco, capo.
-[CUB2_A:CUBAN2]
-Un cafecito, por favor, Alberto...
+[HOMS_19:VIC1]
+Perciò, quando hai bisogno di qualcosa, senti Vincenzo ad Atlantic Quay.
-[CUB2_N:CUBAN2]
-Nessun problema, Tommy.
+[HOMS_20:VIC1]
+Si prenderà cura di te, vero Lucky?
-[CUB2_B:CUBAN2]
-Papà! Un gran problema!
+[HOMS_21:VIC1]
+Naturalmente capo, tutto quello che vuole.
-[CUB2_O:CUBAN2]
-Umberto, figlio mio, cosa succede?
+[HOMS_22:VIC1]
+Bene, possiamo andare adesso.
-[CUB2_C:CUBAN2]
-Gli Haitiani! Odio quei maledetti Haitiani!
+{=================================== MISSION TABLE VIC2 ===================================}
-[CUB2_D:CUBAN2]
-Hanno osato crearmi problemi per l'ultima vota!
+[VIC2M2:VIC2]
+Quel pigro bastardo non consegna un soldo da troppo tempo.
-[CUB2_E:CUBAN2]
-Questi Haitiani. Facciamoli fuori!
+[VIC2M3:VIC2]
+Forse ha bisogno di un po' di incoraggiamento per mettersi al lavoro.
-[CUB2_F:CUBAN2]
-Avremo bisogno di supporto.
+[VIC2M4:VIC2]
+Si comporta da stronzo... mi ricorda un po' te.
-[CUB2_G:CUBAN2]
-Ho già perso degli hermanos là fuori.
+[VIC2M5:VIC2]
+~w~Cosa stai insinuando?
-[CUB2_H:CUBAN2]
-Amigo, tu guidi bene!
+[VIC2M6:VIC2]
+Non sto INSINUANDO nulla!
-[CUB2_I:CUBAN2]
-Per una donna, giusto?
+[VIC2M7:VIC2]
+Ti sto dicendo di andare là e assicurarti che lo stronzo cominci a incassare qualche fottuto dollaro!
-[CUB2_J:CUBAN2]
-Non è il momento degli scherzi!
+[VIC2_B:VIC2]
+~W~Recupera un veicolo.
-[CUB2_K:CUBAN2]
-Forza, guida nuovamente per me!
+[VIC2OB1:VIC2]
+~w~Porta lo spacciatore a ~y~lavoro.
-[CUB2_L:CUBAN2]
-Porta i miei ragazzi in posizione e faremo fuori quegli Haitiani!
+[VIC2_C:VIC2]
+~w~Avrai bisogno di un veicolo per portarlo nella sua zona di competenza!
-[CUB2_M:CUBAN2]
-Si sono messi contro me, hanno scherzato con il pezzo grosso della città!
+[VIC2_D:VIC2]
+~w~Vai a prendere lo spacciatore di Vincenzo a ~y~St. Mark's.
-[CUB2_01:CUBAN2]
-Troppo piccola, amico, devi prendere una macchina più grande.
+[VIC2_E:VIC2]
+~w~Vincenzo mi ha detto che stai facendo lo stronzo e non stai lavorando...
-[CUB2_02:CUBAN2]
-Abbiamo bisogno di rinforzi dal café!
+[VIC2_E2:VIC2]
+~w~Ehi amico! Non sono uno stronzo!
-[CUB2_03:CUBAN2]
-~g~Prendi una macchina e recupera i Cubani di fronte al café Robina.
+[VIC2_EX:VIC2]
+~w~Io... ehm... ho avuto la febbre!
-[CUB2_04:CUBAN2]
-~g~Scarica i Cubani sul luogo dello scontro.
+[VIC2_E3:VIC2]
+~w~Tornerò al lavoro domani... o, forse, dopodomani.
-[CUB2_05:CUBAN2]
-Fai fuori quel codardo di un cecchino!
+[VIC2_E4:VIC2]
+~w~Oh, io credo che ci andrai oggi... che ti piaccia o no!
-[CUB2_07:CUBAN2]
-Combattono come donnicciole! Mettetevi al riparo!
+[VIC2_F:VIC2]
+~w~Ehi! Non lasciarmi qui! Questo è un bruttissimo quartiere, amico!
-[CUB2_09:CUBAN2]
-Cecchino sul tetto!
+[VIC2_F2:VIC2]
+~w~Hai lasciato indietro lo ~b~spacciatore di Vincenzo,~w~ torna a prenderlo.
-[CUB2_11:CUBAN2]
-~r~Idiota, avevamo bisogno della macchina.
+[VIC2_G:VIC2]
+~w~Ascolta amico! L'ho già detto a Vinnie... Chinatown non è più una zona per i Leone!
-[CUB2_12:CUBAN2]
-Ehi amigo! Sono felice che ce l'hai fatta.
+[VIC2_G2:VIC2]
+~w~Stanno arrivando i Sindacco! Se torno là, sarò un uomo morto!
-[CUB2_13:CUBAN2]
-Covo puzzolente di Haitiani, li uccideremo tutti!
+[VIC2_G3:VIC2]
+~w~Certo... certo...
-[CUB2_14:CUBAN2]
-CAAARICAAAA!
+[VIC2_G4:VIC2]
+~w~Te l'ho detto amico, ci sono i Sindacco a spacciare.
-[CUB2_15:CUBAN2]
-Adesso, fratelli, CAAARICAAAA!
+[VIC2_G5:VIC2]
+~w~Non mi sento troppo bene... credo di avere la febbre o qualcosa del genere.
-[CUB2_16:CUBAN2]
-Tommy, abbiamo provato il nostro coraggio!
+[VIC2_H:VIC2]
+~w~Fermati vicino allo ~b~spacciatore.
-[CUB2_17:CUBAN2]
-Rubiamo quel van pieno di droga e scappiamo in fretta!
+[VIC2_I:VIC2]
+~w~Oh cazzo...
-[CUB2_18:CUBAN2]
-~g~Recupera una macchina per caricare i Cubani.
+[VIC2_J:VIC2]
+~r~Lo spacciatore di Vincenzo è stato massacrato!
-[CUB2_19:CUBAN2]
-Combatteremo come uomini!
+[VIC2_K:VIC2]
+~w~Porta lo spacciatore di Vincenzo a ~y~Chinatown.
-[CUB2_21:CUBAN2]
-Combattiamo come uomini con grandi cojones!
+[VIC2_1:VIC2]
+NESSUNO
-[CUB2_22:CUBAN2]
-~g~Elimina il resto degli Haitiani così i Cubani potranno avanzare.
+[VIC2M1:VIC2]
+C'è un nostro spacciatore che lavora nella zona nord di Chinatown.
-[CUB2_23:CUBAN2]
-~g~Little Haiti sarà piena di Haitiani desiderosi di pareggiare il conto con i Cubani. Guardati la schiena.
+{=================================== MISSION TABLE VIC3 ===================================}
-[CUB2_24:CUBAN2]
-~g~Torna al Café Robina con il van e parcheggialo sul retro.
+[VIC3_H1:VIC3]
+~w~Tieni premuto~h~ ~k~ ~PDLT~ ~w~per ~h~agganciare un bersaglio~w~ e premi~h~ ~k~ ~PDFW~ ~w~per attaccare!
-[CUB2_25:CUBAN2]
-UCCIDI TUTTI GLI HAITIANI!!!
+[VIC3_H2:VIC3]
+~w~Premi~h~ ~k~ ~PDFW~ ~w~per attaccare lo ~h~spacciatore.
-{=================================== MISSION TABLE CUBAN3 ===================================}
+[VIC3O2:VIC3]
+~w~Raggiungi ~y~Chinatown.
-[CUB3_A:CUBAN3]
-Alberto. Un caffè, senor.
+[VIC3O3:VIC3]
+~w~Elimina lo ~r~spacciatore.
-[CUB3_B:CUBAN3]
-Papà, non servire questo serpente nascosto nella paglia.
+[VIC3_1:VIC3]
+~w~Vincenzo ti ha lasciato un regalo che tornerà utile.
-[CUB3_C:CUBAN3]
-Sei un doppiogiochista, Tommy!
+[VIC3_BA:VIC3]
+~w~Stai lontano dal territorio di Leone, stronzo!
-[CUB3_D:CUBAN3]
-O fai il doppio gioco o sei un perdente, ragazzo!
+[VIC3_BB:VIC3]
+~w~Ne vuoi ancora, faccia da culo?
-[CUB3_E:CUBAN3]
-Gli Haitiani! Merda, stanno ridendo di me.
+[VIC3_BC:VIC3]
+~w~Lo spaccio in questa città è dei Leone! Di nessun altro! Sindacco del cazzo, avete capito?
-[CUB3_F:CUBAN3]
-Ehi. Calmati. Qual è il tuo problema?
+[VIC3_6:VIC3]
+~w~I Sindacco stanno spacciando in tutta Chinatown.
-[CUB3_G:CUBAN3]
-Ridono di me, Tommy! Di me!
+[VIC3_AA:VIC3]
+~w~Vinnie?
-[CUB3_H:CUBAN3]
-Umberto Robina! Fanno tutto ciò che vogliono!
+[VIC3_AB:VIC3]
+~w~Ma cazzo, Toni! Un minimo di decenza!
-[CUB3_I:CUBAN3]
-Nessuno fa ciò che vuole, Umberto, fanno ciò che tu permetti loro di fare.
+[VIC3_AD:VIC3]
+~w~Sono già tutto intasato, l'ultima cosa che voglio è averti tra le palle.
-[CUB3_J:CUBAN3]
-Cosa?
+[VIC3_AE:VIC3]
+~w~Comunque, già che ci sei, sappi che non ho ancora visto soldi
+
+[VIC3_AF:VIC3]
+~w~dal mio spacciatore. E sai perché?
+
+[VIC3_AG:VIC3]
+~w~Illuminami.
+
+[VIC3_AJ:VIC3]
+~w~I Sindacco hanno cominciato a spacciare, persino sul territorio dei Leone!
+
+[VIC3_AK:VIC3]
+~w~E tu resti a guardare, Toni?
+
+[VIC3_AL:VIC3]
+~w~Voglio che tu vada a Chinatown!
+
+[VIC3_AM:VIC3]
+~w~Va bene, 'Boss', vado subito.
+
+[VIC3_AN:VIC3]
+~w~Ma merda! Perché non c'è mai la fottuta carta igienica quando serve?
+
+[VIC3_AH:VIC3]
+~w~Perché è morto, idiota! Qualche stronzo l'ha fatto fuori.
+
+[VIC3O4:VIC3]
+~w~I Sindacco stanno spacciando in tutta Chinatown. Insegna loro una lezione che non scorderanno.
+
+{=================================== MISSION TABLE VIC4 ===================================}
+
+[VIC4_H2:VIC4]
+~w~Segui la ~h~bomboletta spray~w~ sul radar per trovare il ~h~Pay 'n' Spray.
+
+[VIC4_A2:VIC4]
+~w~Posizionati sul ~h~segno~w~ per vedere le armi disponibili.
+
+[VIC4_A3:VIC4]
+~w~Scegli armi differenti usando~h~ ~k~ ~AMMOV~.
+
+[VIC4_A4:VIC4]
+~w~Compra l'arma selezionata premendo~h~ ~k~ ~AMBUY~ ~w~. Assicurati di avere abbastanza soldi!
+
+[VIC4_A6:VIC4]
+~w~Esistono otto tipi di arma.
+
+[VIC4_A7:VIC4]
+~w~Puoi portare solamente un tipo di arma alla volta: un tipo di pistola, un tipo di fucile, eccetera.
+
+[VIC4_H1:VIC4]
+~w~Segui la ~h~pistola~w~ sul radar per raggiungere ~h~Ammu-Nation~w~.
+
+[VIC4_H3:VIC4]
+~w~Segui la ~h~pistola~w~ sul radar per raggiungere ~h~Ammu-Nation~w~.
+
+[VIC4_AB:VIC4]
+~w~Difficile dimenticarselo...
+
+[VIC4_AD:VIC4]
+~w~La cosa interessante è che vuole far parte dei Leone.
+
+[VIC4_AE:VIC4]
+~w~Che crepi! Ha fatto la sua scelta.
+
+[VIC4_AG:VIC4]
+~w~Pronto, cervellone? Merda, Toni... Sal dice sempre che non sei una cima,
+
+[VIC4_AH:VIC4]
+~w~ma non ti credevo così stupido.
+
+[VIC4_AJ:VIC4]
+~w~Sarà il nostro infiltrato speciale.
+
+[VIC4_AK:VIC4]
+~w~Devi fare una cosa sola.
+
+[VIC4_AL:VIC4]
+~w~È intimidito da un certo gorilla dei Sindacco.
+
+[VIC4_AM:VIC4]
+~w~Voglio che tu rimuova quest'ostacolo
+
+[VIC4_AN:VIC4]
+~w~e porti JD dalla nostra parte. 'O capisti?
+
+[VIC4_2:VIC4]
+~w~Raccogli il ~g~cellulare~w~ come prova del tuo lavoro.
+
+[VIC4_BA:VIC4]
+~w~Toni... oh mi hai fornito ottimo materiale per i miei filmini snuff!
+
+[VIC4_BB:VIC4]
+~w~JD? Hai visto tutto? MI STAVI RIPRENDENDO?!?
+
+[VIC4_BC:VIC4]
+~w~Ehm, stavo solo... solo per uso personale!
+
+[VIC4_BD:VIC4]
+~w~Non vedo l'ora di far parte della stessa squadra!
+
+[VIC4_BE:VIC4]
+~w~Non eccitarti troppo. Mi devi ancora dei soldi.
+
+[VIC4_BF:VIC4]
+~w~Prendi quella macchina dei Sindacco come deposito, OK?
+
+[VIC4_BG:VIC4]
+~w~Falla riverniciare, così nessuno la riconoscerà.
+
+[VIC4_BH:VIC4]
+~w~Io mi occuperò del corpo.
+
+[VIC4_CA:VIC4]
+~w~Ehi! Vattene da qui!
+
+[VIC4_CB:VIC4]
+~w~Non c'è niente da vedere per te!
+
+[VIC4_61:VIC4]
+~w~Sali in ~b~macchina.
+
+[VIC4_62:VIC4]
+~w~Guida fino al Pay 'n' Spray.
+
+[VIC4_DC:VIC4]
+~r~JD ti ha detto di riverniciare la macchina!
+
+[VIC4_PR:VIC4]
+--driiin driiin--
+
+[VIC4O1A:VIC4]
+~w~Entra ~y~dentro.
-[CUB3_K:CUBAN3]
-Vuoi che mi occupi di qualcuno?
+[VIC4_O2:VIC4]
+~w~Compra una pistola.
-[CUB3_L:CUBAN3]
-Posso pensarci io, ma ti costerà.
+[VIC4_O4:VIC4]
+~w~Uccidi il ~r~gorilla dei Sindacco.
-[CUB3_M:CUBAN3]
-Lo so che siamo come fratelli, ma stiamo parlando di affari.
+[VIC4_FA:VIC4]
+~r~Adesso di certo non ci venderà un'arma!
-[CUB3_N:CUBAN3]
-Tommy, sei un vero uomo. Un vero businessman, un gentleman.
+[VIC4_O3:VIC4]
+~w~Raggiungi il ~y~cantiere edile.
-[CUB3_O:CUBAN3]
-Questi Haitiani. Hanno un carico di merce in arrivo via mare, roba di prima qualità.
+[VIC4_AC:VIC4]
+~w~Attualmente gestisce un bar bordello dei Sindacco... cioè, un club per gentiluomini.
-[CUB3_P:CUBAN3]
-La prendiamo e li facciamo fuori.
+[VIC4_AA:VIC4]
+~w~Ehi, ti ricordi di JD O'Toole?
-[CUB3_Q:CUBAN3]
-Tu la prendi, io ti copro. Come mio fratello, come mio figlio.
+[VIC4_AI:VIC4]
+~w~Possiamo usare JD per ottenere informazioni sui piani dei Sindacco.
-[CUB3_R:CUBAN3]
-Preferisco i soldi che saltellare sulle tue gambe, amigo.
+[HELP42:VIC4]
+~w~Mentre stai mirando, premi rapidamente~h~ ~k~ ~FREE1~ ~w~per attivare la ~h~modalità mira libera~w~, poi usa~h~ ~k~ ~FREE2~ ~w~per correggere la mira.
-[CUB3_01:CUBAN3]
-Ehi Rico, bella barca. Sei pronto?
+[VIC4_A1:VIC4]
+~w~Fermati al negozio locale di ~y~Ammu-Nation~w~ per comprare una pistola.
-[CUB3_03:CUBAN3]
-~g~Raccogli tutte le valigette piene di soldi e droga.
+[VIC4_O1:VIC4]
+~w~Torna da ~y~Ammu-Nation~w~ e compra una pistola.
-[CUB3_04:CUBAN3]
-~g~Riporta la droga e i soldi a Umberto.
+[VIC4_1:VIC4]
+~w~Il ~r~pezzo grosso dei Sindacco~w~ è sul retro del cantiere edile. Uccidilo!
-[CUB3_05:CUBAN3]
-Sì Tommy. Vedi di sparare come si deve oggi,
+{=================================== MISSION TABLE VIC5 ===================================}
-[CUB3_06:CUBAN3]
-non voglio riempire la mia barca di buchi, OK?
+[VIC5_H:VIC5]
+Leone
-[CUB3_07:CUBAN3]
-~g~Incontrati con Rico, lui ti porterà fino alla locazione dell'incontro.
+[VIC5_I0:VIC5]
+~w~Oh, sei tu.
-[CUB3_02:CUBAN3]
-~g~UCCIDI TUTTI GLI HAITIANI SULLE BARCHE!!!
+[VIC5_I1:VIC5]
+~w~Sì, proprio così. Sono io. Che mi dici?
-[CUB3_08:CUBAN3]
-Uh oh... un gruppo di Cubani. Siamo sotto attacco!
+[VIC5_I2:VIC5]
+~w~Ti dico quello che so, osso duro.
-{=================================== MISSION TABLE CUBAN4 ===================================}
+[VIC5_I3:VIC5]
+~w~Alcuni dei nostri ragazzi hanno mandato a puttane un lavoro per decerebrati.
-[CUB4_A:CUBAN4]
-Ehi signorine, sapete che cosa voglio fare?
+[VIC5_I4:VIC5]
+~w~Stupidi coglioni, non sanno neanche fare una cazzo di rapina.
-[CUB4_B:CUBAN4]
-Voglio far fuori un Haitiano. E poi?
+[VIC5_I5:VIC5]
+~w~Ora i poliziotti li tengono sotto tiro a Chinatown.
-[CUB4_C:CUBAN4]
-Poi voglio fare l'amore come un vero uomo.
+[VIC5_I6:VIC5]
+~w~Coglioni! Perché sono circondato da fottuti idioti?
-[CUB4_D:CUBAN4]
-Capito chica? Proprio così.
+[VIC5_I7:VIC5]
+~w~Non saprei... affinità elettiva?
-[CUB4_E:CUBAN4]
-Fallito!
+[VIC5_I8:VIC5]
+~w~Oh, sei davvero un cabarettista!
-[CUB4_F:CUBAN4]
-Cafone.
+[VIC5_I9:VIC5]
+~w~Beh, divertiti a risolvere il problema.
-[CUB4_G:CUBAN4]
-Ehi bella, non ti toccherei neanche con un bastone da lontano!
+[VIC5I10:VIC5]
+~w~Tocca a te togliere le castagne dal fuoco al posto mio!
-[CUB4_H:CUBAN4]
-Umberto Robina, a lui piacciono le vere donne! Non delle capre in minigonna!
+[VIC5I11:VIC5]
+~w~Raggiungi quei coglioni e riportali qui il prima possibile!
-[CUB4_I:CUBAN4]
-Tommy! Tommy, ti voglio bene, davvero! Andiamo!
+[VIC5_F1:VIC5]
+~r~Uno dei membri della gang è morto.
-[CUB4_J:CUBAN4]
-Dove? Non posso prendere prima una tazza di caffè?
+[VIC5_G0:VIC5]
+~w~Trova una macchina per quattro persone.
-[CUB4_K:CUBAN4]
-Non c'è tempo per il caffè! Inoltre, io l'ho già preso.
+[VIC5_O1:VIC5]
+~w~Vai a salvare gli ~b~uomini di Vincenzo.
-[CUB4_L:CUBAN4]
-Dobbiamo far fuori gli Haitiani.
+[VIC5_O2:VIC5]
+~w~Porta la ~b~gang~w~ fuori di lì!
-[CUB4_M:CUBAN4]
-Tommy, come fai a uccidere un serpente?
+[VIC5_O3:VIC5]
+~w~Semina la polizia!
-[CUB4_N:CUBAN4]
-Lo mordi sul culo! Ah ah ah!
+[VIC5_O4:VIC5]
+~w~Porta la gang da ~y~Vincenzo.
-[CUB4_O:CUBAN4]
-Se lo dici te, Umberto.
+[VIC5_O5:VIC5]
+~w~Non disperdere la ~b~gang!
-[CUB4_P:CUBAN4]
-Tommy, recupera una piccola auto Haitiana.
+[VIC5_O6:VIC5]
+~w~Hai bisogno di una macchina con più posti!
-[CUB4_Q:CUBAN4]
-Quando ce l'hai, torna qui e carica il mio ragazzo,
+[VIC5_G1:VIC5]
+~w~Adesso cosa facciamo?
-[CUB4_R:CUBAN4]
-Pepe, e portalo fino agli Haitiani.
+[VIC5_G2:VIC5]
+~w~Siamo fottuti!
-[CUB4_S:CUBAN4]
-Poi aggiri l'impianto di lavorazione degli Haitiani e utilizzi il solvente come esplosivo.
+[VIC5_G3:VIC5]
+~w~Non voglio finire dentro per quello stronzo di Vincenzo!
-[CUB4_T:CUBAN4]
-Boom! Bye bye!
+[VIC5_G4:VIC5]
+~w~Andiamocene via di qua!
-[CUB4_U:CUBAN4]
-Umberto, e tu?
+[VIC5_G5:VIC5]
+~w~Aspettatemi!
-[CUB4_V:CUBAN4]
-Oh, io resto nelle retrovie e controllo il café con papà.
+[VIC5_G6:VIC5]
+~w~Parti a razzo, Toni!
-[CUB4_W:CUBAN4]
-Non si sente molto bene, sai?
+[VIC5_E1:VIC5]
+~w~Allora, avete preso i soldi?
-[CUB4_02:CUBAN4]
-~g~Le bombe verranno piazzate con un timer di 45 secondi.
+[VIC5_E2:VIC5]
+~w~Li abbiamo con noi, boss...
-[CUB4_04:CUBAN4]
-~r~Hai allarmato la base, adesso non riusciremo mai a entrare!
+[VIC5_E3:VIC5]
+~w~Ehi, ascolta, non ci potevamo fare niente...
-[CUB4_07:CUBAN4]
-Il solvente è sul retro, amigo.
+[VIC5_E4:VIC5]
+~w~...non potevate farci niente.
-[CUB4_08:CUBAN4]
-Hola, Amigos.
+[VIC5_E5:VIC5]
+~w~Le cose sono andate a puttane... poteva andare peggio.
-[CUB4_09:CUBAN4]
-Bueno. Haitiane Putas. Muerte.
+[VIC5_E6:VIC5]
+~w~Cosa dici... la situazione è migliorata o peggiorata?
-[CUB4_10:CUBAN4]
-Vamos.
+[VIC5_E7:VIC5]
+~w~Se fate nuovamente una cazzata simile, le cose peggioreranno anche per voi!
-[CUB4_11:CUBAN4]
-Vamos davvero.
+[VIC5_E8:VIC5]
+~w~Ora ripulite questa merda e sparite dalla mia vista.
-[CUB4_12:CUBAN4]
-Ehi, abbiamo bisogno di un'auto degli Haitiani!
+[VIC5_E9:VIC5]
+~w~Devo fare una chiamata.
-[CUB4_13:CUBAN4]
-Oye, andiamo a trovare i nostri muchachos!
+[VIC5E10:VIC5]
+~w~Lo giuro su Dio, Toni: da quando sei tornato, mi perseguita la sfiga.
-[CUB4_14:CUBAN4]
-Seguimi, compadres.
+[VIC5E11:VIC5]
+~w~Sei un fottuto uccello del malaugurio.
-[CUB4_15:CUBAN4]
-OK, vai dentro...
+{=================================== MISSION TABLE VIC6 ===================================}
-[CUB4_16:CUBAN4]
-Io posizionerò le bombe, coprimi!
+[VIC6_BA:VIC6]
+~w~Fermo!
-[CUB4_17:CUBAN4]
-CORRI!
+[VIC6_BB:VIC6]
+~w~Non muoverti, stronzo!
-[CUB4_18:CUBAN4]
-Amico, questa sì che è una bella parte della città...
+[VIC6_P0:VIC6]
+~w~Recupera la ~b~macchina di Vincenzo.
-[CUB4_19:CUBAN4]
-Questo luogo è una fogna.
+[VIC6_P1:VIC6]
+~w~È una trappola della polizia! Scappa con la macchina!
-[CUB4_20:CUBAN4]
-Avevo una bella donna... viveva da queste parti.
+[VIC6_P2:VIC6]
+~w~Semina la polizia!
-[CUB4_21:CUBAN4]
-Lo sai, fanno delle buone pizze da queste parti.
+[VIC6_P3:VIC6]
+~w~Hai seminato i poliziotti! Ora porta la macchina al ~y~garage di Vincenzo.
-[CUB4_22:CUBAN4]
-Whoa, amico. Guidi come un cavallo impazzito!
+[VIC6_P4:VIC6]
+~w~Dai una lezione a Vincenzo: distruggi la sua ~b~macchina!
-[CUB4_23:CUBAN4]
-Ti sei perso, amico?
+[VIC6_P5:VIC6]
+~w~Torna nella ~b~macchina di Vincenzo!
-[CUB4_24:CUBAN4]
-Hai lasciato indietro Pepe, vai a riprenderlo!
+[VIC6_P6:VIC6]
+~w~Porta la macchina al ~y~garage di Vincenzo.
-[CUB4_03:CUBAN4]
-~g~Resta in macchina fino a quando questa non sarà parcheggiata all'interno.
+[VIC6_PA:VIC6]
+~r~Hai distrutto la macchina!
-[CUB4_26:CUBAN4]
-~g~Prendi Pepe, dirigiti a nord verso Little Haiti e ruba una macchina Voodoo.
+[VIC6_D1:VIC6]
+~w~Sali in ~b~macchina.
-[CUB4_27:CUBAN4]
-~g~Raggiungi Rico e gli altri Cubani.
+[VIC6_D3:VIC6]
+~w~Guida fino al ~y~demolitore.
-[CUB4_28:CUBAN4]
-~g~Unisciti agli altri Cubani presso la fabbrica di droga Haitiana.
+[VIC6_D4:VIC6]
+~w~Esci e attendi che il demolitore finisca il suo lavoro.
-[CUB4_29:CUBAN4]
-~g~Cammina su ogni segnalino per posizionare una bomba.
+[VIC6_D5:VIC6]
+~r~Dovevi distruggere la macchina!
-[CUB4_30:CUBAN4]
-~g~Dopo aver posizionato tutte e tre le bombe, scappa dalla fabbrica prima che esploda.
+[VIC6_AA:VIC6]
+~w~Ehi, Toni: come va la macchina?
-[CUB4_31:CUBAN4]
-~g~Scappa dalla fabbrica!!!
+[VIC6_AB:VIC6]
+~w~Vinnie, figlio di puttana! Hai tentato di incastrarmi!
-[CUB4_32:CUBAN4]
-~g~Parcheggia l'auto nel punto segnalato ed esci.
+[VIC6_AC:VIC6]
+~w~Incastrarti? INCASTRARTI?
-[CUB4_06:CUBAN4]
-~r~Non ti sei allontanato a sufficienza dalla base e abbiamo dovuto interrompere l'esplosione!
+[VIC6_AD:VIC6]
+~w~Quando sei tornato, non avevi niente! NIENTE!
-{=================================== MISSION TABLE FINALE ===================================}
+[VIC6_AE:VIC6]
+~w~E io avrei tentato di incastrarti, bastardo ingrato!
-[FIN_1A:FINALE]
-Vieni qui brutto doppiogiochista di merda!
+[VIC6_AF:VIC6]
+~w~Con un appartamento e un lavoro!
-[FIN_1B:FINALE]
-Ti faccio a pezzi, traditore del cazzo!
+[VIC6_AG:VIC6]
+~w~E per la mia generosità mi aspetto che tu prenda qualche rischio per me.
-[FIN_1C:FINALE]
-Questo è l'ultimo ballo per Lance Vance!
+[VIC6_AH:VIC6]
+~w~Non faccio beneficenza, capito amico? E non sono il tuo pappone.
-[FIN_2B:FINALE]
-Oh, ma davvero!
+[VIC6_AI:VIC6]
+~w~La polizia teneva d'occhio la macchina? Che si fottano!
-[FIN_2C:FINALE]
-Te l'avevo detto che ne avevo avuto abbastanza a scuola!
+[VIC6_AJ:VIC6]
+~w~Quando ti dico di fare una cosa, la devi fare. 'O capisti?
-[FIN_3:FINALE]
-Adesso chi ti coprirà il culo, eh Tommy?
+[VIC6_AK:VIC6]
+~w~Oh certo, capisco benissimo, Vinnie.
-[FIN_4:FINALE]
-Sei storia, Tommy, storia!
+[VIC6_AL:VIC6]
+~w~Capisco che finché lavorerò per te, verrò trattato come una puttana.
-[FIN_5:FINALE]
-Hai scelto il lato sbagliato, Lance...
+[VIC6_AM:VIC6]
+~w~Facevo i soldi quando tu guardavi ancora sotto le gonne delle ragazzine.
-[FIN_11A:FINALE]
-Sonny, mi hai rubato quindici anni di vita...
+[VIC6_AN:VIC6]
+~w~Tieniti il tuo lavoro da puttana, 'boss'. Me ne vado.
-[FIN_11B:FINALE]
-E adesso te la farò pagare!
+[VIC6_AO:VIC6]
+~w~Toni, stai facendo un grande...
-[FIN_12A:FINALE]
-Non hai ancora capito, vero?
+[VIC6_D2:VIC6]
+~w~Fermati sul ~y~segno.
-[FIN_12B:FINALE]
-Io ti POSSIEDO, Tommy.
+[HOTW_01:VIC6]
+Certo mamma, ti chiamerò più tardi.
-[FIN_12C:FINALE]
-Quei quindici anni erano miei!
+[HOTW_28:VIC6]
+Vincenzo!
-[FIN_13:FINALE]
-Prendetelo ragazzi, non ha mai capito niente.
+[HOTW_02:VIC6]
+Certo che mi sto comportando bene, naturalmente.
-[FIN1_01:FINALE]
+[HOTW_03:VIC6]
+Ti voglio bene.
+
+[HOTW_04:VIC6]
+Ehi Cheryl, dolcezza, dacci un taglio adesso.
+
+[HOTW_05:VIC6]
+Ecco, adesso vattene.
+
+[HOTW_06:VIC6]
+Un piccolo omaggio della casa.
+
+[HOTW_11:VIC6]
+Sei disgustoso, non hai un briciolo di rispetto.
+
+[HOTW_12:VIC6]
+Rispetto? Io lo chiamo 'multi-tasking', Antonio.
+
+[HOTW_15:VIC6]
+Perché se il problema è questo, potrei chiedere a Ray di aiutarti.
+
+[HOTW_16:VIC6]
+Ma vaffanculo.
+
+[HOTW_17:VIC6]
+Ti sto solo stuzzicando, rilassati.
+
+[HOTW_18:VIC6]
+Ascolta bene osso duro, ho bisogno che tu mi faccia un favore.
+
+[HOTW_19:VIC6]
+Ho delle amiche che vanno matte per la bamba; ne ho una macchina piena a Trenton.
+
+[HOTW_20:VIC6]
+Vai a prenderla... poi chiamami.
+
+[HOTW_21:VIC6]
+Chi sono? Il tuo cazzo di autista? Fottiti.
+
+[HOTW_22:VIC6]
+Ehi, ehi, ehi, ehi...
+
+[HOTW_23:VIC6]
+Lo farei da me, ma i federali mi tengono d'occhio.
+
+[HOTW_24:VIC6]
+Sai che ti coprirò le spalle. Fidati.
+
+[HOTW_25:VIC6]
+- Inoltre, ricordati che qui abbiamo una gerarchia. 'O capisti? Ora fai il bravo ragazzo!
+
+[HOTW_07:VIC6]
+- Ehi angelo, chi è che ti vuole bene? ~n~ - Tu, Vinnie.
+
+[HOTW_09:VIC6]
+- Era tua madre al telefono? ~n~ - Certo.
+
+[HOTW_13:VIC6]
+- Ma come, non ti piacerebbe farti risucchiare da una puttana in calore? ~n~ - Cosa?
+
+{=================================== MISSION TABLE VIC7 ===================================}
+
+[VIC7_VE:VIC7]
+~r~v1,01
+
+[VIC7_1:VIC7]
+~w~Vinnie, sono arrivato! Dove diavolo sei? Ma che cazzo...
+
+[VIC7_2:VIC7]
+~w~Toni? Come stai? ...Sapevo che avresti chiamato.
+
+[VIC7_3:VIC7]
+~w~Ascolta, sono al porto di Portland.
+
+[VIC7_3A:VIC7]
+~w~Abbiamo un grosso carico in arrivo. Raggiungimi, io sto salendo sulla grossa nave da carico.
+
+[VIC7_3B:VIC7]
+~w~Non lo so Vinnie... ho delle cose da sbrigare.
+
+[VIC7_3D:VIC7]
+~w~Ma d'ora in avanti saremo soci... anzi, più che soci... fratelli!
+
+[VIC7_3E:VIC7]
+~w~Forza, che ne dici? È ciò che vuole Salvatore.
+
+[VIC7_3F:VIC7]
+~w~OK. Per Salvatore.
+
+[VIC7_3G:VIC7]
+~w~Ma se mi prendi ancora per il culo, sei un uomo morto.
+
+[VIC7_4:VIC7]
+~w~Wahaahha! Ti faccio a pezzettini, piccoletto!
+
+[VIC7_4A:VIC7]
+~w~Raggiungi Vincenzo alla ~y~nave da carico.
+
+[VIC7_5:VIC7]
+~w~Muoooooriiiii!
+
+[VIC7_6:VIC7]
+~w~Ahahahahahah!
+
+[VIC7_7:VIC7]
+~w~Hai già fatto a fette quel brutto stronzo?
+
+[VIC7_8:VIC7]
+~w~Mi dispiace deluderti, Vinnie.
+
+[VIC7_9:VIC7]
+~w~Figlio di puttana! Perché non muori e basta?
+
+[VIC7_10:VIC7]
+~w~Non avresti mai dovuto tornare, Toni.
+
+[VIC710A:VIC7]
+~w~Mi sono spezzato la schiena per Salvatore.
+
+[VIC710B:VIC7]
+~w~E ora che sei tornato in città, non fa altro che dire Toni qua e Toni là!
+
+[VIC7_11:VIC7]
+~w~Questa è la mia città, Toni! LA MIA CITTÀ!
+
+[VIC711A:VIC7]
+~w~Non me la porterai via!
+
+[VIC7_12:VIC7]
+~w~Questa me la godrò davvero...
+
+[VIC7_4B:VIC7]
+~w~Il posto sembra deserto. Sali a bordo della ~y~nave.
+
+[VIC7_13:VIC7]
+~w~Raggiungi l'~y~uscita.
+
+[VIC7_3C:VIC7]
+~w~Senti, so di essere stato uno stronzo con te, Toni. Sono davvero dispiaciuto.
+
+[VIC7HUL:VIC7]
+~w~Raggiungi lo ~y~scafo.
+
+{=================================== MISSION TABLE SALS1 ===================================}
+
+[SALS1_1:SALS1]
+NONE
+
+[SALS1_6:SALS1]
+Uccidi il ~r~sindaco R.C. Hole!
+
+[SALS1_7:SALS1]
+Recupera il ~g~cellulare del sindaco!
+
+[SALS1_8:SALS1]
+~r~Il sindaco ha terminato la sua corsa.
+
+[SALS1_9:SALS1]
+~r~Il sindaco è fuggito.
+
+[SALS110:SALS1]
+Porta il telefono a ~y~Salvatore.
+
+[SALS111:SALS1]
+Getta l'arma o sparo!
+
+[SALS112:SALS1]
+Ti sono addosso! Il ~r~sindaco~w~ sta scappando!
+
+[SS1_AA:SALS1]
+Sì, sono Toni.
+
+[SS1_AB:SALS1]
+Quel bastardo di un sindaco si sta comportando da stronzo, ma io non mi faccio fregare!
+
+[SS1_AC:SALS1]
+Calmati Sal. Vedrò di metterlo fuori gioco per te.
+
+[SS1_AD:SALS1]
+Sei un bravo ragazzo Toni, rendi onore alla memoria di tuo padre.
+
+[SS1_AE:SALS1]
+Ascolta, quel fottuto ciccione di un sindaco tutti i giorni si fa una corsetta nel parco.
+
+[SS1_AF:SALS1]
+Lascialo senza fiato... per sempre!
+
+[SS1_AG:SALS1]
+E recupera il suo cellulare!
+
+[SS1_AH:SALS1]
+Così vedremo con chi parlava.
+
+[SALS1AA:SALS1]
+Sì, sono Toni.
+
+[SALS1AB:SALS1]
+Quel bastardo di un sindaco sta facendo lo stronzo.
+
+[SALS1AC:SALS1]
+Non posso permetterlo!
+
+[SALS1AD:SALS1]
+Rilassati. Lo metterò fuori gioco per te.
+
+[SALS1AE:SALS1]
+Sei un bravo ragazzo Toni.
+
+[SALS1AF:SALS1]
+Quel ciccione bastardo tutti i giorni fa una corsetta nel parco.
+
+[SALS1AG:SALS1]
+Lascialo senza fiato. Per sempre!
+
+[SALS1AH:SALS1]
+Ah sì... e recupera il suo cellulare!
+
+[SALS1AI:SALS1]
+Così vedremo con chi stava parlando...
+
+[SALS1C1:SALS1]
+Metta giù quell'arma, signore!
+
+[SALS1C2:SALS1]
+Fermo o sparo!
+
+[SALS1C3:SALS1]
+Fermo!
+
+[SALS1C4:SALS1]
+Non fare sciocchezze!
+
+[SALS113:SALS1]
+~r~Il telefono del sindaco è stato distrutto.
+
+[SALS114:SALS1]
+Stai attento! Ti spareranno se entri nel parco con un'arma.
+
+{=================================== MISSION TABLE SALS2 ===================================}
+
+[SALS2_1:SALS2]
+~w~Prendi la ~b~macchina.
+
+[SALS2_2:SALS2]
+~w~Vai al ~y~luogo dell'appuntamento.
+
+[SALS2_3:SALS2]
+~w~Torna in ~b~macchina.
+
+[SALS2_4:SALS2]
+~r~Mickey è stato ucciso!
+
+[SALS2_5:SALS2]
+~r~Uno degli uomini di Salvatore è stato ucciso!
+
+[SALS2AA:SALS2]
+Toni,
+
+[SALS2AB:SALS2]
+alcuni dei ragazzi ti contatteranno più tardi.
+
+[SALS2AC:SALS2]
+Fatti trovare nei paraggi quando arriveranno.
+
+[SALS2AD:SALS2]
+Ciao, Salvatore.
+
+[SALS2CA:SALS2]
+Toni?
+
+[SALS2CC:SALS2]
+Forza sali, guida tu.
+
+[SALS2CD:SALS2]
+Mickey, cosa, ehm, cosa succede?
+
+[SALS2CE:SALS2]
+Forza Cipriani, credi che sia qui per farti saltare le cervella?
+
+[SALS2BA:SALS2]
+Salvatore è laggiù...
+
+[SALS2BC:SALS2]
+Toni, figliolo,
+
+[SALS2BD:SALS2]
+oggi è il giorno del tuo battesimo!
+
+[SALS2BE:SALS2]
+Oh, Salvatore. Signor Leone.
+
+[SALS2BF:SALS2]
+Mamma attendeva questo giorno.
+
+[SALS2CB:SALS2]
+Sali, forza, andiamo a fare un giro.
+
+[SALS2BB:SALS2]
+Madonn' mia, cosa stai aspettando?
+
+[SALS2AF:SALS2]
+Grazie, Toni... mi farò vivo.
+
+{=================================== MISSION TABLE SALS3 ===================================}
+
+[SALS3_1:SALS3]
+NONE
+
+[SALS3_2:SALS3]
+Danni
+
+[SALS313:SALS3]
+~r~Il consigliere del sindaco è morto!
+
+[SALS314:SALS3]
+~r~Salvatore è morto!
+
+[SALS3AA:SALS3]
+Toni, salta su!
+
+[SALS3AB:SALS3]
+Dove stiamo andando?
+
+[SALS3AC:SALS3]
+Dobbiamo fare due chiacchiere con l'assistente del sindaco a proposito di Franco Forelli.
+
+[SALS3BA:SALS3]
+Ehi, scendete dalla mia barca!
+
+[SALS3BB:SALS3]
+Tu verrai con me.
+
+[SALS3BC:SALS3]
+Non potete farlo!
+
+[SALS3BD:SALS3]
+Sbrighiamoci, i servizi segreti ci staranno osservando!
+
+[SALS3CA:SALS3]
+Toni, attento a quegli uomini armati sulle rocce!
+
+[SALS3CB:SALS3]
+Uomini armati davanti a noi!
+
+[SALS3CC:SALS3]
+Attento a destra, Toni!
+
+[SALS3CD:SALS3]
+A sinistra Toni, a sinistra!
+
+[SALS3CE:SALS3]
+Ci stanno sparando da quel molo!
+
+[SALS3CF:SALS3]
+Merda, i servizi segreti stanno arrivando in elicottero!
+
+[SALS3DA:SALS3]
+Il sindaco non cagava neanche se Franco non glielo diceva!
+
+[SALS3DB:SALS3]
+Nessuno ha manovrato il sindaco!
+
+[SALS3DC:SALS3]
+Aargh! Aspetta, aspetta, hai ragione!
+
+[SALS3DE:SALS3]
+I Siciliani? Perché?
+
+[SALS3DF:SALS3]
+Hanno Franco in pugno e vogliono scatenare una guerra tra le famiglie di Liberty City.
+
+[SALS3DG:SALS3]
+Quando la situazione si sarà calmata, assumeranno il comando.
+
+[SALS3DH:SALS3]
+Toni, ti chiamerò più tardi.
+
+[SALS3DI:SALS3]
+Prima devo scaricare questo stronzo nella baia!
+
+[SALS3DD:SALS3]
+Sono stati quei Siciliani... hanno spinto Franco a farlo.
+
+{=================================== MISSION TABLE SALS4 ===================================}
+
+[SALS4_1:SALS4]
+NONE
+
+[SALS4BA:SALS4]
+Sì.
+
+[SALS4BB:SALS4]
+Grazie a Dio hai risposto!
+
+[SALS4BC:SALS4]
+Che succede, Sal?
+
+[SALS4BD:SALS4]
+Stavo spiando i Forelli a Fort Staunton quando improvvisamente si è scatenato l'inferno!
+
+[SALS4BE:SALS4]
+I Sindacco hanno dichiarato guerra ai Forelli,
+
+[SALS4BF:SALS4]
+e io sono bloccato qui, nel mezzo di una battaglia!
+
+[SALS4BG:SALS4]
+Arrivo subito.
+
+[SALS4BH:SALS4]
+Porta la mia limousine, è antiproiettile. Ne avremo bisogno!
+
+[SALS4AA:SALS4]
+Toni, andiamocene da qui!
+
+[SALS4AB:SALS4]
+Riportami alla limousine!
+
+[SALS4AE:SALS4]
+Senti, ho un rifugio a Newport... portami là!
+
+[SALS4AF:SALS4]
+Grazie, Toni... mi farò vivo.
+
+[SAL4_1:SALS4]
+Vai a prendere la ~b~limousine di Leone.
+
+[SAL4_2:SALS4]
+~r~Hai distrutto la macchina!
+
+[SAL4_3:SALS4]
+Porta la macchina a ~y~Fort Staunton.
+
+[SAL4_4:SALS4]
+~r~Hai fatto morire Salvatore!
+
+[SAL4_6:SALS4]
+~b~Salvatore~w~ si trova in fondo al viale.
+
+[SAL4_9:SALS4]
+Vai al ~y~garage.
+
+[SAL4_11:SALS4]
+Hai lasciato ~b~Salvatore~w~ indietro!
+
+[SAL4_12:SALS4]
+È bloccato, abbandona qui la limousine e procedi a piedi.
+
+[SAL4_13:SALS4]
+Torna nella ~b~limousine.
+
+[SAL4_14:SALS4]
+Porta Salvatore e la limousine al ~y~garage~w~ a Newport.
+
+[SAL4_15:SALS4]
+Trova ~b~Salvatore!
+
+[SAL4_16:SALS4]
+Porta Salvatore alla ~b~limousine.
+
+[SAL4_17:SALS4]
+Attendi che ~b~Salvatore~w~ salga sulla limousine!
+
+{=================================== MISSION TABLE SALS5 ===================================}
+
+[SALS5_1:SALS5]
+~w~Premi~h~ ~k~ ~VEACC~ ~w~per prendere il controllo della macchina di Paul Sindacco.
+
+[SALS5_2:SALS5]
+~w~Fai fuori i ~r~Forelli~w~ all'appuntamento prima che Sindacco trovi il sistema di comando.
+
+[SALS5_3:SALS5]
+~r~Paul Sindacco è stato ucciso!
+
+[SALS5_4:SALS5]
+~r~Il furgone di Salvatore è stato distrutto!
+
+[SALS5_5:SALS5]
+~r~Sindacco ha raggiunto l'appuntamento!
+
+[SALS5_6:SALS5]
+~w~Vai al ~b~furgone.
+
+[SALS5_7:SALS5]
+~w~Tempo rimasto
+
+[SALS5_8:SALS5]
+~r~Sindacco ha trovato il sistema di comando!
+
+[SALS5_9:SALS5]
+~w~I comandi satellitari della macchina di Sindacco risponderanno lentamente.
+
+[SALS510:SALS5]
+Danni
+
+[SALS5AA:SALS5]
+Ehi!
+
+[SALS5AB:SALS5]
+Toni, sono io, ho qualcosa per te...
+
+[SALS5AC:SALS5]
+L'adorerai, sarà divertente.
+
+[SALS5AD:SALS5]
+Cosa vuoi che faccia, Sal?
+
+[SALS5AE:SALS5]
+C'è un furgone nei paraggi.
+
+[SALS5AF:SALS5]
+Chiamami quando lo troverai.
+
+[SALS5BA:SALS5]
+OK Sal, sono nel furgone.
+
+[SALS5BB:SALS5]
+Ottimo. Abbiamo manomesso la macchina di Sindacco.
+
+[SALS5BC:SALS5]
+Quindi cosa vuoi che faccia?
+
+[SALS5BD:SALS5]
+Paulie sta andando a un appuntamento con i Forelli...
+
+[SALS5BE:SALS5]
+nel tentativo di mediare una tregua.
+
+[SALS5BF:SALS5]
+Usa l'equipaggiamento nel furgone per prendere il controllo dell'auto di Paulie
+
+[SALS5BG:SALS5]
+e manda all'aria l'appuntamento.
+
+[SALS5CA:SALS5]
+Che diavolo?
+
+[SALS5CC:SALS5]
+Oddio, aiuto!
+
+[SALS5CD:SALS5]
+Fuori dai piedi.
+
+[SALS5CF:SALS5]
+Qualcuno mi aiuti!
+
+[SALS5CG:SALS5]
+La mia auto è posseduta!
+
+[SALS5CE:SALS5]
+Questa macchina sta cercando di uccidermi!
+
+[SALS5CB:SALS5]
+Ehi, cosa sta succedendo?
+
+{=================================== MISSION TABLE SALS6 ===================================}
+
+[SALS601:SALS6]
+~w~Sal ti ha lasciato una ~b~barca ~w~al molo sud occidentale: ferma l'informatore.
+
+[SALS602:SALS6]
+~w~Si sta dirigendo verso la costa. Vai a ~r~prenderlo!
+
+[SALS603:SALS6]
+L'~r~informatore~w~ sta tornando da Franco Forelli!
+
+[SALS604:SALS6]
+~r~L'informatore è riuscito a tornare a Fort Staunton.
+
+[SALS605:SALS6]
+~r~È riuscito a fuggire!
+
+[SALS606:SALS6]
+~r~Sta ~w~scappando a piedi!
+
+[SALS607:SALS6]
+~w~Sta scappando con un'~r~auto rubata!
+
+[SALS608:SALS6]
+~r~Non puoi inseguirlo senza una barca!
+
+[SALS6AA:SALS6]
+Pronto.
+
+[SALS6AC:SALS6]
+La faida Forelli-Sindacco.
+
+[SALS6AD:SALS6]
+Si sta recando a un incontro con Franco Forelli.
+
+[SALS6AE:SALS6]
+È un grosso vantaggio per noi che Franco non sappia nulla,
+
+[SALS6AF:SALS6]
+e che questa guerra continui.
+
+[SALS6AG:SALS6]
+Fai fuori quel chiacchierone.
+
+[SALS6AH:SALS6]
+Sarà fatto, Sal.
+
+[SALS6AB:SALS6]
+Toni, un informatore ha scoperto che c'è la cosca siciliana dietro la faida Forelli-Sindacco.
+
+[SLS6_20:SALS6]
+~w~Sta ritornando da Franco Forelli, fallo ~r~fuori~w~!
+
+[SLS6_21:SALS6]
+~w~Fallo ~r~fuori~w~!
+
+{=================================== MISSION TABLE NEDS1 ===================================}
+
+[NEDS1_1:NEDS1]
+L'FBI sta andando a recuperare dei falsi documenti inerenti il doping di alcune stelle dello sport.
+
+[NEDS1_2:NEDS1]
+Se i documenti verranno consegnati all'FBI, saranno accusati degli innocenti.
+
+[NEDS1_3:NEDS1]
+Devi recuperare questi documenti e consegnarmeli, li terrò al sicuro io.
+
+[NEDS1_4:NEDS1]
+Avrai bisogno di un veicolo dell'FBI.
+
+[NEDS1_5:NEDS1]
+C'è stato un tentativo di rapina sull'autostrada. L'FBI è sulla scena del crimine.
+
+[NEDS1_6:NEDS1]
+Ruba la loro macchina e raggiungi il luogo dell'incontro prima che sia troppo tardi.
+
+[NEDS1_8:NEDS1]
+Torna nella macchina dell'~b~FBI!
+
+[NEDS1_9:NEDS1]
+Vai al ~y~luogo dell'incontro.
+
+[NEDS111:NEDS1]
+Semina la polizia!
+
+[NEDS113:NEDS1]
+Ecco i documenti, come da accordi...
+
+[NEDS114:NEDS1]
+Ma che diavolo... è già arrivato un agente!
+
+[NEDS115:NEDS1]
+Un'altra macchina dell'FBI? Ehi! Sei un impostore!
+
+[NEDS116:NEDS1]
+Ferma l'~r~informatore!
+
+[NEDS117:NEDS1]
+Recupera i ~g~documenti.
+
+[NEDS118:NEDS1]
+Consegna i documenti al ~y~Liberty Tree.
+
+[NEDS119:NEDS1]
+~r~La macchina dell'FBI è a pezzi.
+
+[NEDS120:NEDS1]
+~r~Sei arrivato tardi! L'informatore ha consegnato i documenti all'FBI!
+
+[NEDS121:NEDS1]
+Ottimo lavoro Toni, il Signore sarà orgoglioso di te.
+
+[NEDS122:NEDS1]
+Mi accerterò che finiscano in buone mani.
+
+[NEDS123:NEDS1]
+Arrivederci.
+
+[NEDS124:NEDS1]
+~r~Il rapporto è rovinato!
+
+[NEDS1AA:NEDS1]
+Mi perdoni, padre, perché ho peccato...
+
+[NEDS1AB:NEDS1]
+Merda, il diavolo gioca sporco quanto te, Antonio.
+
+[NEDS1AE:NEDS1]
+Un peccatore ha confessato di aver falsificato dei documenti che accusano di doping i migliori atleti della nazione.
+
+[NEDS1AF:NEDS1]
+Se riuscissi a impedirgli di consegnarli all'FBI, potremmo salvare le carriere di molti innocenti.
+
+[NEDS1AG:NEDS1]
+Lo consideri già fatto, padre.
+
+[NEDS1BA:NEDS1]
+Sei in anticipo.
+
+[NEDS1BB:NEDS1]
+Ehi, non ti conosco, dov'è John-O?
+
+[NEDS1BC:NEDS1]
+John-O? Non è potuto venire.
+
+[NEDS1BD:NEDS1]
+Ehi, ma quello è John-O!
+
+[NEDS1BE:NEDS1]
+Dammeli!
+
+[NEDS1BF:NEDS1]
+Vaffanculo!
+
+[NEDS1AD:NEDS1]
+Direi che andrò per la seconda...
+
+[NEDS1AC:NEDS1]
+Puoi dire un'Ave Maria oppure andare a fare il lavoro sporco per conto di Dio.
+
+[NEDS1_7:NEDS1]
+Vai sulla scena del crimine e ruba una ~b~macchina dell'FBI~w~, poi raggiungi il luogo dell'incontro prima delle ~1~:~1~.
+
+[NEDS125:NEDS1]
+Vai sulla scena del crimine e ruba una ~b~macchina dell'FBI~w~, poi raggiungi il luogo dell'incontro prima delle 0~1~:~1~.
+
+[NEDS126:NEDS1]
+Vai sulla scena del crimine e ruba una ~b~macchina dell'FBI~w~, poi raggiungi il luogo dell'incontro prima delle 0~1~:0~1~.
+
+[NEDS127:NEDS1]
+Vai sulla scena del crimine e ruba una ~b~macchina dell'FBI~w~, poi raggiungi il luogo dell'incontro prima delle ~1~:0~1~.
+
+{=================================== MISSION TABLE NEDS2 ===================================}
+
+[NEDS2_1:NEDS2]
+NONE
+
+[NEDS2AA:NEDS2]
+Mi perdoni, padre, perché ho peccato...
+
+[NEDS2AB:NEDS2]
+Merda, Toni, cos'hai combinato ancora?
+
+[NEDS2AC:NEDS2]
+Ehi padre, moderi il linguaggio!
+
+[NEDS2AD:NEDS2]
+Hai ragione, Ave Maria piena di qualche cosa.
+
+[NEDS2AE:NEDS2]
+Un'anima ribelle ha confessato di aver rubato dei diamanti.
+
+[NEDS2AF:NEDS2]
+Aiuta questo pellegrino nel cammino verso la redenzione: recupera il malloppo e io mi occuperò di restituire i diamanti...
+
+[NB2_2:NEDS2]
+Recupera la ~g~valigetta~w~ e uccidi tutti i membri della gang.
+
+[NB2_3:NEDS2]
+Consegna la valigetta agli uffici del ~y~Liberty Tree.
+
+[NB2_4:NEDS2]
+Recupera la ~g~valigetta!
+
+[NB2_1:NEDS2]
+Questa è una trappola!
+
+[NB2_6:NEDS2]
+Uccidi tutte le ~r~guardie!
+
+[NB2_7:NEDS2]
+Distruggi l'~r~elicottero!
+
+[NB2_5:NEDS2]
+Elimina l'~r~elicottero~w~ e le ~r~guardie~w~, e recupera la ~g~valigetta.
+
+{=================================== MISSION TABLE NEDS3 ===================================}
+
+[NEDS3AA:NEDS3]
+Mi perdoni, padre, perché ho peccato...
+
+[NEDS3AB:NEDS3]
+Toni, figliolo, in confronto ai degenerati di questa città, tu sei un santo!
+
+[NEDS3AC:NEDS3]
+Le loro macchine scaricano le scoregge del diavolo nei polmoni dei nostri bambini! Stanno insozzando il paradiso!
+
+[NEDS3AD:NEDS3]
+Va', mostra a questi peccatori il loro errore!
+
+[NEDS3_1:NEDS3]
+Guida l'autopompa in giro per la città e scatena il caos, tamponando le auto e provocando incidenti.
+
+[NEDS3_2:NEDS3]
+~w~Ruba l'~b~autopompa.
+
+[NEDS3_3:NEDS3]
+~w~Hai ~1~ secondi per tornare all'~b~autopompa.
+
+[NEDS3_4:NEDS3]
+Valutazione
+
+[NEDS3_5:NEDS3]
+Adesso scatena il caos, provoca il maggior numero possibile di incidenti e collisioni!
+
+[NEDS3_6:NEDS3]
+Pedone investito!
+
+[NEDS3_7:NEDS3]
+Veicolo affondato!
+
+[NEDS3_8:NEDS3]
+Veicolo distrutto!
+
+[NEDS3_9:NEDS3]
+Veicolo capottato!
+
+[NEDS310:NEDS3]
+~r~L'autopompa è stata distrutta.
+
+[NEDS311:NEDS3]
+Rotazione di 360°!
+
+[NEDS312:NEDS3]
+Rotazione di 720°!
+
+[NEDS313:NEDS3]
+Rotazione di 1080°!
+
+[NEDS314:NEDS3]
+~r~Hai abbandonato l'autopompa.
+
+[NEDS315:NEDS3]
+Veicolo ribaltato!
+
+[NEDS316:NEDS3]
+Tre incidenti consecutivi!
+
+[NEDS317:NEDS3]
+Quattro incidenti consecutivi!
+
+[NEDS318:NEDS3]
+Cinque incidenti consecutivi!
+
+[NEDS319:NEDS3]
+Bonus tamponamento estremo!
+
+[NEDS320:NEDS3]
+~r~Non hai ottenuto una valutazione sufficiente in tempo.
+
+[NEDS321:NEDS3]
+Bonus disarcionamento!
+
+[NEDS322:NEDS3]
+Bonus disarcionamento e morte!
+
+[NEDS323:NEDS3]
+Bonus volo!
+
+[NEDS324:NEDS3]
+Bonus volo estremo!
+
+[NEDS325:NEDS3]
+~w~Hai 0 secondi per tornare all'~b~autopompa.
+
+[NEDS326:NEDS3]
+Congratulazioni! Ce l'hai fatta risparmiando ~1~ secondi.
+
+[NEDS327:NEDS3]
+~w~Ora distruggi l'~r~autopompa.~w~ Non lasciare nessuna prova.
+
+[NEDS328:NEDS3]
+I punti bonus si conquistano causando incidenti spettacolari, oppure ribaltando, capottando o distruggendo altri veicoli.
+
+[NEDS329:NEDS3]
+Veicolo capottato x ~1~
+
+[NEDS330:NEDS3]
+Veicolo ribaltato x ~1~
+
+[NEDS332:NEDS3]
+~w~Hai 1 secondo per tornare all'~b~autopompa.
+
+[NEDS333:NEDS3]
+Congratulazioni! NUOVO MIGLIOR TEMPO con ~1~ secondi rimasti.
+
+[NEDS334:NEDS3]
+~w~Ora distruggi l'autopompa. Non lasciare nessuna prova.
+
+[NEDS335:NEDS3]
+Rotazione di 180°!
+
+[NEDS337:NEDS3]
+Guida l'autopompa in giro per la città e scatena il caos, tamponando le auto e provocando incidenti prima delle ~1~:~1~.
+
+[NEDS338:NEDS3]
+Guida l'autopompa in giro per la città e scatena il caos, tamponando le auto e provocando incidenti prima delle ~1~:0~1~.
+
+[NEDS339:NEDS3]
+Guida l'autopompa in giro per la città e scatena il caos, tamponando le auto e provocando incidenti prima delle 0~1~:~1~.
+
+[NEDS340:NEDS3]
+Guida l'autopompa in giro per la città e scatena il caos, tamponando le auto e provocando incidenti prima delle 0~1~:0~1~.
+
+[NEDS341:NEDS3]
+Causa il maggior numero di tamponamenti e incidenti prima delle ~1~:~1~.
+
+[NEDS342:NEDS3]
+Causa il maggior numero di tamponamenti e incidenti prima delle ~1~:0~1~.
+
+[NEDS343:NEDS3]
+Causa il maggior numero di tamponamenti e incidenti prima delle 0~1~:~1~.
+
+[NEDS344:NEDS3]
+Causa il maggior numero di tamponamenti e incidenti prima delle 0~1~:0~1~.
+
+[NEDS331:NEDS3]
+Causa il maggior numero di tamponamenti e incidenti!
+
+{=================================== MISSION TABLE NEDS4 ===================================}
+
+[NEDS4_1:NEDS4]
+NONE
+
+[NEDS4_2:NEDS4]
+~w~Le tre celebrità si stanno dirigendo verso una stazione radio del centro per un'intervista per la prima di stasera.
+
+[NEDS4_3:NEDS4]
+~w~L'attrice Faith W sta arrivando con il suo elicottero privato dall'aeroporto Francis.
+
+[NEDS4_4:NEDS4]
+~w~Il gangster diventato attore, DB-P, arriverà in barca da Portland.
+
+[NEDS4_5:NEDS4]
+~w~Il vecchio attore alcolizzato Black Lightman uscirà dal centro di riabilitazione e arriverà in limousine.
+
+[NEDS4_8:NEDS4]
+~w~Faith è morta.
+
+[NEDS4_9:NEDS4]
+~w~DB-P è morto.
+
+[NEDS410:NEDS4]
+~w~Black Lightman è morto.
+
+[NEDS411:NEDS4]
+~w~Hai eliminato le tre celebrità. Torna alla ~y~chiesa~w~ e dillo al padre.
+
+[NEDS412:NEDS4]
+~r~Faith è arrivata alla radio!
+
+[NEDS413:NEDS4]
+~r~DB-P è arrivato alla radio!
+
+[NEDS414:NEDS4]
+~r~Black Lightman è arrivato alla radio!
+
+[NEDS415:NEDS4]
+~w~Salirà su una patriot antiproiettile.
+
+[NEDS417:NEDS4]
+~w~La patriot è antiproiettile.
+
+[NEDS418:NEDS4]
+~w~Attenzione alla guardia del corpo.
+
+[NEDS421:NEDS4]
+~w~Il negozio d'armi di Phil Cassidy è indicato da una bandiera sul radar.
+
+[NEDS4AA:NEDS4]
+Mi perdoni padre, perché ho peccato... di nuovo.
+
+[NEDS4AB:NEDS4]
+E ancora una volta verrai perdonato, figliolo.
+
+[NEDS4AC:NEDS4]
+Il culto della celebrità è andato troppo oltre!
+
+[NEDS4AD:NEDS4]
+Che genere di donnaccia può concedere un'intervista a una radio negando l'esclusiva a un volenteroso redattore?
+
+[NEDS4AF:NEDS4]
+Distruggi questi falsi idoli!
+
+[NEDS4BA:NEDS4]
+Ho fatto quello che mi ha chiesto, padre.
+
+[NEDS4BB:NEDS4]
+Bene, le vendite del giornale hanno triplicato da quando hai trovato la via.
+
+[NEDS4BC:NEDS4]
+Cosa?
+
+[NEDS4BD:NEDS4]
+Grazie ancora per il tuo aiuto, Toni!
+
+[NEDS4BE:NEDS4]
+Ehi, ma che cazzo?
+
+[NEDS4BF:NEDS4]
+CHI DIAVOLO SEI?
+
+[NEDS422:NEDS4]
+Recupera un lanciarazzi dal negozio d'armi di Phil Cassidy.
+
+[NEDS4_7:NEDS4]
+~w~Non permettere a nessuna delle ~r~celebrità~w~ di raggiungere la radio LCFR!
+
+[NEDS416:NEDS4]
+~w~Non permettere a nessuna delle ~r~celebrità~w~ di raggiungere la radio LCFR!
+
+[NEDS419:NEDS4]
+~w~Troverai dell'armamento pesante al negozio d'armi di Phil Cassidy.
+
+[NEDS420:NEDS4]
+~w~Padre Ned ha comprato un lanciarazzi. Recuperalo al negozio d'armi di Phil Cassidy.
+
+[NEDS4_6:NEDS4]
+~w~Se hai bisogno di armi, vai al negozio di Phil Cassidy.
+
+{=================================== MISSION TABLE DONS1 ===================================}
+
+[MORG_01:DONS1]
+2-2-3, 3-2-3, 4-2-3, 5-2-3-...
+
+[MORG_02:DONS1]
+Antonio! Che piacere vederti!
+
+[MORG_03:DONS1]
Cosa sta succedendo?
-[FIN1_02:FINALE]
-Tommy! Oh bene, bene. Ascolta, ascolta. Uh, ascolta.
+[MORG_04:DONS1]
+Ci stiamo preparando per un festa, ragazzo mio.
-[FIN1_03:FINALE]
-A me piacciono i pesci. Adoro i pesci.
+[MORG_05:DONS1]
+Sì, una festa cadaverica!
-[FIN1_04:FINALE]
-Mi piacciono quando nuotano in una boccia o come cibo in un piatto,
+[MORG_08:DONS1]
+Che cazzo stai dicendo, una festa cadaverica?
-[FIN1_05:FINALE]
-ma per quanto li ami, non voglio dormire in loro compagnia.
+[MORG_09:DONS1]
+Stasera ci divertiremo.
-[FIN1_06:FINALE]
-Va bene, ma adesso i tuoi fratelli italiani stanno venendo per mettermi ai piedi delle belle scarpe in cemento e io...
+[MORG_10:DONS1]
+Ma prima, dobbiamo andare a prendere gli ospiti...
-[FIN1_07:FINALE]
-Sta zitto Ken. Siediti.
+[MORG_11:DONS1]
+Andiamo, prima che i nostri invitati si annoino a morte.
-[FIN1_08:FINALE]
-Lance, di che diavolo stai parlando?
+[MORG_12:DONS1]
+Scusa il gioco di parole!
-[FIN1_09:FINALE]
-Sono i tuoi amici del nord, Tommy. Non sono felici di cosa hai fatto al loro uomo.
+[MORG_13:DONS1]
+Perché sono morti, sai...
-[FIN1_10:FINALE]
-Oggi verranno giù per questioni di lavoro.
+[MORG_14:DONS1]
+Il nostro ospite d'onore sta per fare un salto ai laboratori di patologia.
-[FIN1_11:FINALE]
-Ci hanno messo di più di quanto credessi...
+[MORG_15:DONS1]
+Non facciamolo aspettare.
-[FIN1_12:FINALE]
-Ragazzi, dobbiamo essere molto chiari. Non voglio che ci siano dubbi sul fatto che questa è la mia operazione. MIA!
+[MORG_06:DONS1]
+- La prima della stagione! ~n~ - Woah, woah, woah, woah...
-[FIN1_13:FINALE]
-Ken, recupera la prima partita di soldi falsi e metti venti milioni in delle valigette.
+[DONS1_1:DONS1]
+Nessuno
-[FIN1_14:FINALE]
-Lance, raduna i ragazzi...
+[DL1_A:DONS1]
+Voglio dare una festa cadaverica e ho bisogno che recuperi gli 'ospiti'.
-[FIN2_01:FINALE]
-Tommy!
+[DL1_2:DONS1]
+~r~Hai distrutto la macchina.
-[FIN2_02:FINALE]
-Cosa? Niente abbraccio per un vecchio amico?
+[DL1_3:DONS1]
+I poliziotti sono stati allertati, perdi il tuo livello di sospetto!
-[FIN2_03:FINALE]
-Sono stato per quindici anni fuori dal giro,
+[DL1_4:DONS1]
+Porta la macchina al ~y~garage di Donald.
-[FIN2_04:FINALE]
-sono un po' arrugginito in fatto di etichetta familiare.
+[DL1_6:DONS1]
+~r~Il carro funebre ha raggiunto la stazione di polizia.
-[FIN2_05:FINALE]
-Sempre arrabbiato, vero Tommy?
+[DL1_9:DONS1]
+Porta la macchina al negozio di riverniciatura.
-[FIN2_06:FINALE]
-Non ti avevo detto che il tuo carattere ti avrebbe messo nei guai, eh?
+[DL1_5:DONS1]
+Ruba il ~b~carro funebre~w~ prima che giunga a destinazione.
-[FIN2_07:FINALE]
-Ci sono venti milioni in quelle valigette...
+{=================================== MISSION TABLE DONS2 ===================================}
-[FIN2_08:FINALE]
-Quanti hai detto? Dieci? No, undici uomini.
+[DONS2AA:DONS2]
+DL?
-[FIN2_09:FINALE]
-È così che sei diventato il macellaio di Harwood! Eh eh eh!
+[DONS2AB:DONS2]
+Toni!
-[FIN2_10:FINALE]
-Mi hai inviato per uccidere un uomo, UN UOMO. Sapevano che stavo arrivando Sonny...
+[DONS2AC:DONS2]
+Come va la campagna elettorale?
-[FIN2_11:FINALE]
-Modera il tono.
+[DONS2AD:DONS2]
+È una lotta serrata e ogni singolo voto farà la differenza!
-[FIN2_12:FINALE]
-Qualcuno potrebbe pensare che stai incolpando me per le sfortunate circostanze.
+[DONS2AE:DONS2]
+I sostenitori di O'Donovan stanno lavorando sodo sui seggi periferici.
-[FIN2_13:FINALE]
-Prendi i fottuti soldi...
+[DONS2AF:DONS2]
+Bene, ecco il nostro veicolo propagandistico: vai e diffondi il verbo!
-[FIN2_14:FINALE]
-Prendi i fottuti soldi?
+[DONS2BA:DONS2]
+Vota O'Donovan come sindaco!
-[FIN2_15:FINALE]
-Lo sai, Tommy? Ho fatto quello che ho potuto per te. Ho tirato i fili, ho chiesto favori.
+[DONS2BB:DONS2]
+Vota O'Donovan per stroncare la corruzione!
-[FIN2_16:FINALE]
-Ero tuo amico, Tommy. Pensavo che avresti avuto buon senso, che avresti capito cosa è bene per il business.
+[DONS2BC:DONS2]
+Riponi la tua fiducia nel sindaco O'Donovan!
-[FIN2_17:FINALE]
-Mi fidavo di te, Tommy. E tu mi hai deluso.
+[DONS2BD:DONS2]
+La fine della criminalità! Vota O'Donovan!
-[FIN2_18:FINALE]
-Ma alla fine qualcuno nella tua organizzazione del cazzo ha capito come si fa il business.
+[DONS2BE:DONS2]
+Vota per la giustizia! Vota O'Donovan!
-[FIN2_19:FINALE]
-Non è vero, Lance?
+[DONS2CA:DONS2]
+O'Donovan ha tre mogli!
-[FIN2_20:FINALE]
-Mi dispiace Tommy. Questa è Vice City. Questo è il suo business.
+[DONS2CB:DONS2]
+Chi ha mangiato la marmellata? O'Donovan!
-[FIN2_21:FINALE]
-Ci hai venduto...
+[DONS2CC:DONS2]
+O'Donovan è un tossico!
-[FIN2_22:FINALE]
-No. Ho venduto TE, Tommy, ho venduto TE.
+[DONS2CD:DONS2]
+O'Donovan crede nella sodomia coercitiva!
-[FIN2_23:FINALE]
-I soldi veri sono di sopra nella cassaforte.
+[DONS2CE:DONS2]
+O'Donovan è un comunista!
-[FIN2_24:FINALE]
-Allora Tommy, questo era il grande piano?
+[DONS2CF:DONS2]
+O'Donovan indossa l'intimo di sua figlia!
-[FIN2_25:FINALE]
-Pensavi davvero che avrei preso i soldi finti?
+[DONS2CG:DONS2]
+O'Donovan gode nudo tra i maiali!
-[FIN2_26:FINALE]
-Salva la faccia e scappa con la coda tra le gambe!
+[DONS2CH:DONS2]
+O'Donovan odia l'America!
-[FIN2_27:FINALE]
-No.
+[DONS2CI:DONS2]
+Love non tasserà i benestanti!
-[FIN2_28:FINALE]
-Volevo solo farti incazzare prima di ucciderti.
+[DONS2CJ:DONS2]
+Vota Love per corsi di patologia nelle scuole!
-[FIN3_01:FINALE]
-Tommy?
+[DONS2CK:DONS2]
+Donald Love: un posto all'obitorio per tutti!
-[FIN3_02:FINALE]
-Oh mio Dio, Tommy! Che cosa è successo?
+[DONS2CL:DONS2]
+Donald Love è un eroe di guerra!
-[FIN3_03:FINALE]
-Che cosa ti sembra sia successo?
+[DONS2CM:DONS2]
+Un voto per Love è un voto per la vostra felicità!
-[FIN3_04:FINALE]
-Mi sembra ti si sia rovinato l'abito!
+[DONS2CN:DONS2]
+Donald Love: duro con i vegetariani!
-[FIN3_05:FINALE]
-Accidenti, Tommy, era così bello! Tommy, che diavolo è successo?
+[DONS2_1:DONS2]
+~w~Sali sul ~b~furgone.
-[FIN3_06:FINALE]
-Ho avuto una divergenza di vedute con un socio in affari, sai come vanno queste cose.
+[DONS2_3:DONS2]
+~w~O'Donovan ha mandato fuori i suoi ~r~furgoni~w~ per riprendersi i voti!
-[FIN3_07:FINALE]
-Tommy, se io ho una divergenza con un socio, gli mando una lettera di insulti.
+[DONS2_4:DONS2]
+~r~Non sei riuscito a conquistare abbastanza voti!
-[FIN3_08:FINALE]
-Forse gli piscio nella casella della posta. Ma non do il via alla terza guerra mondiale!
+[DONS2_6:DONS2]
+~w~Tempo rimasto
-[FIN3_09:FINALE]
-Lo sai, forse dovresti parlare con il mio strizzacervelli...
+[DONS2_7:DONS2]
+~w~Torna sul ~b~furgone~w~ e continua la missione.
-[FIN3_10:FINALE]
-Quello stupido idiota, Lance...
+[DONS2_9:DONS2]
+~w~O'Donovan ha mandato fuori un altro ~r~furgone~w~!
-[FIN3_11:FINALE]
-Tommy, non mi è mai piaciuto quel tipo, OK?
+[DONS210:DONS2]
+~w~Zone
-[FIN3_12:FINALE]
-È nevrotico, insicuro, egocentrico... quel tipo è un vero stronzo!
+[DONS211:DONS2]
+~r~Hai perso tutte le aree di votazione!
-[FIN3_13:FINALE]
-Sono felice che l'hai fatto fuori!
+[DONS212:DONS2]
+~r~Non sei riuscito a eliminare l'opposizione!
-[FIN3_14:FINALE]
-Non penso che riceveremo ulteriori problemi dal nord...
+[DONS2_2:DONS2]
+~w~Guida nei ~y~checkpoint delle aree di votazione~w~ per conquistare il loro voto.
-[FIN3_15:FINALE]
-...fondamentalmente perché non c'è più un 'nord'.
+[DONS215:DONS2]
+~w~Hai ceduto un'~y~area~w~ a O'Donovan!
-[FIN3_16:FINALE]
-Adesso è tutto a sud.
+[DONS216:DONS2]
+~w~Non permettere che O'Donovan riconquisti tutte le ~y~aree~w~!
-[FIN3_17:FINALE]
-Aspetta, vuoi forse dire ciò che penso io, caro il mio Tommy?
+[DONS213:DONS2]
+~w~Adesso che controlli abbastanza aree, elimina i ~r~furgoni dell'opposizione~w~ per impedire a O'Donovan di conquistarne altre.
-[FIN3_18:FINALE]
-Cosa credi che significhi?
+[DONS2_8:DONS2]
+~w~Conquista almeno 5 delle ~y~aree di votazione.
-[FIN3_19:FINALE]
-Che siamo in carica... cioè, che sei in carica! Oh Tommy...
+[DONS214:DONS2]
+~w~Controlli meno di 5 ~y~aree~w~: riconquistale!
-[FIN3_20:FINALE]
-Lo sai, Ken, questo potrebbe essere l'inizio di uno splendido rapporto lavorativo...
+[DONS217:DONS2]
+~w~Conquista altre aree per aumentare il bonus di completamento.
-[FIN3_21:FINALE]
-Dopo tutto, tu sei un convincente, diffamante, fottuto ladro.
+[DONS2_5:DONS2]
+~r~Il furgone elettorale è stato distrutto.
-[FIN3_22:FINALE]
-e io sono uno psicopatico assassino convinto e uno spacciatore.
+[DONS218:DONS2]
+~w~Conquista almeno 5 ~y~aree di votazione~w~ prima delle ~1~:~1~.
-[FIN3_23:FINALE]
-Lo so, non è meraviglioso?
+[DONS219:DONS2]
+~w~Conquista almeno 5 ~y~aree di votazione~w~ prima delle 0~1~:~1~.
-[FIN_B1:FINALE]
-~g~Uccidi ~y~Vance~g~, il fottuto traditore.
+[DONS220:DONS2]
+~w~Conquista almeno 5 ~y~aree di votazione~w~ prima delle 0~1~:0~1~.
-[FIN_B2:FINALE]
-~g~Trova ~p~Sonny~g~ e metti la parola fine a questa storia.
+[DONS221:DONS2]
+~w~Conquista almeno 5 ~y~aree di votazione~w~ prima delle ~1~:0~1~.
-[FIN_B3:FINALE]
-~g~La Mafia sta cercando di rubare i tuoi soldi. Difendi la cassaforte.
+[DONS230:DONS2]
+~w~Adesso che controlli abbastanza aree, elimina il ~r~furgone dell'opposizione~w~ per impedire a O'Donovan di conquistarne altre.
-[FIN_B4:FINALE]
-~g~Sei prossimo alla morte: recupera della ~w~salute~g~ dal basso.
+{=================================== MISSION TABLE DONS3 ===================================}
-[FIN_B5:FINALE]
-~g~La Mafia sta rubando i tuoi soldi. Difendi la ~c~cassaforte~g~.
+[CAMP_01:DONS3]
+Antonio! Que pasa, amigo?
-[FIN_B7:FINALE]
-~r~La Mafia ha rubato i tuoi soldi!
+[CAMP_02:DONS3]
+Sai che sono italiano e non spagnolo, vero?
-[DEFSAFE:FINALE]
-~g~Ritorna alla cassaforte e difendila.
+[CAMP_03:DONS3]
+Ma certo, che stupido! È che adoro tutte le lingue romanze...
-{=================================== MISSION TABLE FIRETRK ===================================}
+[CAMP_04:DONS3]
+Oddio che buono.
-[F_PASS1:FIRETRK]
-Incendio spento!
+[CAMP_05:DONS3]
+Sa di pollo, ma è, come dire... più intelligente.
-[F_FAIL2:FIRETRK]
-~r~Sei arrivato tardi!
+[CAMP_06:DONS3]
+Ne vuoi un po'?
+
+[CAMP_07:DONS3]
+Ho già mangiato, grazie..
+
+[CAMP_08:DONS3]
+Peccato, è fantastico.
+
+[CAMP_09:DONS3]
+Ci sono altre prelibatezze in arrivo...
+
+[CAMP_10:DONS3]
+i liberali si divertono con le scampagnate,
+
+[CAMP_11:DONS3]
+ma non sanno nulla dei veri piaceri della vita!
+
+[CAMP_12:DONS3]
+Raffinatezza e democrazia sono due concetti che non vanno d'accordo.
+
+[CAMP_13:DONS3]
+Ascolta Don, dobbiamo vincere queste elezioni.
+
+[CAMP_14:DONS3]
+Per cui dobbiamo essere sicuri di non avere scheletri nell'armadio,
+
+[CAMP_15:DONS3]
+non so se hai capito...
+
+[CAMP_16:DONS3]
+Giusto.
+
+[CAMP_17:DONS3]
+Ciò che voglio dire è...
+
+[CAMP_18:DONS3]
+come ci liberiamo di questo O'Donovan, il rappresentante...
+
+[CAMP_19:DONS3]
+dei Forelli?
+
+[CAMP_20:DONS3]
+Il tizio può contare sul supporto di molta gente,
-[F_CANC:FIRETRK]
-~r~Missione Pompieri annullata!
+[CAMP_21:DONS3]
+sai tutta quella gente 'delusa', se sai cosa intendo.
-[F_EXTIN:FIRETRK]
-INCENDI:
+[CAMP_22:DONS3]
+Credo che dovremo turbare la loro fede nella democrazia, non so se mi spiego.
-[F_START:FIRETRK]
-~g~Veicolo in fiamme avvistato in ~a~. Vai a spegnere il fuoco.
+[CAMP_23:DONS3]
+Vuoi dire che devo andare a gonfiarli di botte?
-[SIREN_1:FIRETRK]
-Per attivare la sirena di questo veicolo premi il ~h~~k~~VEHICLE_HORN~~w~.
+[CAMP_24:DONS3]
+Oh, Antonio, la tua passione è... ammirevole!
-[SIREN_2:FIRETRK]
-Per attivare la sirena di questo veicolo premi il ~h~~k~~VEHICLE_HORN~~w~.
+[CAMP_25:DONS3]
+È così um... um...um... wagneriana! Hai presente? Arrivederci, amigo.
-[FIREPRO:FIRETRK]
-Missione Camion dei pompieri livello 12 completata: adesso sei permanentemente ignifugo!!!
+[CAMP_26:DONS3]
+Humphries, porta via gli avanzi!
-[F_FAIL1:FIRETRK]
-Missione Camion dei pompieri terminata.
+[DONS3_1:DONS3]
+Toni deve liberarsi dei sostenitori dell'opposizione per indebolire l'efficienza della campagna elettorale del candidato dei Forelli, O'Donovan.
-[F_STAR1:FIRETRK]
-~g~Veicoli in fiamme presso l'area ~a~. Vai a spegnere l'incendio.
+[DONS3_2:DONS3]
+~w~Uccidi i ~r~sostenitori~w~ dell'opposizione.
-[SPRAY_4:FIRETRK] { reVC update }
-Premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con il cannone ad acqua e la ~h~~k~~VEHICLE_TURRETLEFT~~w~ e ~h~~k~~VEHICLE_TURRETRIGHT~~w~ per mirare.
+[DONS3_3:DONS3]
+~r~Tempo scaduto.
-[SPRAY_1:FIRETRK] { reVC update }
-Premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con il cannone ad acqua e la ~h~~k~~VEHICLE_TURRETLEFT~~w~ e ~h~~k~~VEHICLE_TURRETRIGHT~~w~ per mirare.
+[DONS3_4:DONS3]
+Questi ~r~sostenitori~w~ sono stati sistemati. Elimina il prossimo gruppo.
-{=================================== MISSION TABLE GENERA1 ===================================}
+[DONS3_5:DONS3]
+~w~Uccidi i ~r~sostenitori~w~ dell'opposizione ~w~prima delle ~1~:~1~.
-[GEN1_A:GENERA1]
-Mr. Vercetti!
+[DONS3_6:DONS3]
+~w~Uccidi i ~r~sostenitori~w~ dell'opposizione ~w~prima delle ~1~:0~1~.
-[GEN1_B:GENERA1]
-Colonnello.
+[DONS3_7:DONS3]
+~w~Uccidi i ~r~sostenitori~w~ dell'opposizione ~w~prima delle 0~1~:~1~.
-[GEN1_D:GENERA1]
-No, grazie.
+[DONS3_8:DONS3]
+~w~Uccidi i ~r~sostenitori~w~ dell'opposizione ~w~prima delle 0~1~:0~1~.
-[GEN1_E:GENERA1]
-Mi vergogno ad ammettere che una delle cause dei nostri problemi comuni sembra sia stata la linguaccia di una persona di cui credevo di potermi fidare.
+{=================================== MISSION TABLE DONS4 ===================================}
-[GEN1_F:GENERA1]
-Mi sono tenuto Gonzalez per anni, ma ora la sua incompetenza ha raggiunto il fondo.
+[DONS410:DONS4]
+Vai al ~y~magazzino dei Forelli~w~ e dai fuoco alle schede elettorali!
-[GEN1_G:GENERA1]
-Sarebbe solo un bene se eliminassi Gonzalez...
+[DONS411:DONS4]
+Brucia le ~r~schede elettorali~w~ e distruggi le ~r~stampatrici!
-[GEN1_H:GENERA1]
-È stato lui? A me importa solo dei miei soldi.
+[DONS412:DONS4]
+Distruggi la ~r~stampatrice!
-[GEN1_I:GENERA1]
-Questa gentilezza verrà ricompensata dopo troveremo insieme i tuoi soldi.
+[DONS413:DONS4]
+Brucia TUTTE le ~r~schede elettorali!
-[GEN1_J:GENERA1]
-Lo troverai nella sua Penthouse, probabilmente mezzo ubriaco. Usa questo...
+[DONS414:DONS4]
+Distruggi gli ultimi ~r~furgoni dei Forelli!
-[GEN1_06:GENERA1]
-Eeek! Ha una motosega!
+[DONS416:DONS4]
+~r~Ti è sfuggito un furgone dei Forelli! Ora possono manipolare le elezioni!
-[GEN1_07:GENERA1]
-Stammi lontano, brutto bastardo!
+[DONS418:DONS4]
+Ci sono ancora ~r~~1~ pacchi~w~ di schede contraffatte.
-[GEN1_08:GENERA1]
-Oddio santo, ho distrutto la mia vita e il mio look!
+[DONS419:DONS4]
+Rimane ~r~1 pacco~w~ di schede contraffatte.
-[GEN1_10:GENERA1]
-Ho deciso di chiudere quella tua maledetta boccaccia!
+[DONS420:DONS4]
+Distruggi l'ultimo ~r~furgone dei Forelli!
-[GEN1_11:GENERA1]
-Smettila di correre, brutto grassone!
+[DONS421:DONS4]
+Una stampatrice è a pezzi! Adesso distruggi l'altra ~r~stampatrice!
-[GEN1_12:GENERA1]
-Stai fermo, così la facciamo finita!
+[DONS422:DONS4]
+La stampatrice è distrutta!
-[GEN1_13:GENERA1]
-Smettila di strillare, non gliene frega a nessuno, grassone!
+[DONS423:DONS4]
+Adesso esci di qui!
-[GEN1_C:GENERA1]
-Grazie per essere venuto. Siediti. Vuoi dell'aragosta?
+[DONS424:DONS4]
+Distruggi le ~r~stampatrici!
-[GEN1_05:GENERA1]
-~g~Uccidi Gonzalez!
+[DS4_AA:DONS4]
+Così tanta gente... e così tanti soldi da intascare.
-[GEN1_09:GENERA1]
-Ti pagherò doppio, Tommy, DOPPIO!
+[DS4_AB:DONS4]
+Non ho la pretesa di capire la politica.
-[GEN1_18:GENERA1]
-~r~Gonzalez ha raggiunto sano e salvo la stazione di polizia!
+[DS4_AC:DONS4]
+Nessuno lo fa davvero. È solo menzogna e corruzione.
-[GEN1_19:GENERA1]
-~g~La polizia di Vice City ti sta inseguendo!
+[DS4_AD:DONS4]
+I Forelli possiedono delle quote della società che fabbrica le nuove stampatrici.
-[GEN1_20:GENERA1]
-~g~Prendi un veicolo.
+[DS4_AE:DONS4]
+Ed è un male, vero?
-[GEN1_21:GENERA1]
-~g~Raggiungi il ~h~Pay 'N' Spray~g~ in ~h~Vice Point~g~.
+[DS4_AF:DONS4]
+Beh, di certo non possiamo fidarci di loro.
-[GEN1_22:GENERA1]
-~g~Guida il tuo veicolo attraverso il carrozziere per perdere il ~h~livello di sospetto~g~, ~h~riparare~g~ e ~h~ricolorare~g~ il mezzo. Costo: ~h~100$~g~. Questa volta è gratis.
+[DS4_AG:DONS4]
+Sarebbe meglio se incappassero in SERI problemi tecnici, intesi?
-[GEN1_01:GENERA1]
-Quando corri, tieni premuto il ~o~tasto |~w~ per preparare un attacco corpo a corpo.
+[DONS4H1:DONS4]
+Troverai dell'armamento pesante al negozio di Phil Cassidy.
-[GEN1_02:GENERA1]
-Quando corri, tieni premuto il ~x~tasto /~w~ per preparare un attacco corpo a corpo.
+[DONS4AA:DONS4]
+Antonio, che bello vederti!
-[GEN1_03:GENERA1]
-Quando corri, tieni premuto il ~h~tasto R1~w~ per preparare un attacco corpo a corpo.
+[DONS4AB:DONS4]
+Non sono un democratico, ma non arrivo a falsificare i voti.
-[GEN1_14:GENERA1]
-Rilascia il ~h~~k~~PED_FIREWEAPON~~w~ per eseguire l'attacco.
+[DONS4AC:DONS4]
+Sapevi che i Forelli possiedono delle quote della società che fabbrica le nuove stampatrici?
-[GEN1_15:GENERA1]
-Rilascia il ~h~~k~~PED_FIREWEAPON~~w~ per eseguire l'attacco.
+[DONS4AD:DONS4]
+Ed è un male, vero?
-[GEN1_16:GENERA1]
-Rilascia il ~h~~k~~PED_FIREWEAPON~~w~ per eseguire l'attacco.
+[DONS4AE:DONS4]
+Beh, di certo non possiamo fidarci di loro.
-[GEN1_23:GENERA1]
-~g~Passa per le porte per tornare al piano terra.
+[DONS4AF:DONS4]
+Sarebbe meglio se incappassero in SERI problemi tecnici, intesi?
-{=================================== MISSION TABLE GENERA2 ===================================}
+[DONS4_8:DONS4]
+Vai al negozio d'armi di Phil Cassidy.
-[COL2_A:GENERA2]
-Tommy! Vieni qui da me.
+[DONS4H2:DONS4]
+Il negozio d'armi di Phil Cassidy è indicato da una bandiera sul radar.
-[COL2_B:GENERA2]
-Non ti sembra delizioso, vero? Lingua di Tapia?
+[DONS427:DONS4]
+Adesso vattene da Fort Staunton!
-[COL2_C:GENERA2]
-Eerr... No, no grazie.
+[DONS4_9:DONS4]
+Il negozio di Phil Cassidy ti fornirà gli strumenti per danneggiare la campagna dei Forelli.
-[COL2_D:GENERA2]
-Tommy, sei come un vento fresco della pampa che mi libera dall'olezzo della corruzione,
+[DONS417:DONS4]
+C'è un altro lanciafiamme al negozio d'armi di Phil Cassidy.
-[COL2_E:GENERA2]
-benché mi addolori la recente dipartita, devo continuare come sempre con il mio lavoro.
+[DONS425:DONS4]
+Recupera il lanciafiamme al negozio d'armi di Phil Cassidy.
-[COL2_F:GENERA2]
-Non mi sembra ci stiamo avvicinando ai miei soldi...
+[DONS426:DONS4]
+~r~Il commesso è morto!
-[COL2_G:GENERA2]
-Tommy, amico mio, non sei più a Liberty. Qui le cose vanno in modo diverso.
+[DONS4H3:DONS4]
+Donald Love ha comprato un lanciafiamme. Vai alla cassa per recuperarlo.
-[COL2_H:GENERA2]
-Continuerò le mie ricerche, ma nel frattempo ho un interessante accordo da proporti.
+{=================================== MISSION TABLE DONS5 ===================================}
-[COL2_I:GENERA2]
-Un favore per un amico, Cortez.
+[DONS5_7:DONS5]
+Proteggi la limousine di Donald!
-[COL2_J:GENERA2]
-Sei un vero amico, Tommy, Ero certo che non mi avresti deluso.
+[DONS5_9:DONS5]
+~r~Donald Love è morto!
-[COL2_K:GENERA2]
-Ho bisogno che tu incontri un corriere che mi ha recuperato una tecnologia di cui ho bisogno...
+[DONS513:DONS5]
+Danni limousine
-[COL2_1:GENERA2]
-La pioggia, è così très umido in questo periodo dell'anno...
+[DONS516:DONS5]
+Sali sulla ~b~limousine.
-[COL2_2:GENERA2]
+[DONS517:DONS5]
+Hai lasciato indietro ~b~Donald Love~w~!
+
+[DONS519:DONS5]
+Porta Donald al ~y~rifugio!
+
+[DONS520:DONS5]
+Uccidi gli ~r~aggressori!
+
+[DONS521:DONS5]
+Sali sulla ~b~limousine!
+
+[DS5_AA:DONS5]
+Odio la pubblicità, ma credo faccia parte del gioco, vero?
+
+[DS5_AB:DONS5]
+Temo di sì.
+
+[DS5_AC:DONS5]
+I Forelli cercheranno di farmi fuori, vero?
+
+[DS5_AD:DONS5]
+Non preoccuparti, resto di guardia io.
+
+[DS5_AE:DONS5]
+Oh bene. Prepariamoci al peggio.
+
+[DS5_BA:DONS5]
+Merda! Tutto questo è ridicolo!
+
+[DS5_BB:DONS5]
+Non temere, ci penso io a questi stronzi!
+
+[DS5_BC:DONS5]
+C'è un fucile nel bagagliaio!
+
+[DS5_BD:DONS5]
+Chiudi le porte, non ci vorrà molto!
+
+[DS5_CA:DONS5]
+OK, possiamo andare.
+
+[DS5_CB:DONS5]
+Un altro killer ci sta inseguendo!
+
+[DS5_DA:DONS5]
+Non posso affrontare le elezioni da recluso.
+
+[DS5_DB:DONS5]
+Dobbiamo studiare una nuova tattica.
+
+[DONS522:DONS5]
+Riporta Donald al suo ~y~edificio!
+
+{=================================== MISSION TABLE DONS6 ===================================}
+
+[DONS6_1:DONS6]
+NONE
+
+[DS6_00:DONS6]
+Segui il ~b~furgone elettorale.
+
+[DS6_01:DONS6]
+Aspetta che il ~b~corriere~w~ effettui lo scambio.
+
+[DS6_02:DONS6]
+Recupera le schede elettorali dal ~r~corriere.
+
+[DS6_03:DONS6]
+Uccidi il ~r~corriere.
+
+[DS6_04:DONS6]
+Prendi il ~g~pacco.
+
+[DS6_05:DONS6]
+Segui nuovamente il ~b~furgone elettorale.
+
+[DS6_06:DONS6]
+~r~Hai ucciso un corriere prima dello scambio!
+
+[DS6_07:DONS6]
+Hai mancato uno degli scambi, non puoi sbagliare di nuovo!
+
+[DS6_08:DONS6]
+~r~Hai perso due scambi, la votazione non può essere truccata!
+
+[DS6_09:DONS6]
+~r~L'hai spaventato!
+
+[DS6_10:DONS6]
+~r~Il furgone è stato distrutto!
+
+[DS6_11:DONS6]
+Hai esaurito il tempo!
+
+[DS6_12:DONS6]
+~r~Non hai fermato il furgone!
+
+[DS6_13:DONS6]
+~r~Il furgone non può muoversi senza l'autista!
+
+[DS6_15:DONS6]
+~r~Hai spaventato l'autista, non lo prenderai più ora!
+
+[DS6_16:DONS6]
+~1~
+
+[DS6_17:DONS6]
+~w~L'autista è morto, porta il furgone al ~y~garage di Donald.
+
+[DONS6AA:DONS6]
+Brutte notizie Toni!
+
+[DONS6AB:DONS6]
Cosa?
-[COL2_3:GENERA2]
-Ah, comment?
+[DONS6AC:DONS6]
+Gli exit polls dicono che c'è un testa a testa.
-[COL2_4:GENERA2]
-Ascolta, mi manda Cortez. Dammi quei maledetti chip.
+[DONS6AD:DONS6]
+È l'ora del piano B.
-[COL2_5:GENERA2]
-Oh... d'accord.
+[DONS6AE:DONS6]
+Rubiamo alcuni dei voti non ancora conteggiati e li sostituiamo con i nostri.
-[COL2_B1:GENERA2]
-~g~Incontra il corriere al Mall.
+[DONS6AF:DONS6]
+Cosa avevi detto a proposito della falsificazione dei voti?
-[COL2_B2:GENERA2]
-~g~Il correre sta scappando con i chip: non farlo scappare!
+[DONS6AG:DONS6]
+Oh, stai zitto!
-[COL2_B3:GENERA2]
-~g~Porta i chip al Colonnello.
+[DS6_14:DONS6]
+Torna a prendere le ~g~schede elettorali~w~, non puoi lasciarle indietro!
-[COL2_F1:GENERA2]
-~r~Hai ucciso il contatto!
+[DS6_66:DONS6]
+~r~Hai distrutto la macchina di un corriere prima dello scambio!
-[COL2_F2:GENERA2]
-~r~Il corriere è morto. Raccogli i chip.
+[DS6_18:DONS6]
+Hai ucciso un corriere prima dello scambio! Non ucciderne altri!
-[COL2_6A:GENERA2]
-Fermo, brutto maiale imperialista americano! Questa è proprietà del governo francese. Passamela!
+[DS6_21:DONS6]
+Muoviti! C'è un altro scambio in corso!
-[BLIPHLP:GENERA2]
-Se il segnale sul radar è un triangolo verso l'alto, significa che il bersaglio è in posizione più elevata rispetto al giocatore.
+[DS6_22:DONS6]
+Hai mancato il primo scambio, non puoi perderne un altro!
-[COL2_F3:GENERA2]
-~r~I chip adesso riposano in fondo all'oceano.
+[DS6_23:DONS6]
+Hai mancato il secondo scambio, non puoi perderne un altro!
-[COL2_F4:GENERA2]
-~r~Il corriere è scappato! Non sei riuscito a recuperare i chip.
+[DS6_24:DONS6]
+Hai mancato il terzo scambio, non puoi perderne un altro!
-{=================================== MISSION TABLE GENERA3 ===================================}
+[DS6_25:DONS6]
+Hai mancato il quarto scambio, non puoi perderne un altro!
-[GEN3_A:GENERA3]
-Thomas, grazie per essere venuto.
+[DS6_26:DONS6]
+Hai spaventato un corriere prima dello scambio! Non spaventarne altri!
-[GEN3_B:GENERA3]
-Perdonami se giungo subito al punto.
+[DS6_28:DONS6]
+~r~Hai fatto un casino! La votazione non può più essere truccata!
-[GEN3_C:GENERA3]
-Diaz mi ha chiesto di sovrintendere una piccola transizione di lavoro.
+{=================================== MISSION TABLE DONS7 ===================================}
-[GEN3_D:GENERA3]
-Speriamo vada meglio dell'ultima...
+[ELEC_01:DONS7]
+Ehi Don, ho risolto quel problemino per conto tuo.
-[GEN3_E:GENERA3]
-Ed è per questo che ho pensato a te, amico.
+[ELEC_02:DONS7]
+Adesso tutto filerà liscio come l'olio.
-[GEN3_F:GENERA3]
-Ho lasciato un po' di supporto al parcheggio multipiano.
+[ELEC_03:DONS7]
+Ottimo.
-[GEN3_G:GENERA3]
-Raccogli il materiale, poi raggiungi e sorveglia gli uomini di Diaz all'incontro.
+[ELEC_04:DONS7]
+Non hai più collegamenti con il crimine organizzato.
-[GEN3_H:GENERA3]
-Gracias, amigo.
+[ELEC_05:DONS7]
+Sei candido come un bimbo in fasce. Potresti diventare papa.
-[GEN3_1:GENERA3]
-Ami l'azione, vedo...
+[ELEC_07:DONS7]
+Malgrado non ci siano le prove di collegamenti tra Donald Love
-[GEN3_2:GENERA3]
-Senti, ti capita mai di fare qualcos'altro che non sia seguirmi dappertutto? Perché non vieni con me e mi dimostri di servire a qualcosa?
+[ELEC_08:DONS7]
+e il crimine organizzato di Liberty City,
-[GEN3_3:GENERA3]
-Potrei anche farlo. A proposito, mi chiamo Lance.
+[ELEC_09:DONS7]
+pare che le sue amicizie con mafiosi del calibro di Toni Cipriani
-[GEN3_5:GENERA3]
-Devi essere il nuovo uomo di Cortez.
+[ELEC_11:DONS7]
+abbiano pesato parecchio sul giudizio degli elettori.
-[GEN3_6:GENERA3]
-Fino a quando non mi capiteranno opportunità più lucrose.
+[ELEC_12:DONS7]
+Nelle ultime ore, la sua popolarità è precipitata.
-[GEN3_7:GENERA3]
-Arriveranno fra pochi minuti: meglio trovare un buon punto dove appostarsi...
+[ELEC_13:DONS7]
+Sembra proprio che sia stato giudicato inadatto per governare...
-[GEN3_8:GENERA3]
-OK! Io prendo il balcone, tu prendi il tetto dall'altra parte del cortile.
+[ELEC_14:DONS7]
+Inadatto! A causa tua...
-[GEN3_9:GENERA3]
-Sono vivo, brutti stronzi! E tutto grazie a te! Come ti chiami?
+[ELEC_15:DONS7]
+Sì, è tutta colpa tua!
-[GEN3_10:GENERA3]
-Tommy.
+[ELEC_16:DONS7]
+Colpa mia?
-[GEN3_11:GENERA3]
-Ci incontreremo di nuovo, credo!
+[ELEC_17:DONS7]
+Sì, certo.
-[GEN3_12:GENERA3]
-Dove diavolo è andato Lance? Merda...
+[ELEC_18:DONS7]
+Colpa mia?
-[GEN3_14:GENERA3]
-Tommy! Ho bisogno di aiuto!
+[ELEC_19:DONS7]
+Con tutti i sacrifici che ho fatto per questa città...
-[GEN3_15:GENERA3]
-Non preoccuparti, ti copro io!
+[ELEC_20:DONS7]
+E sai qual è stata la mia più grande debolezza?
-[GEN3_16:GENERA3]
-Gli uomini di Diaz si stanno facendo massacrare!
+[ELEC_21:DONS7]
+L'umiltà! E adesso sono rovinato.
-[GEN3_19:GENERA3]
-~g~Haitiani! Stanno mandando a monte l'affare! Proteggi Diaz!
+[ELEC_22:DONS7]
+BANCAROTTA! Un buco da 20 milioni di dollari!
-[GEN3_20:GENERA3]
-~g~Entra nel parcheggio multipiano e recupera ciò che il Colonnello ha lasciato per te.
+[ELEC_23:DONS7]
+Finito in... bancarotta. Arrivederci! BANCAROTTA!
-[GEN3_22:GENERA3]
-Salute di Diaz:
+[ELEC_06:DONS7]
+Il papa! Guarda qui.
-[GEN3_23:GENERA3]
-~g~Hai lasciato Lance indietro! Vallo a prendere!
+[DONS7_1:DONS7]
+O'Donovan ha collegato Donald Love a Salvatore Leone. La carriera politica di Donald Love è in bilico. Toni deve distruggere le prove.
-[GEN3_25:GENERA3]
-~r~Lance è morto!
+[DONS7_2:DONS7]
+~w~Ruba il ~b~furgone~w~ contenente le prove.
-[GEN3_28:GENERA3]
-~g~Riporta la valigetta a Diaz.
+[DONS7_3:DONS7]
+~r~Hai ucciso il contatto.
-[GEN3_29:GENERA3]
-~g~Raccogli la valigetta e riportala a Diaz.
+[DONS7_4:DONS7]
+~w~Porta il furgone al ~y~punto di consegna.
-[GEN3_30:GENERA3]
-~r~È scappato con i soldi! Diaz ti strapperà le palle per questo!
+[DONS7_5:DONS7]
+~w~Torna sul ~b~furgone.
-[GEN3_33:GENERA3]
-~r~Dovresti proteggere Diaz e i suoi uomini, non sparargli addosso!
+[DONS7_7:DONS7]
+Sali sulla ~b~macchina del contatto.
-[GEN3_34:GENERA3]
-~r~Non ci sarà nessun accordo se spari ai Cubani!
+[DONS7CA:DONS7]
+Ah, Toni.
-[GEN3_35:GENERA3]
-~g~Ha rubato i soldi di Diaz!
+[DONS7CB:DONS7]
+Le prove sono nel furgone qui davanti.
-[GEN3_36:GENERA3]
-~g~Prendi la moto, inseguilo e recupera i soldi di Diaz!
+[DONS7CC:DONS7]
+Dovrai farti strada con la forza.
-[GEN3_37:GENERA3]
-~g~Stanno arrivando i Cubani. Assicurati che niente vada storto e proteggi Diaz e Lance.
+[DONS7CD:DONS7]
+Riporta il furgone da DL.
-[GEN3_38:GENERA3]
-~r~Diaz è morto! Non sei riuscito a proteggerlo!
+[DONS7CE:DONS7]
+Buona fortuna!
-[GEN3_39:GENERA3]
-~g~Raggiungi la tua postazione sopra alle scale.
+[DONS713:DONS7]
+~w~Parcheggia dentro il ~y~garage.
-[GEN3_44:GENERA3]
-~g~Vai con Lance all'appuntamento e proteggi Diaz.
+[DONS714:DONS7]
+~r~Hai distrutto il furgone!
-[GEN3_40:GENERA3] { reVC update }
-Per ~h~sparare davanti~w~ su una ~h~moto~w~ premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RMN_AA:DONS7]
+Questa sera c'è da festeggiare poiché lo sciopero che ha bloccato Liberty City
-[GEN3_41:GENERA3] { reVC update }
-Per ~h~sparare davanti~w~ su una ~h~moto~w~ premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RMN_AB:DONS7]
+è finalmente giunto al termine.
-[GEN3_46:GENERA3]
-Meerda!
+[RMN_AC:DONS7]
+Sono stati ripristinati i percorsi della metropolitana e dei traghetti.
-[GEN3_47:GENERA3]
-Tommy!
+[RMN_AD:DONS7]
+Persino il ponte mobile che collega Staunton Island con Shoreside Vale ha riaperto.
-[GEN3_48:GENERA3]
-Maledizione!
+[RMN_AE:DONS7]
+Gli scioperanti hanno finalmente posato i loro cartelloni e sono tornati ai propri posti di lavoro
-[GEN3_49:GENERA3]
-SALUTE DI LANCE:
+[RMN_AF:DONS7]
+dopo che il nuovo sindaco O'Donovan ha fatto delle promesse al raduno locale.
-[GEN3_50:GENERA3]
-~r~Hai distrutto i soldi di Diaz! La prossima volta cerca di non ridurre le banconote in cenere!
+[RMN_AG:DONS7]
+Come vostro sindaco posso garantirvi che esisterà SEMPRE un servizio di traghetti a Liberty City.
-[GEN3_51:GENERA3]
-Altri fottuti Haitiani in un merdoso van!
+[RMN_AH:DONS7]
+Ma alcuni potrebbero pensare che le sue siano promesse a vuoto,
-[GEN3_54:GENERA3]
-Non restare lì impalato, idiota, insegui quello stronzo di un Haitiano!
+[RMN_AI:DONS7]
+poiché i lavori nel nuovo tunnel di Porter Road continuano senza sosta.
-[GEN3_55:GENERA3]
-Tommy! Io resto qua a proteggere Diaz!
+[DONS7_6:DONS7]
+~w~Incontrati con l'~b~uomo~w~ di Donald Love sotto il cavalcavia di Newport.
-[GEN3_18:GENERA3]
-~g~Stanno arrivando i Cubani, resta vicino a Diaz. Assicurati che niente vada storto e proteggi Diaz e Lance.
+{=================================== MISSION TABLE RAYS1 ===================================}
-[GEN3_56:GENERA3]
-~r~Diaz è stato assalito e ucciso! La prossima volta, cerca di proteggerlo!
+[SAYO_01:RAYS1]
+Quindi tu saresti il cazzone su per il culo, eh?
-[GEN3_57:GENERA3]
-Il Kruger è un fucile d'assalto che permette di mirare in prima persona.
+[SAYO_02:RAYS1]
+Scusa?
-[GEN3_58:GENERA3]
-Tieni premuto il tasto ~h~R1~w~ per ~h~mirare~w~ con il fucile d'assalto.
+[SAYO_03:RAYS1]
+Tutta la gente che conta è veramente incazzata con te.
-[GEN3_59:GENERA3]
-Tieni premuto il tasto ~h~L1~w~ per ~h~mirare~w~ col fucile d'assalto.
+[SAYO_04:RAYS1]
+Leon McAffrey, LCPD.
-[GEN3_60:GENERA3]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile d'assalto.
+[SAYO_05:RAYS1]
+Non so di cosa stai parlando.
-[GEN3_61:GENERA3]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile d'assalto.
+[SAYO_06:RAYS1]
+Mi occupo di ristorazione.
-[GEN3_62:GENERA3]
-Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile d'assalto.
+[SAYO_07:RAYS1]
+Ma certo, osso duro.
-[GEN3_63:GENERA3]
-Oltre a permetterti di sparare in corsa, con le ~h~moto~w~ puoi anche ~h~sparare in avanti~w~.
+[SAYO_08:RAYS1]
+A me non frega un cazzo se voi coglioni vi riempite di piombo a vicenda.
-[GEN3_64:GENERA3] { reVC update }
-Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[SAYO_09:RAYS1]
+Mi interessa solo la mia parte.
-[GEN3_65:GENERA3] { reVC update }
-Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[SAYO_12:RAYS1]
+La mia parte. Dov'è?
-[GEN3_66:GENERA3] { reVC update }
-Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[SAYO_13:RAYS1]
+Tra le tue chiappe, amico. Non farmi ridere.
-[GEN3_67:GENERA3]
-Hai bisogno di una mitragliatrice per poter sparare in avanti.
+[SAYO_14:RAYS1]
+Se continui a fare lo stronzo con me, giuro che farò la pelle a te, ai tuoi amici,
-[GEN3_53:GENERA3]
-I MIEI SOLDI!
+[SAYO_15:RAYS1]
+e alle vostre fottute famiglie.
-[GEN3_52:GENERA3]
-Questi Haitiani pensano che possono farsi RICARDO DIAZ!?!
+[SAYO_16:RAYS1]
+Rilassati, datti una calmata.
-{=================================== MISSION TABLE GENERA4 ===================================}
+[SAYO_17:RAYS1]
+Questi sono affari, diciamo una specie di società.
-[DETON:GENERA4]
-DETONAZIONE:
+[SAYO_18:RAYS1]
+Io ti terrò la legge fuori dai piedi, federali, Rico...
-[COL4_3:GENERA4]
-CONVOGLIO ALT!
+[SAYO_19:RAYS1]
+e tu continuerai a tenermi nel giro.
-[COL4_6:GENERA4]
-SIAMO SOTTO FUOCO NEMICO!
+[SAYO_20:RAYS1]
+Chi mi assicura che non verrò preso a calci nelle palle
-[COL4_7:GENERA4]
-Civile, si allontani dal carro armato!
+[SAYO_21:RAYS1]
+da ogni sbirro corrotto da qui a Vice City?
-[COL4_8:GENERA4]
-HO DETTO, si allontani, IMMEDIATAMENTE!
+[SAYO_22:RAYS1]
+Ti aiuterò a prendere il controllo di questa città.
-[COL4_9:GENERA4]
-POSIZIONI DIFENSIVE!
+[SAYO_23:RAYS1]
+In cambio voglio un po' di soldi e alcuni favori.
-[COL4_11:GENERA4]
-Porta via quel civile, soldato! - Signorsì, signore!
+[SAYO_24:RAYS1]
+Forza Toni, andiamo a fare un giro...
-[COL4_12:GENERA4]
-Civile nel CARRO ARMATO! FERMATELO!
+[SAYO_25:RAYS1]
+andiamo a far visita ai tuoi vecchi amici, i Sindacco.
-[COL4_13:GENERA4]
-Questo è un convoglio militare, non ostacoli il passaggio.
+[SAYO_10:RAYS1]
+- Adoro gli uomini con dei principi. ~n~ - Beh, anch'io. Vado ai loro funerali con auto sportive e pupe bollenti.
-[COL4_14:GENERA4]
-Fallo fuori, soldato.
+[RS1_YK:RAYS1]
+Danni
-[COL4_15:GENERA4]
-Spostate quel veicolo civile via dalla strada! -Signore! Sposto il veicolo, signore!
+[RS1_01:RAYS1]
+Fai fuori i ~r~Sindacco.
-[COL4_17:GENERA4]
-OK, PLOTONE, IN MARCIA!
+[RS1_02:RAYS1]
+~r~La macchina è stata distrutta!
-[COL4_18:GENERA4]
-Qualcuno è entrato nel carro armato, signore!
+[RS1_03:RAYS1]
+~r~La Yakuza è stata massacrata!
-[COL4_19:GENERA4]
-Vai a prendere delle ciambelle, soldato! - Signorsì, signore!
+[RS1_04:RAYS1]
+~w~Uccidi alcuni dei ~r~Sindacco~w~ per attirare la loro attenzione.
-[COL4_20:GENERA4]
-Bersaglio acquisito, signore!
+[RS1_05:RAYS1]
+~w~Sali sull'~b~auto di Leon.
-[COL4_21:GENERA4]
-CECCHINO!
+[RS1_06:RAYS1]
+~w~Dirigiti nel ~y~territorio dei Sindacco.
-[COL4_22:GENERA4]
-Io me la squaglio.
+[RS1_07:RAYS1]
+~w~Torna alla ~b~macchina.
-[COL4_23:GENERA4]
-Obiettivo completato! Plotone riposo! -Andiamo a mangiarci qualche ciambella.
+[RS1_10:RAYS1]
+~r~Hai ucciso Leon!
-[COL4_24:GENERA4]
-Protocollo di sicurezza Delta India Echo attivato! Autodistruzione del veicolo attivata!
+[RAYS1AA:RAYS1]
+Io mi metterò al volante, tu pensa a sparare!
-[COL4_26:GENERA4]
-Preparati a morire, maledetto comunista!
+[RAYS1AB:RAYS1]
+Non doveva occuparsi la Yakuza del lavoro pesante?
-[COL4_B2:GENERA4]
-~r~Il carro armato è arrivato con successo a destinazione!
+[RAYS1AC:RAYS1]
+Adattarsi e sopravvivere, Cipriani. Adattarsi e sopravvivere.
-[COL4_B5:GENERA4]
-~r~Il carro armato è stato distrutto!
+[RAYS1BA:RAYS1]
+Merda, questo sta diventando pericoloso.
-[COL4_01:GENERA4]
-Diaz era soddisfatto e vorrebbe incontrarti nuovamente.
+[RAYS1BB:RAYS1]
+Meglio che sparisca per un po'... ci vediamo in giro, Toni.
-[COL4_02:GENERA4]
-È un buon segno?
+[RAYS1CA:RAYS1]
+Davanti a noi, Toni!
-[COL4_03:GENERA4]
-Ma certo! Benché credo che Diaz sia il responsabile della nostra sfortunata perdita...
+[RAYS1CB:RAYS1]
+Dietro di noi Toni, dietro di noi!
-[COL4_04:GENERA4]
-Che cosa glielo fa pensare?
+[RAYS1CC:RAYS1]
+Attento a sinistra!
-[COL4_05:GENERA4]
-Nessuno accusa direttamente un uomo come Diaz... sto solo pensando a voce altra...
+[RAYS1CD:RAYS1]
+A destra Toni, a destra!
-[COL4_06:GENERA4]
-Non importa. Ho una proposta che potrebbe interessarti...
+[RAYS1CE:RAYS1]
+Torna in macchina!
-[COL4_07:GENERA4]
-Non ho più tempo per i suoi lavori, Cortez.
+[RAYS1CF:RAYS1]
+Attento a quello che fai!
-[COL4_08:GENERA4]
-Pensavo che un uomo con dei debiti così pericolosi fosse desideroso di opportunità. Per favore, Tommy, almeno ascoltami.
+[RAYS1OS:RAYS1]
+Oh merda!
-[COL4_09:GENERA4]
-Mi dica...
+{=================================== MISSION TABLE RAYS2 ===================================}
-[COL410:GENERA4]
-Ho un acquirente per un mezzo militare che sta attraversando la città. Recuperalo per me...
+[RS2_02:RAYS2]
+~w~Veloce, sali su una ~b~moto!
-[COL411:GENERA4]
-e, quando lo avrai, vorrei che mi chiamassi immediatamente. Poi...
+[RS2_03:RAYS2]
+~w~Attira i motociclisti nella ~y~zona mortale!
-[COL4_B4:GENERA4]
-~g~Il carro armato è chiuso. Trova un modo per far uscire gli occupanti.
+[RS2_04:RAYS2]
+~w~Torna indietro, non puoi lasciare nessuno dei ~r~Forelli ~w~alle tue spalle!
-[COL4_1:GENERA4]
-Che cos'ha il mitragliatore? -Non so signore!
+[RS2_05:RAYS2]
+~w~Torna sulla ~b~motocicletta!
-[COL4_4:GENERA4]
--Vai di sopra, soldato. -Signorsì, signore!
+[RS2_06:RAYS2]
+~r~Hai bisogno di una motocicletta per attirare i Forelli.
-[COL4_B1:GENERA4]
-~g~Impadronisciti del mezzo militare che sta attraversando la città.
+[RS2_07:RAYS2]
+~r~Gli Yardie vogliono far fuori personalmente i Forelli.
-[COL4_B3:GENERA4]
-~g~Porta il carro armato al garage del Colonnello prima che si autodistrugga.
+[RS2_08:RAYS2]
+~r~Non è sopravvissuto un solo Yardie!
-[COL4_B6:GENERA4]
-~g~Trova un modo per rubare il carro armato!
+[RS2_09:RAYS2]
+~1~
-[COL4_B7:GENERA4]
-~g~Porta il carro armato dentro al garage.
+[RS2_10:RAYS2]
+~r~Non possono inseguirti se non hanno le moto!
-[COL4_B8:GENERA4]
-~g~Esci dal carro armato e abbandona il garage.
+[RAYS2AA:RAYS2]
+Te la sei presa comoda, Toni.
-{=================================== MISSION TABLE GENERA5 ===================================}
+[RAYS2AB:RAYS2]
+Hai detto 'sbrigati' e io ti ho risposto 'fanculo'.
-[COL5A_1:GENERA5]
-Le circostanze richiedono una rapida partenza, amigo.
+[RAYS2AD:RAYS2]
+Simpatico. Adesso apri le orecchie.
-[COL5A_2:GENERA5]
-Qual è il problema?
+[RAYS2AE:RAYS2]
+Gli Yardie hanno messo i loro avidi occhi sul territorio di Forelli a Newport.
-[COL5A_3:GENERA5]
-Uh, i Francesi rivogliono la loro tecnologia missilistica indietro dopo quell'incidente...
+[RAYS2AF:RAYS2]
+Vai là e attira i soldati dei Forelli fino all'ospedale di Rockford.
-[COL5A_4:GENERA5]
-Sento che è giunta l'ora di partire per porti più sicuri.
+[RAYS2AG:RAYS2]
+Gli Yardie li aspetteranno là.
-[COL5A_5:GENERA5]
-Non sarebbe meglio via aria?
+[RAYS2AH:RAYS2]
+Cosa ti viene in tasca?
-[COL5A_6:GENERA5]
-Sarei morto ancor prima di raggiungere il check-in. Inoltre, devo portare la mia merce fuori dal paese.
+[RAYS2AI:RAYS2]
+Glielo devo. Ci becchiamo dopo.
-[COL5A_7:GENERA5]
-Serve un'altra pistola?
+[RS2_11:RAYS2]
+Non uccidere nessuno dei Forelli!
-[COL5A_8:GENERA5]
-Tu, amico, vali come dieci pistole... ah ah ah!
+[RS2_12:RAYS2]
+Falli ~r~fuori~w~!
-[COL5B_1:GENERA5]
-Thomas, mi hai protetto e servito bene.
+[RS2_01:RAYS2]
+~w~Ruba una delle ~b~moto~w~ dei Forelli, ma non uccidere nessuno di loro.
-[COL5B_2:GENERA5]
-Ma adesso devi abbandonarci prima che raggiungiamo il mare aperto.
+[RAYS2DB:RAYS2]
+Sì, forza. Facciamoli fuori!
-[COL5B_4:GENERA5]
-Grazie mille, Colonnello.
+[RS2_13:RAYS2]
+~r~Sono stati uccisi troppi Yardie!
-[COL5B_5:GENERA5]
-Un'ultima richiesta, mentre sono via: terresti un occhio su Mercedes per me?
+{=================================== MISSION TABLE RAYS3 ===================================}
-[COL5B_6:GENERA5]
-Credo sappia badare a sé stessa, ma certo, la terrò sott'occhio.
+[CRAZ_01:RAYS3]
+Chissà cosa ho fatto nella mia vita precedente per meritarmi questo.
-[COL5B_7:GENERA5]
-Grazie mille, amico. A presto!
+[CRAZ_02:RAYS3]
+Ray, hai 40 anni e non hai la minima idea di quello che sta succedendo.
-[COL5B_8:GENERA5]
-Adios, amigo.
+[CRAZ_03:RAYS3]
+Non so come hai fatto a campare così a lungo.
-[COL5_7:GENERA5]
-Smettila di spararmi!
+[CRAZ_04:RAYS3]
+Non capisco come nessuno ti abbia ancora piantato una pallottola in fronte.
-[COL5_9:GENERA5]
-Tommy, falli smettere di sparare!
+[CRAZ_05:RAYS3]
+Ehi Leon, stai attento a quello che dici.
-[COL5_10:GENERA5]
-Ho l'immunità diplomatica!
+[CRAZ_06:RAYS3]
+Non posso credere alle mie fottute orecchie.
-[COL5_11:GENERA5]
-Non sparare, sono il Colonnello!
+[CRAZ_07:RAYS3]
+Cosa vuoi fare, correre dalla mamma?
-[COL5_12:GENERA5]
-Thomas, uccidili: la mia nazione ti sarà riconoscente.
+[CRAZ_08:RAYS3]
+Vuoi saltare in braccio a papà?
-[COL5_13:GENERA5]
-Tommy, siamo assaliti dai Francesi!
+[CRAZ_09:RAYS3]
+Vuoi un bacio con la lingua?
-[COL5_14:GENERA5]
-Tommy, dovunque guardo vedo dei Francesi. Io li odio!
+[CRAZ_10:RAYS3]
+Ehi Toni!
-[COL5_15:GENERA5]
-Tommy, come stai?
+[CRAZ_14:RAYS3]
+Lui si accerterà che tutto venga fatto secondo le regole!
-[COL5_16:GENERA5]
-Questo è per la Piaf e Gainesbourg e per le vostre stupide baguette!
+[CRAZ_15:RAYS3]
+Toni Cipriani, Ray Machowski.
-[COL5_1:GENERA5]
-A babordo! A babordo!
+[CRAZ_16:RAYS3]
+È dalla nostra parte. Ehi, adesso dovremo combattere contro il crimine organizzato.
-[COL5_2:GENERA5]
-Ci attaccano da tribordo!
+[CRAZ_17:RAYS3]
+Ora corri al distretto e compila un rapporto.
-[COL5_3:GENERA5]
-Il ponte qui davanti!
+[CRAZ_18:RAYS3]
+Sei un bravo ragazzo... andiamo, Toni.
-[COL5_4:GENERA5]
-Hanno un elicottero!
+[CRAZ_19:RAYS3]
+Leon, sei un pezzo di merda.
-[COL5_B1:GENERA5]
-~g~Difendi a tutti i costi il Colonnello e il suo yacht.
+[CRAZ_11:RAYS3]
+- Fermo, stronzo. ~n~ - Ehi! Ehi! Ehi! Calmo! Ti presento il mio nuovo amico!
-[COL5_B2:GENERA5]
-~g~Vai a prua e libera la strada per il passaggio dello yacht del Colonnello.
+[RAYS3_1:RAYS3]
+Aiuta la Yakuza a prendere possesso del territorio dei Forelli a Belleville Park. Devi uccidere ~1~ Forelli usando solo la katana.
-[COL5_B3:GENERA5]
-~r~Il Colonnello è morto!
+[RAYS3_2:RAYS3]
+~w~Uccidi ~1~ ~r~Forelli~w~ usando solamente la katana.
-[COL5_B4:GENERA5]
-~g~Abbatti l'elicottero!
+[RAYS3_3:RAYS3]
+Uccisioni
-[COL5B_3:GENERA5]
-Farò calare la mia lancia personale. Tienila, amico, un pegno della mia gratitudine.
+[RAYS3_4:RAYS3]
+~w~Devi uccidere i ~r~Forelli~w~ usando la katana.
-[COL5_B5:GENERA5]
-~g~Abbatti gli elicotteri e proteggi lo yacht.
+[RAYS3_5:RAYS3]
+~w~Non hai una katana. Raccogli un'~g~arma sostitutiva.
-[COL5_B6:GENERA5]
-~g~Hai finito i colpi: recuperane altri dalle scale al ponte superiore.
+[RAYS3_6:RAYS3]
+~r~Hai esaurito il tempo.
-[COL5_B7:GENERA5]
-~g~Sei a corto di salute: recuperane altra dalle scale al ponte superiore
+[RAYS3_7:RAYS3]
+~w~Uccidi ~1~ ~r~Forelli~w~ usando solamente la katana prima delle ~1~:~1~
-{=================================== MISSION TABLE HAIT1 ===================================}
+[RAYS3_8:RAYS3]
+~w~Uccidi ~1~ ~r~Forelli~w~ usando solamente la katana prima delle ~1~:0~1~
-[HAM1_A:HAIT1]
-Permesso?
+[RAYS3_9:RAYS3]
+~w~Uccidi ~1~ ~r~Forelli~w~ usando solamente la katana prima delle 0~1~:~1~
-[HAM1_B:HAIT1]
-Entra pure, caro, e riposa l'anima.
+[RAYS310:RAYS3]
+~w~Uccidi ~1~ ~r~Forelli~w~ usando solamente la katana prima delle 0~1~:0~1~
-[HAM1_C:HAIT1]
-Devi essere il grande uomo cattivo di cui parlava mio nonno.
+{=================================== MISSION TABLE RAYS4 ===================================}
-[HAM1_D:HAIT1]
-Mi ha raccontato di te, sai, quando mi fa visita,
+[RAYS4_1:RAYS4]
+~w~Gli Yardie sono sotto attacco a Newport. Elimina i ~r~Sindacco.
-[HAM1_E:HAIT1]
-e degli altri che ti aspettano.
+[RAYS4_2:RAYS4]
+~w~Parla con il ~b~capo degli Yardie.
-[HAM1_F:HAIT1]
-Adesso, siamo tutti morti da tempo, ma tu sai,
+[RAYS4_3:RAYS4]
+~w~Segui il ~b~capo degli Yardie.
-[HAM1_G:HAIT1]
-non vorrei essere nei tuoi panni, eh eh eh!
+[RAYS4_4:RAYS4]
+~r~Uno degli Yardie è stato ucciso!
-[HAM1_H:HAIT1]
-Ho ricevuto un messaggio. Sono venuto.
+[RAYS4_5:RAYS4]
+~w~Proteggi gli Yardie fino all'arrivo dell'ambulanza.
-[HAM1_I:HAIT1]
-Li puoi sentire?
+[RAYS4_6:RAYS4]
+~w~Torna a proteggere gli Yardie.
-[HAM1_J:HAIT1]
-Stanno chiamando il tuo nome, devono proprio volerti, non credi?
+[RAYS4_7:RAYS4]
+~w~Apri la strada verso l'ambulanza agli Yardie.
-[HAM1_K:HAIT1]
-Magari adesso dai una mano alla zia Poulet, uh, e forse lei ti aiuta.
+[RAYS4_8:RAYS4]
+~w~Vai incontro all'~y~ambulanza.
-[HAM1_L:HAIT1]
-Forse potrà darti un piccolo juju dopo tutto questo.
+[RAYS4AA:RAYS4]
+Cipriani, dobbiamo smetterla di incontrarci così.
-[HAM1_M:HAIT1]
-Un po' di magia per dare all'uomo di legge il malocchio, hmmm?
+[RAYS4AB:RAYS4]
+Concordo.
-[HAM1_N:HAIT1]
-Ascolta, tutto questo è, uhm... darmi cosa?
+[RAYS4AC:RAYS4]
+Forza, rilassati un po'.
-[HAM1_O:HAIT1]
-Credo, credo proprio di aver sbagliato indirizzo...
+[RAYS4AD:RAYS4]
+Cos'hai per me, McAffrey?
-[HAM1_P:HAIT1]
-Fai per me questo favore, Tommy...
+[RAYS4AE:RAYS4]
+Gli Yardie stanno avendo un po' di problemi a mantenere il controllo del nuovo territorio a Newport.
-[HAM1_Q:HAIT1]
-I Cubani, foofoo molto orgogliosi, hmmm,
+[RAYS4AF:RAYS4]
+Pare che i Sindacco lo rivogliano.
-[HAM1_R:HAIT1]
-hanno dato molti grattacapi ai miei ragazzi Haitiani.
+[RAYS4BA:RAYS4]
+Rudyard, il mio ragazzo, è stato ferito!
-[HAM1_S:HAIT1]
-Adesso hanno detto alla polizia dove nascondo le mie polveri.
+[RAYS4BB:RAYS4]
+Forza, dobbiamo caricarlo su un'ambulanza!
-[HAM1_T:HAIT1]
-Pensano sia droga, gli stupidi.
+[RAYS4BC:RAYS4]
+Merda, altri Sindacco!
-[HAM1_U:HAIT1]
-Adesso fai il bravo, Tommy, e vai a prendere le polveri per la zia Poulet.
+[RAYS4BD:RAYS4]
+Io prenderò l'ambulanza, tu aiuta i miei uomini!
-[HAM1_V:HAIT1]
-Sì, sì, certo, vado.
+[RAYS4BE:RAYS4]
+Andiamocene da qui!
-[HAM1_1:HAIT1]
-~g~I poliziotti si stanno avvicinando alle nostre riserve. Fermali prima che ci riescano.
+[RAYS4BF:RAYS4]
+Ecco l'ambulanza!
-[HAM1_2:HAIT1]
-~r~I poliziotti sono arrivati per primi alla riserva!
+[RAYS4BG:RAYS4]
+Grazie signor Cipriani, ti dobbiamo un favore!
-[HAM1_3:HAIT1]
-~g~Riporta questa roba al nascondiglio!
+{=================================== MISSION TABLE RAYS5 ===================================}
-[HAM1_4:HAIT1]
-~g~Ottimo! Adesso pensa al prossimo!
+[RAYS5_1:RAYS5]
+NONE
-[HAM1_6:HAIT1]
-~r~La riserva è stata distrutta, idiota!
+[RAYS5AA:RAYS5]
+Niente fiori?
-[HAM1_7:HAIT1]
-~g~La polizia ha preso la nostra riserva! Recuperala prima che se ne vada!
+[RAYS5AB:RAYS5]
+Non sapevo fosse il tuo funerale.
-[HAM1_8:HAIT1]
-~g~I poliziotti sono vicini alla riserva: datti una mossa!
+[RAYS5AC:RAYS5]
+Sei un cabarettista Toni, molto divertente.
-[HAT_1A:HAIT1]
-~g~Non muoverti, allocco!
+[RAYS5AD:RAYS5]
+I Forelli stanno facendo sul serio.
-{=================================== MISSION TABLE HAIT2 ===================================}
+[RAYS5AE:RAYS5]
+Trafficano armi e tengono una parte del campionario per loro...
-[HAT2_B1:HAIT2]
-~g~Raggiungi il van che contiene le bombe volanti.
+[RAYS5AF:RAYS5]
+...in caso di guai.
-[HAT2_B2:HAIT2]
-Uccidi i Cubani...
+[RAYS5AG:RAYS5]
+Stanno spostando le armi a Fort Staunton con dei camion.
-[HAT2_B4:HAIT2]
-...e distruggi le loro imbarcazioni!
+[RAYS5AH:RAYS5]
+È stato un piacere.
-[HAT2_B5:HAIT2]
-~g~I Cubani stanno fuggendo: non lasciarli scappare!
+[RAYS5AI:RAYS5]
+Al solito.
-[HAT2_B6:HAIT2]
-~r~L'aereo radiocomandato si sta allontanando dal raggio d'azione!
+[RAY5_2:RAYS5]
+Hanno chiamato i rinforzi.
-[HAT2_B7:HAIT2]
-~g~Uno dei Cubani sta fuggendo in macchina. Non lasciare nessun testimone!
+[RAY5_3:RAYS5]
+~r~I Forelli hanno preso le munizioni!
-[HAT2_B8:HAIT2]
-~g~Non hai più aerei radiocomandati!
+[RAY5_4:RAYS5]
+Ehi, è Cipriani!
-[HAT2_B9:HAIT2]
-Aerei radiocomandati:
+[RAY5_5:RAYS5]
+Facciamolo fuori!
-[HAT2_1:HAIT2]
-Oh. Scusa, devo aver sbagliato indirizzo...
+[RAY5_6:RAYS5]
+Uno è andato, ora distruggi l'altro ~r~camion.
-[HAT2_2:HAIT2]
-Puoi entrare comunque a riposare i piedi e a bere un po' di tè.
+[RAY5_1:RAYS5]
+Distruggi i ~r~camion~w~ prima che arrivino a destinazione!
-[HAT2_3:HAIT2]
-Hai qualcosa per me, Tommy?
+[RAY5_7:RAYS5]
+Distruggi il ~r~camion~w~ prima che possano recuperare le munizioni.
-[HAT2_4:HAIT2]
-Sì...
+[RAY5_8:RAYS5]
+~r~Non sei riuscito a distruggere il camion in tempo!
-[HAT2_5:HAIT2]
-Questo posto mi sembra familiare. Un odore della mia gioventù... un deja vu...
+{=================================== MISSION TABLE SALH1 ===================================}
-[HAT2_6:HAIT2]
-Adesso Tommy, ti sussurrerò una piccola commissione che devi farmi. Ascoltami attentamente, va bene?
+[SLH1_F1:SALH1]
+~r~Hai ucciso uno degli Hood.
-[HAT2_7:HAIT2]
-Mi ricordi qualcuno che...
+[SLH1_F2:SALH1]
+~w~Attira i Forelli sfasciando le loro ~r~macchine.
-[HAT2_8:HAIT2]
-I Cubani hanno imbarcazioni molto veloci che utilizzano per trasportare la droga via mare.
+[SLH1_F3:SALH1]
+~w~Vendicati dei ~r~Forelli.
-[HAT2_9:HAIT2]
-È il loro modo di vivere.
+[SLH1_F4:SALH1]
+~w~Attira fuori altri Forelli sfasciando un'altra ~r~macchina.
-[HAT2_10:HAIT2]
-Mio nipote ha costruito delle simpatiche bombe per farli fuori.
+[SLH1_F5:SALH1]
+~w~Non lasciare indietro gli ~b~Hood~w~.
-[HAT2_11:HAIT2]
-Fai esplodere le barche e inchioda le loro bare.
+[SLH1_B0:SALH1]
+~w~OK amico, mettiamo la città a ferro e fuoco.
-[HAT2_12:HAIT2]
-Beh, grazie per il tè.
+[SLH1_B1:SALH1]
+~w~Ehi! Torna qui, idiota!
-[HAT2_B3:HAIT2] { reVC update }
-Premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sganciare una bomba. Premi il ~h~~k~~VEHICLE_ENTER_EXIT~ "~w~ per annullare.
+[SLH1_B2:SALH1]
+~w~Dai coglione! Non ci entrerò mai qui dentro!
-{=================================== MISSION TABLE HAIT3 ===================================}
+[SLH1_B3:SALH1]
+~w~Hai fatto bene! Non ti conviene andare in giro senza di me.
-[HAM3_A:HAIT3]
-Salve, salve, io, uh... Stavo cercando qualcuno...
+[SLH1_B4:SALH1]
+~w~Dannazione amico! È stata dura!
-[HAM3_B:HAIT3]
-Mi sembri affamato, Tommy.
+[SLH1_B6:SALH1]
+~w~...senza offesa eh, Toni.
-[HAM3_C:HAIT3]
-Ci conosciamo?
+[SLH1_B7:SALH1]
+~w~È giunta l'ora che gli Hood si rialzino e facciano la cosa giusta!
-[HAM3_D:HAIT3]
-Zitto ora.
+[SLH1_B8:SALH1]
+~w~Coraggio! Facciamoli fuori!
-[HAM3_E:HAIT3]
-Un'ultima cosa e potrai andare, Tommy.
+[SLH1_C0:SALH1]
+~w~Fratello mio!
-[HAM3_F:HAIT3]
-I miei ragazzi sono in guerra con i Cubani.
+[SLH1_C1:SALH1]
+~w~Ehi idiota, dove stai andando?
-[HAM3_G:HAIT3]
-Ma niente pistole.
+[SLH1_C2:SALH1]
+~w~E dove cazzo dovrei sedermi?
-[HAM3_H:HAIT3]
-Hmmm, ma i Cubani hanno una sorpresa in serbo.
+[SLH1_C3:SALH1]
+~w~Hai fatto bene! Non ti conviene andare in giro senza di me.
-[HAM3_I:HAIT3]
-Mentre combattono per la strada, tu prendi questo fucile e li elimini durante la confusione.
+[SLH1_C4:SALH1]
+~w~Meeeeerda! Ce la siamo vista brutta!
-[HAM3_J:HAIT3]
-Nessuno ti vede, nessuno ti sente.
+[SLH1_D0:SALH1]
+~w~Ehi! Quella è la mia macchina!
-[HAM3_K:HAIT3]
-Adesso, Tommy, fai questo per me e non sarai più aggrappato al mio grembiule.
+[SLH1_D1:SALH1]
+~w~Così mi piace di più!
-[HAM3_1:HAIT3]
-~g~Dobbiamo vincere questa battaglia. Se tutti gli Haitiani muoiono, sarà la fine.
+[SLH1_E0:SALH1]
+~w~Ma che cazzo succede?
-[HAM3_3:HAIT3]
-~g~Sospetto che i Cubani bareranno, per cui stai in guardia.
+[SLH1_E1:SALH1]
+~w~Succede che vi stiamo per prendere a calci nelle palle!
-[HAM3_4:HAIT3]
-~r~Ti hanno visto! La missione è fallita!
+[SLH1_X0:SALH1]
+Got threat
-[HAM3_5:HAIT3]
-~g~Devi eliminare i Cubani da lontano. Non devono vederti.
+[SLH1_X1:SALH1]
+Had threat
-[HAM3_8:HAIT3]
-~g~Gli Haitiani stanno morendo! Migliora la tua mira!
+[SLH1_X2:SALH1]
+Find threat
-[HAM3_7:HAIT3]
-~g~Attento! I Cubani hanno chiamato rinforzi. Uccidili tutti quanti!
+[SLH1_F0:SALH1]
+~w~Raccogli gli ~b~Hood~w~ e poi attira l'attenzione dei ~r~Forelli~w~.
-[HAM3_2:HAIT3]
-~r~Gli Haitiani sono morti!
+[RUFJ_01:SALH1]
+Ecco il suo avvocato, signor Leone.
-[HAM3_L:HAIT3]
-Sssì zia...
+[RUFJ_02:SALH1]
+Ehi amico, so chi è...
-{=================================== MISSION TABLE HOTEL ===================================}
+[RUFJ_03:SALH1]
+Coraggio, dammi un attimo di respiro.
-[INTB_A:HOTEL]
-Tommy! Tommy, quanto tempo è passato!
+[RUFJ_04:SALH1]
+Vai ragazzino, corri da mamma e salutamela tanto, 'o capisti?
-[INTB_B:HOTEL]
-Ciao Sonny.
+[RUFJ_05:SALH1]
+Bene... hai cinque minuti di tempo.
-[INTB_C:HOTEL]
-Lo so, lo so, sei sopraffatto dall'emozione.
+[RUFJ_06:SALH1]
+Ehi, uh, Lionel, ti trovo in forma.
-[INTB_D:HOTEL]
-Quindici anni... sembra come se fosse ieri.
+[RUFJ_07:SALH1]
+Guarda me invece!
-[INTB_E:HOTEL]
-Credo dipenda dal punto di vista.
+[RUFJ_08:SALH1]
+Divento un onesto membro della comunità e finisco subito al fresco.
-[INTB_F:HOTEL]
-Ehi, stare dentro per la famiglia non è una passeggiata,
+[RUFJ_09:SALH1]
+Sta mettendo a dura prova la mia natura di filantropo!
-[INTB_G:HOTEL]
-ma la famiglia si preoccupa dei suoi, OK?
+[RUFJ_10:SALH1]
+Naturalmente, signor Leone.
-[INTB_H:HOTEL]
-Allora, raccontami come è andata... Eri in ballo con l'oro bianco?
+[RUFJ_11:SALH1]
+Stiamo facendo tutto il possibile per tirarla fuori di qui e uh...
-[INTB_I:HOTEL]
-Ascolta Sonny, ci avevano incastrato. L'incontro era un'imboscata. Harry e Lee sono morti.
+[RUFJ_12:SALH1]
+farla tornare ad aiutare la comunità il prima possibile.
-[INTB_J:HOTEL]
-Basta con queste storie, Tommy. Hai ancora i soldi, vero?
+[RUFJ_13:SALH1]
+Certo.
-[INTB_K:HOTEL]
-...no Sonny... non ho i soldi.
+[RUFJ_14:SALH1]
+Qualcuno deve pagare per questo oltraggio.
-[INTB_L:HOTEL]
-Quelli erano i miei soldi, Tommy, I MIEI SOLDI!
+[RUFJ_15:SALH1]
+Sono stati quei bastardi dei Sindacco o quei succhiacazzi dei Forelli? Chi è stato?
-[INTB_M:HOTEL]
-Non cercare di fottermi, Tommy, perché sai che non sono una persona a cui piace essere presa per il culo!
+[RUFJ_16:SALH1]
+Chi mi ha fregato?
-[INTB_N:HOTEL]
-Aspetta Sonny.
+[RUFJ_18:SALH1]
+Facciamo il culo a entrambi.
-[INTB_O:HOTEL]
-Hai la mia parola che recupererò i tuoi soldi e la droga.
+[RUFJ_19:SALH1]
+Per come la vedo io, delle sane mazzate vendicheranno questo oltraggio.
-[INTB_P:HOTEL]
-E ti farò avere per posta l'uccello dei responsabili.
+[RUFJ_22:SALH1]
+Grazie Toni, significhi tanto per me, lo sai.
-[INTB_Q:HOTEL]
-Ehi, ne sono certo. Non sei uno stupido, Tommy, ma ti avverto: non lo sono neanch'io.
+[RUFJ_23:SALH1]
+Ascolta, avrai bisogno di un po' di rinforzi.
-[INTB_R:HOTEL]
-Se fosse stato qualcun altro, adesso sarebbe già MORTO.
+[RUFJ_24:SALH1]
+Chiama gli Hood, OK?
-[INTB_S:HOTEL]
-Ma visto che sei tu, che ci conosciamo da tempo, ti permetterò di gestire la situazione.
+[RUFJ_25:SALH1]
+Come preferisce, signor Leone.
-[INTB_T:HOTEL]
-Ehi, Sonny, hai la mia parola.
+[RUFJ_26:SALH1]
+Va bene... adesso vattene... Lionel.
-[INTB_U:HOTEL]
-Mi farò vivo.
+[RUFJ_20:SALH1]
+- Bastardi. ~n~ - Per me sarà un piacere.
-{=================================== MISSION TABLE ICECRE1 ===================================}
+{=================================== MISSION TABLE SALH2 ===================================}
-[ICC1_4:ICECRE1]
-~g~Non ci sono clienti in quest'area, prova in un'altra.
+[SALH2AA:SALH2]
+~w~Ehi Sal! Sono io... Toni.
-[ICC1_5:ICECRE1]
-Transazioni effettuate:
+[SALH2AB:SALH2]
+~w~Toni! Che bello sentirti ragazzo!
-[ICC1_7:ICECRE1]
-~g~Riceverai soldi per ogni transazione, ma più ne esegui, maggiori saranno le probabilità di attirare l'attenzione della polizia.
+[SALH2AC:SALH2]
+~w~Questi cazzoni non mi permettono di vedere nessuno!
-[ICC1_8:ICECRE1]
-~g~Per eseguire una transazione, ~h~parcheggia il camioncino~g~ e premi il ~h~~k~~VEHICLE_HORN~~g~ per suonare il campanello e attrarre i clienti.
+[SALH2AD:SALH2]
+~w~Ascolta, ho un sacco di faccende di cui occuparmi.
-[ICC1_9:ICECRE1]
-~g~Le gang locali non apprezzeranno il tuo lavoro nel loro territorio, per cui aspettati azioni ostili.
+[SALH2AE:SALH2]
+~w~Uccidi Paulie Sindacco. La sua famiglia è finita in questa città.
-[ICC1_10:ICECRE1]
-~g~Hai portato a termine ~1~ transazioni!
+[SALH2AF:SALH2]
+~w~Crede di potersene andare come se non avesse debiti da saldare.
-[ICC1_11:ICECRE1]
-~g~Hai portato a termine ~1~ transazione!
+[SALH2AG:SALH2]
+~w~Sono in galera per colpa di quel bastardo!
-[ICC1_13:ICECRE1]
-~r~Non hai portato a termine nessuna transazione.
+[SALH2AH:SALH2]
+~w~Quel figlio di puttana deve pagare.
-[ICC1_14:ICECRE1]
-BENI FABBRICA DI GELATO ACQUISITI
+[SALH2O1:SALH2]
+~w~Intercetta Paulie Sindacco all'edificio di controllo della ~y~Cochrane Dam.
-[ICC1_15:ICECRE1]
-~g~La fabbrica di gelato d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[SALH2F1:SALH2]
+~r~È scappato! Salvatore non sarà contento!
-[ICC1_16:ICECRE1]
-~g~Utilizza il Mr. Whoopee per distribuire i prodotti Cherry Poppers per Vice City.
+[SALH2CA:SALH2]
+~w~Idioti! Quello è Toni Cipriani! Fatelo fuori!
-[ICE_AT1:ICECRE1]
-FABBRICA DI GELATO COMPLETATA
+[SALH2BA:SALH2]
+~w~Ehi Toni! Perché non nuoti fin qui e mi baci il culo?
-[ICE_AT2:ICECRE1]
-~g~La fabbrica Cherry Popper d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[SALH2BB:SALH2]
+~w~Ehi stronzo, quaggiù!
-[ICC1_17:ICECRE1]
-Missione di distribuzione terminata.
+[SALH2BI:SALH2]
+~w~Porta i miei saluti a Salvatore. Gli spedirò una cartolina!
-[ICC1_18:ICECRE1]
-Vendita totale gelati: ~1~$
+[SALH2BC:SALH2]
+~w~Ehi babbeo, cos'hai intenzione di fare adesso?
-[ICC1_19:ICECRE1]
-Transizioni totali eseguite: ~1~
+[SALH2BE:SALH2]
+~w~Sei carne morta!
-{=================================== MISSION TABLE ICECUT ===================================}
+[SALH2BF:SALH2]
+~w~Sei fottuto!
-[ICC1_A:ICECUT]
-Chi sei?
+[SALH2BG:SALH2]
+~w~Sorpresa, sacco di merda!
-[ICC1_B:ICECUT]
-Il nuovo proprietario.
+[SALH2BH:SALH2]
+~w~Signore e signori, Paulie Sindacco ha lasciato l'edificio!
-[ICC1_C:ICECUT]
-Sei per caso, o lo sei mai stato, un bambino?
+[SALH2BD:SALH2]
+~w~Testa di cazzo, non ce la farai mai a prendermi!
-[ICC1_D:ICECUT]
-Ma di cosa stai parlando?
+[SALH2O2:SALH2]
+~w~Uccidi ~r~Paulie Sindacco~w~. Non farlo fuggire!
-[ICC1_E:ICECUT]
-Sei stato un bambino?
+[SALH2O3:SALH2]
+Recupera un mezzo e tendi un'imboscata a ~r~Paulie~w~ dalla riva.
-[ICC1_F:ICECUT]
-Certo! Calmati! Che ti prende?
+{=================================== MISSION TABLE SALH3 ===================================}
-[ICC1_G:ICECUT]
-Lo sapevo. Un bambino.
+[SALH3_1:SALH3]
+~w~Sal? Come va?
-[ICC1_H:ICECUT]
-Uno sporco, puzzolente, moccioso, lamentoso, vile, vomitevole, piagnucoloso piccolo bambino!
+[SALH3_2:SALH3]
+~w~Fottutamente bene! Da Dio!
-[ICC1_I:ICECUT]
-Un bambino... un mostruoso, orribile disgustoso piccolo bambino. Boo hoo.
+[SALH3_3:SALH3]
+~w~Punto uno. Il nuovo sindaco sta facendo di tutto per impedirmi la libertà provvisoria.
-[ICC1_J:ICECUT]
-La mamma non ti ama, brutto piccolo avanzo!
+[SALH3_4:SALH3]
+~w~Punto due. Siamo in guerra con la stramaledetta Triade e i Diablo.
-[ICC1_K:ICECUT]
-Ow! Accidenti, calmati!
+[SALH3_5:SALH3]
+~w~Punto tre. Ho sentito che la Yakuza vuole approfittarne per conquistare la città.
-[ICC1_L:ICECUT]
-Io ODIO i bambini, odio i poppanti.
+[SALH3_6:SALH3]
+~w~A parte queste piccole sciocchezze, va tutto bene!
-[ICC1_M:ICECUT]
-Sono sporchi, puzzolenti, mocciosi, vomitevoli piccoli...
+[SALH3_7:SALH3]
+~w~Dopo tutti questi anni al potere, siamo stati scaricati come merda nel cesso!
-[ICC1_N:ICECUT]
-Ne ho avuto abbastanza!
+[SALH38:SALH3]
+~w~Capo, posso occuparmi io di tutto quanto.
-[ICC1_O:ICECUT]
-Ma che diavolo hai?
+[SALH39:SALH3]
+~w~La Yakuza ha ricevuto un carico d'armi ad Aspatria.
-[ICC1_P:ICECUT]
-Tu fai gelati, vero? Sono solo per bambini.
+[SALH310:SALH3]
+~w~Adesso niente potrà fermarla.
-[ICC1_Q:ICECUT]
-Ma che psicopatica sei?
+[SALH311:SALH3]
+~w~Vedremo.
-[ICC1_R:ICECUT]
-È così mi sono chiesta: perché fare felici i bambini se li odio?
+[SALH3_A:SALH3]
+~w~Controlla il ~y~covo della Yakuza.
-[ICC1_S:ICECUT]
-Oh, stupidi, schifosi, mocciosi...
+[SALH3C1:SALH3]
+~w~Trova un modo per entrare nel ~y~covo.
-[ICC1_T:ICECUT]
-Sta zitta!
+[SALH3C2:SALH3]
+~w~Ma cazzo! Non ci posso credere!
-[ICC1_U:ICECUT]
-...Monellaccio!
+[SALH3C3:SALH3]
+~w~Distruggi il ~r~carro armato!
-[ICC1_V:ICECUT]
-La gelateria è solo una facciata.
+[SALH3C4:SALH3]
+~w~Ma che cazzo succede?
-[ICC1_W:ICECUT]
-Noi distribuiamo altro, prodotti non caseari.
+[SALH3C5:SALH3]
+~w~Uccidiamolo!
-[ICC1_X:ICECUT]
-E se vedo un bambino, non perdo occasione.
+[SALH3C6:SALH3]
+~w~Il ~r~carro armato ~w~è blindato. Le armi convenzionali gli faranno il solletico a questo mostro!
-[ICC1_Y:ICECUT]
-Non è vero, bambini? Sì, sì, lo faccio. La mamma non vi ama.
+[SALH3G1:SALH3]
+~w~Ehi 'amico', non c'è niente da vedere qui!
-[ICC1_Z:ICECUT]
-Lei vi ODIA!
+[SALH3G2:SALH3]
+~w~Sembra che l'ingresso sia riservato ai soli membri della Yakuza.
-[ICC1_ZA:ICECUT]
-PROPRIETÀ ACQUISTATA!
+[SALH3G3:SALH3]
+~w~Porta le chiappe fuori da lì!
-{=================================== MISSION TABLE INTRO ===================================}
+[SALH3_B:SALH3]
+~w~La macchina della Yakuza li ha ingannati!
-[INT1_A:INTRO]
-Tommy Vercetti... Ommerda!
+[SALH3_C:SALH3]
+~w~Guida fino al ~y~covo~w~ e dai un'occhiata.
-[INT1_B:INTRO]
-Pensavo non lo avrebbero mai rilasciato.
+{=================================== MISSION TABLE SALH4 ===================================}
-[INT1_C:INTRO]
-Ha tenuto la testa bassa... molta gente ha dimenticato.
+[SALH4_1:SALH4]
+~w~Sal?
-[INT1_D:INTRO]
-Ma molti ricorderanno ben presto...
+[SALH4_2:SALH4]
+~w~Anthony! Sto per uscire!
-[INT1_E:INTRO]
-Quando lo vedranno camminare per le strade del loro vicinato.
+[SALH42A:SALH4]
+~w~Oggi c'è il mio ricorso in appello!
-[INT1_F:INTRO]
-Non sarà una cosa positiva per il business.
+[SALH4_3:SALH4]
+~w~Ottimo!
-[INT1_G:INTRO]
-Beh, che cosa facciamo, Sonny?
+[SALH44C:SALH4]
+~w~Certo Toni.
-[INT1_H:INTRO]
-Lo trattiamo come un amico e lo teniamo impegnato fuori città, OK?
+[SALH44E:SALH4]
+~w~Ehi, stanno arrivando le guardie... Ci vediamo sul davanti.
-[INT1_I:INTRO]
-Parlavamo di espanderci verso sud, vero?
+[SALH4_5:SALH4]
+~w~Recupera una macchina della polizia!
-[INT1_J:INTRO]
-Vice City è oro puro in questi giorni.
+[SALH45A:SALH4]
+~w~Hai bisogno di una macchina della polizia o spaventerai il convoglio!
-[INT1_K:INTRO]
-I Colombiani, i Messicani, che diamine,
+[SALH4_6:SALH4]
+~w~Vai a prendere posizione alla ~y~stazione di polizia.
-[INT1_L:INTRO]
-anche i rifugiati Cubani si sono ritagliati una bella fetta della torta.
+[SALH4_7:SALH4]
+~w~Porca puttana!
-[INT1_M:INTRO]
-Ma si tratta di droga, Sonny,
+[SALH4_8:SALH4]
+~w~Proteggi il ~b~furgone cellulare~w~ e fallo arrivare intero a destinazione!
-[INT1_N:INTRO]
-nessuno delle famiglie toccherà quella merda!
+[SALH4_9:SALH4]
+~w~Non allontanarti troppo dal ~b~furgone cellulare!
-[INT1_O:INTRO]
-I tempi cambiano.
+[SALH410:SALH4]
+~w~Stai perdendo il ~b~furgone cellulare!
-[INT1_P:INTRO]
-Le famiglie non possono girare le spalle mentre i nostri nemici si godono il raccolto.
+[SALH411:SALH4]
+~r~Hai perso il furgone cellulare! Sal è stato giustiziato!
-[INT1_Q:INTRO]
-Per cui mandiamo qualcuno a fare il lavoro sporco
+[SALH412:SALH4]
+~r~Il furgone cellulare è stato distrutto!
-[INT1_R:INTRO]
-e a prendere una bella fetta per noi, OK?
+[SALH413:SALH4]
+~w~Non far incazzare i poliziotti, rovinerai i piani di Sal per la libertà provvisoria!
-[INT1_S:INTRO]
-Chi è il nostro contatto laggiù?
+[SALH416:SALH4]
+~w~Scorta il ~b~convoglio~w~ a destinazione.
-[INT1_T:INTRO]
-Ken Rosenberg, uno schmuck di un avvocato.
+[SALH417:SALH4]
+~r~Hai fallito! I poliziotti hanno annullato l'udienza!
-[INT1_U:INTRO]
-Come farà a tenere al guinzaglio Vercetti?
+[SALH420:SALH4]
+~r~Sal è stato ucciso!
-[INT1_V:INTRO]
-Non dovrà farlo.
+[SALH421:SALH4]
+~r~Hai perso il furgone cellulare!
-[INT1_W:INTRO]
-Mandiamolo alla ribalta a Vice City
+[SALH422:SALH4]
+~w~Seminali o attirerai troppa attenzione sul convoglio!
-[INT1_X:INTRO]
-con un po' di denaro per cominciare, OK?
+[SALH424:SALH4]
+~w~Elimina il ~y~posto di blocco!
-[INT1_Y:INTRO]
-Lasciamogli qualche mese.
+[SALH415:SALH4]
+~w~È bello essere di nuovo liberi.
-[INT1_Z:INTRO]
-Poi andiamo giù,
+[SALH418:SALH4]
+~w~Ascolta, voglio fare un salto a casa e cambiarmi questi stracci, va bene?
-[INT1_A1:INTRO]
-gli facciamo visita, giusto?
+[SALH419:SALH4]
+~w~Ci vediamo là.
-[INT1_A2:INTRO]
-E vediamo come se la sta cavando...
+[SALH414:SALH4]
+~w~Posto di blocco illegale segnalato in zona...
-[INT2_A:INTRO]
-Ehi, ehi, amici! Sono, uh, Ken Rosenberg! Eh, eh, ottimo, ehi!
+[SALH44A:SALH4]
+~w~Se io sono qui dentro, chi li fermerà?
-[INT2_B:INTRO]
-Bene, uh, vi accompagno in auto all'appuntamento, OK?
+[SALH4_4:SALH4]
+~w~Sì, ma questi Siciliani non vogliono che arrivi davanti alla corte.
-[INT2_C:INTRO]
-Ho parlato con i fornitori e loro sono molto, ehm,
+[SALH44B:SALH4]
+~w~Ehi, prima dovranno passare sul mio cadavere, Sal.
-[INT2_D:INTRO]
-desiderosi di avviare una relazione commerciale, per cui, uh,
+[SALH44D:SALH4]
+~w~Assicurati che riesca ad arrivare davanti alla corte!
-[INT2_E:INTRO]
-se tutto dovesse andare come deve, noi, dovremmo, uh,
+{=================================== MISSION TABLE SALH5 ===================================}
-[INT2_F:INTRO]
-ottenere dei buoni risultati economici, il che, cioè...
+[SALH51A:SALH5]
+~w~Sbrigati, Toni.
-[INT2_G:INTRO]
-è bene...
+[SALH51B:SALH5]
+~w~Se ho ragione, i Siciliani staranno andando dal sindaco.
-[INT2_H:INTRO]
-OK allora. Sono fratelli, OK.
+[SALH51C:SALH5]
+~w~Dobbiamo arrivare prima di loro.
-[INT2_I:INTRO]
-Uno si occupa del, uh, business,
+[SALH511:SALH5]
+~w~Brutta storia.
-[INT2_J:INTRO]
-mentre l'altro si occupa dei voli.
+[SALH554:SALH5]
+~w~Accelera Toni!
-[INT2_K:INTRO]
-Adesso operano dal Messico,
+[SALH512:SALH5]
+~w~Hai lasciato indietro ~b~Sal~w~. Torna a prenderlo.
-[INT3_A:INTRO]
-OK, sono loro sull'elicottero.
+[SALH513:SALH5]
+~w~Maledizione! Sono già qui!
-[INT3_B:INTRO]
-Bene, questo è l'accordo.
+[SALH560:SALH5]
+~w~Falli fuori Toni!
-[INT3_C:INTRO]
-Vogliono uno scambio diretto in campo aperto.
+[SALH561:SALH5]
+~w~Io mi occuperò del sindaco!
-[INT3_D:INTRO]
-Va bene? OK, nervi saldi, andiamo.
+[SALH514:SALH5]
+~w~Schifosi bastardi, l'hanno già preso!
-[INT3_E:INTRO]
-Vedi di star calmo.
+[SALH555:SALH5]
+~w~Forza Toni! Da questa parte!
-[INT3_F:INTRO]
-Resto qui con l'auto pronta a partire!
+[SALH515:SALH5]
+~w~Eccoli!
-[INT3_G:INTRO]
-Chiaro?
+[SALH517:SALH5]
+~w~Da dove arrivano quei bastardi?
-[INT3_H:INTRO]
-Colombiana 100% pura di prima classe, amici miei.
+[SALH556:SALH5]
+~w~Dietro di noi Toni!
-[INT3_I:INTRO]
-I verdoni?
+[SALH562:SALH5]
+~w~Toni, davanti!
-[INT3_J:INTRO]
-Da dieci e da venti... usati.
+[SALH519:SALH5]
+~w~Toni! Elimina l'elicottero!
-[INT3_L:INTRO]
-Forza, vieni qua! Muoviti!
+[SALH522:SALH5]
+~w~Pensano di potersi nascondere intorno al faro!
-[INTRO1:INTRO]
-metto fuori la testa per un maledetto secondo, e il fato mi tira palate di merda in faccia!
+[SALH557:SALH5]
+~w~Fai fuori quei bastardi!
-[INTRO2:INTRO]
-Vai a riposarti.
+[SALH558:SALH5]
+~w~Bel colpo Toni!
-[INTRO3:INTRO]
-Che cosa intendi fare?
+[SALH559:SALH5]
+~w~Facciamola finita.
-[INTRO4:INTRO]
-Passerò domani a trovarti in ufficio e troveremo un modo per risolvere questo casino.
+[SALH526:SALH5]
+~w~Io guido, tu coprici.
-[INT3_K:INTRO]
-Siamo d'accordo allora, amico. AH AH!
+[SALH527:SALH5]
+~w~OK Toni... eccoci qui.
-[INT3_M:INTRO]
-Fammi dare un'occhiata.
+[SALH528:SALH5]
+~w~Quanti bastardi ci sono su questo scoglio?
-[INT2_L:INTRO]
-no, no, no, aspetta...
+[SALH553:SALH5]
+~w~Spari a un bastardo e ne arriva subito un altro che ti morde il culo!
-{=================================== MISSION TABLE KENT1 ===================================}
+[SALH523:SALH5]
+~r~Hai fatto uccidere Salvatore dai Siciliani!
-[KPM1_A:KENT1]
-Ehi bello, ho delle informazioni sul tuo amico.
+[SALH524:SALH5]
+~r~Salvatore è stato ucciso!
-[KPM1_B:KENT1]
-Ma di cosa stai parlando?
+[SALH552:SALH5]
+~r~Il sindaco è stato ucciso!
-[KPM1_C:KENT1]
-Conosci quel fallito di Diaz, il signore degli spacciatori?
+[SALH573:SALH5]
+~r~Hai distrutto la tua barca! Li hai persi!
-[KPM1_D:KENT1]
-Ha preso il tuo amico, Lance. Sembra che abbia cercato di scavalcarlo...
+[SALH516:SALH5]
+<NOT USED>~w~Take out the guards and then let's get after them in that boat!
-[KPM1_E:KENT1]
-ma non ha saltato abbastanza in alto, se capisci cosa intendo.
+[SALH518:SALH5]
+<NOT USED>~w~Another ~r~boat~w~ incoming...
-[KPM1_F:KENT1]
-Dove lo hanno portato? Senza giri di parole!
+[SALH525:SALH5]
+<NOT USED>~w~Ha! They've left a rocket launcher on this thing!
-[KPM1_G:KENT1]
-Stai calmo! Lo hanno trasportato attraverso la città fino alla discarica.
+[SALH520:SALH5]
+<NOT USED>~y~I'll move closer to shore so we're more protected... Take it down!
-[KPM1_H:KENT1]
-Maledizione... Brutto idiota.
+[SALH521:SALH5]
+<NOT USED>~w~Good work! Let's move out!
-[KPM1_2:KENT1]
-~r~Dovevi portare Lance fuori vivo da lì!
+[SALH53A:SALH5]
+~w~Torini... torna tutto.
-[KPM1_3:KENT1]
-SALUTE DI LANCE:
+[SALH53B:SALH5]
+~w~Lascialo andare!
-[RESC_1:KENT1]
-Ce la fai a usare un'arma?
+[SALH53C:SALH5]
+~w~Il sindaco è mio!
-[RESC_2:KENT1]
-Certo... credo... È bello rivederti!
+[SALH53D:SALH5]
+~w~QUESTA CITTÀ è mia!
-[RESC_3:KENT1]
-Andiamocene da qua.
+[SALH53E:SALH5]
+~w~Salvatore...
-[RESC_4:KENT1]
-Bene, con questo hai mandato a puttane tutti i miei bei piani. L'hai proprio fatta grossa, Lance.
+[SALH53F:SALH5]
+~w~La Sicilia non ha mai voluto questo schifo di città.
-[RESC_5:KENT1]
-Ha ucciso mio fratello. Che cosa ti aspettavi facessi, che gli tagliassi il prato?
+[SALH53G:SALH5]
+~w~Ma finiti i contributi, cos'altro potevamo fare?
-[RESC_6:KENT1]
-Dobbiamo far fuori quello stronzo di Diaz prima che sia lui a farlo.
+[SALH53H:SALH5]
+~w~Niente di personale.
-[RESC_7:KENT1]
-Preparati e incontriamoci al ponte di Star Island, OK?
+[SALH53I:SALH5]
+~w~Niente di personale?
-[RESC_8:KENT1]
-OK, ricevuto.
+[SALH53J:SALH5]
+~w~Dopo quello che mi avete fatto passare!
-[KPM1_1:KENT1]
-~g~Lance viene tenuto nella discarica: vai a salvarlo!
+[SALH53K:SALH5]
+~w~Ti strapperò il cuore!
-[KPM1_4:KENT1]
-~g~Porta Lance all'ospedale!
+[SALH5TD:SALH5]
+~w~Abbatti l'~r~elicottero di Massimo!
-[M_PASSN:KENT1]
-MISSIONE COMPLETATA!
+[SALH5MO:SALH5]
+~r~Massimo~w~ si sta muovendo!
-[KPM1_5:KENT1]
-~g~Gli uomini di Diaz ti stanno dietro: porta Lance all'ospedale.
+[SALH5GO:SALH5]
+~r~Massimo è scappato!
-{=================================== MISSION TABLE KICKSTT ===================================}
+[SALH571:SALH5]
+~w~Raggiungi il ~y~molo.
-[KICK1_2:KICKSTT]
-~r~Non sei tornato abbastanza velocemente alla tua moto!
+[SALH570:SALH5]
+~w~Fai fuori quei ~r~criminali Siciliani!
-[KICK1_7:KICKSTT]
-~r~Hai distrutto la moto!
+[SALH572:SALH5]
+~w~Elimina l'~r~informatore Siciliano!
-[KICK1_8:KICKSTT]
-~g~Ritorna sulla moto!
+[SALH510:SALH5]
+~w~Raggiungi il ~y~municipio~w~. Fai attenzione ai criminali Siciliani!
-[KICK1_T:KICKSTT]
-TEMPO IMPIEGATO:
+[SICI_01:SALH5]
+No, ti richiamo dopo...
-[KICKTM:KICKSTT]
-~b~DURATA EVENTO: ~1~:~1~
+[SICI_04:SALH5]
+Ehi, siamo tornati entrambi. Tu ed io!
-[KICKTM2:KICKSTT]
-~b~DURATA EVENTO: ~1~:0~1~
+[SICI_05:SALH5]
+Ce l'abbiamo fatta, eh?
-[GETBIKE:KICKSTT]
-~g~Hai ~1~ secondi per tornare sulla tua moto prima che la missione abbia termine.
+[SICI_06:SALH5]
+Certamente.
-[KICK1_1:KICKSTT]
-~g~Completa il tracciato il più velocemente possibile.
+[SICI_07:SALH5]
+Abbiamo sistemato i Forelli...
-[KICK1_6:KICKSTT]
-~g~Complimenti!
+[SICI_08:SALH5]
+e spedito i Sindacco in fondo al fottuto oceano.
-[KICK_10:KICKSTT]
-~g~Usa il Sanchez per completare il percorso passando per tutti i punti di controllo.
+[SICI_09:SALH5]
+Adesso sono al telefono con i Siciliani, vogliono la pace.
-[KICK_12:KICKSTT]
-~g~Ti sei bloccato!
+[SICI_10:SALH5]
+Tutti vogliamo la pace! Ma a modo mio, non a modo loro.
-[KICK_13:KICKSTT]
-~g~Ci hai messo troppo tempo!
+[SICI_11:SALH5]
+Adesso comando io il gioco.
-[KICK_11:KICKSTT]
-~g~Per abbandonare la missione, posizionati a piedi sul ~q~segnalino rosa~g~.
+[SICI_12:SALH5]
+Nessun coglione del vecchio continente mi dirà più cosa devo fare.
-{=================================== MISSION TABLE LAWYER1 ===================================}
+[SICI_13:SALH5]
+Ho detto loro di andare a farsi fottere.
-[LAW1_A:LAWYER1]
-Vai a riposarti un po', ha detto...
+[SICI_14:SALH5]
+Davvero? Crede sia stato saggio?
-[LAW1_B:LAWYER1]
-...ho passato tutta la sera su questa seggiola a bere caffè con la luce spenta.
+[SICI_15:SALH5]
+Ehi, adesso sono il capo! IO!
-[LAW1_C:LAWYER1]
-È un disastro. Siamo veramente fottuti, amico!
+[SICI_16:SALH5]
+Andiamo a fare una visitina al sindaco a proposito delle accuse a mio carico...
-[LAW1_D:LAWYER1]
-Quei gorilla, non sto scherzando, verranno qui da me e mi staccheranno la testa. È ridicolo!
+[FIN1_01:SALH5]
+Ehi, signor sindaco!
-[LAW1_E:LAWYER1]
-NON mi sono laureato in giurisprudenza per questo! Bene, dimmi un po': che cosa hai intenzione di fare?
+[FIN1_03:SALH5]
+Certo, grazie.
-[LAW1_F:LAWYER1]
-Sta zitto, siediti e rilassati. Ti dirò che cosa faremo.
+[FIN1_04:SALH5]
+E ciò vuol dire...
-[LAW1_G:LAWYER1]
-Tu dovrai scoprire chi ha preso la nostra cocaina... e io li farò fuori.
+[FIN1_05:SALH5]
+Uh... che la città vi è grata?
-[LAW1_H:LAWYER1]
-È una buona idea. Anzi, è un'OTTIMA idea. Fammici pensare, fammici pensare, fammici pensare.
+[FIN1_06:SALH5]
+Riprova.
-[LAW1_I:LAWYER1]
-Ah! C'è quel Colonnello in pensione, il Colonnello Juan Garcia Cortez.
+[FIN1_07:SALH5]
+Che lavora per me, giusto?
-[LAW1_J:LAWYER1]
-È stato lui che mi ha aiutato a preparare il piano
+[FIN1_08:SALH5]
+Certamente, lavoro per lei.
-[LAW1_K:LAWYER1]
-ben lontano dai criminali di Vice City. OK?
+[FIN1_09:SALH5]
+Bene, non ci richiami. Ci faremo vivi noi.
-[LAW1_L:LAWYER1]
-Adesso ascolta: sta organizzando un party nella baia sul suo costoso yacht
+[FIN1_10:SALH5]
+E adesso fuori dalle palle.
-[LAW1_M:LAWYER1]
-e tutte le personalità di spicco di Vice City saranno presenti.
+[FIN1_11:SALH5]
+Grazie, signor Leone.
-[LAW1_N:LAWYER1]
-Io ho un invito, chiaramente ne ho uno...
+[FIN1_12:SALH5]
+Toni, ce l'abbiamo fatta: siamo noi al comando. Tu ed io.
-[LAW1_O:LAWYER1]
-ma non ho la minima intenzione di mettere la testa fuori dalla porta, per nessun motivo!
+[FIN1_13:SALH5]
+Siamo una bella squadra, vero?
-[LAW1_P:LAWYER1]
-Te l'ho detto, sta zitto! Ci andrò io...
+[FIN1_14:SALH5]
+Ora ho bisogno che tu faccia ancora una cosetta per me:
-[LAW1_Q:LAWYER1]
-Whoa, whoa, whoa! Ehi, anche a me piace lo stile del 78, ma, lo sai, non si tratta di una festa con birra e spogliarelliste.
+[FIN1_15:SALH5]
+ho alcuni problemi da risolvere...
-[LAW1_R:LAWYER1]
-Intendo dire, senza offesa, che molta gente potrebbe girarsi a guardarti per la ragione sbagliata...
+[FIN2_01:SALH5]
+Ehi Zio! Come va?
-[LAW1_S:LAWYER1]
-Vuoi dire che c'è qualcosa che non va in come mi vesto?
+[FIN2_02:SALH5]
+Mi sembri in forma.
-[LAW1_T:LAWYER1]
-OK, ascolta. Fermati da Rafael's, digli che ti mando io e lui si occuperà di renderti presentabile.
+[FIN2_03:SALH5]
+Ahhhh Salvatore, volevamo solamente fare chiarezza.
-[LAW1_U:LAWYER1]
-OK, forza, andiamo...
+[FIN2_04:SALH5]
+Sì Zio, lo apprezzo davvero.
-[LAWP_1:LAWYER1]
-Buenas noches.
+[FIN2_07:SALH5]
+Bene, molto bene.
-[LAWP_2:LAWYER1]
-Da quanto ho capito, è qui per conto di Mr. Rosenberg.
+[FIN2_08:SALH5]
+Piccolo schifoso bastardo.
-[LAWP_3:LAWYER1]
-Spero che gli avvenimenti recenti non abbiano avuto effetti sulla sua salute o, uh,
+[FIN2_09:SALH5]
+Non mi fiderei mai di uno stronzo come lui.
-[LAWP_4:LAWYER1]
-sulla sua sanità mentale, Mr...?
+[FIN2_23:SALH5]
+Giorno di gloria per i cani rognosi...
-[LAWP_5:LAWYER1]
-Vercetti. Ha solo avuto un attacco di... agorafobia.
+[FIN2_10:SALH5]
+Sì, ma ce l’abbiamo fatta.
-[LAWP_6:LAWYER1]
-Eccellente, eccellente. E lei?
+[FIN2_11:SALH5]
+Sì, abbiamo fatto pulizia, sei stato in gamba Toni, sei stato davvero in gamba.
-[LAWP_7:LAWYER1]
-Voglio solo la mia merce.
+[FIN2_12:SALH5]
+Ho sempre saputo che sei un bravo ragazzo, mi hai salvato il culo un po' di volte.
-[LAWP_8:LAWYER1]
-Ah. Si è trattato di sfortunate circostanze per tutte le persone coinvolte.
+[FIN2_13:SALH5]
+E io apprezzo questo tipo di lealtà.
-[LAWP_9:LAWYER1]
-Chiaramente, ho dato il via a delle ricerche personali
+[FIN2_14:SALH5]
+Grazie.
-[LAWP_10:LAWYER1]
-ma una situazione così delicata richiede tempo.
+[FIN2_15:SALH5]
+Un gran lavoratore, mi piace. Merita rispetto.
-[LAWP_11:LAWYER1]
-Magari ne parleremo più tardi, va bene?
+[FIN2_19:SALH5]
+Vuoi dare un prezzo all'amicizia?
-[LAWP_12:LAWYER1]
-Nel frattempo, le presento mia figlia,
+[FIN2_20:SALH5]
+Il tipo di amicizia che abbiamo tra noi?
-[LAWP_13:LAWYER1]
-Mercedes!
+[FIN2_21:SALH5]
+Vergogna! Vieni qui.
-[LAWP_14:LAWYER1]
-Cara mia, perché non ti prendi cura del nostro ospite mentre io mi occupo delle mie cose?
+[FIN2_22:SALH5]
+Sei un bravo ragazzo, ma vergognati.
-[LAWP_15:LAWYER1]
-Certamente, papà.
+[SICI_02:SALH5]
+- Ehi Toni! ~n~ - Sal! Finalmente è tornato al suo posto.
-[LAWP_16:LAWYER1]
-Mi scusi.
+[FIN2_05:SALH5]
+- Quindi siamo in pace ora, tu e il vecchio continente? ~n~ - Certamente. Io e tutta la mia gente.
-[LAWP_17:LAWYER1]
-Mercedes?
+[FIN2_16:SALH5]
+- Perciò ti ho portato quel mezzo milione promesso. ~n~ - Mezzo? Ma come, pensavo avesse detto un paio...
-[LAWP_18:LAWYER1]
-Non è facile portare questo nome.
+[FIN2_18:SALH5]
+Ho detto un milione di dollari! Ma come...
-[LAWP_19:LAWYER1]
-Comunque, lasci che le presenti alcuni dei nostri distinti ospiti...
+[FIN1_02:SALH5]
+Le abbiamo appena salvato la vita da un branco di Siciliani impazziti.
-[LAWP_20:LAWYER1]
-Lui è Alex Shrub, il nostro deputato, con Candy Suxxx, la famosa star siliconata...
+{=================================== MISSION TABLE DONH1 ===================================}
-[LAWP_21:LAWYER1]
-Avete conosciuto la mia dolce moglie, Laura?
+[DONH1JA:DONH1]
+~w~Toni, il mio vecchio mentore, Avery Carrington, arriverà oggi in città...
-[LAWP_22:LAWYER1]
-Veramente questa è Candy, mia moglie si trova in Alabama ora.
+[DONH1JB:DONH1]
+~w~Ho scoperto che sta lavorando per la Panlantic Corporation.
-[LAWP_23:LAWYER1]
-E da quella parte abbiamo la stella dei Vice City Mambas, BJ.
+[DONH1JC:DONH1]
+~w~Farebbero qualsiasi cosa per appropriarsi di alcuni immobili.
-[LAWP_24:LAWYER1]
-un vero ammaliatore
+[DONH1JD:DONH1]
+~w~DOBBIAMO recuperare i suoi progetti per acquisire le zone giuste.
-[LAWP_25:LAWYER1]
-L'ho placcato, davvero, e l'ho fatto finire su una sedia a rotelle!
+[DONH1JE:DONH1]
+~w~Coraggio Toni! Stagli dietro!
-[LAWP_26:LAWYER1]
-Ah, ah, questa è buona!
+[DONH1CA:DONH1]
+~w~Uh Toni, se recuperassi un veicolo mi faresti un favore.
-[LAWP_27:LAWYER1]
-Beh, adesso sto cercando di acquistare dei terreni di qualità.
+[DONH1DA:DONH1]
+~w~All'aeroporto, Toni.
-[LAWP_28:LAWYER1]
-E quella specie di anfibio da piscina è Jezz Torrent,
+[DONH1DB:DONH1]
+~w~Non abbiamo tempo da perdere
-[LAWP_29:LAWYER1]
-voce solista dei Love Fist.
+[DONH1EA:DONH1]
+~w~Oh sì, questo è uno dei miei piani migliori...
-[LAWP_30:LAWYER1]
-Ve lo posso dire... sapete come giocano a ping-pong in Tailandia?
+[DONH1EB:DONH1]
+~w~Non credevo di essere così in gamba...
-[LAWP_31:LAWYER1]
-Da non crederci...
+[DONH1EC:DONH1]
+~w~Con questo, guadagnerò una fortuna...
-[LAWP_32:LAWYER1]
-di certo, non richiede l'uso della racchetta, se capite cosa intendo!
+[DONH1ED:DONH1]
+~w~Sissignore, una fortuna...
-[LAWP_33:LAWYER1]
-Impotente.
+[DONH1EE:DONH1]
+~w~Persino Avery sarebbe orgoglioso di me.
-[LAWP_34:LAWYER1]
-E il loquace trio.
+[DONH1GA:DONH1]
+~w~Eccolo!
-[LAWP_35:LAWYER1]
-Quella pustola sudata e addormentata è il braccio destro di papà, Gonzalez,
+[DONH1GB:DONH1]
+~w~Uccidilo Toni!
-[LAWP_36:LAWYER1]
-mentre gli altri due sono il pastore Richards
+[DONH1GC:DONH1]
+~w~Ho bisogno di quei progetti!
-[LAWP_37:LAWYER1]
-e il regista pseudo-intellettuale, Steve Scott.
+[DONH1HA:DONH1]
+~w~Coraggio Toni! Sta scappando!
-[LAWP_38:LAWYER1]
-...pare che abbiano una passione per le ninfomani...
+[DONH1IA:DONH1]
+~w~Toni, sei stato grandioso!
-[LAWP_39:LAWYER1]
-...quando lo squalo gigante arriva e
+[DONH1IB:DONH1]
+~w~E ora torniamo alla mia dimora per stare al sicuro...
-[LAWP_40:LAWYER1]
-strappa a morsi i loro uccelli!
+[DONH1O0:DONH1]
+~w~Porta Donald Love all'~y~aeroporto.
-[LAWP_41:LAWYER1]
-Ah! Non si è mai visto qualcosa del genere prima, vero?
+[DONH1O1:DONH1]
+~w~Uccidi ~r~Avery Carrington~w~ e recupera i suoi progetti!
-[LAWP_42:LAWYER1]
-Colonnello!
+[DONH1O2:DONH1]
+~r~Avery~w~ sta fuggendo! Fermalo!
-[LAWP_43:LAWYER1]
-I suoi party sono sempre un successo! Ah ah ah!
+[DONH1O3:DONH1]
+~r~Avery~w~ è salito su un altro veicolo. Non lasciarlo fuggire!
-[LAWP_44:LAWYER1]
-Posso solo chiedere scusa per il mio ritardo.
+[DONH1O4:DONH1]
+~r~Avery~w~ sta scappando! Prendilo!
-[LAWP_45:LAWYER1]
-Ah, de nada amigo. E come vanno gli affari?
+[DONH1O5:DONH1]
+~w~Vai a prendere ~b~Donald Love.
-[LAWP_46:LAWYER1]
-Sai, sono molto difficili...i nemici sono sempre alle costole.
+[DONH1O6:DONH1]
+~w~Ottimo lavoro! Recupera i ~g~progetti.
-[LAWP_47:LAWYER1]
-Il tempo di ricompensare gli amici e liquidare i nemici, amigo.
+[DONH1O7:DONH1]
+~w~Porta Donald e i progetti al ~y~centro d'accoglienza.
-[LAWP_48:LAWYER1]
-Chi è il chiacchierone?
+[DONH1O8:DONH1]
+~w~Hai perso i ~g~progetti~w~! Torna indietro a prenderli.
-[LAWP_49:LAWYER1]
-Ricardo Diaz. È Mr. Coca.
+[DONH1OA:DONH1]
+~w~Ti sono addosso! ~r~Avery~w~ sta fuggendo! Uccidilo!
-[LAWP_50:LAWYER1]
-Mercedes!
+[DONH1OB:DONH1]
+~w~Hai bisogno di un veicolo.
-[LAWP_51:LAWYER1]
-Oh, stavo giusto riaccompagnando i miei amici in città.
+[DONH1OC:DONH1]
+~w~Non lasciare indietro ~b~Donald!
-[LAWP_52:LAWYER1]
-Un'altra volta, Ricardo!
+[DONH1OD:DONH1]
+~w~Attento! I progetti andranno perduti se la ~r~macchina di Avery~w~ verrà distrutta con lui a bordo!
-[LAWP_53:LAWYER1]
-Andiamocene.
+[DONH1OE:DONH1]
+~r~Avery Carrington~w~ sta fuggendo. Inseguilo!
-[LAWP_54:LAWYER1]
-Anzi, portatemi al club Pole Position.
+[DONH1F0:DONH1]
+~r~I progetti sono stati distrutti!
-[LAW1_2:LAWYER1]
-~g~Raggiungi lo yacht del Colonnello.
+[DONH1F1:DONH1]
+~r~Avery Carrington è fuggito!
-[LAW1_4:LAWYER1]
-~r~Hai ucciso la figlia del Colonnello!
+[DONH1F2:DONH1]
+~r~Donald è stato ucciso!
-[LAW1_5:LAWYER1]
-Lavorerai per mio padre?
+[DONH1OF:DONH1]
+~r~Avery Carrington~w~ è quasi giunto a destinazione. Fermalo!
-[LAW1_6:LAWYER1]
-Forse.
+[DONH1O9:DONH1]
+~w~Non lasciare indietro ~b~Donald~w~! Quei Colombiani lo uccideranno!
-[LAW1_7:LAWYER1]
-Ti dispiace se appoggio la mano tra le tue gambe?
+[DONH1FA:DONH1]
+~w~Hmmm, la Panlantic deve aver assunto il Cartello per proteggere Avery.
-[LAW1_8:LAWYER1]
-Forse...
+[LAND_01:DONH1]
+So a cosa stai pensando Toni: la caduta dei potenti,
-[LAW1_9:LAWYER1]
-È così difficile avere un padre ricco e potente. Vamos.
+[LAND_02:DONH1]
+ma è solo una pausa temporanea, amico mio.
-[LAW1_10:LAWYER1]
-Ci vediamo in giro, stallone!
+[LAND_03:DONH1]
+OK.
-[LAW1_11:LAWYER1]
-Sono sicuro di sì.
+[LAND_04:DONH1]
+Oh, non fare il permaloso.
-[LAW1_12:LAWYER1]
-Hmmm... bella moto.
+[LAND_05:DONH1]
+So che ho detto delle brutte cose sul fatto che fosse colpa tua e tutto il resto,
-[LAW1_13:LAWYER1]
-No! La mia moto!
+[LAND_06:DONH1]
+ma l'arroganza è una brutta bestia, almeno quanto le termiti.
-[LAW1_3:LAWYER1]
-~g~Porta la figlia del Colonnello al club Pole Position.
+[LAND_07:DONH1]
+E credimi, ultimamente convivo con entrambi.
-[HELP20:LAWYER1]
-Segui il ~h~segnale a forma di maglietta~w~ per trovare Rafael's.
+[LAND_08:DONH1]
+Adesso, tu e io... stiamo tornando!
-[LAW1_14:LAWYER1]
-Accidenti, mi piace: la tua moto va alla grande.
+[LAND_09:DONH1]
+Io non me ne sono mai andato...
-[LAW1_15:LAWYER1]
-Eh sì, l'ho appena presa da Howlin' Pete's.
+[LAND_10:DONH1]
+Siamo in questa storia insieme, amigo.
-{=================================== MISSION TABLE LAWYER2 ===================================}
+[LAND_11:DONH1]
+No, non lo siamo.
-[LAW2_A:LAWYER2]
-Ah! Beh, spero tu ti sia divertito. Io stavo quasi per impazzire dalla preoccupazione. Che cos'hai scoperto?
+[LAND_12:DONH1]
+Ti prego!
-[LAW2_B:LAWYER2]
-Che ci sono più criminali a piede libero in città che nella prigione. Abbiamo bisogno di qualcuno di strada...
+[LAND_13:DONH1]
+Ti prego... ti prego... scordatelo, amico.
-[LAW2_C:LAWYER2]
-OK, fammici pensare, fammici pensare, fammici pensare...
+[LAND_18:DONH1]
+Andiamo, te ne parlerò in macchina.
-[LAW2_D:LAWYER2]
-Ah! Trovato!
+[LAND_19:DONH1]
+Spero tu abbia una macchina, la mia è... ehm... dal meccanico!
-[LAW2_E:LAWYER2]
-OK, c'è questo inglese, un tizio legato al campo della musica,
+[LAND_16:DONH1]
+- 10% di cosa? Di questo cesso? Oh, sei troppo gentile. ~n~ - No... di una torta più grossa.
-[LAW2_F:LAWYER2]
-mi sembra si chiami Kent Paul.
+[LAND_14:DONH1]
+- 'È tutta colpa tua'. Patetico. ~n~ - 10%?
-[LAW2_G:LAWYER2]
-Comunque, ha ficcato il naso nelle chiappe di metà della gente di Vice City
+{=================================== MISSION TABLE DONH2 ===================================}
-[LAW2_H:LAWYER2]
-per cui, se qualcuno sa dove sono questi 20 chili di coca,
+[DONH2_1:DONH2]
+~w~Vai alla ~y~chiesa~w~ di Staunton Island.
-[LAW2_I:LAWYER2]
-è sicuramente lui, chiaro? È sempre al Malibu.
+[DONH2_2:DONH2]
+~w~Picchia il ~r~reporter ~w~oppure minaccialo con una pistola per farti dare le foto.
-[LAW2_J:LAWYER2]
-Andrò a trovarlo.
+[DONH2_3:DONH2]
+~w~Hai delle foto per me. Dove sono?
-[LAW2B_A:LAWYER2]
-Ehi, da dove sbuchi?
+[DONH2_4:DONH2]
+~w~Non farmi del male!
-[LAW2B_B:LAWYER2]
-Ho cercato per anni un fiorellino come te, bellezza...
+[DONH2_5:DONH2]
+~w~Dove sono quelle cazzo di foto?
-[LAW2B_C:LAWYER2]
-Kent Paul, tesoro. Sì, sono il capo da queste parti.
+[DONH2_6:DONH2]
+~w~Non so di cosa tu stia parlando!
-[LAW2B_D:LAWYER2]
-Sto cercando un tipo inglese...
+[DONH2_7:DONH2]
+~w~Dove sono?
-[LAW2B_E:LAWYER2]
-Risolvo i problemi, capisci cosa intendo?
+[DONH2_8:DONH2]
+~w~Ti prego, no!
-[LAW2B_F:LAWYER2]
-Ti tratterò bene: qualsiasi cosa tu voglia, te la farò avere, cara.
+[DONH2_9:DONH2]
+~w~Avanti fighetta! Dammele!
-[LAW2B_G:LAWYER2]
-Non preoccuparti di niente, bellezza.
+[DONH210:DONH2]
+~w~OK! OK!
-[LAW2B_H:LAWYER2]
-Vattene, tesoro.
+[DONH2EX:DONH2]
+~w~Ti dirò dove sono le foto!
-[LAW2B_I:LAWYER2]
-Oi oi oi oi oi!
+[DONH211:DONH2]
+~w~...sono nel mio garage!
-[LAW2B_J:LAWYER2]
-Sei Kent Paul? Sono un amico di Rosenberg...
+[DONH212:DONH2]
+~w~Vai al ~y~garage del reporter.
-[LAW2B_K:LAWYER2]
-Rosenberg... Rosenberg... Oh, l'avvocato matto!
+[DONH213:DONH2]
+~w~Aiuto! Aiuto! Mi stanno rapendo!
-[LAW2B_L:LAWYER2]
-Quel tipo potrebbe difendere un innocente fino alla sedia elettrica!
+[DONH214:DONH2]
+~w~Aiuto! Vuole uccidermi!
-[LAW2B_M:LAWYER2]
-Dacci un altro drink, amico.
+[DONH215:DONH2]
+~w~...Sono troppo intelligente per morire!
-[LAW2B_N:LAWYER2]
-Un altro comico.
+[DONH216:DONH2]
+~w~...Non posso morire, sto ancora lavorando sul mio romanzo!
-[LAW2B_O:LAWYER2]
-Ascoltami: mi hanno soffiato venti chili e un sacco di contanti...
+[DONH217:DONH2]
+~w~Il mio editore non ha mai avvertito di questi problemi!
-[LAW2B_P:LAWYER2]
-Droga amico? È roba da delinquenti.
+[DONH218:DONH2]
+~w~Non muovere un dito, faccia da culo!
-[LAW2B_Q:LAWYER2]
-Che cosa ne sai?
+[DONH219:DONH2]
+~w~Fermati, testa di cazzo!
-[LAW2B_R:LAWYER2]
-Oi oi! Ciò che volevo dire è
+[DONH220:DONH2]
+~w~Cazzo, smettila di tentare di scappare!
-[LAW2B_S:LAWYER2]
-che c'è uno chef che spaccia sottobanco nella cucina di un hotel su Ocean Drive.
+[DONH221:DONH2]
+~w~Toni! Finalmente!
-[LAW2B_T:LAWYER2]
-Recentemente, mi è sembrato molto felice di come gli buttava... Potresti passare a trovarlo e investigare...
+[DONH222:DONH2]
+~w~Un giornalista ci ha visti mentre uccidevamo Avery!
-[LAW2B_U:LAWYER2]
-Lo farò... ci becchiamo in giro.
+[DONH223:DONH2]
+~w~Ha delle foto! Oddio! Sono finito!
-[LAW2B_V:LAWYER2]
-Beh, sì certo! Vai, vai pure idiota. Ci penserò io a tenerti a bada!
+[DONH224:DONH2]
+~w~Datti una calmata! Dov'è il reporter?
-[LAW2B_W:LAWYER2]
-Dammi un bicchiere... e dov'è finita quella sgualdrina?
+[DONH225:DONH2]
+~w~Oh, Toni, sei un uomo meraviglioso!
-[LAW2C_A:LAWYER2]
-Oh, ottimo lavoro, sei proprio un duro. Riducilo in poltiglia, questo sicuramente lo aiuterà a diventare più loquace!
+[DONH226:DONH2]
+~w~Apparentemente sembra lavori sotto copertura in una chiesa di Staunton Island.
-[LAW2C_B:LAWYER2]
-Ne vuoi anche tu?
+[DONH227:DONH2]
+~w~Recupera le foto e mandalo al Creatore!
-[LAW2C_C:LAWYER2]
-Ehi, calma. Quel che va bene a te, va bene a me, amico.
+[DONH228:DONH2]
+~r~Ned è scappato!
-[LAW2C_D:LAWYER2]
-Ah sì? E di cosa si tratta?
+[DONH230:DONH2]
+~w~Uccidi ~r~Ned Burner.
-[LAW2C_E:LAWYER2]
-I verdoni... e l'amica bianca del mio povero fratello. Sfortunatamente, hai appena fatto fuori il nostro contatto.
+[DONH231:DONH2]
+~r~Ned è morto prima che tu potessi recuperare le foto!
-[LAW2C_F:LAWYER2]
-Gli incidenti capitano. Scompari.
+[DONH229:DONH2]
+STRONZATE!
-[LAW2C_G:LAWYER2]
-Ehi, ehi, whoa. Non c'è bisogno di recitare la parte del 'Giustiziere solitario'.
+[DONCUTA:DONH2]
+~w~Eccole... prendile! Non le ho ancora sviluppate!
-[LAW2C_H:LAWYER2]
-Io la vedo così: siamo due hombres in una strana città. Dobbiamo guardarci a vicenda le spalle.
+[DONCUTB:DONH2]
+~w~Sei un pezzo di merda!
-[LAW2C_I:LAWYER2]
-Le mie spalle stanno benissimo, fratello...
+[DONH2SM:DONH2]
+Terrore
-[LAW2C_J:LAWYER2]
-Ne sei sicuro? Ehi, prendi questa.
+[DONH233:DONH2]
+Continua a intimidire il reporter: se il suo indicatore di terrore scenderà troppo, potrebbe tentare di scappare.
-[LAW2C_K:LAWYER2]
-Seguimi!
+[DONH2LB:DONH2]
+~w~Hai lasciato indietro il ~b~reporter~w~, torna a prenderlo.
-[LAW2_1:LAWYER2]
-Che cos'hai da guardare?
+[DONH2LC:DONH2]
+~r~Hai abbandonato il reporter.
-[LAW2_2:LAWYER2]
-Ti conviene iniziare a parlare...
+{=================================== MISSION TABLE DONH3 ===================================}
-[LAW2_3:LAWYER2]
-Maledetto stronzo!
+[DONH3I1:DONH3]
+~w~Sono tornato!
-[LAW2_4:LAWYER2]
-Da questa parte!
+[DONH3I2:DONH3]
+~w~Resuscitato, Toni! Rinato, come la fenice che risorge dalle sue ceneri.
-[LAW2_5:LAWYER2]
-Vediamo cosa riesco a scoprire. Ci vediamo, Tommy.
+[DONH3I3:DONH3]
+~w~Come Lazzaro... sì... Lazarus Love!
-[LAW2_6:LAWYER2]
-~g~Vai al Malibu e trova Kent Paul.
+[DONH3I4:DONH3]
+~w~Ah, sarò di nuovo ricco!
-[LAW2_7:LAWYER2]
-~g~Trova lo chef in Ocean Drive.
+[DONH3I5:DONH3]
+~w~La Panlantic mi pagherà una fortuna per completare questo affare!
-[LAW2_10:LAWYER2]
-~g~Torna in macchina all'hotel.
+[DONH3I6:DONH3]
+~w~Ce l'abbiamo fatta Toni!
-[LAW2_11:LAWYER2]
-~g~Raccogli il suo cellulare.
+[DONH3I7:DONH3]
+~w~Se lo dici te.
-[LAW2_12:LAWYER2]
-Cellulare acquisito! Adesso potrai ricevere telefonate!
+[DONH3I8:DONH3]
+~w~È l'ora di organizzare una festicciola con un elenco di invitati esclusivi.
-[LAW2_13:LAWYER2]
-~g~Hai lasciato Lance indietro! Vallo a prendere!
+[DONH3I9:DONH3]
+~w~Andiamo!
-[LAW2_14:LAWYER2]
-Andiamocene da qui!
+[DONH3C1:DONH3]
+~w~Toni, abbiamo bisogno di un mezzo, non abbiamo troppo tempo.
-[GUN_2A:LAWYER2]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per la ~h~mira automatica~w~ e premi il ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~!
+[DONH3L1:DONH3]
+~w~Hai bisogno di ~b~Donald.~w~ Torna a prenderlo!
-[GUN_2C:LAWYER2]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per la ~h~mira automatica~w~ e premi il ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~!
+[DONH3L2:DONH3]
+~w~Forza Toni! Non ci rimane molto tempo!
-[GUN_2D:LAWYER2]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per la ~h~mira automatica~w~ e premi il ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~!
+[DONH3L3:DONH3]
+~w~Rimetti a posto quel cadavere!
-[HELP17:LAWYER2]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per attaccare lo chef.
+[DONH3_5:DONH3]
+~w~Toni, morivo dalla voglia di organizzare questa festa.
-[HELP18:LAWYER2]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per attaccare lo chef.
+[DONH35D:DONH3]
+~w~Proprio come i miei ospiti.
-[LAW3_11:LAWYER2]
-Posizionati sul ~q~segnalino rosa~w~ per vedere le armi in offerta.
+[DONH35A:DONH3]
+~w~Trova un ~b~cadavere.
-[LAW3_12:LAWYER2]
-Puoi selezionare l'arma premendo il ~h~tasto direzionale~w~ a ~h~sinistra~w~ o a ~h~destra~w~.
+[DONH35B:DONH3]
+~w~Recupera il ~b~cadavere di Avery.
-[LAW3_13:LAWYER2]
-Se hai denaro a sufficienza puoi comprare armi premendo il ~h~~k~~PED_SPRINT~~w~.
+[DONH35C:DONH3]
+~w~Recupera ~b~il cadavere di Ned.
-[LAW3_14:LAWYER2]
-Puoi uscire da un negozio premendo il ~h~~k~~VEHICLE_ENTER_EXIT~~w~.
+[DONH3_6:DONH3]
+~w~Porta Donald e Avery all'~y~aeroporto.
-[LAW3_15:LAWYER2]
-Segui il ~h~segnale a forma di pistola~w~ per trovare ~h~Ammu-Nation~w~.
+[DONH36A:DONH3]
+~w~Ehi, riporta qui quell'ambulanza!
-[LAW2_15:LAWYER2]
-~g~Raggiungi Ammu-Nation.
+[DONH36B:DONH3]
+~w~Avery.
-[LAW2_K:LAWYER2]
-Vedi di star calmo.
+[DONH36C:DONH3]
+~w~Oh, Avery! Sei invecchiato dall'ultima volta che ci siamo visti.
-[LAW2_16:LAWYER2]
-Devi sapere qualcosa su questa città: hai bisogno di potenza di fuoco.
+[DONH36D:DONH3]
+~w~...mi hai regalato delle perle di saggezza.
-[LAW2_17:LAWYER2]
-Forza, l'armaiolo locale è solo a qualche isolato di distanza.
+[DONH36E:DONH3]
+~w~...e presto pasteggerò ancora!
-[LAW2_18:LAWYER2]
-Tommy, tutti quanti hanno bisogno di un po' di relax ogni tanto.
+[DONH36F:DONH3]
+~w~...Oddio! Ha una parrucca!
-[LAW2_19:LAWYER2]
-Ecco il club a luci rosse Pole Position. Facci un salto ogni tanto.
+[DONH36G:DONH3]
+~w~Toni. Portaci al jet privato di Avery all'aeroporto.
-{=================================== MISSION TABLE LAWYER3 ===================================}
+[DONH3_7:DONH3]
+~w~Porta Donald e Ned all'~y~aeroporto.
-[LAW3_A:LAWYER3]
-Aarrgh! Maledizione, sei tu! Oddio, avrò bisogno di un nuovo paio di pantaloni!
+[DONH37F:DONH3]
+~w~Toni. Porta me e Ned all'aeroporto.
-[LAW3_B:LAWYER3]
-Ehi, quei psicopatici del nord hanno drizzato le orecchie e verranno a visitarci molto presto.
+[DONH37A:DONH3]
+~w~Ehi! Quel tipo sta rubando il cadavere!
-[LAW3_C:LAWYER3]
-Dove diavolo sono i fottuti soldi?
+[DONH37B:DONH3]
+~w~Ah, Ned Burner, reporter d'assalto.
-[LAW3_D:LAWYER3]
-Rilassati, rilassati. Non siamo ancora arrivati a questa parte.
+[DONH37C:DONH3]
+~w~Ah, Ned. Ti darò l'esclusiva per la
-[LAW3_E:LAWYER3]
-Pensavo ti stessi prendendo cura di questo aspetto, davvero.
+[DONH37D:DONH3]
+~w~mia meravigliosa festa.
-[LAW3_F:LAWYER3]
-E adesso quei delinquenti si aspettano addirittura da noi un favore.
+[DONH37E:DONH3]
+~w~Non è roba da tutti.
-[LAW3_G:LAWYER3]
-Vuoi dire che io devo far loro un favore.
+[DONH37G:DONH3]
+~w~C'è da morire per avere un invito.
-[LAW3_H:LAWYER3]
-Oh, beh, certo, proprio così. Credi davvero che potrei intimidire una giuria?
+[DONH3_8:DONH3]
+~w~Porta il cadavere di Avery all'~y~aeroporto.
-[LAW3_I:LAWYER3]
-Non riuscirei a intimidire neppure un bambino... e credimi, ci ho provato.
+[DONH3_9:DONH3]
+~w~Porta il cadavere di Ned all'~y~aeroporto.
-[LAW3_J:LAWYER3]
-Adesso o ci riusciamo, oppure il cugino di Forelli, Giorgio, si becca cinque anni per frode.
+[DONH3A1:DONH3]
+~w~Porta qui le vecchie ossa di Avery prima che la sicurezza ci scopra.
-[LAW3_K:LAWYER3]
-Devi CONVINCERE questi tipi!
+[DONH3A2:DONH3]
+~w~È quasi l'ora della sua autopsia.
-[LAW3_L:LAWYER3]
-Capisco. Devo aiutare la giuria a cambiare idea. Non preoccuparti...
+[DONH3N1:DONH3]
+~w~Porta qui il cadavere di Ned prima che la sicurezza ci scopra. È quasi l'ora della sepoltura.
-[LAW3_M:LAWYER3]
-No no no no NO! Ci ho provato. Le cose con la giuria non sono andate per il meglio,
+[DONH3F1:DONH3]
+~r~Love è morto.
-[LAW3_N:LAWYER3]
-per cui ASSICURATI che cambino davvero idea.
+[DONH3F2:DONH3]
+~r~Hai perso il corpo di Avery!
-[LAW3_1:LAWYER3]
-Giorgio ti manda i suoi saluti.
+[DONH3F3:DONH3]
+~r~Hai perso il corpo di Ned!
-[LAW3_2:LAWYER3]
-Ricorda: colpevole è una parolaccia.
+[DONH3C2:DONH3]
+~w~La sicurezza dell'aeroporto chiuderà l'hangar di Avery Carrington alle 22:00.
-[LAW3_3:LAWYER3]
-Innocente fino a prova contraria... ecco cosa dire.
+[DONH3F4:DONH3]
+~r~Troppo tardi! La sicurezza dell'aeroporto ha chiuso l'hangar!
-[LAW3_4:LAWYER3]
-Lo sai che non è colpevole.
+[DONH3F5:DONH3]
+~r~Troppo tardi! La sicurezza dell'aeroporto ha trovato Donald con il cadavere di Avery!
-[LAW3_5:LAWYER3]
-Ti ricordi di Giorgio? Ricordati che è innocente.
+[DONH3W1:DONH3]
+~w~Muoviti! La sicurezza dell'aeroporto chiuderà l'hangar di Avery Carrington alle 22:00.
-[LAW3_6:LAWYER3]
-Non colpevole... Capito? Bene.
+[DONH3F6:DONH3]
+~r~Troppo tardi! La sicurezza dell'aeroporto ha trovato Donald con il cadavere di Ned!
-[LAW3_8:LAWYER3]
-~r~Hai ucciso un giurato!
+{=================================== MISSION TABLE DONH4 ===================================}
-[LAW3_9:LAWYER3]
-~g~Distruggi l'auto del giurato per farlo uscire!
+[DONH4A:DONH4]
+~w~Donald mi ha mandato qui per prelevare un po' di ehm... roba.
-[HELP40:LAWYER3]
-Puoi distruggere le macchine utilizzando un martello o un'arma simile.
+[DONH4B:DONH4]
+~w~Perfetto.
-[LAW3_10:LAWYER3]
-~g~Visita il ~h~ferramenta~g~ per comprare un'arma corpo a corpo.
+[DON4EX1:DONH4]
+~w~Ho quello che vi serve ragazzi, ma vi costerà un po' di soldi.
-[LAW3_20:LAWYER3]
-~g~Distruggi la macchina del giurato!
+[DON4EX2:DONH4]
+~w~Don ha detto che mi avresti pagato subito. Ti rimborserà più tardi.
-[LAW3_21:LAWYER3]
-Non posso credere che sta succedendo!
+[DONH4C:DONH4]
+~w~...ci avrei scommesso.
-[LAW3_22:LAWYER3]
-Incredibile!
+[DONH4D:DONH4]
+~w~Sì, come no! Intestalo a 'Super cazzone'!
-[LAW3_23:LAWYER3]
-OK! OK! Ho compreso il messaggio!
+[DONH4E:DONH4]
+~w~Dov'è la merce?
-[LAW3_24:LAWYER3]
-~g~Quel martello potrebbe tornare utile.
+[DONH4F:DONH4]
+~w~Calma amico! Roba del genere necessita di tempo per essere assemblata.
-[LAW3_7:LAWYER3]
-~g~Minaccia i due giurati, ma NON ucciderli!
+[DON4EX4:DONH4]
+~w~Mi farò vivo.
-[HELP23:LAWYER3]
-Segui il ~h~segnale a forma di martello~w~ se vuoi comprare delle armi corpo a copro dal ferramenta.
+[DONH4G:DONH4]
+Missione completata!
-[LAW3_16:LAWYER3]
-Stupidi idioti del Florida.
+[DONH4_1:DONH4]
+NESSUNO
-[LAW3_17:LAWYER3]
-Via dai piedi.
+[DONH4PS:DONH4]
+~w~8-Ball ti farà sapere quando il materiale è pronto.
-{=================================== MISSION TABLE LAWYER4 ===================================}
+{=================================== MISSION TABLE DONH5 ===================================}
-[LAW4_A:LAWYER4]
-Avery, è chiaro che... Tommy! Tommy! Qualche progresso? No no no, parliamone dopo, mi racconti dopo.
+[DONH5_0:DONH5]
+Furgone
-[LAW4_B:LAWYER4]
-Tommy, ti presento Avery Carrington: credo tu lo abbia incontrato al party.
+[DNH5_A0:DONH5]
+~w~Ascolta amico, questo furgone è carico di brutto, perciò fai attenzione
-[LAW4_C:LAWYER4]
-Non di persona.
+[DNH5_A1:DONH5]
+~w~Pronto? Tutto a posto.
-[LAW4_D:LAWYER4]
-Piacere.
+[DNH5_A2:DONH5]
+~w~Certo, te lo passo subito.
-[LAW4_E:LAWYER4]
-Avery ha una proposta da farci.
+[DNH5_A3:DONH5]
+~w~Toni, siamo a un passo dal diventare clamorosamente ricchi.
-[LAW4_F:LAWYER4]
-Non ti sembra che abbiamo già altro da fare?
+[DNH5_A4:DONH5]
+~w~Abbiamo esaminato i progetti di Fort Staunton. Il suo punto debole è la vecchia metropolitana che passa nel sottosuolo.
-[LAW4_G:LAWYER4]
-Sto cercando di tenere lontani i lupi dalla porta, per cui apprezzerei un po' di collaborazione.
+[DNH5_A5:DONH5]
+~w~Ottimo lavoro, Don... ora devo solo occuparmi di un centinaio di italiani pazzi.
-[LAW4_H:LAWYER4]
-Sono tirato come un filo e, anche se dovessi morire alla fine della settimana, desidererei non farlo da povero!
+[DNH5_A6:DONH5]
+~w~Vai verso il tunnel Porter e troverai facilmente l'ingresso.
-[LAW4_I:LAWYER4]
-Adesso calmatevi, tutti e due.
+[DNH5_B0:DONH5]
+~w~Ehi! Tu non dovresti essere qui!
-[LAW4_J:LAWYER4]
-Figliolo, dammi una mano e vedrò di mettere a nanna sottoterra qualsiasi stronzo vi stia dando problemi.
+[DNH5_B1:DONH5]
+~w~Vattene immediatamente!
-[LAW4_K:LAWYER4]
-OK, cosa posso fare?
+[DNH5_C0:DONH5]
+~w~Sali sul ~b~furgone.
-[LAW4_L:LAWYER4]
-Questa società di consegne ha un deposito su un terreno di prima qualità. Non vogliono vendere.
+[DNH5_C4:DONH5]
+~w~Piazza gli ~y~esplosivi!
-[LAW4_M:LAWYER4]
-Si sono rintanati come dei ratti di prateria, per cui vorrei andassi a trovarli e li facessi uscire con un po' di fumo.
+[DNH5_C5:DONH5]
+~w~Piazza i rimanenti ~y~esplosivi!
-[LAW4_N:LAWYER4]
-Raggiungi il posto e fai scoppiare un vespaio:
+[DNH5_C6:DONH5]
+~w~Fuggi dall'~y~ingresso della metropolitana!
-[LAW4_O:LAWYER4]
-mentre la sorveglianza sarà impegnata, entra dentro e mettili fuori gioco.
+[DNH5_D0:DONH5]
+~w~I Forelli? Cosa ci fanno qui?
-[LAW4_P:LAWYER4]
-Passa pure da Rafael's per un cambio d'abito: ci potresti mettere un po', ma va bene lo stesso.
+[DNH5_D1:DONH5]
+~w~Non permettere che i Forelli distruggano il furgone!
-[LAW4_Q:LAWYER4]
-Potrebbe funzionare una sommossa.
+[DNH5_1:DONH5]
+~w~Usa un veicolo per superare le barriere.
-[LAW4_R:LAWYER4]
-Se le cose vanno come devono, passa a trovarmi nel mio ufficio...
+[DONH5_2:DONH5]
+~w~Sfonda le barriere a maggiore velocità!
-[LAW4_1:LAWYER4]
-Disperdetevi! L'amministrazione discuterà qualsiasi rimostranza in modo appropriato!
+[DNH5_X0:DONH5]
+~r~Hai distrutto il furgone!
-[LAW4_2:LAWYER4]
-Disperdetevi! Tornate a casa!
+[DNH5_C1:DONH5]
+~w~Torna sul ~b~furgone.
-[LAW4_3:LAWYER4]
-Disperdetevi! Questo comportamento è inaccettabile!
+[DNH5_C2:DONH5]
+~w~Vai a una delle ~y~entrate~w~ del tunnel di Porter Road.
-[LAW4_4:LAWYER4]
-Disperdetevi! Rischiate di finire tutti per strada!
+[DNH5_C3:DONH5]
+~w~Segui il ~y~tunnel.
-[LAW4_5:LAWYER4]
-Forza, ragazzi! Spacchiamo il cranio a qualche rosso!
+[DNH5_E0:DONH5]
+~w~Uccidi quei ~r~lavoratori del cantiere.
-[LAW4_13:LAWYER4]
-~g~Comincia a combattere con almeno 4 lavoratori per avviare la sommossa.
+[DNH5_E1:DONH5]
+~w~Uccidi quel ~r~lavoratore del cantiere.
-[LAW4_14:LAWYER4]
-~g~Distruggi i van nell'autorimessa!
+[DNH5_E2:DONH5]
+~w~I Forelli hanno bloccato la via di ritorno. Trova un'altra ~y~uscita.
-[HELP38:LAWYER4]
-Se uccidi qualcuno con un'arma, la lascerà cadere.
+[DNH5_E3:DONH5]
+~w~Usa un veicolo per superare le barriere e raggiungi l'~y~uscita.
-[HELP39:LAWYER4]
-Puoi far esplodere i barili di esplosivo, ma tieni la distanza!
+[DNH5_X1:DONH5]
+~r~I Forelli hanno distrutto il furgone!
-{=================================== MISSION TABLE MIAMI_1 ===================================}
+[DNH5_W1:DONH5]
+~w~Non allontanarti troppo dal ~b~furgone!
-[T4X4_1A:MIAMI_1]
-~g~Hai ~1~ secondi per attraversare ~y~24~g~ punti di controllo. ~g~Puoi attraversarli in ~y~QUALSIASI ORDINE~g~.
+[DNH5_E4:DONH5]
+~w~Non lasciare alcun ~r~testimone.
-[T4X4_1B:MIAMI_1]
-~y~ATTRAVERSA~g~ il primo punto di controllo per attivare il ~r~TIMER~g~.
+{=================================== MISSION TABLE DONH6 ===================================}
-[T4X4_1C:MIAMI_1]
-~1~ su 24!
+[DONH6_V:DONH6]
+~r~v1,00
-[GETBIK1:MIAMI_1]
-Hai ~1~ secondi per salire su una PCJ 600!
+[DONH6_1:DONH6]
+~w~Raggiungi l'~y~abitazione.
-[GETBIK3:MIAMI_1]
-~r~Hai bisogno di una PCJ 600 per affrontare questa missione!
+[DONH6_5:DONH6]
+~w~Oddio Toni! Fai qualcosa!
-{=================================== MISSION TABLE MM ===================================}
+[DONH6_6:DONH6]
+~w~Hai ~1~ secondi per tornare nella proprietà!
-[BLOD_04:MM]
-CONDIZIONI MACCHINA:
+[DONH6_7:DONH6]
+Tempo Di Ritorno
-[BLOD_05:MM]
-~g~TEMPO BERSAGLIO: ~1~ minuto
+[DONH6_8:DONH6]
+~r~Non sei riuscito a tornare in tempo alla villa... Donald è stato giustiziato!
-[BLOD_06:MM]
-~g~TEMPO BERSAGLIO: ~1~ minuti
+[DONH610:DONH6]
+~w~Recupera una macchina!
-[BLOD_07:MM]
-NUOVO miglior tempo: ~1~ secondi
+[DONH611:DONH6]
+~w~Oddio! Ce ne sono ancora!
-[BLOD_08:MM]
-Veicoli distrutti: ~1~
+[DONH624:DONH6]
+~W~Parti a razzo Toni!
-[BLOD_09:MM]
-~1~$
+[DONH612:DONH6]
+~w~Ce l'abbiamo fatta!
-[BLOD_10:MM]
-VINCITORE!!!
+[DONH623:DONH6]
+~w~Portami al jet di Avery. Lui e Ned sono ancora a bordo, quindi non viaggerò da solo.
-[BLOD_01:MM]
-Guida attraverso i punti di controllo per aumentare il tuo tempo globale.
+[DONH622:DONH6]
+~w~Vai al ~y~jet di Avery.
-[BLOD_02:MM]
-Fallirai se il tempo globale scadrà a zero.
+[DONH613:DONH6]
+~w~Andiamo all'aeroporto.
-[BLOD_03:MM]
-Porta il tuo tempo globale sopra a quello bersaglio per vincere!
+[DONH625:DONH6]
+~w~Vai all'~y~aeroporto.
-{=================================== MISSION TABLE OVALRIG ===================================}
+[DONH615:DONH6]
+~w~Hai lasciato indietro ~b~Donald~w~! Torna a prenderlo!
-[HOTR_01:OVALRIG]
-~g~La gara dura 12 giri: solo il primo, il secondo e il terzo si qualificheranno come vincitori.
+[DONH619:DONH6]
+~r~Donald è stato ucciso!
-[HOTR_02:OVALRIG]
-~g~Se il tuo mezzo viene distrutto, sarai squalificato.
+[DONH6_9:DONH6]
+~w~D? Forza! Andiamo!
-[HOTR_03:OVALRIG]
-~g~Se danneggi il mezzo, potrai ripararlo ai box.
+[DONH614:DONH6]
+~w~Sei sicuro che sia tutto a posto, Toni?
-[HOTR_04:OVALRIG]
-~g~Da qui potrai uscire dallo stadio.
+[DONH616:DONH6]
+~w~Oh... il mio... GIARDINO!
-[HOTR_05:OVALRIG]
-Condizioni macchina:
+[DOH616A:DONH6]
+~w~Guarda cos'hai fatto al mio bellissimo giardino!
-[HOTR_06:OVALRIG]
-Giri:
+[DONH617:DONH6]
+~w~D... o pensi ai fiori, o eviti i fori. Scegli tu.
-[HOTR_10:OVALRIG]
-Tempo di gara:
+[DONH618:DONH6]
+~w~Portami all'aeroporto!
-[HOTR_09:OVALRIG]
-Posizione:
+[DONH620:DONH6]
+~w~Amico, non sai quanto odio i saluti.
-[HOTR_12:OVALRIG]
-~r~La tua macchina è stata distrutta!
+[DOH620A:DONH6]
+~w~'Adieu'.
-[HOTR_13:OVALRIG]
-~r~Non hai vinto la gara!
+[DONH621:DONH6]
+~w~D... è stato istruttivo.
-[HOTR_14:OVALRIG]
-~r~Sei stato squalificato!
+[DONH66S:DONH6]
+~w~Hai ~1~ secondo per tornare nella proprietà!
-[HOTR_15:OVALRIG]
-Tempo: ~1~:~1~
+[DONH66A:DONH6]
+~w~Elimina quei ~r~gangster Colombiani!
-[HOTR_16:OVALRIG]
-Tempo: ~1~:0~1~
+[DONP_01:DONH6]
+Bruuuchi... bruuuchi... bruuu... bruu... br... No, non va bene.
-[HOTR_17:OVALRIG]
-Tempo migliore: ~1~:~1~
+[DONP_02:DONH6]
+Ohmmmmmmmm. Maledizione.
-[HOTR_18:OVALRIG]
-Tempo migliore: ~1~:0~1~
+[DONP_03:DONH6]
+È così... Oh merda, se avessi qualcosa di freddo da stringere,
-[HOTR_19:OVALRIG]
-Tempo migliore: NA
+[DONP_06:DONH6]
+Antonio! Oh, sono alla ricerca dell'illuminazione spirituale,
-[HOTR_20:OVALRIG]
-Nuovo tempo migliore: ~1~:~1~
+[DONP_07:DONH6]
+purtroppo oggi non è giornata...
-[HOTR_21:OVALRIG]
-Nuovo tempo migliore: ~1~:0~1~
+[DONP_08:DONH6]
+Forse domani.
-[HOTR_22:OVALRIG]
-Miglior risultato: NA
+[DONP_09:DONH6]
+Nel messaggio sembravi un po' preoccupato.
-[HOTR_23:OVALRIG]
-Miglior risultato: PRIMO
+[DONP_10:DONH6]
+Preoccupato? Sto meditando. Preoccupato, moi?
-[HOTR_24:OVALRIG]
-Miglior risultato: SECONDO
+[DONP_11:DONH6]
+Sono in armonia con il cosmo. È praticamente impossibile.
-[HOTR_25:OVALRIG]
-Miglior risultato: TERZO
+[DONP_12:DONH6]
+Oh merda, hai ragione.
-[HOTR_26:OVALRIG]
-Miglior risultato: ~1~
+[DONP_13:DONH6]
+Uhm, stanno arrivando un mucchio di Colombiani
-[HOTR_27:OVALRIG]
-Miglior giro: ~1~.~1~ secondi
+[DONP_14:DONH6]
+che potrebbero uccidermi se non terrò la bocca chiusa e non li pagherò.
-[HOTR_28:OVALRIG]
-Miglior giro: ~1~.0~1~ secondi
+[DONP_15:DONH6]
+Oh! Questo spiega tutti quei Colombiani che si aggirano qua fuori.
-[HOTR_29:OVALRIG]
-~1~$
+[DONP_16:DONH6]
+Oh merda! Ti prego Antonio, devi portarmi fuori di qui!
-[HOTR_30:OVALRIG]
-PRIMA POSIZIONE
+[DONP_17:DONH6]
+Non voglio... ti prego! Non voglio morire! Non voglio...
-[HOTR_31:OVALRIG]
-SECONDA POSIZIONE
+[DONP_18:DONH6]
+Ma non eri in armonia con il cosmo, eh?
-[HOTR_32:OVALRIG]
-TERZA POSIZIONE
+[DONP_19:DONH6]
+Grazie Toni! Non te ne pentirai, te lo prometto.
-[HOTR_33:OVALRIG]
-Miglior giro: NA
+[DONP_04:DONH6]
+- sarebbe tutto più semplice... ~n~ - Che succede, D?
-[HOTR_11:OVALRIG]
-Nuovo giro migliore: ~1~.~1~ secondi
+{=================================== MISSION TABLE TOSH1 ===================================}
-[HOTR_34:OVALRIG]
-Nuovo giro migliore: ~1~.0~1~ secondi
+[TOSH1AB:TOSH1]
+~w~Fermatelo!
-{=================================== MISSION TABLE PHIL1 ===================================}
+[TOSH1AC:TOSH1]
+~w~Prendetelo!
-[PHIL1_A:PHIL1]
-Phil?
+[TOSH1AD:TOSH1]
+~w~Sparategli!
-[PHIL1_B:PHIL1]
-CORRI!
+[TOSH1AA:TOSH1]
+~w~Eccolo!
-[PHIL1_C:PHIL1]
-Corri!
+[TOSH120:TOSH1]
+~w~Ruba ~b~il carico d'armi~w~ della Yakuza a Bedford Point.
-[PHIL1_E:PHIL1]
-Merda Phil, tu bevi quella schifezza?
+[TOSH121:TOSH1]
+~w~Dovrai superare le ~r~guardie della Yakuza.
-[PHIL1_F:PHIL1]
-Accidenti, non la devi mica bere...
+[TOSH122:TOSH1]
+~w~Attento alle altre ~r~barche della Yakuza.
-[PHIL1_G:PHIL1]
-basta una sniffata per sballare.
+[TOSH130:TOSH1]
+~w~Porta le armi al ~y~contatto di Toshiko.
-[PHIL1_H:PHIL1]
-Ascoltami Phil, mi hai detto che potevi fornirmi delle armi...
+[TOSH131:TOSH1]
+~w~Torna al ~b~carico d'armi.
-[PHIL1_I:PHIL1]
-Stanne certo!
+[TOSH1BA:TOSH1]
+~w~Ehi ragazzo, questa sì che è roba coi fiocchi!
-[PHIL1_J:PHIL1]
-C'è un trafficante d'armi Messicano con cui ho fatto un po' di affari.
+[TOSH1BB:TOSH1]
+~w~Sai, faccio così tanti affari qui al porto che dovrei trasferirmi, invece di
-[PHIL1_K:PHIL1]
-Fa la sua consegna settimanale più o meno adesso.
+[TOSH1BC:TOSH1]
+~w~stare a sud della fottuta isola!
-[PHIL1_L:PHIL1]
-Sperona il suo camion e fai cadere le armi prima che scappi.
+[TOSH1BD:TOSH1]
+~w~Bene, è stato divertente!
-[PHIL1_M:PHIL1]
-E già che ci sei, fammi un favore:
+[TOSH1DB:TOSH1]
+~r~Le armi sono state distrutte!
-[PHIL1_N:PHIL1]
-fallo fuori.
+[TOSH1PH:TOSH1]
+~w~La Yakuza sarà di guardia. Forse dovresti passare da Phil Cassidy strada facendo.
-[PHI1_01:PHIL1]
-~g~Fai cadere le armi dal camion del trafficante.
+[DEAD_01:TOSH1]
+Quindi lei sarebbe il gangster grosso e cattivo?
-[PHI1_02:PHIL1]
-~g~Il trafficante ha lasciato cadere il carico. Distruggi le casse e recupera le armi.
+[DEAD_02:TOSH1]
+Non mi sembra un duro.
-[PHI1_03:PHIL1]
-~g~Sembra abbiano chiesto rinforzi.
+[DEAD_03:TOSH1]
+...Grazie
-[PHI1_04:PHIL1]
-~g~Adesso finisci i trafficanti ancora vivi.
+[DEAD_04:TOSH1]
+Sa cosa vuol dire vivere senza amore, signor Toni?
-[PHI1_HP:PHIL1]
-Quando utilizzi una granata a tempo, lanciala e poi falla esplodere in un secondo momento.
+[DEAD_05:TOSH1]
+Significa vivere nell'odio...
-[PHIL1_O:PHIL1]
-Hoooooweeeeee!
+[DEAD_06:TOSH1]
+Le credo sulla parola.
-[PHIL1_D:PHIL1]
-Nona avvicinare mai una fiamma alla broda di Phil Cassidy!
+[DEAD_07:TOSH1]
+Bramo dal desiderio di uccidere un uomo, signor Cipriani.
-{=================================== MISSION TABLE PHIL2 ===================================}
+[DEAD_08:TOSH1]
+Distruggere... ucciderlo non basterebbe.
-[PHIL2_A:PHIL2]
-Ehi Phil, come butta?
+[DEAD_09:TOSH1]
+Voglio vedere lui e la sua organizzazione umiliati prima della sua morte.
-[PHIL2_B:PHIL2]
-Eeeeehi Tommy, Come va? E passcato moolto tempo...
+[DEAD_10:TOSH1]
+Voglio che soffra.
-[PHIL2_C:PHIL2]
-Devi davvero smetterla con quella broda,
+[DEAD_11:TOSH1]
+OK.
-[PHIL2_D:PHIL2]
-accidenti, puzza di solvente. Mi fa bruciare gli occhi...
+[DEAD_12:TOSH1]
+L'uomo che deve distruggere è mio marito: Kazuki Kasen.
-[PHIL2_E:PHIL2]
-Shshs shhh silenzio Tommy,
+[DEAD_13:TOSH1]
+Non si preoccupi.
-[PHIL2_F:PHIL2]
-e vieni qua che ho qualcoscia da farti vedere... qualcoscia...
+[DEAD_14:TOSH1]
+Verrà ricompensato profumatamente per i suoi servizi.
-[PHIL2_G:PHIL2]
-Woof! Oddio! Riuscirei a sniffarlo da qui in fondo! Mi gira già la testa!
+[DEAD_15:TOSH1]
+E se dicessi no?
-[PHIL2_H:PHIL2]
-Non preoccuparti per l'odore, Tommy, guarda quescto...
+[DEAD_16:TOSH1]
+Non lo farà... perché se a me interessa che muoia, per lei è una necessità.
-[PHIL2_I:PHIL2]
-La fottuta batteria o qualcosc'altro... Scen'è un altra sulla mensola...
+[DEAD_17:TOSH1]
+In realtà, gli ha già inferto un duro colpo, signor Cipriani.
-[PHIL2_J:PHIL2]
-TA-DAAA!
+[DEAD_18:TOSH1]
+Tuttavia, oggi prenderà in consegna un nuovo carico di munizioni.
-[PHIL2_K:PHIL2]
-Ommerda!
+[DEAD_19:TOSH1]
+Voglio che rubi le armi da sotto il suo naso da idiota.
-[PHI2_01:PHIL2]
-~g~Forza, porta Phil all'ospedale.
+{=================================== MISSION TABLE TOSH2 ===================================}
-[PHI2_03:PHIL2]
-~r~Phil Cassidy è morto!!! Adesso chi ti rifornirà di armi?
+[TOSH2AA:TOSH2]
+~w~Signor Toni.
-[PHI2_05:PHIL2]
-Non all'ospedale, amico! Troppi poliziotti e Viet Cong!
+[TOSH2AL:TOSH2]
+~w~Mio marito si è molto infuriato in seguito alle sue azioni.
-[PHI2_06:PHIL2]
-C'è un vecchio ex-medico militare che mi deve qualche favore e una falciatrice.
+[TOSH2AB:TOSH2]
+~w~Ha mostrato a lui e ai suoi uomini
-[PHI2_07:PHIL2]
-Si trova lungo Little Havana, oooh guarda, un pesce gigante.
+[TOSH2AM:TOSH2]
+~w~la loro stupidità.
-[PHI2_08:PHIL2]
-Attento! Nemico tra gli alberi!
+[TOSH2AC:TOSH2]
+~w~Mi piace fare il mio lavoro. E ora, principessa?
-[PHI2_09:PHIL2]
-Mi sbaglio o le strade sono di gelatina?
+[TOSH2AE:TOSH2]
+~w~Mio marito sposterà una grande quantità di denaro dal suo casinò.
-[PHI2_10:PHIL2]
-Cucchiaio Storto a Mamma Gallina, mi ricevi?
+[TOSH2AF:TOSH2]
+~w~Voglio che lei distrugga quei soldi.
-[PHI2_11:PHIL2]
-Cucchiaione-ione Woo Woo Woooo!
+[TOSH2AG:TOSH2]
+~w~Potrei utilizzare quei soldi in un altro modo, se non le dispiace.
-[PHI2_12:PHIL2]
-Sta venendo per me, amico!
+[TOSH2AH:TOSH2]
+~w~Voglio che tutti vedano i suoi soldi bruciare in mezzo alla strada.
-[PHI2_13:PHIL2]
-Piume nere che svolazzano dappertutto...
+[TOSH2AI:TOSH2]
+~w~OK... OK... quando avverrà il trasferimento?
-[PHI2_14:PHIL2]
-È così bello, amico... così bello... ma così freddo...
+[TOSH2AJ:TOSH2]
+~w~È già iniziato.
-[PHI2_15:PHIL2]
-10-4, abbiamo un guidatore ubriaco.
+[TOSH2AK:TOSH2]
+~w~Stanno andando via dal casinò in questo istante, non ha molto tempo.
-[PHI2_04:PHIL2]
-SALUTE DI PHIL:
+[TOSH2O0:TOSH2]
+~w~Distruggi TUTTI i ~r~portavalori.~w~ Non permettere che raggiungano il ~y~covo della Yakuza!
-[PHI_AS1:PHIL2]
-PHILS PLACE COMPLETATO
+[TOSH2O1:TOSH2]
+~w~Stanno scappando! Non lasciar fuggire nessun ~r~furgone!
-[PHI_AS2:PHIL2]
-~g~Nuove armi disponibili presso Phils Place.
+[TOSH2O2:TOSH2]
+~w~Li hai spaventati! Non permettere che i loro ~r~furgoni ~w~scappino!
-{=================================== MISSION TABLE PIZZA ===================================}
+[TOSH2E1:TOSH2]
+~w~Il ~r~convoglio~w~ si sta avvicinando al ~y~covo della Yakuza!
-[PIZ1_01:PIZZA]
-~g~Vai a consegnare queste pizze: devi lanciarle ai clienti. Fai un giro e tira le pizze.
+[TOSH2E2:TOSH2]
+~w~Un ~r~furgone~w~ è quasi arrivato al ~y~covo della Yakuza!
-[PIZ1_02:PIZZA]
-~g~Hai lanciato tutte le pizze, torna indietro e prendine altre.
+{=================================== MISSION TABLE TOSH3 ===================================}
-[PIZ1_05:PIZZA]
-~g~Hai cinque minuti per consegnare le pizze prima che i clienti chiamino un altro negozio di consegne.
+[TOSH3M1:TOSH3]
+~w~C'è qualcuno in casa?
-[PIZ1_07:PIZZA]
-~r~Hai ucciso un cliente! Sei licenziato!
+[TOSH3M2:TOSH3]
+~w~Signor Toni? Un momento, prego...
-[PIZ1_08:PIZZA]
-~r~Tempo scaduto. Sei licenziato!
+[TOSH3M3:TOSH3]
+~w~Mio marito è furioso.
-[PIZ1_09:PIZZA]
-~r~Hai distrutto il nostro mezzo! Sei licenziato!
+[TOSH3EA:TOSH3]
+~w~Si sta domandando come sia stato possibile un attacco così preciso e mirato.
-[PIZ1_11:PIZZA]
-Ehi! Rimettiti in sella!
+[TOSH3M4:TOSH3]
+~w~Se non è stupido, lo scoprirà presto.
-[PIZ1_12:PIZZA]
-Pizze mancanti:
+[TOSH3M5:TOSH3]
+~w~Forse potremmo aiutarlo. Ai suoi uomini piace spettegolare.
-[PIZ1_06:PIZZA]
-Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ mentre sei in moto per interrompere la missione.
+[TOSH3EB:TOSH3]
+~w~Diamo loro un motivo per farlo.
-[PIZ1_13:PIZZA]
-Consegnale belle calde e fragranti.
+[TOSH3M6:TOSH3]
+~w~Dove stiamo andando?
-[PIZ1_14:PIZZA]
-Amico, eccoti le pizze.
+[TOSH3M7:TOSH3]
+~w~All'opera.
-[PIZ1_15:PIZZA]
-Ehi, amico, consegnale in fretta.
+[TOSH3M8:TOSH3]
+~w~All'opera? Io? Sta scherzando?
-[PIZ1_16:PIZZA]
-Che cosa stai aspettando, amico? Hai delle pizze da consegnare!
+[TOSH3M9:TOSH3]
+~w~Non sia ridicolo signor Toni, tutti amano l'opera.
-[PIZ1_17:PIZZA]
-So che non volevi fare il fattorino delle pizze, ma non me ne frega niente.
+[TOSH3A:TOSH3]
+~w~Se prende la mia macchina potremo andare a ritirare il suo smoking.
-[PIZ1_18:PIZZA]
-Consegna queste.
+[TOSH3EC:TOSH3]
+~w~Non abbiamo molto tempo, lo spettacolo inizierà tra poco.
-[PIZ1_19:PIZZA]
-Devi consegnare queste.
+[TOSH3B:TOSH3]
+~w~Porta fuori la ~b~macchina di Tohisko~w~.
-[PIZ1_20:PIZZA]
-Forza, ragazzo, consegna queste o sei licenziato.
+[TOSH3C:TOSH3]
+~w~Passa a prendere ~b~Toshiko.
-[PIZ1_21:PIZZA]
-C'è gente in attesa, amico.
+[TOSH3C2:TOSH3]
+~w~Prendi lo smoking da ~y~Mr. Benz.
-[PIZ1_22:PIZZA]
-Che cosa stai aspettando? Devono essere consegnate!
+[TOSH3B3:TOSH3]
+~w~Riporta Toshiko al suo ~y~appartamento.
-[PIZ1_23:PIZZA]
-Consegna queste maledette pizze.
+[TOSH3B4:TOSH3]
+~r~Hai lasciato indietro Toshiko.
-[PIZ1_24:PIZZA]
-Forza, consegnale calde.
+[TOSH3B2:TOSH3]
+Torna nella ~b~macchina di Toshiko.
-[PIZ1_25:PIZZA]
-Ehi, ti occuperesti di queste?
+[TOSH3C3:TOSH3]
+~w~Vai all'~y~opera.
-[PIZ1_26:PIZZA]
-Ehi, consegna subito queste: forza amico.
+[TOSH3D:TOSH3]
+~w~Dove sta andando? Arriveremo tardi!
-[PIZ1_27:PIZZA]
-Forza, siamo di fretta: consegnale subito.
+[TOSH3D2:TOSH3]
+~w~Non mi lasci indietro Toni san, la prego!
-[PIZ1_28:PIZZA]
-Ancora tu? Bene, consegnale in fretta, amico.
+[TOSH3Z1:TOSH3]
+~w~Signor Toni, lei crede che io sia una persona cattiva?
-[PIZ1_29:PIZZA]
-Non c'è tempo da perdere, consegnale tutte.
+[TOSH3Z2:TOSH3]
+~w~Beh principessa, non sono proprio un santo.
-[PIZ1_30:PIZZA]
-Muoviti, brutto pelandrone, consegna questa roba in tempo.
+[TOSH3Z3:TOSH3]
+~w~No... non saprei che farmene di un santo.
-[PIZ1_31:PIZZA]
-Non otterrai una promozione se non ti muoverai più in fretta.
+[TOSH3Z4:TOSH3]
+~w~Mio marito è un samurai, signor Toni.
-[PIZ1_32:PIZZA]
-~r~La pizza è troppo calda per te?
+[TOSH3Z5:TOSH3]
+~w~È molto forte... ma anche molto, molto cattivo.
-[PIZ1_33:PIZZA]
-~g~Torna alla pizzeria per altre ordinazioni.
+[TOSH3Z6:TOSH3]
+~w~Mi ha sposata solo per diventare il waka-gashira di Liberty City.
-[PIZ1_34:PIZZA]
-~g~Pizze consegnate, ecco i soldi.
+[TOSH3Z7:TOSH3]
+~w~Non mi ha mai amata... preferisce la compagnia dei suoi uomini.
-[PIZ_WON:PIZZA]
-Missione Pizza completata. Valore massimo dell'salute aumentato a 150.
+[TOSH3Z8:TOSH3]
+~w~Capisce?
-{=================================== MISSION TABLE PORN1 ===================================}
+[TOSH3Z9:TOSH3]
+~w~Quando scoprirà quello che sta facendo, la vorrà uccidere.
-[POR1_A:PORN1]
-Azione!
+[TOSH3Z0:TOSH3]
+~w~La vita e la morte non hanno più importanza, conta solo la libertà.
-[POR1_B:PORN1]
-Whoa! Questo sì che è un bel...
+[TOSH3ZB:TOSH3]
+~w~Che rilassante visione del mondo...
-[POR1_C:PORN1]
-30 centimetri, è questa la norma, baby.
+[TOSH3E:TOSH3]
+~w~Il sangue italiano non si deve mischiare con quello giapponese.
-[POR1_D:PORN1]
-TAGLIA! Chi è quell'idiota? Tu! TU! Che cosa stai facendo sul mio set? PERCHÉ?
+[TOSH3F:TOSH3]
+~w~A meno che non si trovi sul marciapiede.
-[POR1_E:PORN1]
-Cosa sono tute queste stronzate?
+[TOSH3G:TOSH3]
+~w~Proteggi Toshiko e fuggi con la ~b~sua macchina.
-[POR1_F:PORN1]
-Alieni? Canne da pesca?
+[TOSH3H:TOSH3]
+~w~Proteggi ~b~Toshiko~w~ e riportala al suo ~y~appartamento.
-[POR1_G:PORN1]
-Chi ha mai visto uno squalo così grande?
+[TOSH3S1:TOSH3]
+~w~La mia macchina!
-[POR1_H:PORN1]
-Tutta questa roba deve andarsene.
+[TOSH3S2:TOSH3]
+~w~Ci salvi, Toni!
-[POR1_I:PORN1]
-Perché sei venuto a rompere, idiota?
+[TOSH3S3:TOSH3]
+~w~Coraggio, Toni!
-[POR1_J:PORN1]
-Eh?
+[TOSH3S4:TOSH3]
+~w~Ci porti fuori di qui!
-[POR1_K:PORN1]
-Per la passera, ecco perché! Che cos'è questo?
+[TOSH3S5:TOSH3]
+~w~MI SALVI!
-[POR1_L:PORN1]
-Questa è la mia arte. SORVEGLIANZA!
+[TOSH3S6:TOSH3]
+~w~AIUTO!
-[POR1_M:PORN1]
-Ascolta, lurido fighettino, ti ho comprato. Ho comprato tutto questo.
+[TOSH3S7:TOSH3]
+~w~Non ce la faremo mai!
-[POR1_N:PORN1]
-E ho intenzione di cambiare le cose da queste parti...
+[TOSH3S8:TOSH3]
+~w~AIUTO!
-[POR1_O:PORN1]
-Ti farò ricco.
+[TOSH3S9:TOSH3]
+~r~Toshiko è morta!
-[POR1_P:PORN1]
-Uh. Tu sei... tu... tu sei Tommy Vercetti? Pensavo che tu fossi...
+[TOSH310:TOSH3]
+~r~La macchina di Toshiko è stata distrutta!
-[POR1_Q:PORN1]
-Esatto.
+[TOSH311:TOSH3]
+~r~Il tempo è scaduto!
-[POR1_R:PORN1]
-Faremo numerosi cambiamenti da queste parte e inizieremo a fare soldi veri.
+[TOSH3_1:TOSH3]
+NESSUNO
-[POR1_S:PORN1]
-Effettivamente, hai mai pensato che...
+[TOS3NE1:TOSH3]
+~w~Proteggi Toshiko e uccidi i ~r~Forelli.
-[POR1_T:PORN1]
-Ma prima dobbiamo trovare delle tope che meritino.
+[TOS3NE2:TOSH3]
+~w~Scappa con la ~b~macchina di Toshiko.
-[POR1_U:PORN1]
-Sì. Le ragazze sono carine, ma sai... Wow!
+[TOSH3EI:TOSH3]
+~w~L'opera comincia alle 20:00. Non fare tardi!
-[POR1_02:PORN1]
-~g~Metti fuori gioco il pappone di Candy e poi passa a prenderla.
+{=================================== MISSION TABLE TOSH4 ===================================}
-[POR1_04:PORN1]
-Yo, Candy. Sto cercando delle attrici talentuose: sei interessata?
+[TOSH4O2:TOSH4]
+~w~L'elicottero di Kazuki si sta dirigendo verso il ~y~casinò!
-[POR1_05:PORN1]
-Certo! Ma prima dovrai parlare con il mio agente...
+[TOSH4O4:TOSH4]
+~w~Uccidi ~r~Kazuki!
-[POR1_06:PORN1]
-Che DIAVOLO stai facendo?
+[TOSH4O5:TOSH4]
+~w~Vai all'~y~appartamento di Toshiko.
-[POR1_07:PORN1]
-Avresti fatto meglio a stare a casa oggi!
+[TOSH4_3:TOSH4]
+~w~Kazuki sta arrivando su quell'elicottero! Raggiungi l'eliporto e uccidilo.
-[POR1_7B:PORN1]
-Ma hai visto questo stronzo?
+[TOSH4Y1:TOSH4]
+~w~Prendiamolo!
-[POR1_08:PORN1]
-Ehi Mercedes!
+[TOSH4Y2:TOSH4]
+~w~Uccidiamolo!
-[POR1_09:PORN1]
-Ehi Tommy, vuoi divertirti?
+[TOSH4CA:TOSH4]
+~w~I miei uomini mi hanno disonorato...
-[POR1_10:PORN1]
-Non adesso, tesoro. Sei interessata a fare dei film?
+[TOSH4CB:TOSH4]
+~w~ma sono pronto a ucciderti con le mie mani.
-[POR1_11:PORN1]
-Certo, sempre che possano premiare il mio talento.
+[TOSH4CC:TOSH4]
+~w~Voi due! Lasciateci soli!
-[POR1_13:PORN1]
-~g~Porta le ragazze allo studio e presentale a Steve.
+[TOSH4CD:TOSH4]
+~w~Godrò nell'infilzarti con la mia spada!
-[POR1_14:PORN1]
-Sei assunta!
+[TOSH4CE:TOSH4]
+~w~Sì, l'ho sentito dire in giro.
-[POR1_15:PORN1]
-Ehi Tommy, vieni anche tu per un riscaldamento?
+[TOSH4K1:TOSH4]
+~w~Sparategli!
-[POR1_17:PORN1]
-Whoa, che bello squalo!
+[TOSH4K2:TOSH4]
+~w~Uccidiamolo!
-[POR1_18:PORN1]
-~r~Mercedes è morta!
+[TOSH4_7:TOSH4]
+~w~Porta la spada di Kazuki a Toshiko come prova della sua morte.
-[POR1_20:PORN1]
-Tommy, dove stai andando? Torna qui!
+[TOSH4_8:TOSH4]
+~w~Hai spaventato Kazuki! Sta scappando! Hai perso l'opportunità di ucciderlo!
-[POR1_21:PORN1]
-Dove stai andando?
+[TOSH4_C:TOSH4]
+Kazuki
-[POR1_22:PORN1]
-Tommy, quando passeremo un po' di tempo io e te da soli?
+[TOSH4AA:TOSH4]
+~w~Permesso?
-[POR1_01:PORN1]
-~g~Candy Suxxx sarebbe perfetta per il ruolo da protagonista!
+[TOSH4AB:TOSH4]
+~w~Sto facendo il bagno, Toni san.
-[POR1_12:PORN1]
-~g~Porta Candy con te all'appuntamento con Mercedes.
+[TOSH4AC:TOSH4]
+~w~Ci è rimasto poco tempo.
-[POR1_16:PORN1]
-Magari più tardi...
+[TOSH4AD:TOSH4]
+~w~Ora mio marito sa chi c'è veramente dietro le sue perdite.
-[POR1_24:PORN1]
-~g~Torna indietro e prendi Candy.
+[TOSH4AE:TOSH4]
+~w~Sta venendo per uccidere me e lei.
-[POR1_25:PORN1]
-~g~Hai lasciato Candy indietro, torna a prenderla.
+[TOSH4AF:TOSH4]
+~w~Beh, non rimarrò qui ad aspettarlo. Dove si trova?
-[POR1_23:PORN1]
-~g~Candy starà lavorando in ~h~Downtown~g~.
+[TOSH4AG:TOSH4]
+~w~È a Belleville, sta radunando i suoi uomini.
-[POR1_26:PORN1]
-~g~Ecco Candy, sembra sia stata ancora con il deputato Shrub.
+[TOSH4AJ:TOSH4]
+~w~Ma presto sarà qui.
-[POR1_27:PORN1]
-Forza, andiamo.
+[TOSH4AH:TOSH4]
+~w~Sayonara, dolcezza.
-[POR1_28:PORN1]
-Tommy, fai attenzione! Il mio seno siliconato non è ancora assicurato!
+[TOSH4AI:TOSH4]
+~w~Pregherò per lei, Toni san. Buona fortuna.
-[POR1_29:PORN1]
-È questo il modo di guidare?
+[TOSH4F1:TOSH4]
+~r~Kazuki ti sta ridendo in faccia!
-[POR1_30:PORN1]
-Non posso recitare dopo tutto questo!
+[TOSH4OA:TOSH4]
+~w~Uccidi le ~r~guardie~w~ di Kazuki!
-[POR1_31:PORN1]
-Cosa? Stai cercando di uccidermi? Credevo di essere una star!
+[TOSH4OB:TOSH4]
+~w~Ritorna da ~y~Kazuki!
-{=================================== MISSION TABLE PORN2 ===================================}
+[TOSH4OC:TOSH4]
+~w~Attento, arrivano altri uomini della ~r~Yakuza!
-[POR2_A:PORN2]
-Come stanno andando le riprese, Steve?
+[TOSH4DA:TOSH4]
+~w~Sparategli!
-[POR2_B:PORN2]
-Beh, Candy è un talento naturale e l'altra ragazza... è insaziabile!
+[TOSH4DB:TOSH4]
+~w~Uccidetelo!
-[POR2_C:PORN2]
-Si è passata metà del cast e dello staff prima ancora che iniziassi a fare i controlli delle luci.
+[TOSH4DC:TOSH4]
+~w~Uccidetelo, brutti stronzi!
-[POR2_D:PORN2]
-Comunque, eh, domani andiamo fuori a registrare le scene sulla barca...
+[TOSH4O1:TOSH4]
+~w~Raggiungi ~y~l'appartamento di Kazuki~w~ e uccidilo!
-[POR2_E:PORN2]
-Scene sulla barca? Quali scene sulla barca?
+[TOSH4O3:TOSH4]
+~w~Raggiungi l'~y~eliporto!
-[POR2_F:PORN2]
-I pescatori sono presi dalla passione quando lo squalo gigante arriva e...
+[CASH_01:TOSH4]
+Quindi, uh... Toshiko. È finita.
-[POR2_G:PORN2]
-Che cosa ho detto sullo squalo gigante?
+[CASH_02:TOSH4]
+Sì sì, lo sapevo... salve signor Toni.
-[POR2_H:PORN2]
-Ho detto: 'NIENTE SQUALO GIGANTE', tutto chiaro?
+[CASH_03:TOSH4]
+Salve. Quindi, uhh... ha vinto.
-[POR2_I:PORN2]
-Lascia semplicemente le telecamere puntate sull'azione!
+[CASH_04:TOSH4]
+Ha ottenuto quello che voleva, è andato tutto alla perfezione.
-[POR2_J:PORN2]
-OK, OK. Ehi Tommy, ci devo pure provare, no?
+[CASH_06:TOSH4]
+Grande, davvero grande.
-[POR2_K:PORN2]
-Hai fatto stampare quei volantini?
+[CASH_07:TOSH4]
+Bene... È il momento della paga, dolcezza...
-[POR2_L:PORN2]
-Sì, ma nessuno ci farà distribuire quella roba, cioè...
+[CASH_08:TOSH4]
+Siamo entrambi dei pazzi e degli assassini, signor Toni.
-[POR2_M:PORN2]
-Lasciano semplicemente troppo, uh... poco all'immaginazione.
+[CASH_09:TOSH4]
+Credo di sì.
-[POR2_N:PORN2]
-Non preoccuparti per quello.
+[CASH_10:TOSH4]
+Il mondo richiede un dazio tremendo all'anima, non è d'accordo signor Toni?
-[POR2_O:PORN2]
-Ho le mie idee sulla distribuzione.
+[CASH_11:TOSH4]
+Sì, certo.
-[POR2_P:PORN2]
-OK. Ehi Candy, uh, nella mia roulotte.
+[CASH_12:TOSH4]
+Ma adesso è libera, può andare in Costa Rica, Aruba, roba del genere.
-[POR2_01:PORN2]
-~g~C'è un idrovolante che è stato utilizzato nelle scene di alcuni vecchi film di Indy nel retro degli studi.
+[CASH_13:TOSH4]
+Ricominciare da zero, è quello che ha sempre desiderato.
-[POR2_02:PORN2]
-~g~Passa sopra uno dei punti di controllo per cominciare a distribuire volantini.
+[CASH_14:TOSH4]
+Non credo di essere pronta per una vacanza al mare, signor Toni.
-[POR2_03:PORN2]
-~g~Lancia i volantini fino alla fine del punto di controllo.
+[CASH_15:TOSH4]
+Ho perso tutto... e l'ho fatto deliberatamente.
-[POR2_04:PORN2]
-~r~CARBURANTE AL MINIMO!!!
+[CASH_16:TOSH4]
+Mi è stato concesso tutto ciò che volevo.
-[POR2_05:PORN2]
-Usalo per distribuire i volantini per la città.
+[CASH_17:TOSH4]
+Adesso voglio essere veramente libera.
-[DILDO:PORN2]
-Carburante:
+[CASH_18:TOSH4]
+Arrivederci, Toni-san.
-[POR2_Q:PORN2]
-Accidenti.
+{=================================== MISSION TABLE COPCAR ===================================}
-[PORN2_9:PORN2]
-~g~Hai ~1~ secondi per tornare sulla tua Skimmer prima che la missione abbia termine.
+[C_COMP1:COPCAR]
+~w~Missione Vigilante: livello 12 completato! Aumentata la protezione del giubbotto antiproiettile!
-{=================================== MISSION TABLE PORN3 ===================================}
+[C_BREIF:COPCAR]
+~r~Sospetto~w~ visto in prossimità della zona ~a~.
-[POR3_A:PORN3]
-OK, qual è il problema adesso?
+[C_BREIG:COPCAR]
+~r~Sospetti~w~ visti in prossimità della zona ~a~.
-[POR3_B:PORN3]
-SSShhhh!
+[C_RANGE:COPCAR]
+~r~La radio della polizia è fuori campo, avvicinati a una stazione di polizia!
-[POR3_C:PORN3]
-Beh, dopo il suo incontro ravvicinato con le ninfo-invasori,
+[C_TIMEA:COPCAR]
+~w~Tempo bonus! +~1~ secondi
-[POR3_D:PORN3]
-il nostro eroe non riesce a pensare ad altro che a questa immensa montagna fallica...
+[COPCART:COPCAR]
+~w~Hai ~1~ secondi per tornare a un veicolo della polizia prima che la missione abbia termine.
-[POR3_E:PORN3]
-ed è qui che vogliamo girare la scena con la tinozza piena di puré, ma poi noi...
+[COPCARU:COPCAR]
+~w~Hai ~1~ secondo per tornare a un veicolo della polizia prima che la missione abbia termine.
-[POR3_F:PORN3]
-Non me ne può fregar di meno,
+[C_CANC:COPCAR]
+~r~Missione Vigilante annullata!
-[POR3_G:PORN3]
-Basta che continui, continui, continui.
+[C_TIME:COPCAR]
+~r~È scaduto il tuo tempo come tutore della legge!
-[POR3_H:PORN3]
-Ehi Tommy...
+[C_PASS3:COPCAR]
+~w~MINACCIA ELIMINATA! Ricompensa: ~1~$
-[POR3_I:PORN3]
-mi hai accennato qualcosa al telefono riguardo dei problemi legali...
+[C_LEVEL:COPCAR]
+~r~Hai lasciato fuggire i criminali!
-[POR3_J:PORN3]
-Ah sì! Il deputato Alex Shrub, lanciato verso la cattura di nuovi elettori, ha deciso di conquistare i puritani.
+[C_RANG2:COPCAR]
+~r~La radio della polizia non funziona in metropolitana!
-[POR3_K:PORN3]
-Si mormora che voglia supportare delle misure per limitare, diciamo,
+{=================================== MISSION TABLE CARS ===================================}
-[POR3_L:PORN3]
-l'aspetto più carnale della grande industria nazionale dell'intrattenimento.
+[CARS_10:CARS]
+~w~Sali su una macchina per iniziare la prova di guida o abbandona il parcheggio per annullare la missione.
-[POR3_M:PORN3]
-Ottimo.
+[CARS_12:CARS]
+~w~Se abbandoni la macchina, fallirai la missione
-[POR3_N:PORN3]
-Candy! Conosci Shrub,
+[CARS_1:CARS]
+~w~Porta uno dei clienti a fare un giro di prova.
-[POR3_O:PORN3]
-voi ragazzi vi siete lanciati in qualcosa di perverso?
+[CARS_2:CARS]
+~w~Dovrai cercare di capire le esigenze di ogni cliente.
-[POR3_P:PORN3]
-Oh sì, oh sì, oh sì! Sì sì sì SÌ OOOoooh!
+[CARS_3:CARS]
+~w~E poi usare le tue abilità di guida per mostrare al cliente che la macchina è esattamente ciò che sta cercando.
-[POR3_Q:PORN3]
-Ti prego, dimmi che lo hai ripreso.
+[CARS_5:CARS]
+~w~Impressiona il cliente.
-[POR3_R:PORN3]
-Faceva parte del... uh... o stava parlando con...
+[CARS_6:CARS]
+~w~Il cliente è a terra! Scegli un'altra macchina!
-[POR3_S:PORN3]
-Ehi, non saprei dire. Comunque...
+[CARS_30:CARS]
+~w~Torna al ~y~parcheggio~w~ per concludere l'affare!
-[POR3_T:PORN3]
-Ti consiglio vivamente di seguirla dopo le riprese,
+[CARS_C1:CARS]
+~w~Va bene amico, vuoi rompere le scatole agli sbirri eh?
-[POR3_U:PORN3]
-vedi se va dritta al suo nuovo nido d'amore.
+[CARS_C2:CARS]
+~w~Sì, quel tipo se l'è meritata!
-[POR3_V:PORN3]
-Hai una macchina fotografica?
+[CARS_P1:CARS]
+~w~Wow! Questa macchina è una bomba!
-[POR3_X:PORN3]
-Certo, dategliene una.
+[CARS_P2:CARS]
+~w~Woohoo!
-[POR3_02:PORN3]
-~r~Hai ucciso il deputato! Adesso come farai a ricattarlo?
+[CARS_P3:CARS]
+~w~La mia vecchia zia guida così!
-[POR3_03:PORN3]
-~r~Hai allarmato la sorveglianza del deputato: lo porteranno immediatamente via.
+[CARS_P4:CARS]
+~w~Ci sono gli airbag?
-[POR3_04:PORN3]
-Candy, mi chiameresti Martha?
+[CARS_M1:CARS]
+~w~Ah, che bella guida tranquilla.
-[POR3_05:PORN3]
-Oh Alex, cioè Martha. Tutto ciò che vuoi!
+[CARS_M2:CARS]
+~w~Sai qual è il limite di velocità?
-[POR3_06:PORN3]
-Martha, qualcuno ci sta osservando... che cosa perversa.
+[CARS_M3:CARS]
+~w~Oddio! Finirai col farci morire!
-[POR3_07:PORN3]
-Ehi tu. Dammi quella macchina fotografica!
+[CARS_O1:CARS]
+~w~Grandioso! Nessuna strada asfaltata ci può fermare!
-[POR3_01:PORN3]
-~g~Segui la ~h~limousine~g~ di Candy.
+[CARS_O2:CARS]
+~w~Amico, tocchiamo il cielo con un dito!
-[POR3_15:PORN3]
-~r~Hai distrutto la limousine di Candy!
+[CARS_O3:CARS]
+~w~Che volo amico!
-[POR3_17:PORN3]
-~g~Torna allo studio con il rullino.
+[CARS_SC:CARS]
+~w~Vendita completata. Percentuale: ~1~$ Bonus di tempo: ~1~ secondi.
-[POR3_19:PORN3]
-~r~Hai finito il rullino!
+[CARS_SD:CARS]
+~w~Livello ~1~ completato. Percentuale: ~1~$ Bonus di tempo: ~1~ secondi.
-[POR3_21:PORN3]
-~g~Hai perso la limousine di Candy!
+[CARS_IR:CARS]
+~1~ DI FILA! Bonus! ~1~$.
-[POR3_22:PORN3]
-~g~L'hotel WR Chariot di fronte al balcone dovrebbe essere un luogo ideale per scattare le foto.
+[CARS_RE:CARS]
+~w~Un piccolo extra per il nostro miglior venditore!
-[POR3_23:PORN3]
-~g~C'è un ingresso laterale che ti permetterà di entrare nell'hotel.
+[CARSIC1:CARS]
+~w~Ho bisogno di qualcosa che sia molto difficile da inseguire, amico.
-[POR3_08:PORN3]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per ~h~mirare~w~ con la macchina fotografica.
+[CARSIC2:CARS]
+~w~Ho bisogno di un mezzo per stirare questi pedoni del cazzo.
-[POR3_09:PORN3]
-Tieni premuto il ~h~~k~~PED_LOCK_TARGET~~w~ per ~h~mirare~w~ con la macchina fotografica.
+[CARSIP1:CARS]
+~w~Questa bimba sembra un fulmine!
-[POR3_10:PORN3]
-Premi il ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ per ~h~zoomare~w~ con la macchina fotografica e il ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ per ~h~allargare il campo~w~.
+[CARSIP2:CARS]
+~w~Ragazzi, credo che questa bestia sappia persino volare!
-[POR3_11:PORN3]
-Premi il ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ per ~h~zoomare~w~ con la macchina fotografica e il ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ per ~h~allargare il campo~w~.
+[CARSIM1:CARS]
+~w~Ho sentito che questi aggeggi sono facili da guidare.
-[POR3_12:PORN3]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per scattare una foto.
+[CARSIM2:CARS]
+~w~Siccome sono stato operato, ho bisogno di una utilitaria.
-[POR3_13:PORN3]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per scattare una foto.
+[CARSIO1:CARS]
+~w~Ottima per andare fuoristrada!
-[POR3_14:PORN3]
-Premi il ~h~~k~~PED_FIREWEAPON~~w~ per scattare una foto.
+[CARSIO2:CARS]
+~w~Un mio amico compie dei bei numeri con questa, l'adoro!
-[POR3_20:PORN3]
-~g~Se hai bisogno di un mezzo, usa lo ~h~Sparrow~g~ sul retro.
+[CARS_N1:CARS]
+~w~Non ho intenzione di comprare questa ferraglia!
-[POR3_16:PORN3]
-~g~Hai bisogno di tre foto di qualità di Alex Shrub con Candy.
+[CARS_N2:CARS]
+~w~Davvero credevi che avrei comprato questo rottame?
-[POR3_24:PORN3]
-FOTO SCATTATE:
+[CARS_N3:CARS]
+~w~I venditori di macchine usate sono tutti uguali!
-{=================================== MISSION TABLE PORN4 ===================================}
+[CARS_Y1:CARS]
+~w~La prendo!
-[POR4_A:PORN4]
-Mi dispiace, ma adesso proprio non riesco ad ingoiarlo.
+[CARS_Y2:CARS]
+~w~È perfetta!
-[POR4_B:PORN4]
-Oh EDDAI tesoro!
+[CARS_Y3:CARS]
+~w~Hai appena fatto un affare!
-[POR4_C:PORN4]
-È inalberato come un capodoglio, accidenti,
+[CARS_R1:CARS]
+~w~Mi piace la macchina, ma non il colore.
-[POR4_D:PORN4]
-come fai a non farti coinvolgere dalla parte?
+[CARS_R2:CARS]
+~w~Vai a riverniciare la macchina!
-[POR4_E:PORN4]
-Ma Stevie...
+[CARS_D1:CARS]
+~w~Mi piace, ma è conciata male!
-[POR4_F:PORN4]
-Come sta andando il mio regista?
+[CARS_D2:CARS]
+~w~Vai a riparare la macchina!
-[POR4_G:PORN4]
-Oh, accidenti. Lo scontro tra l'integrità artistica e
+[CARS_F1:CARS]
+~r~Hai distrutto la macchina!
-[POR4_H:PORN4]
-i sobbalzi e le pompanti azioni continua senza sosta.
+[CARS_F2:CARS]
+~r~Hai ucciso il cliente!
-[POR4_I:PORN4]
-E, prima che tu me lo chieda, sì, tutti e quattro i film saranno pronti per...
+[CARS_F3:CARS]
+~r~Ci hai messo troppo! Il cliente si è stufato!
-[POR4_J:PORN4]
-Dolcezza, potresti PER FAVORE tenere l'anaconda nell'inquadratura,
+[CARS_F4:CARS]
+~r~Il cliente odia questa macchina!
-[POR4_K:PORN4]
-mi costa più lei all'ora di te!
+[CARS_F5:CARS]
+~r~Hai chiuso con la vendita delle macchine.
-[POR4_L:PORN4]
-Oh, scusa Steve.
+[CARS_F6:CARS]
+~r~Il cliente odia la macchina, l'hai distrutta!
-[POR4_M:PORN4]
-Pensavo, abbiamo bisogno di qualche grossa acrobazia per promuovere il lancio.
+[CARS_F7:CARS]
+~r~Il cliente odia la macchina, sei andato troppo veloce!
-[POR4_N:PORN4]
-Qualcosa che farà davvero impatto sulla città... ti viene in mente niente?
+[CARS_F8:CARS]
+~r~Il cliente odia la macchina, sei andato troppo piano!
-[POR4_O:PORN4]
-Beh, nei vecchio tempi si facevano le feste di gala,
+[CARS_SA:CARS]
+Vendita
-[POR4_P:PORN4]
-attori, limousine, il cielo notturno illuminato dai riflettori...
+[CARS_7:CARS]
+~w~Sali su una ~b~macchina!
-[POR4_Q:PORN4]
-Riflettori? Mi è venuta un'idea...
+[CARS_RF:CARS]
+~w~Capital Autos è sotto la tua 'protezione'. Ricordati di passare a prendere i pagamenti regolarmente.
-[POR4_R:PORN4]
-...sì, sì, sì. I vestiti pieni di lustrini, e le limousine, oh, le prime visioni...
+{=================================== MISSION TABLE BIKE ===================================}
-[POR4_S:PORN4]
-Oh, sì signora, certo signora,
+[BIKE_10:BIKE]
+~w~Sali su una moto per iniziare la prova di guida o abbandona il vicolo per annullare la missione.
-[POR4_T:PORN4]
-e la stampa, e gli sbarramenti di luci...
+[BIKE_12:BIKE]
+~w~Se abbandoni la moto, fallirai la missione.
-[POR4_01:PORN4]
-~g~Raggiungi ~y~Downtown~g~ e posiziona i riflettori sopra l'edificio.
+[BIKE_1:BIKE]
+~w~Porta uno dei clienti a fare un giro di prova.
-[POR4_02:PORN4]
-~g~Avrai bisogno di una moto veloce per saltare da un tetto all'altro. La guardia della sorveglianza possiede una ~y~PCJ 600~g~...
+[BIKE_2:BIKE]
+~w~Dovrai cercare di capire le esigenze di ogni cliente.
-[POR4_03:PORN4]
-~g~Devi raggiungere i tetti degli edifici. Ci dovrebbe essere un ascensore in uno degli uffici ai piani superiori...
+[BIKE_3:BIKE]
+~w~E poi usare le tue abilità di guida per mostrare al cliente che la moto è esattamente ciò che sta cercando.
-[POR4_06:PORN4]
-~g~Torna all'ufficio ai piani inferiori se vuoi accedere nuovamente ai tetti.
+[BIKE_5:BIKE]
+~w~Impressiona il cliente.
-[POR4_07:PORN4]
-~g~Avrai bisogno di una moto per saltare da un edificio all'altro.
+[BIKE_30:BIKE]
+~w~Torna al ~y~negozio di moto~w~ per concludere l'affare!
-[POR4_08:PORN4]
-~g~Lanciati attraverso la finestra per avviare il percorso. Avrai tempo fino alle 07:00 prima che diventi troppo luminoso per muoverti non visto.
+[BIKE_C1:BIKE]
+~w~Va bene amico, vuoi rompere le scatole agli sbirri eh?
-[POR4_09:PORN4]
-~g~I bonus ti mostreranno il successivo edificio su cui saltare.
+[BIKE_C2:BIKE]
+~w~Sì, quel tipo se l'è meritata!
-[POR4_10:PORN4]
-~r~È troppo tardi per arrivare in cima non visto.
+[BIKE_P1:BIKE]
+~w~Sì! Questa moto è stupefacente!
-[POR4_11:PORN4]
-Ritorna alla scala se vuoi accedere nuovamente ai tetti.
+[BIKE_P2:BIKE]
+~w~Bene!
-[POR4_05:PORN4]
-~g~Queste scale portano a un ufficio ai piani inferiori.
+[BIKE_P3:BIKE]
+~w~Forza, non sai andare più veloce di così?
-[POR_AS1:PORN4]
-STUDIO CINEMATOGRAFICO COMPLETATO
+[BIKE_P4:BIKE]
+~w~Attento!
-[POR_AS2:PORN4]
-~g~L'Inter Global Films d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[BIKE_M1:BIKE]
+~w~Ah, che bella guida tranquilla.
-{=================================== MISSION TABLE PROT1 ===================================}
+[BIKE_M2:BIKE]
+~w~Sai qual è il limite di velocità?
-[PRO1_B:PROT1]
-Non sopporto più questo aspetto. Tommy, che ne dici? E se mettessimo un bar...
+[BIKE_M3:BIKE]
+~w~Oddio! Finirai col farci morire!
-[PRO1_D:PROT1]
-Ascoltami,
+[BIKE_O1:BIKE]
+~w~Grandioso! Nessuna strada asfaltata ci può fermare!
-[PRO1_E:PROT1]
-è giunta l'ora di prendere in mano questa città. È tutto pronto per questo.
+[BIKE_O2:BIKE]
+~w~Amico, tocchiamo il cielo con un dito!
-[PRO1_F:PROT1]
-Dobbiamo cominciare a impadronirci del territorio
+[BIKE_O3:BIKE]
+~w~Che acrobazie da pazzi amico!
-[PRO1_G:PROT1]
-e far sapere a Vice City che ci sono nuovi giocatori in città, mi segui?
+[BIKE_SC:BIKE]
+~w~Vendita completata. Percentuale: ~1~$ Bonus di tempo: ~1~ secondi.
-[PRO1_I:PROT1]
-Tommy, ciò di cui hai bisogno è una facciata legale, delle proprietà. A me ha sempre fatto comodo.
+[BIKE_IR:BIKE]
+~1~ DI FILA! Bonus! ~1~$.
-[PRO1_J:PROT1]
-Dobbiamo iniziare a mostrare i denti o tutto questo lavoro sarà stato vano.
+[BIKE_RE:BIKE]
+~w~Un piccolo extra per il nostro miglior venditore!
-[PRO1_K:PROT1]
-I gruppi locali sanno che Diaz è morto e si rifiutano di pagare per la protezione!
+[BIKE_RF:BIKE]
+~w~Hogs & Cogs è sotto la tua 'protezione'. Ricordati di passare a prendere i pagamenti regolarmente.
-[PRO1_L:PROT1]
-Potremmo provare con la corruzione...
+[BIKEIC1:BIKE]
+~w~Ho bisogno di qualcosa che sia molto difficile da inseguire, amico.
-[PRO1_M:PROT1]
-Corruzione? A fanculo la corruzione! Ti mostrerò io come si fa a spaventarli.
+[BIKEIC2:BIKE]
+~w~Ho bisogno di un mezzo per fargliela pagare a quei fottuti pedoni.
-[PRO1_01:PROT1]
-~g~Assali i negozi e fuggi: i proprietari chiederanno la tua protezione.
+[BIKEIP1:BIKE]
+~w~Questo razzo sembra veloce!
-[PRO1_03:PROT1]
-~r~Si trattava di un assali e fuggi, non di un assali e bevi un caffè.
+[BIKEIP2:BIKE]
+~w~Voglio qualcosa che impressioni le tipe!
-[PRO1_04:PROT1]
-Tutti i miei beni, distrutti!
+[BIKEIM1:BIKE]
+~w~Ho sentito che questi aggeggi sono facili da guidare.
-[PRO1_05:PROT1]
-Rovinato... ROVINATO!
+[BIKEIM2:BIKE]
+~w~Sono ancora alle prime armi, ho bisogno di una moto meno potente.
-[PRO1_06:PROT1]
-Maledizione, devo pagare la protezione!
+[BIKEIO1:BIKE]
+~w~Ottima per andare fuoristrada!
-[PRO1_07:PROT1]
-La mia meravigliosa vetrina!
+[BIKEIO2:BIKE]
+~w~Questi affari possono fare delle acrobazie impressionanti, vero?
-[PRO1_08:PROT1]
-Il mio negozio, il mio bellissimo negozio.
+[BIKE_N1:BIKE]
+~w~Non ho intenzione di comprare questa ferraglia!
-[PRO1_09:PROT1]
-Vercetti, ricorda questo nome.
+[BIKE_N2:BIKE]
+~w~Davvero credevi che avrei comprato questo rottame?
-[PRO1_10:PROT1]
-Adesso gestisco io questa città. IO!
+[BIKE_N3:BIKE]
+~w~I venditori di moto usate sono tutti uguali!
-[BUYP1:PROT1]
-Non puoi comprare proprietà in certe aree della mappa.
+[BIKE_Y1:BIKE]
+~w~La prendo!
-[BUYP2:PROT1]
-Se vedi un'icona a forma di casa verde, puoi comprare quella proprietà.
+[BIKE_Y2:BIKE]
+~w~È la moto perfetta per me!
-[PRO1_N:PROT1]
-Sarò di ritorno fra cinque minuti...
+[BIKE_Y3:BIKE]
+~w~Hai appena fatto un affare!
-[PRO1_11:PROT1]
-~g~Raggiungi il ~y~Mall North Point~g~ in ~y~Vice Point~g~.
+[BIKE_R1:BIKE]
+~w~Mi piace la moto ma non il colore.
-[PRO1_12:PROT1]
-~g~Distruggi le vetrine di tutti i negozi e i proprietari saranno pronti a chiederti protezione.
+[BIKE_R2:BIKE]
+~w~Vai a riverniciare la moto!
-[PRO1_A:PROT1]
-Oh, dobbiamo ridecorare questo posto, deve sembrare più vecchio.
+[BIKE_D1:BIKE]
+~w~Mi piace, ma è conciata male!
-[PRO1_C:PROT1]
-Sei il mio avvocato, Rosenberg, non il mio arredatore. Chiaro?
+[BIKE_D2:BIKE]
+~w~Fai riparare la moto!
-[BUYP3:PROT1]
-Posizionati all'interno del simbolo e premi il tasto ~h~~k~~PED_ANSWER_PHONE~~w~ per acquistare la proprietà.
+[BIKE_F1:BIKE]
+~r~Hai distrutto la moto!
+
+[BIKE_F2:BIKE]
+~r~Hai ucciso il cliente!
-[PRO1_13:PROT1]
-~g~Hai cinque minuti per distruggerli tutti.
+[BIKE_F3:BIKE]
+~r~Ci hai messo troppo! Il cliente si è stufato!
-{=================================== MISSION TABLE PROT2 ===================================}
+[BIKE_F4:BIKE]
+~r~Il cliente odia questa moto!
-[PRO2_A:PROT2]
-Qual è il problema?
+[BIKE_F5:BIKE]
+~r~Hai chiuso con la vendita delle moto.
-[PRO2_B:PROT2]
-Alcuni bar si rifiutano di pagare.
+[BIKE_F6:BIKE]
+~r~Il cliente odia la moto, l'hai distrutta!
-[PRO2_C:PROT2]
-Dicono di essere protetti da una gang locale di malviventi.
+[BIKE_F7:BIKE]
+~r~Il cliente odia la moto, sei andato troppo veloce!
-[PRO2_D:PROT2]
-Ma non preoccuparti, Tommy, me ne occupo io.
+[BIKE_F8:BIKE]
+~r~Il cliente odia la moto, sei andato troppo piano!
-[PRO2_E:PROT2]
-E tu te ne occupi in questo modo?
+[BIKE_B1:BIKE]
+~w~Hai ~1~ secondi per tornare sulla ~b~moto!
-[PRO2_F:PROT2]
-Voi due, alzate il culo...
+[BIKE_B2:BIKE]
+~w~Riprendi il ~b~cliente~w~ sulla moto!
-[PRO2_G:PROT2]
-Andiamo.
+[BIKE_B3:BIKE]
+~w~Lascia salire il ~b~cliente~w~ sulla moto!
-[PRO2_01:PROT2]
-~g~Fai fuori le guardie che sorvegliano il Front Page Bar e scopri chi le ha rifornite.
+[BIKE_SA:BIKE]
+Vendita
-[PRO2_10:PROT2]
-~g~Altri due sono riusciti a scappare. Rintracciali e finisci questa storia.
+[BIKE_7:BIKE]
+~w~Sali su una ~b~moto!
-[PRO2_11:PROT2]
-Entra in macchina, idiota.
+[BIKE_S1:BIKE]
+~w~Hai venduto tutte le Freeway in magazzino!
-[PRO2_02:PROT2]
-La tua protezione ha bisogno di più protezione.
+[BIKE_S2:BIKE]
+~w~Hai venduto tutte le PCJ 600 in magazzino!
-[PRO2_03:PROT2]
-Maledizione, non ancora! Non ne voglio sapere!
+[BIKE_S3:BIKE]
+~w~Hai venduto tutte le Faggio in magazzino!
-[PRO2_04:PROT2]
-Questi idioti operano per la DBP Security, con sede dietro all'isolato.
+[BIKE_S4:BIKE]
+~w~Hai venduto tutte le Sanchez in magazzino!
-[PRO2_05:PROT2]
-Vedete di risolverla per i fatti vostri.
+[BIKE_SN:BIKE]
+~w~È stata consegnata della nuova merce!
-[PRO2_06:PROT2]
-Ci si vede più tardi.
+{=================================== MISSION TABLE RAC1 ===================================}
-[PRO2_07:PROT2]
-Sì, sì, certo.
+[RAC1_A0:RAC1]
+~w~Se vuoi provare di essere un pilota modello, presentati alla partenza della prossima gara.
-[PRO2_08:PROT2]
-~g~La DBP Security presto scoprirà le tue intenzioni: attacca prima che si ritiri.
+{=================================== MISSION TABLE RAC2 ===================================}
-[PRO2_09:PROT2]
-~g~Vai a parlare con il proprietario del Front Page.
+[RAC2_A0:RAC2]
+~w~Ehi, si sta per tenere una corsa su strada. Porta il tuo veicolo alla partenza.
-{=================================== MISSION TABLE PROT3 ===================================}
+{=================================== MISSION TABLE RAC3 ===================================}
-[PRO3_A:PROT3]
-Cretino! Ma a cosa pensavi?
+[RAC3_A0:RAC3]
+~w~Non ci sono macchine più veloci e guidatori più abili.
-[PRO3_B:PROT3]
-Ti rendi conto che cosa hai combinato?
+[RAC3_A1:RAC3]
+~w~Ci vediamo alla prossima gara... ti guarderò dal mio specchietto retrovisore.
-[PRO3_C:PROT3]
-Potremmo essere tutti rovinati!
+{=================================== MISSION TABLE BIK1 ===================================}
-[PRO3_D:PROT3]
-Il timer deve essersi inceppato.
+[BIK1_A0:BIK1]
+~w~Pensi di potermi battere? Ti farò un culo così!
-[PRO3_E:PROT3]
-Quel posto era stato minato per saltare come una fabbrica di fuochi d'artificio.
+[BIK1_A1:BIK1]
+~w~Porta la tua moto sulla griglia di partenza e vediamo cosa sai fare!
-[PRO3_F:PROT3]
-Ma qualcuno ha informato i poliziotti...
+{=================================== MISSION TABLE BIK2 ===================================}
-[PRO3_G:PROT3]
-Qual è il problema, ragazzi?
+[BIK2_A0:BIK2]
+~w~Se pensi di potermi battere in una gara, fatti sotto!
-[PRO3_H:PROT3]
-Mike doveva dar fuoco a un locale del Mall,
+[BIK2_A1:BIK2]
+~w~Ci vediamo alla linea di partenza.
-[PRO3_I:PROT3]
-ma ha fatto casino con i fusibili e adesso la polizia sta indagando.
+{=================================== MISSION TABLE BIK3 ===================================}
-[PRO3_J:PROT3]
-Dobbiamo preparare la nostra roba e andarcene da qui!
+[BIK3_A0:BIK3]
+~w~È semplice. Su due ruote non mi batte nessuno. E te lo dimostrerò.
-[PRO3_K:PROT3]
-Rilassatevi, tutti e due: fatemi pensare per un attimo!
+{=================================== MISSION TABLE TT1 ===================================}
-[PRO3_L:PROT3]
-Tommy Vercetti non scappa con la coda fra le gambe.
+[TT1_A0:TT1]
+~w~~k~ ~AMBUY~ ~w~per gareggiare. ~n~~k~ ~AMEXI~ ~w~per uscire.
-[PRO3_M:PROT3]
-I poliziotti passeranno al setaccio l'intero edificio, giusto?
+[TT1_0:TT1]
+Tempo
-[PRO3_N:PROT3]
-Ma tutto ciò richiede tempo.
+[TT1_1:TT1]
+~w~Nuovo giro record: ~1~:~1~
-[PRO3_O:PROT3]
-Dobbiamo entrare e dar fuoco noi stessi al locale.
+[TT1_1A:TT1]
+~w~Nuovo giro record: ~1~:0~1~
-[PRO3_P:PROT3]
-Sì, ma...
+[TT1_C1:TT1]
+~w~3...
-[PRO3_Q:PROT3]
-Solo un poliziotto potrebbe avvicinarsi a meno di un chilometro dal luogo!
+[TT1_C2:TT1]
+~w~2...
-[PRO3_R:PROT3]
-Allora andiamo come poliziotti.
+[TT1_C3:TT1]
+~w~1...
-[PRO3_S:PROT3]
-Recupereremo delle uniformi... e avremo bisogno di una volante.
+[TT1_C4:TT1]
+~w~VIA!
-[PRO3_T:PROT3]
-Tutto questo grazie a te, Mike.
+[TT1_D1A:TT1]
+~w~Salto: ~1~ piedi
-[PRO3_U:PROT3]
-Mi dispiace.
+[TT1_D2:TT1]
+~w~Giro ~1~ Tempo ~1~:~1~
-[PRO3_V:PROT3]
-Ho capito.
+[TT1_D3:TT1]
+~w~Giro ~1~ Tempo ~1~:0~1~
-[PRO3_W:PROT3]
-Quello che dobbiamo fare è attirare i poliziotti con un gestaccio,
+[TT1_D4:TT1]
+~w~Giro
-[PRO3_X:PROT3]
-Metterli con le spalle al muro
+[TT1_F2:TT1]
+~r~Hai abbandonato il percorso!
-[PRO3_Y:PROT3]
-e sopraffarli.
+[TT1_F3:TT1]
+~r~Hai distrutto la moto!
-[PRO3_Z:PROT3]
-Ottimo piano, andiamo!
+[TT1_D5A:TT1]
+~w~Salto: ~1~ piedi - 10$ bonus!
-[PRO3_A1:PROT3]
-Bene.
+[TT1_D1:TT1]
+~w~Salto: ~1~ metri
-[PRO3_01:PROT3]
-OK Lance, attira l'attenzione dei poliziotti!
+[TT1_D5:TT1]
+~w~Salto: ~1~ metri - 10$ bonus!
-[PRO3_02:PROT3]
-~g~Prendi la macchina della polizia e vai a posizionare la bomba nel Tarbrush Café dentro al Mall.
+[TT1_2:TT1]
+~w~Hai battuto il tempo limite! Hai sbloccato il percorso successivo: bonus 100$!
-[PRO3_03:PROT3]
-~g~Hai lasciato Lance indietro, torna a prenderlo.
+[TT1_3:TT1]
+~w~Hai battuto il tempo limite: bonus 100$!
-[PRO3_04:PROT3]
-~g~Andiamo.
+[TTDONE:TT1]
+~w~Tutti i percorsi completati! Hai sbloccato la 'Manchez'.
-[PRO3_05:PROT3]
-~r~Hai ucciso Lance!
+[TT1_2A:TT1]
+~r~Non sei riuscito a battere il tempo limite.
-[PRO3_07:PROT3]
-~g~È saltata la vostra copertura. Muoviti a piazzare la bomba!
+[TT1_2B:TT1]
+~r~Non sei riuscito a battere il record del percorso.
-[PRO3_09:PROT3]
-Legali e imbavagliali!
+{=================================== MISSION TABLE RCR ===================================}
-[PRO3_10:PROT3]
-Oooh. Mi calza a pennello!
+[RCRACE3:RCR]
+~w~Batti gli altri veicoli radiocomandati in una gara di ~1~ giri attorno al parco!
-[PRO3_11:PROT3]
-Un po' stretto sul pacco...
+[RCRACE4:RCR]
+~w~Batti gli altri veicoli radiocomandati in una gara di ~1~ giri attorno all'aeroporto!
-[PRO3_12:PROT3]
-Oh sì, hai ragione, anche a me!
+[RCRACE7:RCR]
+~w~Pronti...
-[PRO3_13:PROT3]
-Tranquillo fratello: nessun poliziotto guida così male!
+[RCRLAP5:RCR]
+~w~Nuovo giro migliore di ~1~ secondi!
-[PRO3_14:PROT3]
-Ricorda: sorridi agli altri poliziotti!
+[RCRLAP6:RCR]
+~w~~1~ giri rimanenti!
-[PRO3_15:PROT3]
-Ehi agente, bel distintivo, bel distintivo.
+[RCRLAP7:RCR]
+~w~Giro finale!
-[PRO3_16:PROT3]
-Un po' più sciolto, Lance.
+[RCRLTME:RCR]
+Tempo del giro
-[PRO3_17:PROT3]
-OK, i timer sono pronti, 5 secondi alla scadenza.
+[RCRLOSE:RCR]
+~r~Hai perso! Non sarai mai il numero uno!
-[PRO3_18:PROT3]
-5 secondi? Dobbiamo scappare di corsa da qua!
+[RCRLOS2:RCR]
+~r~Non vincerai mai una gara se non riesci a rimanere in pista!
-[PRO3_19:PROT3]
-Questo deve davvero averli irritati.
+[RCRTIME:RCR]
+~w~Hai ~h~~1~ ~w~secondi per tornare in pista!
-[PRO3_20:PROT3]
-~g~Fatevi inseguire dai due poliziotti nel garage.
+[RCRWIN1:RCR]
+~w~Congratulazioni hai VINTO, ma non hai battuto il giro più veloce.
-[PRO3_21:PROT3]
-~g~Ottieni un livello di sospetto così i poliziotti ti inseguiranno fino al garage.
+[RCRWIN2:RCR]
+~w~La prossima gara sarà composta da ~1~ giri!
-[PRO3_22:PROT3]
-~g~La porta del garage è bloccata! Liberala così potrai chiuderla.
+[RCRWIN3:RCR]
+~w~È disponibile la RC Race a Belleville Park, Staunton.
-[PRO3_23:PROT3]
-~g~Cammina sul segnalino per piazzare la bomba.
+[RCRWIN4:RCR]
+~w~È disponibile la RC Race all'aeroporto di Shoreside.
-[PRO3_24:PROT3]
-~g~Allontanati dal Café!
+[RCRWIN5:RCR]
+~w~Hai superato tutti i livelli! Ritornaci e batti i tuoi giri più veloci!
-[PRO_AS1:PROT3]
-CIRCOLO DI PROTEZIONE COMPLETATO
+[RCR1:RCR]
+~w~1...
-[PRO_AS2:PROT3]
-~g~La proprietà di Vercetti d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[RCR2:RCR]
+~w~2...
-[PRO3_08:PROT3]
-~g~Torna alla ~h~proprietà di Vercetti~g~ su ~h~Starfish Island~g~.
+[RCR3:RCR]
+~w~3...
-{=================================== MISSION TABLE RACES ===================================}
+[RCRGO:RCR]
+~w~VIA!
-[RACES_2:RACES]
-~g~Hai bisogno di un veicolo per partecipare, non è mica una maratona!
+[RCBLAP:RCR]
+Il giro più veloce attuale: ~1~:~1~
-[RACES_3:RACES]
-3..2..1.. VIA VIA VIA!
+[RCBLAP1:RCR]
+Il giro più veloce attuale: ~1~:0~1~
-[RACES_8:RACES]
-~r~Non hai vinto la corsa!
+[RCBLA2:RCR]
+Giro record: ~1~:~1~
-[RACES00:RACES]
-Corsa ~1~:
+[RCBLA3:RCR]
+Giro record: ~1~:0~1~
-[RACES01:RACES]
-Terminal Velocity
+[RCRRLA1:RCR]
+~w~Nuovo giro record: ~1~:~1~
-[RACES02:RACES]
-Ocean Drive
+[RCRRLA2:RCR]
+~w~Nuovo giro record: ~1~:0~1~
-[RACES03:RACES]
-Border Run
+[RCRACEA:RCR]
+RC allo sbando
-[RACES04:RACES]
-Capital Cruise
+[RCRACEB:RCR]
+RC allo scozzo
-[RACES05:RACES]
-Tour!
+[RCRACEC:RCR]
+RC all'inseguimento
-[RACES06:RACES]
-V.C. Endurance
+[RCLE11:RCR]
+RC allo sbando LIVELLO UNO
-[RACES07:RACES]
-Costo d'ingresso: ~1~$
+[RCLE12:RCR]
+RC allo sbando LIVELLO DUE
-[RACES08:RACES]
-Tempo migliore: ~1~:~1~
+[RCLE13:RCR]
+RC allo sbando LIVELLO TRE
-[RACES09:RACES]
-Miglior risultato: PRIMO
+[RCLE21:RCR]
+RC allo scozzo LIVELLO UNO
-[RACES10:RACES]
-Miglior risultato: SECONDO
+[RCLE22:RCR]
+RC allo scozzo LIVELLO DUE
-[RACES11:RACES]
-Miglior risultato: TERZO
+[RCLE23:RCR]
+RC allo scozzo LIVELLO TRE
-[RACES12:RACES]
-Miglior risultato: QUARTO
+[RCLE31:RCR]
+RC all'inseguimento LIVELLO UNO
-[RACES13:RACES]
-Lunghezza tracciato: ~1~.~1~ km
+[RCLE32:RCR]
+RC all'inseguimento LIVELLO DUE
-[RACES15:RACES]
-Miglior tempo: ND
+[RCLE33:RCR]
+RC all'inseguimento LIVELLO TRE
-[RACES16:RACES]
-Miglior risultato: ND
+[RCRACE2:RCR]
+~w~Batti gli altri veicoli radiocomandati in una gara di ~1~ giri attorno al cantiere edile!
-[RACES18:RACES]
-HAI VINTO: ~1~$
+[RCRWIN6:RCR]
+~w~Gareggia di nuovo e tenta di battere il giro più veloce!
-[RACES19:RACES]
-Non puoi permetterti di partecipare a questa gara.
+[RCQUIT:RCR]
+~r~Si stanno scaricando le batterie?
-[RACES22:RACES]
-Tempo migliore: ~1~:0~1~
+[RCRFAIL:RCR]
+~r~Non sei riuscito ad arrivare primo!
-[RACES23:RACES]
-Lunghezza tracciato: ~1~.~1~ miglia
+[RCRLAP1:RCR]
+~c~1° ~w~GIRO
-[RACES_1:RACES]
-~g~Recupera un veicolo veloce e raggiungi la griglia di partenza.
+[RCRLAP2:RCR]
+~c~2° ~w~GIRO
-[RACEHLP:RACES]
-~w~Premi il ~h~~k~~PED_SPRINT~~w~ per avviare la corsa selezionata. ~w~Premi il ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per uscire.
+[RCRLAP3:RCR]
+~c~3° ~w~GIRO
-{=================================== MISSION TABLE RCHELI1 ===================================}
+[RCRLAP4:RCR]
+~c~4° ~w~GIRO
-[WRECKED:RCHELI1]
-~r~Il veicolo è a pezzi!
+[RCRWIN:RCR]
+~w~Congratulazioni hai VINTO con il giro più veloce di ~1~:~1~! Bonus 500$!
-[RCH1_4:RCHELI1]
-Punti di controllo rimanenti:
+[RCRWINB:RCR]
+~w~Congratulazioni hai VINTO con il giro più veloce di ~1~:0~1~! Bonus 500$!
-[RCH1_6:RCHELI1]
-~g~Usa l'elicottero radiocomandato per attraversare i punti di controllo nella zona dell'aeroporto.
+{=================================== MISSION TABLE TOUR ===================================}
-[RCH1_7:RCHELI1]
-~g~In totale ci sono 20 punti di controllo.
+[TOUR_H1:TOUR]
+~w~Suggerimenti: mettiti ~h~davanti~w~ al turista, ~h~non troppo lontano.~w~ Assicurati che sia ~h~il turista che lo sfondo ~w~ siano nella foto.
-[RCH1_12:RCHELI1]
-~r~L'elicottero radiocomandato si sta allontanando dal raggio d'azione!
+[TOUR_I2:TOUR]
+~w~Riceverai un'extra per le foto di alta qualità!
-[RCH1_13:RCHELI1]
-~r~L'elicottero radiocomandato è fuori portata!
+[TOUR_S0:TOUR]
+~w~Ti sono rimaste ~h~~1~~w~ fotografie.
-[RCH1_8:RCHELI1] { reVC update }
-~g~Se desideri interrompere la missione, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~ per far esplodere l'elicottero.
+[TOUR_S1:TOUR]
+~w~Ti rimane una sola foto. Assicurati che sia un buono scatto!
-{=================================== MISSION TABLE RCPLNE1 ===================================}
+[TOUR_S2:TOUR]
+~w~Non sprecare scatti! Ti rimangono ~h~~1~~w~ fotografie.
-[RCPL1_4:RCPLNE1]
-~g~Sfida nella GARA A TAPPE altri 3 aerei radiocomandati.
+[TOUR_S4:TOUR]
+~w~Devi inquadrare bene il ~b~turista~w~ nell'immagine! Ti rimangono ~h~~1~~w~ fotografie.
-[RCPL1_5:RCPLNE1]
-~g~Vola attraverso i punti di controllo in Vice City.
+[TOUR_F1:TOUR]
+~r~Il turista è morto!
-[RCPL1_6:RCPLNE1] { reVC update }
-~g~Se desideri interrompere la missione, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~ per far esplodere l'aereo.
+[TOUR_F2:TOUR]
+~r~Hai perso il turista!
-[RCPL1_8:RCPLNE1]
-~g~L'aereo radiocomandato è quasi fuori portata!
+[TOUR_F3:TOUR]
+~r~Non sei riuscito a scattare una foto del turista!
-[RCPL1_9:RCPLNE1]
-~r~L'aereo radiocomandato è fuori portata!
+[TOUR_F4:TOUR]
+~r~Il tempo è scaduto!
-{=================================== MISSION TABLE RCRACE1 ===================================}
+[TOUR_F5:TOUR]
+~r~Missione annullata.
-[RCR1_4:RCRACE1]
-Giri rimanenti:
+[TOUR_F6:TOUR]
+~r~Il rapinatore è scappato con la macchina fotografica del turista!
-[RCR1_1:RCRACE1]
-~g~Sfida in una gara a tappe altre 3 macchine radiocomandate.
+[TOUR_O1:TOUR]
+~w~Porta il turista in un ~y~punto famoso.
-[RCR1_2:RCRACE1]
-~g~Per vincere, completa per primo due giri del tracciato!
+[TOUR_O2:TOUR]
+~w~Non lasciare indietro il ~b~turista~w~!
-[RCR1_6:RCRACE1]
-~g~La macchina radiocomandata è quasi fuori portata!
+[TOUR_O3:TOUR]
+~w~Segui il ~b~turista~w~ a piedi nel luogo della foto.
-[RCR1_7:RCRACE1]
-~r~La macchina radiocomandata è fuori portata!
+[TOUR_O4:TOUR]
+~w~Usa la macchina fotografica dei ~b~turisti~w~ per scattare le immagini.
-{=================================== MISSION TABLE ROCK1 ===================================}
+[TOUR_O5:TOUR]
+~w~Riporta il turista all'~y~aeroporto.
-[RBM1_A:ROCK1]
-AllllllllRrrighttt!
+[TOUR_O6:TOUR]
+~w~Veloce! Il tempo sta per scadere!
-[RBM1_B:ROCK1]
-Brillante, davvero brillante!
+[TOUR_O7:TOUR]
+~w~Prendi il ~b~turista.
-[RBM1_D:ROCK1]
-Ehi, hai già incontrato i Love Fist?
+[TOUR_O8:TOUR]
+~w~Prendi il prossimo ~b~turista~w~ prima che scada il tempo.
-[RBM1_E:ROCK1]
-No, non ancora, ma mi piace molto la vostra musica.
+[TOUR_O9:TOUR]
+~w~Dovresti seguire il ~b~turista!~w~ Stai perdendo tempo.
-[RBM1_F:ROCK1]
-Lascia che ti presenti la band.
+[TOUR_OA:TOUR]
+~w~Il ~b~turista~w~ ti sta aspettando per prendere una foto. Muoviti, il tempo sta per scadere!
-[RBM1_G:ROCK1]
-Questo è P, Percy, Dick. Willy è nel cesso! Jezz è invece il tipo che hai visto prima nella cabina di registrazione.
+[TOUR_W1:TOUR]
+~w~Guadagno: ~h~~1~$~w~ Spiacente, nessun bonus questa volta.
-[RBM1_H:ROCK1]
-Ragazzi, vorrei presentarvi un mio carissimo amico.
+[TOUR_W2:TOUR]
+~w~Guadagno: ~h~~1~$~w~ più ~h~~1~$~w~ per aver scattato una bella foto!
-[RBM1_I:ROCK1]
-Si chiama Tommy. Ci conosciamo da tempo.
+[TOUR_W3:TOUR]
+~w~Guadagno: ~h~~1~$~w~ più ~h~~1~$~w~ per aver scattato un'ottima foto!
-[RBM1_J:ROCK1]
-Ciao amico.
+[TOUR_W4:TOUR]
+~w~Guadagno: ~h~~1~$~w~ più ~h~~1~$~w~ per aver scattato una foto eccezionale!
-[RBM1_K:ROCK1]
-E, ehm, qual era il tuo nome?
+[TOUR_W5:TOUR]
+~w~Ben fatto! Tutte le missioni 'Soddisfatti o non pagati' sono state completate. ~1~$ per il completamento!
-[RBM1_L:ROCK1]
-Eddai Jezz che lo sai,
+[TOURDAM:TOUR]
+~w~VISTA ~1~: ~w~Porta questo turista alla Cochrane Dam e scatta una foto per provare che è stato lì!
-[RBM1_M:ROCK1]
-non fare questi scherzetti con me, amico,
+[TOURBRI:TOUR]
+~w~VISTA ~1~: ~w~Questa signora vuole vedere Callahan Bridge dal lato di Portland.
-[RBM1_N:ROCK1]
-sono troppo furbo per cascarci, tesoro!
+[TOURDRK:TOUR]
+VISTA ~1~: ~w~Scatta una foto di questa fan davanti alla casa di Black Lightman a Cedar Grove, Shoreside Vale.
-[RBM1_O:ROCK1]
-Vedi, la situazione Tom è che i ragazzi hanno bisogno di aiuto.
+[TOURSTA:TOUR]
+~w~VISTA ~1~: ~w~Scatta una foto di questa fanatica sportiva davanti al Liberty Memorial Coliseum di Staunton.
-[RBM1_P:ROCK1]
-Non hanno i contatti giusti da questa parte, del tipo 'come sta tuo padre'.
+[TOURCHU:TOUR]
+~w~VISTA ~1~: ~w~Accompagna questo pellegrino alla storica cattedrale di Liberty a Staunton.
-[RBM1_Q:ROCK1]
-Abbiamo bisogno di droga, amico!
+[TOURBCH:TOUR]
+~w~VISTA ~1~: ~w~Mostra alla turista la splendida visuale di Portland Rock e del faro da Portland Beach.
-[RBM1_R:ROCK1]
-Dobbiamo fare un po' di casino alla Love Fist, capito?
+[TOURCHI:TOUR]
+~w~VISTA ~1~: ~w~L'ambientazione orientale di Chinatown Plaza a Portland è una destinazione fondamentale per i turisti.
-[RBM1_S:ROCK1]
-Beh, questa è Vice City. Qual è il problema?
+[TOURSHO:TOUR]
+~w~VISTA ~1~: ~w~Questa turista vuole che le sue amiche pensino che ha fatto compere nell'esclusivo Staunton Shopping Mall. Portala là e scatta una foto.
-[RBM1_U:ROCK1]
-Love Juice, sì!
+[TOURCAS:TOUR]
+~w~VISTA ~1~: ~w~C'è un giocatore d'azzardo che vuole farsi scattare una foto davanti al casinò di Staunton.
-[RBM1_V:ROCK1]
-Love Juice?
+[TOURMUS:TOUR]
+~w~VISTA ~1~: ~w~Questa studente vuole visitare il museo di Liberty City a Staunton e vuole una foto che mostri l'imponenza dell'edificio.
-[RBM1_W:ROCK1]
-Sì, due parti di broda, una parte di polvere, cinque bombe effervescenti e un litro di petrolio.
+[TOURHAL:TOUR]
+~w~VISTA ~1~: ~w~Questo turista vuole visitare il municipio a Staunton ancora una volta prima di andarsene.
-[RBM1_X:ROCK1]
-Ci puoi aiutare, amico?
+[TOURRED:TOUR]
+~w~VISTA ~1~: ~w~Gli amici dicono che non è abbastanza uomo da farsi un giro nel Red Light District di Portland! Mostra loro il contrario!
-[RBM1_Y:ROCK1]
-Beh, significherebbe molto per i ragazzi.
+[TOURMU0:TOUR]
+~w~Il ~r~rapinatore~w~ ha rubato la macchina fotografica del turista!
-[RBM1_Z:ROCK1]
-Lo farai per loro, vero?
+[TOURMU1:TOUR]
+~w~Un criminale in meno del quale preoccuparsi! Raccogli la ~g~macchina fotografica.
-[RBM1_7:ROCK1]
-~r~Non hai portato la Love Juice in tempo!
+[TOUR00:TOUR]
+~w~Porta il turista alla ~y~Cochrane Dam~w~ a Shoreside Vale.
-[RBM1_8:ROCK1]
-~r~Mercedes è morta!
+[TOUR01:TOUR]
+~w~Porta la turista al ~y~Liberty Memorial Coliseum~w~ di Staunton.
-[RBM1_10:ROCK1]
-~r~Idiota! Hai distrutto la merce!
+[TOUR02:TOUR]
+~w~Porta il turista a ~y~Chinatown Plaza~w~ a Portland.
-[RBM1_13:ROCK1]
-~g~Porta la 'Love Juice' e Mercedes alla band prima che salgano sul palco.
+[TOUR03:TOUR]
+~w~Porta il turista alla ~y~cattedrale di Liberty~w~ a Staunton.
-[RBM1_15:ROCK1]
-~r~Hai perso lo spacciatore, i soldi e la droga!
+[TOUR06:TOUR]
+~w~Porta il turista allo ~y~Strip Club~w~ nel Red Light District di Portland.
-[RBM1_17:ROCK1]
-~g~Uccidi lo spacciatore e recupera la droga!
+[TOUR07:TOUR]
+~w~Porta la turista al ~y~Liberty City Museum~w~ di Staunton.
-[MOB_07A:ROCK1]
-Ehi amico, ai ragazzi non dispiacerebbe un po' di compagnia, se capisci cosa intendo...
+[TOUR08:TOUR]
+~w~Porta il turista al ~y~casinò~w~ di Staunton.
-[MOB_07B:ROCK1]
-Conosco la ragazza giusta.
+[TOUR10:TOUR]
+~w~Porta il turista al ~y~municipio~w~ a Staunton.
-[ROK1_5:ROCK1]
-Ehi Mercedes!
+[TOUR11:TOUR]
+~w~Porta il turista alla spiaggia di ~y~Portland.
-[ROK1_6:ROCK1]
-Ciao Tommy, come stai?
+[TOUR04:TOUR]
+~w~Porta la turista al ~y~Callahan Bridge~w~, dal lato di Portland.
-[ROK1_7:ROCK1]
-Non male. Senti, ti piacerebbe intrattenere i Love Fist?
+[TOUR09:TOUR]
+~w~Porta il turista alla ~y~casa di Black Lightman~w~ a Cedar Grove, Shoreside Vale.
-[ROK1_8:ROCK1]
-OK, ma per questo favore voglio una ricompensa...
+[TOUR_I1:TOUR]
+~w~Scorta i turisti nei punti famosi di Liberty City.
-[RBM1_14:ROCK1]
-~g~Hai bisogno di una macchina o di una moto!
+[TOUR_IA:TOUR]
+~w~Quando arrivi a destinazione, scatta delle foto ricordo per loro.
-[RBM1_1:ROCK1]
-~g~Vai a prendere Mercedes al suo appartamento.
+[TOUR_IB:TOUR]
+~w~Poi portali indietro prima che l'aereo decolli.
-[RBM1_12:ROCK1]
-~g~Raccogli gli ingredienti per la 'Love Juice' dallo spacciatore.
+[TOURMEM:TOUR]
+~w~VEDUTA ~1~: ~w~Questo veterano vuole rendere omaggio ai suoi commilitoni al Liberty City War Memorial a Belleville Park, Staunton.
-[ROK1_2:ROCK1]
-NON NECESSARIO
+[TOUR05:TOUR]
+~w~Porta il turista al ~y~Liberty City War Memorial~w~ a Belleville Park, Staunton.
-[ROK1_3:ROCK1]
-NON NECESSARIO
+{=================================== MISSION TABLE PIZZA ===================================}
-[MERC_39:ROCK1]
-Ci vediamo più tardi, tesoro.
+[PIZ1_06:PIZZA]
+~w~Premi~h~ ~k~ ~TGSUB~ ~w~quando sei in moto per annullare la missione.
-[RBM1_C:ROCK1]
-Ehi, Tommy! Sono felice che ce tu l'abbia fatta.
+[PIZ1_02:PIZZA]
+~w~Hai finito le pizze! Torna da ~y~Joe's~w~ per recuperarne altre.
-[ROK1_1A:ROCK1]
-Stai cercando qualcosa di speciale? Ho proprio ciò che ti serve!
+[PIZ1_07:PIZZA]
+~r~Hai ucciso un cliente! Sei licenziato!
-[ROK1_9:ROCK1]
-Grazie per i soldi, idiota!
+[PIZ1_08:PIZZA]
+~r~Tempo scaduto, sei licenziato!
-[RBM1_T:ROCK1]
-Abbiamo bisogno di Love Juice, hai presente?
+[PIZ1_09:PIZZA]
+~r~Hai distrutto il nostro motorino! Fuori di qui!
-{=================================== MISSION TABLE ROCK2 ===================================}
+[PIZ1_11:PIZZA]
+~w~Devi usare il ~b~motorino~w~ delle pizze per consegnare gli ordini!
-[RBM2_A:ROCK2]
-Tommy, amico, sono felice di vederti!
+[PIZ1_12:PIZZA]
+Pizze
-[RBM2_B:ROCK2]
-Cosa succede?
+[PIZ1_13:PIZZA]
+~w~Pizza! Calda e pronta a partire! L'adoro!
-[RBM2_C:ROCK2]
-Brutte vibrazioni, Tommy...
+[PIZ1_14:PIZZA]
+~w~Queste sono già pronte... Fila!
-[RBM2_E:ROCK2]
-C'è questo tipo, lo conosciamo appena, ma lui la sa lunga su di noi.
+[PIZ1_15:PIZZA]
+~w~Questa è bella piccante!
-[RBM2_F:ROCK2]
-Come questo tipo. Sa tutto su di noi.
+[PIZ1_16:PIZZA]
+~w~Togliti le mani dal culo e corri a consegnare le pizze, spicciati!
-[RBM2_G:ROCK2]
-Sa che Willy ama la biancheria intima femminile, eh!
+[PIZ1_17:PIZZA]
+~w~Queste pizze devono essere consegnate oggi, non l'anno prossimo!
-[RBM2_H:ROCK2]
-O che a Percy piacciono i Duran Duran!
+[PIZ1_18:PIZZA]
+~w~Consegnare le pizze è un brutto lavoro? Beh, scusami tanto, professore!
-[RBM2_K:ROCK2]
-Sì, come nella storia dei missili, esatto. Ma ascolta, questo bastardo...
+[PIZ1_19:PIZZA]
+~w~Hai intenzione di fare queste consegne o no?
-[RBM2_L:ROCK2]
-cioè, sì, questo tipo, vuole vedere i Love Fist morti.
+[PIZ1_20:PIZZA]
+~w~Sei licenziato! ...Scherzavo, ma nemmeno tanto, se non farai queste consegne in tempo!
-[RBM2_M:ROCK2]
-Morti, Tommy.
+[PIZ1_21:PIZZA]
+~w~Pizze! Forza! I grassoni ci stanno aspettando!
-[RBM2_N:ROCK2]
-Love Fist morti. Lo sai come si dice, i buoni muoiono giovani.
+[PIZ1_22:PIZZA]
+~w~Hai sputato sulle pizze? Avresti dovuto, aggiunge quel tocco di gusto in più!
-[RBM2_O:ROCK2]
-Ma Tommy, devi salvare i Love Fist!
+[PIZ1_23:PIZZA]
+~w~Pensi che si consegneranno da sole?
-[RBM2_P:ROCK2]
-Abbiamo un concerto fra due ore e credo...
+[PIZ1_24:PIZZA]
+~w~Se le consegni fredde, difficilmente ti pagheranno!
-[RBM2_Q:ROCK2]
-I ragazzi credono che il maniaco stia architettando qualcosa di losco.
+[PIZ1_25:PIZZA]
+~w~Sbrigati!
-[RBM2_1:ROCK2]
-~g~Guida la limousine al concerto e cerca di attirare allo scoperto lo psicopatico.
+[PIZ1_26:PIZZA]
+~w~Ehi, consegna queste!
-[RBM2_2:ROCK2]
-~r~Hai distrutto l'auto della band!
+[PIZ1_27:PIZZA]
+~w~OK, fai la consegna e torna a prenderne altre.
-[RBM2_3:ROCK2]
-~g~Vai al concerto!
+[PIZ1_28:PIZZA]
+~w~Le nostre pizze sono le migliori! Consegnale in tempo o ti prenderò a calci!
-[RBM2_4:ROCK2]
-~g~Becca lo psicopatico! Non farlo scappare!
+[PIZ1_29:PIZZA]
+~w~Ne vuoi ancora? Non so più come insultarti!
-[RBM2_5:ROCK2]
-~r~Lo hai perso, idiota!
+[PIZ1_30:PIZZA]
+~w~Ci ho starnutito sopra! Non importa, consegnale lo stesso!
-[RBM2_7:ROCK2]
-~r~I fan sono stati attaccati: lo psicopatico non si farà vivo!
+[PIZ1_31:PIZZA]
+~w~Odio questo lavoro, ma almeno ti faccio sgobbare in giro.
-[RBM2_8:ROCK2]
-~r~Le guardie della sorveglianza sono state attaccate: lo psicopatico non si farà vivo!
+[PIZ1_3A:PIZZA]
+~w~Se non le consegnerai in tempo, non ti darò un soldo!
-[PSYCH_1:ROCK2]
-Vedrò i Love Fist bruciare!
+[PIZ1_32:PIZZA]
+~r~Non sopporti la nostra pizza?
-[PSYCH_2:ROCK2]
-I Love Fist hanno rovinato la mia vita!
+[PIZ1_33:PIZZA]
+~w~Torna da ~y~Joe's~w~ per nuovi ordini.
-[RBM2_I:ROCK2]
-Sta zitto, idiota. Solo perché a Jezz piacciono le pecore.
+[PIZ1_34:PIZZA]
+~w~Consegna effettuata, soldi incassati!
-[RBM2_R:ROCK2]
-Ma sta' zitto!
+[PIZ_WON:PIZZA]
+~w~Lavoro di consegna delle pizze completato! Il tuo livello massimo di salute è aumentato!
-[RBM2_D:ROCK2]
-Certo, niente scherzi, è roba forte, davvero forte sai?
+[PIZ_WO1:PIZZA]
+~w~Il ristorante di Joe's è sotto la tua 'protezione'. Ricordati di passare a prendere i pagamenti regolarmente.
-[RBM2_J:ROCK2]
-È una questione di passione, sai?
+[PIZ1_01:PIZZA]
+~w~Vai a consegnare queste pizze ai nostri ~b~clienti~w~ il più rapidamente possibile.
-{=================================== MISSION TABLE ROCK3 ===================================}
+[PIZ1_05:PIZZA]
+~w~Per lanciare una pizza a un cliente, usa la visuale laterale.
-[RBM3_A:ROCK3]
-Tommy! Tommy! Tommy amico, lo psicopatico è tornato!
+{=================================== MISSION TABLE TAXI ===================================}
-[RBM3_B:ROCK3]
-Che succede?
+[TAXI1:TAXI]
+~w~Cerca un ~b~passeggero.
-[RBM3_C:ROCK3]
-Quello psicopatico non vuole lasciar stare i Love Fist!
+[TAXI1A:TAXI]
+~w~Non ci sono passeggeri da queste parti, continua a cercare!
-[RBM3_D:ROCK3]
-Non lo hai ucciso, amico. E adesso è tornato.
+[TAXI2:TAXI]
+~r~Tempo scaduto!
-[RBM3_E:ROCK3]
-Sì, sì, sì e il problema è che...
+[TAXI3:TAXI]
+~w~Il passeggero è fuggito terrorizzato!
-[RBM3_F:ROCK3]
-Il problema è che abbiamo bisogno di qualcuno di cui ci fidiamo per guidare la limousine,
+[TAXI4:TAXI]
+~w~Corsa completata: ~1~$
-[RBM3_G:ROCK3]
-poiché il pazzo continua a minacciarci!
+[TAXI4A:TAXI]
+~w~Corsa completata: bonus ~1~$ + ~1~ DI FILA! ~1~$
-[RBM3_I:ROCK3]
-Stiamo letteralmente cadendo a pezzi.
+[TAXI5:TAXI]
+~w~BONUS VELOCITÀ: ~1~$
-[RBM3_J:ROCK3]
-OK ragazzi, calmatevi. Me ne occuperò io.
+[TAXI5A:TAXI]
+~w~BONUS VELOCITÀ: bonus ~1~$ + ~1~ DI FILA! ~1~$
-[RBM3_K:ROCK3]
-Generalmente non perdo tempo a portare in giro un gruppo di ubriaconi scozzesi bisessuali,
+[TAXI7:TAXI]
+~w~La tua macchina è distrutta, falla riparare!
-[RBM3_L:ROCK3]
-ma, nel vostro caso, farò un'eccezione.
+[TAXI8:TAXI]
+~r~Missione taxi annullata.
-[ROK3_03:ROCK3]
-Conviene fare un giro più lungo.
+[TAXI9:TAXI]
+~r~Il tuo taxi è stato distrutto!
-[ROK3_04:ROCK3]
-Ehi Tommy, cambia la stazione.
+[FARES:TAXI]
+Corse
-[ROK3_08:ROCK3]
-Mi sto annoiando di tutto questo.
+[TIP:TAXI]
+Mancia
-[ROK3_09:ROCK3]
-Tieni premuto il maledetto pedale!
+[FARE9:TAXI]
+~w~Destinazione ~y~'Portland docks'.
-[ROK3_61:ROCK3]
-Dobbiamo trovare la bomba!
+[FARE20:TAXI]
+~w~Destinazione ~y~'il parco' ~w~a Belleville.
-[ROK3_28:ROCK3]
-Suonerò il basso all'inferno.
+[FARE22:TAXI]
+~w~Destinazione ~y~'Cochrane Dam'.
-[ROK3_30:ROCK3]
-Qualcuno faccia qualcosa.
+[FARE2:TAXI]
+~w~Destinazione ~y~'Head Radio'~w~, Harwood.
-[ROK3_32:ROCK3]
-OK, osso duro, fai qualcosa tu allora.
+[FARE3:TAXI]
+~w~Destinazione ~y~'porto dei traghetti'~w~, Harwood.
-[ROK3_34:ROCK3]
-Willy, potresti succhiare la broda con una cannuccia.
+[FARE4:TAXI]
+~w~Destinazione ~y~'ospedale'~w~, Portland View.
-[ROK3_37:ROCK3]
-Passa una cannuccia a Willy!
+[FARE7:TAXI]
+~w~Destinazione ~y~'cantiere edile'~w~, Hepburn Heights.
-[ROK3_41:ROCK3]
-Quale filo, Tommy?
+[FARE8:TAXI]
+~w~Destinazione ~y~'ristorante di Cipriani'~w~, Saint Mark's.
-[ROK3_42:ROCK3]
-Quello verde.
+[FARE10:TAXI]
+~w~Destinazione ~y~'Punk Noodles'~w~, Chinatown.
-[ROK3_43:ROCK3]
-Non c'è un filo verde! Questo forse è verde...
+[FARE12:TAXI]
+~w~Destinazione ~y~'porto dei traghetti'~w~, Rockford.
-[ROK3_44:ROCK3]
-Qualcuno di questi fili ti sembra verde?
+[FARE13:TAXI]
+~w~Destinazione ~y~'la chiesa'~w~, Bedford Point.
-[ROK3_49:ROCK3]
-Ti ho tenuto con me per anni.
+[FARE14:TAXI]
+~w~Destinazione ~y~'uffici del Liberty Tree'~w~, Bedford Point.
-[ROK3_51:ROCK3]
-Una ragazzina isterica.
+[FARE15:TAXI]
+~w~Destinazione ~y~'università di Liberty'~w~, Liberty Campus.
-[ROK3_52:ROCK3]
-Sì.
+[FARE16:TAXI]
+~w~Destinazione ~y~'Hogs 'n' Cogs'~w~, Belleville Park Area.
-[ROK3_53:ROCK3]
-Taci e taglia un filo.
+[FARE17:TAXI]
+~w~Destinazione ~y~'palazzo di giustizia'~w~, Belleville Park Area.
-[ROK3_54:ROCK3]
-Quale filo?
+[FARE18:TAXI]
+~w~Destinazione ~y~'Mr. Benz'~w~, Bedford Point.
-[ROK3_55:ROCK3]
-Questo qua...
+[FARE19:TAXI]
+~w~Destinazione ~y~'Joe's Pizza'~w~, Bedford Point.
-[ROK3_56:ROCK3]
-NO!
+[FARE21:TAXI]
+~w~Destinazione ~y~'Terminal A'~w~, aeroporto internazionale Francis.
-[ROK3_57:ROCK3]
-Oddio, siamo vivi. Non siamo esplosi, amico. Tommy, bel lavoro. Rock and roll, ragazzi.
+[FARE23:TAXI]
+~w~Destinazione ~y~'la villa'~w~, Cedar Grove.
-[ROK3_58:ROCK3]
-Non abbiamo uno spettacolo a cui andare? Del casino da fare? Fans di cui abusare?
+[FARE24:TAXI]
+~w~Destinazione ~y~'l'ospedale'~w~, Pike Creek.
-[ROK3_59:ROCK3]
-LOVE FIST!
+[FARE25:TAXI]
+~w~Destinazione ~y~'il parco'~w~, Shoreside Vale.
-[ROK3_60:ROCK3]
-Hai finito con quella bottiglia?
+[FARE26:TAXI]
+~w~Destinazione ~y~'North West Towers'~w~, Wichita Gardens.
-[RBM3_4:ROCK3]
-~r~Hai ucciso i Love Fist!
+[FARE27:TAXI]
+~w~Destinazione ~y~'deposito dei pullman'~w~, Trenton.
-[RBM3_6:ROCK3]
-DETONAZIONE:
+[FARE28:TAXI]
+~w~Destinazione ~y~'Mr. Benz'~w~, Chinatown.
-[RBM3_1:ROCK3]
-~g~Trasporta i Love Fist al concerto.
+[FARE29:TAXI]
+~w~Destinazione ~y~'Mr. Benz'~w~, Pike Creek.
-[RBM3_2:ROCK3]
-Mentre la bomba è innescata, esploderà se cercherai di lasciare la macchina...
+[FARE30:TAXI]
+~w~Destinazione ~y~'Terminal C'~w~, aeroporto internazionale Francis.
-[RBM3_3:ROCK3]
-Se la barra di detonazione si riempie completamente, la bomba esploderà.
+[FARE31:TAXI]
+~w~Destinazione ~y~'AM Petroleum'~w~, Pike Creek.
-[RBM3_8:ROCK3]
-Più velocemente guidi, più lentamente si riempirà.
+[FARE32:TAXI]
+~w~Destinazione ~y~'Liberty Pharmaceuticals'~w~, Pike Creek.
-[RBM3_7:ROCK3]
-~g~BOMBA DISINNESCATA!
+[FARE11:TAXI]
+~w~Destinazione ~y~'negozio di Phil Cassidy'~w~, Bedford Point.
-[ROK3_6A:ROCK3]
-~g~Love Fist. Avete finito di inquinare l'etere.
+[FARE1A:TAXI]
+~w~Destinazione ~y~'Paulie's Revue Bar'~w~, Red Light District.
-[ROK3_6B:ROCK3]
-~g~Vi ho dato la possibilità di essere amici. Adesso vi darò la possibilità di morire.
+[FARE1C:TAXI]
+~w~Destinazione ~y~'Sex Club Seven'~w~, Red Light District.
-[ROK3_62:ROCK3]
-Per cui abbiamo pensato di mostrarti il nostro Tempio del Rock.
+[FARE5:TAXI]
+~w~Destinazione ~y~'Ammu-Nation'~w~, Red Light District.
-[ROK3_63:ROCK3]
-Per percepire il furore alla Love Fist!
+[FARE6:TAXI]
+~w~Destinazione ~y~'Capital Autos'~w~, Saint Mark's.
-[ROK3_64:ROCK3]
-Ascolta come parli, amico. Si tratta di carta pesta e adesivo.
+{=================================== MISSION TABLE AMBU ===================================}
-[ROK3_65:ROCK3]
-Ehi, ragazzi, questo è il tempio e noi siamo i sacerdoti.
+[A_FAIL2:AMBU]
+~r~La tua scarsa sollecitudine è stata fatale al paziente!
-[ROK3_66:ROCK3]
-Beh, se i ragazzi amano i loro sacerdoti a pezzi e mezzi sordi,
+[A_FAIL3:AMBU]
+~r~Il paziente è morto!
-[ROK3_67:ROCK3]
-chi sono per discutere?
+[ATUTOR4:AMBU]
+~w~Ogni impatto riduce le speranze di sopravvivenza del paziente.
-[ROK3_68:ROCK3]
-Oddio, si è rovinato nuovamente il nastro.
+[A_TIME:AMBU]
+~w~Paziente recuperato +~1~ secondi
-[ROK3_69:ROCK3]
-Se andiamo avanti così, dovremo suonare dal vivo.
+[A_TIME2:AMBU]
+~w~Bonus! +~1~ secondi
-[ROK3_70:ROCK3]
-Oooh merda! La pancia...
+[AREWARD:AMBU]
+~w~Livello ~1~ completato! Ricompensa: ~1~$
-[ROK3_74:ROCK3]
-Ah guarda: che cos'è? Ehi Tommy, metti su questo nastro.
+[A_RANGE:AMBU]
+~r~La radio dell'ambulanza è fuori campo, avvicinati a un ospedale!
-[ROK3_01:ROCK3]
-Finalmente, amico: è l'ora di un bel drink.
+[ATUTOR5:AMBU]
+~w~Carica un ~b~paziente.
-[ROK3_02:ROCK3]
-Il concerto è a cento metri lungo la strada.
+[ATUTOR6:AMBU]
+~w~Porta il paziente all'~y~ospedale!
-[ROK3_05:ROCK3]
-Mi rimbambisco se non agito la testa.
+[ATUTOR7:AMBU]
+~w~Carica altri ~b~pazienti~w~, o porta questo all'~y~ospedale.
-[ROK3_07:ROCK3]
-Tommy, amico, devi salvare la band!
+[A_FULL:AMBU]
+~w~L'ambulanza è piena! Scarica i pazienti all'~y~ospedale!
-[ROK3_29:ROCK3]
-Tommy, continua a guidare senza rallentare!
+[A_RANG2:AMBU]
+~r~La radio dell'ambulanza non funziona in metropolitana!
-[ROK3_31:ROCK3]
-Bella: 'Qualcuno faccia qualcosa'. Ma che idiozia è questa? Ho conosciuto froci più coraggiosi.
+{=================================== MISSION TABLE TV ===================================}
-[ROK3_33:ROCK3]
-Ascolta, sono un musicista. Non ho la minima idea di come disarmare una bomba.
+[TV_01:TV]
+Slash TV
-[ROK3_35:ROCK3]
-Sì, mi è giunta voce che sei bravo in queste cose.
+[TV_02:TV]
+~w~Uccidi tutti gli psicopatici... continuano ad arrivare!
-[ROK3_38:ROCK3]
-Una cannuccia? Questo è il furgone da tour dei Love Fist!
+[TV_03:TV]
+~w~Ogni livello diventa sempre più difficile per via del maggior numero di nemici... con maggiori premi in palio!
-[ROK3_39:ROCK3]
-Dove diavolo la trovo una cannuccia, amico?
+[TV_04:TV]
+~w~LIVELLO ~1~
-[ROK3_46:ROCK3]
-Avrei dovuto scaricarti quando ne ho avuto la possibilità.
+[TV_10:TV]
+~w~Hai vinto un premio extra!
-[ROK3_47:ROCK3]
-Capitalista.
+[TV_09:TV]
+Soldi totali guadagnati nell'episodio: ~1~$!
-[ROK3_48:ROCK3]
-Schiavo dalla gloria.
+[TV_05:TV]
+~w~LIVELLO COMPLETATO!
-[ROK3_73:ROCK3]
-Jezz sta riproducendo il nastro.
+[TV_06:TV]
+~w~Hai vinto ~1~$ in premi!
-[RBM3_9:ROCK3]
-Se ti fermi o guidi lentamente, la barra di detonazione aumenterà.
+[TV_07:TV]
+~w~PRONTI...
-[ROK3_50:ROCK3]
-Sta zitto. Sei un idiota.
+[TV_08:TV]
+~w~VIA!
-[ROK3_36:ROCK3]
-Ehi, ero completamente fuori di testa quella notte, e voi lo sapete!
+{=================================== MISSION TABLE NOODLE ===================================}
-[RBM3_H:ROCK3]
-Mi sto cagando addosso, amico. Voglio la mamma!
+[NDL1_02:NOODLE]
+~w~Uh oh, hai finito i noodle! Torna da ~y~Punk Noodles~w~ per recuperarne altri.
-[ROK3_45:ROCK3]
-La fine imminente mi fa vedere tutto verde.
+[NDL1_06:NOODLE]
+~w~Premi~h~ ~k~ ~TGSUB~ ~w~quando sei in moto per annullare la missione.
-[ROK3_6C:ROCK3]
-~g~Rallenta e la limousine esploderà, insieme ai vostri GROSSI CULI PELOSI!
+[NDL1_07:NOODLE]
+~r~Hai ucciso un cliente! Sei licenziato!
-[ROK3_71:ROCK3]
-Dobbiamo andare avanti con quello che abbiamo. Grazie ancora Tommy. Cioè, sai cosa intendo, ciao!
+[NDL1_08:NOODLE]
+~r~Tempo scaduto. Sei licenziato!
-[ROK3_1:ROCK3]
-Alla fine è giunta l'ora di un meritato bicchierino. Lo spettacolo si tiene a circa cento metri lungo la strada.
+[NDL1_09:NOODLE]
+~r~Hai distrutto il nostro motorino! Sei licenziato!
-[ROK3_2:ROCK3]
-Conviene fare un giro più lungo. Ehi Tommy, cambia la stazione.
+[NDL1_11:NOODLE]
+~w~Torna sul ~b~motorino!
-[ROK3_3:ROCK3]
-Sì Tommy, mi rimbambisco se non agito la testa. Ehi guarda, cos'è questo? Ehi Tommy, metti su questa cassetta.
+[NDL1_12:NOODLE]
+Noodle
-[ROK3_4:ROCK3]
-Love Fist. Avete finito di inquinare l'etere. Vi ho dato la possibilità di essere amici.
+[NDL1_13:NOODLE]
+~w~Noodle! Un bel po' di noodle da consegnare!
-[ROK3_5:ROCK3]
-Adesso vi darò la possibilità di morire. Se rallentate, la vostra limousine esploderà, insieme ai vostri GROSSI CULI PELOSI!
+[NDL1_14:NOODLE]
+~w~I nostri clienti non sono mai sazi dei miei noodle.
-[ROK3_6:ROCK3]
-Tommy, devi salvare la band! Mi sto annoiando di tutto questo. Tieni premuto il maledetto pedale!
+[NDL1_15:NOODLE]
+~w~Ci sono dei noodle da consegnare!
-[ROK3_7:ROCK3]
-Dobbiamo trovare la bomba! Perché? Non possiamo guidare tutto il giorno? È vero, c'è un sacco di roba da bere...
+[NDL1_16:NOODLE]
+~w~Proviamo a consegnare questi noodle in tempo!
-[ROK3_8:ROCK3]
-La bomba non sarà nel motore? Dovremmo fermarci per prenderla! Moriremo tutti quanti! Credo che mi ubriacherò!
+[NDL1_17:NOODLE]
+~w~Ehi amico! Questi noodle sono pronti!
-[ROK3_9:ROCK3]
-Ehi, c'è una coda da rispettare, amico! La risposta non è nel minibar! Spostati!
+[NDL1_18:NOODLE]
+~w~Consegna questi noodle!
-[ROK3_10:ROCK3]
-Ehi, dalla bottiglia di vodka escono un sacco di fili! Non è vodka, quella è BRODA!
+[NDL1_19:NOODLE]
+~w~I nostri clienti vogliono noodle caldi, non freddi!
-[ROK3_11:ROCK3]
-WAAAAAAGGGHHHH!!! Ed è predisposta per esplodere! WAAAAAAAAAAAAGGGHHHHHHHH!!!
+[NDL1_20:NOODLE]
+~w~In cucina fa troppo caldo? Confucio dice 'spegni il forno'.
-[ROK3_12:ROCK3]
-Lo dicevano che l'alcol mi avrebbe fatto fuori... L'ho visto in televisione, devi tagliare uno dei fili. Quale? Non lo so, amico.
+[NDL1_21:NOODLE]
+~w~Consegnerai questi noodle, vero?
-[ROK3_13:ROCK3]
-Non ne ho idea. Willy, dimmi qualcosa. Suonerò il basso all'inferno.
+[NDL1_22:NOODLE]
+~w~Altri noodle pronti per essere consegnati.
-[ROK3_14:ROCK3]
-Tommy, continua a guidare senza rallentare! Qualcuno faccia qualcosa. Bella!
+[NDL1_23:NOODLE]
+~w~Noodle, noodle, noodle! Consegnali belli caldi!
-[ROK3_15:ROCK3]
-'Qualcuno faccia qualcosa'. Ma che idiozia è questa? Ho conosciuto froci più coraggiosi. OK, osso duro, fai qualcosa tu allora.
+[NDL1_24:NOODLE]
+~w~C'è gente che sta aspettando! Oh, che fine faremo...
-[ROK3_16:ROCK3]
-Ascolta, io sono un musicista. Non ho la minima idea di come disarmare una bomba. Willy, potresti succhiare la broda con una cannuccia.
+[NDL1_25:NOODLE]
+~w~Perché quest'ordine non è ancora stato consegnato?
-[ROK3_17:ROCK3]
-Sì, mi è giunta voce che sei bravo in queste cose. Ehi, ero completamente fuori di testa quella notte, e voi lo sapete!
+[NDL1_26:NOODLE]
+~w~Cosa stai aspettando? Il capodanno cinese?
-[ROK3_18:ROCK3]
-Passa una cannuccia a Willy! Una cannuccia? Questo è il furgone da tour di Love Fist!
+[NDL1_27:NOODLE]
+~w~Questi noodle si stanno raffreddando. Sbrigati!
-[ROK3_19:ROCK3]
-Dove diavolo la trovo una cannuccia, non so se mi spiego? Quale filo, Tommy? Quello verde. Non c'è un filo verde!
+[NDL1_28:NOODLE]
+~w~Volevo fare l'astronauta, ma ho ereditato questo posto da mio padre... cosa potevo fare?
-[ROK3_20:ROCK3]
-Questo forse è verde... Qualcuno di questi fili ti sembra verde?
+[NDL1_29:NOODLE]
+~w~Se vuoi mantenere il tuo posto di lavoro, sbrigati a fare le consegne.
-[ROK3_21:ROCK3]
-Ih no! La fine imminente mi fa vedere tutto verde! Avrei dovuto scaricarti quando ne ho avuto la possibilità.
+[NDL1_30:NOODLE]
+~w~Noodle fritti croccanti... Non li capisco, ma li adoro.
-[ROK3_22:ROCK3]
-Accecato dalla gloria. Capitalista. Ti ho tenuto con me per anni. Sta zitto. Sei un idiota.
+[NDL1_31:NOODLE]
+~w~Avrei detto che consegnare pizze era più nel tuo stile.
-[ROK3_23:ROCK3]
-Una ragazzina isterica. Sì. Taci e taglia un filo. Quale filo? Questo qua...
+[NDL1_3A:NOODLE]
+~w~Ne vogliono sempre di più. Torna quando avrai finito.
-[ROK3_24:ROCK3]
-NO! Oddio, siamo vivi. Non siamo esplosi, amico.
+[NDL1_32:NOODLE]
+~r~Qual è il tuo problema? Non ti piacciono i noodle?
-[ROK3_25:ROCK3]
-Tommy, bel lavoro. Rock and roll, ragazzi. Non abbiamo uno spettacolo a cui andare?
+[NDL1_33:NOODLE]
+~w~Torna da ~y~Punk Noodles~w~ per altre ordinazioni.
-[ROK3_26:ROCK3]
-Del casino da fare? Fans di cui abusare? LOVE FIST!
+[NDL1_34:NOODLE]
+~w~Noodle consegnati, soldi incassati!
-[ROK3_27:ROCK3]
-Hai finito con quella bottiglia?
+[NDL_WON:NOODLE]
+~w~Complimenti, lavoro di consegna dei noodle completato! Il tuo livello massimo di salute è aumentato!
-{=================================== MISSION TABLE SERG1 ===================================}
+[NDL_WO1:NOODLE]
+~w~Punk Noodles è sotto la tua 'protezione'. Ricordati di passare a prendere i pagamenti regolarmente.
-[TEX1_A:SERG1]
-Vieni a metterti qui vicino a me, figliolo.
+[NDL1_01:NOODLE]
+~w~Consegna questi noodle ai nostri ~b~clienti~w~!
-[TEX1_B:SERG1]
-Diamine, mio padre diceva sempre 'A caval donato non si guarda in bocca' ed effettivamente non lo ha mai fatto.
+[NDL1_05:NOODLE]
+~w~Per lanciare i noodle a un cliente, usa la visuale laterale.
-[TEX1_C:SERG1]
-Vuoi un goccio di sano Kentucky?
+{=================================== MISSION TABLE MPSURV ===================================}
-[TEX1_D:SERG1]
-No, grazie.
+[SAL01:MPSURV]
+~w~Maria, sto andando in ospedale per quella 'cosa' che sai.
-[TEX1_E:SERG1]
-Sei uno dalla testa lucida, mi piace.
+[SAL02:MPSURV]
+~w~Quando sarà fuori, questo vecchio stallone riprenderà a galoppare come al solito...
-[TEX1_F:SERG1]
-Ora, il business dei terreni non ha niente a che fare con quello che dicono i giornali.
+[SAL04:MPSURV]
+~w~PS: prepara la sella per quando sarò fuori, pupa!
-[TEX1_G:SERG1]
-Si tratta solo di polvere! E la volontà di possederla! Mi segui, figliolo?
+[SAL05:MPSURV]
+~w~PPS: ...non lasciare questo foglio in giro!
-[TEX1_H:SERG1]
-Sì, certo.
+[SAL03:MPSURV]
+~w~Stai lontana dai guai perché sarà pieno di scagnozzi che tenteranno di prendere il controllo!
-[TEX1_J:SERG1]
-Tu mi sembri la persona giusta per convincerlo.
+[SAL03A:MPSURV]
+~w~Letteralmente!
-[TEX1_K:SERG1]
-La persuasione è il mio forte.
+{=================================== MISSION TABLE JDREF ===================================}
-[TEX1_L:SERG1]
-Bene. Lo troverai al circolo sportivo, presso il campo da golf.
+[JDT1_BA:JDREF]
+~w~Non c'è lavoro per uno dei Leone!
-[TEX1_M:SERG1]
-Non permettono di entrare con le armi, per cui le sue guardie del corpo non saranno armate.
+[JDT1_BB:JDREF]
+~w~...Ehi Toni, torna quando darai meno nell'occhio.
-[TEX1_N:SERG1]
-Vai e riempilo di santissime mazzate.
+[CHNGOUT:JDREF]
+~w~Cambiati l'abito dei Leone, altrimenti JD non ti potrà parlare.
-[TEX1_O:SERG1]
-Prendi, ti ho iscritto al club, inoltre, credo proprio avrai bisogno di abiti più adeguati.
+{=================================== MISSION TABLE CRED01 ===================================}
-[TEX1_2:SERG1]
-~g~Raggiungi il club di golf Leaf Links.
+[CR01_01:CRED01]
+~n~ ~n~ ~n~ ~n~CREDITS
-[TEX1_0:SERG1]
-~g~Il bersaglio si sta allenando a golf: assicurati che sia la sua ultima partita.
+[CR01_02:CRED01]
+~n~ ~n~ ~n~ ~n~ROCKSTAR NORTH
-[TEX1_3:SERG1]
-Chi è questo tipo? Ragazzi, occupatevene voi.
+[CR01_03:CRED01]
+~n~ ~n~ ~n~ ~n~Producer ~n~Leslie Benzies
-[TEX1_6:SERG1]
-Bel culo bimba!
+[CR01_04:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Aaron Garbut
-[TEX1_7:SERG1]
-Ma sono io?
+[CR01_05:CRED01]
+~n~ ~n~ ~n~ ~n~Technical Direction ~n~Obbe Vermeij, Adam Fowler
-[TEX1_I:SERG1]
-Bene, c'è un tenace bastardo che non si decide a vendere.
+[CR01_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~Written By ~n~Dan Houser, James Worrall ~n~ & David Bland
-[TEX1_8:SERG1]
-Ogni volta che entri su un cart da golf, ottieni automaticamente una mazza da golf, sempre se lo spazio per l'arma corpo a corpo è disponibile.
+[CR01_07:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Alexander Roger, Alexander Illes, ~n~Andrzej Madajczyk, Barane Chan, ~n~Derek Payne, Derek Ward,
-[TEX1_9:SERG1]
-Prendilo!
+[CR01_08:CRED01]
+~n~ ~n~Gordon Yeoman, Graeme Williamson, ~n~Greg Smith, James Broad, ~n~John Gurney, John Whyte,
-[TEX1_10:SERG1]
-Uccidi lo psicopatico!
+[CR01_09:CRED01]
+~n~ ~n~Keith McLeman, Mark Nicholson, ~n~Shaun McKillop
-[TEX1_1:SERG1]
-~g~Recupera degli abiti da golf presso Jocksport's.
+[CR01_10:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Programmer ~n~Matthew Smith
-{=================================== MISSION TABLE SERG2 ===================================}
+[CR01_11:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Design and Mastering ~n~Allan Walker
-[TEX_2A:SERG2]
-~g~Eccellente! Ti hanno visto!
+[CR01_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Cut Scene Animator ~n~Mondo Ghulam
-[TEX_2B:SERG2]
-~r~Pazzo! La gente deve essere TESTIMONE di un attacco da parte di un Cubano!
+[CR01_13:CRED01]
+~n~ ~n~ ~n~ ~n~Cut Scene Animator ~n~Dermot Bailie
-[TEX_2C:SERG2]
-~g~Vai a recuperare dei vestiti con i colori della gang dei Cubani da Rafael's!
+[CR01_14:CRED01]
+~n~ ~n~ ~n~ ~n~Character Animator ~n~Felipe Busquets
-[TEX_2D:SERG2]
-~g~Adesso metti fuori gioco il capo della gang degli Haitiani presso l'impresa di pompe funebri Romero's.
+[CR01_15:CRED01]
+~n~ ~n~ ~n~ ~n~In-Game Animation ~n~Gus Braid, Terry Kenny
-[TEX2_A:SERG2]
-Tommy, questo è Donald Love. Donald, questo è Tommy Vercetti,
+[CR01_16:CRED01]
+~n~ ~n~ ~n~ ~n~Characters Artist ~n~Ian McQue
-[TEX2_B:SERG2]
-l'ultimo cowboy arrivato da queste parti.
+[CR01_17:CRED01]
+~n~ ~n~ ~n~ ~n~Vehicle Artist ~n~Joylon Orme
-[TEX2_C:SERG2]
-Yeh... uh...
+[CR01_18:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Art ~n~Rick Stirling, Alisdair Wood
-[TEX2_D:SERG2]
-Donald, sta zitto e ascoltami, potresti imparare qualcosa.
+[CR01_19:CRED01]
+~n~ ~n~ ~n~ ~n~Music Producer ~n~Craig Conner
-[TEX2_E:SERG2]
-Adesso, niente fa calare i prezzi dei terreni come una bella guerra tra gang rivali.
+[CR01_20:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Design and Dialogue Editor ~n~Will Morton
-[TEX2_F:SERG2]
-Eccetto, forse, un disastro, come una piaga biblica o qualcosa del genere.
+[CR01_21:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Dialogue Editor ~n~Jon McCavish
-[TEX2_G:SERG2]
-Ma per il caso in questione mi sembra un po' troppo.
+[CR01_22:CRED01]
+~n~ ~n~ ~n~ ~n~Development Support ~n~Milly Cottam
-[TEX2_H:SERG2]
-Capisci, brutto idiota quattr'occhi?
+[CR01_23:CRED01]
+~n~ ~n~ ~n~ ~n~Graphic Designers ~n~Stuart Petri, Steve Walsh
-[TEX2_I:SERG2]
-Recentemente è morto un capo gang degli Haitiani e, a quanto sembra, sono stati i Cubani.
+[CR01_24:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~William Mills
-[TEX2_J:SERG2]
-Togliamo loro qualsiasi dubbio, allora! Vestiti da ombre Cubano
+[CR01_25:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Chris Rothwell, Andy Duthie, ~n~Chris McMahon, Neil Ferguson
-[TEX2_K:SERG2]
-e vai a disturbare il funerale. Fai un bel casino e dattela a gambe.
+[CR01_26:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Craig Arbuthnott
-[TEX2_L:SERG2]
-Hai capito, Donald?
+[CR01_27:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Test ~n~Neil Corbett
-[TEX2_M:SERG2]
-Questo dovrebbe mettere il coyote nel pollaio, vero?
+[CR01_28:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Test ~n~David Murdoch, Neil Meikle, ~n~Alex Bazlinton, Brenda Carey
-[TEX2_N:SERG2]
-Dopodiché dovremo solo attendere e veder crollare i prezzi.
+[CR01_29:CRED01]
+~n~ ~n~ ~n~ ~n~Build Engineer / Lead Test ~n~Neil Walker
-[TEXEXIT:SERG2]
-~g~Vattene da Little Haiti!
+[CR01_30:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Test ~n~George Williamson
-{=================================== MISSION TABLE SERG3 ===================================}
+[CR01_31:CRED01]
+~n~ ~n~ ~n~ ~n~Test ~n~Brian Kelly, Lindsay Robertson, ~n~Sundram Soosay, Eugene Kuczerepa, ~n~Christopher Soosay, Ben Abbott,
-[TEX3_A:SERG3]
-Guarda qua, figliolo. Ho un problema e sono certo tu possa darmi una mano.
+[CR01_32:CRED01]
+~n~ ~n~Oliver Elliott, Louis Dinan, ~n~Bobby Wright, Thomas Philips, ~n~Nick Rees, Ivor Williams
-[TEX3_B:SERG3]
-Non sono un geometra.
+[CR01_33:CRED01]
+~n~ ~n~ ~n~ ~n~Test Tools Programming ~n~James Whitcroft, Alex Carter
-[TEX3_C:SERG3]
-No, mi riferivo principalmente alle tue doti di demolitore.
+[CR01_34:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Lorraine Roy
-[TEX3_D:SERG3]
-Ecco la faccenda: questo è il progetto approvato, e questo,
+[CR01_35:CRED01]
+~n~ ~n~ ~n~ ~n~IT Support ~n~Christine Chalmers, Dave Bruce
-[TEX3_E:SERG3]
-questo è il terreno che stiamo seguendo.
+[CR01_36:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Andrew Semple
-[TEX3_F:SERG3]
-Stai cercando di dirmi che questo nuovo isolato di uffici è nel posto sbagliato.
+[CR01_37:CRED01]
+~n~ ~n~ ~n~ ~n~Office Administration ~n~Kim Gurney
-[TEX3_G:SERG3]
-Capisci al volo.
+[CR01_38:CRED01]
+~n~ ~n~ ~n~ ~n~Administration Support ~n~Charlene Maguire, Kim Wilson
-[TEX3_H:SERG3]
-Adesso devo allontanarmi per un po' dalla città...
+[CR02_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LEEDS
-[TEX3_I:SERG3]
-...e se la costruzione di quegli uffici dovesse subire un improvviso e insormontabile problema strutturale, beh, allora...
+[CR02_02:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Gordon Hall
-[TEX3_J:SERG3]
-come ogni civile e ragionevole individuo, ti sentiresti obbligato a intervenire
+[CR02_03:CRED01]
+~n~ ~n~ ~n~ ~n~Head of Development ~n~David Box
-[TEX3_K:SERG3]
-per favorire il ringiovanimento di un'area così importante della città?
+[CR02_04:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Programming ~n~Andrew Greensmith, Matthew Shepcar ~n~ ~n~ ~n~ ~n~Console Programming ~n~Nigel Conroy, Richard Frankish, ~n~Andrew Greensmith, Robin Mangham, ~n~Damian McKenna, Finlay Munro, ~n~Stuart Roskell, Matthew Shepcar
-[TEX3_L:SERG3]
-Dove posso ordinare altra gente come te?
+[CR02_05:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Jon Bellamy, Ross Childs, ~n~Nigel Conroy, Neil Dodwell, ~n~Alastair Dukes, David Huebner,
-[TEX3_1:SERG3]
-~g~Utilizza l'elicottero radiocomandato per trasportare le bombe nelle quattro aree bersaglio dell'edificio.
+[CR02_06:CRED01]
+~n~ ~n~Robin Mangham, Jason McGann, ~n~Warren Merrifield, Stephen McGreal
-[TEX3_2:SERG3]
-~g~Devi posizionare una bomba su ogni bersaglio. Puoi piazzare l'esplosivo in qualsiasi ordine.
+[CR02_07:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Programming ~n~Finlay Munro, Charles Waddington
-[TEX3_5:SERG3]
-~g~Se fai cadere una bomba senza successo, potrai raccoglierla nuovamente e riprovare.
+[CR02_08:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Ian Bowden
-[TEX3_7:SERG3]
-~g~Dovrai piazzare tutti gli esplosivi rimanenti in 7 minuti!
+[CR02_09:CRED01]
+~n~ ~n~ ~n~ ~n~Art Department Director ~n~Chris Smart
-[TEX3_8:SERG3]
-~g~Hai mancato il bersaglio! Raccogli la bomba e riprova!
+[CR02_10:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Character Artist ~n~Paul Smith
-[TEX3_10:SERG3]
-~g~Fai cadere la bomba sul bersaglio.
+[CR02_11:CRED01]
+~n~ ~n~ ~n~ ~n~Character Artist ~n~Chris Allison
-[TEX3_11:SERG3]
-Bersagli rimanenti:
+[CR02_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead City Artist ~n~Dan Roberts
-[TEX3_17:SERG3]
-~r~Il tempo è scaduto: non sei riuscito a demolire l'edificio!
+[CR02_13:CRED01]
+~n~ ~n~ ~n~ ~n~City Artists ~n~Paul McKee, James McHale, ~n~Siu Lee
-[TEX3_18:SERG3]
-~r~L'elicottero radiocomandato è stato distrutto! Come farai adesso a trasportare le bombe?
+[CR02_14:CRED01]
+~n~ ~n~ ~n~ ~n~Cutscene Interiors ~n~Izzy Stewart
-[TEX3_19:SERG3]
-~r~Hai fatto cadere la bomba in acqua! Hai bisogno di tutte le 4 bombe per demolire il cantiere!
+[CR02_15:CRED01]
+~n~ ~n~ ~n~ ~n~Concept Artist ~n~John Wigley
-[TEX3_20:SERG3]
-~g~L'elicottero radiocomandato è quasi fuori portata. Torna indietro al cantiere e completa il lavoro!
+[CR02_16:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Character Animation ~n~Alan Bowker
-[TEX3_21:SERG3]
-~r~L'elicottero radiocomandato è fuori portata!
+[CR02_17:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Artists ~n~Andy Walker, Jason Gee, ~n~Chris Edwards, Lee Clark
-[TEX3_24:SERG3]
-Premi il ~h~~k~~VEHICLE_LOOKLEFT~~w~ per ruotare l'elicottero in senso antiorario.
+[CR02_18:CRED01]
+~n~ ~n~ ~n~ ~n~Design Director ~n~David Bland
-[TEX3_25:SERG3]
-Premi il ~h~~k~~VEHICLE_LOOKLEFT~~w~ per ruotare l'elicottero in senso orario.
+[CR02_19:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~John Li
-[TEX3_27:SERG3]
-~g~Le scale centrali ti permetteranno di accedere a tutti i piani dell'edificio.
+[CR02_20:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Level Design ~n~Tony Gowland, Martyn Bramall
-[TEX3_31:SERG3]
-~r~Hai distrutto il van contenente le bombe e l'elicottero radiocomandato!
+[CR02_21:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Sam Hackett, Stephen Robertson, ~n~Tom Kingsley, Chris Edwards, ~n~Kris Gormley
-[TEX3_32:SERG3]
-Puoi ~h~guardare indietro~w~ premendo ~h~simultaneamente ~k~~VEHICLE_LOOKLEFT~ e ~k~~VEHICLE_LOOKRIGHT~~w~.
+[CR02_22:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Designer ~n~Mark McGinley
-[TEX3_4:SERG3] { reVC update }
-~g~Per sganciare una bomba, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~.
+[CR02_23:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Paul Colls
-[TEX3_29:SERG3] { reVC update }
-Per sganciare una bomba, premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[CR02_24:CRED01]
+~n~ ~n~ ~n~ ~n~QA ~n~Jody Cobb, ~n~ ~n~Luke Brown, Nick Robey, ~n~Matthew Haven
-[TEX3_26:SERG3]
-Premi il ~h~~k~~VEHICLE_BRAKE~~w~ per ridurre la velocità del rotore dell'elicottero in modo da farlo abbassare.
+[CR02_25:CRED01]
+~n~ ~n~ ~n~ ~n~Company Secretary ~n~Naomi Martin
-[TEX3_22:SERG3]
-Premi il ~h~~k~~VEHICLE_ACCELERATE~~w~ per aumentare la velocità del rotore dell'elicottero in modo da ~h~farlo alzare.
+[CR02_26:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Chris Waring
-[TEX3_16:SERG3]
-~g~Raggiungi il van ~w~TOPFUN~g~ presso il cantiere edile da demolire.
+[CR03_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC
-[TEX3_33:SERG3]
-Una volta raccolta una bomba, il radar mostrerà la pozione del bersaglio rispetto all'elicottero radiocomandato.
+[CR03_02:CRED01]
+~n~ ~n~ ~n~ ~n~Executive Producer ~n~Sam Houser
-[TEX3_34:SERG3]
-Un ~h~triangolo verso l'alto~w~ indica che il bersaglio si trova ~h~più in alto~w~ dell'elicottero.
+[CR03_03:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Creative ~n~Dan Houser
-[TEX3_35:SERG3]
-Un ~h~triangolo verso il basso~w~ indica che il bersaglio si trova ~h~più in basso~w~ dell'elicottero.
+[CR03_04:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Development ~n~Jamie King
-[TEX3_36:SERG3]
-Un ~h~quadrato~w~ indica che il bersaglio si trova alla ~h~stessa altezza~w~ dell'elicottero.
+[CR03_05:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Alex Horton
-[TEX3_6:SERG3]
-~g~Una volta raccolta la prima bomba, comincerà il conto alla rovescia.
+[CR03_06:CRED01]
+~n~ ~n~ ~n~ ~n~Chief Technology Officer ~n~Gary J. Foreman
-[TEX3_28:SERG3]
-Per ~h~raccogliere una bomba~w~, avvicinaci l'elicottero radiocomandato. L'elicottero può trasportare una sola bomba alla volta.
+[CR03_07:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Producer ~n~Rich Rosado
-[TEX3_30:SERG3]
-Per raccogliere una bomba, avvicinaci l'elicottero radiocomandato. L'elicottero può trasportare una sola bomba alla volta.
+[CR03_08:CRED01]
+~n~ ~n~ ~n~ ~n~Director of Quality Assurance ~n~Jeff Rosa
-[TEX3_12:SERG3]
-~g~Bomba posizionata! Ancora 3 bersagli! Torna indietro e recupera un'altra bomba.
+[CR03_09:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Analyst ~n~Lance Williams
-[TEX3_13:SERG3]
-~g~Bomba posizionata! Ancora 2 bersagli! Torna indietro e recupera un'altra bomba.
+[CR03_10:CRED01]
+~n~ ~n~ ~n~ ~n~Project Lead ~n~Jameel Vega
-[TEX3_14:SERG3]
-~g~Bomba posizionata! Ancora 1 bersaglio! Torna indietro e recupera un'altra bomba.
+[CR03_11:CRED01]
+~n~ ~n~ ~n~ ~n~Rockstar Test Team ~n~Ethan Abeles, William Rompf, ~n~Christopher Mansfield, Chris Choi, ~n~Mike Hong, Tamara Carrion,
-[TEX3_15:SERG3]
-~r~Conto alla rovescia avviato! ~g~Devi posizionare le ~w~4 bombe~g~ in tempo!
+[CR03_12:CRED01]
+~n~ ~n~Rich Huie, Mike Nathan, ~n~Vance Wallace, Marc Rodriguez, ~n~Adam Tetzloff
-[TEX3_37:SERG3]
-Sposta ~h~in basso la levetta analogica destra~w~ per aumentare la velocità del rotore e ~h~far salire~w~ l'elicottero.
+[CR03_13:CRED01]
+~n~ ~n~ ~n~ ~n~Business Development Director ~n~Sean Macaluso
-[TEX3_38:SERG3] { reVC update }
-{Sposta ~h~~k~~VEHICLE_ACCELERATE~~w~ per ridurre la velocità del rotore e ~h~far scendere~w~ l'elicottero.}
-Sposta ~h~in alto la levetta analogica destra~w~ per ridurre la velocità del rotore e ~h~far scendere~w~ l'elicottero.
+[CR03_14:CRED01]
+~n~ ~n~ ~n~ ~n~Soundtrack Supervision ~n~Heinz Henn, Ivan Pavlovich, ~n~Tim Sweeney
-[TEX3_39:SERG3]
-~g~Per sganciare una bomba, premi il tasto ~h~~k~~VEHICLE_HANDBRAKE~~g~.
+[CR04_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUT SCENES & DIALOGUE
-[TEX3_40:SERG3]
-Per sganciare una bomba, premi il tasto ~h~~k~~VEHICLE_HANDBRAKE~~w~.
+[CR04_02:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Director ~n~Navid Khonsari
-[TEX3_23:SERG3]
-Premi i tasti ~h~~k~~VEHICLE_TURRETUP~~w~ e ~h~~k~~VEHICLE_TURRETDOWN~~w~ per inclinare l'elicottero nella direzione desiderata.
+[CR04_03:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Performed by ~n~Danny Mastrogiorgio, Jeffrey C. Hawkins, ~n~Bruce MacVittie, David Zayas, ~n~Peter Appel, Hannah Moon, ~n~Alyssa Truppelli, Joe Lotruglio
-{=================================== MISSION TABLE TAXI1 ===================================}
+[CR04_04:CRED01]
+~n~ ~n~ ~n~ ~n~Voices Performed by ~n~Salvatore Leone - Frank Vincent ~n~Toni Cipriani - Danny Mastrogiorgio ~n~Donald Love - Will Janowitz
-[FARES:TAXI1]
-CLIENTI:
+[CR04_05:CRED01]
+~n~ ~n~ Vincenzo Cilli - Joe Lotruglio ~n~Maria Latore - Fiona Gallagher ~n~JD O'Toole - Greg Wilson
-[TAXI1:TAXI1]
-~g~Trova un passeggero.
+[CR04_06:CRED01]
+~n~ ~n~Leon McAffrey - Ron Orbach ~n~Ray Machowski - Peter Appel ~n~Toshiko Kasen - Hannah Moon
-[TSCORE2:TAXI1]
-~1~$
+[CR04_07:CRED01]
+~n~ ~n~ Ned Burner - Peter Bradbury ~n~Ma Cipriani - Sondra James ~n~Giovanni Casa - Joel Jones
-[IN_ROW:TAXI1]
-Bonus ~1~ DI SEGUITO! ~1~$
+[CR04_08:CRED01]
+~n~ ~n~Kazuki Kasen - Keenan Shimizu, ~n~Massimo Torini - Duccio Faggella ~n~Mickey Hamfists - Chris Tardio
-[TAXI3:TAXI1]
-~r~Il passeggero è fuggito terrorizzato!
+[CR04_09:CRED01]
+~n~ ~n~Jane Hopper - Gordana Rashovich ~n~Mayor O'Donovan - John Braden ~n~8 Ball - Guru
-[TAXI7:TAXI1]
-~r~La tua auto è distrutta, falla riparare.
+[CR04_10:CRED01]
+~n~ ~n~Radio Newscaster - Sharon Washington ~n~TV Reporter - Brooke Alexander
-[TAXI4:TAXI1]
-Corsa completata!
+[CR04_11:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Dialogue ~n~Una Cruickshank, Gregory Johnson, ~n~Sanford Santacroce, Ayana Osada
-[TAXI5:TAXI1]
-BONUS VELOCITÀ!
+[CR04_12:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Voices ~n~Jamie Hector, Jackson Loo, ~n~Bruce MacVittie, Jeff Gurner, ~n~Jamie Hector, Andrea Kessler,
-[TAXI6:TAXI1]
-Missione taxi terminata
+[CR04_13:CRED01]
+~n~ ~n~Lynne Horton, Phil Mikkelson, ~n~Koji Nonoyama, Devin Bennett, ~n~Jay Capozello, Mike Nathan,
-[TAXIH1:TAXI1]
-Fermati vicino a un pedone evidenziato per farlo salire a bordo e portarlo a destinazione prima che scada il tempo.
+[CR04_14:CRED01]
+~n~ ~n~Ethan Abeles, Lance Williams, ~n~Natalya Wilson, Jay Gladstone, ~n~Craig Blair, Dave Edwards,
-[FARE1:TAXI1]
-~g~Destinazione: ~w~'Club Pole Position'~g~ in Ocean Beach.
+[CR04_15:CRED01]
+~n~ ~n~Gregory Johnson, John Zurhellen, ~n~Blair Sadler, Georgia Sadler, ~n~Nicole Sadler, Judy Henderson,
-[FARE3:TAXI1]
-~g~Destinazione: ~w~'Marina'~g~ in Ocean Beach.
+[CR04_16:CRED01]
+~n~ ~n~Kim Graham, Kerry Shaw, ~n~Tamara Carrion, Franceska Clemens, ~n~Navid Khonsari, Noelle Sadler,
-[FARE4:TAXI1]
-~g~Destinazione: ~w~'Ammu-Nation'~g~ in Ocean Beach.
+[CR04_17:CRED01]
+~n~ ~n~Nicholas Mongomery, Anthony Macbain, ~n~Ryan Rayhill, Josh Slater, ~n~Carmelo Gaeta, Hikari Yokoyama,
-[FARE5:TAXI1]
-~g~Destinazione: ~w~'Hardware store'~g~ in Washington Beach.
+[CR04_18:CRED01]
+~n~ ~n~Chris Jobin, Michael Rothstein, ~n~Stacey Rachels, Jennifer Koontz, ~n~Dan Merrill, Ali Khonsari,
-[FARE6:TAXI1]
-~g~Destinazione: ~w~'Mall North Point'~g~ in Vice Point.
+[CR04_19:CRED01]
+~n~ ~n~Ellen Rose, Chris Standal, ~n~Lorie Goodman, Neal Johnston, ~n~Son Garth, James Larsen,
-[MFARE1:TAXI1]
-~g~Destinazione: ~w~'Ammu-Nation'~g~ in Downtown.
+[CR04_20:CRED01]
+~n~ ~n~Karl Weibel, Ramin Khonsari, ~n~Ed. Thomas Jr., Stanton Sargent, ~n~Oswald Greene, Audrey Amey,
-[MFARE2:TAXI1]
-~g~Destinazione: ~w~'il terminal'~g~ all'aeroporto internazionale Escobar.
+[CR04_21:CRED01]
+~n~ ~n~Sanford Santacroce, Jeff Madrick, ~n~Ben Weaver, Andrea Kessler, ~n~CS Lee, Yoshi Amao,
-[WFARE3:TAXI1]
-~g~Destinazione: ~w~'Sunshine Autos'~g~ in Little Havana.
+[CR04_22:CRED01]
+~n~ ~n~ Jackson Loo, Martha Morrison, ~n~Sarah Bloodsworth, Adam Deher, ~n~Billy Gonzalez
-[WFARE4:TAXI1]
-~g~Destinazione: ~w~'Taxi Kaufman'~g~ in Little Haiti.
+[CR04_23:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Motion Graphics ~n~Maryam Parwana
-[WFARE5:TAXI1]
-~g~Destinazione: ~w~'Hardware store'~g~ in Little Havana.
+[CR04_24:CRED01]
+~n~ ~n~ ~n~ ~n~Dialogue Recording & Mixing ~n~Nicholas Montgomery
-[WFARE6:TAXI1]
-~g~Destinazione: ~w~'Howlin Petes Bike'~g~ in Downtown.
+[CR04_25:CRED01]
+~n~ ~n~ ~n~ ~n~Foley Recording ~n~Bryan Scibinico
-[FARE7:TAXI1]
-~g~Destinazione: ~w~'il negozio dei gioiellieri'~g~ in Vice Point.
+[CR04_26:CRED01]
+~n~ ~n~ ~n~ ~n~Foley recorded at Dig It Studios
-[FARE8:TAXI1]
-~g~Destinazione: ~w~'la spiaggia'~g~ in Ocean Beach.
+[CR04_27:CRED01]
+~n~ ~n~ ~n~ ~n~Production Team ~n~Noelle Sadler, Eli Weissman, ~n~Kerry Shaw, John Zurhellen, ~n~Peter Adler, Anthony Carvalho,
-[FARE9:TAXI1]
-~g~Destinazione: ~w~'la spiaggia'~g~ in Washington Beach.
+[CR04_28:CRED01]
+~n~ ~n~Phil Poli, Jaesun Celebre, ~n~Franceska Clemens, Anthony Litton
-[FARE10:TAXI1]
-~g~Destinazione: ~w~'la spiaggia'~g~ in Vice Point.
+[CR04_29:CRED01]
+~n~ ~n~ ~n~ ~n~Casting ~n~Judy Henderson and Associates
-[FARE11:TAXI1]
-~g~Destinazione: ~w~'l'ospedale'~g~ in Ocean Beach.
+[CR04_30:CRED01]
+~n~Motion Capture recorded at Perspective Studios
-[FARE12:TAXI1]
-~g~Destinazione: ~w~'l'ospedale'~g~ in Vice Point.
+[CR05_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO
-[FARE13:TAXI1]
-~g~Destinazione: ~w~'la stazione di polizia'~g~ in Washington Beach.
+[CR05_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ Banter, Talk Radio, Commercials and Imaging written by ~n~Dan Houser and Lazlow
-[FARE14:TAXI1]
-~g~Destinazione: ~w~'la stazione di polizia'~g~ in Vice Point.
+[CR05_03:CRED01]
+~n~ ~n~ ~n~ ~n~Production by ~n~Lazlow
-[FARE15:TAXI1]
-~g~Destinazione: ~w~'il ristorante della pizza'~g~ in Vice Point.
+[CR05_04:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LCFR
-[WFARE7:TAXI1]
-~g~Destinazione: ~w~'la stazione di polizia'~g~ in Little Havana.
+[CR05_05:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Smith Harrison, Karen Saltus
-[WFARE8:TAXI1]
-~g~Destinazione: ~w~'la stazione di polizia'~g~ in Downtown.
+[CR05_06:CRED01]
+~n~ ~n~ ~n~ ~n~Heartland Values with Nurse Bob ~n~Nurse Bob - Chuck Montgomery
-[WFARE9:TAXI1]
-~g~Destinazione: ~w~'l'ospedale'~g~ in Downtown.
+[CR05_07:CRED01]
+~n~ ~n~ ~n~ ~n~Guests and Callers ~n~Ayana Osada, Nick Montgomery, ~n~Russell Lewis, Nick Born, ~n~Sean Macaluso, Kerry Shaw,
-[WFARE10:TAXI1]
-~g~Destinazione: ~w~'l'ospedale'~g~ in Little Havana.
+[CR05_08:CRED01]
+~n~ ~n~Chad Johnson, Craig Conner, ~n~Mary Elizabeth, Rob Cross, ~n~Josh Bitney
-[WFARE11:TAXI1]
-~g~Destinazione: ~w~'lo stadio'~g~ in Downtown.
+[CR05_09:CRED01]
+~n~ ~n~ ~n~ ~n~Electron Zone ~n~Steve - Ptolemy Slocum ~n~Bill - Michael Urichek
-[WFARE12:TAXI1]
-~g~Destinazione: ~w~'il ristorante della pizza'~g~ in Little Haiti.
+[CR05_10:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Alice Saltzman, Jeremy Wheaton, ~n~Ryan Rayhill, Maine Anderson, ~n~Patton Oswalt, Wil Wheaton, ~n~Anthony Cumia, Madena Parwana
-[WFARE13:TAXI1]
-~g~Destinazione: ~w~'il ristorante della pizza'~g~ in Downtown.
+[CR05_11:CRED01]
+~n~ ~n~ ~n~ ~n~Breathing World ~n~Lee Chowder - Ashley Albert ~n~Crow - Gregg Martin
-[WFARE14:TAXI1]
-~g~Destinazione: ~w~'i bacini'~g~ in Viceport.
+[CR05_12:CRED01]
+~n~ ~n~ ~n~ ~n~Coq 'O' Vin ~n~Richard Goblin - Mike Shapiro
-[WFARE15:TAXI1]
-~g~Destinazione: ~w~'la farmacia'~g~ in Little Haiti.
+[CR05_13:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Ben Krech
-[FARE2:TAXI1]
-~g~Destinazione: ~w~'Club Malibu'~g~ in Vice Point.
+[CR05_14:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Franceska Clemins, Sarah Bloodsworth, ~n~Adam Deher, Martha Morrison, ~n~Carmelo Gaeta
-{=================================== MISSION TABLE TAXICUT ===================================}
+[CR05_15:CRED01]
+~n~ ~n~ ~n~ ~n~Chatterbox ~n~Lazlow as himself
-[TAXC_A:TAXICUT]
-Immagino tu sia il nuovo proprietario.
+[CR05_16:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Susan Lewis, Ben Weaver, ~n~Jacky Bam Bam, Ben Sparks, ~n~Deanna Moyer, Liezl Jacinto,
-[TAXC_B:TAXICUT]
-Di chi fai parte? Mafia? Cartello? Non sembri Messicano...
+[CR05_17:CRED01]
+~n~ ~n~Joshua Batista, Gregg Opie Hughes, ~n~Sondra James, Elizabeth Satterwhite
-[TAXC_C:TAXICUT]
-Comunque, immagino ora comincerai con la vecchia frase 'le cose stanno per cambiare da queste parti',
+[CR06_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~HEAD RADIO
-[TAXC_D:TAXICUT]
-magari minaccerai uno degli autisti...
+[CR06_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Michael Hunt - Russ Mottla
-[TAXC_E:TAXICUT]
-vacci piano con quello là, Ted, ha appena avuto un'ernia al disco.
+[CR06_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jeff Berlin, Katelyn Hutchinson
-[TAXC_F:TAXICUT]
-Beh, sì. Le cose stanno per cambiare da queste parti, signora.
+[CR06_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jeff Berlin
-[TAXC_G:TAXICUT]
-Che felicità, figliolo. Me ne occupo io...
+[CR06_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Train" ~n~Conor & Jay ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Guitars by Jon McCavish ~n~Vocals by Julie Wemyss and Craig Conner
-[TAXC_H:TAXICUT]
-Ormai lo faccio da anni.
+[CR06_06:CRED01]
+~n~ ~n~ ~n~ ~n~"The One For Me" ~n~Cloud Nineteen ~n~Written & Produced by ~n~Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Guitars by Allan Walker & Chris Morton ~n~Lead Vocals by Raff ~n~Backing Vocals by Paul Mackie & Raff
-[TAXC_I:TAXICUT]
-Attenzione a tutti:
+[CR06_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Take The Pain" ~n~Purser ~n~Written & Produced by ~n~Will Morton, Chris Morton ~n~Additional Lyrics by Paul Mackie ~n~Lead Vocals by Paul Mackie ~n~Additional Vocals by Will Morton
-[TAXC_J:TAXICUT]
-è cambiata la gestione e le cose stanno nuovamente per cambiare da queste parti.
+[CR06_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Free Yourself" ~n~L-Marie featuring Raff ~n~Written & Produced by Craig Conner ~n~Vocals by L-Marie and Raff ~n~Backing Vocals by Craig Conner
-[TAXC_K:TAXICUT]
-Il nostro nuovo direttore, della...
+[CR06_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Drive" ~n~15 Ways ~n~Written & Produced by Colin Entwistle ~n~Vocals by Paul Mackie
-[TAXC_L:TAXICUT]
-Di quale gang fai parte?
+[CR06_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Welcome To The Real World" ~n~Rosco Stow ~n~Written & Produced by Craig Conner ~n~Guitars Written, Produced and Performed by Allan Walker ~n~Lead Vocals by Andy Dorrat ~n~Backing Vocals by Craig Conner, ~n~Anna Stuart and Kim Gurney
-[TAXC_M:TAXICUT]
-Beh, non faccio parte di nessuna gang.
+[CR06_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Keep Dreaming" ~n~Vanilla Smoothie ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Allan Walker ~n~Vocals by Fiona Stoddart
-[TAXC_N:TAXICUT]
-Allora qual è il tuo maledetto nome, ragazzo?
+[CR07_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LIPS 106
-[TAXC_O:TAXICUT]
-Vercetti, Tommy Vercetti.
+[CR07_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJs ~n~Cliff - Ed McMann ~n~Andee - Shelley Miller
-[TAXC_P:TAXICUT]
-In nostro nuovo direttore, della Vercetti Gang,
+[CR07_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jonathan Hanst
-[TAXC_Q:TAXICUT]
-si assicurerà che non ci succedano incidenti.
+[CR07_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jonathan Hanst
-[TAXC_R:TAXICUT]
-Capisce? Fine!
+[CR07_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Funk In Time" ~n~Rudy La Fontaine ~n~Written & Produced by Jon McCavish ~n~Guitars by Julian Pais ~n~Vocals by Julian Pais
-[TAXC_S:TAXICUT]
-Ti è piaciuto il 'Capisce'? A me è piaciuto il 'Capisce'.
+[CR07_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Love Is The Feeling" ~n~Sawarr ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Vocals by Julie Wemyss
-[TAXC_T:TAXICUT]
-Allora è così che ha funzionato nel passato:
+[CR07_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Mine Until Monday" ~n~Sunshine Shine ~n~Written & Produced by Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Vocals by Paul Mackie & Raff
-[TAXC_U:TAXICUT]
-noi portiamo avanti l'azienda come sempre.
+[CR07_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Get Down" ~n~Credit Check ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Martyn Livingstone ~n~Bass by Andy Wilson ~n~Vocals by Louise Ferrier
-[TAXC_V:TAXICUT]
-Se abbiamo problemi con la concorrenza, tu ti occupi di riempirli di botte.
+[CR07_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Tonight" ~n~Cool Timers ~n~Written & Produced by Craig Conner ~n~Vocals by Julie Wemyss
-[TAXC_W:TAXICUT]
-Poi loro ci riempiono di botte,
+[CR07_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Bassmatic" ~n~Nina Barry ~n~Written & Produced by Jon McCavish ~n~Vocals by Riz Maslen
-[TAXC_X:TAXICUT]
-poi tu riempi loro di botte nuovamente,
+[CR07_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Into Something (C'mon Get Down)" ~n~The Jackstars ~n~Written & Produced By ~n~Craig Conner ~n~Vocals by Lucie Danti-Juan ~n~Backing vocals by ~n~Kevin Stacey & Craig Conner
-[TAXC_Y:TAXICUT]
-eccetera, eccetera. Tutto chiaro?
+[CR08_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~DOUBLE CLEF FM
-[TAXC_Z:TAXICUT]
-Uh, sì, almeno credo...
+[CR08_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Sergio Boccino - Robert Blumenfeld
-[TAXC_A1:TAXICUT]
-Prendi un taxi dal garage se ti senti di lanciarti subito nella mischia.
+[CR08_03:CRED01]
+~n~ ~n~ ~n~ ~n~Caller ~n~Gerald Cosgrove
-{=================================== MISSION TABLE TAXIWA1 ===================================}
+[CR08_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Anvil Chorus" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~& Munich State Opera Choir ~n~Courtesy of Point Classics, LLC
-[OUTTIME:TAXIWA1]
-~r~Troppo lento, troppo lento!
+[CR08_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Tacea la notte placida" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra & ~n~Munich State Opera Choir ~n~(Eva Illes, Soprano) ~n~Courtesy of Point Classics, LLC
-[TAX1_1:TAXIWA1]
-OK, abbiamo un cliente danaroso che richiede un taxi da Starfish Island: qualche volontario?
+[CR08_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Nabucco: Chorus of the Hebrew Slaves" ~n~Composed by Giuseppe Verdi ~n~Performed by Philharmonia Slavonica ~n~Courtesy of Point Classics, LLC
-[TAX1_2:TAXIWA1]
-Qui Tommy, lo prendo io!
+[CR08_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Così fan tutte: È amore un ladroncello" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~Bratislava Opera Soloists, ~n~Choir and Orchestra ~n~(Ida Kirilova "Dorabella") ~n~Courtesy of Point Classics, LLC
-[TAX1_3:TAXIWA1]
-Questo cliente è mio, indietro!
+[CR08_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Marriage of Figaro: Overture" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~London Philharmonic Orchestra ~n~Courtesy of Point Classics, LLC
-[TAX1_4:TAXIWA1]
-Forza, forza, entra in fretta!
+[CR08_09:CRED01]
+~n~ ~n~ ~n~ ~n~"I Pagliacci: Vesti la giubba" ~n~Composed by Ruggiero Leoncavallo ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~(José Maria Perez, Tenor) ~n~Courtesy of Point Classics, LLC
-[TAX1_5:TAXIWA1]
-OK, OK! Ti prego, non farmi male!
+[CR09_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RISE FM
-[TAXW1_1:TAXIWA1]
-~g~Passa a prendere il VIP su Starfish Island.
+[CR09_02:CRED01]
+~n~ ~n~ ~n~ ~n~Engineered by Mike Callaghan
-[TAXW1_2:TAXIWA1]
-~g~Porta indietro il VIP! Metti fuori gioco l'altra macchina!
+[CR09_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Boy Sanchez - Oliver Vaquer
-[TAXW1_3:TAXIWA1]
-~r~Il VIP è morto!
+[CR09_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~DJ Andre, Lupus Thunder, ~n~Andi Hanley, Mat Ckillz, ~n~Couzin Ed, Lazlow,
-[TAXW1_4:TAXIWA1]
-~r~Il VIP è arrivato a destinazione!
+[CR09_05:CRED01]
+~n~ ~n~Terry Donovan, Bill Brissette, ~n~Juan Aller, Ed Andrews, ~n~Xeni Jardin, Matthew Orr, ~n~Jeff Berlin
-[TAXW1_6:TAXIWA1]
-~g~Porta il VIP all'aeroporto!
+[CR09_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Sing It Back ~n~(Boris Musical Mix)" ~n~Moloko ~n~Written by M. Brydon, R. Murphy ~n~Published by Chrysalis Music (ASCAP) ~n~Remix and Additional Production by ~n~Boris Dlugosch ~n~(p) + © 1998 The Echo Label ~n~Courtesy of Chrysalis Music Limited
-{=================================== MISSION TABLE TAXIWA2 ===================================}
+[CR09_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Free" ~n~Ultra Nate ~n~Written by U. Nate, L. Springsteen, ~n~J. Ciafone ~n~Published by Warner/ Chappell Music/ BMG Music ~n~(p) + © 1997 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
-[TAX2_1:TAXIWA2]
-Chiamata a tutti i veicoli: stiamo perdendo clienti in tutta la città. Che cosa sta succedendo?
+[CR09_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I Believe" ~n~Happy Clappers ~n~Written by C. Scott, G. Ripley, M. Knotts, M. Topham ~n~Published by All Boys Music Ltd ~n~(p) + © 1994 C J Scott Productions ~n~Courtesy of C J Scott Productions
-[TAX2_2:TAXIWA2]
-I taxi VC continuano a batterci sul tempo. Sono in troppi, non possiamo competere!
+[CR09_09:CRED01]
+~n~ ~n~ ~n~ ~n~"House Music" ~n~Eddie Amador ~n~Written by Eddie Amador ~n~Published by ~n~Deep Dish Music ~n~(p) + © 1998 Yoshitoshi Records ~n~Courtesy of ~n~Deep Dish Recordings, Inc. ~n~by arrangement with ~n~Nasseri Music Business Solutions
-[TAX2_3:TAXIWA2]
-Mr. Vercetti, se sei in ascolto, devi mettere fuori gioco un po' dei taxi VC, se no falliamo!
+[CR09_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Feel What You Want" ~n~Kristine W ~n~Written by R. Dougan, R. Armstrong, ~n~K. Weitz ~n~Published by BMG Music/Weitz House Publishing (ASCAP)/ EMI Music Publishing ~n~(p) + © 1996 RCA/ BMG ~n~Courtesy of Sony BMG Entertainment
-[TAXW2_1:TAXIWA2]
-~g~Distruggi 3 taxi rivali!
+[CR09_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Hideaway ~n~(Deep Dish Vocal Remix)" ~n~De'Lacy ~n~Written by K. Hedge, J. Milan ~n~Published by ~n~Warner-Tamerlane Publishing Corp ~n~Remix and Additional Production by ~n~Deep Dish ~n~(p) 1995 Easy Street Recordings Inc ~n~© 1998 Kickin Music Ltd ~n~Courtesy of Easy Street Recordings Inc. and Slip n' Slide Records
-{=================================== MISSION TABLE TAXIWA3 ===================================}
+[CR09_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Spin Spin Sugar ~n~(Armand's Dark Garage Mix)" ~n~Sneaker Pimps ~n~Written by I. Pickering, L. Coverdale Howe, C. Corner ~n~Remix and Additional Production by ~n~Armand Van Helden ~n~Published by BMG Songs, Inc ~n~(p) + © 1997 Clean Up Records Ltd ~n~Courtesy of EMI Music / ~n~One Little Indian, Ltd
-[TAX3_1:TAXIWA3]
-Taxi 13, la signorina Cortez ha bisogno di essere prelevata da Down Town e ha richiesto esplicitamente di te.
+[CR09_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Plastic Dreams" ~n~Jaydee ~n~Written by R. Albers ~n~Published by TBM Holland ~n~(p) 1992 R & S Records ~n~© Robin Albers ~n~Courtesy of Robin "Jaydee" Albers
-[TAX3_2:TAXIWA3]
-OK, ricevuto. Taxi 13 chiudo.
+[CR09_14:CRED01]
+~n~ ~n~ ~n~ ~n~"Altered States" ~n~Ron Trent ~n~Written by R. Trent ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
-[TAX3_3:TAXIWA3]
-Hmmm, nessun segno di Mercedes...
+[CR09_15:CRED01]
+~n~ ~n~ ~n~ ~n~"There Will Come A Day (Half Tab Dub)" ~n~The Absolute featuring Suzanne Palmer ~n~Written by M. Pichiotti, C.J. Snider ~n~Published by Much Noyse Music/ ~n~Hoobini Music (ASCAP) ~n~(p) + © 1995 Mark Productions, Inc ~n~Courtesy of Mark Productions, Inc
-[TAXW3_3:TAXIWA3]
-~g~Metti fuori combattimento il capo dei taxisti!
+[CR09_16:CRED01]
+~n~ ~n~ ~n~ ~n~"Positive Education" ~n~Slam ~n~Written by S. McMillan, O. Meikle, ~n~G. Gibbons, J. Muotone ~n~Published by EMI Music Publishing ~n~(p) + © 1997 Soma Recordings Ltd ~n~Courtesy of Soma Recordings Ltd
-[TAXW3_2:TAXIWA3]
-~g~Resta vivo fino allo scadere del tempo.
+[CR09_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Flash" ~n~Green Velvet ~n~Written by C. Jones ~n~Published by Curtis A. Jones Music (ASCAP) ~n~(p) 1995 Relief Records ~n~© 2000 Warner Bros. Records and N.E.W.S. Records and Relief Records ~n~Courtesy of Warner Strategic Marketing, N.E.W.S. Records, Relief Records
-[TAX_AS1:TAXIWA3]
-BENI COMPAGNIA DEI TAXI ACQUISITI
+[CR09_18:CRED01]
+~n~ ~n~ ~n~ ~n~"Circus Bells (Hardfloor Remix)" ~n~Robert Armani ~n~Written by R. Armani ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse/ ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
-[TAX_AS2:TAXIWA3]
-La compagnia dei taxi d'ora in poi genererà introiti per un massimo di ~1~$. Ricordati di recuperarli regolarmente.
+[CR09_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Higher State Of Consciousness" ~n~Wink ~n~Written by J. Wink ~n~Published by Strictly Rhythm Publishing, Inc. (ASCAP) / Warner/Chappell Music / Wink Inc. (ASCAP) / EMI Music Publishing ~n~(p) + © 1995 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
-[TAX3_4:TAXIWA3]
-È giunta l'ora che l'angelo custode dei Taxi Kaufman entri in azione!
+[CR10_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO DEL MUNDO
-[TAX3_5:TAXIWA3]
-Ehi ragazzo, ti abbronzo il fondoschiena!
+[CR10_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Panjit Gavaskar - Hajaz Akram
-{ re3 updates }
-{ new languages }
-[FEL_JAP]
-GIAPPONESE
+[CR10_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jessica Wachsman
-[FEL_POL]
-POLACCO
+[CR10_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Raghupati (Folk Tune)" ~n~Ananda Shankar ~n~Arranged by A. Shankar, Lewinson, Hassilev ~n~Published by Warner Chappell Inc ~n~(p) + © 1970 Reprise Records for the U.S. and WEA International Inc ~n~Courtesy of Warner Strategic Marketing
-[FEL_RUS]
-RUSSO
+[CR10_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Dum Maro Dum" ~n~Asha Bhosle ~n~Written by RD Burman, Anand Bakshi ~n~Published by Saregama India Ltd ~n~(p) + © 1971 Saregama India Ltd ~n~Courtesy of Saregama India Ltd
-{ new display menus }
-[FET_GFX]
-GRAPHICS SETUP
+[CR10_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Neeve Nanna (Only You Were Mine)" ~n~Vijaya Anand ~n~Written by Vijaya Anand ~n~Published by Shake Boom! (ASCAP)/ ~n~Luaka Bop Inc ~n~(p) 1988 Lahari/Audiovision ~n~© 1992 Sire Records Company ~n~Courtesy of ~n~Luaka Bop Records
-[FED_MIP]
-MIP MAPPING
+[CR10_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Kidda" ~n~Natacha Atlas ~n~Written by N. Atlas, J. Reynolds, J. Adams ~n~Published by Warner Chappell Music Ltd ~n~(p) + © 1997 Nation Records Ltd/ ~n~Beggars Banquet Records Ltd ~n~Courtesy of Nation Records Ltd/ ~n~Beggars Banquet Records Ltd
-[FED_AAS]
-ANTI ALIASING
+[CR10_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Hebeena Hebeena" ~n~Farid El Atrache ~n~Written by Barakat, Atrache ~n~Published by Voices Of Lebanon ~n~(p) + © 1974 Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
-[FED_FIL]
-TEXTURE FILTERING
+[CR10_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Aini Bet Ref" ~n~Ahmed Mneimneh ~n~Written by A. Alishaan ~n~Published by D. Dersahakian (ASCAP) ~n~(p) + © Voice of Stars & ~n~Lys Records ~n~Courtesy of Voice of Stars & ~n~Lys Records
-[FED_BIL]
-BILINEAR
+[CR10_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Im Nin'Alu" ~n~Ofra Haza ~n~Traditional, Arranged by I. Ashdot, B. Nagari ~n~Published by Blue Lake Music ~n~ (p) + © 1988 Sire Records Company ~n~Courtesy of Warner Strategic Marketing
-[FED_TRL]
-TRILINEAR
+[CR10_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ballaa Tsoubou Hal Kahwa" ~n~Samira Tawfic ~n~Written by R. Al Khylani, J. Al A'ss ~n~Published by Copyright Control ~n~(p) + © Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
-[FED_WND]
-WINDOWED
+[CR11_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~K-JAH
-[FED_FLS]
-FULLSCREEN
+[CR11_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Natalee Walsh Davis - Pascale Armand
-[FEM_CSB]
-CUTSCENE BORDERS
+[CR11_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Karl Weibel, Pat McKay
-[FEM_SCF]
-SCREEN FORMAT
+[CR11_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
-[FEM_ISL]
-MAP MEMORY USAGE
+[CR11_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Pick a Sound" ~n~Selah Collins, Ruddy Ranks, Redeye ~n~Written by S. Collins, H. Burke, ~n~E. Donaldson ~n~Published by Copyright Control/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FEM_LOW]
-LOW
+[CR11_06:CRED01]
+~n~ ~n~ ~n~ ~n~"What a Wonderful Feeling" ~n~Errol Bellot, Ruddy Ranks, Redeye ~n~Written by E. Bellot, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FEM_MED]
-MEDIUM
+[CR11_07:CRED01]
+~n~ "Watch How the People Dancing" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by K. Wright ~n~Published by Jetstar ~n~Courtesy of Honest Jons Records
-[FEM_HIG]
-HIGH
+[CR11_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Lean Boot" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson ~n~Published by Westbury Music/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FEM_2PR]
-PS2 ALPHA TEST
+[CR11_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Ready For the Dancehall Tonight" ~n~Peter Bouncer, Ruddy Ranks, Redeye ~n~Written by Peter McKenzie, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FEC_FRC]
-FREE CAM
+[CR11_10:CRED01]
+~n~ ~n~ ~n~ ~n~"You Ha Fe Cool" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson. ~n~Published by Westbury Music/MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-{ Linux joy detection }
-[FEC_JOD]
-DETECT JOYSTICK
+[CR11_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ring My Number" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson. ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FEC_JPR]
-Press any key on the joystick of your choice that you want to use on the game, and it will be selected.
+[CR11_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Run Come Call Me" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FEC_JDE]
-Detected joystick
+[CR12_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THE LIBERTY JAM
-{ mission restart }
-[FET_RMS]
-RIGIOCA MISSIONE
+[CR12_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~DJ Clue as himself
-[FESZ_RM]
-RIGIOCA?
+[CR12_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jay Wright, Tom Yankowski, Chris Mercado, Vanessa Grullon
-[FED_VPL]
-VEHICLE PIPELINE
+[CR12_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
-[FED_PRM]
-PED RIM LIGHT
+[CR12_05:CRED01]
+~n~ ~n~ ~n~ ~n~"All I Need" ~n~Method Man ~n~Written by C. Smith, R. Diggs ~n~Published by Sony BMG Music ~n~(p) + © 1994 Def Jam Recordings ~n~Courtesy of Def Jam Recordings/ UME
-[FED_RGL]
-ROAD GLOSS
+[CR12_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Shook Ones Pt. II" ~n~Mobb Deep ~n~Written by A. Johnson, K. Muchita ~n~Published by ~n~BMG Songs Inc. (ASCAP) ~n~(p) + © 1995 BMG Music ~n~Courtesy of RCA Records by arrangement with Sony BMG Ent
-[FED_CLF]
-COLOUR FILTER
+[CR12_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Incarcerated Scarface" ~n~Raekwon ~n~Written by R. Diggs, C. Woods, A. Tilman ~n~Published by ~n~Careers-BMG Music Publishing Inc./ ~n~Wu Tang Publishing (BMI)/ ~n~Bridgeport Music ~n~(p) + © 1995 BMG Music
-[FED_WLM]
-WORLD LIGHTMAPS
+[CR12_08:CRED01]
+Courtesy of RCA Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "You're Getting A Little Too Smart" as performed by The Detroit Emeralds. Courtesy of Westbound Records. Used by permission. All rights reserved
-[FED_MBL]
-MOTION BLUR
+[CR12_09:CRED01]
+~n~ ~n~ ~n~ ~n~"N.O.R.E." ~n~Noreaga ~n~Written by V. Santiago, J. Olivier, ~n~S. Barnes ~n~Published by Suite 1202 Music/ Jose Luis Gotcha Music (BMI)/ Slamuwell Productions/ Jelly's Jam LLC (ASCAP)/ ~n~12 & Under Music/
-[FEM_SIM]
-SIMPLE
+[CR12_10:CRED01]
+Jumping Bean Songs LLC (BMI) ~n~(p) + © 1998 Penalty Recordings ~n~Courtesy of Warner Strategic Marketing
-[FEM_NRM]
-NORMAL
+[CR12_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Shut 'Em Down (Remix)" ~n~Onyx featuring Noreaga & Big Pun ~n~Written by F. Scruggs, K. Jones, T. Taylor, E. Hinson, E. Simmons ~n~Published by Universal Music/ ~n~Let Me Show You Music/ ~n~Jelly Jams Music/
-[FEM_MOB]
-MOBILE
+[CR12_12:CRED01]
+III Posse Music/ Ill Hill Billy'z Music/ Warner-Tamerlane Music ~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
-[FED_MFX]
-MATFX
+[CR12_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Beware" ~n~Big Pun ~n~Written by C. Rios, J. Tineo ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP), ~n~Administered by Jelly Jams Music (BMI)/ ~n~P.H.D. Music (ASCAP)
-[FED_NEO]
-NEO
+[CR12_14:CRED01]
+(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent
-[FEM_PS2]
-PS2
+[CR12_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Twinz (Deep Cover 98)" ~n~Big Pun ~n~Written by C. Rios, J. Cartegena, ~n~C. Brodus, A. Young, C. Wolfe ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP)/ ~n~Jelly Jams Music (BMI)/ ~n~Sony Tunes Inc. (ASCAP)
-[FEM_XBX]
-XBOX
+[CR12_16:CRED01]
+~n~(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "Deep Cover" as performed by Dr. Dre. Courtesy of Solar Records. Used by permission. All rights reserved
-[FEC_IVP]
-INVERT PAD VERTICALLY
+[CR12_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Get At Me Dog" ~n~DMX featuring Sheek of The Lox ~n~Written by E. Simmons, D. Blackman, ~n~A. Fields, S. Taylor ~n~Published by Universal Music Publishing/ EMI April Music/ ~n~Sony ATV Tunes
-[FEM_NON]
-NONE
+[CR12_18:CRED01]
+~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
+
+[CR12_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Ruff Ryders Anthem (Remix)" ~n~DMX featuring DJ Clue, Jadakiss, Styles, Drag-On & Eve ~n~Written by J. Phillips, M.J. Smalls, E. Shaw, K. Ifill, E. Simmons, K. Dean, E. Jeffers ~n~Published by Universal Music Publishing/ EMI Music Publishing
+
+[CR12_20:CRED01]
+(p) + © 1998 Roc-a-Fella Records ~n~Courtesy of Universal Music Enterprises
+
+[CR12_21:CRED01]
+~n~ ~n~ ~n~ ~n~"Do What You Feel" ~n~Redman featuring Method Man ~n~Written by P. Michael, R. Noble, C. Smith ~n~Published by Careers BMG/ Sony ATV Tunes/ Famous Music ~n~(p) + © 1996 Def Jam ~n~Courtesy of Universal Music Enterprises
+
+[CR12_22:CRED01]
+~n~ ~n~ ~n~ ~n~"Chain Gang Freestyle" ~n~The Lox & Black Rob ~n~Written by Frierson, Phillips, Styles, Jacobs, Ross, Shaw ~n~Published by EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_23:CRED01]
+~n~ ~n~ ~n~ ~n~"Chest2chest Freestyle" ~n~The Lox ~n~Written by Phillips, Styles, Jacobs, Shaw, Barnes, Lemay, Montgomery ~n~Published by Taggie Music (BMI)/ ~n~Universal Polygram Int'l. (ASCAP)/ ~n~EMI Music Publishing ~n~Courtesy of Bad Boy Records
+
+[CR12_24:CRED01]
+This track contains a sample of "Next Level" as performed by Showbiz & AG. Courtesy of Universal Music Enterprises. Used by permission. All rights reserved
+
+[CR13_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~MSX 98
+
+[CR13_02:CRED01]
+~n~ ~n~ ~n~ ~n~MC ~n~Codebreaker as himself
+
+[CR13_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Timecode
+
+[CR13_04:CRED01]
+~n~ ~n~ ~n~ ~n~Station Production ~n~Timecode
+
+[CR13_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Renegade Snares" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Terrorist" ~n~Renegade ~n~Written, Produced & Engineered by ~n~A. Dookith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Finest Illusion (Legal Mix)" ~n~Foul Play ~n~Written, Produced & Engineered by ~n~J. Morrow, S. Bradshaw, ~n~S. Gurley ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future (FBD Project Remix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Stay Calm (Foul Play Remix)" ~n~DJ Pulse ~n~Written, Produced & Engineered by ~n~A. Brown ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Disturbance (Tango Remix)" ~n~Hyper-On Experience ~n~Written, Produced & Engineered by ~n~A. Banks, D. Demierre ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Cold Fresh Air" ~n~Higher Sense ~n~Written, Produced & Engineered by ~n~A. Miles, DJ Rhythm ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Thru The Vibe (2 on 1 Mix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_14:CRED01]
+~n~ ~n~ ~n~ ~n~"The Helicopter Tune" ~n~Deep Blue ~n~Written, Produced & Engineered by ~n~S. O'Keefe ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR13_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Dred Bass" ~n~Dead Dred ~n~Written, Produced & Engineered by ~n~W. Smith, L. Smith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
+
+[CR14_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~FLASHBACK FM
+
+[CR14_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Reni Wassulmaier - Barbara Rosenblatt
+
+[CR14_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Mike Shapiro
+
+[CR14_04:CRED01]
+~n~ ~n~ ~n~ ~n~"First Hand Experience ~n~In Second Hand Love" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_05:CRED01]
+~n~ ~n~ ~n~ ~n~"I Wanna Rock You" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~K. Forsey ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_06:CRED01]
+~n~ ~n~ ~n~ ~n~"E=MC2" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Chase" ~n~Giorgio Moroder ~n~Written by G. Moroder ~n~Published by Warner/ Chappell Music ~n~(p) + © 1978 Casablanca Films/ ~n~Columbia Pictures ~n~Courtesy of Sony Pictures Entertainment
+
+[CR14_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I'm Left, You're Right, She's Gone" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
+
+[CR14_09:CRED01]
+~n~ ~n~ ~n~ ~n~"From Here To Eternity" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Casablanca Records ~n~Courtesy of Universal Music Enterprises
+
+[CR15_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~COMMERCIAL VOICES
+
+[CR15_02:CRED01]
+~n~ ~n~ ~n~ ~n~Alex Anthony, Anouchka Benson, ~n~Audrey Amey, Bill Smith, ~n~Billy Gonzalez, Brian Thomas,
+
+[CR15_03:CRED01]
+~n~ ~n~Chris Jobin, Chris Silvestro, ~n~Craig Blair, Dan Houser, ~n~Dan Merrill, Ed Thomas,
+
+[CR15_04:CRED01]
+~n~ ~n~Ethan Abeles, Garth Johnston, ~n~Gregg Martin, Gregory Johnson, ~n~Hikari Yokoyama, James Ferrante,
+
+[CR15_05:CRED01]
+~n~ ~n~James Larson, Jay Capozello, ~n~Jayson Gladstone, Jeff Berlin, ~n~Jen Sweeney, Jessica Wachsman,
+
+[CR15_06:CRED01]
+~n~ ~n~ JJ Adler, Jonathan Hanst, ~n~Joshua Batista, Karen Saltus, ~n~Koji Nonoyami, Lance Williams,
+
+[CR15_07:CRED01]
+~n~ ~n~Lazlow, Lynne Horton, ~n~Michael Nathan, Mike Ferrante Jr., ~n~Chris Ferrante, Mike Shapiro,
+
+[CR15_08:CRED01]
+~n~ ~n~Natalya Wilson, Noelle Sadler, ~n~Phil Mikkelson, Ron Reeve, ~n~Smith Harrison, Stacy Rachels,
+
+[CR15_09:CRED01]
+~n~ ~n~ Steve Carlesi, Julie Wemyss, ~n~Kim Gurney
+
+[CR16_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUTSCENE MUSIC
+
+[CR16_02:CRED01]
+~n~ ~n~ ~n~ ~n~"Japanese Geisha" ~n~Sonia Slany ~n~Written by Sonia Slany ~n~Published by West One Music ~n~Courtesy of APM Music, LLC
+
+[CR16_03:CRED01]
+~n~ ~n~ ~n~ ~n~"The Heist" ~n~Bugz in the Attic ~n~Written by K. Tatham ~n~Published by Copyright Control ~n~(p) 2005 Bugz In The Attic ~n~Courtesy of Bugz In The Attic ~n~www.bugzintheattic.co.uk
+
+[CR16_04:CRED01]
+~n~ ~n~ ~n~ ~n~"A Dark March" ~n~Danger Mouse ~n~Written by Danger Mouse ~n~Published by ~n~Underground Animals (ASCAP)
+
+[CR17_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC PUBLISHING TEAM
+
+[CR17_02:CRED01]
+~n~ ~n~ ~n~ ~n~Terry Donovan, Jenefer Gross, ~n~Jennifer Kolbe, Devin Winterbottom, ~n~Adam Tedman, Michael Elkind,
+
+[CR17_03:CRED01]
+~n~ ~n~Paul Yeates, Hosi Simon, ~n~Daniel Einzig, Marlene Yamaguchi, ~n~Gauri Khindaria, Stanton Sarjeant,
+
+[CR17_04:CRED01]
+~n~ ~n~Jordan Chew, Ryan Rayhill, ~n~Devin Bennett, Todd Zuniga, ~n~Thomas O'Donnell, Maria Tabia,
+
+[CR17_05:CRED01]
+~n~ ~n~Anthony Carvalho, Lyonel Tollemache, ~n~John Notarfrancesco, Jerry Luna, ~n~Stuart Petri, Stephen Walsh,
+
+[CR17_06:CRED01]
+~n~ ~n~Michael Carnevale, Andrea Borzuku, ~n~John Schuhmann, Alice Chuang, ~n~Mike Torok, Mayumi Kobayashi,
+
+[CR17_07:CRED01]
+~n~ ~n~Elizabeth Satterwhite, Bruce Dugan, ~n~Eli Weissman, Phil Poli, ~n~Jaesun Celebre, Russell Lewis,
+
+[CR17_08:CRED01]
+~n~ ~n~Sean Mackenzie, Megan Henretta, ~n~Angus Wong, Kristine Severson
+
+[CR17_09:CRED01]
+~n~ ~n~ ~n~ ~n~Cover Art ~n~Steven Olds, Stephen Bliss, ~n~Anthony Macbain
+
+[CR17_10:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LONDON PD
+
+[CR17_11:CRED01]
+~n~ ~n~ ~n~ ~n~ Chris Madgwick, Chris Wood, ~n~Daimion Pinnock, David McCarthy, ~n~Graham Ainsley, Jurgen Mol,
+
+[CR17_12:CRED01]
+~n~ ~n~ Laura Battistuzzi, Maike Köhler, ~n~Shino Hori, Lucien King
+
+[CR18_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LINCOLN
+
+[CR18_02:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Mark Lloyd
+
+[CR18_03:CRED01]
+~n~ ~n~ ~n~ ~n~Deputy QA Manager ~n~Tim Bates
+
+[CR18_04:CRED01]
+~n~ ~n~ ~n~ ~n~QA Supervisor ~n~Kevin Hobson
+
+[CR18_05:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Tester ~n~Eddie Gibson ~n~ ~n~ ~n~ ~n~Secondary Lead Tester ~n~Mike Bennett
+
+[CR18_06:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Jonathan Stones, Mike Emeny, ~n~Andy Mason, Lee Johnson, ~n~Carl Young, Matthew Lunnon, ~n~Dan Goddard, Steve McGagh, ~n~Craig Reeve, Joby Luckett
+
+[CR18_07:CRED01]
+~n~ ~n~ ~n~ ~n~Localization Team ~n~ ~n~ ~n~ ~n~Localization Supervisor ~n~Chris Welsh
+
+[CR18_08:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Antoine Cabrol, Dominic Garcia, ~n~Paolo Ceccotti, Ferruccio Cinquemani, ~n~Nicolas Klimoff, Jesús Pérez Rosales ~n~ ~n~ ~n~ ~n~IT Support ~n~Nick McVey
+
+[CR19_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~SPECIAL THANKS
+
+[CR19_02:CRED01]
+~n~ ~n~ ~n~ ~n~Scooter, Ross Wallace, ~n~Steve Taylor, Kevin Wong, ~n~Kevin Bolt, John Haime,
+
+[CR19_03:CRED01]
+~n~ ~n~Dave Watson, Thomas French, ~n~James Arthur, Martin Connor, ~n~Brendon McDonald, Julie Wemyss,
+
+[CR19_04:CRED01]
+~n~ ~n~Raff Crolla, James Duffy, ~n~Kim Gurney, Andrew Ness, ~n~Andy Brooks (Gearbox), Alan Mcgregor,
+
+[CR19_05:CRED01]
+~n~ ~n~Chris McCallum, Fred, Narns, ~n~Alan, Taruki, Red, ~n~Big Foot, Rita Liberator, ~n~Elliot Torres
+
+[CR19_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THANKS
+
+[CR19_07:CRED01]
+~n~ ~n~ ~n~ ~n~Deborah Mannis-Gardner ~n~and Mark Schwartz. ~n~Randy Acker, Karen Adams, ~n~Mark Ainley, Robin Albers,
+
+[CR19_08:CRED01]
+~n~ ~n~Duncan Baker, Armen Boladian, ~n~Tanya Bridges, Richard Brown, ~n~Matt Brookman, Elena Byington,
+
+[CR19_09:CRED01]
+~n~ ~n~Ed Butts, Rob Cairns, ~n~Mike Callaghan, Joseph Carlone, ~n~Kevin Carson, Jason Chin,
+
+[CR19_10:CRED01]
+~n~ ~n~Allison Cipris, Alimah Deen, ~n~James Ellis, Helen English, ~n~Nasko Fejza, Scott Gardner,
+
+[CR19_11:CRED01]
+~n~ ~n~Jochem Gerrits, ~n~Laurie Goldstein Thomas Golubic, ~n~Nick Guarino, Jon Handle, ~n~Millie Hysu, Robert Jo,
-[FEC_DS2]
-DUALSHOCK 2
+[CR19_12:CRED01]
+~n~ ~n~Paul Johannes, Gavin Johnson, ~n~Curtis A. Jones, Jennifer Justice, ~n~Rod Kotler, Diana La Pointe,
-[FEC_DS3]
-DUALSHOCK 3
+[CR19_13:CRED01]
+~n~ ~n~Michael Lau, Jim Long, ~n~Alex De Maegd, John Massa, ~n~Kendall Minter, Steve Morgan,
-[FEC_DS4]
-DUALSHOCK 4
+[CR19_14:CRED01]
+~n~ ~n~Giorgio Moroder, Suzanne Moss, ~n~Melissa Munana, Kirin Murphy, ~n~Kurosh Nasseri,
-[FEC_360]
-XBOX 360 CONTROLLER
+[CR19_15:CRED01]
+~n~ ~n~Gwen Niles Sean Ogden ~n~aka DJ Nightshade, ~n~Robin Orlowski, Jonathan Palmer, ~n~Tanvi Patel, Jane Peterer,
-[FEC_ONE]
-XBOX ONE CONTROLLER
+[CR19_16:CRED01]
+~n~ ~n~Mark Picchiotti, Rob Playford, ~n~Dan Quan, R. Ramnarayan, ~n~Mary Beth Roberts, ~n~Virgil Roberts, Lindsay Rodman,
-[FEC_NSW]
-NINTENDO SWITCH CONTROLLER
+[CR19_17:CRED01]
+~n~ ~n~Jim Romano, Craig Roseberry, ~n~Gerry Rosenblatt, RZA, ~n~Ali Samii, Alan Scholefield,
-[FEC_TYP]
-GAMEPAD TYPE
+[CR19_18:CRED01]
+~n~ ~n~Christopher Scott, Suzi Scott, ~n~Fredro Scruggs, Jennefer Showalter, ~n~Alan Skiena, Saskia Slegers,
-[FET_AGS]
-GAMEPAD SETTINGS
+[CR19_19:CRED01]
+~n~ ~n~Fran Spero, Lem Springsteen, ~n~David Steel, Jane Ventom, ~n~Christian Wiseman, Debi Wylde,
-[FEM_AUT] { aspect ratio related }
-AUTO
+[CR19_20:CRED01]
+~n~ ~n~Donna Young, Richie Zito
[FEM_PED]
PED DENSITY
diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt
index c3a4e0ee..3f57b1a9 100644
--- a/utils/gxt/spanish.txt
+++ b/utils/gxt/spanish.txt
@@ -1,1451 +1,1502 @@
-{
- New strings are at the bottom of file.
- Do not change the order of strings.
- You can fix the typos of existing translation but please refrain from
- unnecessary edits like rephasing because you think it suits better for your taste.
-
- SPANISH NOTE:
- This is European Spanish, do not mix it with Latin American Spanish.
- If you want the Latin American Spanish translation you'd have to create
- a separate txt for it.
-}
-
-{ Grand Theft Auto Vice City Spanish (Spain) Translation }
-{ Contains some of the official fixes made by Rockstar for the iOS port }
-{ Additional translation rewrites, corrections and fixes by IlDucci }
+[LETTER1]
+abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"$,.'-?!!SDBF
+
+[DEFNAM]
+Claude----------------------
+
[IN_VEH]
-~g~¡Eh! ¡Vuelve al vehículo!
+~w~¡Eh! ¡Vuelve al ~b~vehículo~w~!
+
+[IN_VEH2]
+~w~Para este trabajo necesitas un carro.
+
+[IN_BOAT]
+~w~Para esto necesitas una embarcación.
[HEY]
-~g~¡No vayas solo, mantén tu grupo unido!
+~w~No vayas solo, mantén al grupo unido.
+
+[HEY2]
+~w~No te separes, mantén al grupo unido.
+
+[HEY3]
+~w~You've dropped your main man, go back and get 8-Ball!
+
+[HEY6]
+~w~You left your honor with the Yakuza Kanbu. You must protect him!
+
+[HEY7]
+~w~Un arma más podría ser útil. ¡Vuelve y recoge al contacto!
+
+[HEY9]
+~w~¿Quieres que se corra la voz? ¡Ve a ver al contacto!
+
+[GATE_1]
+~w~Los Sindacco solo abrirán las puertas a sus coches.
+
+[HELPA]
+~w~Éste es tu ~h~piso franco~w~.
+
+[HELPB]
+~w~Mientras no estés en una misión, guarda el progreso pasando por el ~h~icono de guardar~w~. El tiempo avanzará 6 horas.
+
+[HELPC]
+~w~Los vehículos que dejes en el ~h~garaje de al lado~w~ se conservarán al guardar la partida.
+
+[HELPD]
+Para salir del piso franco, camina hasta la ~h~señal~w~.
+
+[HELP0]
+~w~Pulsa~h~ ~k~ ~VEEE~ ~w~para entrar o salir de un vehículo.
+
+[HELP1]
+~w~Párate en el centro de la ~h~señal amarilla~w~.
[HELP3]
-Solo puedes esprintar durante cortos periodos de tiempo, antes de cansarte.
+~w~Solo esprintarás un tiempo limitado antes de cansarte.
-[HELP4_D]
-Mueve el ~h~joystick analógico derecho~w~ hacia arriba para ~h~acelerar.
+[HELP4]
+~w~Pulsa~h~ ~k~ ~VEACC~ ~w~para ~h~acelerar,~h~ ~k~ ~VESTR~ ~w~para dirigir.
-[HELP5_D]
-Tira del ~h~joystick analógico derecho~w~ hacia atrás para ~h~frenar~w~, o para ~h~dar marcha atrás~w~ si el vehículo se ha detenido.
+[HELP5]
+~w~Pulsa~h~ ~k~ ~VEBRK~ ~w~para ~h~frenar~w~ o para ~h~dar marcha atrás~w~ si el vehículo se ha parado.
-[HELP7_A]
-Pulsa y mantén pulsado el ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar~w~ con el rifle de francotirador.
+[HELP6]
+~w~Pulsa~h~ ~k~ ~VEHB~ ~w~para usar el ~h~freno de mano~w~.
-[HELP7_D]
-Pulsa y mantén pulsado el ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar~w~ con el rifle de francotirador.
+[HELP7]
+~w~Mantén pulsado~h~ ~k~ ~PDLT~ ~w~para apuntar con un rifle de francotirador.
+
+[HELP8]
+~w~Usa~h~ ~k~ ~SNZI~ ~w~y~h~ ~k~ ~SNZO~ ~w~para ~h~acercar y alejar el zoom~w~ mientras apuntas.
[HELP10]
-Esta insignia indica que tienes un nivel de se busca por la policía.
+~w~La ~h~placa amarilla~w~ indica que estás ~h~buscado~w~. La policía intentará detenerte.
[HELP11]
-Cuantas más insignias tengas, mayor es tu nivel de se busca.
+~w~Cuantas más placas se muestren, más se empeñará la ley en detenerte.
+
+[HELP12]
+~w~Camina hasta la ~h~señal amarilla~w~ para empezar una misión.
[HELP13]
-Algunas veces puedes necesitar ir por caminos que el radar no detecta.
+~w~Busca los caminos que no aparecen en el ~h~radar~w~ y aprovéchalos.
-[TIMER]
-Ésta es una misión cronometrada, debes completarla antes de que el cronómetro llegue a cero.
+[HELP14]
+~w~Usa el ~h~radar~w~ para trazar la ruta por la ciudad y sigue el ~h~punto amarillo~w~ para encontrar el ~h~piso franco~w~. ~w~Usa el ~h~radar~w~, en la parte inferior de la pantalla, para orientarte por la ciudad y encontrar los objetivos.
-[HORN]
-~g~Toca la bocina.
+[HELP16]
+~w~Usa~h~ ~k~ ~VESTR~ ~w~para dirigir.
-[NOMONEY]
-~g~¡Necesitas más dinero!
+[HELP17]
+~w~Phil Cassidy's, la mercancía de más calibre: ¡pronto nuevas existencias!
-[REWARD]
-RECOMPENSA ~1~ $
+[HELP18]
+~w~¡Nuevas existencias en la armería Phil Cassidy's Fully Cocked!
-[M_FAIL]
-¡MISIÓN FALLIDA!
+[HELP18B]
+~w~¡Phil Cassidy's ya tiene existencias de la ~h~minigun~w~!
-[M_PASS]
-¡MISIÓN SUPERADA! ~1~ $
+[HELP19A]
+~w~Para ~h~disparar en marcha~w~, mantén pulsado~h~ ~k~ ~VELL~ ~w~o~h~ ~k~ ~VELR~ ~w~y dispara con~h~ ~k~ ~VEWEP~~w~.
-[DEAD]
-¡ELIMINADO!
+[HELP19C]
+~w~Solo puedes disparar en marcha si tienes un ~h~subfusil~w~.
-[BUSTED]
-¡ARRESTADO!
+[HELP19D]
+~h~Las motos ~w~te permiten ~h~disparar hacia adelante~w~ si pulsas~h~ ~k~ ~VEWEP~~w~.
-[WEATHE1]
-FORZAR TIEMPO SOLEADO
+[HELP19F]
+Solo puedes disparar hacia adelante si tienes un ~h~subfusil~w~.
-[WEATHE2]
-FORZAR TIEMPO EXTREMADAMENTE SOLEADO
+[HELP20]
+~w~¡Has encontrado un ~h~soborno policial~w~! Al recogerlos, reduces el ~h~nivel de búsqueda~w~ en una estrella.
-[WEATHE3]
-FORZAR TIEMPO NUBLADO
+[HELP21]
+~w~Usa~h~ ~k~ ~PDCWE~ ~w~para cambiar de arma mientras vas a pie.
-[WEATHE4]
-FORZAR TIEMPO LLUVIOSO
+[HELP22]
+~w~Para encontrar el ~h~almacén de Vincenzo~w~, sigue el ~h~punto "V"~w~ en el radar.
-[WEATHE5]
-FORZAR TIEMPO CON NIEBLA
+[HELP23]
+~w~El punto es un ~h~triángulo hacia abajo~w~; esto indica que el ~h~objetivo está por debajo~w~ de ti.
-[WEATHE6]
-TIEMPO NORMAL
+[HELP24]
+~w~Mantén pulsado~h~ ~k~ ~VELL~ ~w~o~h~ ~k~ ~VELR~ ~w~para mirar a ~h~derecha o izquierda~w~ en un vehículo. Mantén pulsados ambos para mirar ~h~hacia atrás~w~.
-[NUMBER]
-~1~
+[HELP25]
+~w~Pulsa~h~ ~k~ ~CVEIW~ ~w~para cambiar los ~h~modos de cámara~w~.
-[LOADCAR]
-CARGANDO VEHÍCULO... (PULSA L1 PARA CANCELAR)
+[HELP26]
+~w~Salta a una embarcación y pulsa~h~ ~k~ ~VEEE~ ~w~para subir.
-[CARSOFF]
-Coches desactivados.
+[HELP27]
+~w~Si estás cerca de una embarcación, pulsa~h~ ~k~ ~VEEE~ ~w~para abordarla.
-[CARS_ON]
-Coches activados.
+[HELP29]
+~w~Pulsa~h~ ~k~ ~VEHN~ ~w~para tocar el ~h~claxon~w~ del vehículo.
-[TEXTXYZ]
-Escribiendo coordenadas en el archivo...
+[HELP30]
+~w~Usa~h~ ~k~ ~VECRS~ ~w~para cambiar de ~h~emisora de radio~w~.
-[CHEATON]
-Modo trucos ACTIVADO
+[HELP33]
+~w~Ahora que los sicarios han cobrado, harán su trabajo por mucho que tarden.
-[CHEATOF]
-Modo trucos DESACTIVADO
+[HELP34]
+~w~Mantén pulsado~h~ ~k~ ~VELB~ ~w~para mirar hacia atrás cuando estés en un coche.
-[IMPORT1]
-Ve fuera y espera tu vehículo.
+[HELP38]
+~w~Si matas a alguien que tenga un arma, la dejará caer.
-[PAGEB11]
-Entregado lanzallamas en el escondite
+[HELP40]
+~w~Cuando vayas a pie, usa~h~ ~k~ ~PDLOO~ ~w~para mirar alrededor.
-[WANT_A]
-Sólo serás arrestado si tienes un ~h~nivel de se busca.
+[HELP58]
+~w~Mantén pulsado~h~ ~k~ ~PDLT~ ~w~para ~h~fijar un blanco~w~ y pulsa~h~ ~k~ ~PDFW~ ~w~para disparar.
-[WANT_B]
-Tu ~h~nivel de se busca~w~ viene representado por la fila de estrellas en la parte superior derecha de la pantalla.
+[HELP59]
+~w~Con el blanco fijado, pulsa~h~ ~k~ ~PDCTL~ ~w~para cambiar de objetivo.
-[WANT_C]
-Ahora tienes un ~h~nivel de se busca~w~ de una...
+[HELP60]
+~w~Algunos bidones explotarán si les disparas, pero acuérdate de guardar la distancia.
-[WANT_D]
-dos...
+[TANK]
+~w~Usa~h~ ~k~ ~VEWEA~ ~w~para apuntar con el cañón del Rhino y~h~ ~k~ ~VEWEP~ ~w~para disparar.
-[WANT_E]
-tres...
+[ANSWER]
+~w~Pulsa~h~ ~k~ ~ANS~ ~w~para responder al teléfono móvil y~h~ ~k~ ~VEEE~ ~w~para colgar.
-[WANT_F]
-A medida que tu ~h~nivel de se busca~w~ aumente, atraerás a representantes más poderosos de las fuerzas policiales.
+[BOMB]
+~w~Si llevas un coche al taller de ~h~bombas~w~, 8-Ball te cobrará ~h~500 $~w~ por ponerle una.
-[WANT_G]
-Cuando te hayan ~h~''arrestado''~w~ serás conducido a la comisaría más cercana.
+[BRIDGE1]
+~w~Puente Callahan: en construcción. Fecha estimada de finalización: mayo de 1998
-[WANT_H]
-Los polis te quitarán todas las armas y parte de tu dinero como soborno.
+[STRIK_1]
+~w~Cuando la huelga haya acabado, podrás coger el ~h~ferry~w~ a Staunton Island.
-[WANT_I]
-Cualquier misión en la que estuvieses habrá fracasado.
+[SPRAY]
+~w~Si llevas un vehículo a un ~h~Pay 'n' Spray~w~ te quitarán el ~h~nivel de búsqueda~w~ y te lo ~h~repararán~w~ y ~h~repintarán~w~ por ~h~100 $~w~.
-[WANT_J]
-Encontrarás modos de reducir tu nivel de se busca cuanto más juegues.
+[S_TRN_1]
+~w~Puedes usar el ~h~metro~w~ para ir por Liberty City. Pulsa~h~ ~k~ ~VEEE~ ~w~para ~h~entrar ~w~o ~h~salir~w~ de él.
-[WANT_K]
-Si estás en un coche, el ~h~TALLER DE PINTURA~w~ limpiará ~h~tu nivel de búsqueda.
+[TUBE1]
+~w~Cuando abran la estación, podrás coger el ~h~metro~w~ a Staunton Island.
-[HEAL_B]
-Cuando seas ~h~''eliminado''~w~ serás conducido al hospital más cercano.
+[TUBE2]
+~w~Podrás ir al ~h~aeropuerto internacional Francis ~w~cuando abran esta estación.
-[HEAL_C]
-Perderás tus armas y los médicos te quitarán algo de dinero por recomponerte.
+[TUBE_2]
+~w~Para subirte al ~h~metro~w~, pulsa~h~ ~k~ ~VEEE~~w~.
-[HEAL_E]
-Encontrarás modos de curarte o de protegerte cuanto más juegues al juego.
+[SPRAY1]
+~w~Al aparcar en un ~h~Pay 'n' Spray~w~ te quitarán el ~h~nivel de búsqueda~w~ y ~h~repararán~w~ y ~h~repintarán~w~ el vehículo. Suele costar ~h~100 $~w~, pero esta vez es gratis.
-[BRIBE1]
-Acabas de recoger un soborno de la policía, esto disminuirá en una estrella tu nivel de se busca.
+[HELPE31]
+~w~El jugador irá teniendo a su disposición nuevas prendas durante la partida que tendrá que recoger en Mr. Benz.
-[SAVE1]
-Entra al corona para ~h~guardar la partida~w~. No puedes guardar durante una misión.
+[HELPE32]
+~w~Durante la partida, el jugador tendrá oportunidad de comprar armas más potentes en Ammu-Nation.
-[SAVE2]
-Cualquier vehículo que quede en este garaje será almacenado cuando se guarde la partida.
+[HELPCOM]
+~w~Desbloqueadas nuevas prendas en el piso franco.
-[AMMU]
-Ve dentro de Ammu-Nation para comprar un arma.
+[HELP41]
+~w~Aparca en el ~h~Pay 'n' Spray~w~ para reparar y repintar el coche. Sigue el ~h~punto del bote de spray~w~ en el radar para encontrar el sitio.
-[R_TIME]
-TIEMPO DE CARRERA:
+[PAGEB1]
+~w~La ~h~pistola~w~ ya está disponible en el piso franco.
-[PROP_1]
-No tienes suficiente dinero para adquirir esta propiedad
+[PAGEB10]
+~w~Has encontrado todos los paquetes ocultos. ¡Tienes una ~h~gratificación de 50.000 $~w~!
-[PROP_2]
-No puedes comprar propiedades mientras estás en una misión.
+[EXPO_W]
+~w~Love Media necesita uno de esos.
-[IND_ZON]
-Vice City Beach
+[FERRY_2]
+~w~Vuelve cuando el ferry esté atracado.
-[COM_ZON]
-Península de Vice City
+[FERRY_3]
+~w~¡Tu vehículo no cabe en el ferry!
-[BEACH1]
-Ocean Beach
+[FERRY_4]
+~w~¡Los delincuentes buscados no pueden subir al ferry!
-[BEACH2]
-Washington Beach
+[FERRY_5]
+~w~Necesitas ~h~25 $~w~ para un pasaje en el ferry. Vuelve cuando tengas dinero suficiente.
-[BEACH3]
-Vice Point
+[FERRY_6]
+~w~No puedes usar el ferry mientras estás en una misión.
-[GOLFC]
-Leaf Links
+[FERR_SK]
+~w~Pulsa~h~ ~k~ ~TRSK~ ~w~para saltar al final del viaje.
-[STARI]
-Starfish Island
+[FERR_C1]
+~w~Ferry a Staunton. Tarifa: ~h~25 $~w~. Pulsa~h~ ~k~ ~TGSUB~ ~w~para comprar el pasaje.
-[DOCKS]
-Viceport
+[FERR_C2]
+~w~Ferry a Portland. Tarifa: ~h~25 $~w~. Pulsa~h~ ~k~ ~TGSUB~ ~w~para comprar el pasaje.
-[HAVANA]
-Little Havana
+[A_H1]
+~w~~k~ ~AMBUY~ ~w~comprar. ~n~~k~ ~AMEXI~ ~w~salir.
-[HAITI]
-Little Haiti
+[A_UZI_A]
+~w~Ammu-Nation ya dispone de micro subfusiles.
-[PORNI]
-Prawn Island
+[AMMU]
+~w~Las armas estarán disponibles en ~h~Ammu-Nation~w~ cuando lleguen existencias. Disculpen las molestias.
-[DTOWN]
-Centro de la ciudad
+[WANT_A]
+~w~Cuando te hayan ~h~'trincado'~w~, te llevarán a la comisaría más cercana.
-[VICE_C]
-Vice City
+[WANT_B]
+~w~Fracasará cualquier misión en la que estuvieras y la poli se quedará con tus armas y un dinero para el soborno.
-[A_PORT]
-Escobar International
+[WANT_C]
+~w~Solo acabarás ~h~'trincado'~w~ si tienes un ~h~nivel de búsqueda~w~ en forma de fila de estrellas en la esquina superior de la pantalla.
-[JUNKY]
-Vertedero
+[WANT_D]
+~w~Cuantas más estrellas tengas, con más empeño te perseguirá la ley.
-[PISTOL]
-Pistola
+[WANT_E]
+~w~Hay maneras de reducir el nivel de búsqueda. Mantén los ojos abiertos para encontrarlas.
-[PYTHON]
-.357
+[WANT_F]
+~w~Cuando vayas en un vehículo, pásate por un ~h~Pay 'n' Spray~w~ para quitarte el nivel de búsqueda.
-[UZI]
-Uz-1
+[HEAL_A]
+~w~Cuando estés ~h~'eliminado'~w~, te llevarán al hospital más próximo.
-[TEC9]
-Tec 9
+[HEAL_B]
+~w~Perderás todas las armas y fallarás cualquier misión en la que estuvieras. También te cobrarán por curarte.
-[M4]
-M4
+[HEAL_C]
+~w~Tu ~h~salud~w~ se indica en la barra roja de la parte superior derecha de la pantalla.
-[INGRAM]
-Mac
+[HEAL_D]
+~w~Hay maneras de curarte o protegerte. Mantén los ojos abiertos para encontrarlas.
-[MP5]
-MP
+[H_WE_01]
+~w~Camina por encima de las armas para recogerlas. Solo puedes hacerlo si vas a pie.
-[RUGER]
-Kruger
+[H_WE_02]
+~w~Si ya tienes un arma de ese tipo, pulsa~h~ ~k~ ~PUCF~ ~w~para sustituirla por la nueva.
-[SNIPE]
-Rifle de francotirador
+[PU_CF]
+~w~Pulsa~h~ ~k~ ~PUCF~ ~w~para coger esta arma. Se perderá cualquier otra del mismo tipo.
-[GRENADE]
-Granadas
+[CLOTHA]
+~h~~k~ ~AMMOV~ ~w~para ver prendas. ~h~~k~ ~AMBUY~ ~w~ cambiar de ropa. ~h~~k~ ~AMEXI~ ~w~ cancelar.
-[SHOTGN1]
-Escopeta
+[CLOTHB]
+~w~Aquí puedes cambiar de ropa cuando quieras.
-[SHOTGN2]
-S.P.A.S. 12
+[SIREN_1]
+~w~Para encender o apagar la ~h~sirena de un vehículo de emergencia~w~, pulsa~h~ ~k~ ~VEHN~~w~.
-[SHOTGN3]
-Escopeta de cañones recortados
+[FHOSE_1]
+~w~Mantén pulsado~h~ ~k~ ~VEWEP~ ~w~para disparar el cañón de agua.
-[ARMOUR]
-Chaleco antibalas
+[PHOTO1]
+~w~Mantén pulsado~h~ ~k~ ~PDLT~ ~w~para enfocar con la cámara.
-[LASER]
-.308 Rifle de francotirador
+[PHOTO2]
+~w~Mientras enfocas con la cámara, usa~h~ ~k~ ~SNZI~ ~w~y~h~ ~k~ ~SNZO~ ~w~para ~h~acercar y alejar el zoom~w~.
-[BASEBAT]
-Bate de béisbol
+[PHOTO3]
+~w~Pulsa~h~ ~k~ ~PDFW~ ~w~para hacer una foto mientras enfocas con la cámara.
-[HAMMER]
-Martillo
+[BENZ_H1]
+~w~Sigue el ~h~punto de la camisa~w~ en el radar para encontrar ~h~la tienda de ropa Mr. Benz~w~.
-[SCREWD]
-Destornillador
+[BENZ_LE]
+~w~El ~h~traje de Leone~w~ ya está disponible en el piso franco.
-[CLEVER]
-Cuchillo de carnicero
+[BENZ_GU]
+~w~La ~h~ropa de Ángel Vengador~w~ ya está disponible en el piso franco.
-[MACHETE]
-Machete
+[BENZ_CH]
+~w~La ~h~ropa de chófer~w~ ya está disponible en el piso franco.
-[KNIFE]
-Cuchillo
+[BENZ_TU]
+~w~El ~h~esmoquin~w~ ya está disponible en el piso franco.
-[KATANA]
-Katana
+[ATUTOR]
+~w~Alterna la activación de las misiones de médico ATS pulsando~h~ ~k~ ~TGSUB~~w~.
-[CHAINSA]
-Sierra eléctrica
+[CTUTOR]
+~w~Alterna la activación de las misiones de vigilante pulsando~h~ ~k~ ~TGSUB~~w~.
-[G_COST]
-~1~ $
+[FTUTOR]
+~w~Alterna la activación de las misiones de bombero pulsando~h~ ~k~ ~TGSUB~~w~.
-[CAR_1]
-Ambulancia
+[TRATUT1]
+~w~Alterna la activación de las misiones de basurero pulsando~h~ ~k~ ~TGSUB~~w~.
-[MALIBU]
-El Club Malibú
+[TTUTOR]
+~w~Alterna la activación de las misiones de taxista pulsando~h~ ~k~ ~TGSUB~~w~.
-[MANSION]
-Mansión de Díaz
+[A_COMP2]
+~w~Misión de médico ATS: nivel 12 completado. Ya no te cansarás al correr.
-[TMANS]
-Finca de Vercetti
+[FIREPRO]
+~w~Misión de bombero: nivel 12 completado. Ya eres ignífugo.
-[STRIP]
-El Club Pole Position
+[RCHELP]
+~w~Para ~h~detonar~w~ el coche de radiocontrol, pulsa~h~ ~k~ ~VEWEP~~w~.
-[MALL1]
-Centro comercial North Point
+[TAXIH1]
+~w~Para cerca de un ~h~peatón resaltado~w~ para recogerlo y luego llévalo rápido a su destino.
-[BANKINT]
-El Banco Corrupto Grande
+[TIPHLP]
+~w~La ~h~barra de propinas~w~ desciende con el ~h~tiempo~w~ y cuando el taxi sufre ~h~daños~w~.
-[RANGE]
-Campo de tiro con rifle
+[ANG_E3]
+~w~Ve y busca otros Ángeles Vengadores por Chinatown.
-[POL_HQ]
-Cuartel general de VCPD
+[ANGOUT]
+~w~Vuelve cuando lleves la ropa de ~h~Ángel Vengador~w~.
-[INT_B]
-Un viejo amigo
+[ANGCOM2]
+~w~Misiones de Ángel Vengador, Staunton: nivel 15 completado. Ya no perderás dinero si te trincan.
-[INTB_1]
-~g~Ve a la oficina del Abogado.
+[ANGCOM3]
+~w~Misiones de Ángel Vengador, Shoreside: nivel 15 completado. Tienes un vehículo "especial" en el piso franco.
-[LAW_1]
-La fiesta
+[TVOHELP]
+~w~Prueba a volver cuando lleves la ~h~máscara de hockey~w~.
-[LAW_2]
-Pelea en el callejón trasero
+[TIMER]
+Ésta es una misión cronometrada, debes completarla antes de que el cronómetro llegue a cero.
-[LAW_3]
-Furia en el jurado
+[GARAGE]
+Mete el vehículo en el garaje y sal a pie.
-[LAW_4]
-Disturbios
+[TRASH]
+~g~¡El vehículo está hecho fosfatina! ¡Haz que lo reparen!
-[COL_1]
-Cerdo traidor
+[WRECKED]
+~r~¡El vehículo está destrozado!
-[COL_2]
-Tiros en el centro comercial
+[SPOOK]
+SUSTÓMETRO
-[COL_3]
-Ángeles guardianes
+[SPOTTED]
+~r~¡Te persiguen!
-[COL_4]
-¡Señor, sí, señor!
+[REWARD]
+~w~Recompensa: ~1~ $
-[COL_5]
-¡Todos con las manos arriba!
+[GAMEOVR]
+FIN DE LA PARTIDA
-[COK_1]
-La caza
+[Z]
+Valor del eje Z: ~1~
-[COK_2]
-Phnom Penh '86
+[DEAD]
+¡ELIMINADO!
-[COK_3]
-El barco más rápido
+[GOODBOY]
+~w~¡Bonificación de 50 $ por buen ciudadano!
-[COK_4]
-Oferta y demanda
+[NUMBER]
+~1~
-[KENT_1]
-El corredor de la muerte
+[SCORE]
+~1~ $
-[ASS_1]
-Borrar
+[LOADCAR]
+CARGANDO VEHÍCULO... (PULSA EL botón L PARA CANCELAR)
-[BUD_1]
-Extorsión
+[CARSOFF]
+Coches desactivados.
-[BUD_2]
-Pelea en el bar
+[CARS_ON]
+Coches activados.
-[BUD_3]
-Tierra de polis
+[TEXTXYZ]
+Escribiendo coordenadas en archivo...
-[CAP_1]
-Liquida al cobrador
+[CHEATON]
+Modo trucos SÍ
-[FIN_1]
-Mantén cerca a tus amigos...
+[CHEATOF]
+Modo trucos NO
-[BANK_1]
-¿Sin escapatoria?
+[IMPORT1]
+Sal y espera a que llegue el vehículo.
-[BANK_2]
-El tirador
+[KE_PLYR]
+Jugador
-[BANK_3]
-El conductor
+[KE_CTCS]
+Contactos
-[BANK_4]
-El atraco
+[KE_WEPS]
+Armas
-[CNT_1]
-Descubriendo el pastel
+[KE_ADR]
+Adrenalina
-[CNT_2]
-Ataca al mensajero
+[KE_BRIB]
+Soborno
-[PORN_1]
-Campaña de reclutamiento
+[KE_HLTH]
+Salud
-[PORN_2]
-Consolador Dodo
+[KE_KILF]
+Frenesí
-[PORN_3]
-La foto policial de Marta
+[KE_ARM]
+Blindaje
-[PORN_4]
-Punto G
+[KE_USJ]
+AU
-[TAX_1]
-Taxis Kaufman
+[KE_PKG]
+Paquete oculto
-[TAXI_1]
-V.I.P.
+[KE_INFO]
+Información
-[TAXI_2]
-Rivalidad amistosa
+[DAM]
+Daño
-[TAXI_3]
-Taxigedón
+[KILLS]
+Abat.
-[ICE_1]
-Distribución
+[TIME]
+Crono
-[TEX_1]
-Hierro número cuatro
+[STOPS]
+Paradas
-[TEX_2]
-Dos leves impactos
+[BULL]
+Bullion
-[TEX_3]
-Demoledor
+[EVID]
+Prueba
-[PHIL_1]
-Traficante de armas
+[HEALTH]
+Integridad coche
-[PHIL_2]
-Boomshine Saigon
+[COLLECT]
+Recogido
-[BIKE_1]
-Moto con llantas de aleación
+[LEVEL]
+Nivel
-[BIKE_2]
-Incitando al macho
+[SALES]
+Ventas
-[BIKE_3]
-Moto robada
+[CITYZON]
+Liberty City
-[ROCK_1]
-Love Juice
+[VICE_C]
+Liberty City
-[ROCK_2]
-Asesino psicópata
+[IND_ZON]
+Portland
-[ROCK_3]
-Gira publicitaria
+[PORT_W]
+Callahan Point
-[ROCK_4]
-¡Love Fist!
+[PORT_S]
+Atlantic Quays
-[HAT_1]
-Poción mágica
+[PORT_E]
+Puerto de Portland
-[HAT_2]
-¡Bombas fuera!
+[PORT_I]
+Trenton
-[HAT_3]
-Juego sucio
+[S_VIEW]
+Portland View
-[CUB_1]
-El desafío del barco trucado
+[CHINA]
+Chinatown
-[CUB_2]
-Carne de cañón
+[EASTBAY]
+Playa de Portland
-[CUB_3]
-Encuentro naval
+[LITTLEI]
+Saint Mark's
-[CUB_4]
-Vudú troyano
+[REDLIGH]
+Red Light District
-[JOB_1]
-Muerte en la carretera
+[TOWERS]
+Hepburn Heights
-[JOB_2]
-Elimina a la esposa
+[HARWOOD]
+Harwood
-[JOB_3]
-Autocidio
+[ROADBR1]
+Puente Callahan
-[JOB_4]
-Comprobar el registro
+[ROADBR2]
+Puente Callahan
-[JOB_5]
-Cabos sueltos
+[TUNNELP]
+Túnel de Porter
-[ANSWER]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para responder a una llamada a tu teléfono móvil.
+[BOMB1]
+Taller de 8-Ball
-[MOB_01A]
-¡Estás bien figura! Soy Paul. Puede que tenga algún resultado para ti, pero necesito hablar contigo cara a cara.
+[COM_ZON]
+Staunton Island
-[MOB_01B]
-Estoy de relax en el Malibu.
+[STADIUM]
+Aspatria
-[MOB_01C]
-Creo que después de esto me vas a deber un favor o dos, guapo. Hasta luego.
+[STADIU2]
+Aspatria
-[MOB_02A]
-Ssssnniiiiffffff... ¡Eh! Hola, ¿Tommy? ¡Tommy!
+[STADIU3]
+Aspatria
-[MOB_02B]
-Tenemos un problema en la imprenta. Mejor que vayas y lo compruebes.
+[HOSPI_2]
+Rockford
-[MOB_02C]
-Algún tipo de lío. Las cosas andan revueltas. Tengo que irme.
+[UNIVERS]
+Liberty Campus
-[MOB_03A]
-¿Sr. Vercetti? Tengo un trozo de mierda firmada que dice
+[CONSTRU]
+Fort Staunton
-[MOB_03B]
-que usted ha asumido todas las deudas de BJ's Auto.
+[PARK]
+Parque de Belleville
-[MOB_03C]
-Con la repentina desaparición de BJ no tengo más remedio
+[COM_EAS]
+Newport
-[MOB_03D]
-que hacerle responsable de su inestabilidad financiera
+[SHOPING]
+Bedford Point
-[MOB_03E]
-Hasta que esta cuenta quede completamente saldada
+[SHOP2]
+Bedford Point
-[MOB_03F]
-debería considerar que las calles de Vice City son poco seguras.
+[SHOP3]
+Bedford Point
-[MOB_04A]
-¿Cómo estás, tío? Soy Paulo.
+[YAKUSA]
+Torrington
-[MOB_04B]
-Mira, Tommy, me olvidé de mencionar que vamos a necesitar más seguridad para el concierto.
+[SUB_ZON]
+Shoreside Vale
-[MOB_04C]
-Hay una banda de moteros liderada por Mitch Baker que serían la publicidad ideal.
+[AIRPORT]
+Aerop. Intnal. Francis
-[MOB_04D]
-Solucióname esto y te conseguiré un pase para la actuación, ¿vale?
+[PROJECT]
+Wichita Gardens
-[MOB_05A]
-Soy Mitch. Hiciste un buen trabajo, Tommy. Es bueno volver a tener a mi pequeña en casa.
+[SUB_IND]
+Pike Creek
-[MOB_05B]
-Dile al Sr. Kent Paul que dispondrá de seguridad para la actuación.
+[SWANKS]
+Cedar Grove
-[MOB_05C]
-Tiene mi palabra de ello.
+[BIG_DAM]
+Presa de Cochrane
-[MOB_05D]
-Intenta no meterte en problemas.
+[SUB_ZO2]
+Shoreside Vale
-[MOB_06A]
-Tommy, esos de abajo han estado rajando sobre ti, chico.
+[SUB_ZO3]
+Shoreside Vale
-[MOB_06B]
-Pensé que podrías necesitar consuelo casero así que la tía Poulet te preparará una sopa, ¿hmmm?
+[CAR_1]
+Ambulancia
-[MOB_06C]
-Pásate por mi cocina alguna vez, ¿de acuerdo Tommy?
+[CAR_2]
+Coche de bomberos
-[MOB_08A]
-Eh Tommy, pensé que podrías necesitar algún asesoramiento financiero.
+[CAR_3]
+Policía
-[MOB_08B]
-Una vez que tengas la operación en marcha, tendrás que pasarte a recoger la recaudación de la semana.
+[CAR_4]
+Furgón policial
-[MOB_08C]
-Deja que esos tipos crean que son los amos del lugar e intentarán cepillarse los beneficios... ¿vale?
+[CAR_5]
+Barracks
-[MOB_08D]
-Eh, sé como llevar el negocio, Ken.
+[CAR_6]
+Rhino
-[MOB_08E]
-Vale, vale. Lo sé, ya sabes. Lo sé. Estaba,
+[CAR_7]
+Coche del FBI
-[MOB_08F]
-Sólo estaba, ya sabes, diciéndote que sé, que tú sabes que yo lo sé.
+[CAR_8]
+Securicar
-[MOB_08G]
-¡Solo manteniéndolo a punto, nene!
+[CAR_9]
+Moonbeam
-[MOB_08H]
-Lo que sea, Ken, lo que sea...
+[CAR_10]
+Autocar
-[MOB_09A]
-¡Eh, Leo! ¡Tengo trabajo para ti!
+[CAR_11]
+Camión remolcador
-[MOB_09B]
-No soy Leo.
+[CAR_12]
+Camión articulado
-[MOB_09C]
-¡Eh, como Leo sepa que tienes su teléfono, te va a liquidar!
+[CAR_13]
+Camión de la basura
-[MOB_09D]
-Quizás Leo ya esté muerto. Quizás yo le maté y cogí su teléfono, ¿te has parado a pensar eso, gilipollas?
+[CAR_14]
+Patriot
-[MOB_09E]
-¿Mataste a Leo? Debes tener unas pelotas muy grandes... ¿quieres trabajar para mí?
+[CAR_15]
+Mr. Whoopee
-[MOB_09F]
-Pásate por el café de mi padre en Little Havana y podremos hablar de tú a tú.
+[CAR_16]
+Mule
-[MOB_10A]
-¡Tommy! Mira, tengo que pedirte un favor.
+[CAR_17]
+Yankee
-[MOB_10B]
-¡Steve! ¿Cómo van con el rodaje?
+[CAR_18]
+Pony
-[MOB_10C]
-Bien, bien. Yo, je, NOSOTROS necesitamos una escena con una persecución de coches, pero nuestro presupuesto no da para más.
+[CAR_19]
+Bobcat
-[MOB_10D]
-Me han dejado un coche en la ciudad. Tú sabrás qué hacer.
+[CAR_20]
+Rumpo
-[MOB_10E]
-De acuerdo, Steve, estaré al tanto. Te veo luego.
+[CAR_21]
+Blista
-[MOB_11A]
-¿Qué hay, hijo? Pensé sólo en llamarte para darte algún consejo.
+[CAR_22]
+Dodo
-[MOB_11B]
-Hola, Avery. ¿Qué te preocupa?
+[CAR_23]
+Autobús
-[MOB_11C]
-Hay muchas oportunidades en esta ciudad si dispones de las propiedades adecuadas, ¿entiendes lo que quiero decir?
+[CAR_24]
+Sentinel
-[MOB_11D]
-Creo que sí...
+[CAR_25]
+Cheetah
-[MOB_11E]
-Lo que digo es que mantengas los ojos abiertos y podrás encontrar la oportunidad de negocio perfecta. Te veré luego.
+[CAR_26]
+Banshee
-[MOB_11F]
-Nos vemos, Avery.
+[CAR_27]
+Stinger
-[MOB12_A]
-¡Eh, Tommy, soy Avery! Ahora escucha, estoy muy liado en este momento
+[CAR_28]
+Infernus
-[MOB12_B]
-y uno de mis representantes necesita carabina para ir a Gator Keys.
+[CAR_29]
+Esperanto
-[MOB12_C]
-Estoy detrás de unas tierras por allí, así que voy a enviar alguien a que ablande el trato.
+[CAR_30]
+Kuruma
-[MOB12_D]
-Podrías hacerme un favor y asegurarte de que llega allí, ¿entendido?
+[CAR_31]
+Stretch
-[MOB12_E]
-Sí, eso está hecho, Avery. ¿Dónde te gustaría que le recogiese?
+[CAR_32]
+Perennial
-[MOB12_F]
-Está terminando algunos negocios en la obra. Le dije que le recogerías allí.
+[CAR_33]
+Landstalker
-[MOB12_G]
-Ningún problema. Nos vemos, Avery.
+[CAR_34]
+Manana
-[MOB13_A]
-¿Vercetti? ¡VERCETTI! ¡Maldito seas, tío, tienes que ayudarme!
+[CAR_35]
+Idaho
-[MOB13_B]
-¿Sr. Moffat? ¿Cómo le va la vida en familia?
+[CAR_36]
+Stallion
-[MOB13_C]
-Maldito seas, DEMONIOS, ¿me oyes?
+[CAR_37]
+Taxi
-[MOB13_D]
-Bueno, fue agradable charlar...
+[CAR_38]
+'Cabbie'
-[MOB13_E]
-¡ESPERA! Espera, Vercetti Tommy, ¿Puedo llamarte Tommy?
+[CAR_39]
+Buggy
-[MOB13_F]
-Los dos somos hombres de negocios, ¿verdad? Reconoces un buen negocio cuando lo ves.
+[SINDACO]
+Argento de Sindacco
-[MOB13_G]
-No tengo tiempo para charlar, vaya al grano.
+[HEARSE]
+Hearse
-[MOB13_H]
-DINERO. El dinero es el maldito asunto.
+[LANDSTK]
+Landstalker
-[MOB13_I]
-Me escapado de la trena otra vez, pero nunca tardan mucho en encontrarme... ¡creen que es un maldito juego!
+[IDAHO]
+Idaho
-[MOB13_J]
-Estoy en un teléfono público en alguna parte de este agujero de mierda olvidado de la mano de Dios.
+[STINGER]
+Stinger
-[MOB13_K]
-Sácame de aquí antes de que me lleven de vuelta y... oh... Dios...
+[LINERUN]
+Camión articulado
-[MOB13_L]
-Bueno, estoy ocupado durante las próximas...
+[PEREN]
+Perennial
-[MOB13_M]
-¡No! ¡No me jodas, ten piedad! Ningún hombre debería tener que hacer esas, esas cosas.
+[SENTINL]
+Sentinel
-[MOB13_N]
-Estoy de rodillas, Tommy, en el fango, rogándote, por favor...
+[PATRIOT]
+Patriot
-[MOB13_O]
-Supongo que podría desviarme hacia allí, veré si puedo localizarte...
+[FIRETRK]
+Coche de bomberos
-[MOB13_P]
-Oh, Dios, ya vienen. Por el amor de Dios, date prisa, ¡date prisa!
+[TRASHM]
+Camión de la basura
-[MOB_14A]
-Hola, Tommy, me vas a adorar, amigo.
+[STRETCH]
+Stretch
-[MOB_14B]
-Un pajarito me ha dicho que la división SWAT de Vice City tiene un depósito en una entidad bancaria ciertamente grande,
+[MANANA]
+Manana
-[MOB_14C]
-donde guardan todos los sobornos que han recibido durante estos años,
+[INFERNS]
+Infernus
-[MOB_14D]
-¡como una especie de fondo de retiro para los veteranos!
+[BLISTA]
+Blista
-[MOB_14E]
-Por supuesto, si esta información te ayudase a adquirir parte de ese dinero,
+[PONY]
+Pony
-[MOB_14F]
-¿Supongo que te sentirías obligado a mandarme algo?
+[MULE]
+Mule
-[MOB_14G]
-Lo tendré en mente, gracias Kent.
+[CHEETAH]
+Cheetah
-[MOB_14H]
-Es Paul. Soy de Kent, cerca de Londres, idiota.
+[AMBULAN]
+Ambulancia
-[MOB_14I]
-Mi conocimiento de la geografía provincial inglesa ya no es lo que era.
+[FBICAR]
+Coche del FBI
-[MOB15_A]
-Tommy, colega, soy Paul, de Kent,
+[MOONBM]
+Moonbeam
-[MOB15_B]
-un par de titis han escrito tu nombre por todas partes, en el Malibú.
+[ESPERAN]
+Esperanto
-[MOB15_C]
-¿De qué estás hablando?
+[TAXI]
+Taxi
-[MOB15_D]
-Tías. Palomitas. Ya sabes. Chicas. De las buenas, no creas que son furcias ni nada por el estilo.
+[KURUMA]
+Kuruma
-[MOB15_E]
-Tienes que venir a echarles un vistazo.
+[BOBCAT]
+Bobcat
-[MOB16_A]
-Tommy, aquí Paulo, ¿qué pasa amigo?
+[WHOOPEE]
+Mr. Whoopee
-[MOB16_B]
-¿Qué quieres Paul? No quiero ropa de imitación.
+[BFINJC]
+BF Inyección
-[MOB16_C]
-Muy divertido, colega, pero yo no toco la ropa falsificada.
+[POLICAR]
+Policía
-[MOB16_D]
-Nada, sólo llamaba para ver si consigo un papel en una de tus películas,
+[ENFORCR]
+Furgón policial
-[MOB16_E]
-en Inglaterra hice un montón de porno, colega.
+[SECURI]
+Securicar
-[MOB16_F]
-Guardo más fuego que tu, hijo mío.
+[BANSHEE]
+Banshee
-[MOB16_G]
-Paul, gracias por la oferta, lo tendré en mente.
+[PREDATR]
+Predator
-[MOB16_H]
-En serio, no te olvides de mí, después de todo lo que he hecho por ti.
+[BUS]
+Autobús
-[MOB16_I]
-Eso es lo que estoy intentando olvidar.
+[RHINO]
+Rhino
-[MOB19_A]
-Tommy V, aquí KP. Kent Paul. En las calles se dice que hay gente que te quiere despellejar.
+[BARRCKS]
+Barracks OL
-[MOB19_B]
-Mantén los ojos abiertos. Y recuerda, yo no te he dicho nada de esto.
+[BARRACK]
+Barracks OL
-[MOB_20A]
-De acuerdo, Tommy, soy Paul. Me ha dicho un pajarito que has sido un chico muy malo.
+[TRAIN]
+Tren
-[MOB_20B]
-A alguien le ha ofendido que de repente estés actuando como si fueses el mandamás, dándote aires de grandeza.
+[HELI]
+Helicóptero
-[MOB_20C]
-Bueno, no digas que nunca te advertí. Presumir es un juego de tontos, hijo.
+[DODO]
+Dodo
-[MOB_20D]
-En cualquier caso, oí que se ha puesto un precio a tu cabeza y que alguien te la va a partir,
+[COACH]
+Autocar
-[MOB_20E]
-así que ten cuidado, y acuérdate de mí, colega.
+[CABBIE]
+'Cabbie'
-[MOB21_A]
-Tommy, Thomas, soy Cortez. ¿Qué pasa?
+[STALION]
+Stallion
-[MOB21_B]
-Las cosas van bien. ¿Cómo estás?
+[RUMPO]
+Rumpo
-[MOB21_G]
-De todos modos, Tommy, quisiera preguntarte algo sobre Mercedes.
+[RCBANDT]
+Bandit RC
-[MOB21_H]
-¿Sí? ¿Qué pasa con ella?
+[BELLYUP]
+Furgón de pescado de la Tríada
-[MOB21_I]
-Oh Tommy, Tommy, oigo todas esas historias y no sé qué pensar.
+[MRWONGS]
+Mr. Wongs
-[MOB21_K]
-Quizás ella piense que puede hacer lo que quiera ahora que pero dime, Tommy, ¿es verdad?
+[MAFIACR]
+Sentinel de Leone
-[MOB21_M]
-¿El qué es verdad?
+[YARDICR]
+Lobo de los Yardies
-[MOB21_N]
-Las historias que he oído. ¿De verdad va a ser abogada?
+[YAKUZCR]
+Stinger de la Yakuza
-[MOB21_O]
-Oh Tommy, la vergüenza. Los Cortez somos una familia orgullosa
+[DIABLCR]
+Stallion de los Diablos
-[MOB21_P]
-y nunca permitiríamos que una hija nuestra se convirtiese en abogada. Por favor, dime que no es así. No creo que pudiese soportarlo.
+[COLOMCR]
+Cruiser del Cártel
-[MOB21_Q]
-Coronel, puedo asegurarle que Mercedes nunca será abogada. No tema.
+[HOODSCR]
+Rumpo XL de los Hoods
-[MOB21_R]
-Gracias, Tommy, gracias. La vergüenza sería insoportable.
+[AEROPL]
+Avión
-[MOB21_S]
-Lo sé, coronel.
+[SPEEDER]
+Planeadora
-[MOB21_T]
-Bueno, Tommy, debes perdonarme, ha llegado el nuevo ministro de interior.
+[REEFER]
+Reefer
-[MOB21_U]
-Hace muchos años, yo maté a su padre en un golpe fallido así que debo ser cortés. Buenos días, amigo.
+[PANLANT]
+Panlantic
-[MOB21_C]
-Tommy, aquí siempre es una lucha. Siento el ruido, acabamos de tener otro golpe fallido.
+[FLATBED]
+Camión remolcador
-[MOB21_D]
-La gente es la señora más exigente de todas.
+[YANKEE]
+Yankee
-[MOB21_E]
-Desde que he vuelto de Vice City y hasta ahora, hemos tenido tres revoluciones y cuatro golpes.
+[BORGNIN]
+Bickle'76
-[MOB21_F]
-Afortunadamente, me han ascendido cada vez.
+[TOYZ]
+TOYZ
-[MOB21_J]
-Quizás todo el mundo me está humillando.
+[MCLARN]
+Lancer MF1
-[MOB21_L]
-pero dime, Tommy, ¿es verdad?
+[SHELBY]
+Hellenbach GT
-[MOB22_A]
-Tommy, estás demostrando ser muy útil, amigo mío.
+[SUBARU]
+Impreza WRX
-[MOB22_B]
-Gracias, Cortez. ¿Qué hay de mi asunto?
+[SUPRA]
+Supra
-[MOB22_C]
-Tommy, estoy trabajando infatigablemente en tu nombre para conseguir llegar al fondo de esta zanja de apestosas mentiras y engaños,
+[SKYLINE]
+Skoiloine
-[MOB22_D]
-tienes mi palabra al respecto, pero mientras tanto,
+[CYCLONE]
+Cyclone GT
-[MOB22_E]
-por favor, acepta el estimable agradecimiento de mi gente por tu trabajo para nosotros.
+[ESPRIT]
+V8 Ghost
-[MOB_25A]
-Tommy, soy Cortez. Los franceses me están causando todo tipo de problemas.
+[MINI]
+Tommy
-[MOB_25B]
-Malditos hipócritas. ¡Se pasan cien años robando a países pobres y me llaman ladrón a mí!
+[HOTROD]
+Thunder-Rodd
-[MOB_25C]
-Voy a necesitar tu ayuda tan pronto como sea posible.
+[CAMPVAN]
+Rumpo de la campaña
-[MOB_25D]
-Por favor, Tommy, date prisa, te necesito, ¿de acuerdo? Odio a esos malditos franceses.
+[BALLOT]
+Camioneta electoral
-[MOB_26A]
-Hola, ¿Tommy?
+[GHOST]
+Ghost
-[MOB_26B]
-¿Sí?
+[ANGEL]
+Angel
-[MOB_26C]
-Soy Baker. Sólo quería decirte que verdaderamente disfruté con el espectáculo.
+[ANGEL2]
+Avenger
-[MOB_26D]
-Los chicos y yo queremos darte las gracias, y recordarte,
+[PIZZABO]
+Repartidor de pizzas
-[MOB_26E]
-que te tienes nuestro respeto. Buenos días. Sigue cabalgando duro, chico.
+[NOODLBO]
+Repartidor del chino
-[MOB_29A]
-Hola, ¿hablo con el Sr. Tommy Vercetti?
+[FAGGIO]
+Faggio
-[MOB_29B]
-Sí.
+[FREEWAY]
+Freeway
-[MOB_29C]
-Bueno, he oído por radio macuto que usted es el hombre que hay que buscar cuando alguien tiene una plaga de bichos.
+[SANCHEZ]
+Sánchez
-[MOB_29D]
-Puede...
+[SANCH2]
+Mánchez
-[MOB_29E]
-Bueno, yo tengo una plaga de bichos de verdad. Haitianos, por todas partes.
+[F_PASS1]
+~w~¡Fuego apagado! Recompensa: ~1~ $
-[MOB_29F]
-Mi nombre es Umberto Robina y quiero que nos reunamos en el Café Robina lo antes posible,
+[F_RANGE]
+~r~La radio del coche de bomberos no recibe nada, ¡acércate a un parque de bomberos!
-[MOB_29G]
-porque, como le digo, estos malditos haitianos se han pasado de la raya esta vez.
+[C0TGSUB]
+botón R3
-[MOB_29H]
-Prueba
+[C0VESTR]
+joystick analógico izquierdo, o botones de dirección izquierdo y derecho
-[MOB_30A]
-Tommy, soy Umberto Robina.
+[C1VESTR]
+joystick analógico izquierdo
-[MOB_30B]
-¿Cómo está el café?
+[C2VESTR]
+joystick analógico izquierdo, o botones de dirección izquierdo y derecho
-[MOB_30C]
-Oh, maravilloso. Increíble. Tommy, increíble. Sin blandengues, Tommy, sólo hombres de verdad, ya sabes, ¡y las mujeres hermosas!
+[C3VESTR]
+joystick analógico izquierdo
-[MOB_30D]
-De todos modos, quería decirte que para papá y para mí, para nosotros, ahora eres un cubano.
+[C2VEHB]
+~T~
-[MOB_30E]
-Has demostrado que tienes unas pelotas de cojones, tío.
+[C3VEHB]
+botón L1
-[MOB_30F]
-Gracias, Umberto. Nadie me había dicho eso desde que salí de la cárcel. Nos vemos.
+[C0VEHN]
+botón L3
-[MOB_33A]
-Tommy, soy Phil, olvida toda esa mierda del pasado y escúchame, ¿me oyes?
+[C0VELL]
+botón L2
-[MOB_33B]
-Bien. Tengo un pelotazo extra a punto de fermentar y me preguntaba si te apetecería probarlo.
+[C1VELL]
+botón L2
-[MOB_33C]
-En serio, Tommy, si quieres una copa, o si necesitas ponerte a tono, este material hará de ti un hombre.
+[C2VELL]
+botón L2
-[MOB_33D]
-A mí me pasó aunque todavía no puedo ver por un ojo. Te estaré esperando, lo que oyes.
+[C3VELL]
+botón L2
-[MOB_34A]
-Tommy, de verdad que he disfrutado trabajando contigo. No me había divertido tanto desde la loma en Vietnam, colega.
+[C0VELR]
+botón R2
-[MOB_34B]
-De todas formas, si necesitas algo, llámame, ¿me oyes?
+[C1VELR]
+botón R2
-[MOB_34C]
-Siempre me acuerdo de aquellos con los que he servido,
+[C2VELR]
+botón R2
-[MOB_34D]
-y estoy seguro de que puedo ayudarte, ¿me oyes?
+[C3VELR]
+botón R2
-[MOB_35A]
-Tommy, la herida está cicatrizando bien. Lo gracioso es
+[C0VELB]
+botón L2 y botón R2
-[MOB_35B]
-que he luchado en 6 zonas de combate y siempre he salido sin un rasguño, ¡y ahora esto!
+[C1VELB]
+botón L2 y botón R2
-[MOB_35C]
-Phil el manco. Aún así, tengo una buena selección armas de fuego para mancos, así que nunca seré Phil el desarmado, lo que oyes.
+[C2VELB]
+botón L2 y botón R2
-[MOB_35D]
-Venga, hijo, corta con esa mierda sentimental y pídete una copa, ¡me oyes!
+[C3VELB]
+botón L2 y botón R2
-[MOB_36A]
-Tommy, soy Phil, quiero darte las gracias por ayudarme allí, hijo,
+[C0VECRS]
+botón L1
-[MOB_36B]
-maldito Charlie, siempre te tenderá una emboscada de un modo o de otro.
+[C1VECRS]
+botón SELECT
-[MOB_36C]
-Bueno, la herida está cicatrizando bien, y eso quiere decir que voy a dejar de estafar al gobierno con mi cheque de incapacidad. Gracias, colega.
+[C0VEWEI]
+joystick analógico izquierdo hacia arriba y abajo, o pulsa botones de dirección arriba y abajo
-[MOB_40A]
-Eh, Tommy, soy Sonny. ¿Qué tal el bronceado?
+[C1VEWEI]
+joystick analógico izquierdo hacia arriba y abajo
-[MOB_40B]
-No tengo bronceado.
+[C2VEWEI]
+joystick analógico izquierdo hacia arriba y abajo, o pulsa botones de dirección arriba y abajo
-[MOB_40C]
-Bueno, tampoco tienes mi dinero, así que me estoy preguntando,
+[C3VEWEI]
+joystick analógico izquierdo hacia arriba y abajo
-[MOB_40D]
-¿qué estás haciendo? Así que, dime Tommy ¿qué estás haciendo?
+[C0PDCWE]
+botón L2 y botón R2
-[MOB_40E]
-Estoy buscando el dinero, Sonny. No te preocupes.
+[C1PDCWE]
+botón L2 y botón R2
-[MOB_40F]
-Me estoy preocupando, Tommy, ese es mi estilo,
+[C0PUCF]
+botón L1
-[MOB_40G]
-porque parece que en mi vida tengo este problema con gente que no es de confianza.
+[C1PUCF]
+botón L1
-[MOB_40H]
-No seas una persona poco fiable, Tommy, por favor.
+[C2PUCF]
+~T~
-[MOB_40I]
-Haznos un favor. Tengo muchas ganas de tener noticias tuyas.
+[C3PUCF]
+~O~
-[MOB_41A]
-Tommy, ¿te acuerdas de mí?
+[C0PDLT]
+botón R1
-[MOB_41B]
-Hola, Sonny.
+[C1PDLT]
+botón R1
-[MOB_41C]
-Sí, está bien, Sonny. Somos viejos amigos,
+[C2PDLT]
+botón R1
-[MOB_41D]
-y nunca me escribes, nunca llamas. ¿No quieres que sigamos siendo amigos?
+[C3PDLT]
+botón L1
-[MOB_41E]
-He estado muy ocupado intentando arreglar las cosas. No me diste mucho apoyo.
+[C0PDCTL]
+botón L2 y botón R2
-[MOB_41F]
-Oh, y es culpa mía, ¿verdad? Bueno, he oído que has estado muy ocupado.
+[C1PDCTL]
+botón L2 y botón R2
-[MOB_41G]
-Ocupado matando a capos. Ocupado tomando el poder.
+[C2PDCTL]
+botón L2 y botón R2
-[MOB_41H]
-No te olvides de nosotros, Tommy, porque puedo asegurarte que yo no me he olvidado de ti.
+[C3PDCTL]
+botón L2 y botón R2
-[MOB_42A]
-Tommy.
+[C0CVEIW]
+botón SELECT
-[MOB_42B]
-Sonny.
+[C1CVEIW]
+botones de dirección arriba y abajo
-[MOB_42C]
-Obviamente tienes un problema a la hora de escuchar a los demás, de modo que lo intentaré de nuevo.
+[C2CVEIW]
+botón SELECT
-[MOB_42D]
-Tommy, ¿dónde está el maldito dinero, dónde está el maldito material y dónde está mi parte de tus nuevos golpes?
+[C3CVEIW]
+botón SELECT
-[MOB_42E]
-Me estás haciendo quedar como un idiota, Tommy, y no me hace gracia.
+[C0PDBAK]
+botón R3
-[MOB_43A]
-Tommy, Tommy, Tommy, tenía a Sonny al teléfono, de acuerdo, ¿me sigues?
+[C1PDBAK]
+botón R3
-[MOB_43B]
-No sé tú, pero hay algo sobre un hombre que amenaza con asesinar a mi familia
+[C2PDBAK]
+botón R3
-[MOB_43C]
-que realmente me pone enfermo. ¿Qué vas a hacer?
+[C3PDBAK]
+botón R3
-[MOB_43D]
-Ten calma, Ken, todo irá bien.
+[C0PDLO1]
+botón L
-[MOB_43E]
-¡ESTOY calmado, todo lo calmado que puede estar un hombre cuando teme por su vida!
+[C1PDLO1]
+botón L
-[MOB_43F]
-Ken, ahora mismo tengo otras cosas en la cabeza,
+[C2PDLO1]
+botón L
-[MOB_43G]
-nos ocuparemos de Forelli cuando llegue el momento.
+[C3PDLO1]
+botón L
-[MOB_43H]
-Estoy calmado. ¿No te lo parece? Debe ser la muerte inminente la que le hace esto a mi voz.
+[C0PDLO2]
+pad analógico
-[MOB45_A]
-Tommy, tenemos cosas de las que hablar.
+[C2PDLO2]
+pad analógico
-[MOB45_B]
-¿Cuál es el problema, Lance?
+[C0ANS]
+botón L1
-[MOB45_C]
-Eres tú, amigo, creo que no me estás dando una tajada justa.
+[C1ANS]
+botón L1
-[MOB45_D]
-Y lo que es más, me estás avergonzando delante de los chicos. No puedo permitirlo.
+[C2ANS]
+botón L1
-[MOB45_E]
-Lance, las cosas no son así. Has estado cometiendo errores.
+[C3ANS]
+botón L1
-[MOB45_F]
-Tommy, no soy tu chico de los recados. No soy tu emisario.
+[WEATHER]
+FORCE WEATHER
-[MOB45_G]
-Lance, no la cagues, y no tendremos ningún problema. Si la cago yo, entonces podrás venir a reprochármelo en cualquier momento.
+[WEATHE2]
+CLIMA NORMAL
-[MOB45_H]
-Tommy, he hecho de todo por ti, pero me tratas como si fuese estúpido. No hagas eso.
+[GA_4]
+~w~Las bombas de coche cuestan 500 $ c/u.
-[MOB45_I]
-Lance no te voy a timar ni a apuñalarte por la espalda, de acuerdo.
+[GA_5]
+~w~Tu vehículo ya va equipado con una bomba.
-[MOB45_J]
-Tómatelo con calma. Esto ya es lo suficientemente duro sin que te me pongas sentimental.
+[GA_6]
+Aparca, activa la bomba pulsando~h~ ~k~ ~PED_FIREWEAPON~ ~w~¡y A CORRER!
-[MOB45_K]
-Confía en mí. ¿Me oyes, me oyes?
+[GA_7]
+~w~Activa la bomba con ~h~ ~k~ ~PED_FIREWEAPON~ ~w~. Estallará cuando el motor arranque.
-[MOB45_L]
-Te oigo, pero Tommy, no puedo aguantar esto por más tiempo.
+[GA_8]
+~w~Usa el detonador para activar la bomba.
-[MOB45_M]
-Lance, no seas así. Ahora te estoy dando un aviso.
+[GA_9]
+Has reunido ~1~ de 10 coches especiales.
-[MOB45_N]
-¿Me oyes? Relájate, tómate unos días libres, y luego hablaremos, ¿vale?
+[GA_10]
+Muy bien. Aquí tienes tus ~1~ $.
-[MOB46_A]
-¡Eh, Tommy! Soy Lance.
+[GA_11]
+Ya tenemos ese vehículo. ¡Éste no nos sirve de nada!
-[MOB46_B]
-¿Sí?
+[GA_12]
+Bomba activada
-[MOB46_C]
-Me alegro tanto de tener noticias tuyas, Lance. Venga, tío, enróllate, enróllate.
+[GA_13]
+Eres todo un profesional. Completa la lista y tendrás una bonificación.
-[MOB46_D]
-Estoy ocupado. ¿Qué quieres?
+[GA_14]
+Todos los coches. ¡BIEN! Toma una pequeña recompensa.
-[MOB46_E]
-Nada. Solo llamo para decirte, ya sabes. Mira Tommy, podemos hacer esto.
+[GA_15]
+~w~Espero que te guste el nuevo color.
-[MOB46_F]
-Tú y yo, sin ningún problema. ¿Sabes lo que quiero decir?
+[GA_17]
+~w~¡Nuevo motor y capa de pintura!
-[MOB46_G]
-Vamos a tener que hacerlo, porque de otro modo, estaremos muertos, Lance.
+[GA_19]
+No nos interesa ese modelo.
-[MOB46_H]
-Ya hemos ido demasiado lejos. Pero gracias por llamar. Hablaré contigo más tarde.
+[GA_20]
+Tenemos más de ésos de los que queremos. Tío, no hay trato.
-[MOB_47A]
-Tommy, Lance, tenemos problemas serios. Ven aquí. Enseguida.
+[GA_22]
+~w~No puedes poner una bomba en una moto.
-[MOB52_A]
-Eh, Leo, creo que tengo un comprador para la mercancía de Díaz.
+[GA_23]
+~w~Bomba colocada. Piezas y mano de obra: 500 $
-[MOB52_B]
-Tienes que llamarle, tío, montar el trato, ¿sabes?
+[GA_24]
+~w~Bomba colocada. ¡Ésta corre a cuenta de la casa!
-[MOB52_C]
-¿Dónde estás?
+[CR_1]
+~w~La grúa no puede levantar este vehículo.
-[MOB52_D]
-¿Estás bien, Leo? Te noto un tanto diferente.
+[PU_MONY]
+~w~No tienes suficiente dinero.
-[MOB52_E]
-Simplemente dime dónde estás.
+[PAUSED]
+PARTIDA EN PAUSA
-[MOB52_F]
-¿Quién demonios eres? ¡Que se ponga Leo!
+[FEB_STA]
+Estad.
-[MOB52_G]
-Leo se ha ido de viaje unos días, me dejó al cargo de todo.
+[FEB_MAP]
+Mapa
-[MOB52_H]
-¡Que te jodan, tío!
+[FEB_BRI]
+Instrucc.
-[MOB54_A]
-¡Hola, Tommy!
+[FEB_CON]
+Controles
-[MOB54_B]
-Hola, Mercedes, ¿cómo te va?
+[FEB_DIS]
+Pantalla
-[MOB54_C]
-Tengo un apartamento nuevo en Vice Point,
+[FEB_LAN]
+Idioma
-[MOB54_D]
-pensé que quizás querrías pasarte en algún momento.
+[FEP_STA]
+ESTADÍSTICAS
-[MOB54_E]
-Me encantaría. Te veo luego.
+[FEP_MAP]
+MAPA
-[MOB55_A]
-Tommy, soy yo.
+[FEP_BRI]
+INSTRUCCIONES
-[MOB55_B]
-Hola, Mercedes.
+[FEP_CON]
+CONTROLES
-[MOB55_C]
-Tommy, estoy tan aburrida, ¿cuándo vamos a divertirnos un poco?
+[FEP_DIS]
+PANTALLA
-[MOB55_D]
-¿Qué quieres decir?
+[FEP_LAN]
+IDIOMA:
-[MOB55_E]
-Bueno, sé que estás ocupado luchando y matando y sobornando a gente,
+[FEF_ST1]
+¿Quién es el malo?
-[MOB55_F]
-pero yo sólo quiero divertirme un poco. Así que no te olvides de mí, ¿me oyes?
+[FEF_ST2]
+Cuánta destrucción has causado.
-[MOB56_A]
-Tommy, oí que te cargaste a Ricardo Díaz.
+[FEF_BR1]
+¿Has perdido el hilo?
-[MOB56_B]
-Hubo un desafortunado tiroteo en su mansión.
+[FEF_CO1]
+¿Necesitas más control, pringao?
-[MOB56_C]
-Creo que se quemó hasta morir en su camisa acrílica.
+[FEF_SA1]
+Keep your place in the pile!
-[MOB56_D]
-Tommy, estoy tan orgullosa de ti. Sabía que eras un hombre de verdad.
+[FEF_SA2]
+Guarda y carga las partidas.
-[MOB56_E]
-Era un marrano en pantalones, me haces sentir muy orgullosa de ser tu amiga.
+[FEF_AU1]
+¡Dale caña!
-[MOB56_F]
-No, sé que vas a estar ocupado intentando tomar las riendas de esta ciudad,
+[FEF_AU2]
+Elige una emisora y un efecto de sonido.
-[MOB56_G]
-pero no te olvides de mí, ¿me oyes?
+[FEF_DI1]
+¡Cambia el juego!
-[MOB57_A]
-Soy Mercedes. Ya no te amo, Tommy.
+[FEF_DI2]
+Ajusta el juego a tu tele.
-[MOB57_B]
-Ya no lo hago. De verdad. Porque ya no eres amable con Mercedes.
+[FEF_LA1]
+¿Me estás hablando en chino?
-[MOB57_C]
-Ya no la tratas como una dama. Me ignoras y te odio.
+[FEF_LA2]
+Elige el idioma que prefieras.
-[MOB57_D]
-¡Insisto en que vengas a verme enseguida!
+[FEM_ON]
+SÍ
-[MOB58_A]
-Tommy.
+[FEM_OFF]
+NO
-[MOB58_B]
-Hola, Mercedes.
+[FEM_YES]
+Sí
-[MOB58_C]
-Hola, tipo duro. Estoy muy enfadada contigo, Tommy.
+[FEM_NO]
+No
-[MOB58_D]
-No me hagas ir nunca más por ahí con Jezz Torrent otra vez.
+[FEM_NON]
+Nada
-[MOB58_E]
-Es patético. A mitad de camino, empieza a llorar por su perrito
+[FEI_SEL]
+Seleccionar
-[MOB58_F]
-que murió cuando él tenía siete años y que si su madre nunca le había querido.
+[FEI_TAR]
+Objetivo Sí/No
-[MOB58_G]
-Y Tommy. En privado lleva peluca y sostén.
+[FEI_BAC]
+Atrás
-[MOB58_H]
-¡No estoy muy contenta contigo!
+[FEI_RES]
+Reanudar
-[MOB59_A]
-Ooh Tommy, soy Mercedes.
+[FEI_NAV]
+Mover
-[MOB59_B]
-Sólo quería decirte que me divertí mucho en el plató de rodaje.
+[FEI_BTX]
+/
-[MOB59_C]
-Cualquier otra cosa que tengas así, me lo dices.
+[FEI_BTT]
+"
-[MOB59_D]
-Lo digo de verdad. Siempre quise ser actriz.
+[FEI_STA]
+START (inicio)
-[MOB59_E]
-Creo que aprendí mucho sobre el proceso dramático.
+[FEI_BTD]
+pad analógico
-[MOB59_F]
-¡Es tan instructivo! Gracias. Gracias. Hasta muy, muy pronto. Adiós.
+[FEI_BTU]
+;=
-[MOB_99]
-Ve al teléfono público del lugar.
+[FEI_R1B]
+L \ R
-[MOB_98]
-Ve al teléfono público del lugar.
+[FEI_SCR]
+Desplazar
-[MOB_97]
-Ve al teléfono público del lugar.
+[FEI_ZOO]
+Zoom
-[MOB_96]
-Ve al teléfono público del lugar.
+[FEH_STA]
+ESTADÍSTICAS
-[MOB_95]
-Ve al teléfono público del lugar.
+[FEH_CON]
+CONTROLES
-[A_TIME]
-+~1~ segundos
+[FEH_LAN]
+IDIOMA
-[DODO_FT]
-¡Volaste durante ~1~ segundos!
+[FET_SG]
+GUARDAR PARTIDA
-[GA_8]
-Utiliza el detonador para activar la bomba.
+[FEH_BRI]
+INSTRUCCIONES
-[GA_10]
-Muy bien. Aquí están tus ~1~ $.
+[FEH_DIS]
+PANTALLA
-[GA_11]
-Ya tenemos ese coche. ¡No nos sirve!
+[FEH_MAP]
+MAPA
-[GA_12]
-Bomba activada.
+[FEM_OK]
+ACEPTAR
-[GA_13]
-Entregado como un profesional. Completa la lista y habrá una bonificación para ti.
+[FEC_CRO]
+Agacharse
-[GA_14]
-Todos los coches. ¡ESTUPENDO! Aquí tienes una cosilla.
+[FE_MLG]
+LEYENDA DEL MAPA
-[GA_15]
-Espero que te guste el nuevo color.
+[MAP_LEG]
+LEYENDA:
-[GA_16]
-Volver a pintarlo es gratis.
+[LG_01]
+Posición del jugador
-[GA_19]
-No estamos interesados en este modelo.
+[LG_13]
+Ammu-Nation
-[GA_20]
-Tenemos más de eso de los que podemos colocar. Lo siento, tío, no hay trato.
+[LG_16]
+Piso franco
-[CHASE]
-Atención de la prensa
+[LG_22]
+Pay 'n' Spray
-[CHASE1]
-Ignorado
+[LG_23]
+Mr. Benz
-[CHASE2]
-Aburrido
+[LG_25]
+Teléfono
-[CHASE3]
-Algo interesante
+[LG_26]
+Emisora Wildstyle
-[CHASE4]
-Página 7 del periódico local
+[LG_27]
+Emisora Flash FM
-[CHASE5]
-Portada del periódico local
+[LG_28]
+Emisora KChat
-[CHASE6]
-Página 2 del Vice Courier
+[LG_29]
+Emisora Fever 105
-[CHASE7]
-Portada del Vice Courier
+[LG_30]
+Emisora VROck
-[CHASE8]
-TV Local a las 3 de la mañana
+[LG_31]
+Emisora VCPR
-[CHASE9]
-Noticias locales en TV
+[LG_32]
+Emisora Espantoso
-[CHASE10]
-Cobertura en directo de la TV Local
+[LG_33]
+Emisora Emotion 98.3
-[CHASE11]
-Página 12 del UFA Today
+[LG_34]
+Emisora Wave 103
-[CHASE12]
-Página 4 del UFA Today
+[LG_35]
+Destino
-[CHASE13]
-Imagen en UFA Today
+[LG_36]
+Sun Yard
-[CHASE14]
-TV Nacional a las 4 de la mañana
+[LG_37]
+Club de striptease
-[CHASE15]
-Noticias de la TV Nacional
+[LG_38]
+8-Ball
-[CHASE16]
-Cobertura en directo de la TV Nacional
+[LG_39]
+Confesionario
-[CHASE17]
-Noticias internacionales
+[LG_40]
+Mamá Cipriani
-[CHASE18]
-Crisis nacional
+[LG_41]
+Donald Love
-[CHASE19]
-Crisis internacional
+[LG_42]
+J.D. O'Toole
-[CHASE20]
-Acontecimiento mundial
+[LG_43]
+Salvatore Leone
-[CHASE21]
-Leyenda
+[LG_44]
+María
-[CR_1]
-La grúa no puede levantar este vehículo
+[LG_45]
+McAffrey
-[PU_MONY]
-No tienes suficiente dinero.
+[LG_46]
+Toshiko Kasen
-[CO_ALL]
-Los tienes todos. Aquí tienes una cosilla...
+[LG_47]
+Vincenzo Cilli
-[FEM_ON]
-SÍ
+[LG_48]
+Taller de bombas
-[FEM_OFF]
-NO
+[LG_49]
+Tienda de ropa
-[FEM_YES]
-Sí
+[LG_50]
+Phil Cassidy's
-[FEM_NO]
-No
+[LG_51]
+Amenaza
-[FEM_RET]
-REINTENTAR
+[LG_52]
+Amigo
+
+[LG_53]
+Objeto
+
+[LG_54]
+Objetivo del jugador
+
+[FEB_PMB]
+Instrucciones de misiones previas:
[FEC_NA]
-NO DISPONIBLE
+N/D
[FEC_CWL]
-Escoger arma hacia la izquierda
+Cambiar de arma (izq.)
[FEC_CWR]
-Escoger arma hacia la derecha
+Cambiar de arma (der.)
-[FEC_LOF]
-Mirar hacia adelante
+[FEC_CW]
+Cambiar de arma
+
+[FEC_CT]
+Cambiar de objetivo
[FEC_TAR]
-Objetivo
+Apuntar
[FEC_MOV]
Movimiento
@@ -1457,38 +1508,44 @@ Modos de cámara
Pausa
[FEC_ENV]
-Entrar en el vehículo
+Entrar en vehículo
[FEC_JUM]
Saltar
[FEC_ATT]
-Atacar o disparar arma
+Atacar/disparar
[FEC_RUN]
Correr
[FEC_FPC]
-Cámara en primera persona
+Mirar
[FEC_LL]
Mirar a la izquierda
+[FEC_LB1]
+Mirar
+
+[FEC_LB2]
+atrás
+
[FEC_LB]
-Retrovisor
+Mirar atrás
[FEC_LR]
Mirar a la derecha
-[FEC_ABR]
-Acelerar, frenar o dar marcha atrás
-
[FEC_HOR]
-Bocina
+Claxon
[FEC_VES]
Control del vehículo
+[FEC_RSC]
+Cambiar de emisora
+
[FEC_BRA]
Freno o marcha atrás
@@ -1501,686 +1558,1163 @@ Arma del vehículo
[FEC_ACC]
Acelerar
+[FEC_SMT]
+Misión especial
+
[FEC_CCF]
-Configuración:
+CONFIGURACIÓN:
[FEC_CF1]
-Configuración 1
+CONFIG. 1
[FEC_CF2]
-Configuración 2
+CONFIG. 2
[FEC_CF3]
-Configuración 3
+CONFIG. 3
[FEC_CF4]
-Configuración 4
+CONFIG. 4
[FEC_CDP]
-Pantalla del mando
+TIPO:
[FEC_ONF]
-A pie
+A PIE
[FEC_INC]
-En coche
+EN VEHÍCULO
[FEC_VIB]
-Vibración :
+VIBRACIÓN:
+
+[FEC_ILU]
+INVERTIR VISTA:
+
+[FEC_SWP]
+MOVIM. DEL JUGADOR:
+
+[FEC_AS]
+pad analógico
+
+[FEC_DP]
+botones de dirección
+
+[FEA_OUT]
+Salida:
+
+[FEA_ST]
+Estéreo
+
+[FEA_MNO]
+Mono
+
+[FEA_CTD]
+¡Atención! Esta prestación necesita que se conecte hardware compatible con DTS. ¿Seguir?
+
+[FEA_DTS]
+DTS
+
+[FEA_RSS]
+EMISORA:
+
+[FEA_NON]
+Radio apagada
+
+[FED_BRI]
+BRILLO:
+
+[FED_TRA]
+RASTROS:
+
+[FED_RDR]
+MODO RADAR:
[FEL_ENG]
-Inglés
+INGLÉS
[FEL_FRE]
-Francés
+FRANCÉS
[FEL_GER]
-Alemán
+ALEMÁN
[FEL_ITA]
-Italiano
+ITALIANO
[FEL_SPA]
-Español
+ESPAÑOL
[FED_DBG]
-Menú de soluciones técnicas
+Menu Debug
[FED_RID]
-Recargar IDE
+Reload IDE
[FED_RIP]
-Recargar IPL
+Reload IPL
[FED_PAH]
Parse Heap
+[FED_RCD]
+CCullZones::RecalculateCullZoneData
+
[FED_DFL]
-CLos guiones::DbgBandera
+CTheScripts::DbgFlag
[FED_DLS]
-Gran luz blanca de solución técnica encendida
+Big White Debug Light Switched
[FED_SPR]
-Mostrar grupos de aceras
+Show Ped Road Groups
[FED_SCR]
-Mostrar grupos de carreteras
+Show Car Road Grups
[FED_SCZ]
-Mostrar zonas de desechos
+Show Cull Zones
[FED_DSR]
-Solicitud de solución técnica del streaming
+Debug Streaming Requests
[FED_SCP]
-gbMostrarcolisiónPolys
+gbShowCollisionPolys
+
+[FEM_MCM]
+Memory Card Menu
+
+[FEM_RMC]
+Register MemCard One
+
+[FEM_TFM]
+Test Format MemCard One
+
+[FEM_TUM]
+Test UnFormat MemCard One
+
+[FEM_CRD]
+Create Root Dir
+
+[FEM_CLI]
+Create And Load Icons
+
+[FEM_FFF]
+Fill First File with Guff
+
+[FEM_SOG]
+Save Only The Game
+
+[FEM_CES]
+Check Every 0kB4 Save
+
+[FEM_STG]
+Guardar la partida
+
+[FEM_STS]
+Save The Game under GTA3 name
+
+[FEM_CPD]
+Create copy protected mag directory
+
+[FEM_MC2]
+Memory Card Menu 2
+
+[FEM_TS]
+Test Save:
+
+[FEM_TL]
+Test Load:
+
+[FEM_TD]
+Test Delete:
+
+[FEM_SL0]
+Ranura0
+
+[FES_LOA]
+CARGAR PARTIDA
+
+[ST_TIME]
+Tiempo de juego actual
+
+[ST_OVTI]
+Tiempo de juego total
+
+[NUMSHV]
+Número de guardados
[PL_STAT]
Estadísticas del jugador
[PE_WAST]
-Gente que te has cargado
+Gente abatida por ti
[PE_WSOT]
-Gente eliminada por otros
+Gente abatida por otros
+
+[CAR_EXP]
+Coches explotados
+
+[BOA_EXP]
+Embarcaciones destruidas
[TM_BUST]
-Veces detenido
+Veces que te han trincado
+
+[M_WASTE]
+Civiles liquidados (hombres)
+
+[F_WASTE]
+Civiles liquidados (mujeres)
+
+[PIG_WST]
+Polis liquidados
[GNG_WST]
-Miembros de la banda liquidados
+Miembros de bandas liquidados
+
+[MED_WST]
+Médicos liquidados
+
+[FIRE_WS]
+Bomberos liquidados
[DED_CRI]
Criminales liquidados
+[DED_DED]
+Vagabundos liquidados
+
+[DED_HOK]
+Prostitutas liquidadas
+
+[HEL_DST]
+Helicópteros destruidos
+
[PER_COM]
Porcentaje completado
[KGS_EXP]
-Kilogramos de explosivos empleados
+Kg de explosivos empleados
[ACCURA]
Precisión
-[ST_WEAP]
-Presupuesto armamentístico
+[ELBURRO]
+Best Turismo time in secs
-[ST_PROP]
-Presupuesto de propiedades
+[CAR_CRU]
+Coches triturados
-[ST_AUTO]
-Presupuesto para reparación de coches y pintura
+[HED_EX]
+Cabezas reventadas
-[ST_PHOT]
-Fotografías tomadas
+[ST_HEAD]
+Disparos en la cabeza
-[ST_LOAN]
-Visitas de usureros prestamistas
+[BUL_FIR]
+Balas disparadas
-[ST_STOR]
-Almacenes desvalijados
+[BUL_HIT]
+Balas en el blanco
-[ST_MOVI]
-Escenas de especialista
+[SPRAYIN]
+Manos de pintura
-[ST_PIZZ]
-Pizzas entregadas
+[TM_DED]
+Visitas al hospital
-[ST_GARB]
-Recogidas de basura efectuadas
+[ST_GANG]
+Banda más odiada
-[ST_ICEC]
-''Helado'' vendido
+[ST_GNG1]
+Leone
-[TOP_SHO]
-Puntuación máxima en el campo de tiro
+[ST_GNG2]
+Tríadas
-[SHO_RAN]
-Clasificación del campo de tiro
+[ST_GNG3]
+Diablos
-[SEAGULL]
-Gaviotas disparadas
+[ST_GNG4]
+Yakuza
-[PROPOWN]
-Propiedad en posesión
+[ST_GNG5]
+Yardies
-[ST_TIME]
-Tiempo de juego
+[ST_GNG6]
+Colombianos
-[ST_FTIM]
-Horas de vuelo
+[ST_GNG7]
+Hoods
-[ST_PRAN]
-Clasificación de los pilotos
+[ST_GNG8]
+Sindacco
-[ST_RAN0]
-Aprendiz
+[ST_GNG9]
+Forelli
-[ST_RAN1]
-Navegante
+[DAYSPS]
+Días transcurridos en el juego
-[ST_RAN2]
-Copiloto
+[MMRAIN]
+Lluvia caída
-[ST_RAN3]
-Junior
+[ST_STAR]
+Estrellas de búsqueda obtenidas
-[ST_RAN4]
-Competente
+[ST_STGN]
+Estrellas de búsqueda eludidas
-[ST_RAN5]
-Senior
+[TOT_DIS]
+Distancia total recorrida (millas)
-[ST_RAN6]
-As
+[TOTDISM]
+Distancia total recorrida (m)
-[ST_RAN7]
-Barón rojo
+[DISTBIK]
+Dist. recorrida en moto (millas)
-[ST_DRWN]
-Peces alimentados
+[DISTBIM]
+Distancia recorrida en moto (m)
+
+[DISTHEL]
+Dist. recorrida en helicóptero (millas)
+
+[DISTHEM]
+Distancia recorrida en helicóptero (m)
+
+[DISTBOA]
+Dist. recorrida en embarcación (millas)
+
+[DISTBOM]
+Distancia recorrida en embarcación (m)
+
+[ST_WHEE]
+Mayor tiempo a caballito (s)
+
+[ST_STOP]
+Mayor tiempo sobre rueda delantera (s)
+
+[ST_2WHE]
+Mayor tiempo sobre 2 ruedas (s)
+
+[ST_WHED]
+Mayor distancia a caballito (m)
+
+[ST_STOD]
+Mayor distancia rueda delantera (m)
+
+[ST_2WHD]
+Mayor distancia sobre 2 ruedas (m)
+
+[ST_FAPD]
+Caída de morros más larga (m)
+
+[FEST_HV]
+Mayor nivel de vigilante
+
+[FIRELVL]
+Mayor nivel de bombero
+
+[ST_STOR]
+Stores Knocked Off
+
+[ST_ASSI]
+Trabajos de asesinato completados
+
+[ST_FTIM]
+Horas de vuelo
[ST_FASH]
-Presupuesto para moda
+Fashion Budget
-[ST_DAMA]
-Coste de propiedades destruidas
+[ST_WEAP]
+Gasto en armas
-[TM_DED]
-Visitas al hospital
+[ST_PROP]
+Gasto en propiedades
-[DAYSPS]
-Días transcurridos en el juego
+[ST_DAMA]
+Bienes destruidos
-[NUMSHV]
-Visitas a pisos francos
+[ST_AUTO]
+Gasto en reparación de coches y pintura
[MXCARD]
-Max. Distancia de salto LOCO (pies)
+Dist. máx. en salto demencial (pies)
[MXCARJ]
-Max. Altura de salto LOCO (pies)
+Altura máx. en salto demencial (pies)
[MXCARDM]
-Máxima distancia de salto LOCO (m)
+Dist. máx. en salto demencial (m)
[MXCARJM]
-Máxima altura de salto LOCO (m)
+Altura máx. en salto demencial (m)
[MXFLIP]
-Máximas vueltas de salto LOCO
+Vueltas máx. en salto demencial
[MXJUMP]
-Máxima rotación de salto LOCO
+Rotación máx. en salto demencial
-[BUL_FIR]
-Balas disparadas
-
-[BUL_HIT]
-Aciertos
+[FST_MFR]
+Emisora favorita
-[SPRAYIN]
-Pintura
+[FST_LFR]
+Emisora menos usada
[BSTSTU]
-Mejor maniobra LOCA hasta ahora
+La mejor acrobacia demencial:
[INSTUN]
-Maniobra loca
+Acrobacia demencial
[PRINST]
-Maniobra loca perfecta
+Acrobacia demencial perfecta
[DBINST]
-Maniobra loca doble
+Acrobacia demencial doble
[DBPINS]
-Maniobra loca doble perfecta
+Acrobacia demencial doble perfecta
[TRINST]
-Maniobra loca triple
+Acrobacia demencial triple
[PRTRST]
-Maniobra loca triple perfecta
+Acrobacia demencial triple perfecta
[QUINST]
-Maniobra loca cuádruple
+Acrobacia demencial cuádruple
[PQUINS]
-Maniobra loca cuádruple perfecta
+Acrobacia demencial cuádruple perfecta
[NOSTUC]
-No se ha completado ninguna
+No hay acrobacias demenciales completadas
[NOUNIF]
Saltos únicos completados
+[NOUNGM]
+Total de saltos únicos
+
[NMISON]
Intentos de misión
+[NMMISP]
+Misiones superadas
+
[PASDRO]
-Pasajeros en destino
+Pasajeros llevados a su destino
[MONTAX]
-Dinero conseguido con el taxi
+Dinero ganado en taxi
+
+[CARSLD]
+Coches vendidos
+
+[MONCAR]
+Dinero ganado vendiendo coches
+
+[BIKESLD]
+Motos vendidas
+
+[MONBIKE]
+Dinero ganado vendiendo motos
+
+[CARSEXP]
+Coches encontrados para Love Media
+
+[SLTVLVL]
+Mayor nivel en Slash TV
+
+[SLTVKIL]
+Oponentes muertos en Slash TV
+
+[MONTRS]
+Dinero ganado recogiendo basura
+
+[HTMKLD]
+Sicarios liquidados
+
+[GDAMSP]
+Misiones de Ángel Vengador superadas
+
+[HGAJD]
+Justicia total de Ángel Vengador impartida
+
+[BNDRACE]
+Carreras de RC
+
+[FSTTRT]
+Mayor tiempo pasado en Wong Side of the Track
+
+[HGHTRC]
+Mayor suma ganada en Wong Side of the Track
+
+[FSTHRT]
+Carrera más rápida en helicóptero
+
+[BHLPOS]
+Mejor posición en carrera de helicópteros
+
+[TMSOUT]
+Cambios de ropa
+
+[BSRPS0]
+Low-rider Rumble
+
+[BSRPS1]
+Deimos Dash
+
+[BSRPS2]
+Wi-Cheetah Run
+
+[BSRPS3]
+Red Light Racing
+
+[BSRPS4]
+Torrington TT
+
+[BSRPS5]
+Gangsta GP
+
+[DBIKE0]
+Trazado 1
+
+[DBIKE1]
+Trazado 2
+
+[DBIKE2]
+Trazado 3
+
+[DBIKE3]
+Trazado 4
+
+[DBIKE4]
+Trazado 5
+
+[DBIKE5]
+Trazado 6
+
+[DBIKE6]
+Trazado 7
+
+[DBIKE7]
+Trazado 8
+
+[DBIKE8]
+Trazado 9
+
+[DBIKE9]
+Trazado 10
+
+[DBIKEHE]
+Bump & Grinds
+
+[DBIKEBP]
+Mejor posición
+
+[DBIKEFL]
+Vuelta más rápida
+
+[DBIKEFT]
+Mejor tiempo
+
+[ST_PHOT]
+Fotos tomadas
+
+[ST_PIZZ]
+Pizzas entregadas
+
+[ST_NOOD]
+Fideos entregados
+
+[MO_TOUR]
+Dinero ganado con turistas
+
+[TA_TOUR]
+Turistas llevados a lugares turísticos
+
+[SC_SCRA]
+Récord en Scrapyard Challenge
+
+[SC_9MM]
+Récord en 9mm Mayhem
+
+[SC_SCOO]
+Récord en Scooter Shooter
[DAYPLC]
-Gastos diarios provocados a la policía
+Gasto diario de la policía
+
+[SEAGULL]
+Gaviotas abatidas
[CRIMRA]
-Tasa criminal:
+ÍNDICE DELICTIVO
-[STPR_1]
-El Malibú
+[CHASE]
+Atención mediática
-[STPR_2]
-Imprenta
+[CHASE1]
+"¿Quién es ése?"
-[STPR_3]
-Estudio de cine
+[CHASE2]
+"¡Qué aburrimiento!"
-[STPR_4]
-Fábrica de helados
+[CHASE3]
+Vagamente interesados
-[STPR_5]
-Salón de coches
+[CHASE4]
+Periódico local, página 7
-[STPR_6]
-Compañía de taxis
+[CHASE5]
+Primera plana del periódico local
+
+[CHASE8]
+TV local, 3:00
+
+[CHASE9]
+Noticias TV local
-[STPR_7]
-Astillero
+[CHASE10]
+En directo TV local
+
+[CHASE11]
+El UFA Today, página 12
+
+[CHASE12]
+El UFA Today, página 4
+
+[CHASE13]
+Foto en el UFA Today
+
+[CHASE14]
+Tele nacional, 4:00
+
+[CHASE15]
+Noticias TV nacional
+
+[CHASE16]
+En directo TV nacional
+
+[CHASE17]
+Noticias internacionales
+
+[CHASE18]
+Crisis nacional
+
+[CHASE19]
+Crisis internacional
+
+[CHASE20]
+Suceso mundial
+
+[CHASE21]
+Leyenda viva
+
+[WHEEL01]
+~w~BONIF. POR IR A DOS RUEDAS: ~1~ $ Distancia: ~1~,~1~ m. Tiempo: ~1~ s.
+
+[WHEEL02]
+~w~BONIF. POR IR A DOS RUEDAS: ~1~ $ Distancia: ~1~ pies Tiempo: ~1~ s.
+
+[WHEEL06]
+~w~BONIF. POR CABALLITO: ~1~ $ Distancia: ~1~,~1~ m. Tiempo: ~1~ s.
+
+[WHEEL07]
+~w~BONIF. POR CABALLITO: ~1~ $ Distancia: ~1~ pies Tiempo: ~1~ s.
+
+[WHEEL11]
+~w~BONIF. RUEDA DELANTERA: ~1~ $ Distancia: ~1~,~1~ m. Tiempo: ~1~ s.
+
+[WHEEL12]
+~w~BONIF. RUEDA DELANTERA: ~1~ $ Distancia: ~1~ pies Tiempo: ~1~ s.
+
+[GMSTOR]
+Game Store
+
+[PREBRF]
+Instrucciones previas
+
+[CNTLS]
+Controles
+
+[MUSMEN]
+Música/efectos
+
+[GAMSET]
+Ajustes del juego
+
+[LANGUA]
+Idioma
+
+[DSPLAY]
+Pantalla
+
+[DEBUGM]
+Debug Menu
+
+[QUITOP]
+Salir de opciones
+
+[CONTRL]
+Config. de controles
[SET1EN]
-Configuración 1. Activada
+Config. 1 activada
+
+[SET1]
+Config. 1
+
+[SET2EN]
+Config. 2 activada
+
+[SET2]
+Config. 2
+
+[SET3EN]
+Config. 3 activada
+
+[SET3]
+Config. 3
+
+[SET4EN]
+Config. 4 activada
+
+[SET4]
+Config. 4
+
+[GOBACK]
+Volver
+
+[MUSVOL]
+Volumen música
+
+[SFXVOL]
+Volumen efectos
+
+[SCROPT]
+OPCIONES DE PANTALLA
+
+[CTRSCR]
+Centrar pantalla
+
+[SCRFOR]
+Formato de pantalla
+
+[GMSVLQ]
+PARTIDA: GUARDAR-CARGAR-SALIR
+
+[GMREST]
+Reiniciar partida
+
+[GMLOAD]
+Cargar partida
[GMSAVE]
Guardar partida
-[FEDS_TB]
-Volver
+[NOGMSV]
+Solo puedes guardar en tu escondite.
-[FEST_OO]
-de
+[DLFILE]
+Borrar archivos de Grand Theft Auto
-[FEC_TUC]
-Control de la torreta
+[CHFILE]
+ESCOGER ARCHIVO PARA CARGAR
-[FEC_RS3]
-Cambiar emisora de radio (Botón L3)
+[CHFIDL]
+ESCOGER ARCHIVO PARA BORRAR
-[FEC_HO3]
-Bocina (Botón L3)
+[SVCONF]
+CONFIRMACIÓN DE GUARDADO
-[C_FAIL]
-¡Misión de justiciero terminada!
+[SVFNAM]
+El nombre del archivo guardado es
-[C_ESCP]
-~r~¡El sospechoso ha escapado!
+[LANGSL]
+SELECCIÓN DE IDIOMA
-[C_VIGIL]
-¡BONIFICACIÓN DE JUSTICIERO!
+[ENGLIS]
+Inglés
-[HEAL_A]
-Tu ~h~salud~w~ aparece en naranja en la parte superior derecha de la pantalla.
+[GERMAN]
+Alemán
-[WRONGCD]
-Disco incorrecto. Introduce el disco correcto.
+[ITALIA]
+Italiano
-[NOCD]
-La bandeja del disco está vacía. Por favor, inserta el disco.
+[FRENCH]
+Francés
-[OPENCD]
-La bandeja del disco está abierta. Por favor, cierra la bandeja de disco.
+[SPAIN]
+Español
-[CDERROR]
-Error al leer el DVD de Grand Theft Auto: Vice City
+[RELIDE]
+ReLoadIde
-[RESTART]
-Iniciando nueva partida
+[RELIPE]
+ReLoadIpl
-[GA_3]
-No hay más regalitos. ¡100 $ para volver a pintar!
+[PARSHP]
+Parse Heap
-[GA_1]
-¡Hala! ¡Demasiado peligroso para mi gusto!
+[DBGFON]
+CTheScripts::DbgFlag On
-[GA_1A]
-Vuelve cuando no estés tan ocupado...
+[DBFOFF]
+CTheScripts::DbgFlag Off
-[HELP9_C]
-Pulsa ~h~~k~~k~~PED_FIREWEAPON~~w~para ~h~disparar~w~ el fusil de francotirador.
+[BGWHON]
+Big White Debug Light Switched On
-[TAXI2]
-~r~¡Te has quedado sin tiempo!
+[BGWOFF]
+Big White Debug Light Switched Off
-[PAGEB13]
-Salud entregada en el escondite
+[DSTRON]
+Debug Streaming Requests On
-[PAGEB14]
-Adrenalina entregada en el escondite
+[DSTROFF]
+Debug Streaming Requests Off
-[FESZ_CA]
-Cancelar
+[PDRGON]
+ShowPedRoadGroups On
-[FES_NGA]
-Nueva partida
+[PRGOFF]
+ShowPedRoadGroups Off
-[FES_CAN]
-Cancelar
+[CRRGON]
+ShowCarRoadGroups On
-[FESZ_QL]
-Todo el progreso no guardado de tu partida actual se perderá. ¿Continuar cargando?
+[CRGOFF]
+ShowCarRoadGroups Off
-[FESZ_QD]
-¿Proceder a borrar esta partida guardada?
+[CLZOON]
+Show Cull Zones On
-[FESZ_QO]
-¿Proceder para sobrescribir esta partida guardada?
+[CLZOOF]
+Show Cull Zones Off
-[FESZ_QR]
-¿Seguro que quieres empezar una nueva partida? Todo el progreso desde la última partida guardada se perderá. ¿Continuar?
+[SHPLON]
+gbShowCollisionPolys On
-[T4X4_1]
-Prueba de PCJ
+[SHPLOF]
+gbShowCollisionPolys Off
-[BMX_1]
-Trial de tierra
+[CULREC]
+CCullZones::RecalculateCullZoneData()
-[BMX_2]
-Pista de pruebas
+[FORMM1]
+FormatMemCard 1 (teststuff)
-[BMXFAIL]
-~r~¡No has conseguido un nuevo récord!
+[UNFRM1]
+UnFormatMemCard 1 (teststuff)
-[BMX_REC]
-~g~¡Nuevo récord establecido: ~1~!
+[GORLEV]
+Gore Level
-[T4X4_3]
-¡AGARRADO!
+[SICASS]
+Sick Fuck
-[MM_1]
-CONOCIRCUITO
+[SICSIC]
+Sick Fucker
-[T4X4_F]
-~r~¡Te rajaste! ¿Demasiado duro para ti?
+[SCASSL]
+Sick Fuck Selected
-[LANDSTK]
-Landstalker
+[SCSCSL]
+Sick Fucker Selected
-[IDAHO]
-Idaho
+[PRVMEN]
+Previous Mission Briefs
-[STINGER]
-Stinger
+[FORMEN]
+Format Menu
-[LINERUN]
-Linerunner
+[MEMTST]
+MemoryCardTest screen
-[PEREN]
-Perennial
+[REGCAR]
+Register MemoryCard One
-[SENTINL]
-Sentinel
+[TEFONE]
+Test Format MemCard One
-[RIO]
-Río
+[TEUFON]
+Test UnFormat MemCard One
-[PATRIOT]
-Patriot
+[CRROOT]
+CreateRootDir
-[FIRETRK]
-Camión de bomberos
+[CRLDIC]
+Create and Load Icons
-[TRASHM]
-Trashmaster
+[FLFSGF]
+Fill First File With Guff
-[STRETCH]
-Limusina
+[PUSAVE]
+Save Only the Game
-[MANANA]
-Mañana
+[CHEVOK]
+CheckEveryOkB4Save
-[INFERNS]
-Infernus
+[SVGMON]
+SaveTheGame
-[VOODOO]
-Voodoo
+[CNTSAV]
+No se puede guardar. Estás en una misión.
-[PONY]
-Pony
+[CNCSAV]
+No se puede guardar. Estás en un vehículo.
-[MULE]
-Mule
+[CRMGSV]
+Create copy protected mag directory
-[CHEETAH]
-Cheetah
+[MGSVCN]
+MagazineDirectory Created
-[AMBULAN]
-Ambulancia
+[MGSVNC]
+MagazineDirectory Not Created
-[FBICAR]
-FBI Washington
+[YES]
+Sí
-[MOONBM]
-Moonbeam
+[NO]
+No
-[ESPERAN]
-Esperanto
+[X]
+x
-[TAXI]
-Taxi
+[LAST]
+Last message.
-[WASHING]
-Washington
+[GS_STYL]
+ESTILO:
-[BOBCAT]
-Bobcat
+[GS_FFAL]
+TODOS CONTRA TODOS
-[WHOOPEE]
-Mr Whoopee
+[GS_LOC]
+LUGAR:
-[BFINJC]
-BF Injection
+[GS_SLMT]
+LÍMITE DE PUNTOS:
-[HUNTER]
-Hunter
+[GS_KLMT]
+MÁX. ABAT.:
-[POLICAR]
-Policía
+[GS_TLMT]
+LÍMITE DE TIEMPO:
-[ENFORCR]
-Enforcer
+[GS_ULMT]
+SIN LÍMITE
-[SECURI]
-Securicar
+[GS_PRUP]
+MEJORAS:
-[BANSHEE]
-Banshee
+[GS_RACE]
+CARRERA:
-[PREDATR]
-Predator
+[GS_LAPS]
+VUELTAS:
-[BUS]
-Autobús
+[GS_OK]
+ACEPTAR
-[RHINO]
-Rhino
+[FEH_MP]
+MULTIJUGADOR
-[BARRCKS]
-Barracks OL
+[FEMP_J]
+Unirse
-[CUBAN]
-Cuban Hermes
+[FEMP_CS]
+PERSONAJE:
-[HELI]
-Helicóptero
+[FEMP_PS]
+AJUSTES DEL JUGADOR
-[DODO]
-Dodo
+[FEMP_GS]
+ELEGIR PARTIDA
-[COACH]
-Autocar
+[FEMP_NG]
+INICIAR NUEVA PARTIDA
-[CABBIE]
-Taxi clásico
+[SVRLIST]
+LISTA DE ANFITRIONES
-[STALION]
-Stallion
+[SVRINFO]
+DETALLES DEL ANFITRIÓN
-[RUMPO]
-Rumpo
+[SVRNAME]
+NOMBRE:
-[RCBANDT]
-Bandit RC
+[NO_SVRS]
+BUSCANDO ANFITRIONES
-[ROMERO]
-Romero's Hearse
+[NO_PLRS]
+BUSCANDO JUGADORES
-[PACKER]
-Packer
+[NO_NAME]
+SIN NOMBRE
-[ADMIRAL]
-Admiral
+[NO_WIFI]
+Para jugar partidas multijugador, debes tener el interruptor WLAN activado.
-[SQUALO]
-Squalo
+[FEMP_SG]
+INICIAR PARTIDA
-[SEASPAR]
-Sea Sparrow
+[FEMP_S]
+Inicio
-[PIZZABO]
-Pizza Boy
+[FEMP_WS]
+Esperando al anfitrión...
-[GANGBUR]
-Gang Burrito
+[SVRLOST]
+Se ha perdido la comunicación con el anfitrión.
-[TROPIC]
-Tropic
+[NOSVRS]
+No se ha podido encontrar al anfitrión.
-[SPEEDER]
-Speeder
+[MP_WARN]
+Iniciar una partida multijugador hará que pierdas todo el progreso desde la última vez que guardaste.
-[REEFER]
-Reefer
+[FEDS_XB]
+Seleccionar
-[FLATBED]
-Flatbed
+[FEDS_TB]
+Atrás
-[YANKEE]
-Yankee
+[FEDS_ST]
+botón START (inicio): REANUDAR
-[CADDY]
-Caddy
+[FEST_OO]
+de
-[ZEBRA]
-Taxi cebra
+[FED_SUB]
+SUBTÍTULOS:
-[TOPFUN]
-Top Fun
+[FEC_TUC]
+Control de torreta
-[SKIMMER]
-Skimmer
+[FEC_SM3]
+Activar misión especial (botón R3)
-[PCJ600]
-PCJ 600
+[FEC_RS3]
+Cambiar de emisora (botón L3)
-[PHOENIX]
-Phoenix
+[FEC_HO3]
+Claxon (botón L3)
-[FAGGIO]
-Faggio
+[FIRST]
+~g~1°
-[FREEWAY]
-Freeway
+[SECOND]
+~g~2°
-[RCBARON]
-Barón RC
+[THIRD]
+~g~3°
-[RCRAIDE]
-Raider RC
+[FOURTH]
+~g~4°
-[GLENDAL]
-Glendale
+[NOCONTE]
+Por favor conectar un mando analógico (DUALSHOCK®) o un mando analógico (DUALSHOCK®2) en el puerto de mando 1 para continuar.
-[OCEANIC]
-Oceanic
+[WRCONT]
+El mando conectado al puerto de mando 1 es incompatible. GTA: Liberty City Stories requiere un mando analógico (DUALSHOCK®) o un mando analógico (DUALSHOCK®2).
-[SANCHEZ]
-Sanchez
+[WRCONTE]
+El mando conectado al puerto de mando 1 es incompatible. GTA: Liberty City Stories requiere un mando analógico (DUALSHOCK®) or un mando analógico (DUALSHOCK®2).
-[SPARROW]
-Sparrow
+[WRONGCD]
+Disco incorrecto. Inserta el disco de GTA: Liberty City Stories.
-[LOVEFIS]
-Love Fist
+[NOCD]
+La bandeja del disco está vacia. Inserta el disco de GTA: Liberty City Stories.
-[COASTG]
-Guardacostas
+[OPENCD]
+La bandeja del disco está abierta. Cierra la bandeja del disco.
-[DINGHY]
-Dinghy
+[RESTART]
+Iniciando nueva partida.
-[HERMES]
-Hermes
+[GA_3]
+~w~¡100 $ por repintar!
-[SABRE]
-Sabre
+[GA_1A]
+~w~Vuelve cuando no estés tan ocupado...
-[SABRETU]
-Sabre Turbo
+[AWAY]
+~r~¡Se ha largado de aquí!
-[WALTON]
-Walton
+[GA_6B]
+Aparca, activa la bomba pulsando~h~ ~k~ ~PDFW~ ~w~¡y A CORRER!
-[REGINA]
-Regina
+[GA_7B]
+~w~Activa la bomba con~h~ ~k~ ~PDFW~ ~w~. Estallará cuando el motor arranque.
-[COMET]
-Comet
+[FESZ_CA]
+Cancelar
-[DELUXO]
-Deluxo
+[FESZ_QU]
+Salir
-[BURRITO]
-Burrito
+[FESZ_L1]
+La partida se ha cargado.
-[SPAND]
-Spand Express
+[FESZ_L2]
+Nombre del archivo guardado:
-[MARQUIS]
-Marquis
+[FESZ_OK]
+ACEPTAR
-[BAGGAGE]
-Mozo de equipaje
+[FES_LGA]
+Cargar partida
-[KAUFMAN]
-Taxi Kaufman
+[FES_DGA]
+BORRAR DATOS GUARDADOS
-[COASTMA]
-Guardacostas Maverick
+[FES_NGA]
+NUEVA PARTIDA
-[MAVERIC]
-Maverick
+[FES_CAN]
+Cancelar
-[RANCHER]
-Rancher
+[FESZ_QL]
+Todo el progreso no guardado de la partida se perderá. ¿Seguro que quieres cargar?
-[FBIRANC]
-FBI Rancher
+[FESZ_QD]
+¿Seguro que quieres borrar esta partida guardada?
-[VIRGO]
-Virgo
+[FESZ_QO]
+¿Seguro que quieres sobrescribir esta partida guardada?
-[GREENWO]
-Greenwood
+[FESZ_QR]
+¿Quieres empezar una nueva partida? Se perderá todo el progreso desde la última partida guardada. ¿Continuar?
-[HOTRING]
-Hotring Racer
+[FESZ_QS]
+¿SEGURO QUE QUIERES GUARDAR?
-[BLISTAC]
-Blista Compact
+[T4X4_2A]
+~g~Tienes ~y~2 minutos~g~ para pasar por ~y~12~g~ puntos de control. ~g~Puedes pasar por ellos en ~y~CUALQUIER ORDEN~g~.
+
+[T4X4_2B]
+¡~1~ de 12!
+
+[T4X4_2C]
+~y~PASA POR~g~ el primer punto de control para activar el cronómetro. ~g~Cada punto de control te concederá ~y~10 SEGUNDOS~g~.
+
+[T4X4_F]
+~r~¡Has abandonado! ¿Demasiado duro para ti?
+
+[UPSIDE]
+~r~¡Has volcado!
[FEST_DF]
Dist. recorrida a pie (millas)
@@ -2194,12229 +2728,15124 @@ Distancia recorrida a pie (m)
[FESTDCM]
Distancia recorrida en coche (m)
-[TOT_DIS]
-Distancia total recorrida (millas)
-
-[TOTDISM]
-Distancia total recorrida (m)
-
-[DISTHEL]
-Dist. recorrida en helicóptero (millas)
-
-[DISTHEM]
-Distancia recorrida en helicóptero (m)
-
-[DISTBOA]
-Dist. recorrida en barco (millas)
-
-[DISTBOM]
-Distancia recorrida en barco (m)
-
[FEST_LS]
-Gente salvada en una ambulancia
+Gente salvada en ambulancia
[FEST_CC]
-Criminales asesinados en misión Vigilante
+Criminales abatidos misión Vigilante
[FEST_FE]
-Total de fuegos extinguidos
+Fuegos totales apagados
+
+[FEST_LF]
+Vuelo más largo en Dodo
+
+[FEST_BD]
+Mejor tiempo desactivando una bomba
[FEST_RP]
-Masacres superadas
+Destrucciones superadas
+
+[FEST_CN]
+Mayor tiempo en Karmageddon
+
+[FEST_TR]
+Máx. abatidos RC Triad Take-Down
[FEST_MP]
Misiones superadas
-[FEST_BB]
-Bling-bling Scramble:
-
[FEST_H0]
Mayoría de puntos de control
[FEST_GC]
Total de coches de bandas:
-[FEST_H1]
-Destrucción del diablo
-
-[FEST_H2]
-Masacre de la mafia
+[USJ]
+~w~¡BONIF. ACROBACIA ÚNICA!
-[FEST_H3]
-Casino Calamity
+[USJ_FAL]
+~w~¡ACROBACIA ÚNICA FALLADA!
-[FEST_H4]
-Rumpo Wrecker
+[HM1_1]
+~g~Fríe a 20 Purple Nines en 2 min. y 30 s.
-[USJ]
-¡BONIFICACIÓN POR MANIOBRA ÚNICA!
+[KM1_8A]
+Pulsa~h~ ~k~ ~PDFW~ ~w~para ~h~activar la bomba~w~ y no olvides apartarte.
-[USJ_DUN]
-MANIOBRA YA COMPLETADA
+[KM1_8D]
+Pulsa~h~ ~k~ ~PDFW~ ~w~para ~h~activar la bomba~w~ y no olvides apartarte.
[RATNG1]
-Ciudadano honrado
+CIUDADANO DE A PIE
[RATNG2]
-Nadie en especial
+NADIE EN ESPECIAL
[RATNG3]
-Basurero
+PUERCO INCÍVICO
[RATNG4]
-Cleptómano
+CHORICILLO
[RATNG5]
-Vándalo
+VÁNDALO
[RATNG6]
-Chico de los recados
+RECADERO
[RATNG7]
-Carterista
+RATERO
[RATNG8]
-Cleptómano
+MANGUI
[RATNG9]
-Chivato
+LADRÓN
[RATNG10]
-Rata
-
-[RATNG11]
-Lince
+RATA
[RATNG12]
-Estafador
+CHANCHULLERO
[RATNG13]
-Timador
+TRAMPOSO
[RATNG14]
-Corredor de apuestas
+TIMADOR
[RATNG15]
-Buscavidas
+ESTAFADOR
[RATNG16]
-Matón
+BRAVUCÓN
[RATNG17]
-Chusma
+MALEANTE
[RATNG18]
-Bribón
+GRANUJA
[RATNG19]
-Rufián
+RUFIÁN
[RATNG20]
-Proscrito
+PROSCRITO
[RATNG21]
-Malhechor
+MATÓN
[RATNG22]
-Asesino
+SACAMANTECAS
[RATNG23]
-Super matón
+GORILILLA
[RATNG24]
-Matón
+GORILÓN
[RATNG25]
-Presidiario
+REINCIDENTE
[RATNG26]
-Exconvicto
+EX PRESIDIARIO
[RATNG27]
-Criminal
+DELINCUENTE
[RATNG28]
-Saqueador
+EXTORSIONADOR
[RATNG29]
-Mafioso
+CEREBRO
[RATNG30]
-Conductor
+CHÓFER
[RATNG31]
-Gorila
+GUARDAESPALDAS
[RATNG32]
-Asesino profesional
+HOMICIDA
[RATNG33]
-Asuntos internos
+CAZARRECOMPENSAS
[RATNG34]
-Agente
+AJUSTICIADOR
[RATNG35]
-Ronin
+RONIN
[RATNG36]
-Manitas
+AMAÑADOR
[RATNG37]
-Asesino a sueldo
+SICARIO
[RATNG38]
-Asociado
+ASOCIADO
[RATNG39]
-Carnicero
+CARNICERO
[RATNG40]
-Encargado de la limpieza
+LIMPIADOR
[RATNG41]
-Asesino
+ASESINO
[RATNG42]
-Consigliere
+CONSIGLIERE
[RATNG43]
-Maleante
+"BAUTIZADO"
[RATNG44]
-Mano derecha
+MANO DERECHA
[RATNG45]
-Ejecutor
+VERDUGO
[RATNG46]
-Teniente
+LUGARTENIENTE
[RATNG47]
-Subjefe
+JEFECILLO
[RATNG48]
-Capo
+CAPO
[RATNG49]
-Jefe
+BOSS
[RATNG50]
-Negado
+CEREBRO CRIMINAL
[RATNG51]
-Don
+DON
[RATNG52]
-Rey de la Jodida Ciudad
+PADRINO
+
+[TRAIN_1]
+Estación de Kurowski
+
+[TRAIN_2]
+Estación de Rothwell
+
+[TRAIN_3]
+Estación de Baillie
+
+[SUBWAY1]
+Estación de Portland
+
+[SUBWAY2]
+Estación de Rockford
+
+[SUBWAY3]
+Estación de Staunton South
+
+[SUBWAY4]
+Terminal de Shoreside
+
+[DETON]
+DETONACIÓN
+
+[RCBOMB1]
+RC Triad Take-Down
+
+[RECORD]
+~w~Nuevo récord: ¡~1~ muertos!
+
+[NRECORD]
+~r~¡No has batido el récord anterior de ~1~ muertos!
+
+[RCBOMBF]
+~r~¡Has salido de la furgoneta!
+
+[RC_2]
+Tienes 2 min. para volar tantos coches de la Mafia como puedas.
+
+[RC_3]
+Tienes 2 min. para volar tantos coches de la Yakuza como puedas.
+
+[RC_4]
+Tienes 2 min. para volar tantos coches de los Yardies como puedas.
+
+[RC_5]
+Tienes 2 min. para volar tantos coches de los Hoods como puedas.
+
+[RC_6]
+Tienes 2 min. para volar tantos coches del Cártel como puedas.
+
+[RAMPKA]
+~w~Necesitas un vehículo para esta destrucción.
[PAGE_00]
.
+[TURTXT]
+¡Aniquilación móvil!
+
+[TURPASS]
+~w~¡Aniquilación superada!
+
+[TUR3D]
+~w~Integridad coche
+
+[FTFRENZ]
+Firetruck Frenzy
+
[WELCOME]
BIENVENIDO A
[TSCORE]
-GANANCIAS: ~1~ $
+~w~GANANCIAS TOTALES: ~1~ $
-[PBOAT_2] { reVC update }
-Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar los cañones del barco.
+[PBOAT_1]
+Pulsa~h~ ~k~ ~VEWEP~ ~w~para disparar los cañones de la embarcación.
-[HJSTAT]
-Distancia: ~1~.~1~m Altura: ~1~.~1~m Vueltas: ~1~ Rotación: ~1~_
+[HM2_1]
+Usa los buggies de RC para destruir los coches blindados. Pulsa~h~ ~k~ ~VEWEP~ ~w~para detonar.
-[HJSTATW]
-Distancia: ~1~.~1~m Altura: ~1~.~1~m Vueltas: ~1~ Rotación: ~1~_ ¡qué gran aterrizaje!
+[HM2_1A]
+Usa los buggies de RC para destruir los coches blindados. Pulsa~h~ ~k~ ~VEWEP~ ~w~para detonar.
-[ATUTOR]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para activar o desactivar las misiones de ATS.
+[HM2_2]
+~r~¡No has destruido todos los coches blindados!
+
+[HM2_6]
+~g~¡Coche blindado destruido!
+
+[FESZ_UC]
+CANCELAR
+
+[FEDS_SM]
+L1, R1: CAMBIAR MENÚ
+
+[FEDS_AS]
+;=: CAMBIAR SELECCIÓN
+
+[FEDSAS2]
+<>: CAMBIAR SELECCIÓN
+
+[FEDS_SS]
+L1,R1: CAMBIAR SELECCIÓN
+
+[FEDSSC1]
+;: DESPLAZAM. MÁS RÁPIDO
+
+[FEDSSC2]
+=: DETENER DESPLAZAM.
+
+[FES_LOF]
+Error al cargar.
+
+[FES_SLO]
+EL ARCHIVO GUARDADO
+
+[FES_ISC]
+ESTÁ DAÑADO
+
+[FESZ_TI]
+GUARDAR Z1
+
+[FESZ_SA]
+Guardar partida
+
+[MC_LDFL]
+Error al cargar.
+
+[MC_NWRE]
+Se está reiniciando la partida.
+
+[BIFP_1]
+~w~¡Auu! Distancia de la caída de morros: ~1~,~1~ m
+
+[BIFP_1F]
+~w~¡Auu! Distancia de la caída de morros: ~1~ pies
+
+[DIAB1_5]
+TIEMPO DE CARRERA:
+
+[F_FAIL1]
+~r~Misión de bombero terminada.
+
+[F_CANC]
+~r~¡Misión de bombero cancelada!
+
+[F_FAIL3]
+~r~¡Demasiado tarde!
+
+[F_FAIL4]
+~r~¡Ha muerto uno de los pasajeros!
+
+[F_FAIL5]
+~r~¡Uno de los coches ha sido destruido!
+
+[F_FAIL6]
+~r~¡El coche ha sido destruido!
+
+[F_EXTIN]
+Incendios
+
+[A_CANC]
+~r~¡Misión de médico ATS cancelada!
+
+[ALEVEL]
+~w~Nivel de misión de médico ATS ~1~
+
+[A_FAIL1]
+~r~Misión de médico ATS terminada.
[FEST_HA]
-Nivel más alto de misión de ATS
+Mayor nivel de médico ATS
+
+[A_SAVES]
+~w~GENTE SALVADA: ~1~
[C_KILLS]
-CRIMINALES ASESINADOS: ~1~
+~w~CRIMINALES LIQUIDADOS: ~1~
-[HJSTATF]
-Distancia: ~1~ pies Altura: ~1~ pies Vueltas: ~1~ Rotación: ~1~_
+[F_START]
+Se ha informado de un ~b~vehículo en llamas~w~ en la zona de ~a~. Ve y apaga el incendio.
-[HJSTAWF]
-Distancia: ~1~ pies Altura: ~1~ pies Vueltas: ~1~ Rotación: ~1~_, ¡y qué gran aterrizaje!
+[F_STAR1]
+Se ha informado de varios ~b~vehículos en llamas~w~ en la zona de ~a~. Ve y apaga los incendios.
-[CRED001]
-ROCKSTAR NORTH
+[F_REWAR]
+~w~¡FUEGO APAGADO! ¡Completado el nivel ~1~! Recompensa: ~1~ $
-[CRD001A]
-DIRECTOR DEL ESTUDIO
+[CINCAM]
+Cámara cinematográfica
-[CRD001B]
-ANDREW SEMPLE
+[FEDS_AM]
+<>: CAMBIAR MENÚ
-[CRED002]
-PRODUCTOR
+[KABOOM]
+¡BUUUUM!
-[CRD002A]
-DIRECTOR DE DESARROLLO
+[SPLAT]
+SPLAT!
-[CRED003]
-LESLIE BENZIES
+[PANCAK]
+PANCAKED!
-[CRED004]
-DIRECTOR DE ARTE
+[SOAKED]
+SOAKED!
-[CRED005]
-AARON GARBUT
+[HEAD]
+Head Radio
-[CRED006]
-DIRECTORES TÉCNICOS
+[DBL_CLF]
+Double Clef FM
-[CRED007]
-OBBE VERMEIJ
+[FLASHB]
+Flashback FM
-[CRED008]
-ADAM FOWLER
+[RISE]
+Rise FM
-[CRED010]
-ANDREW DUTHIE
+[LIPS]
+Lips 106
-[CRED011]
-CRAIG FILSHIE
+[CHAT]
+Chatterbox FM
-[CRED012]
-WILLIAM MILLS
+[K_JAH]
+K-Jah Radio
-[CRED013]
-CHRIS ROTHWELL
+[GAM_FM]
+Game Radio FM
-[CRD013A]
-IMRAN SARWAR
+[MSX_FM]
+MSX FM
-[CRD013B]
-JAMES WORRALL
+[GA_2]
+~w~Nuevo motor y capa de pintura: 100 $
-[CRD013C]
-JOHN HAIME
+[PERPIC]
+Paquetes ocultos encontrados
-[CRED014]
-ESCRITO POR
+[GA_21]
+~w~No puedes guardar más vehículos en este garaje.
-[CRED015]
-JAMES WORRALL
+[CHEAT1]
+Truco activado
-[CRED016]
-PAUL KUROWSKI
+[CHEAT2]
+Truco de arma
-[CRED017]
-DAN HOUSER
+[CHEAT3]
+Truco de salud
-[CRED018]
-DISEÑO DEL PERSONAJE PRINCIPAL
+[CHEAT4]
+Truco de blindaje
-[CRD018A]
-DISEÑO DE PERSONAJES
+[CHEAT5]
+Truco de nivel de búsqueda
-[CRED019]
-IAN MCQUE
+[CHEAT6]
+Truco de dinero
-[CRD019A]
-TOKS SOLARIN
+[CHEAT7]
+Truco de clima
-[CRD019B]
-ALAN DAVIDSON
+[FEDS_BA]
+botón ": ATRÁS
-[CRED020]
-ANIMACIÓN PRINCIPAL
+[FED_WIS]
+PANTALLA PANORÁMICA:
-[CRED021]
-ALEX HORTON
+[USJ_ALL]
+~w~¡ACROBACIAS ÚNICAS COMPLETADAS!
-[CRD022A]
-ANIMACIÓN
+[JAN]
+Ene.
-[CRED022]
-LEE MONTGOMERY
+[FEB]
+Feb.
-[CRD022B]
-DUNCAN SHIELDS
+[MAR]
+Mar.
-[CRD022C]
-GUS BRAID
+[APR]
+Abr.
-[CRED023]
-DISEÑO DE VEHÍCULOS
+[MAY]
+May.
-[CRD023A]
-JOLYON ORME
+[JUN]
+Jun.
-[CRD023B]
-ALAN DUNCAN
+[JUL]
+Jul.
-[CRD024A]
-DISEÑO DEL VEHÍCULO PRINCIPAL
+[AUG]
+Ago.
-[CRED024]
-PAUL KUROWSKI
+[SEP]
+Sep.
-[CRED025]
-DISEÑO DE MAPAS
+[OCT]
+Oct.
-[CRED026]
-ADAM COCHRANE
+[NOV]
+Nov.
-[CRED027]
-NIK TAYLOR
+[DEC]
+Dic.
-[CRED028]
-GARY MCADAM
+[DEFDT]
+--:---:---- --:--:--
-[CRED029]
-KEIRAN BAILLIE
+[BONUS]
+~g~BONIF. DE ~1~ $
-[CRED030]
-ALISDAIR WOOD
+[TAXI_M]
+Taxista
-[CRED031]
-ANDREW SOOSAY
+[COP_M]
+Vigilante
-[CRD031A]
-STEVEN MULHOLLAND
+[FIRE_M]
+Bombero
-[CRD031B]
-WAYLAND STANDING
+[AMBUL_M]
+Médico ATS
-[CRD031C]
-CAMPBELL J. DICK
+[HJ_IS]
+~w~BONIF. ACROBACIA DEMENCIAL: ~1~ $
-[CRD031D]
-DISEÑO GRÁFICO
+[HJ_PIS]
+~w~BONIF. ACROBACIA DEMENCIAL PERFECTA: ~1~ $
-[CRD031E]
-STUART PETRI
+[HJ_DIS]
+~w~BONIF. ACROBACIA DEMENCIAL DOBLE: ~1~ $
-[CRED032]
-PROGRAMADOR JEFE
+[HJ_PDIS]
+~w~BONIF. ACROBACIA DEMENCIAL DOBLE PERFECTA: ~1~ $
-[CRD032A]
-PROGRAMADORES
+[HJ_TIS]
+~w~BONIF. ACROBACIA DEMENCIAL TRIPLE: ~1~ $
-[CRED033]
-ALEXANDER ROGER
+[HJ_PTIS]
+~w~BONIF. ACROBACIA DEMENCIAL TRIPLE PERFECTA: ~1~ $
-[CRED034]
-GRAEME WILLIAMSON
+[HJ_QIS]
+~w~BONIF. ACROBACIA DEMENCIAL CUÁDRUPLE: ~1~ $
-[CRED035]
-BARANE CHAN
+[HJ_PQIS]
+~w~BONIF. ACROBACIA DEMENCIAL CUÁDRUPLE PERFECTA: ~1~ $
-[CRED036]
-DEREK PAYNE
+[HJBAD]
+~w~¡Un aterrizaje penoso! Casi ganas ~1~ $
-[CRED037]
-GORDON YEOMAN
+[HJUP]
+Takeoff health: ~1~
-[CRD037A]
-ALAN CAMPBELL
+[HJDOWN]
+Landing health: ~1~
-[CRD037B]
-MARK HANLON
+[FESZ_LS]
+Éxito al cargar.
-[CRD037C]
-ANDRZEJ MADAJCZYK
+[CEDBUG1]
+!!Debug Event!!
-[CRED038]
-PRODUCTOR JEFE MUSICAL
+[CEDBUG2]
+!!Player is dead or not playing!!
-[CRED039]
-CRAIG CONNER
+[CEDBUG3]
+!!Player is in INDUSTRIAL level!!
-[CRED040]
-STUART ROSS
+[CEDBUG4]
+Trying to make COLLECTIVE with ~1~
-[CRED041]
-INGENIERO JEFE DE AUDIO
+[CEDBUG5]
+Debug Value: ~1~
-[CRED042]
-ALLAN WALKER
+[CEDBUG6]
+Debug Values: A: ~1~ B: ~1~
-[CRD041A]
-INGENIERO DE AUDIO
+[CEDBUG7]
+Debug Values: A: ~1~ B: ~1~ C: ~1~
-[CRD041B]
-AUDIO
+[LINE]
+This is Line ~1~
-[CRD042A]
-WILL MORTON
+[MRACE08]
+~w~¡Vuelve cuando tengas un vehículo!
-[CRED043]
-PROGRAMADOR DE AUDIO
+[MRACE01]
+~w~Espera a que venga algún rival y toca el claxon para empezar la carrera.
-[CRED044]
-RAYMOND USHER
+[MRACE02]
+~w~La carrera empezará cuando el primer jugador toque el claxon.
-[CRED045]
-JEFE DE PRUEBAS
+[MRACE05]
+~r~¡HAS PERDIDO!
-[CRED046]
-CRAIG ARBUTHNOTT
+[MRACE07]
+~r~¡Estás muerto! ¡Eres un perdedor!
-[CRED047]
-CONTROL DE CALIDAD PRINCIPAL
+[MRACE06]
+~r~¡Cobarde! ¡Te has retirado!
-[CRED048]
-NEIL CORBETT
+[MRACE09]
+~w~¡Vuelve a la carrera!
-[CRED049]
-KEVIN WONG
+[MRACE10]
+~w~¡Has ganado (aunque ibas solo)!
-[CRED050]
-CONTROL DE CALIDAD
+[MRACEPO]
+Posición
-[CRED051]
-DAVID BEDDOES
+[MRCPU03]
+¡HAS PRENDIDO FUEGO A TODOS!
-[CRED052]
-DAVID WATSON
+[MRCPU04]
+¡ESTÁS ARDIENDO! ( ------- TRASHMASTER ODD-JOB MISSION ------- )
-[CRED053]
-BARRY CLARK
+[TRASH1]
+Basurero
-[CRED054]
-ROSS SPARROW
+[TRASH1A]
+~w~Recoge los cubos de basura y llévalos al vertedero.
-[CRED055]
-JAMES ALLAN
+[TRASH1C]
+~w~El cronómetro empezará cuando recojas un cubo. Puedes recogerlos en CUALQUIER ORDEN.
-[CRED056]
-NEIL MEIKLE
+[TRASH1G]
+~r~¿Demasiado duro para ti? ¡Basura!
-[CRD056A]
-GEORGE WILLIAMSON
+[TRASH1H]
+~r~¡Has agotado el tiempo!
-[CRD056B]
-MATT JONES
+[TRASH1J]
+~r~¡Te has alejado demasiado de la ruta!
-[CRD056C]
-ROB HARBOUR
+[TRASH1K]
+~w~Recoge los ~g~cubos~w~.
-[CRD056D]
-TOM WHITTAKER
+[TRASH1L]
+~w~Vuelve al ~y~vertedero~w~.
-[CRED057]
-SOPORTE TÉCNICO PRINCIPAL
+[TRASH1M]
+~w~¡Basura recogida! + ~1~ s.
-[CRED058]
-LORRAINE ROY
+[PCJINFO]
+~w~Pasa por los 25 ~y~puntos de control~w~ en menos de ~1~ s.
-[CRD057A]
-SOPORTE TÉCNICO
+[PCJFAIL]
+~r~¡No has conseguido hacerlo en menos de ~1~ s.!
-[CRED059]
-CHRISTINE CHALMERS
+[PCJPROM]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto~w~!
-[CRD060A]
-SOPORTE DE OFICINA
+[PCJPRO1]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto~w~!
-[CRD060B]
-KIM GURNEY
+[PCJDEST]
+~r~¡Moto destrozada!
-[CRD060C]
-CASSIE OLIVER
+[PCJRET]
+~r~No has vuelto a la moto.
-[CRED060]
-ROCKSTAR NUEVA YORK
+[PCJTIME]
+~r~¡Se te ha acabado el tiempo!
-[CRED061]
-GABINETE DE APOYO
+[PCJCHEC]
+~w~~1~ de ~1~ puntos de control
-[CRED062]
-SAM HOUSER
+[TRRACE1]
+~w~Conseguirás más tiempo por cada punto de control que pases...
-[CRED063]
-PRODUCTOR
+[TRRACE3]
+~w~Has terminado con ~1~ s. de sobra.
-[CRED064]
-DAN HOUSER
+[TRRACE4]
+~w~You reached ~1~ checkpoints out of ~1~ checkpoints first.
-[CRED065]
-VICEPRESIDENTE DE DESARROLLO
+[TRRACE5]
+~w~¡Eso te da ~1~ $!
-[CRED066]
-JAMIE KING
+[TRRACE6]
+~w~¡BIEN HECHO! ¡Has pasado el primero por todos los puntos de control! ¡Bonif. de 1.000 $!
-[CRED067]
-OFICIAL JEFE DE TECNOLOGÍA
+[TRRACE7]
+~r~¡Te has salido de la pista!
-[CRED068]
-GARY J. FOREMAN
+[TRRACE8]
+~r~¡Tu moto está destrozada!
-[CRED069]
-PRODUCTOR ASOCIADO
+[TRRACE9]
+~r~No has vuelto a la moto a tiempo.
-[CRED070]
-JEREMY POPE
+[TRRAC10]
+~r~¡Te has quedado sin moto!
-[CRD071A]
-DIRECTOR DE CONTROL DE CALIDAD
+[TRRAC11]
+~r~¡Se te ha acabado el tiempo!
-[CRD072A]
-JEFF ROSA
+[ANG]
+Ángeles Vengadores
-[CRED071]
-SUPERVISOR MUSICAL
+[ANG_1]
+~w~¡Eh, amigo! ¡Vamos a limpiar de chorizos esta ciudad!
-[CRED072]
-TERRY DONOVAN
+[ANG_2A]
+Pulsa~h~ ~k~ ~TGSUB~ ~w~para unirte a los Ángeles Vengadores.
-[CRED073]
-EQUIPO DE PRODUCCIÓN
+[ANG_3]
+~w~Tú y yo nos podríamos adueñar de esta ciudad solitos. Pero, esto... mejor buscamos ayuda por si acaso.
-[CRED074]
-TERRY DONOVAN
+[ANG_3A]
+~w~Para cerca de otros Ángeles Vengadores para que se unan a tu banda.
-[CRED075]
-JENNIFER KOLBE
+[ANG_4]
+~w~¡Eo! ¡Me he unido a esta panda de gallinas para dar hostias! ¡Así que vamos!
-[CRED076]
-JENEFER GROSS
+[ANG_5]
+~w~Yo soy tu hombre...
-[CRED077]
-LAURA PATERSON
+[ANG_6]
+~w~¡Vamos a quemar chusma!
-[CRED078]
-JEFF CASTANEDA
+[ANG_7]
+~w~¡Mola dar hostias!
-[CRED079]
-JERONIMO BARRERA
+[ANG_7A]
+~w~¿Os dais cuenta?
-[CRED080]
-CARLY SLATER
+[ANG_7B]
+~w~¡No queremos bandas de chuloputas en nuestras calles!
-[CRED081]
-JUNG KWAK
+[ANG_7C]
+~w~¡No en mi vecindario!
-[CRED082]
-BRIAN WOOD
+[ANG_7D]
+~w~¡Es hora de devolvérsela!
-[CRED083]
-RENAUD SEBANNE
+[ANG_7E]
+~w~¡Somos la ley en esta ciudad!
-[CRED084]
-RICHARD KRUGER
+[ANG_8]
+Tiempo restante
-[CRD084A]
-DANIEL EINZIG
+[ANG_9]
+~w~¡Tiempo prorrogado!
-[CRD084B]
-JACEN BURROWS
+[ANG_10]
+~r~¡Se te ha acabado el tiempo!
-[CRD084C]
-LINN PR
+[ANG_11]
+~w~Hay un grupo de 'indeseables' pululando por aquí... Vamos a darles una lección.
-[CRD084D]
-DISEÑO DE PORTADA
+[ANG_12]
+~w~Hay unos linchadores montando jarana por la calle. ¡Pacifiquemos a esos idiotas!
-[CRD084E]
-STEPHEN BLISS
+[ANG_13]
+~w~¿Adónde va a ir a parar esta ciudad? ¿Acaso creen que pueden reunirse libremente? ¡Démosles una lección!
-[CRED085]
-KENT PAUL'S 80 NOSTALGIA ZONE
+[ANG_13A]
+~w~Han visto a una banda muy chunga pegando a la gente por la calle...
-[CRED086]
-ESCRITO POR DAN HOUSER
+[ANG_14]
+~w~Han informado de otro delito... ¡En marcha!
-[CRD086A]
-PRODUCIDO POR ADAM TEDMAN
+[ANG_16]
+~w~Han visto a gente aparcar en zona prohibida. ¡ADELANTE!
-[CRED087]
-WWW.KENTPAUL.COM AND WWW.VICECITY.COM
+[ANG_16A]
+~w~Sé de unos tíos que siempre están tramando algo. Ya es hora de que les demos una buena tunda.
-[CRED088]
-CREADO POR
+[ANG_OBJ]
+~w~Acaba con la ~r~banda~w~ problemática.
-[CRD088A]
-ADAM TEDMAN
+[ANG_17]
+~w~¡Bien hecho, amigo! Gracias a ti, no hay delincuentes en este barrio. Al menos por ahora...
-[CRD088B]
-DAVID YU
+[ANG_18]
+~w~¡Se están abriendo!
-[CRD088C]
-JERRY LUNA
+[ANG_19]
+~w~Encuentra a un Ángel Vengador y párate a su lado para la próxima misión.
-[CRD088D]
-STUART PETRI
+[ANG_20]
+~w~¡Se están largando!
-[CRD088E]
-MICHAEL CARNEVALE
+[ANG_21]
+~w~¡Que no escapen!
-[CRD088F]
-GREG LAU
+[VIC1]
+Home Sweet Home
-[CRD088G]
-FUTABA HAYASHI
+[VIC2]
+Slacker
-[CRED089]
-JEFE DE CONTROL DE CALIDAD
+[VIC3]
+Dealing Revenge
-[CRED090]
-CRAIG ARBUTHNOTT
+[VIC4]
+Snuff
-[CRED091]
-ANALISTA JEFE
+[VIC5]
+Smash and Grab
-[CRED092]
-ADAM DAVIDSON
+[VIC6]
+Hot Wheels
-[CRD092A]
-JOE HOWELL
+[VIC7]
+The Portland Chainsaw Masquerade
-[CRD092B]
-MARC FERNANDEZ
+[MAR1]
+Shop 'til you Strop
-[CRED093]
-ANALISTA DEL JUEGO
+[MAR2]
+Taken for a Ride
-[CRED094]
-RICHARD HUIE
+[MAR3]
+Booby Prize
-[CRED095]
-EQUIPO DE PRUEBAS DE ROCKSTAR
+[MAR4]
+Biker Heat
-[CRED096]
-LANCE WILLIAMS
+[MAR5]
+Overdose of Trouble
-[CRED097]
-JOE GREENE
+[SAL1]
+The Offer
-[CRED098]
-BRIAN PLANER
+[SAL2]
+Ho Selecta!
-[CRD098A]
-ELIZABETH SATTERWHITE
+[SAL3]
+Frighteners
-[CRD098B]
-JAMEEL VEGA
+[SAL4]
+Rollercoaster Ride
-[CRD098C]
-MIKE HONG
+[SAL5]
+Contra-Banned
-[CRED099]
-LEE CUMMINGS
+[SAL6]
+Sindacco Sabotage
-[CRED100]
-HISTORIA
+[SAL7]
+The Trouble with Triads
-[CRED101]
-JAMES WORRALL
+[SAL8]
+Driving Mr. Leone
-[CRED102]
-DAN HOUSER
+[JDT1]
+Bone Voyeur!
-[CRED103]
-ADAM TEDMAN
+[JDT2]
+Don in 60 Seconds
-[CRED104]
-PAUL YEATES
+[JDT3]
+A Volatile Situation
-[CRED105]
-JENEFER GROSS
+[JDT4]
+Blow up 'Dolls'
-[CRED106]
-LAURA PATERSON
+[JDT5]
+Salvatore's Salvation
-[CRED107]
-SECUENCIAS
+[JDT6]
+The Guns of Leone
-[CRED108]
-ESCRITAS POR DAN HOUSER Y JAMES WORRALL
+[JDT7]
+Calm before the Storm
-[CRED109]
-DIRECCIÓN DE AUDIO DE DAN HOUSER Y NAVID KHONSARI
+[JDT8]
+The Made Man
-[CRED110]
-PRODUCIDAS POR JAMIE KING
+[MAC1]
+Snappy Dresser
-[CRD110A]
-SELECCIÓN DE ACTORES: JAMIE KING, SEAN MACALUSO
+[MAC2]
+Big Rumble in Little China
-[CRED111]
-REPARTO
+[MAC3]
+Grease Sucho
-[CRD111A]
-PERSONAJES DE REPARTO
+[MAC4]
+Dead Meat
-[CRED112]
-TOMMY VERCETTI - RAY LIOTTA
+[MAC4_0]
+Casa
-[CRED113]
-KEN ROSENBERG - WILLIAN FICHTNER
+[MAC5]
+No Son of Mine
-[CRED114]
-SONNY FORELLI - TOM SIZEMORE
+[SALH1]
+Rough Justice
-[CRED115]
-STEVE SCOTT - DENNIS HOPPER
+[SALH2]
+Dead Reckoning
-[CRED116]
-AVERY CARRINGTON - BURT REYNOLDS
+[SALH3]
+Shogun Showdown
-[CRED117]
-RICARDO DÍAZ - LUIS GUZMÁN
+[SALH4]
+The Shoreside Redemption
-[CRED118]
-LANCE VANCE - PHILIP MICHAEL THOMAS
+[SALH4_V]
+~r~v1.1
-[CRED119]
-CORONEL JUAN CORTEZ - ROBERT DAVI
+[SALH5]
+The Sicilian Gambit
-[CRED120]
-UMBERTO ROBINA - DANNY TREJO
+[SALH5_V]
+~r~v1.1
-[CRED121]
-PHIL CASSIDY - GARY BUSEY
+[DONH1]
+Panlantic Land Grab
-[CRED122]
-MITCH BAKER - LEE MAJORS
+[DONH2]
+Stop the Press
-[CRED123]
-MERCEDES CORTEZ - FAIRUZA BALK
+[DONH3]
+Morgue Party Resurrection
-[CRED124]
-KENT PAUL - DANNY DYER
+[DONH4]
+No Money, Mo' Problems
-[CRED125]
-JEZZ TORRENT - KEVIN MCKIDD
+[DONH5]
+Bringing the House Down
-[CRED126]
-SUPERVISOR TAXIS - DEBORAH HARRY
+[DONH6]
+Love on the Run
-[CRED127]
-CANDY SUXX - JENNA JAMESON
+[TOSH1]
+More Deadly than the Male
-[CRED128]
-BJ SMITH - LAWRENCE TAYLOR
+[TOSH2]
+Cash Clash
-[CRED129]
-TÍA POULET - YOUREE CLEOMILI HARRIS
+[TOSH2F0]
+~r~¡Un furgón ha llegado al recinto de los yakuza!
-[CRED130]
-PROVEEDOR - ARMANDO RIESCO
+[TOSH2F1]
+~r~¡El convoy ha llegado al recinto de los yakuza!
-[CRED131]
-COUGAR - BLAYNE PERRY
+[TOSH2F2]
+~r~¡No has destruido los furgones!
-[CRED132]
-HILARY - CHARLES TUCKER
+[TOSH2M0]
+~w~¡Uno menos!
-[CRED133]
-CONGRESISTA ALEX SHRUB - CHRIS LUCAS
+[TOSH2M1]
+~w~¡Otro menos!
-[CRED134]
-VIEJO KELLY - GEORGE DICENZO
+[TOSH3]
+A Date with Death
-[CRD134A]
-CAM JONES - GREG SIMS
+[TOSH4]
+Cash in Kazuki's Chips
-[CRD134B]
-PSICÓPATA - HUNTER PLATIN
+[PO_MOB1]
+~w~¿Toni? ¡Soy tu madre!
-[CRD134C]
-MAUDE LA VENDEDORA DE HELADOS - JANE GENNARO
+[POMOB1A]
+~w~¿Cuánto hace que has vuelto a la ciudad?
-[CRD134D]
-JETHRO - JOHN ZURHELLEN
+[POMOB1B]
+~w~¿Cómo es que no has venido a verme?
-[CRD134E]
-GONZÁLEZ - JORGE PUPO
+[POMOB1C]
+~w~¿Qué te pasa?
-[CRD134F]
-DWAYNE - NAVID KHONSARI
+[POMOB1D]
+~w~¡Virgen Santa! ¡Soy tu madre! Vamos.
-[CRD134G]
-DICK - PETER MCKAY
+[PO_MOB2]
+~w~¡Hola, Toby! Soy María.
-[CRD134H]
-MIKE EL MATÓN & CHICO PORNO - ROBERT CIHRA
+[PO_MOB3]
+~w~¡Eh, Toni! Soy J.D.
-[CRD134I]
-PERCY - RUSSELL FOREMAN
+[POMOB3A]
+~w~Ya me he enterado de que vas a hacer cosas importantes.
-[CRED135]
-CAPTURA DE MOVIMIENTOS
+[POMOB3B]
+~w~Espero que no te olvides de tu viejo amigo J.D. cuando estés en la cresta de la ola. ¿Vale?
-[CRED136]
-ANIMACIÓN DE
+[POMOB4A]
+~w~¿Qué cojones quieres?
-[CRD136A]
-DIRECCIÓN TÉCNICA DE ALEX HORTON
+[POMOB4B]
+~w~¿Alguien que limpie tus trapos sucios? ¿O quizá el culito?
-[CRED137]
-DIRIGIDO POR
+[POMOB4C]
+~w~No seas así. Escucha, siento todo lo que ha pasado...
-[CRD137A]
-DIRIGIDO POR NAVID KHONSARI
+[POMOB4F]
+~w~¿Un pastel de arsénico?
-[CRED138]
-PRODUCIDO POR
+[POMOB4G]
+~w~Olvídalo.
-[CRD138A]
-PRODUCIDO POR JAMIE KING
+[POMOB4I]
+~w~Salvatore se ha enterado y me ha dicho que debemos hacer las paces.
-[CRD138B]
-RENAUD SEBBANE
+[POMOB4J]
+~w~Así que te tiendo la mano y te pido perdón. Venga, ven.
-[CRED139]
-GRABADO EN PERSPECTIVE STUDIOS, BROOKLYN
+[PO_MOB5]
+~w~¿Toni? Soy Salvatore.
-[CRED140]
-ACTORES DE CAPTURA DE MOVIMIENTOS
+[POMOB5A]
+~w~¡Tenemos un marrón del quince! ¡Ven aquí corriendo!
-[CRD140A]
-BLAYNE PERRY
+[PO_MOB6]
+~w~¿Anthony? Soy Salvatore.
-[CRD140B]
-JONATHON SALE
+[POMOB6A]
+~w~¿Has visto a María?
-[CRD140C]
-CHARLES TUCKER
+[ST_MOB8]
+~w~¿Sí...?
-[CRD140D]
-EDDIE MARRERO
+[STMOB8A]
+~w~¿Toni? Soy Sal.
-[CRD140E]
-WILLIAM MCCALL
+[STMOB8B]
+~w~Tenemos que hablar, pero no me fío de los móviles.
-[CRD140F]
-JORGE PUPO
+[STMOB8C]
+~w~Te llamaré al teléfono público que hay delante de los juzgados.
-[CRD140G]
-ROBERT JACKSON
+[ST_MOB1]
+~w~Toni. Soy Donald.
-[CRD140H]
-TARA RADCLIFFE
+[STMOB1A]
+~w~Tengo algo urgente que requiere de tus... habilidades especiales.
-[CRD140I]
-JENIFER GAMBETESE
+[STMOB1B]
+~w~Pásate por mi despacho en cuanto puedas.
-[CRD140J]
-KRIS ACHEVARRIA
+[ST_MOB2]
+~w~¿Diga?
-[CRD140K]
-ALI ORDOUBADI
+[STMOB2A]
+~w~¿Cipriani? Soy yo, McAffrey.
-[CRD140L]
-KAHLEEM POOLE
+[STMOB2B]
+~w~Tengo unas noticias que le gustarán a Salvatore.
-[CRED141]
-DIÁLOGOS DE LOS PEATONES
+[STMOB2C]
+~w~Ven a verme al sitio de siempre.
-[CRD141A]
-ESCRITOS POR DAN HOUSER, MARC FERNÁNDEZ, GILLIAN TELLING Y NAVID KHONSARI
+[ST_MOB3]
+~w~¿Diga?
-[CRD141B]
-CON LA AYUDA DE JEREMY POPE, LANCE WILLIAMS, Y JENNY JEMISON
+[STMOB3A]
+~w~Soy Sal.
-[CRED142]
-ESCRITO POR
+[STMOB3B]
+~w~Escucha, los Forelli tenían al alcalde Hole en el bolsillo.
-[CRD142A]
-DAN HOUSER Y JAMES WORRALL
+[STMOB3D]
+~w~Sé de un pez gordo de los negocios que haría cualquier cosa por conseguir el cargo.
-[CRED143]
-DIRIGIDO POR DAN HOUSER, CRAIG CONNER, MARC FERNÁNDEZ, Y ALLAN WALKER
+[STMOB3E]
+~w~Es un capullo integral, así que es ideal para el puesto.
-[CRED144]
-PRODUCIDO POR RENAUD SEBANNE
+[STMOB3F]
+~w~Le he dicho que le ayudarías a ganar las elecciones... ¡por nosotros!
-[CRED145]
-PEATONES
+[ST_MOB4]
+~w~Hola.
-[CRED146]
-ADAM DAVIDSON, ADAM WATKINS, ALEJANDRO K. BROWN, ALEX ANTHONY SIOUKAS, ALEX GARCÍA,
+[STMOB4A]
+~w~Toni. Soy yo, Sal.
-[CRED147]
-ALICE SALTZMAN, ALISON CIHRA, AMY SALIMA, AMY SALZMAN, ANDREA VIDELA, ANTHONY ATTI,
+[STMOB4B]
+~w~Huelo a los Forelli detrás del marrón en el que estoy.
-[CRED148]
-ANTHONY RIVERA, BIJAN SHAMS, BLAYNE PERRY, BRETT BISOGNO, BREYE MATA, BRIAN PANEN,
+[STMOB4C]
+~w~Lo que quiero saber es, ¿por qué querían que el alcalde me la metiera doblada?
-[CRED149]
-BROCK VODER, CAREY BERTINI, CHARISSE LAMBERT, CHRIS DIFAT, CHRIS REISENBERGER,
+[STMOB4D]
+~w~Escucha, ve a verme al embarcadero.
-[CRED150]
-CHRISTOPHER BRODAY, CHRISTOPHER CARRO, CYNTHIA GREENE, DAMARIES LÓPEZ, DAN LEE,
+[STMOB4E]
+~w~Vamos a hacer unas averiguaciones.
-[CRED151]
-DAN SCHNEIDER, DAN TOYAMA, DAVID DEAN CHALTFIELD, JR., DAVID HARRISON, DAVID WILEY,
+[ST_MOB5]
+~w~¡Hola!
-[CRED152]
-DEBORAH COLLINS, DEBRANDA CHANEY-GILES, DEMETRA KOUKOULAS, DENISE ROSADO,
+[STMOB5B]
+~w~Ve a la cabina de teléfono de Torrington.
-[CRED153]
-DEVIN BENNETT, DEVIN WINTERBOTTOM, DORIS WOO, DOUGLAS HARRISON, DUNCAN COUTTS,
+[STMOB5C]
+~w~Tenemos que hablar.
-[CRED154]
-DUPE AJAYI, EDWIN AVELLANEDA, ELIZABETH HOWELL, ELIZABETH SATTERWHITE, ERIC NAGLE,
+[STMOB5D]
+~w~De camino, quiero que vayas a ver a un socio mío en Aspatria.
-[CRED155]
-ESTEBAN KARPLUS, F. FONT, FUTABA HAYASHI, GENE HILGREEN, GERALD COSGROVE,
+[STMOB5E]
+~w~Nos ayudará a meterles presión a los Sindacco y los Forelli.
-[CRED156]
-GERARD LUNA, GILLIAN TELLING, GREGG CARLUCCI, GREGORY CLERVOIX, GREGORY SCHWEIZER,
+[ST_MOB6]
+~w~¿Sí...?
-[CRED157]
-HADLEY TOMICKI, J. ROSSETT, JAMEEL VEGA, JASON JONES, JEFF ROSA, JENNIFER JEMISON,
+[STMOB6A]
+~w~¿Toni? Soy Sal.
-[CRED158]
-JEREMY TAGGERT, JESSICA RIDER, JOSEPH GREENE,JOSEPH HOWELL, KATE DUKICH,
+[STMOB6B]
+~w~Ve a la cabina de teléfono de Liberty Campus.
-[CRED159]
-KEL O'NEILL, KEVIN HOPKINS, LADAWN JAMES, LANCE WILLIAMS, LAURA BUBBLES,
+[STMOB6C]
+~w~Es importante.
-[CRED160]
-LAURA PATTERSON, LEE CUMMINGS, LETICIA L. YOUNG, LINDSAY KENNEDY, LISA ORITZ,
+[ST_MOB7]
+~w~¿Diga?
-[CRED161]
-LORNA JORDAN, LUCIO AMADIO, MARCO FERNÁNDEZ, MARIKO TANAKA, MARLON MATTHEWS,
+[STMOB7A]
+~w~¿Toni? Aquí Sal.
-[CRED162]
-MARY TELLING, MASAYOSHI MITSUYAMA, MATTHEW CHUNG, MAX ALLSTADT, MAX BOGDANOV,
+[STMOB7B]
+~w~Ve a Belleville y busca la cabina de teléfono.
-[CRED163]
-MELISSA ÁLVAREZ, MICHAEL MAY, MICHAEL ROTHSTEIN, MIGUEL VIDAL, MIKE FEDERLINE,
+[STMOB7C]
+~w~Necesito que hagas algo urgente.
-[CRED164]
-NATALIE DESCALZO, N'GAI MEMBERS, NICOLAS MALLO, NOELLE SADLER, NORBERT MORIVAN,
+[ST_MOB9]
+~w~Toni Cipriani al aparato.
-[CRED165]
-OSWALD GREENE, JR., PETER MCKAY, PETER APPEL, PRESTON SAVARESE, RAFAEL GONZÁLEZ,
+[STMOB9A]
+~w~¿Toni? Soy tu madre.
-[CRED166]
-RANDY JOHNSON, REY CONCEPCIÓN, RICHARD KROGER, ROB TIBBS, ROBERT JACKSON,
+[STMOB9B]
+~w~¡He oído que te han 'bautizado'!
-[CRED167]
-ROBERT SCHULER, ROSS A. MCINTYRE, RUSSELL FOREMAN, RUTH NÚÑEZ, SALVADORE SUAZO,
+[STMOB9C]
+~w~¡Nunca dudé de ti, hijo!
-[CRED168]
-SAM WHITE, SANTOS GONZÁLEZ, SCOTT SMITH, SEYMOUR FRAILMAN, SPELMAN BRAUMAN,
+[STMOB9D]
+~w~Y ver cómo al final has demostrado lo que vales...
-[CRED169]
-STEPHANIE TELLING, STEVE KNEZEVICH, STEVE ROBERT, SUMIKO YASUDA, SUSAN LEWIS,
+[STMOB9E]
+~w~Voy a retirar el encarguito que hice contra ti.
-[CRED170]
-SYLVIA COLACIOS, TOMOKO MIYAZAKI, TRON, VERDEL HALE, YVES MONDESIR, ZENO LEINFELDER,
+[STMOB9F]
+~w~Pelillos a la mar.
-[CRED171]
-DAVID BEDDOES, CHRISTINE CHALMERS, BARRY CLARK, NEIL CORBETT, KIM GURNEY, NEIL MEIKLE,
+[STMOB9G]
+~w~Al fin y al cabo, lo hice pensando en lo que más te convenía.
-[CRED172]
-CASSIE OLIVER, LORRAINE ROY, DAVID WATSON, KEVIN WONG, WILL MORTON
+[STMOB9H]
+~w~Ah, ¿qué clase de hijo hace que su madre llegue a tales extremos?
-[CRED175]
-ADAM DAVIDSON
+[STMOB9I]
+~w~Nos vemos pronto, hijo. No te olvides de tu vieja madre.
-[CRED176]
-LANCE WILLIAMS
+[STMO10]
+~w~¿Diga?
-[CRED177]
-NEIL MCCAFFREY
+[STMO10A]
+~w~Eh, tío duro. Soy McAffrey.
-[CRED178]
-LAURA PATERSON
+[STMO10B]
+~w~Los federales han trincado a tu jefe, Salvatore.
-[CRED179]
-REY CONCEPCIÓN
+[STMO10C]
+~w~Y están cabreadísimos.
-[CRED180]
-CHARLES HEROLD
+[STMO10D]
+~w~Le van a cargar a Sal todos los marrones de esta ciudad.
-[CRED181]
-ANDREW GREENWALD
+[STMO10E]
+~w~Así que nunca nos hemos visto, ¿eh?
-[CRED182]
-JAMES MIELKE
+[SH_MOB1]
+~w~¿Toni...?
-[CRED183]
-PETER SUCIU
+[SHMOB1A]
+~w~¿Sal? ¿Eres tú?
-[CRED184]
-ALEX ODULIO
+[SHMOB1B]
+~w~¡Eh, callad! ¡Que estoy hablando con mi abogado...!
-[CRED185]
-DON NKRUMAH
+[SHMOB1C]
+~w~¿Toni...? Digo... eeh... ¿Lionel?
-[CRED186]
-KENDALL PITTMAN
+[SHMOB1D]
+~w~Escucha. Me han trincado. ¿Te lo puedes creer?
-[CRED187]
-SAL SUAZO
+[SHMOB1E]
+~w~Me la han metido hasta el fondo.
-[CRED188]
-EREK MATEO
+[SHMOB1F]
+~w~Ven a toda hostia, necesito que te encargues de una cosa.
-[CRED189]
-CHRIS DIFATE
+[SHMOB1G]
+~w~¿Lionel...?
-[CRED190]
-LEILA MILTON
+[SH_MOB2]
+~w~¿Diga?
-[CRED191]
-DARREN ZOLTOWSKI
+[SHMOB2A]
+~w~¿Toni? Soy Donald.
-[CRED192]
-VIRGINIA SMITH
+[SHMOB2B]
+~w~No, espera, ¡no cuelgues!
-[CRED193]
-KEVIN CASSIN
+[SHMOB2C]
+~w~Tengo una proposición muy cachonda que hacerte...
-[CRED194]
-JASON SHIGEMORI
+[SHMOB2D]
+~w~Pasa por mi... em... residencia actual, y te pongo al tanto.
-[CRED195]
-KELLY KINSELLA
+[SHMOB2E]
+~w~¿Toni...?
-[CRED196]
-MOLLIE STICKNEY
+[SHMOB2F]
+~w~Por favor, Toni, ten piedad. Te llamo con mi última mo...
-[CRED197]
-STANTON SARJEANT
+[SH_MOB3]
+~w~¿Es el Sr. Cipriani?
-[CRED198]
-LAURA WALSH
+[SHMOB3A]
+~w~¿Quién es? ¿Cómo ha conseguido este número?
-[CRED199]
-MARK GARONE
+[SHMOB3B]
+~w~Si uno pone todo su empeño, puede conseguir mucho.
-[CRED200]
-JOANNA SLY
+[SHMOB3C]
+~w~Creo que usted ya lo sabe, Sr. Cipriani.
-[CRED201]
-ELIZABETH HOWELL
+[SHMOB3D]
+~w~Necesito su ayuda con algo muy delicado.
-[CRED202]
-ANA HÉRCULES
+[SHMOB3E]
+~w~A cambio, será recompensado con generosidad.
-[CRED203]
-SHIRLEY IRICK
+[SHMOB3F]
+~w~Se lo explicaré cuando venga a mi apartamento, en Torrington.
-[CRED204]
-KASHONA FIELDS
+[SH_MOB4]
+~w~¡Toni! ¡Soy Sal!
-[CRED205]
-JOEL M. LILJE
+[SHMOB4A]
+~w~¡Lo has logrado! ¡Casi ni me lo creo, chico!
-[CRED206]
-JOHN DIBENEDETTO
+[SHMOB4B]
+~w~¡Apenas hay ratas en casa!
-[CRED207]
-NANCY GILES
+[SHMOB4C]
+~w~Ven a verme. Nos quedan por atar unos cabos sueltos.
-[CRED208]
-RYAN CROY
+[SH_MOB5]
+~w~¿Toni? Aquí Donald.
-[CRED209]
-JENNIFER KOLBE
+[SHMOB5A]
+~w~Si lo de Panlantic sale adelante, vamos a necesitar, ejem...
-[CRED210]
-LIAM BURKE
+[SHMOB5B]
+~w~¿Cómo decirlo sin que suene mal...?
-[CRED211]
-SIGRID PREISSL
+[SHMOB5C]
+~w~'Limpiar' una pequeña parcela en Fort Staunton.
-[CRED212]
-ANITA FITZSIMONS
+[SHMOB5D]
+~w~Cuando dices 'vamos' quieres decir 'voy', ¿no?
-[CRED213]
-PHILIPPA RASELLI
+[SHMOB5E]
+~w~Toni, tú y yo nos entendemos bien.
-[CRED214]
-WIL QUESNEL
+[SHMOB5F]
+~w~Ve a ver a 8-Ball. Seguro que nos podrá facilitar el material necesario.
-[CRED215]
-FALKO BURKERT
+[SHMOB5G]
+~w~Seguro que nos podrá facilitar el material necesario.
-[CRED216]
-SARA SEWELL
+[SH_MOB6]
+~w~¿Tío? Soy 8-Ball.
-[CRED217]
-EMISORAS DE RADIO Y MÚSICA
+[SHMOB6A]
+~w~Los petardos ya están listos.
-[CRED218]
-ASESOR MUSICAL
+[AHIT_H0]
+~w~¿No sabes nada mejor, capullo?
-[CRD218A]
-HEINZ HENN
+[AHIT_H1]
+~w~¡Por el amor de Dios! ¿Cuándo se rendirán estos capullos?
-[CRD218B]
-STUART ROSS
+[AHIT_H2]
+~w~¡Bésame el culo, gilipollas!
-[CRED219]
-COORDINADOR DE LA BANDA SONORA
+[AHIT_H3]
+~w~¡Estos chicos empiezan a cabrearme!
-[CRED220]
-TERRY DONOVAN
+[AHIT_BI]
+~w~¡Estate alerta! ¡Uno de los sicarios de mamá está cerca!
-[CRED221]
-PRODUCTOR DE ROCKSTAR GAMES
+[AHIT_TA]
+~w~¡Mucho ojo! ¡Uno de los asesinos a sueldo de mamá anda por aquí!
-[CRED222]
-DAN HOUSER Y LAZLOW
+[AHIT_BU]
+~w~¡Cuidado! ¡Un sicario de mamá va a por ti!
-[CRED223]
-PRODUCTOR DE ROCKSTAR NORTH
+[AHIT_AM]
+~w~¡Ojo! ¡Uno de los asesinos contratados por mamá te ha visto!
-[CRED224]
-CRAIG CONNER
+[AHIT_VA]
+~w~¡Ojo avizor! ¡Uno de los asesinos a sueldo de mamá está en la zona!
-[CRED225]
-ALLAN WALKER
+[AHIT_PO]
+~w~¡Ojito! ¡Uno de los sicarios de mamá se dispone a matar!
-[CRED226]
-LAZLOW
+[AHIT_CA]
+~w~¡Cuidado! ¡Uno de los asesinos de mamá se te está acercando!
-[CRED227]
-DJ BANTER E IMÁGENES
+[K_TKT]
+Scrapyard Challenge
-[CRED228]
-ESCRITO POR DAN HOUSER Y LAZLOW
+[K_TK2]
+~w~Pasa por las anillas para conseguir puntos.
-[CRED229]
-FLASH FM
+[K_TK4]
+~w~¡Consigue tantos puntos como puedas antes de que se acabe el tiempo!
-[CRD229A]
-TONI-MARIA CHAMBERS
+[K_CD]
+~s~Tienes ~1~ s. para volver a la ~b~moto~s~.
-[CRD229B]
-VOCES FICTICIAS Y PRODUCCIÓN-JEFF BERLIN
+[K_TKP1]
+~w~¡1 punto!
-[CRED230]
-GRACIAS ESPECIALES A
+[K_TKP2]
+~w~¡2 puntos!
-[CRED231]
-TOMMY MOTTOLA,
+[K_TKP3]
+~w~¡3 puntos!
-[CRED232]
-MICHELLE ANTHONY,
+[K_SC]
+Puntuación
-[CRED233]
-STEVE BARNETT,
+[K_SCX]
+~w~¡Has conseguido ~1~ puntos!
-[CRED234]
-CHUCK FLECKENSTEIN,
+[K_SCX1]
+~w~¡Has conseguido 1 punto!
-[CRED235]
-RITA LIBERATOR
+[K_HSC1]
+~w~¡Nuevo récord de ~1~ puntos!
-[CRED236]
-MARTIN & CLAIRE LOGAN
+[K_HSC2]
+~r~No has conseguido batir el récord de ~1~ puntos.
-[CRED237]
-SANDRA HUTTON
+[KRUSH]
+¡Ahora ganarás cuatro veces más dinero al usar la trituradora de coches!
-[CRED238]
-CHRISTINE DAVIDSON
+[KRUSH2]
+¡Ahora ganarás ocho veces más dinero al usar la trituradora de coches!
-[CRED239]
-ALAN, RED & BIGFOOT
+[TURFAIL]
+~r~¡FIN DE LA MISIÓN EVENTUAL!
-[CRED240]
-LE T
+[TKR1]
+9mm Mayhem
-[CRED241]
-COLIN DONALD
+[TKR2]
+Scooter Shooter
-[CRED242]
-KERRY STALLWOOD
+[TCKILL]
+Abatidos
-[CRED243]
-ALAN MCGREGOR
+[TCHEAL]
+Daño
-[CRED244]
-CHRIS MORTON
+[TC2_1]
+~r~¡Has matado al conductor!
-[CRED245]
-EMIL BUSSE
+[TC2_2]
+~r~¡Vehículo destruido!
-[CRED246]
-EMILY BAILLIE
+[TC2_3]
+~r~¡Se acabó el tiempo!
-[CRED247]
-KEVIN ARCHIBALD
+[TC_T_E]
+~w~¡Objetivo eliminado! ~1~ $
-[CRED248]
-MORAG KERR
+[TUP_BR]
+~w~Elimina tantos ~r~objetivos~w~ como puedas antes de que se acabe el tiempo.
-[CRED249]
-CATH WALKER
+[TUP_BR2]
+~w~¡Elimina a más de ~1~ ~r~objetivos~w~ para conseguir un nuevo récord!
-[CRED250]
-ISO BAR
+[TUP_AD]
+~w~Tienes 3 pastillas de adrenalina. Pulsa el botón R1 para usar una.
-[CRED251]
-WATERLINE
+[TUPSC1]
+~w~¡Nuevo récord de ~1~ abatidos!
-[CRED252]
-NEWS CAFE
+[TUPSC2]
+~r~No has conseguido superar el récord de ~1~ abatidos.
-[CRD251A]
-THE POND
+[MPWCS1]
+The Wedding List
-[CRD252A]
-PIVO
+[MPWCS2]
+Eh, ¿qué te cuentas?
-[CRED253]
-BUDGET VIDEO RENTALS
+[MPWCS3]
+Oye, mi hijo Joey va a dar un braguetazo.
-[CRED254]
-LORNA'S SCOOTER
+[MPWCS4]
+Le he buscado a una chica con clase, igualita a mi María... ¡Ganas tengo de que se conozcan!
-[CRED255]
-GARETH MURFIN
+[MPWCS5]
+Pero no quiero que ella lo vea conducir uno de esos trastos que arregla en su taller.
-[CRED256]
-ARTE ADICIONAL
+[MPWCS6]
+Así que peina esta ciudad y búscale un buga decente.
-[CRED257]
-TONY PORTER
+[MPWCS7]
+Te aseguro que te recompensaré.
-[CRED258]
-CRAIG MOORE
+[MPTCS1]
+Tanks for the Memories
-[CRED259]
-ANIMACIÓN DE SINCRONIZACIÓN LABIAL DE LAS SECUENCIAS
+[MPTCS2]
+Aquí Sal. Necesito distraer a la poli y tú vas a ayudarme.
-[CRED260]
-COSGROVE HALL FILMS
+[MPTCS3]
+Tengo un tanque aparcado al otro lado de la ciudad. ¡Cógelo y arrasa con todo!
-[CRED261]
-PRODUCTOR - OWEN BALLHATCHET
+[MPTCS4]
+Quiero que la gente crea que se han meado en la tumba de Patton.
-[CRED262]
-ANIMADOR SENIOR - JON TURNER
+[MPTCS5]
+Escucha, esta distracción es muy importante, así que he avisado también a otros hombres de confianza.
-[CRED263]
-ANIMADORES - RICHARD DRUMM
+[MPTCS6]
+Solo pienso pagar al que esté a los mandos más tiempo.
-[CRED264]
-DAVE BROWN
+[MPRCS1]
+Street Rage
-[CRED265]
-MAIR THOMAS
+[MPRCS2]
+Soy Salvatore Leone, el benefactor público consagrado.
-[CRED266]
-PRASHANT PATEL
+[MPRCS3]
+¡No hagan caso de lo que dice el fiscal general!
-[CRED267]
-ASESOR TECNOLOGÍA DE AUDIO
+[MPRCS4]
+Soy un amigo bueno y generoso de Liberty City. Por eso hoy patrocino esta gran carrera.
-[CRED268]
-RIK EDE PARA GAMESOUND LTD.
+[MPRCS5]
+¿Cuánto me cuesta esta mierda?
-[CRED269]
-SOPORTE DTS INTEGRATION
+[MPRCS6]
+¡¿QUÉ?! Llévenme a urgencias. ¡Tengo un dolor en el pecho!
-[CRED270]
-TED LAVERTY DE DTS
+[MPHPCS2]
+Aquí Sal... Los federales me han pinchado el teléfono, así que seré sutil.
-[CRED271]
-CHRIS GREER DE DTS
+[MPHPCS3]
+Hay un maletín lleno de 'lechugas' debajo del teléfono y una lista de nombres. Adivina qué quiero...
-[CRED272]
-JASON PAGE DE SCEE
+[MPHPCS4]
+¡Aguarda...! No, no quiero que repartas la pasta entre esos cabrones.
-[CRED273]
-INVESTIGACIÓN Y ANÁLISIS
+[MPHPCS5]
+Ya sabes... Apártalos de mi vista.
-[CRED274]
-VROCK
+[MPHPCS6]
+Espera, no quería decir 'apartar' en el sentido de 'alejar'. Quería decir... um...
-[CRED275]
-DJ: LAZLOW COMO ÉL MISMO
+[MPHPCS7]
+¡Mira, mata a todos los cabrones de esa lista!
-[CRED276]
-VOZ-JOE KELLY
+[DEB0]
+DEBUG 0
-[CRED277]
-PRODUCCIÓN-JONATHAN HANST
+[DEB1]
+DEBUG 1
-[CRED278]
-WAVE 103
+[DEB2]
+DEBUG 2
-[CRED279]
-DJ: ADAM FIRST-JAMIE CANFIELD
+[DEB3]
+DEBUG 3
-[CRED280]
-VOZ-JEN SWEENEY
+[DEB4]
+DEBUG 4
-[CRED281]
-PRODUCCIÓN-JONATHAN HANST
+[NUM0]
+DEBUG 0 (~1~)
-[CRED282]
-FEVER 105
+[NUM1]
+DEBUG 1 (~1~)
-[CRED283]
-DJ: OLIVER 'LADYKILLER' BISCUIT-JULIUS DYSON
+[NUM2]
+DEBUG 2 (~1~)
-[CRED284]
-VOZ MASCULINA-ED MCMANN
+[NUM3]
+DEBUG 3 (~1~)
-[CRED285]
-VOZ FEMENINA-SHAWNEE SMITH
+[NUM4]
+DEBUG 4 (~1~)
-[CRED286]
-PRODUCCIÓN- LISTEN KITCHEN
+[CARS]
+Vendedor de coches
-[CRED287]
-EMOTION 98.3
+[BIKE]
+Vendedor de motos
-[CRED288]
-DJ: FERNANDO- FRANK CHAVEZ
+[RACE_0]
+Posición
-[CRED289]
-VOZ-JEN SWEENEY
+[RACE_FL]
+~w~ÚLTIMA VUELTA
-[CRED290]
-PRODUCCIÓN-JONATHAN HANST
+[RACE_X0]
+~w~Consigue un coche y ponte en la ~y~línea de salida~w~.
-[CRED291]
-RADIO ESPANTOSO
+[RACE_X1]
+~w~Consigue una moto y ponte en la ~y~línea de salida~w~.
-[CRED292]
-DJ: PEPE-TONY CHILRODES
+[RACE_X2]
+~w~¡Necesitas un coche para participar!
-[CRED293]
-WILDSTYLE
+[RACE_X3]
+~w~¡Necesitas una moto para participar!
-[CRED294]
-DJ: MISTER MAGIC AS HIMSELF
+[RACE_X4]
+~w~Tienes ~1~ s. para encontrar un coche.
-[CRED295]
-VOZ-FRANK SILVESTRO
+[RACE_X5]
+~w~Tienes ~1~ s. para encontrar una moto.
-[CRED296]
-PRODUCCIÓN-LAZLOW
+[RACE_X6]
+~w~Tienes 1 s. para encontrar un coche.
-[CRED297]
-KCHAT
+[RACE_X7]
+~w~Tienes 1 s. para encontrar una moto.
-[CRED298]
-ESCRITO POR DAN HOUSER Y LAZLOW
+[RACE_T0]
+~r~¡No has quedado el primero!
-[CRED299]
-PRODUCIDO Y EDITADO POR LAZLOW
+[RACE_T1]
+~r~Te han descalificado por abandonar el coche.
-[CRED300]
-DJ AMY SHECKENHAUSEN -LEYNA WEBER
+[RACE_T2]
+~r~Ha muerto uno de los corredores - se ha cancelado la carrera.
-[CRED301]
-JEZ TORRENT-KEVIN MCKIDD
+[RACE_T3]
+~r~Te han descalificado por abandonar la moto.
-[CRED302]
-MANDY -COLLEEN CORBETT
+[RACE_Y3]
+~w~3
-[CRED303]
-MICHELLE CARAPADIS-MARY BIRDSONG
+[RACE_Y2]
+~w~2
-[CRED304]
-MR.ZOO-CARL DOWLING
+[RACE_Y1]
+~w~1
-[CRED305]
-GETHSEMANEE-LYNN LIPTON
+[RACE_Y]
+~w~¡YA!
-[CRED306]
-CLAUDE MAGINOT-JOHN MAUCERI
+[RACE_Z1]
+~w~¡1ª POSICIÓN!
-[CRED307]
-BJ SMITH-LAWRENCE TAYLOR
+[RACE_Z2]
+~w~¡2ª POSICIÓN!
-[CRED308]
-THOR-FRANK FAVA
+[RACE_Z3]
+~w~¡3ª POSICIÓN!
-[CRED309]
-PERSONAS LLAMANDO A LA RADIO
+[RACE_Z4]
+~w~¡ÚLTIMA POSICIÓN!
-[CRED310]
-COUZIN ED, JOSH CLARK, JASON BUHRMESTER, JUAN ALLER, WAYNE OLIVER, SUSAN LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN, DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP, KEITH BROADAS
+[RACE_R1]
+~w~RÉCORD: ~1~:~1~~1~ ¡NUEVO RÉCORD!
-[CRED311]
-LEWIS, GILLIAN TELLING, TOM MURRAY, MIKE FERRANTE SR., EMMANUEL GOLDSTEIN,
+[RACE_R2]
+~w~¡NUEVO RÉCORD!
-[CRED312]
-DAN HOUSER, NICK MANDELOS, GERRY COSGROVE, MIKE PALERMO, PORKCHOP,
+[RACE_S0]
+~w~TIEMPO: ~1~:~1~~1~
-[CRED313]
-KEITH BROADAS
+[RACE_S1]
+~w~MEJOR VUELTA: ~1~:~1~~1~
-[CRED314]
-VCPR
+[RAC1]
+Low-Rider Rumble
-[CRED315]
-ESCRITO POR DAN HOUSER Y LAZLOW
+[RAC2]
+Deimos Dash
-[CRED316]
-PRODUCIDO POR LAZLOW
+[RAC3]
+Wi-Cheetah Run
-[CRED317]
-MAURICE CHAVEZ-PHILLIP ANTHONY RODRIGUEZ
+[BIK1]
+Red Light Racing
-[CRED318]
-JONATHAN FREELOADER- PATRICK OLSEN
+[BIK2]
+Torrington TT
-[CRED319]
-MICHELLE MONTANIUS-KELLY GUEST
+[BIK3]
+Gangsta GP
-[CRED320]
-REP. ALEX SHRUB- CHRIS LUCAS
+[TT1]
+Bumps & Grinds
-[CRED321]
-CALLUM CRAYSHAW- SEAN MODICA
+[TT1_A1]
+~w~< TRAZADO ~1~ >
-[CRED322]
-JOHN F. HICKORY- LJ GANSEN
+[TT1_B1]
+~w~Objetivo del trazado: ~1~:~1~
-[CRED323]
-PASTOR RICHARDS- DAVID GREEN
+[TT1_B1A]
+~w~Objetivo del trazado: ~1~:0~1~
-[CRED324]
-JAN BROWN- MAUREEN SILLIMAN
+[TT1_B2]
+~w~Mejor tiempo de trazado: ~1~:~1~
-[CRED325]
-BARRY STARK- RENAUD SEBBANE
+[TT1_B2A]
+~w~Mejor tiempo de trazado: ~1~:0~1~
-[CRED326]
-JENNY LOUISE CRAB- MARY BIRDSONG
+[TT1_B3]
+~w~Mejor tiempo de vuelta: ~1~:~1~
-[CRED327]
-KONSTANTINOS SMITH- KONSTANTINOS.COM
+[TT1_B3A]
+~w~Mejor tiempo de vuelta: ~1~:0~1~
-[CRED328]
-JEREMY ROBARD-PETER SILVESTRO
+[TT1_B4]
+~w~~1~:~1~
-[CRED329]
-ANUNCIOS DE RADIO
+[TT1_B4A]
+~w~~1~:0~1~
-[CRED330]
-ESCRITOS POR DAN HOUSER Y LAZLOW
+[TT1_B5]
+~w~¡Nuevo récord de trazado! ~1~:~1~
-[CRED331]
-PRODUCIDOS POR LAZLOW
+[TT1_B5A]
+~w~¡Nuevo récord de trazado! ~1~:0~1~
-[CRED332]
-JINGLES ADICIONALES PRODUCIDOS POR CRAIG CONNER
+[TT1_L]
+~r~ Bloqueado.
-[CRED333]
-VOCES EN LOS ANUNCIOS:
+[A_PISTO]
+~w~< Pistola >
-[CRED334]
-ADAM DAVIDSON, ALEX ANTHONY, ALICE SALTZMAN, AMY SALZMAN, KATE DUKICH,
+[A_UZI]
+~w~< Micro subfusil >
-[CRED335]
-ARAN RONICLE, BARB JONES, BEN KRECH, BRIAN THOMAS, BROCK YODER, CHRIS
+[A_AK]
+~w~< AK 47 >
-[CRED336]
-FERRANTE, CRAIG CONNER, DAVE RYAN, DAVID GREEN, DORIS WOO, DOUGLAS
+[A_SNIPE]
+~w~< Rifle de francotirador >
-[CRED337]
-HARRISON, ED MCMANN, FRANK CHÁVEZ, FRANK FAVA, GENE HILGREEN, GREG
+[A_GRENA]
+~w~< Granadas >
-[CRED338]
-SCHWEIZER, HUNTER PLATIN, JAMES FERRANTE, JEFF BERLIN, JEFF ROSA, JOE KELLY,
+[A_ARMOU]
+~w~< Blindaje corporal >
-[CRED339]
-JOHN MAUCERI, JOSH CLARK, JULIE WEMYSS, KEVIN STRALEY, KIM GURNEY, LANCE
+[A_ROCKE]
+~w~< Lanzacohetes >
-[CRED340]
-WILLIAMS, LAURA PATERSON, LAZLOW, LISA ORTIZ, LORNA JORDAN, LUCIEN JONES,
+[A_SHOTG]
+~w~< Escopeta >
-[CRED341]
-MAUREEN SILLIMAN, MIKE FERRANTE JR., PETE GUSTIN, PETER SILVESTRO, RAFF
+[A_M4]
+~w~< M-4 >
-[CRED342]
-CROLLA, RANDY JOHNSON, RICHARD KRUGER, RON REEVE, SHELLEY MILLER, SKY, TJ ALLARD
+[A_FLAME]
+~w~< Lanzallamas >
-[CRD344A]
-AUDIO GRABADO EN DIGITAL ARTS STUDIOS,
+[A_MINIG]
+~w~< Minigun >
-[CRED344]
-NYC, TRACK 9 STUDIOS, NYC,
+[A_COST]
+~w~Precio: ~h~~1~ $
-[CRED345]
-WEDDINGTON MULTIMEDIA, LOS ANGELES,
+[A_COST2]
+~w~Precio: ~h~~1~ $ ~n~ ~r~Esto sustituirá a tu arma actual.
-[CRD345A]
-SYNC SOUND, NYC Y RADIO LAZLOW, LONG ISLAND.
+[A_COST3]
+~w~Precio: ~h~~1~ $ ~n~ ~r~Tu blindaje corporal está en buen estado.
-[CRED346]
-GRACIAS A AXEL ERICSON Y WON LEE EN DIGITAL ARTS, PAUL VÁSQUEZ EN TRACK 9 STUDIOS, JOHN BOWEN Y JOHN HASSLER EN SYNC SOUND
+[A_COST4]
+~w~Precio: ~h~~1~ $ ~n~ ~r~No puedes permitirte esto.
-[CRED347]
-MARK LLOYD
+[A_STOCK]
+~r~Sin existencias
-[CRED348]
-TIM BATES
+[A_VIC4]
+~w~Una pistola suele valer 240 $, pero ésta va a cuenta de Vincenzo.
-[CRED349]
-KIT BROWN
+[A_DONS4]
+~w~Donald Love ya ha pagado esto.
-[CRED350]
-ANDY MASON
+[A_NEDS4]
+~w~Un 'santo varón' reservó esto para usted.
-[CRED351]
-PHIL DEANE
+[A_TALK1]
+~w~Tengo todo lo que necesita para defenderse.
-[CRED352]
-PHIL ALEXANDER
+[A_TALK2]
+~w~¿Quiere también un permiso?
-[CRED353]
-MATT HEWITT
+[A_TALK3]
+~w~No necesito pedirle el carné. Usted parece de confianza.
-[CRED354]
-DENBY GRACE
+[A_TALK4]
+~w~Bienvenido. Pruebe el campo de tiro en la trastienda.
-[CRED355]
-ANTOINE CABROL
+[BENZ_GO]
+~w~¡Cámbiate de ropa!
-[CRED356]
-JONOTHAN STONES
+[PIZ_B01]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto de repartidor~w~!
-[CRED357]
-MIKE BLACKBURN
+[PIZ_B02]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto de repartidor~w~!
-[CRED358]
-TIM MCGAFF
+[PIZ_F04]
+~r~¡No has vuelto a la moto de repartidor!
-[CINCAM]
-Cámara cinemática
+[NDL_B01]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto de repartidor~w~!
-[RC4]
-MASACRES RUMPO
+[NDL_B02]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto de repartidor~w~!
-[LEGAL]
-~g~¡Elimina la amenaza criminal!
+[NDL_F04]
+~r~¡No has vuelto a la moto de repartidor!
-[GA_2]
-Nuevo motor y trabajo de pintura. ¡Los policías no te reconocerán!
+[EXPO_D]
+~w~Tarifa por objeto encontrado: ~1~ $ ¡Acaba la lista para conseguir un extra!
-[HELP15]
-Cuando vayas a pie, pulsa ~h~~k~~PED_LOOKBEHIND~~w~ para ~h~mirar detrás~w~. Utiliza el ~h~joystick analógico derecho~w~ para ~h~mirar a tu alrededor~w~.
+[PUPSPN]
+~w~¡MEJORA GENERADA!
-[FEC_LB4]
-Mirar detrás (botón R3)
+[PUPMEGA]
+~y~¡MEGADAÑO!
-[PERPIC]
-Objetos ocultos encontrados
+[PUPREGN]
+~y~¡REFUERZO DE SALUD!
-[CO_ONE]
-Objeto oculto ~1~ de ~1~
+[PUPINVS]
+~y~¡INVISIBILIDAD!
-[GA_21]
-No puedes almacenar más coches en este garaje.
+[PUPFREZ]
+~y~¡FRENESÍ!
-[CHEAT1]
-Truco activado
+[MPK]
+ha matado a
-[CHEAT2]
-Truco de arma
+[MPKHEAD]
+ha recibido un tiro en la cabeza
-[CHEAT3]
-Truco de salud
+[MPNEED]
+solo necesita
-[CHEAT4]
-Truco de blindaje
+[MPNAME]
+Nombre
-[CHEAT5]
-Truco de nivel de se busca
+[MPSCORE]
+Punt.
-[CHEAT6]
-Truco de dinero
+[MPPING]
+Ping
-[CHEAT7]
-Truco de tiempo
+[MPCPS]
+Puntos de control
-[USJ_ALL]
-¡TODAS LAS MANIOBRAS ÚNICAS COMPLETADAS!
+[MPTIME]
+Tiempo
-[JAN]
-Ene
+[MPBONUS]
+Bonificación
-[FEB]
-Feb
+[MPQG]
+¿Salir de la partida?
-[MAR]
-Mar
+[MPQUIT]
+Salir
-[APR]
-Abr
+[MPCONT]
+Continuar
-[MAY]
-May
+[MPHIGH]
+Tiempo más alto
-[JUN]
-Jun
+[MPBY]
+por
-[JUL]
-Jul
+[MPOVER]
+Game Over
-[AUG]
-Ago
+[MPFIRST]
+ha terminado primero
-[SEP]
-Sep
+[MPWITH]
+gana con ($):
-[OCT]
-Oct
+[MPHP05]
+~w~5 s. para el siguiente objetivo.
-[NOV]
-Nov
+[MPHP04]
+~w~4 s. para el siguiente objetivo.
-[DEC]
-Dic
+[MPHP03]
+~w~3 s. para el siguiente objetivo.
-[DEFDT]
---:---:---- --:--:--
+[MPHP02]
+~w~2 s. para el siguiente objetivo.
-[BONUS]
-~g~BONIFICACIÓN ~1~ $
+[MPHP01]
+~w~1 s. para el siguiente objetivo.
+
+[RCRANGE]
+~w~¡Está demasiado lejos!
+
+[CAD5_AA]
+Aquí Sal.
+
+[CAD5_AB]
+¡Esos Forelli me han tocado los huevos! ¡Y van pagarlo!
+
+[CAD5_AC]
+Quiero que cojas sus coches más fardones...
+
+[CAD5_AD]
+... y los lleves al depósito de coches de los Sindacco, sus mayores rivales.
+
+[CAD5_AE]
+Asegúrate de que los Forelli no roben ningún coche de los Sindacco como represalia.
+
+[CAD5_AF]
+¿Capisci?
+
+[CAD4_AA]
+Soy yo, Sal.
+
+[CAD4_AB]
+Le debo una a Franco Forelli, y tú me vas a ayudar a devolvérsela.
+
+[CAD4_AC]
+En el depósito de coches de los Sindacco tienen algunos bugas muy fardones.
+
+[CAD4_AD]
+Quiero que los robes todos y los lleves al aparcamiento de los Forelli.
+
+[CAD4_AE]
+Asegúrate de que no roben ningún vehículo de los Forelli mientras estés por allí.
+
+[CAD4_AF]
+Eh, y no la cagues.
+
+[MPC_000]
+Toni
+
+[MPC_001]
+'Lionel'
+
+[MPC_002]
+Cipriani
+
+[MPC_003]
+Chófer
+
+[MPC_004]
+Mono
+
+[MPC_005]
+Toni Esmoquin
+
+[MPC_006]
+Furía
+
+[MPC_007]
+El Rey
+
+[MPC_008]
+Cocks
+
+[MPC_009]
+Streak
+
+[MPC_010]
+'T'
+
+[MPC_011]
+Dragón
+
+[MPC_012]
+J.D.
+
+[MPC_013]
+El Masoca
+
+[MPC_014]
+Avery
+
+[MPC_015]
+Choc-Choc
+
+[MPC_016]
+8-Ball
+
+[MPC_017]
+Maria
+
+[MPC_018]
+'Hamfists'
+
+[MPC_021]
+Número 1
+
+[MPC_023]
+Hung Lo
+
+[MPC_025]
+Yamazaki
+
+[MPC_031]
+Agente '69'
+
+[MPC_032]
+El Especialista
+
+[MPC_034]
+G.I. Jones
+
+[MPC_035]
+Sam
+
+[FEA_FM0]
+HEAD RADIO
+
+[FEA_FM1]
+DOUBLE CLEF FM
+
+[FEA_FM2]
+K-JAH
+
+[FEA_FM3]
+RISE FM
+
+[FEA_FM4]
+LIPS 106
+
+[FEA_FM5]
+RADIO DEL MUNDO
+
+[FEA_FM6]
+MSX 98
+
+[FEA_FM7]
+FLASHBACK FM
+
+[FEA_FM8]
+THE LIBERTY JAM
+
+[FEA_FM9]
+LCFR
+
+[MRACELA]
+Vuelta
+
+[DTB_01]
+~w~Defiende tu base de los enemigos que la ataquen.
+
+[DTB_02]
+~w~Protege tus coches a toda costa.
+
+[CAD2_AB]
+~w~Buenas noticias: los Forelli y los Sindacco vuelven a llevarse a matar.
+
+[CAD2_AC]
+~w~Los dos quieren hacerse con toda la venta de coches de Liberty.
+
+[CAD2_AD]
+~w~Como ya 'ayudamos' a los Forelli la semana pasada...
+
+[CAD2_AE]
+~w~... es hora de que equilibremos las cosas.
+
+[CAD2_AF]
+~w~Ayuda a los Sindacco a arrasar el aparcamiento de los Forelli.
+
+[POMOB6B]
+~w~Te juro que yo solo la veo cuando necesita pasta.
+
+[POMOB2A]
+~w~Salvatore me ha dado tu número... Bueno, lo miré en su agenda. ¡Qué más da!
+
+[POMOB2B]
+~w~Tú eres su nuevo perrito, ¿no? Bueno, pues me apetece un paseo.
+
+[POMOB2C]
+~w~Te quiero ver aquí enseguida.
+
+[GS_RGUN]
+EMPEZAR CON ARMAS:
+
+[TUSHTK]
+AWOL Angel
+
+[SC_WICH]
+Récord en AWOL Angel
+
+[NE_WIFI]
+Ha ocurrido un error de red. Se ha apagado el interruptor WLAN. Enciéndelo para jugar las partidas multijugador.
+
+[BNDRAC0]
+Thrashin' RC
+
+[BNDRAC1]
+Ragin' RC
+
+[BNDRAC2]
+Chasin' RC
+
+[GS_G1]
+LIBERTY CITY SURVIVOR
+
+[GS_G2]
+STREET RAGE
+
+[GS_G3]
+PROTECTION RACKET
+
+[GS_G4]
+GET STRETCH
+
+[GS_G5]
+TANKS FOR THE MEMORIES
+
+[GS_G6]
+THE HIT LIST
+
+[GS_G7]
+THE WEDDING LIST
+
+[TRCR1]
+~w~1
+
+[TRCR2]
+~w~2
+
+[TRCR3]
+~w~3
+
+[TRCRGO]
+~w~¡YA!
+
+[GA_16]
+~w~La mano de pintura va incluida.
+
+[NEW_TAX]
+~w~Misión de taxista completada. Mean Street Taxis acaba de recibir un nuevo vehículo en las cocheras de Trenton.
-[HORN1]
-Pulsa ~h~~k~~VEHICLE_HORN~~w~para tocar el ~h~claxon.
+[EXPO_2]
+~w~Si les proporcionas en buen estado los vehículos que quieren, te recompensarán bien.
-[HORN2]
-Pulsa ~h~~k~~VEHICLE_HORN~~w~para tocar el ~h~claxon.
+[FEMP_NC]
+Estableciendo conexiones de red... Espera.
-[HORN3]
-Pulsa ~h~~k~~VEHICLE_HORN~~w~para tocar el ~h~claxon.
+[C1TGSUB]
+botón R3
+
+[C2TGSUB]
+botón R3
+
+[C3TGSUB]
+~S~
+
+[C2VEHN]
+botón R1
+
+[C2VECRS]
+botón L3
+
+[C3VECRS]
+~O~
+
+[C2PDCWE]
+botón L2 y botón R2
+
+[C3PDCWE]
+botón L2 y botón R2
+
+[BENZ_LA]
+~w~El ~h~traje de abogado~w~ ya está disponible en el piso franco.
+
+[BENZ_TR]
+~w~La ~h~ropa informal~w~ ya está disponible en el piso franco.
+
+[SLH1_OU]
+~w~Necesitas un ~h~traje de abogado~w~ para entrar a ver a Sal.
+
+[SLH1_OR]
+~w~Debes llevar un traje de abogado para ver a Sal.
+
+[L_TRN_1]
+~w~Puedes usar el ~h~tren elevado~w~ para viajar por Portland. Pulsa~h~ ~k~ ~VEEE~ ~w~para entrar o salir de él.
+
+[HELP2]
+~w~Pulsa~h~ ~k~ ~PDSPR~ ~w~al correr para ~h~esprintar~w~.
+
+[STMOB5A]
+~w~Toni, soy Sal.
+
+[SCH_TK7]
+~r~Has abandonado el vertedero.
+
+[STMOB3C]
+~w~Pero nosotros nos haremos con el control del ayuntamiento.
+
+[SALH3A]
+~w~Consigue un medio de transporte para Donald.
+
+[MPCASH]
+Dinero
+
+[MPCARS]
+Coches
+
+[CRUSHED]
+Valor de la chatarra: ~1~ $
+
+[BENZ_BO]
+~w~Coge una muda de ~h~ropa interior~w~ en el piso franco.
+
+[BENZ_EL]
+~w~El ~h~mono de 'el Rey'~w~ ya está disponible en el piso franco.
+
+[BENZ_CO]
+~w~El ~h~disfraz de mascota de los Cox~w~ ya está disponible en el piso franco.
+
+[BENZ_HE]
+~w~Misiones de Ángel Vengador, Shoreside: nivel 15 completado. La ~h~ropa de superhéroe~w~ ya está disponible en el piso franco.
+
+[BENZ_DR]
+~w~El ~h~mono de Dragón~w~ ya está disponible en el piso franco.
+
+[TRTIT]
+Wong Side Of The Tracks
+
+[TRRACE2]
+~w~¡Cuidado! Los hermanos Wong parecen muy duros...
+
+[MPTOTAL]
+Tiempo
+
+[TOUR_W6]
+~w~Han dejado un Landstalker blindado exclusivo junto a tu piso franco. Guárdalo bien en tu garaje.
+
+[OUTFITS]
+Ropa desbloqueada
+
+[MPHPMAR]
+es el señalado y debe morir.
+
+[FEC_CWT]
+Cambiar de arma\objetivo
+
+[EXPO_1]
+~w~Love Media necesita premios que dar en sus competiciones 'Car-razy Car Give Away'.
+
+[PCJLAP]
+~w~Nuevo récord de vuelta: ~1~ s.
+
+[MPBLCAR]
+Coche azul:
+
+[MPRDCAR]
+Coche rojo:
+
+[RAMP_A]
+~w~¡DESTRUCCIONES COMPLETADAS! ~1~ $
+
+[FET_SAV]
+Guardar partida
+
+[FET_WRN]
+¡Aviso! Se han activado uno o más trucos. Esto puede afectar a la partida guardada. Se recomienda que no guardes esta partida.
+
+[HELP39]
+~w~Mueve~h~ ~k~ ~VEWEI~ ~w~para desplazar tu peso en la moto.
[FEC_EXV]
-Entrar y salir de vehículo
+Salir del vehículo
-[TAXI_M]
-'TAXISTA'
+[MPCOLL]
+COCHES RECOGER:
-[COP_M]
-'JUSTICIERO'
+[FEMP_HG]
+ANFITRIÓN DE PARTIDA
-[FIRE_M]
-'BOMBERO'
+[FEMP_JG]
+UNIRSE A PARTIDA
-[AMBUL_M]
-'ATS'
+[K_TK3]
+~w~1 punto por las ~g~verdes~w~, 2 por las de color ~y~ámbar~w~ y 3 por las ~r~rojas~w~.
-[HJ_IS]
-BONIFICACIÓN POR ACROBACIA: ~1~ $
+[FEMP_GJ]
+ELIGE LA PARTIDA A UNIRSE
-[HJ_PIS]
-BONIFICACIÓN POR ACROBACIA PERFECTA: ~1~ $
+[FEMP_H]
+ANFITRIÓN:
-[HJ_DIS]
-BONIFICACIÓN POR ACROBACIA DOBLE: ~1~ $
+[FEMP_P]
+JUGADORES:
-[HJ_PDIS]
-BONIFICACIÓN POR ACROBACIA DOBLE PERFECTA: ~1~ $
+[FEMP_HN]
+SER ANFITRIÓN DE NUEVA PARTIDA
-[HJ_TIS]
-BONIFICACIÓN POR ACROBACIA TRIPLE: ~1~ $
+[PO_MOB4]
+~w~Eh, soy yo, Vincenzo.
-[HJ_PTIS]
-BONIFICACIÓN POR ACROBACIA TRIPLE PERFECTA: ~1~ $
+[POMOB4D]
+~w~Venga, pásate por mi casa, tengo algo para ti.
-[HJ_QIS]
-BONIFICACIÓN POR ACROBACIA CUÁDRUPLE: ~1~ $
+[POMOB4E]
+~w~¿Sí? ¿Y de qué se trata? ¿Unos zapatos de cemento?
-[HJ_PQIS]
-BONIFICACIÓN POR ACROBACIA CUÁDRUPLE PERFECTA: ~1~ $
+[POMOB4H]
+~w~No. Vamos, Toni, estoy muy arrepentido...
-[FESZ_LS]
-Carga completada con éxito.
+[FEMP_F]
+COMPLETO
-[HELI_1A]
-Prueba tus habilidades con el Sparrow, comprueba lo rápido que puedes completar el circuito.
+[FEMP_R]
+RESTAURAR PREDETERMINADOS
-[HELI_1B]
-¡Circuito completado! ~1~ $
+[YOU]
+TÚ
-[HELIODD]
-Trabajos esporádicos del helicóptero
+[NE_POW]
+Ha ocurrido un error de red. Se ha apagado el interruptor POWER/HOLD (alimentación/bloqueo).
-[LAW]
-LAS MISIONES DEL ABOGADO
+[FEMP_SQ]
+¿Seguro que quieres empezar una partida multijugador?
-[LAW1_1]
-~g~Consigue unos trapos nuevos en la tienda de ropa de Rafael.
+[BIKETXT]
+~w~Hogs & Cogs solo está abierto entre las 08:00 y las 18:00. Vuelve entonces.
-[LAW4_6]
-¡Quemad la dirección!
+[RACE_2]
+Tiempo
-[LAW4_7]
-¡Matad a los jefes!
+[FEF_CO2]
+Elige la mejor configuración de los controles para tu estilo de juego.
-[LAW4_8]
-Luchad, luchad, luchad, luchad.
+[TYREPOP]
+Neumáticos reventados a tiros
-[LAW4_9]
-¡Más vacaciones, menos trabajo!
+[FE_INIP]
+Iniciando y cargando el MENÚ PAUSA... Espera.
-[LAW4_11]
-¡Luchad! ¡Luchad! ¡Luchad! ¡Luchad!
+[DON4EX3]
+~w~¿Aceptas cheques?
-[LAW4_12]
-¡Viva la revolución!
+[CRUSH]
+~w~Convierte la chatarra en dinero. Ciertos vehículos serán triturados si los dejas en el área señalada con neumáticos.
-[GENERAL]
-LAS MISIONES DEL CORONEL
+[ANG_15]
+~w~Unos idiotas le han robado el coche a un pobre hombre... ¡A por ellos!
-[GEN3_4]
-Tommy Vercetti. Vamos...
+[CDERROR]
+Por favor, espera...
-[GEN3_13]
-¿Cuál es tu problema, tío? ¡Sube al tejado al otro lado del patio antes de que aparezcan!
+[FEC_LOF]
+Mirar hacia delante
-[GEN3_17]
-¡Mierda! ¿Intentas matarme?
+[MPHELP]
+AYUDA
-[GEN3_21]
-~g~¡Tiene el dinero de Díaz! ¡Ve tras él y recupéralo!
+[C1VEHN]
+botón L1
-[GEN3_24]
-~r~¡Díaz murió! ¡Has fracasado al protegerle!
+[C3VEHN]
+botón L3
-[GEN3_26]
-~r~¡Le pegaste un tiro a Díaz!
+[MPOBJ]
+OBJETIVO:
-[GEN3_27]
-~r~¡Disparaste a los guardaespaldas de Díaz!
+[MPLEG]
+LEYENDA DEL RADAR:
-[GEN3_31]
-~g~Ahora ve al punto de entrega y cuida de Díaz.
+[GS_O1]
+¡Cada uno a lo suyo! ¡Mata a los demás jugadores!
-[GEN3_32]
-~g~Ve a tu posición elevada en el tejado del edificio opuesto a donde está Lance.
+[GS_O2]
+Pasa por los puntos de control para llegar el primero a la línea de meta.
-[COKE]
-LAS MISIONES DEL BARÓN DE LA NIEVE
+[GS_OD3]
+Defiende de los atacantes enemigos las cuatro limusinas que hay en tu base.
-[COK1_3]
-¡Espero que te caigas y te rompas el cuello!
+[GS_O6]
+Mata al jugador "señalado" lo más rápido posible. Si eres tú el "señalado", sobrevive cuanto puedas.
-[COK1_6]
-Estoy cansado de estos mamones.
+[GS_O7]
+Recoge coches por la ciudad y llévalos a los contenedores que te esperan.
-[COK2_7]
-¿Veis esos marcadores chicos? ¡Probad a dar a las luces!
+[FHOSE_2]
+~w~El~h~ ~k~ ~VEWEA~ ~w~ajustará la posición del cañón de agua.
-[COK2_10]
-Desde luego eres mejor disparando que charlando.
+[MPI01]
+MEJORA
-[COK2_11]
-Gracias. Eres un verdadero encanto.
+[MPI02]
+SALUD
-[COK2_12]
-Lo sé, Tommy.
+[MPI03]
+BLINDAJE
-[COK2_18]
-¿Te gusta Kenny Loggins?
+[MPI04]
+ARMA
-[COK2_19]
-Dios, ¡me encanta este disco!
+[SPIDER]
+Deimos SP
-[COK2_26]
-~r~¡Mataste a Lance!
+[PONTIAC]
+Phobos Vt
-[COK3_1]
-¡No dispares tío!
+[FORELLI]
+Forelli ExSess
-[COK3_2]
-¿Qué hay ahí?
+[AHIT_LO]
+Puede que se haya largado, pero volverá para terminar su trabajo.
-[COK3_3]
-Se está llevando el barco. Gorrón.
+[FEM_ROF]
+Radio apagada
-[COK3_4]
-¡Ayuda! ¡Un tipo me está robando el barco, tío!
+[GA_1]
+~w~¿Estás de broma? ¡No pienso tocar eso!
-[COK4_W]
-¡Uugghh! Ése era el último.
+[TRA_NEX]
+Próxima parada:
-[COK4_X]
-Voy a arrancarlo
+[TRA_CUR]
+Parada actual:
-[COK4_Y]
-Creo que tenemos algunos amigos nuevos.
+[PAGEB2]
+~w~La ~h~escopeta~w~ ya está disponible en el piso franco.
-[COK4_2]
-Sí.
+[PAGEB3]
+El ~h~blindaje corporal~w~ ya está disponible en el piso franco.
-[COK4_6]
-¿A dónde crees que vamos?
+[PAGEB4]
+~w~El ~h~subfusil~w~ ya está disponible en el piso franco.
-[COK4_7]
-¿Nos hemos perdido?
+[PAGEB5]
+~w~El ~h~.357~w~ ya está disponible en el piso franco.
-[COK4_8]
-¡Tenemos competencia!
+[PAGEB6]
+~w~El ~h~M4~w~ ya está disponible en el piso franco.
-[COK4_9]
-¡Elimínales!
+[PAGEB7]
+~w~El ~h~rifle de francotirador con mira láser~w~ ya está disponible en el piso franco.
-[COK4_9A]
-¡Es hora del baile de Lance Vance!
+[PAGEB8]
+~w~El ~h~lanzallamas~w~ ya está disponible en el piso franco.
-[COK4_10]
-¡Ya son astillas! Y comida para los peces.
+[PAGEB9]
+~w~El ~h~lanzacohetes~w~ ya está disponible en el piso franco.
-[COK4_11]
-¡Lo conseguimos! Esos otros barcos no son de la clase VIP.
+[PAGE_01]
+Mata a tiros a ~1~ de la Tríada en 2 min.
-[COK4_17]
-¡Se están desesperando!
+[PAGE_02]
+Vuela ~1~ vehículos en 2 min.
-[COK4_18]
-¡Mis malditos pies están mojados! ¡NOS ESTÁ ENTRANDO AGUA!
+[PAGE_03]
+Incinera a ~1~ Diablos en 2 min.
-[COK4_21]
-¡Subiendo el puente!
+[PAGE_04]
+Mata a ~1~ mafiosos Leone en 2 min.
-[COK4_22]
-¡Salta, está apunto de estallar!
+[PAGE_05]
+Quema ~1~ vehículos en 2 min.
-[COK4_23]
-Buen disparo.
+[PAGE_06]
+Atropella a ~1~ peatones en 2 min.
-[COK4_29]
-~r~¡Mataste a Lance!
+[PAGE_07]
+Destroza ~1~ vehículos en 2 min.
-[ASS1_6]
-¡Adelante Tommy, yo estaré bien!
+[PAGE_08]
+Aniquila a ~1~ peatones en 2 min.
-[ASS1_7]
-¡Comeos esto, asesinos hijos de puta!
+[PAGE_09]
+Quema a ~1~ yakuza en 2 min.
-[ASS1_8]
-¡Me han dado!
+[PAGE_10]
+Asesina a ~1~ Forelli en 2 min.
-[ASS1_9]
-¡Te tengo cubierto, Tommy!
+[PAGE_11]
+Atropella a ~1~ peatones en 2 min.
-[ASS1_10]
-Eh, este seto es precioso.
+[PAGE_12]
+Mata a ~1~ peatones en 2 min.
-[ASS1_11]
-Tommy, ¿puedo tener una habitación con vistas a la bahía?
+[PAGE_13]
+Mata a ~1~ yakuza en 2 min.
-[ASS1_12]
-Unos techos altos muy bonitos...
+[PAGE_15]
+Aniquila a ~1~ peatones en 2 min.
-[ASS1_3]
-¡Lance! ¡Necesito que me cubras!
+[PAGE_16]
+Destroza ~1~ vehículos en 2 min.
-[ASS1_4]
-¡Díaz debe de estar dentro!
+[PAGE_17]
+Abate a ~1~ peatones como francotirador en 2 min.
-[ASS1_5]
-¡Lance!
+[PAGE_18]
+Destroza ~1~ vehículos en 2 min.
-[TAXWAR]
-MISIONES DE LA GUERRA DE TAXIS
+[PAGE_20]
+Achicharra a ~1~ peatones en 2 min.
-[NOTAXI]
-~g~Necesitas un Taxi Kaufman para activar esta misión.
+[MPI05]
+ENEMIGO
-[TAXW1_5]
-~g~¡Necesitas estar en un taxi Kaufman!
+[MPI07]
+PTO. CONTROL
-[TAX2_4]
-Adelante, Tommy.
+[MPI08]
+SIGUIENTE
-[TAX2_5]
-Dale una buena paliza.
+[MPI09]
+LÍNEA DE META
-[TAX2_6]
-Ni siquiera tiene licencia.
+[MPI10]
+CORREDOR
-[TAX2_7]
-Malditos servicios de limusina.
+[MPI11]
+BASE
-[TAXW3_1]
-~g~Ve y recoge a Mercedes.
+[MPI12]
+BASE ENEMIGA
-[RACE1]
-~g~3..2..1.. ¡VAMOS VAMOS VAMOS!
+[MPI13]
+TANQUE
-[RACE2]
-~g~3
+[MPI14]
+SEÑALADO
-[RACE3]
-~g~2
+[MPI15]
+COCHE
-[RACE4]
-~g~1
+[MPI16]
+CONTENEDOR
-[RACE5]
-~g~¡ADELANTE!
+[FEI_LEG]
+Leyenda Sí/No
-[FIRST]
-~b~1
+[SR_ON]
+Ahora que ya te has hecho un nombre en el circuito de carreras callejeras, busca a los rivales que intentan contactar contigo.
-[SECOND]
-~b~2
+[FEC_FRA]
+Puntería libre
-[THIRD]
-~b~3
+[KAR_ON]
+Vuelve al coche de bomberos siempre que quieras e intenta batir tu mejor tiempo.
-[FOURTH]
-~b~4
+[DON2EX5]
+~w~8-Ball no cederá a menos que le pagues 20.000 $ del ala.
-[RACETM]
-~b~TIEMPO DE CARRERA: ~1~:~1~
+[PCJTIT]
+GO GO Faggio
-[RACETM2]
-~b~TIEMPO DE CARRERA: ~1~:0~1~
+[FEST_GO]
+Mejor tiempo en "Go Go Faggio"
-[RACEFA]
-~r~¡Has fracasado en ganar la carrera!
+[RC_1]
+~w~Mata a más de ~1~ de la Tríada. Cada muerto te dará una bonificación al tiempo.
-[HOTRNG]
-HOTRING
+[EXPO_C]
+~w~¡Gracias! ¡Ya están todos! Tienes una bonificación alucinante a la puerta de tu piso de Newport.
-[BLODRNG]
-BLOODRING
+[TRRACE0]
+~w~Pasa por los ~y~puntos de control~w~ y llega vivo al final de la carrera.
-[DIRTRNG]
-DIRTRING
+[RACE_P1]
+~w~1°
-[TEX1_5]
-~r~¡Se escapó!
+[RACE_P2]
+~w~2°
-[SEG3_1]
-TIEMPO:
+[RACE_P3]
+~w~3°
-[SEG3_2]
-~g~Ve a la camioneta que contiene el Helicótero RC y las bombas por control remoto con temporizador.
+[RACE_P4]
+~w~4°
-[SEG3_3]
-~g~Debes emplear el Helicótero RC para transportar 4 bombas hasta 4 objetivos en lugar del edificio.
+[OUTF_00]
+~w~Ropa informal
-[SERG3_5]
-~g~Sólo puedes llevar una bomba en cada ocasión y no puedes recoger bombas colocadas con éxito.
+[OUTF_01]
+~w~Traje de Leone
-[SEG3_7]
-~g~Una vez que hayas soltado con éxito la PRIMERA bomba sobre una zona del objetivo, el cronómetro de detonación se pondrá en marcha; de modo que tendrás que soltar todas las bombas dentro de este período de tiempo.
+[OUTF_03]
+~w~Uniforme de Ángel Vengador
-[SEG3_8]
-~g~Las 4 bombas deben estar colocadas en las 4 zonas objetivo para superar la misión y demoler el edificio.
+[OUTF_04]
+~w~Ropa de chófer
-[SEG3_9]
-~g~¡Alcanzaste el objetivo! Quedan 3.
+[OUTF_05]
+~w~Traje de abogado
-[SEG3_10]
-~g~¡Alcanzaste el objetivo! Quedan 2.
+[OUTF_06]
+~w~Esmoquin
-[SEG3_11]
-~g~¡Alcanzaste el objetivo! ¡Sólo queda 1!
+[OUTF_07]
+~w~Mono de 'el Rey'
-[SEG3_12]
-~r~¡Fallaste el blanco! ¡Ve a por una bomba!
+[OUTF_08]
+~w~Disfraz de mascota de los Cox
-[SEG3_13]
-~g~Deja caer la bomba en una zona del objetivo.
+[OUTF_09]
+~w~Ropa interior
-[SEG3_14]
-~r~Te quedaste sin tiempo y fracasaste en demoler el edificio.
+[OUTF_10]
+~w~Ropa de superhéroe
-[SEG3_15]
-~r~¡Tu Helicótero RC ha sido destruido! ¿Cómo vas a transportar las bombas ahora?
+[OUTF_11]
+~w~Mono de Dragón
-[AVERY]
-MISIONES DE AVERY
+[SLTVMON]
+Dinero total ganado en Slash TV
-[ASM]
-MISIONES DE ASESINO
+[DBIKEAI]
+Mayor altura alcanzada (m)
-[ASM_1]
-MISIÓN DE ASESINO 1
+[MPC_039]
+Vincenzo
-[ASM1_1]
-~g~Sr. Teal, su ayuda en la eliminación de los forasteros fue inestimablemente buena para el negocio. Tengo más trabajo para usted y más próximo a la ''intervención''. Encontrará su siguiente trabajo pegado con cinta adhesiva bajo el teléfono.
+[MPC_040]
+Salvatore
-[ASM1_2]
-~g~Ve a la cabina telefónica que hay frente al centro comercial de Washington.
+[MPC_041]
+Toshi
-[ASM1_3]
-~g~Carl Pearson, un repartidor de pizza. No debe finalizar sus entregas.
+[MPC_042]
+Toshiko
-[ASM1_4]
-~g~Elimina al repartidor de pizza antes de que complete sus entregas.
+[MPC_043]
+Ophelia Lardaz
-[ASM_2]
-MISIÓN DE ASESINO 2
+[MPC_044]
+Ed Banger
-[ASM_3]
-MISIÓN DE ASESINO 3
+[MPC_045]
+Robin Emblind
-[ASM3_1]
-~g~Ve a coger el arma que el Sr. Black ha dejado para ti.
+[MPC_046]
+Sra. Menalot
-[ASM3_2]
-~g~No te acerques demasiado al objetivo o podría verte.
+[MPC_047]
+Hugh Jazz
-[ASM3_3]
-~g~Para un trabajo más rápido, colócate en lugares cercanos a su ubicación y evita ser visto. Esto te proporcionará una buena posición para eliminarles.
+[MPC_048]
+Wayne
-[ASM3_4]
-~g~¡Te ha visto! ¡Mejor elimínale de cualquier modo que puedas!
+[MPC_049]
+Paulie
-[ASM3_5]
-~g~Marcus Hammond está situado cerca de los anuncios de Washington.
+[MPC_050]
+Anne Job
-[ASM3_6]
-~g~Franco Carter está situado en el DBP de Seguridad, cerca de Ocean Drive.
+[MPC_051]
+Randy Boner
-[ASM3_7]
-~g~Dick Tanner está cerca de la joyería de Vice Point.
+[MPC_052]
+Owen Monie
-[ASM3_8]
-~g~Nick Kong está colocado cerca de Washington Beach.
+[MPC_053]
+Ekant Sing
-[ASM3_9]
-~g~El conductor está situado en Washington.
+[MPC_054]
+M.T. Head
-[ASM3_10]
-~r~Fallaste en matarles a todos.
+[MPC_055]
+Rick O'Shea
-[ASM_4]
-MISIÓN DE ASESINO 4
+[MPC_056]
+Arden Long
-[ASM4_1]
-~g~Ve a por el rifle que te han dejado entre el follaje que hay en las cercanías de la terminal del aeropuerto.
+[MPC_057]
+Ann Thrax
-[ASM4_2]
-~g~No falles tu blanco o podrías alertar a sus guardaespaldas, y recuerda mantener las distancias para que no te detecte.
+[MPC_058]
+Fay Slift
-[ASM4_3]
-~g~Vigila a la mujer de la galería que hay sobre los mostradores de facturación, dentro de la terminal del aeropuerto. PERO NO LA MATES.
+[MPC_059]
+Mona Lott
-[ASM4_4]
-~g~Mata al hombre al que ella dé el maletín, pero sólo DESPUÉS DE QUE ÉSTE LO RECOJA. Entonces recupera el maletín y llévalo a Ammu-Nation en el centro de la ciudad.
+[C0VEACC]
+~X~
-[ASM4_5]
-~g~¡Consigue el maletín!
+[C1VEACC]
+~X~
-[ASM4_6]
-~g~Lleva al maletín a Ammu-Nation en el centro de la ciudad.
+[C2VEACC]
+~X~
-[ASM4_7]
-~r~¡Estúpido, has matado a la mujer!
+[C3VEACC]
+joystick analógico derecho hacia arriba
-[ASM4_8]
-~r~¡El blanco te oyó disparar el arma! ¡El trato queda anulado!
+[C0VEBRK]
+~S~
-[ASM4_9]
-~r~¡El blanco ha embarcado en su vuelo!
+[C1VEBRK]
+~S~
-[ASM4_11]
-~r~¡El blanco te ha visto! ¡El trato queda anulado!
+[C2VEBRK]
+~S~
-[ASM4_13]
-~g~Te ha visto y está huyendo, ¡atrápale y consigue el maletín!
+[C3VEBRK]
+joystick analógico derecho hacia abajo
-[ASM4_14]
-~g~La barra de distancia en la parte superior derecha de la pantalla te proporciona una indicación de lo cerca que estás de tu blanco. No permitas que se llene o éste te verá.
+[C0VEHB]
+botón R1
-[ASM_5]
-MISIÓN DE ASESINO 5
+[C1VEHB]
+botón R1
-[KICK]
-ARRANQUE
+[C0VEEE]
+~T~
-[KICK1_3]
-~g~Número de veces que pusiste el pie: ~1~
+[C1VEEE]
+~T~
-[KICK1_4]
-~g~Tiempo de penalización: ~1~ segundos
+[C2VEEE]
+botón L1
-[BANK]
-MISIONES DEL ATRACO AL BANCO
+[C3VEEE]
+~T~
-[BANK1]
-MISIÓN DE ATRACO AL BANCO 1
+[C0VEWEP]
+~O~
-[BANK2]
-MISIÓN DE ATRACO AL BANCO 2
+[C1VEWEP]
+~O~
-[BJM2_21]
-~g~Acierta a tantos blancos como puedas mientras te quede munición.
+[C2VEWEP]
+~O~
-[BANK3]
-MISIÓN DE ATRACO AL BANCO 3
+[C3VEWEP]
+botón R1
-[BJM3_1]
-~g~Consigue un coche rápido y ve a la parrilla de salida.
+[C0PDSPR]
+~X~
-[BNK4_2A]
-Los chicos hicieron un trabajo genial con este pequeño.
+[C1PDSPR]
+~X~
-[BNK4_3G]
-¡Oh, mierda, ahora los polis andan tras nosotros!
+[C0SNZI]
+~S~
-[BNK4_3H]
-Y ni siquiera hemos llegado.
+[C1SNZI]
+~S~
-[BNK4_3K]
-Primero tendremos que despistar a los polis...
+[C0SNZO]
+~X~
-[BNK4_3L]
-Joder, Tommy, ¿intentas matarnos a todos?
+[C1SNZO]
+~X~
-[BNK4_3N]
-¡Todo lo que me importa acaba destrozado!
+[C0PDFW]
+~O~
-[BNK4_26]
-¡Maldición! ¡Aquí vienen!
+[C1PDFW]
+~O~
-[BNK4_32]
-¡Usa los explosivos para abrir las cajas de depósito!
+[C0TRSK]
+~X~
-[BNK4_36]
-¿Dónde está Cam?
+[C1TRSK]
+~X~
-[BNK4_37]
-Es historia...
+[C2TRSK]
+~X~
-[BNK4_38]
-Ése era el último. ¡Vamos! ¡Vamos! ¡Vamos!
+[C3TRSK]
+~X~
-[BNK_39]
-¡Mierda! ¿Dónde está Hilary?
+[C0AMBUY]
+~X~
-[BK4_40A]
-¡Ya le daré yo miedo al abandono!
+[C1AMBUY]
+~X~
-[BNK4_42]
-¡Eh, tíos! ¡Subid! ¡Yo os cubro!
+[C2AMBUY]
+~X~
-[BNK4_43]
-¡Ya cubro yo nuestros culos, tú conduce!
+[C3AMBUY]
+~X~
-[BNK4_44]
-¡Lo conseguimos! ¡Somos ricos! ¡Ricos!
+[C0AMEXI]
+~T~
-[BNK4_45]
-Es una pena que Cam no lo consiguiese, ¡era un buen tipo!
+[C1AMEXI]
+~T~
-[BNK4_46]
-Sí. Pero aún así... ¡más tajada para nosotros!
+[C2AMEXI]
+~T~
-[BNK4_47]
-¡Claro que sí! ¡Sí!
+[C3AMEXI]
+~T~
-[BNK4_48]
-Tommy, ¿te gustaría un masaje?
+[C2PDSPR]
+~O~
-[BNK4_49]
-¡Hola, Mercedes! Sí, estoy un poco tenso...
+[C3PDSPR]
+~X~
-[BNK450A]
-¿Qué te dije, Tommy? ¿Qué te dije? Maldito SWAT, será mejor que tengas cuidado cuando Kent Paul esté en la ciudad.
+[C2SNZI]
+~T~
-[BNK450B]
-Vamos, dame una tajada más grande, colega, venga. Tengo que comprarme ropa nueva.
+[C3SNZI]
+~S~
-[BNK4_51]
-Yo creo que tienes buen aspecto.
+[C2SNZO]
+~S~
-[KENT]
-MISIONES DE KENT PAUL
+[C3SNZO]
+~X~
-[KENT1]
-MISIÓN DE KENT PAUL 1
+[C2PDFW]
+~X~
-[COUNT]
-MISIONES DE FALSIFICACIÓN
+[C3PDFW]
+botón R1
-[COUNT1]
-MISIÓN DE FALSIFICACIÓN 1
+[MPC_020]
+Rico Garlik
-[COUNT2]
-MISIÓN DE FALSIFICACIÓN 2
+[MPC_022]
+Lou Scannon
-[BIKE]
-LAS MISIONES DE LA PANDILLA DE MOTEROS
+[MPC_024]
+Cruz Vormen
-[BIKE1]
-MISIÓN DE MOTORISTA 1
+[MPC_026]
+Busta Moves
-[BIKE2]
-MISIÓN DE MOTORISTA 2
+[MPC_027]
+Juan Kerr
-[BIKE3]
-MISIÓN DE MOTORISTA 3
+[MPC_028]
+Nick Yakar
-[GOAWAY1]
-Vuelve cuando hayas terminado con las misiones de la banda haitiana.
+[MPC_029]
+Lou Bricant
-[HAIT]
-LAS MISIONES DE LA BANDA HAITIANA
+[MPC_030]
+Lance Urwell
-[HAIT1]
-MISIÓN HAITIANA 1
+[MPC_033]
+Agente Ochre
-[HAIT2]
-MISIÓN HAITIANA 2
+[MPC_036]
+Papi Love
-[HAIT3]
-MISIÓN HAITIANA 3
+[MPC_037]
+Lucy Lastic
-[HAM3_6]
-~g~Utiliza el rifle de francotirador que te he dejado para cumplir tu tarea.
+[MPC_038]
+Bill Durzbum
-[ROCK]
-LAS MISIONES DE LA BANDA DE ROCK
+[MPISCOL]
+Objeto recogido
-[ROK1_4]
-~g~De acuerdo, creo que esto es lo que andabais buscando...
+[MPSTART]
+Iniciando partida...
-[ROK1_1E]
-~g~¡Costará más de lo que tienes!
+[MRACEC1]
+~w~1...
-[ROK1_1F]
-~g~Vuelve cuando tengas el dinero.
+[MRACEC2]
+~w~2...
-[RBM2_6]
-~g~¡Guau! ¡Ella es un tío, detenle!
+[MRACEC3]
+~w~3...
-[ROCK3]
-MISIONES DE LA BANDA DE ROCK 3
+[MPC_019]
+Phil DeGirth
-[RBM3_5]
-~g~Lleva a los Love Fist al escenario.
+[GDA_HL]
+Mayor nivel de Ángel Vengador
-[CUBANM]
-LAS MISIONES DE LA BANDA CUBANA
+[MP_SNEW]
+Carga o inicia una nueva partida para un jugador o multijugador.
-[CUBAN1]
-MISIÓN CUBANA 1
+[DON2EX9]
+~w~¡~r~Ned~w~ se está escapando! No lo pierdas.
-[CUBAN2]
-MISIÓN CUBANA 2
+[FEI_CHA]
+Cambiar de equipo
-[CUB2_10]
-~r~¡Se supone que debes matar a haitianos, no a cubanos!
+[FES_RES]
+RESTAURAR AJUSTES DEL JUEGO
-[CUBAN3]
-MISIÓN CUBANA 3
+[FESZ_QT]
+¿Seguro que quieres restaurar todos los ajustes de controles, sonido y pantalla?
-[CUBAN4]
-MISIÓN CUBANA 4
+[FEH_LOA]
+JUEGO
-[PROT]
-MISIONES DE PROTECCIÓN
+[MPEMPTY]
+Vacío
-[PORN]
-MISIONES PORNO
+[FEMP_SN]
+INICIAR PARTIDA (se necesitan 2 o más jugadores)
-[PORN1]
-MISIÓN PORNO 1
+[JD_SUIT]
+~w~J.D. no te dará trabajo mientras vistas como un Leone.
-[POR1_03]
-~r~¡Candy está muerta!
+[SAVD_SH]
+(piso franco).
-[PORN2]
-MISIÓN PORNO 2
+[SAVD_DY]
+Día
-[PORN3]
-MISIÓN PORNO 3
+[SAVD_CO]
+completado.
-[PORN4]
-MISIÓN PORNO 4
+[SAVD_AL]
+Portland safehouse. Day 71, $57640. 17% complete.
-[PHIL]
-MISIONES DE PHIL
+[SAV_SLT]
+Nueva partida guardada
-[PHIL1]
-MISIÓN DE PHIL 1
+[POMOB6C]
+~w~Pásate a verme pronto. Tengo un trabajo para ti.
-[PHIL2]
-MISIÓN DE PHIL 2
+[ANG_2]
+~w~Pulsa~h~ ~k~ ~TGSUB~ ~w~para alternar la activación de las misiones de Ángel Vengador.
-[PIZ1_A]
-MISIÓN DEL REPARTIDOR DE PIZZAS
+[TVHELP]
+~w~Pulsa~h~ ~k~ ~TGSUB~ ~w~para alternar la activación de las misiones de SLASH TV.
-[CNTBUY1]
-Compra de la imprenta: ~1~ $
+[PAGERA]
+~w~El ~h~M60~w~ ya está disponible en el piso franco.
-[CARBUY]
-Compra del salón de coches: ~1~ $
+[CO_ALL]
+~w~¡Recogidos todos los paquetes ocultos!
-[PORNBUY]
-Compra del estudio cinematográfico: ~1~ $
+[CO_ONE]
+~w~¡Has recogido ~1~ de ~1~ paquetes ocultos!
-[ICEBUY]
-Compra de la fábrica de helados: ~1~ $
+[PAGE_14]
+Fríe a ~1~ gánsteres colombianos en 2 min.
-[TAXIBUY]
-Compra de la empresa de taxis: ~1~ $
+[PAGE_19]
+Atropella a ~1~ gánsteres colombianos en 2 min.
-[BANKBUY]
-Compra del Malibú: ~1~ $
+[ANG_22]
+~r~Canceladas las misiones de Ángel Vengador.
-[BOATBUY]
-Compra del astillero: ~1~ $
+[SLATVQO]
+~r~Cancelada la misión de Slash TV.
-[PRNT_NO]
-No puedes comprar la imprenta en este momento, vuelve más tarde.
+[C0FREE1]
+botón L3
-[CAR_NO]
-No puedes comprar el salón de coches en este momento, vuelve más tarde.
+[C1FREE1]
+botón L3
-[PORN_NO]
-No puedes comprar el estudio cinematográfico en este momento, vuelve más tarde.
+[C2FREE1]
+botón L3
-[ICE_NO]
-No puedes comprar la fábrica de helados en este momento, vuelve más tarde.
+[C3FREE1]
+botón L3
-[TAXI_NO]
-No puedes comprar la compañía de taxis en este momento, vuelve más tarde.
+[C0FREE2]
+joystick analógico izquierdo
-[BANK_NO]
-No puedes comprar el Malibú en este momento, vuelve más tarde.
+[C2FREE2]
+joystick analógico izquierdo
-[BOAT_NO]
-No puedes comprar el astillero en este momento, vuelve más tarde.
+[ANGCOM1]
+~w~¡Has superado la misión de Ángel Vengador de nivel 15 de Portland! ¡Han dejado la moto única 'Avenger' junto a tu piso franco!
-[COL2_6]
-¡Alto, cerdo imperialista americano!
+[K_CE]
+~w~Tienes ~1~ s. para volver a la ~b~moto~w~.
-[COL2_6B]
-Eso es propiedad del gobierno francés.
+[HELP31]
+~w~Si te han ~h~'trincado'~w~ o ~h~'eliminado'~w~ durante una misión, aparecerá este ~h~taxi~w~.
-[COL2_6C]
-¡y se acabó!
+[LOSER]
+~y~¡HAS PERDIDO!
-[COL3_A]
-Thomas, aprecio que vinieses.
+[RCRHELP]
+~w~Pulsa~h~ ~k~ ~TGSUB~ ~w~para ~h~salir de la carrera~w~. Pulsa~h~ ~k~ ~VEWEP~ ~w~para devolver el coche de RC al último punto de control.
-[COL3_B]
-Perdóname por ir directamente al asunto.
+[SRC_ON]
+Ahora que ya te has hecho un nombre en el circuito ilegal de carreras de coches, los rivales intentarán contactar contigo.
-[COL3_C]
-Diaz me ha pedido que supervise una transacción de un negocio menor.
+[SRB_ON]
+Ahora que ya te has hecho un nombre en el circuito ilegal de carreras de motos, los rivales intentarán contactar contigo.
-[COL3_D]
-Esperemos que vaya mejor que la última vez.
+[RACE_R0]
+~w~RÉCORD ANTERIOR: ~1~:~1~~1~
-[COL3_E]
-Por eso es por lo que pensé en ti, amigo mío.
+[POMOB3C]
+~w~Eh, pásate por aquí algún día, colega. ¿Vale?
-[COL3_F]
-He dejado algo de protección en el aparcamiento.
+[MPHPCS1]
+The Hit List
-[COL3_G]
-Recógele y luego id a ver a los hombres de Diaz en el punto de entrega.
+[MPWLGOC]
+Sal del coche.
-[COL4_2]
-¡No lo sé, señor!
+[MPWLLTC]
+Sal del contenedor.
-[COL4_5]
-¡Señor, sí, señor!
+[MPWLDTC]
+Entrega el coche.
-[COL4_10]
-Vamos a comer unos donuts.
+[MPWLCD]
+Coche entregado.
-[COL4_16]
-¡Señor! ¡Moviendo el vehículo, señor!
+[MPWLNGC]
+Ahora coge los coches.
-[COL4_25]
-¡Iniciada autodestrucción del vehículo!
+[MPAUTO]
+NO REPETIR
-[COL5_6]
-Mercedes, esa chica me matará.
+[MRACEGO]
+~w~YA
-[COL5_8]
-¡Maldita cucaracha!
+[MRACE04]
+HAS GANADO
-[COL5_5]
-¡Morid, cerdos franceses!
+[MRACEWI]
+ha ganado la carrera.
-[CNT2_1]
-Matadle.
+[MRCPU01]
+~y~REPARACIÓN AL INSTANTE
-[CNT2_2]
-¡Conseguid las planchas!
+[DTB01]
+Defiende los coches
-[CNT2_3]
-¡Proteged al mensajero!
+[DTB02]
+Destruye los coches
-[FINKILL]
-¡De acuerdo, chicos, matadle!
+[DTB03]
+Coche perdido
-[FIN_1A]
-¡Ven aquí, traidor, pedazo de mierda!
+[DTB04]
+Coche destruido
-[FIN_1B]
-¡Vas a caer, mamón traicionero!
+[MPWIN]
+ha ganado.
-[FIN_1C]
-¡Éste es el último baile para Lance Vance!
+[MPKSELF]
+ha caído.
-[FIN_2B]
-¡Oh, eso crees tú!
+[MPMORE]
+abatidos más.
-[FIN_2C]
-¡Ya tuve suficiente de eso en la escuela!
+[MP1MORE]
+abatido más.
-[FIN_3]
-Ahora no hay nadie para cubrirte el trasero, ¿eh, Tommy?
+[MPSTRT]
+Empezamos
-[FIN_4]
-Eres historia, Tommy, historia.
+[MPTANK]
+tiene el tanque.
-[FIN_5]
-Escogiste el lado equivocado, Lance...
+[MPONE]
+solo tiene que coger un coche más.
-[FIN_6]
-Sonny está arriba con la caja fuerte y mi dinero...
+[MPDEL]
+ha entregado un coche.
-[FIN_10]
-¿Sonny? ¡Sonny! ¡Voy por ti!
+[MPGOCAR]
+Ve a buscar el coche.
-[FIN_11A]
-Me arrebataste quince años, Sonny...
+[MPGOGAR]
+Entrega el coche.
-[FIN_11B]
-¡Y ahora voy a hacértelo pagar!
+[MPDEST]
+Vehículo objetivo destruido.
-[FIN_12A]
-Todavía no lo captas, ¿verdad?
+[MPLEFT]
+ha dejado la partida.
-[FIN_12B]
-Eres de mi propiedad, Tommy.
+[MPHPGO2]
+~w~Eres el blanco a matar.
-[FIN_12C]
-¡Esos quince años eran míos para gastarlos!
+[MPHPKI]
+~w~Has matado a un asesino.
-[FIN_13]
-Atrapadle chicos, nunca comprendió nada.
+[LOCKON]
+Te están apuntando.
-[RACES_4]
-3
+[MPHPGO]
+~w~Elimina al señalado.
-[RACES_5]
-2
+[MPTNK]
+Métete en el tanque.
-[RACES_6]
-1
+[MRCPU02]
+HAS REVENTADO LOS NEUMÁTICOS DE TODOS
-[RACES_7]
-¡ADELANTE!
+[MRCPU05]
+TE HAN REVENTADO LOS NEUMÁTICOS
-[RACES_9]
-Tiempo: ~1~:~1~
+[MRCPU06]
+~y~Neumáticos adherentes
-[RACES]
-TIEMPO:
+[WINNER]
+~Y~HAS GANADO.
-[RACES17]
-Nuevo mejor tiempo: ~1~:~1~
+[MPDRAW]
+~w~EMPATE
-[RACES18]
-HAS GANADO: ~1~ $
+[MPDADDY]
+ERES EL PUTO AMO.
-[RACES20]
-Nuevo mejor tiempo: ~1~:0~1~
+[MPRUN]
+GOBIERNAN LAS CALLES.
-[RACES21]
-Tiempo: ~1~:0~1~
+[MPBITCH]
+¿QUIÉN ES AHORA EL AMO, CAPULLO?
+[FEMP_SM]
+Juega a Grand Theft Auto con tus amigos o con frikis desconocidos que pasen por ahí.
-[RCH1_2]
-~g~Los CONTROLES están esparcidos a lo largo del aeropuerto.
+[MPYL]
+¡PERDEDOR!
-[RCH1_5]
-Tiempo:
+[MPTMWIN]
+SON LOS PUTOS AMOS.
-[RCRC1_2]
-~g~¡Ve a la parrilla de salida!
+[GS_SCAR]
+VEHÍCULO:
-[RCRC1_4]
-~g~3
+[GS_MIN]
+min.
-[RCRC1_5]
-~g~2
+[GS_MINS]
+min.
-[RCRC1_6]
-~g~1
+[MPTNKGA]
+Ya tienes el tanque, tío duro.
-[RCRC1_7]
-~g~¡ADELANTE!
+[MPTNKGB]
+Ahora, consérvalo.
-[RCRC1_8]
-~g~Tiempo de carrera: ~1~ segundos
+[GS_TYPE]
+ESCENARIO:
-[RCPL1_1]
-~g~Compite en una CARRERA DE PUNTOS DE CONTROL con otros tres Barón RC.
+[CLILOST]
+Se ha perdido la comunicación con los demás jugadores.
-[RCPL1_2]
-~g~Debes atravesar la ~o~CORONA DEL CENTRO ~g~para pasar con éxito un punto de control.
+[ONEHPC]
+¡Completado el 100 por cien! En Fort Staunton te espera un regalito.
-[RCPL1_3]
-~g~¡Ve ahora a la parrilla de salida!
+[MPBLTM]
+Los Sindacco
-[ICC1_O]
-¿Qué pasa contigo?
+[MPRDTM]
+Los Forelli
-[FEA_2SP]
-2 altavoces
+[MTN_1]
+Los Sindacco
-[FEA_4SP]
-Más de 2 altavoces
+[MTN_2]
+Los Forelli
-[FEA_EAR]
-Auriculares
+[MPRDCAP]
+Coche ha sido capturado
-[FEA_NAH]
-NO HAY HARDWARE DE AUDIO
+[MPBLCAP]
+Coche ha sido capturado
-[FET_APP]
-APLICAR
+[MPRDST]
+Coche ha sido robado
-[FES_SKN]
-NOMBRE DE APARIENCIA
+[MPBLST]
+Coche ha sido robado
-[FES_DAT]
-FECHA
+[MPBLEST]
+Coche ha sido robado
-[FES_SET]
-Utilizar apariencia
+[MPRDRET]
+Coche ha sido devuelto
-[FET_DEF]
-Restaurar valores por defecto
+[MPBLRET]
+Coche ha sido devuelto
-[FESZ_QZ]
-¿Seguro de que quieres guardar esta partida?
+[MPRDPOS]
+Coche no está en posición
-[FES_SCG]
-¿Guardar la partida actual?
+[MPBLPOS]
+Coche no está en posición
-[FES_LCG]
-¿Cargar la partida y continuar jugando?
+[GS_TEAM]
+UNIRSE A:
-[FEC_FIR]
-Disparar
+[FEMP_TS]
+UNIRSE A:
-[FEC_NWE]
-Siguiente arma
+[MPTEAM]
+Banda
-[FEC_PWE]
-Arma anterior
+[GS_OA3]
+Destruye cuatro limusinas en la base de la banda rival.
-[FEC_FOR]
-Avanzar
+[GS_O4]
+Roba el coche de la banda rival y llévalo a tu base. A la vez, protege el coche de tu banda.
-[FEC_BAC]
-Retroceder
+[MPI06]
+MIEMBRO BANDA
-[FEC_LEF]
-Izquierda
+[FEMP_ST]
+INICIAR PARTIDA (se necesitan 1 o más jugadores por banda)
-[FEC_RIG]
-Derecha
+[HELP32]
+~w~Por una pequeña suma (o gratis si no tienes dinero), te llevará al ~h~lugar de contacto~w~ de la última misión.
-[FEC_ZIN]
-Acercar zoom
+[BENZ_HO]
+El ~h~mono~w~ ya está disponible en el piso franco. Vuelve aquí de noche con él para jugar a Slash TV.
-[FEC_ZOT]
-Alejar zoom
+[SLATXT]
+~w~Vuelve aquí vestido con el mono entre las 18:00 y las 05:00 para jugar a Slash TV.
-[FEC_EEX]
-Entrar y salir
+[OUTF_02]
+~w~Mono
-[FEC_RAD]
-Radio
+[CAN_CON]
+~w~Pulsa~h~ ~k~ ~TGSUB~ ~w~de nuevo para cancelar la misión.
-[FEC_SUB]
-Misión secundaria
+[GNG1]
+LEONES
-[FEC_CMR]
-Cambiar cámara
+[GNG2]
+TRIADS
-[FEC_JMP]
-Saltar
+[GNG3]
+DIABLOS
-[FEC_SPN]
-Esprintar
+[GNG4]
+YAKUZA
-[FEC_HND]
-Freno de mano
+[GNG5]
+YARDIES
-[FEC_LOL]
-Mirar hacia la izquierda
+[GNG6]
+COLOMBIANS
-[FEC_LOR]
-Mirar hacia la derecha
+[GNG7]
+HOODS
-[FEC_NTR]
-Siguiente objetivo
+[GNG8]
+SINDACCOS
-[FEC_PTT]
-Objetivo anterior
+[GNG9]
+FORELLIS
-[FEC_LBA]
-Mirar detrás
+[GNG0]
+SICILIANS
-[FEC_CEN]
-Centrar cámara
+[MP_GNG1]
+BANDA 1:
-[FET_CFT]
-A PIE
+[MP_GNG2]
+BANDA 2:
-[FET_CCR]
-EN COCHE
+[GS_TEMS]
+GUERRA DE BANDAS
-[FET_CAC]
-ACCIÓN
+[CARS_O]
+~w~Capital Autos en Harwood busca nuevos vendedores, por si quieres ganar un dinerillo extra.
-[FEC_IBT]
--
+[CARTXT]
+~w~Capital Autos solo está abierto entre las 08:00 y las 18:00. Vuelve entonces.
-[FEC_MXO]
-MXB1
+[GS_TO1]
+¡Mata a la banda rival!
-[FEC_MXT]
-MXB2
+[MPTNEED]
+solo necesitan
-[FEC_UNB]
-ILIMITADO
+[MPTWIN]
+win
-[FEC_TFL]
-Mirar a izquierd+Torreta L
+[BADTEAM]
+A una de las bandas ya no le quedan jugadores.
-[FEC_TFR]
-Mirar a derecha+Torreta R
+[RACELAP]
+Vuelta
-[FEC_MWF]
-RUEDA DEL RATÓN ARRIBA
+[GS_D1]
+¡UN CLÁSICO DE LOS JUEGOS! CON USTEDES, EL 'DARWINISMO URBANO'.
-[FEC_MWB]
-RUEDA DEL RATÓN ABAJO
+[GS_D2]
+¿QUIÉN ES EL MEJOR CONDUCTOR (O TRAMPOSO)?
-[FEC_ORR]
-o
+[GS_D3]
+PROTEGE TUS COCHES DE LOS GRANUJAS Y VÁNDALOS.
-[FEC_NUS]
-NO UTILIZADO
+[GS_D4]
+ROBA EL COCHE DE LA BANDA RIVAL Y RÍETE EN SU CARA.
-[FEC_LUD]
-Mirar arriba
+[GS_D5]
+¿QUIÉN QUIERE ESTE TANQUECITO?
-[FEC_LDU]
-Mirar abajo
+[GS_D6]
+EL HOMBRE SEÑALADO HA DE SER ELIMINADO.
-[FEC_CMP]
-COMBO: MIRAR I+d
+[GS_D7]
+CAMBIA COCHES POR DINERO.
-[LAW_1A]
-law_1a
+[HELP61]
+~w~Si el ~h~punto luminoso señala hacia arriba~w~, el ~h~objetivo está por encima de ti~w~. Un ~h~punto luminoso cuadrado~w~ indica que ~h~el blanco está a tu altura~w~.
-[LAW_1B]
-law_1b
+[ST_DRWN]
+Peces 'alimentados'
-[LAW_2A]
-law_2a
+[RACE_T4]
+~r~Te han descalificado por no haber encontrado un coche.
-[LAW_2B]
-law_2b
+[RACE_T5]
+~r~Te han descalificado por no haber encontrado una moto.
-[FEH_STA]
-ESTADÍSTICAS
+[PCJ600]
+PCJ-600
-[FEH_LOA]
-CARGAR
+[FEC_HBB]
+Freno de mano~h~ ~k~ ~VEACC~ ~w~y~h~ ~k~ ~VEBRK~
-[FEH_CON]
-CONTROLES
+[HJSTAT]
+~w~Distancia: ~1~,~1~ m. Altura: ~1~,~1~ m. Vueltas: ~1~ Rotación: ~1~°
-[FEH_AUD]
-SONIDO
+[HJSTATW]
+~w~Distancia: ~1~,~1~ m. Altura: ~1~,~1~ m. Vueltas: ~1~ Rotación: ~1~° ¡Y vaya aterrizaje!
-[FEH_DIS]
-PANTALLA
+[HJSTATF]
+~w~Distancia: ~1~ pies Altura: ~1~ pies Vueltas: ~1~ Rotación: ~1~°
-[FEH_LAN]
-IDIOMA
+[HJSTAWF]
+~w~Distancia: ~1~ pies Altura: ~1~ pies Vueltas: ~1~ Rotación: ~1~° ¡Y qué estupendo aterrizaje!
-[FEH_SGA]
-INICIAR NUEVA PARTIDA
+[MPUNLK]
+Se ha desbloqueado nuevo contenido multijugador. ¡Dales envidia a los demás jugadores con todas las cositas que has conseguido!
-[FEO_CON]
-Configuración del mando
+[MPUNLKA]
+Se ha desbloqueado todo el contenido multijugador. ¡Dales envidia a los demás jugadores con todas las cositas que has conseguido!
-[FEO_AUD]
-Configuración de sonido
+[TOUR]
+See the Sight Before your Flight
-[FEO_DIS]
-Configuración de pantalla
+[NDL1_A]
+Noodle Punk
-[FEO_LAN]
-Configuración de idioma
+[PIZ1_A]
+Well Snacked Pizza
-[FEO_PLA]
-Configuración del jugador
+[GS_SCUT]
+REPR. ESCENA:
-[FET_PS]
-CONFIGURACIÓN DE APARIENCIA
+[TR_00]
+CARRERA UNO
-[FEA_OUT]
-Salida
+[TR_01]
+CARRERA DOS
-[FEA_ST]
-Estéreo
+[TR_02]
+CARRERA TRES
-[FEA_DTS]
-DTS
+[TR_03]
+CARRERA CUATRO
-[FEA_RSS]
-Emisora de radio
+[TR_04]
+CARRERA CINCO
-[FEA_NON]
-RADIO APAGADA
+[TR_05]
+CARRERA SEIS
-[FEA_FM0]
-WILDSTYLE
+[TR_06]
+CARRERA SIETE
-[FEA_FM1]
-FLASH FM
+[TR_07]
+CARRERA OCHO
-[FEA_FM2]
-KCHAT
+[CHSE]
+PERSECUCIÓN
-[FEA_FM3]
-FEVER 105
+[NOCHANG]
+No puedes cambiar de ropa durante esta misión.
-[FEA_FM4]
-VROCK
+[OUTF_12]
+Antonio
-[FEA_FM5]
-VCPR
+[OUTF_13]
+Chándal
-[FEA_FM7]
-EMOTION 98.3
+[OUTF_14]
+Gánster
-[FEA_FM8]
-WAVE 103
+[OUTF_15]
+Consejero
-[FED_BRI]
-Brillo
+[BENZ_AN]
+~w~El ~h~traje de Antonio~w~ ya está disponible en el piso franco.
-[FED_TRA]
-Estelas
+[BENZ_SW]
+~w~El ~h~chándal~w~ ya está disponible en el piso franco.
-[FED_SUB]
-Subtítulos
+[BENZ_GD]
+~w~El ~h~traje de gánster~w~ ya está disponible en el piso franco.
-[FED_WIS]
-Formato 16:9
+[BENZ_WI]
+~w~El ~h~traje de consejero~w~ ya está disponible en el piso franco.
-[FED_POS]
-Posición de la pantalla
+[RAMPAGE]
+DESTRUCCIÓN
-[FED_RDR]
-RADAR
+[GS_TTGT]
+TIEMPO TANQUE:
-[FED_HUD]
-MODO HUD
+[GS_O5]
+Para ganar, sobrevive el máximo posible en el tanque. Provócale daños al tanque para quitárselo a otro jugador.
-[FED_RDB]
-SOLO ICONOS
+[HELP28]
+~w~Para lanzar un ~h~explosivo~w~ pulsa~h~ ~k~ ~PDFW~~w~. Cuanto más lo mantengas pulsado más lejos llegará.
-[FE_MLG]
-LEYENDA DEL MAPA
+[RATNG53]
+Deshonroso
-[FEI_SCR]
-Desplazarse
+[RATNG54]
+Rata tramposa
-[FEP_RES]
-Continuar
+[RATNG55]
+Tiburón
-[FEP_STG]
-Iniciar partida
+[RATNG56]
+Timador
-[FEP_STA]
-Estadísticas
+[RATNG57]
+El padrino de la trola
-[FEP_BRI]
-Resumen
+[RATNG11]
+SANGUIJUELA
-[FEP_OPT]
-Opciones
+[CHASE6]
+Liberty Tree Página 2
-[FEP_QUI]
-Salir del juego
+[CHASE7]
+Liberty Tree Primera plana
-[FES_LOA]
-Cargar partida
+[AUTOLD]
+Cargando desde el Memory Stick™. No extraigas el Memory Stick™ ni apagues el sistema.
-[FES_DEL]
-Borrar partida
+[LDFAIL]
+Error al cargar. Los datos guardados están dañados.
-[FEC_CSU]
-Configuración del controlador
+[MEMCHKA]
+No hay Memory Stick™. Se necesitan
-[FEC_RED]
-Redefinir controles
+[MEMCHKB]
+por lo menos para guardar los datos del juego.
-[FEC_MOU]
-Configuración del ratón
+[MEMCHKC]
+No hay espacio suficiente libre en el Memory Stick™. Se necesitan
-[DISTGOL]
-Distancia recorrida en carro de golf (millas)
+[MEMCHKD]
+por lo menos para guardar los datos del juego.
-[DISTGOM]
-Distancia recorrida en carro de golf (m)
+[M_FAIL]
+¡MISIÓN FRACASADA!
-[ST_FAVR]
-Estación de radio favorita
+[M_OVER]
+¡MISIÓN FALLIDA!
-[ST_WSTR]
-estación de radio que menos te gusta
+[M_PASS]
+~Y~¡MISIÓN SUPERADA! ~n~~1~ $
-[ST_FAVV]
-Vehículo favorito
+[M_PASSN]
+~Y~¡MISIÓN SUPERADA!
-[ST_STAR]
-Número total de estrellas se busca conseguidas
+[MRACE11]
+~w~Vuelve a un vehículo para terminar la carrera.
-[ST_HEAD]
-Número de disparos a la cabeza
+[FEI_LE1]
+Leyenda - Sí
-[ST_GANG]
-Banda que menos te gusta
+[FEI_LE2]
+Leyenda - No
-[ST_STGN]
-Número total de estrellas se busca evadidas
+[FEI_TA1]
+Objetivo - Sí
-[TYREPOP]
-Neumáticos reventados por disparos
+[FEI_TA2]
+Objetivo - No
-[TYRESLA]
-Neumáticos rajados con una navaja
+[C1FREE2]
+joystick analógico izquierdo
-[ST_BRK]
-Número de muertes en el anillo sangriento
+[C3FREE2]
+joystick analógico izquierdo
-[ST_LTBR]
-Mayor tiempo en el anillo sangriento (segs.)
+[FEA_MP3]
+PISTAS PERSONALIZ.:
-[ST_GNG1]
-Cubanos
+[FEA_NA]
+NO DISPONIBLE
-[ST_GNG2]
-Haitianos
+[MPC_060]
+Antonio
-[ST_GNG3]
-Aspirantes callejeros
+[MPC_061]
+Chándal
-[ST_GNG4]
-Pandilleros de Díaz
+[MPC_062]
+Gánster
-[ST_GNG5]
-Guardias de seguridad
+[MPC_063]
+Consejero
-[ST_GNG6]
-Banda de motoristas
+[MPC_064]
+Kazuki
-[ST_GNG7]
-Banda de Vercetti
+[NUMDBL1]
+DEBUG 1 (~1~) (~1~)
-[ST_GNG8]
-Golfistas
+[SVRMBRS]
+JUGADORES:
-[FEA_FM6]
-ESPANTOSO
+[RAMP_P]
+¡DESTRUCCIÓN SUPERADA!
-[ST_ASSI]
-Contratos de asesinato completados
+[RAMP_F]
+¡DESTRUCCIÓN FRACASADA!
-[DISTBIK]
-Dist. Recorrida en moto (millas)
+[MPWLPAC]
+ha recogido un coche objetivo.
-[DISTBIM]
-Distancia recorrida en moto (m)
+[MPWLDAC]
+ha entregado un coche objetivo.
-[HOTEL]
-Ocean View
+[LDWAIT]
+Pulsa ~X~ para continuar.
-[KICK1_9]
-PUNTOS DE CONTROL:
+[LOADING]
+Cargando, espera...
-[FIN_B6]
-No tienes suficiente dinero para empezar esta misión.
+[RACEP1]
+1°
-[TEX3_9]
-~g~Recoge una bomba pasando con el helicóptero RC cerca de ella.
+[RACEP2]
+2°
-[HELP22]
-Ve a la señal de la casa verde que hay en el radar.
+[RACEP3]
+3°
-[FES_FMS]
-Éxito al formatear. Selecciona Aceptar para continuar.
+[RACEP4]
+4°
-[FES_SSC]
-Éxito al guardar. Selecciona Aceptar para continuar.
+[RACEP5]
+5°
+
+[RACEP6]
+6°
+
+[FEA_UT]
+Pista desconocida
+
+[LOADIN2]
+Cargando...
+
+[DNH5_X2]
+~r~No has activado todas las bombas.
+
+[MRACE12]
+TIENES
+
+[MRACE13]
+S. PARA ENCONTRAR UN VEHÍCULO
+
+[MRACE14]
+S. PARA ENCONTRAR UN VEHÍCULO
+
+[DTB_03]
+~w~Ganará el equipo que defienda más tiempo sus coches.
+
+[PUPCOL]
+ha recogido una mejora.
+
+[TNKCSE]
+Provócale daños al tanque para quitárselo a otro jugador.
+
+[TNKTM]
+Para ganar, sobrevive el máximo posible en el tanque.
+
+[MPFAIL]
+FRACASO
+
+[GS_LOC2]
+LUGAR:
+
+[DTBSWPA]
+Has rechazado a los Sindacco durante
+
+[DTBSWPB]
+Ahora, destroza sus coches en menos tiempo.
+
+[DTBSWPC]
+Has destrozado los coches de los Forelli en
+
+[DTBSWPD]
+Ahora, protege tus vehículos durante más tiempo.
+
+[CHANOP]
+Cambiar opciones
+
+[MPSSCT]
+DINERO A OBTENER:
+
+[F_RANG2]
+~r~La radio del coche de bomberos no funciona en el metro.
+
+[T_RANG2]
+~r~En el metro no hay basura que recoger.
+
+[T_RANGE]
+~r~Aquí no hay basura que recoger.
+
+[FEU_YES]
+SÍ
+
+[FEU_NO]
+NO
+
+[HELP43]
+~w~Si usas el freno de mano podrás girar la embarcación con más rapidez.
+
+[RACE_T6]
+~r~Uno de los vehículos ha quedado destrozado - se ha cancelado la carrera.
+
+[FED_POS]
+POSICIÓN DE LA PANTALLA
+
+[FES_DSS]
+Selecciona partida guardada para borrar:
+
+[FES_LSS]
+Selecciona partida guardada para cargar:
[FES_DSC]
-Éxito al borrar. Selecciona Aceptar para continuar.
+Éxito al borrar. Selecciona ACEPTAR para continuar.
-[FESZ_QC]
-¿Deseas sobreescribir esta partida guardada dañada?
+[FES_DGM]
+BORRAR PARTIDA
-[FES_CHE]
-¡Atención! Se han activado uno o más trucos, esto puede afectar a tus partidas guardadas. Te recomendamos no guardar esta partida.
+[ITBEG]
+Al principio...
-[FET_SG]
+[FET_LG]
+CARGAR PARTIDA
+
+[FES_SCG]
+¿Deseas guardar la partida?
+
+[FESZ_QZ]
+¿Seguro que quieres guardar la partida?
+
+[FES_SSC]
+Éxito al guardar. Selecciona ACEPTAR para continuar.
+
+[FEM_NTF]
+La memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 no tiene formato.
+
+[FES_CFM]
+Formateando la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1. No extraigas la memory card (8MB) (para PlayStation®2) ni el mando. No reinicies ni apagues la consola.
+
+[FES_LOQ]
+¡Error al cargar! La partida guardada en la memory card (8MB) (para PlayStation®2) no es compatible con este juego. Intenta cargar una partida guardada diferente. El juego va a reiniciarse.
+
+[FEM_NTH]
+No hay memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1.
+
+[FES_CMP]
+¡Error al guardar! Comprueba la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 e inténtalo de nuevo.
+
+[FESZ_FO]
+La memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 no tiene formato. ¿Deseas formatearla ahora?
+
+[FES_NOC]
+No hay memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1.
+
+[FES_LOE]
+¡Error al cargar! Comprueba la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 e inténtalo de nuevo. El juego va a reiniciarse.
+
+[FES_DEE]
+¡Fallo al borrar! Comprueba la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 e inténtalo de nuevo.
+
+[SLONFM]
+¡Error al formatear! Comprueba la memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1 e inténtalo de nuevo.
+
+[SLONDR]
+No hay espacio suficiente libre en la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1. Si deseas guardar datos del juego, inserta una memory card (8MB) (para PlayStation®2) con al menos 330 KB de espacio libre en la ranura para MEMORY CARD 1.
+
+[SLNSP]
+No hay espacio suficiente libre en la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1. Se necesitan al menos 101 KB adicionales de espacio libre en la memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1 para guardar datos del juego.
+
+[SLONNF]
+La memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 no tiene formato. ¿Deseas formatearla ahora?
+
+[FESZ_FF]
+¡Error al formatear! Comprueba la memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1 e inténtalo de nuevo.
+
+[MCDNSP]
+No hay memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1. Si deseas guardar datos del juego, inserta una memory card (8MB) (para PlayStation®2) en la ranura para MEMORY CARD 1 con al menos 330 KB de espacio libre. ¿Deseas empezar el juego de todos modos?
+
+[MCGNDP]
+No hay espacio suficiente libre en la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1. Se necesitan al menos 330 KB de espacio libre para guardar datos del juego. ¿Deseas empezar el juego de todos modos?
+
+[MCGNSP]
+No hay espacio suficiente libre en la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1. Se necesitan al menos 101 KB adicionales de espacio libre para guardar datos del juego. ¿Deseas empezar el juego de todos modos?
+
+[FESZ_WR]
+Guardando datos. No extraigas la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1, ni el mando. No reinicies ni apagues la consola.
+
+[FELD_WR]
+Cargando datos. No extraigas la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1, ni el mando. No reinicies ni apagues la consola.
+
+[FEDL_WR]
+Borrando datos. No extraigas la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1, ni el mando. No reinicies ni apagues la consola.
+
+[C0VEWEA]
+joystick analógico derecho
+
+[C1VEWEA]
+joystick analógico derecho
+
+[C2VEWEA]
+joystick analógico derecho
+
+[C3VEWEA]
+botones de dirección
+
+[C0PDLOO]
+joystick analógico derecho
+
+[C1PDLOO]
+joystick analógico derecho
+
+[C2PDLOO]
+joystick analógico derecho
+
+[C3PDLOO]
+joystick analógico derecho
+
+[C0AMMOV]
+joystick analógico izquierdo o botones de dirección
+
+[C1AMMOV]
+joystick analógico izquierdo o botones de dirección
+
+[C2AMMOV]
+joystick analógico izquierdo o botones de dirección
+
+[C3AMMOV]
+joystick analógico izquierdo o botones de dirección
+
+[FEC_ACB]
+Acelerar/Frenar
+
+[FES_SAV]
GUARDAR PARTIDA
-[FEH_BRI]
-INFORME
+[FES_FMS]
+Éxito al formatear.
-[FEH_MAP]
-MAPA
+[MCDNCK]
+Comprobando la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1. No extraigas la memory card (8MB) (para PlayStation®2) ni el mando. No reinicies ni apagues la consola.
-[FEM_OK]
-Aceptar
+[FESZ_QC]
+¿Sobrescribir esta partida guardada dañada?
-[FEC_CRO]
-Agacharse
+[NOCONT]
+Conecta un control analógico (DUALSHOCK®) o un control analógico (DUALSHOCK®2) al puerto de control 1 para continuar.
-[FEC_CR3]
-Agacharse (Botón L3)
+[FES_LCF]
+¡Error al cargar! Comprueba la memory card (8MB) (para PlayStation®2) de la ranura para MEMORY CARD 1 e inténtalo de nuevo.
-[FEC_SMT]
-Sub-misión
+[DBGHELP]
+~h~DEBUG MENU~w~ Select Item with ~h~left button & right button. ~w~Press ~h~X button ~w~to launch. Press ~h~TRIANGLE button ~w~to quit menu.
-[FEC_SM3]
-Sub-misión (Botón R3)
+[DBGSEL1]
+Level Skip Menu
-[FEC_RSC]
-Emisoras de radio
+[DBGSEL2]
+Car Viewer
-[ST_PR01]
-Aviador
+[DBGSEL3]
+Character Viewer
-[ST_PR02]
-Piloto del ejército
+[DBGSEL4]
+Building Viewer
-[ST_PR03]
-Oficial piloto
+[DBGSEL5]
+Weapon Cheat
-[ST_PR04]
-Cabo
+[DBGSEL6]
+Player Cheat
-[ST_PR05]
-Teniente
+[DBGSEL7]
+Weather and Time Changer
-[ST_PR06]
-Sargento
+[DBGSEL8]
+Marketing Camera
-[ST_PR07]
-Capitán
+[DBGSEL9]
+MoCap Menu
-[ST_PR08]
-Biggs
+[DBGSE10]
+USJ Editor
-[ST_PR09]
-Wedge
+[DBGSE11]
+Toggle Player Coordinates
-[ST_PR10]
-Barón Rojo
+[DBGFIL0]
+Ped Selector
-[ST_PR11]
-Ganso
+[DBGFIL1]
+Car Selector
-[ST_PR12]
-Víbora
+[PLCHLD]
+Placeholder: mission will complete in 5 seconds
-[ST_PR13]
-Jester
+[PLCHLD2]
+Placeholder Cutscene
-[ST_PR14]
-Chappy
+[PLCHLD3]
+Placeholder (MOCAP) Cutscene
-[ST_PR15]
-Iceman
+[LS_MAC]
+Ma Cipriani stream
-[ST_PR16]
-Maverick
+[LS_JDT]
+J.D. O'Toole stream
-[ST_PR17]
-Negado
+[LS_SAL]
+Salvatore stream
-[ST_PR18]
-General de la Armada aérea
+[LS_COMP]
+Completed all Missions in this stream
-[ST_PR19]
-As
+[TEMP1]
+Number: ~1~
-[FET_LG]
-CARGAR JUEGO
+[LS2_H1]
+Use ~h~analog up & down ~w~to select story stream. Use ~h~analog left & right ~w~to select mission. Use ~h~L button & R button ~w~to select an island. Press ~h~X button ~w~to start mission. Press ~h~TRIANGLE button ~w~to exit.
-[CAR_EXP]
-Vehículos destruidos
+[LS2_H2]
+You cannot use levelskip when you are ~h~on a mission.
-[BOA_EXP]
-Barcos destruidos
+[LS2_VIC]
+~y~Vincenzo Cilli -~g~ ~a~
-[HEL_DST]
-Aviones y helicópteros destruidos
+[LS2_MAC]
+~y~Ma Cipriani -~g~ ~a~
-[STFT_01]
-Tiempo más rápido de ''Moto con llantas de aleación''
+[LS2_JDT]
+~y~J.D. O'Toole -~g~ ~a~
-[STFT_02]
-Tiempo más rápido de ''El conductor''
+[LS2_SAL]
+~y~Salvatore -~g~ ~a~
-[STFT_03]
-Tiempo más rápido en el Circuito de Tierra
+[LS2_MAR]
+~y~Maria -~g~ ~a~
-[STFT_04]
-Tiempo más rápido en la Carrera de Aviones RC
+[LS2_NED]
+~y~Ned Burner -~g~ ~a~
-[STFT_05]
-Tiempo más rápido en la Carrera de Coches RC
+[LS2_DON]
+~y~Donald Love -~g~ ~a~
-[STFT_06]
-Tiempo más rápido Control del Helicóptero RC
+[LS2_RAY]
+~y~Ray Machowski -~g~ ~a~
-[STFT_07]
-Tiempo más rápido en ''Velocidad terminal''
+[LS2_TOS]
+~y~Toshiko Kasen -~g~ ~a~
-[STFT_08]
-Tiempo más rápido en ''Ocean Drive''
+[FREEON]
+Time Frozen
-[STFT_09]
-Tiempo más rápido en ''Carrera por el borde''
+[FREEOFF]
+Time Unfrozen
-[STFT_10]
-Tiempo más rápido en ''Capital Cruise''
+[WTC_INS]
+Use ~h~analog up & down ~w~to change weather. Use ~h~analog left & right ~w~to change hour. Press ~h~TRIANGLE button ~w~to exit. Press ~h~SQUARE button ~w~to freeze time.
-[STFT_11]
-Tiempo más rápido en ''¡Tour!''
+[WTC_TIM]
+TIME: ~1~:00
-[STFT_12]
-Tiempo más rápido en ''Aguante en V.C.''
+[WTC_WE0]
+WEATHER: CLOUDY
-[STHC_01]
-Puntuación más alta en el campo de tiro
+[WTC_WE1]
+WEATHER: EXTRA COLOURS
-[STHC_02]
-Mejor porcentaje de impactos en el campo de tiro
+[WTC_WE2]
+WEATHER: EXTRA SUNNY
-[STHC_03]
-Ventas de droga realizadas
+[WTC_WE3]
+WEATHER: FOGGY
-[HELP24]
-Ahora puedes aceptar trabajos del Coronel.
+[WTC_WE4]
+WEATHER: HURRICANE
-[HELP25]
-Ahora puedes aceptar trabajos de Avery Carrington.
+[WTC_WE5]
+WEATHER: RAINY
-[HELP29]
-Puedes visitar la tienda de ropa cuando no estés en una misión.
+[WTC_WE6]
+WEATHER: SNOW
-[HELP30]
-Cuando compres ropa nueva, tu nivel de se busca se establecerá en cero.
+[WTC_WE7]
+WEATHER: SUNNY
-[ASM4_24]
-distancia:
+[CVHELP]
+Use ~h~up button and down button ~w~to change character. Use ~h~left button and right button ~w~to rotate camera. HOLD ~h~SQUARE ~w~to zoom in (toggles upper and lower body). Press ~h~TRIANGLE ~w~to quit character viewer.
-[RBM1_6]
-~g~Lleva a Mercedes y el ''love juice'' a la banda en el estudio de grabación.
+[VMENU1]
+--------- Select a Viewer --------- --- ~h~Car~w~ - Character - Building --
-[HELP31]
-Para hacer una pasada, mira primero a izquierda o derecha con ~k~~VEHICLE_LOOKLEFT~ o ~k~~VEHICLE_LOOKRIGHT~.
+[VMENU2]
+--------- Select a Viewer --------- --- Car - ~h~Character~w~ - Building --
-[HELP34]
-Para realizar una pasada deberás tener un subfusil.
+[VMENU3]
+--------- Select a Viewer --------- --- Car - Character - ~h~Building~w~ --
-[STRIP_1]
-~r~No tienes dinero suficiente, tacaño miserable.
+[CV_C]
+COMPARISON MODEL
-[EXIT_1]
-Pulsa ~k~~PED_SPRINT~ para salir.
+[CV_0]
+ROW: -- MODEL: player
-[ASM1_B]
-Encontrará su siguiente trabajo pegado con cinta adhesiva bajo el teléfono.
+[CV_1]
+ROW: 114 MODEL: cop
-[ASM1_C]
-Tengo más trabajo para usted que requerirá tomar ''el volante'' de la situación.
+[CV_2]
+ROW: 115 MODEL: swat
-[SCARF]
-Apartamento 3c
+[CV_3]
+ROW: 116 MODEL: fbi
-[LAW4_10]
-¡Mamones de directores!
+[CV_4]
+ROW: 117 MODEL: army
-[RCH1_6]
-~g~Utiliza el helicóptero RC para pasar por los puntos de control dispersados por el aeropuerto.
+[CV_5]
+ROW: 118 MODEL: medic
-[RCH1_9]
-~b~TIEMPO TOTAL: ~1~:~1~
+[CV_6]
+ROW: 119 MODEL: fireman
-[RCH1_10]
-~b~TIEMPO TOTAL: ~1~:0~1~
+[CV_7]
+ROW: 71 MODEL: male01
-[WHEEL01]
-DOBLE BONIFICACIÓN EN DOS RUEDAS: ~1~ $ Distancia: ~1~,~1~m Tiempo: ~1~ segundos
+[CV_9]
+ROW: 120 MODEL: taxi_d
-[WHEEL02]
-DOBLE BONIFICACIÓN EN DOS RUEDAS: ~1~ $ Distancia: ~1~ pies Tiempo: ~1~ segundos
+[CV_10]
+ROW: 2 MODEL: pimp
-[WHEEL03]
-BONIFICACIÓN EN DOS RUEDAS: ~1~ $ Tiempo: ~1~ segundos
+[CV_11]
+ROW: 13 MODEL: criminal01
-[WHEEL04]
-BONIFICACIÓN EN DOS RUEDAS: ~1~ $ Distancia: ~1~,~1~m
+[CV_12]
+ROW: 14 MODEL: criminal02
-[WHEEL05]
-BONIFICACIÓN EN DOS RUEDAS: ~1~ $ Distancia: ~1~ pies
+[CV_13]
+ROW: 15 MODEL: male02
-[WHEEL06]
-BONIFICACIÓN EN CABALLITO: ~1~ $ Distancia: ~1~,~1~m Tiempo: ~1~ segundos
+[CV_14]
+ROW: 16 MODEL: male03
-[WHEEL07]
-BONIFICACIÓN EN CABALLITO: ~1~ $ Distancia: ~1~ pies Tiempo: ~1~ segundos
+[CV_15]
+ROW: 121 MODEL: fatmale01
-[WHEEL08]
-BONIFICACIÓN EN CABALLITO: ~1~ $ Tiempo: ~1~ segundos
+[CV_16]
+ROW: 17 MODEL: fatmale02
-[WHEEL09]
-BONIFICACIÓN EN CABALLITO: ~1~ $ Distancia: ~1~,~1~m
+[CV_17]
+ROW: 18 MODEL: female01
-[WHEEL10]
-BONIFICACIÓN EN CABALLITO: ~1~ $ Distancia: ~1~ pies
+[CV_18]
+ROW: 19 MODEL: female02
-[WHEEL11]
-BONIFICACIÓN EN PARADA MÁS LARGA: ~1~ $ Distancia: ~1~,~1~m Tiempo: ~1~ segundos
+[CV_19]
+ROW: 20 MODEL: female03
-[WHEEL12]
-BONIFICACIÓN EN PARADA MÁS LARGA: ~1~ $ Distancia: ~1~ pies Tiempo: ~1~ segundos
+[CV_20]
+ROW: 21 MODEL: fatfemale01
-[WHEEL13]
-BONIFICACIÓN EN PARADA MÁS LARGA: ~1~ $ Tiempo: ~1~ segundos
+[CV_21]
+ROW: 22 MODEL: fatfemale02
-[WHEEL14]
-BONIFICACIÓN EN PARADA MÁS LARGA: ~1~ $ Distancia: ~1~,~1~m
+[CV_22]
+ROW: 23 MODEL: prostitute
-[WHEEL15]
-BONIFICACIÓN EN PARADA MÁS LARGA: ~1~ $ Distancia: ~1~ pies
+[CV_23]
+ROW: 24 MODEL: prostitute2
-[ROK3_72]
-¡Love Fist!
+[CV_24]
+ROW: 25 MODEL: p_man1
-[POR1_19]
-¡Eh!
+[CV_25]
+ROW: 26 MODEL: p_man2
-[DESPERA]
-Desesperado
+[CV_26]
+ROW: 27 MODEL: p_wom1
-[MOB_99A]
-Ve hasta el teléfono público junto al centro comercial en Washington.
+[CV_27]
+ROW: 28 MODEL: p_wom2
-[MOB_98A]
-Ve hasta el teléfono público en Vice Point.
+[CV_28]
+ROW: 29 MODEL: ct_man1
-[MOB_96A]
-Ve hasta el teléfono público en la terminal del aeropuerto.
+[CV_29]
+ROW: 30 MODEL: ct_man2
-[MOB_95A]
-Ve hasta el teléfono público en Little Havana.
+[CV_30]
+ROW: 31 MODEL: ct_wom1
-[BNK1_1]
-¿Le puedo ayudar, señor?
+[CV_31]
+ROW: 32 MODEL: ct_wom2
-[BNK1_2]
-¡Hay un impostor!
+[CV_32]
+ROW: 33 MODEL: li_man1
-[BNK1_3]
-¡Se ha vuelto loco!
+[CV_33]
+ROW: 34 MODEL: li_man2
-[BNK1_4]
-¿Quién demonios eres?
+[CV_34]
+ROW: 35 MODEL: li_wom1
-[BNK1_5]
-¿Dónde está tu placa?
+[CV_35]
+ROW: 36 MODEL: li_wom2
-[BNK1_6]
-¡Ahí están! ¡Dispara a matar!
+[CV_36]
+ROW: 37 MODEL: docker1
-[MOB_24A]
-Hola, ¿Sr. Vercetti?
+[CV_37]
+ROW: 38 MODEL: docker2
-[MOB_24B]
-Sí.
+[CV_38]
+ROW: 39 MODEL: scum_man
-[MOB_24C]
-Soy Cortez. Usted estuvo en mi fiesta.
+[CV_39]
+ROW: 40 MODEL: scum_wom
-[MOB_24D]
-Sí, lo recuerdo.
+[CV_40]
+ROW: 41 MODEL: worker1
-[MOB_24E]
-Sr. Vercetti, ha sido un desgraciado incidente lo que ocurrió con su operación de negocios.
+[CV_41]
+ROW: 42 MODEL: worker2
-[MOB_24F]
-Lo sé.
+[CV_42]
+ROW: 43 MODEL: b_man1
-[MOB_24G]
-Quiero que sepa que tanto yo como mi gente estamos haciendo todo lo que podemos para llegar al fondo de este tema.
+[CV_43]
+ROW: 44 MODEL: b_man2
-[MOB_24H]
-Si desea hablar conmigo de manera más privada, me podrá encontrar en el barco. Buenos días, señor.
+[CV_44]
+ROW: 67 MODEL: b_man3
-[BNK2_6]
-¡Este tío está chalado!
+[CV_45]
+ROW: 45 MODEL: b_wom1
-[ANGEL]
-Ángel
+[CV_46]
+ROW: 46 MODEL: b_wom2
-[CUBJET]
-Jetmax Cubano
+[CV_47]
+ROW: 70 MODEL: b_wom3
-[SANDKIN]
-Sandking
+[CV_48]
+ROW: 47 MODEL: mod_man
-[POLMAV]
-Maverick de la policía
+[CV_49]
+ROW: 48 MODEL: mod_wom
-[BOXVILL]
-Boxville
+[CV_50]
+ROW: 49 MODEL: st_man
-[BENSON]
-Benson
+[CV_51]
+ROW: 50 MODEL: st_wom
-[HOTRINA]
-Corredor de Hotring
+[CV_52]
+ROW: 51 MODEL: fan_man1
-[HOTRINB]
-Corredor de Hotring
+[CV_53]
+ROW: 52 MODEL: fan_man2
-[BLOODRA]
-Coche de Bloodring
+[CV_54]
+ROW: 53 MODEL: fan_wom
-[BLOODRB]
-Coche de Bloodring
+[CV_55]
+ROW: 54 MODEL: hos_man
-[MAFIACR]
-Yate de la Mafia
+[CV_56]
+ROW: 55 MODEL: hos_wom
-[COP_M2]
-ANTI VICIO
+[CV_57]
+ROW: 56 MODEL: const1
-[COP_M3]
-TRUENO MARRÓN
+[CV_58]
+ROW: 57 MODEL: const2
-[BNK3_2]
-No voy a conducir por ti, ni soñando, voy a compartir esto con el grupo.
+[CV_59]
+ROW: 58 MODEL: shopper1
-[FEM_SL1]
-No hay archivo 1 guardado
+[CV_60]
+ROW: 59 MODEL: shopper2
-[FEM_SL2]
-No hay archivo 2 guardado
+[CV_61]
+ROW: 60 MODEL: shopper3
-[FEM_SL3]
-No hay archivo 3 guardado
+[CV_62]
+ROW: 61 MODEL: stud_man
-[FEM_SL4]
-No hay archivo 4 guardado
+[CV_63]
+ROW: 62 MODEL: stud_wom
-[FEM_SL5]
-No hay archivo 5 guardado
+[CV_64]
+ROW: 63 MODEL: cas_man
-[FEM_SL6]
-No hay archivo 6 guardado
+[CV_65]
+ROW: 64 MODEL: cas_wom
-[FEM_SL7]
-No hay archivo 7 guardado
+[CV_79]
+ROW: 123 MODEL: gang01 LEONE_A
-[FEM_SL8]
-No hay archivo 8 guardado
+[CV_80]
+ROW: 124 MODEL: gang02 LEONE_B
-[FEA_CHA]
-Cambiando la salida de audio a ESTÉREO. Espera...
+[CV_81]
+ROW: 69 MODEL: gang03 TRIAD_A
-[FEA_CHD]
-¡Aviso! Estás cambiando la salida de ESTÉREO a DTS. Espera...
+[CV_82]
+ROW: 3 MODEL: gang04 TRIAD_B
-[FEI_SEL]
-Selec.
+[CV_83]
+ROW: 4 MODEL: gang05 DIABLO_A
-[FEI_BAC]
-Atrás
+[CV_84]
+ROW: 5 MODEL: gang06 DIABLO_B
-[FEI_RES]
-Reanudar
+[CV_85]
+ROW: 68 MODEL: gang07 YAKUZA_A
-[FEI_NAV]
-Navegar
+[CV_86]
+ROW: 6 MODEL: gang08 YAKUZA_B
-[FEI_BTX]
-botón / -
+[CV_87]
+ROW: 7 MODEL: gang09 YARDIE_A
-[FEI_BTT]
-botón " -
+[CV_88]
+ROW: 8 MODEL: gang10 YARDIE_B
-[FEI_STA]
-Botón START -
+[CV_89]
+ROW: 9 MODEL: gang11 COLOMBIAN_A
-[FEI_BTD]
-; = > < -
+[CV_90]
+ROW: 10 MODEL: gang12 COLOMBIAN_B
-[FEI_STO]
-Parar
+[CV_91]
+ROW: 11 MODEL: gang13 HOOD_A
-[MOB_68A]
-Tommy, tío, tengo una sorpresa para ti.
+[CV_92]
+ROW: 12 MODEL: gang14 HOOD_B
-[MOB_68B]
-Me encuentro en el estudio de grabación con unos artistas importantes.
+[CV_93]
+ROW: 89 MODEL: gang15 Forelli thug1
-[MOB_68C]
-¿Por qué no te vienes por aquí?
+[CV_94]
+ROW: 90 MODEL: gang16 Forelli thug2
-[MOB_68D]
-Sabes que esto tiene sentido, ¿a que sí? Hasta dentro de un rato.
+[CV_95]
+ROW: 88 MODEL: gang17 Sindacco thug1
-[OUTFT1]
-Calle
+[CV_96]
+ROW: 89 MODEL: gang18 Sindacco thug2
-[OUTFT2]
-Etiqueta
+[CV_109]
+ROW: 65 MODEL: SAL_01 Salvatore (Mob Don)
-[OUTFT3]
-Mono de trabajo
+[CV_110]
+ROW: 66 MODEL: RAY_01 Ray (Bad Cop)
-[OUTFT4]
-Club de campo
+[CV_111]
+ROW: 72 MODEL: VINC_01 Vincenzo Cilli
-[OUTFT5]
-Habana
+[CV_112]
+ROW: 73 MODEL: GRDANG1 Avenging Angel
-[OUTFT6]
-Policía
+[CV_113]
+ROW: 74 MODEL: NED_01 Ned Burner (Reporter)
-[OUTFT7]
-Atraco al banco
+[CV_114]
+ROW: 75 MODEL: MASTOR Massimo Torrini (Assassin)
-[OUTFT8]
-Informal
+[CV_115]
+ROW: 76 MODEL: TOOL_01 JD O'Toole
-[OUTFT9]
-Sr. Vercetti
+[CV_116]
+ROW: 77 MODEL: Not used Fthr Kenny
-[OUTFT10]
-Chándal
+[CV_117]
+ROW: 78 MODEL: GRDANG2 Avenging Angel 2
-[OUTFT13]
-MC Tommy
+[CV_118]
+ROW: 79 MODEL: M_HOLE Mayor RC Hole
-[CAR_AS1]
-CONCESIONARIO DE COCHES CONSOLIDADO
+[CV_119]
+ROW: 80 MODEL: FRANFOR Franco Forelli
-[CAR_AS2]
-~g~El Concesionario de coches Sunshine generará ahora unos ingresos de hasta ~1~ $ máximo. Asegúrate de recaudarlos regularmente.
+[CV_120]
+ROW: 81 MODEL: KAZUKI Kazuki Kasen
-[BUYSAVE]
-~g~A partir de ahora, podrás guardar tu partida aquí cuando no estés en una misión.
+[CV_121]
+ROW: 82 MODEL: PAULIE Paulie Sindacco
-[BUYGARG]
-~g~También puedes almacenar vehículos en este garaje.
+[CV_122]
+ROW: 83 MODEL: HOPPER Jane Hopper
-[STRPBUY]
-Adquirido el club Pole Position: ~1~ $
+[CV_123]
+ROW: 84 MODEL: AVERY Avery Carrington
-[GA_4]
-Las bombas de coche son 500 $ cada una.
+[CV_124]
+ROW: 85 MODEL: CASA Giovanni Casa
-[GA_5]
-Tu coche ya está equipado con una bomba.
+[CV_125]
+ROW: 86 MODEL: BABY Giovanni Casa (baby)
-[GA_6] { reVC update }
-¡Apárcalo, actívala pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~ y SAL PITANDO!
+[CV_126]
+ROW: 87 MODEL: MCAFFRY Det. Leon McAffrey
-[GA_7] { reVC update }
-¡Ármalo pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~. La bomba explotará cuando se arranque el motor.
+[CV_127]
+ROW: 92 MODEL: EIGHT 8Ball
-[GA_6B] { reVC update }
-¡Apárcalo, actívala pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~ y SAL PITANDO!
+[CV_128]
+ROW: 93 MODEL: MAR_01 Maria
-[GA_7B] { reVC update }
-¡Ármalo pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~. La bomba explotará cuando se arranque el motor.
+[CV_129]
+ROW: 94 MODEL: LOVE_01 Donald Love
-[MOB_70A]
-Tommy, soy yo, el coronel Cortez. Mira, me parece que eres la clase de hombre que lleva a cabo los trabajos. Así que ayúdame, por favor.
+[CV_130]
+ROW: 95 MODEL: MICKEYH Mickey H
-[MOB_70B]
-Me podrás encontrar en el barco.
+[CV_131]
+ROW: 96 MODEL: WAYNE Wayne (Biker Dude)
-[PICK1]
-¡El chaleco antibalas ha sido entregado en el hotel Ocean View!
+[CV_132]
+ROW: 97 MODEL: BIKER1 Biker Dude 1
-[PICK2]
-¡La .357 ha sido entregada en el hotel Ocean View!
+[CV_133]
+ROW: 98 MODEL: BIKER2 Biker Dude 2
-[PICK3]
-¡La sierra mecánica ha sido entregada en el hotel Ocean View!
+[CV_134]
+ROW: 99 MODEL: DONOVAN O'Donovan
-[PICK4]
-¡El lanzallamas ha sido entregado en el hotel Ocean View!
+[CV_135]
+ROW: 100 MODEL: KAS_01 Toshiko Kasen (kimono)
-[PICK5]
-¡El rifle de francotirador .308 ha sido entregado en el hotel Ocean View!
+[CV_136]
+ROW: 101 MODEL: WKAS_01 Toshiko Kasen (western)
-[PICK6]
-¡La Ametralladora Pesada ha sido entregada en el hotel Ocean View!
+[CV_137]
+ROW: 104 MODEL: JDMADE JD O'Toole - Made Man
-[PICK7]
-¡El lanzacohetes ha sido entregado en el hotel Ocean View!
+[CV_138]
+ROW: 106 MODEL: THUG_01 Sicilian Thug 1
-[PICK8]
-¡El Sea Sparrow está ahora disponible en la mansión de Starfish Island!
+[CV_139]
+ROW: 107 MODEL: THUG_02 Sicilian Thug 2
-[PICK9]
-¡El tanque está ahora disponible en los cuarteles del ejército!
+[CV_140]
+ROW: 109 MODEL: CAMP_MAN Campaign Worker
-[PICK10]
-¡El Hunter está ahora disponible en los cuarteles del ejército!
+[CV_141]
+ROW: 110 MODEL: CAMP_WOM Campaign Worker 2
-[CLOTH1]
-El traje de etiqueta ha sido entregado en Rafaels en Ocean Beach.
+[CV_142]
+ROW: 111 MODEL: MIGUEL Miguel
-[CLOTH2]
-El traje de calle ha sido entregado en los pisos francos.
+[CV_143]
+ROW: 112 MODEL: DELIASS Deli Assistant
-[CLOTH3]
-El mono de trabajo ha sido entregado en Tooled Up en el centro comercial de North Point.
+[CV_144]
+ROW: 113 MODEL: HOBO_01 Donald Love 2
-[CLOTH4]
-El traje del club de campo ha sido entregado en el club de golf de Leaf Links.
+[CV_68]
+ROW: 122 MODEL: HITMAN Hitman
-[CLOTH5]
-El traje Havana ha sido entregado en la tienda de ropa de Little Havana.
+[CV_146]
+ROW: 125 MODEL: HOLEJOG Mayor RC Hole (Jogging outfit)
-[CLOTH6]
-El traje de policía ha sido entregado en la jefatura de policía de Washington Beach.
+[CV_147]
+ROW: 126 MODEL: Chauff Chauffeur
-[CLOTH7]
-El traje informal ha sido entregado en Gash del centro comercial de North Point.
+[CV_148]
+ROW: 128 MODEL: plr2 (Lawyer)
-[CLOTH8]
-El traje del Sr. Vercetti ha sido entregado en Collar & Cuffs de Ocean Beach.
+[CV_149]
+ROW: 129 MODEL: plr3 (Travel clothes)
-[CLOTH9]
-El chándal ha sido entregado en Jocksport del centro de la ciudad.
+[CV_150]
+ROW: 130 MODEL: plr4 (Chauffeur)
-[CLOTH10]
-El traje para el atraco al banco ha sido entregado en el Club Malibu de Vice Point.
+[CV_151]
+ROW: 131 MODEL: plr5 (Hockey mask)
-[MOB_62A]
-Tommy, soy Ricardo Díaz, quiero darte las gracias por cuidar de mí, tío.
+[CV_152]
+ROW: 132 MODEL: plr6 (Tuxedo)
-[MOB_62B]
-He preguntado al gilipollas de Cortez, y me ha dicho que eres bueno, amigo, ¿por qué no vienes a verme?
+[CV_153]
+ROW: 133 MODEL: plr7 (Avenging Angel)
-[MOB_62C]
-Necesito un tío como tú. Todos los que tengo son gilipollas perdidos,
+[CV_154]
+ROW: 134 MODEL: plr8 (The King of Rock'n Roll)
-[MOB_62D]
-gilipollas por todas partes, tío. Yo te puedo hacer muy rico.
+[CV_155]
+ROW: 135 MODEL: plr9 (Cock's Mascot)
-[GOAWAY2]
-~g~Regresa cuando hayas terminado las misiones de la banda de moteros.
+[CV_156]
+ROW: 136 MODEL: plr10 (Boxer Shorts)
-[COL2_9]
-¡Estúpido americano! ¡Te han seguido hasta aquí!
+[CV_157]
+ROW: 137 MODEL: plr11 (Bad Super Hero)
-[LOADCOL]
-Cargando...
+[CV_158]
+ROW: 138 MODEL: plr12 (Dragon)
-[STFT_17]
-Tiempo más rápido en la ''Prueba PCJ''
+[CV_159]
+ROW: 139 MODEL: PHILC Phil Cassidy
-[STFT_18]
-Tiempo más rápido en el ''Trial de tierra''
+[CV_160]
+ROW: 140 MODEL: GREASE Grease Zuko
-[STFT_19]
-Tiempo más rápido en la ''Pista de Pruebas''
+[CV_161]
+ROW: 141 MODEL: GUN_ASS Gun assistant
-[NEW_REC]
-¡Nuevo récord establecido! ~w~~1~ minutos ~g~y ~w~~1~ segundos.
+[CV_162]
+ROW: -- MODEL: JD_shot JD shot dead
-[BMX_HOW]
-~g~¡Da dos vueltas a la pista de tierra, ~y~pasando por ~g~los ~y~PUNTOS DE CONTROL ~g~por el camino!
+[CV_163]
+ROW: -- MODEL: BODYBAG bodybag
-[BMXREW1]
-~g~¡Cada vez que batas tu récord anterior de las dos vueltas
+[CV_164]
+ROW: 142 MODEL: SAL_CON Sal Convict
-[BMXREW2]
-~g~conseguirás una ~y~RECOMPENSA ~g~mejor!
+[VV_131]
+ID:131 MODEL: Landstalker (TBC)
-[BMXRAIN]
-~g~Parece lluvia...
+[VV_135]
+ID:135 MODEL: Perenial (TBC)
-[ITBEG]
-Al principio...
+[VV_138]
+ID:138 MODEL: Firetruck
-[NBMNBUY]
-Casa Swanko adquirida: ~1~ $
+[VV_141]
+ID:141 MODEL: Manana (TBC)
-[LNKVBUY]
-Apartamento en Links View adquirido: ~1~ $
+[VV_148]
+ID:148 MODEL: FBI Car (TBC)
-[HYCOBUY]
-Piso de Hyman adquirido: ~1~ $
+[VV_152]
+ID:152 MODEL: Kuruma (TBC)
-[BUYGARS]
-~g~Puedes guardar vehículos en estos garajes.
+[VV_164]
+ID:164 MODEL: Dodo (TBC)
-[OCHEBUY]
-Apartamento de Ocean Heights adquirido: ~1~ $
+[VV_169]
+ID:169 MODELL: Rc Bandit
-[WASHBUY]
-1102 de la calle Washington adquirido: ~1~ $
+[VV_170]
+ID:170 MODEL: BellyUp (Triad) (TBC)
-[VCPTBUY]
-3321 de Vice Point adquirido: ~1~ $
+[VV_172]
+ID:172 MODEL: Leone Sentinel (TBC)
-[SKUMBUY]
-Chabola Skumole adquirida: ~1~ $
+[VV_174]
+ID: 174 MODEL: Yakuza (TBC)
-[HELP6_C]
-Pulsa ~h~~k~~VEHICLE_HANDBRAKE~~w~ para usar el freno de mano del vehículo.
+[VV_179]
+ID:179 MODEL: Flatbed (TBC)
-[HELP2_A]
-Pulsa ~h~~k~~PED_SPRINT~~w~~w~ cuando estés corriendo para ~h~esprintar.
+[VV_181]
+ID:181 MODEL: Borgnine Taxi (TBC)
-[HELP4_A]
-Pulsa ~h~~k~~VEHICLE_ACCELERATE~~w~ para acelerar.
+[VV_188]
+ID: 188 MODEL: Sindacco Argento (TBC)
-[HELP5_A]
-Pulsa ~h~~k~~VEHICLE_BRAKE~~w~ para frenar o para dar marcha atrás si el vehículo se ha detenido.
+[VV_189]
+ID: 189 MODEL: Forelli Lexcess (TBC)
-[HELP8_A]
-Pulsa ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ para hacer zoom con el rifle y ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ para alejar la vista.
+[VV_192]
+ID:192 MODEL: Speeder (TBC)
-[PBOAT_1] { reVC update }
-Pulsa ~h~ ~k~~VEHICLE_FIREWEAPON~~w~ para disparar los cañones del barco.
+[BV_H1]
+Press CIRCLE to swap building model.
-[SEG3_4] { reVC update }
-~g~Puedes recoger bombas simplemente pilotando tu Helicóptero RC cerca de cada una de ellas, para soltar una bomba pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~.
+[BV_0A]
+ROW: 2 - Portland. Safehouse Exterior. Press CIRCLE to swap.
-[RCR1_3] { reVC update }
-~g~Si quieres abandonar esta misión, pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~ para detonar tu coche RC.
+[BV_0B]
+ROW:24 - Portland. Safehouse Interior. Press CIRCLE to swap.
-[HELP32] { reVC update }
-A continuación dispara pulsando ~h~~k~~VEHICLE_FIREWEAPON~.
+[BV_1]
+ROW: 3 - Portland. Ferry Terminal.
-[HELP33] { reVC update }
-A continuación dispara pulsando ~h~~k~~VEHICLE_FIREWEAPON~.
+[BV_2A]
+ROW: 4 - Portland. Callahan Bridge 1. Press CIRCLE to swap.
-[TTUTOR]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de taxista.
+[BV_2B]
+ROW: 4 - Portland. Callahan Bridge 2. Press CIRCLE to swap.
-[TTUTOR2]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de taxista.
+[BV_3]
+ROW: 5 - Portland. Les Cargo Freighter.
-[FTUTOR]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones del camión de bomberos.
+[BV_4A]
+ROW: 6 - Portland. Doll's House Brothel 1. Press CIRCLE to swap.
-[FTUTOR2]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones del camión de bomberos.
+[BV_4B]
+ROW: 6 - Portland. Doll's House Brothel 2. Press CIRCLE to swap.
-[CTUTOR]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de justiciero.
+[BV_5]
+ROW: 7 - Portland. Tower Block.
-[CTUTOR2]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de justiciero.
+[BV_6]
+ROW: 8 - Portland. Eddie's Garage.
-[HELP8_B]
-Pulsa ~h~~k~~PED_SNIPER_ZOOM_IN~ ~w~para ~h~acercar la vista ~w~con el rifle y ~h~~k~~PED_SNIPER_ZOOM_OUT~ ~w~para ~h~alejar la vista ~w~otra vez.
+[BV_7]
+ROW: 9 - Portland. Bowler's Fist Pub.
-[ATUTOR3]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de ATS.
+[BV_8]
+ROW:10 - Portland. Hepburn Heights.
-[GUN_H1]
-~w~Pulsa ~h~~k~~PED_SPRINT~~w~ para comprar. ~w~Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para salir.
+[BV_9]
+ROW:11 - Portland. Short Stay Hotel.
-[PU_CF3] { reVC update }
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para reemplazar tu arma actual en esta ranura.
+[BV_10]
+ROW:12 - Portland. Car Dealership.
-[PU_CF4] { reVC update }
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para reemplazar tu arma actual en esta ranura.
+[BV_11]
+ROW:13 - Portland. Bus Graveyard.
-[HELP9_B]
-Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para ~h~disparar~w~ el rifle de francotirador.
+[BV_12A]
+ROW:14 - Portland. Drugs Warehouse 1 (awaiting approval). Press CIRCLE to swap.
-[HELP37]
-Si no quieres subir al coche mientras se lo estás robando a alguien, pulsa ~h~~k~~PED_SPRINT~.
+[BV_12B]
+ROW:14 - Portland. Drugs Warehouse 2 (awaiting approval). Press CIRCLE to swap.
-[HELP6_A]
-Pulsa ~h~~k~~VEHICLE_HANDBRAKE~~w~ para usar el freno de mano del vehículo.
+[BV_13]
+ROW:15 - Portland. Ma Cipriani's Restaurant.
-[HELP6_D]
-Pulsa ~h~~k~~VEHICLE_HANDBRAKE~~w~ para usar el freno de mano del vehículo.
+[BV_14]
+ROW:17 - Portland. Basketball Court, Callahan.
-[HELP26]
-Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para subir o bajar de un vehículo.
+[BV_15]
+ROW:18 - Portland. Bike Shop.
-[HELP27]
-Pulsa ~h~~k~~VEHICLE_TURRETUP~~w~ o ~h~~k~~VEHICLE_TURRETDOWN~~w~ para equilibrar tu peso en la moto.
+[BV_16]
+ROW:19 - Portland. Building near Basketball Court.
-[HELP28]
-Pulsa ~h~~k~~VEHICLE_TURRETUP~~w~ o ~h~~k~~VEHICLE_TURRETDOWN~~w~ para equilibrar tu peso en la moto.
+[BV_17A]
+ROW:20 - Portland. Luigi's Nightclub 1.
-[HELP35]
-Pulsa ~h~~k~~GO_LEFT~~w~ o ~h~~k~~GO_RIGHT~~w~ para conducir el vehículo.
+[BV_17B]
+ROW:20 - Portland. Luigi's Nightclub 2.
-[HELP36]
-Pulsa ~h~~k~~GO_LEFT~~w~ o ~h~~k~~GO_RIGHT~~w~ para conducir el vehículo.
+[BV_17C]
+ROW:20 - Portland. Luigi's Nightclub 3.
-[HELP42]
-Ve al ~q~icono rosa~w~ para encontrar el hotel.
+[BV_18]
+ROW:21 - Portland. Casa's Gourmet Deli.
-[HELP19]
-Camina hasta el ~q~marcador rosa~w~ para continuar.
+[BV_19]
+ROW:22 - Portland. Rusty Ship.
-[HELP1]
-Párate en el centro del ~q~marcador rosa.
+[BV_20]
+ROW:23 - Portland. Door for Shopfront.
-[HELP12]
-Camina hasta el centro del ~q~marcador rosa~w~ para activar una misión.
+[BV_21]
+ROW:25 - Staunton. Casino.
-[SEG3_6]
-~g~Para acertar en una zona objetivo con éxito, deberás soltar una bomba en la zona representada por el ~q~marcador rosa~w~. Puedes soltar las bombas en cualquier orden.
+[BV_22]
+ROW:26 - Staunton. Phil Cassidy's Store.
-[S_PROMP]
-Cuando no estés en una misión podrás guardar tu progreso recogiendo las ~h~cintas de cassette~w~.
+[BV_23]
+ROW:27 - Staunton. Zip store.
-[HELP16]
-Cruza la puerta principal del hotel ~h~Ocean View~w~ para entrar en el edificio.
+[BV_24]
+ROW:28 - Staunton. Container Park.
-[HELP43]
-~g~Ve al hotel ~h~Ocean View~g~ en Ocean Drive.
+[BV_25]
+ROW:29 - Staunton. Ferry Terminal.
-[HELI_F1]
-~r~¡Misión de puntos de control cancelada!
+[BV_26A]
+ROW:30 - Staunton. Fort Staunton 1 NORTH.
-[AMMUHLP]
-Si necesitas armas pásate por ~h~Ammu-Nation~w~. Está indicado en el radar como una ~h~pistola~w~ azul.
+[BV_26B]
+ROW:30 - Staunton. Fort Staunton 2 NORTH.
-[HELI_1]
-Control del Helicóptero de Centro de la ciudad
+[BV_27A]
+ROW:30 - Staunton. Fort Staunton 1 SOUTH.
-[HELI_2]
-Control del Helicóptero de Ocean Beach
+[BV_27B]
+ROW:30 - Staunton. Fort Staunton 2 SOUTH.
-[HELI_3]
-Control del Helicóptero de Vice Point
+[BV_28]
+ROW:31 - Ferry - Not Visible At Present.
-[HELI_4]
-Control del Helicóptero de Little Haiti
+[BV_29A]
+ROW:32 - Staunton. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[FST_MFR]
-Emisora de radio preferida
+[BV_29B]
+ROW:32 - Staunton. Safehouse Interior. Press CIRCLE to swap.
-[FST_LFR]
-Emisora de radio menos escuchada
+[BV_30]
+ROW:33 - Staunton. Steps Added To Building.
-[FEI_HOL]
-Mantener
+[BV_31]
+ROW:34 - Portland. Outbuilding.
-[FEI_ZOO]
-Zoom
+[BV_32A]
+ROW:34 - Shoreside. Safehouse Exterior (unchanged). Press CIRCLE to swap.
-[FEI_BTR]
-> < -
+[BV_32B]
+ROW:34 - Shoreside. Safehouse Interior. Press CIRCLE to swap.
-[FEI_NA]
-N\A
+[BV_33]
+Not in Doc - Staunton - Warehouse Interior (not internally approved).
-[MESA]
-Mesa Grande
+[BV_34A]
+Not in Doc - Staunton - Church Exterior. Press CIRCLE to swap.
-[STRP_NO]
-No puedes comprar el club de striptease en este momento, vuelve luego.
+[BV_34B]
+Not in Doc - Staunton - Church Interior for scripted cutscene. Press CIRCLE to swap.
-[CHSE]
-PERSECUCIÓN
+[MODWOR]
+Modify World Speed
-[NBMN_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la casa Swanko por ~1~ $.
+[MODTIT]
+Changing World Speed
-[NBMN_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la casa Swanko por ~1~ $.
+[NEDS2]
+The Passion Of The Heist
-[NBMN_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la casa Swanko por ~1~ $.
+[NEDS3]
+Karmageddon
-[LNKV_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el apartamento de Links View por ~1~ $.
+[NEDS4]
+False Idols
-[LNKV_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el apartamento de Linsk View por ~1~ $.
+[DONS1]
+The Morgue Party Candidate
-[LNKV_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el apartamento de Links View por ~1~ $.
+[GAR_WIL]
+Mete el coche en el garaje.
-[HYCO_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el piso de Hyman por ~1~ $.
+[DONS2]
+Steering The Vote
-[HYCO_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el piso de Hyman por ~1~ $.
+[DONS3]
+Cam-Pain
-[HYCO_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el piso de Hyman por ~1~ $.
+[DONS4]
+Friggin' The Riggin'
-[OCHE_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el apartamento de Ocean Heights por ~1~ $.
+[DONS5]
+Love & Bullets
-[OCHE_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el apartamento de Ocean Heights por ~1~ $.
+[DONS6]
+Counterfeit Count
-[OCHE_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el apartamento de Ocean Heights por ~1~ $.
+[DONS7]
+Love On The Rocks
-[WASH_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el 1102 de la calle Washington por ~1~ $.
+[DONS7AA]
+¡Toni, tienes que ayudarme!
-[WASH_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el 1102 de la calle Washington por ~1~ $.
+[DONS7AB]
+O'Donovan tiene pruebas que me relacionan con Salvatore, ¡es el fin!
-[WASH_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el 1102 de la calle Washington por ~1~ $.
+[DONS7AC]
+Tranquilo, todos los días desaparecen pruebas.
-[VCPT_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el 3321 de Vice Point por ~1~ $.
+[DONS7AD]
+Por no mencionar jueces, testigos y miembros del jurado...
-[VCPT_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el 3321 de Vice Point por ~1~ $.
+[DONS7AE]
+Esperaba que lo vieras así.
-[VCPT_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el 3321 de Vice Point por ~1~ $.
+[DONS7AF]
+Uno de mis hombres ha seguido al tipo que tiene las pruebas.
-[SKUM_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la chabola Skumole por ~1~ $.
+[DONS7AG]
+Os veréis en el paso elevado de Newport.
-[SKUM_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~para comprar la chabola Skumole por ~1~ $.
+[SALS1]
+A Walk In The Park
-[SKUM_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~ ~w~ para comprar la chabola Skumole por ~1~ $.
+[SALS2]
+Making Toni
-[PRNT_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la imprenta por ~1~ $.
+[SALS3]
+Caught In The Act
-[PRNT_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la imprenta por ~1~ $.
+[SALS4]
+Search And Rescue
-[PRNT_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la imprenta por ~1~ $.
+[SALS5]
+Taking The Peace
-[CAR_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el concesionario de coches por ~1~ $.
+[SALS6]
+Shoot The Messenger
-[CAR_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el concesionario de coches por ~1~ $.
+[RAYS1]
+Sayonara Sindaccos
-[CAR_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el concesionario de coches por ~1~ $.
+[RAYS2]
+The Whole 9 Yardies
-[PORN_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar los estudios de cine por ~1~ $.
+[RAYS3]
+Crazy '69'
-[PORN_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar los estudios de cine por ~1~ $.
+[RAYS4]
+Night Of The Livid Dreads
-[PORN_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar los estudios de cine por ~1~ $.
+[RAYS5]
+Munitions Dump
-[ICE_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la fábrica de helados por ~1~ $.
+[MC_01]
+MOCAP Scenes
-[ICE_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la fábrica de helados por ~1~ $.
+[MC_02]
+You cannot be on a mission when using the cutscene selector.
-[ICE_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la fábrica de helados por ~1~ $.
+[MC_04]
+Select the scene you want and press CROSS. Press TRIANGLE to exit.
-[TAXI_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la compañía de taxis por ~1~ $.
+[MC_03]
+~g~scene name - script name~w~
-[TAXI_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la compañía de taxis por ~1~ $.
+[MC_S01]
+1. Biker - mar4
-[TAXI_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la compañía de taxis por ~1~ $.
+[MC_S02]
+2. Bonevoy - jdt1
-[BANK_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el Malibú por ~1~ $.
+[MC_S03]
+3. Campain - dons3
-[BANK_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el Malibú por ~1~ $.
+[MC_S04]
+4. Cashchp - tosh4
-[BANK_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el Malibú por ~1~ $.
+[MC_S05]
+5. Contban - sal5
-[BOAT_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el astillero por ~1~ $.
+[MC_S06]
+6. Crazy69 - rays3
-[BOAT_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el astillero por ~1~ $.
+[MC_S07]
+7. Cuttest - none
-[BOAT_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el astillero por ~1~ $.
+[MC_S08]
+8. Deadly - tosh1
-[STRP_L]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el club Pole Position por ~1~ $.
+[MC_S09]
+9. Donprob - donh6
-[STRP_T]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el club Pole Position por ~1~ $.
+[MC_S10]
+10. Drivnmr - sal8
-[STRP_C]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar el club Pole Position por ~1~ $.
+[MC_S11]
+11. Electon - dons7
-[STOCK]
-~r~Agotado
+[MC_S12]
+12. Homswet - vic1
-[HELP14]
-Para encontrar el bufete del abogado, ve hacia la ~h~señal de la L~w~ que hay en el radar.
+[MC_S13]
+13. Hotwhel - vic6
-[RAMPAGE]
-¡MASACRE!
+[MC_S14]
+14. Kidnapp - jdt5
-[RAMP_F]
-¡MASACRE FALLIDA!
+[MC_S15]
+15. Landgrb - donh1
-[RAMP_P]
-¡MASACRE COMPLETADA!
+[MC_S16]
+16. Morgue - dons1
-[RAMP_A]
-¡TODAS LAS MASACRES COMPLETADAS!
+[MC_S17]
+17. Overdos - mar5
-[PAGE_01]
-¡Liquida a ~1~ criminales en 2 minutos!
+[MC_S18]
+18. Rufjust - salh1
-[PAGE_02]
-¡Destruye ~1~ vehículos en 2 minutos!
+[MC_S19]
+19. Sayonar - rays1
-[PAGE_03]
-¡Pasa en el coche y cárgate a ~1~ criminales en 2 minutos!
+[MC_S20]
+20. sicilan - salh5
-[PAGE_04]
-¡Atropella y mata a ~1~ criminales en 2 minutos!
+[MC_S21]
+21. Theofer - sal1
-[PAGE_05]
-¡Abate a tiros a ~1~ criminales en 2 minutos!
+[MC_S22]
+22. Intro
-[SENTXS]
-Sentinel XS
+[MC_S23]
+23. Final
-[MAP_LEG]
-Leyenda
+[MC_S24]
+24. Final_2
-[VCNMAV]
-VCN Maverick
+[NEDS1]
+L.C. Confidential
-[LG_01]
-Posición del jugador
+[WILGAR2]
+Deja el coche y sal afuera.
-[LG_02]
-Avery Carrington
+{=================================== MISSION TABLE SAL1 ===================================}
-[LG_03]
-Contacto del motero
+[SAL1_M1:SAL1]
+~w~Salvatore quiere hablar.
-[LG_04]
-Coronel Cortez
+[SAL1_M2:SAL1]
+~w~Yo no le sigo el juego a Salvatore.
-[LG_05]
-Ricardo Díaz
+[SAL1_M3:SAL1]
+~w~Gracias por el donativo, chico... Nos vemos.
-[LG_06]
-Kent Paul
+[SAL1_M5:SAL1]
+~w~¡Eh!
-[LG_07]
-Abogado
+[SAL1_D1:SAL1]
+~w~¡Eh! ¡Esquirol!
-[LG_08]
-Phil Cassidy
+[SAL1_D2:SAL1]
+~w~¡A por él!
-[LG_09]
-Astillero
+[SAL1_D3:SAL1]
+~w~¡Ahí está!
-[LG_10]
-Club Malibú
+[SAL1_D4:SAL1]
+~w~¡Va por allí!
-[LG_11]
-Cubanos
+[SAL1_E1:SAL1]
+~w~¡Escapa de los muelles!
-[LG_12]
-Estudio Cinematográfico
+[SAL1_A1:SAL1]
+~w~Reúnete con la líder sindical, Jane Hopper, en los ~y~muelles de Portland~w~.
-[LG_13]
-Ammu-Nation
+[THEO_01:SAL1]
+Eh, jefe, ¿está bien?
-[LG_14]
-Haitianos
+[THEO_02:SAL1]
+¿A ti te lo parece?
-[LG_15]
-Ferretería
+[THEO_03:SAL1]
+No.
-[LG_16]
-Piso franco
+[THEO_04:SAL1]
+Entonces ¿por qué preguntas, capullo?
-[LG_17]
-Helado
+[THEO_05:SAL1]
+Siempre estás diciendo obviedades.
-[LG_18]
-Taxis Kaufman
+[THEO_06:SAL1]
+No puedo creer que esté rodeado de gente como tú.
-[LG_19]
-Love Fist
+[THEO_07:SAL1]
+Perdón.
-[LG_20]
-Imprenta
+[THEO_08:SAL1]
+Mira, lo siento. Toni, eres uno de mis aliados de más confianza.
-[LG_21]
-Propiedad
+[THEO_09:SAL1]
+Después de lo que has hecho, eres más que un hijo. Mejor que mi hijo,
-[LG_22]
-Taller de Pintura
+[THEO_10:SAL1]
+mejor que cualquier hijo.
-[LG_23]
-Tienda de ropa
+[THEO_11:SAL1]
+Tu madre tiene mucha suerte.
-[LG_24]
-Mansión de Tommy
+[THEO_12:SAL1]
+Eso me dicen.
-[LG_25]
-Teléfono
+[THEO_13:SAL1]
+Anthony, estamos acabados.
-[LG_26]
-Emisora de radio Wildstyle
+[THEO_14:SAL1]
+Somos como los dinos pepinos esos... o como se llamen.
-[LG_27]
-Emisora de radio Flash FM
+[THEO_15:SAL1]
+Mira, hasta en mi propia familia me siento como Jesús rodeado de doce Judas.
-[LG_28]
-Emisora de radio Kchat
+[THEO_16:SAL1]
+Escucha, para que veas.
-[LG_29]
-Emisora de radio Fever 105
+[THEO_17:SAL1]
+Hay una líder sindical -sí, una tía- que necesito que me haga un favor.
-[LG_30]
-Emisora de radio VRock
+[THEO_18:SAL1]
+¿Y qué me pide? Dinero...
-[LG_31]
-Emisora de radio VCPR
+[THEO_19:SAL1]
+Solo quiero acceso permanente a los muelles mientras sigan las huelgas,
-[LG_32]
-Emisora de radio Espantoso
+[THEO_20:SAL1]
+que yo ayudé a organizar, para que los chicos descarguen algunas drogas,
-[LG_33]
-Emisora de radio Emotion 98.3
+[THEO_21:SAL1]
+¡y ahora me sale con esta mierda!
-[LG_34]
-Emisora de radio Wave 103
+[THEO_22:SAL1]
+Mira, son gente por la que me he dejado la piel,
-[LG_35]
-Destino
+[THEO_23:SAL1]
+por la que he matado, gente honrada.
-[LG_36]
-Solarium
+[THEO_26:SAL1]
+Es una desgracia. Los hombres de honor como tú y yo estamos acabados.
-[LG_37]
-Club de Striptease
+[THEO_27:SAL1]
+Escucha, Toni, quiero que le lleves algo.
-[LG_38]
-Objetivo
+[THEO_28:SAL1]
+¿Le va a tolerar esto a una mujer?
-[MAP_YAH]
-ESTÁS AQUÍ
+[THEO_29:SAL1]
+¿Qué remedio me queda de momento?
-[TAXSHRT]
-~g~Puedes coger este taxi Kaufman para ir a tu destino sin conducir. Te costará 9 $.
+[THEO_30:SAL1]
+Mira, vas allí, le pagas y le dices que me gustaría tener una charla con ella.
-[FEST_HV]
-Nivel más alto de misión de justiciero
+[THEO_31:SAL1]
+Venga.
-[CLOHELP]
-¡Ropa limpia!
+[THEO_24:SAL1]
+- ¿Y así me lo pagan? ~n~ - Es un insulto.
-[SUNSHIN]
-Coches Sunshine
+{=================================== MISSION TABLE SAL2 ===================================}
-[CHERRYP]
-Helados Cherry Popper
+[SAL2_N:SAL2]
+Chicas
-[KAUFCAB]
-Taxis Kaufman
+[SAL2_A0:SAL2]
+~w~¿Uno de tus nuevos cachorritos, Sal?
-[BOATYAR]
-El Astillero
+[SAL2_A1:SAL2]
+~w~¿Sr. Leone?
-[WANT_L]
-Has perdido tu nivel de se busca, si cometes un crimen mientras las estrellas parpadean, tu nivel total de se busca se restablecerá.
+[SAL2_A2:SAL2]
+~w~¡Toni! ¿Come stai?
-[FEI_BTU]
-; = -
+[SAL2_A3:SAL2]
+~w~Encantado de verte. Quiero que hagas algo por mí...
-[BOAT_AS]
-~g~El astillero generará ahora unos ingresos hasta un máximo de ~1~ $. Asegúrate de recaudarlos de manera regular.
+[SAL2_A4:SAL2]
+~w~Si no puedo tener a esa puta líder sindical de mi lado, por mi madre que me meto en el bolsillo a sus chicos. ¿Capisci?
-[BOAT_A2]
-ASTILLERO COMPLETADO
+[SAL2_A:SAL2]
+~w~Recoge a seis ~b~putas~w~ y llévalas al piquete de los muelles de Portland.
-[BOAT_N]
-Punto de control Charlie
+[SAL2_B0:SAL2]
+~w~¡Mira encanto, no me gusta eso de los tríos!
-[BOAT_P]
-~g~Recoge los paquetes antes de que se acabe el tiempo.
+[SAL2_B1:SAL2]
+~w~¡Cuando tengas más sitio, hablamos de follar! ¡No me subo a un descapotable, chato!
-[FEI_R1B]
-Botón R1 \ R2 -
+[SAL2_D0:SAL2]
+~w~¿Estás solito, bombón?
-[HELP9_A]
-Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para disparar el rifle de francotirador.
+[SAL2_D1:SAL2]
+~w~¡Eh, guapetón! ¿Quieres divertirte un poco?
-[HELP21]
-Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~para subir o bajar de un vehículo.
+[SAL2_D2:SAL2]
+~w~Cariño... ¡Vamos a montar una fiesta tú y yo!
-[CREAM]
-Distribución
+[SAL2_D3:SAL2]
+~w~¿Dónde es la fiesta, corazón?
-[UMBERTO]
-Café Robina
+[SAL2_D4:SAL2]
+~w~¡Eh, tete! ¿Pasamos un buen rato?
-[PU_CF1]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~ ~w~para recoger esta arma. Reemplazará cualquier arma del mismo tipo que tengas.
+[SAL2_D5:SAL2]
+~w~Tú eres la sal... Y yo la pimienta.
-[FED_RDM]
-MAPA E ICONOS
+[SAL2_F0:SAL2]
+~w~¡Eh! ¡Yo también voy!
-[FEC_ILU]
-Invertir vista en primera persona
+[SAL2_F1:SAL2]
+~w~Así que solos tú y yo, ¿eh?
-[NITRO]
-¡Ahora todos los taxis disponen de un impulsor de salto! Simplemente toca el claxon.
+[SAL2_F2:SAL2]
+~w~¿Hace un ñiqui ñiqui o qué?
-[RATNG53]
-Informal
+[SAL2_F3:SAL2]
+~w~Eh, ¿dónde es la fiesta?
-[RATNG54]
-Vergüenza
+[SAL2_F4:SAL2]
+~w~¡Ay, bueno! No te pongas así.
-[RATNG55]
-Hacker
+[SAL2_F5:SAL2]
+~w~¡Solo quiero una fiestecita contigo!
-[RATNG56]
-Liante
+[SAL2_G0:SAL2]
+~w~Llévala al ~y~piquete~w~.
-[RATNG57]
-Mentiroso compulsivo
+[SAL2_G1:SAL2]
+~w~Lleva a las chicas al ~y~piquete~w~.
-[STHC_04]
-Puntuación más alta por mantener la pelota en el aire en la playa
+[SAL2_G2:SAL2]
+~w~Encárgate del ~r~cliente~w~.
-[STHC_05]
-Mejor resultado de Hotring
+[SAL2_G3:SAL2]
+~w~Encárgate de los ~r~clientes~w~.
-[STFT_13]
-Mejor tiempo en el Control del Helicóptero del centro
+[SAL2_G4:SAL2]
+~w~¡Recoge a más ~b~chicas~w~!
-[STFT_14]
-Mejor tiempo en el Control del Helicóptero de Ocean Beach
+[SAL2_H:SAL2]
+~w~¿Dónde es la fiesta, corazón?
-[STFT_15]
-Mejor tiempo en el Control del Helicóptero de Vice Point
+[SAL2_P:SAL2]
+~w~¡Divertíos, chicos! Cortesía de Salvatore Leone...
-[STFT_16]
-Mejor tiempo en el Control del Helicóptero de Little Haití
+[SAL2_I0:SAL2]
+~w~¡Búscate otra chica, caraculo! ¡Ésta es mía!
-[STFT_21]
-Tiempo más rápido en Hotring
+[SAL2_I1:SAL2]
+~w~¡Eh! ¿Es que eres un mirón o qué?
-[STFT_22]
-Vuelta más rápida en Hotring
+[SAL2_I3:SAL2]
+~w~¡Eh! ¿Quién diablos es ése? ¡A por él!
-[STFT_20]
-Tiempo más rápido en el ''Conocircuito''
+[SAL2_I5:SAL2]
+~w~¡Eh, colega! ¡A la cola! Nosotros vamos primero.
-[HELP44]
-Detente en el ~q~marcador rosa.
+[SAL2_I7:SAL2]
+~w~¡Eres el mejor! ¡No pares...! ¡Ay, sí, cariño!
-[HELP45]
-Pulsa ~h~~k~~PED_DUCK~~w~ para agacharte. Esto aumentará tu puntería con las armas que llevas.
+[SAL2_I9:SAL2]
+~w~Pues ponte a trabajar...
-[RCR1_5]
-Carrera Bandit RC
+[SAL2_K0:SAL2]
+~w~¡No se juega con Toni Cipriani!
-[RCPL1_7]
-Carrera Barón RC
+[SAL2_K1:SAL2]
+~w~Venga. Vámonos.
-[RCH1_11]
-Recogidas del Raider RC
+[SAL2_K2:SAL2]
+~w~¡Vamos, tía! ¡Mueve el pandero!
-[FEA_CTD]
-¡Aviso! Esta característica requiere que el dispositivo compatible DTS esté conectado. ¿Continuar?
+[SAL2_C0:SAL2]
+~w~¡Eh! ¡Vuelve, cielo! Que no muerdo...
-[FEM_STE]
-UTILIZAR ESTÉREO
+[SAL2_C1:SAL2]
+~w~¡Eh, chico! ¿Adónde vas?
-[GREET]
-Saludos desde...
+[SAL2_L0:SAL2]
+~w~No voy a tirarme aquí todo el día, capullo.
-[LANCE_1]
-¡Venga, tío, conduce con más cuidado!
+[SAL2_L1:SAL2]
+~w~Voy a poner el taxímetro en marcha.
-[LANCE_2]
-¡Eh, mira lo que haces!
+[SAL2_X0:SAL2]
+~r~¡Se acabó el tiempo!
-[LANCE_3]
-¿Eh, dónde vamos ahora?
+[SAL2_X1:SAL2]
+~r~¡Has matado a demasiadas putas!
-[LANCE_4]
-¿Qué estamos haciendo ahora?
+[SAL2_X2:SAL2]
+~r~Has atacado a los estibadores. ¡Ahora no se fiarán de ti!
-[LAW4_15]
-¡Más dinero!
+[SAL2_X3:SAL2]
+~r~Has atacado a las chicas de los estibadores. ¡Ahora no se fiarán de ti!
-[MERC_5]
-Bonito coche, Mr. Vercetti.
+[SAL2_G5:SAL2]
+~w~Parece que te ha salido un admirador.
-[MERC_26]
-¡DEPRISA, DEPRISA, DEPRISA!
+[SAL2_I8:SAL2]
+~w~No querrás ir a la cárcel, ¿verdad, encanto?
-[MERC_27]
-Con cuidado Tommy, me arreglaron la nariz el mes pasado.
+[SAL2_I6:SAL2]
+~w~¡Sí! ¡Sí...!
-[MERC_28]
-Conduce con cuidado Tommy.
+[SAL2_M:SAL2]
+~w~¡Intenta no matarlas! Busca a otra ~b~chica~w~.
-[MERC_29]
-Ve más despacio Tommy.
+[SAL2_W1:SAL2]
+~w~¡Solo tienes hasta las 0~1~:~1~ antes de que el piquete cambie de turno!
-[MERC_30]
-Tommy, si no te importa mata a quien quieras menos a mí.
+[SAL2_W2:SAL2]
+~w~¡Solo tienes hasta las ~1~:~1~ antes de que el piquete cambie de turno!
-[MERC_31]
-¡Tommy, cielo, no me mates!
+[SAL2_G6:SAL2]
+~w~Detente en la ~y~señal amarilla~w~ para dejar a las chicas.
-[MERC_32]
-¡Tommy, me alegro que robaras este coche!
+[SAL2_G7:SAL2]
+~w~Molesta al cliente para que la ~b~chica~w~ salga del coche.
-[MERC_40]
-Me he divertido tanto.
+[SAL2_B:SAL2]
+~w~Ya no caben más chicas en el coche.
-[MERC_43]
-Adiós, mi ángel.
+{=================================== MISSION TABLE SAL3 ===================================}
-[MERC_44]
-Ahora sigue machacándote, me oyes.
+[SAL3_A0:SAL3]
+~w~¡Toni! ¿Cómo estás, chico?
-[MERC_45]
-Ciao, guapetón.
+[SAL3_A1:SAL3]
+~w~Pareces un poco delgado. ¿Tu mamá no te da bien de comer?
-[COL5_17]
-¡Oh, Dios mío, tienen un helicóptero!
+[SAL3_A2:SAL3]
+~w~Estoy bien, Sr. Leone.
-[COL5_18]
-¡Dispara al helicóptero!
+[SAL3_A3:SAL3]
+~w~Escucha, esos sindicalistas ya me están cabreando.
-[COL5_19]
-Tommy, ¡hazte con ese helicóptero!
+[SAL3_A5:SAL3]
+~w~pero tenemos que presionar un poco a los mandamases del sindicato, que son 'menos receptivos'.
-[COL5_20]
-¡Ahí viene otra vez! ¡Derriba a ese helicóptero!
+[SAL3_B0:SAL3]
+~w~Acojona a los ~r~mandamases~w~. Asegúrate de que capten la idea.
-[COL5_21]
-¡Mira el tamaño de ese helicóptero!
+[SAL3_B3:SAL3]
+~w~Así harán lo que les digamos a partir de ahora.
-[COL5_22]
-¡Ahí viene de nuevo!
+[SAL3_BA:SAL3]
+~w~¡Estás loco, tío! ¡No quiero más marrones!
-[FEA_DSM]
-¡Aviso! Esta partida guardada está configurada para utilizar DTS. Esto requiere que el dispositivo compatible DTS esté conectado. Por favor selecciona si quieres continuar usando el sistema DTS o ESTÉREO.
+[SAL3_CA:SAL3]
+~w~¿Qué haces? ¿Estás loco?
-[STFT_23]
-Tiempo más rápido en Punto de control Charlie
+[SAL3_DA:SAL3]
+~w~¡Solo me quedaba pagar dos letras del coche! ¡Hijo de puta!
-[HELP50]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para colocar la cámara detrás de ti.
+[SAL3_BB:SAL3]
+~w~¡Desde ahora harás lo que te digamos!
-[HELP51]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para colocar la cámara detrás de ti.
+[SAL3_CB:SAL3]
+~w~¡No te metas en los asuntos de los Leone!
-[HELP52]
-Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para colocar la cámara detrás de ti.
+[SAL3_A4:SAL3]
+~w~Parece que algunos empiezan a ver las cosas a mi manera...
-[HELP53]
-Pulsa ~h~~k~~PED_CYCLE_WEAPON_LEFT~~w~ o ~h~~k~~PED_CYCLE_WEAPON_RIGHT~~w~ para elegir entre todas tus armas disponibles.
+[SAL3_A6:SAL3]
+~w~¿Sabes a qué me refiero?
-[HELP46]
-Hay ocho categorías de armas diferentes.
+[SAL3_B1:SAL3]
+~w~No te puedes dejar entender si están muertos. No mates a más ~r~líderes sindicales~w~.
-[HELP47]
-Puedes llevar una arma de cada categoría al mismo tiempo: un tipo de pistola, un tipo de rifle.
+[SAL3_B2:SAL3]
+~r~¡Se supone que debes asustarlos, no matarlos!
-[HELP54]
-~w~Cuesta: ~1~ $. ~r~Si compras esta arma reemplazarás la actual.
+[SAL3_B4:SAL3]
+~w~Busca a otro ~r~líder sindical~w~ al que dejarle las cosas claras.
-[HELP2A2]
-Pulsa ~h~~k~~PED_SPRINT~~w~ cuando corras para ~h~esprintar.
+{=================================== MISSION TABLE SAL5 ===================================}
-[HLPSN_A]
-El rifle de francotirador te permite hacer zoom de acercamiento y disparar con más precisión a objetivos a una cierta distancia.
+[SAL5_D3:SAL5]
+~w~Mete el ~h~vehículo ~w~en el garaje.
-[HLPSN_B]
-Mantén pulsado ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar~w~ con el rifle de francotirador.
+[SAL5_D4:SAL5]
+~w~Baja del vehículo y sal del ~h~garaje~w~.
-[HLPSN_C]
-Mantén pulsado ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar~w~ con el rifle de francotirador.
+[SAL5_B:SAL5]
+~w~Consigue un vehículo de cuatro plazas y busca ~b~refuerzos~w~.
-[HLPSN_D]
-Pulsa ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ para ~h~acercar la vista ~w~con el rifle y ~h~~k~~PED_SNIPER_ZOOM_OUT~ ~w~para ~h~alejarla~w~.
+[SAL5_C:SAL5]
+~w~Necesitas un vehículo con cuatro plazas.
-[HLPSN_E]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ el rifle de francotirador.
+[SAL5_C0:SAL5]
+~w~Recoge a los ~b~refuerzos~w~.
-[HLPSN_F]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ el rifle de francotirador.
+[SAL5_C1:SAL5]
+~w~Necesitas un vehículo con más plazas para llevar más ~b~refuerzos~w~.
-[HLPSN_G]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ el rifle de francotirador.
+[SAL5_C2:SAL5]
+~w~Ve a los ~y~muelles de Portland~w~.
-[PLANE_H]
-Mueve ~h~~k~~VEHICLE_ACCELERATE~~w~ hacia delante para acelerar y a izquierda o derecha para girar.
+[SAL5_AA:SAL5]
+~w~Eh, colega... ¡Tenías que estar aquí hace horas!
-[PLANE_4] { reVC update }
-{Mueve ~h~~k~~VEHICLE_ACCELERATE~~w~ hacia delante para acelerar y a izquierda o derecha para girar.}
-Utiliza el joystick analógico derecho para acelerar, tira hacia atrás el joystick analógico izquierdo para ascender, empújalo hacia adelante para descender. Para girar muévelo a izquierda o derecha.
+[SAL5_AB:SAL5]
+~w~Basta de quejas, Miguel. ¿Tienes la mercancía?
-[HELP55]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para atacar al chef.
+[SAL5_AG:SAL5]
+~w~¿Tienes el dinero?
-[STPR_8]
-Club Pole Position
+[SAL5_AH:SAL5]
+~w~Claro...
-[STPR_9]
-3321 de Vice Point
+[SAL5_AI:SAL5]
+~w~¿Qué?
-[STPR_10]
-Apartamento de Links View
+[SAL5_AJ:SAL5]
+~w~¡Puto chicano!
-[STPR_11]
-Casa Swanko
+[SAL5_C8:SAL5]
+~w~¡Métete en el ~b~vehículo~w~ de las drogas y sal escopetado!
-[STPR_12]
-1102 de Washington Street
+[SAL5_C9:SAL5]
+~w~Lleva el vehículo al ~y~garaje de Salvatore~w~.
-[STPR_13]
-Apartamento de Ocean Heights
+[SAL5_D1:SAL5]
+~w~¡Vuelve al ~b~vehículo~w~!
-[STPR_14]
-Chabola Skumole
+[SAL5_D2:SAL5]
+~r~¡Las drogas se han echado a perder!
-[STPR_15]
-Piso de Hyman
+[SAL5_AF:SAL5]
+~w~¡Je, je, ja! Me gustas, Toni. ¡Tienes los huevos de un toro!
-[RCCANX]
-~r~Misión de avión RC cancelada.
+[SAL5_C3:SAL5]
+~w~¡Despista a la poli!
-[CLT_HL2]
-Cuando recojas ropa, te librarás de una o dos estrellas del nivel de se busca.
+[SAL5_D5:SAL5]
+~r~¡Han incautado las drogas!
-[CRED009]
-DISEÑO DE MISIONES
+[SAL5_AD:SAL5]
+~w~Eh, soy un hombre ocupado, Toni. ¡La próxima buscaré a otro comprador!
-[CRED359]
-LEE JOHNSON
+[SAL5_AE:SAL5]
+~w~Sí, pues no creo que encuentres a nadie que te pague lo que nosotros.
-[CRED360]
-HENDRIK LESSER
+[SAL5_D6:SAL5]
+~w~Acaba con los ~r~traficantes~w~.
-[CRED361]
-PASQUALE STACCHIOTTI
+[CONT_01:SAL5]
+Cierra la boca, puta desagradecida.
-[CRED362]
-ENRIQUE FERNÁNDEZ
+[CONT_06:SAL5]
+Sería la primera vez que me tocases en un mes.
-[CRED363]
-PAUL BYERS
+[CONT_07:SAL5]
+¿Y por qué cojones iba a tocarte?
-[CRED364]
-MIKE EMENY
+[CONT_08:SAL5]
+No me gusta el género usado.
-[CRED365]
-ROB DUNKIN
+[CONT_09:SAL5]
+Me das asco.
-[CRED366]
-CHARLIE KINLOCH
+[CONT_12:SAL5]
+Ay, por favor. ¿Sabes qué?
-[CRED367]
-KEVIN HOBSON
+[CONT_15:SAL5]
+Hola, Toni...
-[CRED368]
-JIM CREE
+[CONT_16:SAL5]
+¡Quiero mi dinero, viejo!
-[MOB_66A]
-Tommy, Tommy, ¿para qué has vuelto?
+[CONT_17:SAL5]
+Largo de aquí, pordiosera.
-[MOB_66B]
-Ya te he dicho que no queremos verte más.
+[CONT_18:SAL5]
+Eh, Anthony, eres mi ángel de la guarda.
-[MOB_67A]
-Tommy, creo que no deberías acercarte, ¿me oyes?
+[CONT_19:SAL5]
+Mujeres, ¿qué se puede esperar de ellas, eh?
-[MOB_67B]
-Los chicos haitianos no están muy contentos contigo.
+[CONT_20:SAL5]
+Por suerte, al menos puedo confiar en alguien. En ti, Toni.
-[MOB_18A]
-Tommy, soy Paulo, ¿cómo estás? Vale hombre, bueno pensé que tenía que mandarte una nota.
+[CONT_21:SAL5]
+Eres muy importante para mí. ¿Alguna vez te lo he dicho?
-[MOB_18B]
-Oh Dios misericordioso, hijo mío, no te vas a creer la categoría de la furcia que acabo de conocer.
+[CONT_22:SAL5]
+¡No se te levanta ni con grúa, viejo de mierda!
-[MOB_18C]
-Prostituta callejera o algo parecido, cerca de Little Havana, tío.
+[CONT_23:SAL5]
+Contigo no. No me van los retretes públicos, so zorra.
-[MOB_18D]
-Me dijo que se llamaba Mercedes o algo así.
+[CONT_24:SAL5]
+Muy importante, escucha bien. Ahora mandamos tú y yo.
-[MOB_18E]
-Oh Dios, tío, tienes que probar a esa palomita.
+[CONT_25:SAL5]
+Estamos echando a esos gilipollas.
-[MOB_18F]
-Sabe como ponerte a tono. Dijo que yo era el mejor tío con el que había estado en toda su vida.
+[CONT_26:SAL5]
+¿Echándolos? ¿Con lo que a ti te gusta pasar el rato con hombres?
-[MOB_18G]
-Estate al tanto por si la ves. Hasta luego.
+[CONT_27:SAL5]
+Y tú solo estás contenta cuando tienes las bragas en los tobillos...
-[MOB_72A]
-Tommy, soy yo, Lance. Mantén la boca cerrada Tommy porque no tengo ganas de hablar.
+[CONT_28:SAL5]
+¡y la espalda apoyada en la pared!
-[MOB_72B]
-No estoy interesado en lo que tengas que decir. ¿Por qué debería estarlo? ¿Te preocupas tú por mí?
+[CONT_29:SAL5]
+Dios. ¡Sé de conejos que follarían menos que tú!
-[MOB_72C]
-Tienes que cuidarme un poco mejor. Darme una buena tajada, ya sabes...
+[CONT_33:SAL5]
+En fin, está al llegar un cargamento de lo que tú ya sabes.
-[MOB_72D]
-Tommy... oh, mira, tío, Lo siento. Es solo que...
+[CONT_34:SAL5]
+Esto nos va a poner a ti y a mí en la cresta de la ola.
-[MOB_72E]
-La gente me ha estado sobreprotegiendo toda mi vida, tratándome como a un niño.
+[CONT_35:SAL5]
+Todo tendría que ir como la seda.
-[MOB_72F]
-Mi hermano haría eso. Por favor, tío, no lo hagas.
+[CONT_36:SAL5]
+Pero necesito a alguien, alguien de confianza, que se encargue de esto.
-[MOB_72G]
-Tengo que irme.
+[CONT_37:SAL5]
+Muy bien, Toni, luego hablamos.
-[MOB_63A]
-Tommy, soy Earnest. Earnest Kelly.
+[CONT_38:SAL5]
+Además, nunca había visto a nadie con ropa interior con suspensión.
-[MOB_63B]
-¿Cómo estás?
+[CONT_39:SAL5]
+¡Diablos! ¿Por qué me casaría con ella?
-[MOB_63C]
-Estoy bien. Necesitaré un bastón para andar pero muy pronto volveré al trabajo.
+[CONT_40:SAL5]
+¡Buscaba una guarra y me casé con una puta!
-[MOB_63D]
-Bien.
+[CONT_41:SAL5]
+Tengo que haber puteado bien a alguien en mi otra vida,
-[MOB_63E]
-Me enteré de lo de Lance. Vaya cabroncete, ¿eh?
+[CONT_42:SAL5]
+vaya que sí.
-[MOB_63F]
-Sí.
+[CONT_02:SAL5]
+- Si vuelves a abrirla, te vas a enterar de lo que vale un peine. ~n~ - Vaya, muy bien, machote.
-[MOB_63G]
-No te fíes nunca de un hombre que va por la calle en pijama. Y es lo que digo yo. Menos mal que lo mataste. Espero que el mamón sufriera.
+[CONT_04:SAL5]
+- ¿Y qué harás? ¿Pegarme? ~n~ - Debería hacerlo...
-[MOB_63H]
-Creo que sí. Lo que pasa es que yo no creí que...
+[CONT_10:SAL5]
+- ¿Que te doy asco? ~n~ - ¡Sí, asco!
-[MOB_63I]
-Tommy, para ser un chalado furioso, eres bastante ingenuo. Cuando vuelva a trabajar pronto te enseñaré un par de cosas sobre la vida, me oyes.
+[CONT_13:SAL5]
+- Papá tenía razón cuando decía que no eras más que un cerdo... ~n~ - Sí, sí, sí, sí...
-[MOB_63J]
-Tómate tu tiempo, Earnest. Cuídate.
+[CONT_43:SAL5]
+- Así que escucha, es importante... ~n~ - Que te jodan, Salvatore Leone,
-[MOB_16A]
-Tommy, soy Paulo, ¿qué pasa amigo?
+[CONT_31:SAL5]
+eunuco italianini, maltratador de mierda. ~n~ - ¿Que me jodan? ¡Que te jodan a ti! ¡Ya lo habrán hecho todos!
-[MOB_16B]
-Qué quieres Paul. No necesito ropa de marca de imitación.
+{=================================== MISSION TABLE SAL4 ===================================}
-[MOB_16C]
-Muy gracioso, tío, pero sabes que no toco nada de mercancía ilegal. No, sólo llamaba para ver si puedo conseguir un papel en una de tus películas.
+[SAL4_I1:SAL4]
+~w~Esta huelga continuará hasta que la ciudad me dé más garantías.
-[MOB_16D]
-Allí en Inglaterra hice un montón de porno, colega. Soy bastante más ardiente que tú, pequeño.
+[SAL4_I2:SAL4]
+~w~Las mafias creen que pueden controlar el sindicato. ¡Ya pueden decir misa!
-[MOB_16E]
-Paul, gracias por la oferta, lo tendré en cuenta.
+[SAL4_I3:SAL4]
+~w~¡No me asustan!
-[MOB_16F]
-En serio, después de todo lo que he hecho por ti, no te olvides de mí.
+[SAL4_I4:SAL4]
+~w~¡Tengo más huevos que todos ellos juntos!
-[MOB_16G]
-Eso es lo que intento olvidar.
+[SAL4_I5:SAL4]
+~w~Lo que hay que oír...
-[MOB_17A]
-Tommy Vercetti, ¿Qué tal te va Sr. Influyente? He oído un montón de cosas sobre ti, así que ahora eres el que manda en la ciudad, eh...
+[SAL4_I6:SAL4]
+~w~Debería liquidar a esa zorra. ¡Me está haciendo la cama!
-[MOB_17B]
-Paul, estás borracho.
+[SAL4_I7:SAL4]
+~w~Bueno, a eso pueden jugar dos...
-[MOB_17C]
-No, imbécil, no estoy borracho. Sólo he tomado un par de copas y alguna que otra invitación, no me he acostado en los dos últimos días, sabes.
+[SAL4_I8:SAL4]
+~w~Toni, vas entregar un mensaje de mi parte.
-[MOB_17D]
-En cualquier caso, no me vengas con esto. No soy tonto. ¿Quién te estableció en esta ciudad? ¿Quién? Yo. Que te enteres.
+[SAL4_A2:SAL4]
+~w~Ahora quita al ~r~chófer~w~ de la ecuación...
-[MOB_17F]
-¿De verdad?
+[SAL4_A3:SAL4]
+~w~¡Eh!
-[MOB_17G]
-No me vengas con esto. Yo te presenté a la gente. Te enseñé cómo hacer bien los trabajos, hice muchas cosas por ti, y así es como me lo pagas.
+[SAL4_A4:SAL4]
+~w~Sube a la ~b~limusina~w~.
-[MOB_17H]
-Me ignoras. Ni siguieras me das acceso a nada, después de todo lo que hice por ti. ¿Quién te crees que soy? ¿Un retrasado mental o algo así?
+[SAL4_A5:SAL4]
+~w~Lleva la limusina a la ~y~emisora~w~.
-[MOB_17I]
-Paul, tranquilízate. He estado muy ocupado, no te comportes como un idiota..
+[SAL4_A6:SAL4]
+~w~Espera a que salga Hopper.
-[MOB_17J]
-No soy un idiota, colega. Eso es lo que decían en el reformatorio. ¿Estás buscando bronca? ¡Porque la vas a tener!
+[SAL4_A7:SAL4]
+~w~Vuelve a poner la limusina en la posición correcta. Hopper no debe sospechar nada.
-[MOB_17K]
-Tommy, colega. Por favor. ¡Tú eras mi gran esperanza! Por favor, ¡no te rías de mí!
+[SAL4_B1:SAL4]
+~w~Al ferry de Harwood, ¡y pise a fondo!
-[MOB_17L]
-Paul, vete a dormir un poco, de verdad.
+[SAL4_B2:SAL4]
+~w~¡Como mande!
-[MOB_73A]
-Tommy, soy Steve.
+[SAL4_C1:SAL4]
+~w~¡Acojona a Hopper!
-[MOB_73B]
-Eh, Steve.
+[SAL4_C2:SAL4]
+Susto
-[MOB_73C]
-¡Eres un portento! ¡Soy un portento! La gente está loca por nosotros. Vamos a entrar en la historia, amigo.
+[SAL4S1:SAL4]
+~w~¡Tranquilo, esto no es una carrera!
-[MOB_73D]
-Se trata de los premios más importantes. Podré llevar a mi padre a una residencia y no tener que escucharle nunca más.
+[SAL4S2:SAL4]
+~w~¿Seguro que se va por aquí?
-[MOB_73E]
-Eso está bien, Steve.
+[SAL4S3:SAL4]
+~w~¡Usted no es el chófer de siempre!
-[MOB_73F]
-Mejor que bien tío. Mejor, mucho mejor. Nunca creyó en mí. Nunca creyó que pudiera ser un artista y ahora lo he conseguido.
+[SAL4S4:SAL4]
+~w~¿Quién diablos es usted?
-[MOB_73G]
-Soy el mejor director de cine porno de todos los tiempos, amigo. Solo quería decirte que ha sido un placer conocerte.
+[SAL4S5:SAL4]
+~w~¡Cierra la boca!
-[MOB_73H]
-Gracias Steve.
+[SAL4S6:SAL4]
+~w~Desde ahora, harás exactamente lo que te diga Salvatore Leone.
-[MOB_73I]
-Te quiero tío, No cambies, me oyes.
+[SAL4S7:SAL4]
+~w~¿Capisci?
-[MOB_73J]
-Te oigo. Adiós Steve.
+[SAL4S8:SAL4]
+~w~¡Me... me niego a asustarme por esto!
-[BOLLOX]
-Pulsa ~h~~k~~VEHICLE_HANDBRAKE~ ~w~para soltar una bomba. Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~para cancelar.
+[SAL4S9:SAL4]
+~w~¡Ya veremos!
-[BRID_OP]
-El temporal ha pasado, todos los puentes hacia la península están ahora abiertos.
+[SAL4S10:SAL4]
+~w~¡Déjeme salir ahora mismo!
-[BRID_CL]
-Alerta de temporal: Cerrados todos los puentes hacia la península.
+[SAL4S11:SAL4]
+~w~¡Por favor! ¡Nos vamos a matar!
-[ASSET_C]
-¡CLUB POLE POSITION CONSOLIDADO!
+[SAL4S12:SAL4]
+~w~¡Noooooo!
-[ASSET_D]
-El club Pole Position generará ahora unos ingresos máximos de hasta ~1~ $ al día. ¡Asegúrate de recaudarlos regularmente!
+[SAL4S13:SAL4]
+~w~¿Qué he hecho yo para merecer esto?
-[ST_WHEE]
-Mayor tiempo en caballito (seg)
+[SAL4_F1:SAL4]
+~w~¿Dónde está mi limusina?
-[ST_STOP]
-Mayor tiempo en parada (seg)
+[SAL4_F2:SAL4]
+~w~Usted no es mi chófer, ¡voy a llamar a la policía!
-[ST_2WHE]
-Mayor tiempo en dos ruedas (seg)
+[SAL4_F3:SAL4]
+~r~¡Es tarde, Hopper te ha descubierto!
-[ST_WHED]
-Mayor distancia en caballito (m)
+[SAL4_F4:SAL4]
+~w~¡Que se joda Salvatore!
-[ST_STOD]
-Mayor distancia en parada (m)
+[SAL4_F5:SAL4]
+~r~¡La limusina está destrozada!
-[ST_2WHD]
-Mayor distancia en dos ruedas (m)
+[SAL4_F6:SAL4]
+~r~¡Hopper ha muerto!
-[OUTFT11]
-Chándal
+[SAL4_F7:SAL4]
+~r~¡Hopper se ha escapado!
-[OUTFT12]
-Frankie
+[SAL4_F8:SAL4]
+~r~Los golpes han asustado a Hopper.
-[RELOAD]
-~g~¡Has conseguido la habilidad de recargar rápidamente!
+[SAL4_F9:SAL4]
+~r~Hopper se ha asustado.
-[APACHE]
-Hunter entregado en el helipuerto de Ocean Beach.
+[SAL4_P1:SAL4]
+~w~¡Vale! ¡Vale! ¡Ya tengo bastante!
-[CRED369]
-JOHN MCCARDLE
+[SAL4P1A:SAL4]
+~w~Haré lo que queráis.
-[CRED370]
-DAVID MURDOCH
+[SAL4_P2:SAL4]
+~w~Lleva a Hopper al ~y~piquete del ferry~w~.
-[CRED371]
-CHRIS BROWN
+[SAL4_P3:SAL4]
+~w~Y no olvide nuestro pequeño trato, señorita...
-[CRED372]
-PAUL GREEN
+[SAL4_H1:SAL4]
+~w~Una combinación de velocidad, choques y saltos acrobáticos asustará a Hopper y la hará entrar en razón.
-[CRED373]
-KYLE MILNE
+[SAL4_F0:SAL4]
+~r~¡Demasiado tarde! ¡Hopper ya ha salido de la emisora!
-[CRED374]
-KEVIN YUN
+[SAL4_A:SAL4]
+~w~Llega a la ~y~emisora de radio~w~ antes de que Hopper salga a las 0~1~:00.
-[CRED375]
-ERICK COBBS
+[SAL4_A1:SAL4]
+~w~Llega a la ~y~emisora de radio~w~ antes de que Hopper salga a las ~1~:00.
-[CRED376]
-RANDY BLAKE
+{=================================== MISSION TABLE SAL6 ===================================}
-[CRED377]
-BRANDON LIM
+[SAL6_A0:SAL6]
+~w~Toni, tenemos problemas, ¡y gordos!
-[CRED378]
-BRANDON FENOL
+[SAL6_A1:SAL6]
+~w~¿Qué pasa, Sal?
-[CRED379]
-MICHAEL MANOLE
+[SAL6_A3:SAL6]
+~w~¡Nos están dando una buena!
-[CRED380]
-ALETHEIA SIMONSON
+[SAL6_A4:SAL6]
+~w~Acabamos una maldita guerra y ¡BANG, nos vemos metidos en otra!
-[CRED381]
-JOHN JANSEN
+[SAL6_A5:SAL6]
+~w~Hay que ver, justo cuando la cosa empezaba a marchar. ¡Tengo la negra! ¡La puta negra!
-[CUNTY]
-¡Ropa nueva entregada en la finca de Vercetti!
+[SAL6_A6:SAL6]
+~w~¡Eh! No se preocupe ni un pelo, jefe. Yo me encargo.
-[GOODBOY]
-¡Prima de 50 $ por comportamiento ejemplar!
+[SAL6_AA:SAL6]
+~w~Sal te ha dejado armas en el garaje.
-[NEWCONT]
-¡Nuevo ~h~punto de contacto ~w~disponible en el puerto deportivo en Ocean Beach!
+[SAL6_B:SAL6]
+~w~¡Detén el ataque de los ~r~Diablos~w~ antes de que mueran todos los Leone!
-[FIRELVL]
-Misión de camión de bomberos nivel ~1~
+[SAL6_1:SAL6]
+~w~¡Solo quedan con vida ~1~ Leone!
+[SAL6_2:SAL6]
+~w~¡Solo queda con vida 1 Leone!
-[HELP56]
-Pulsa ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ para ajustar la cámara.
+[SAL6_C1:SAL6]
+~w~¡Nos están masacrando, Toni!
-[HELP57]
-Pulsa ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~ para ajustar la cámara.
+[SAL6_C2:SAL6]
+~w~¡No me pagan bastante para esta mierda, tío!
-[HELP58]
-Mientras estás apuntando, puedes pulsar ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~ o ~h~~k~~PED_CYCLE_TARGET_RIGHT~~w~para cambiar de objetivo.
+[SAL6_C3:SAL6]
+~w~¡Estás loco, Toni! ¡Vamos a morir todos!
-[HELP59]
-Mientras estás apuntando, puedes pulsar ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~ o ~h~~k~~PED_CYCLE_TARGET_RIGHT~~w~para cambiar de objetivo.
+[SAL6_E1:SAL6]
+~w~¿Sal?
-[HELP60]
-Si pulsas ~h~~k~~PED_SPRINT~ ~w~ mientras estás robando un coche, no te subirás en él.
+[SAL6_E2:SAL6]
+~w~¡Toni! ¿Ya está? ¿Cómo ha ido?
-[HELP61]
-Ahora dispones de munición ilimitada y el doble de robustez en todos los vehículos.
+[SAL6_E3:SAL6]
+~w~No muy bien, Sal.
-[FEC_LB1]
-Mirar
+[SAL6_E4:SAL6]
+~w~He salvado a unos cuantos, pero perdimos a muchos antes de llegar yo.
-[FEC_LB2]
-detrás
+[SAL6_E5:SAL6]
+~w~Creo que vamos a perder esa parte de la ciudad.
-[FEC_LB3]
-Mirar detrás
+[SAL6_E6:SAL6]
+~w~¡Por encima de mi cadáver! ¡Esto no ha terminado!
-[FEC_R3]
-(botón R3)
+[SAL6_E7:SAL6]
+~w~¡No perderé una mierda! ¡Los Leone no se retiran!
-[FEC_PED]
-Controles a pie
+[SAL6_E8:SAL6]
+~w~¿Me oyes, Toni?
-[FEC_VEH]
-Controles en vehículo
+[SAL6_E9:SAL6]
+~w~Lo que tú digas, Sal.
-[FEC_FPR]
-Controles en primera persona
+[SAL6_G0:SAL6]
+~r~Han muerto todos los Leone.
-[FEC_CMM]
-Controles comunes
+[SAL6_Z1:SAL6]
+Leone
-[FEC_PWL]
-Ir a la izquierda
+[SAL6_Z2:SAL6]
+Diablos
-[FEC_PWR]
-Ir a la derecha
+[SAL6_X0:SAL6]
+Got threat
-[FEC_PWF]
-Andar hacia delante
+[SAL6_X1:SAL6]
+Had threat
-[FEC_PWT]
-Andar hacia la cámara
+[SAL6_X2:SAL6]
+Find threat
-[FEC_PLB]
-Mirar hacia atrás.
+[SAL6_X3:SAL6]
+Complain
-[FEC_PFR]
-Disparar arma
+[SAL6_C0:SAL6]
+~w~¡Que les jodan! ¡Salgamos de aquí cagando leches!
-[FEC_CLE]
-Cambiar Arma a la Izq.
+[SAL6_A2:SAL6]
+~w~¿Adónde iremos a parar? ¡Los Diablos nos atacan por todas partes en Hepburn!
-[FEC_CRI]
-Cambiar Arma a la Dcha.
+{=================================== MISSION TABLE SAL7 ===================================}
-[FEC_LKT]
-Bloquear objetivo
+[SAL7_01:SAL7]
+~w~¡Eh, Sal!
-[FEC_PJP]
-Salto Peatón
+[SAL7_02:SAL7]
+~w~¡Toni! ¿Qué te parece el nuevo coche?
-[FEC_PSP]
-Sprint Peatón
+[SAL7_05:SAL7]
+~w~Una belleza, ¿no? Todo lujo, el mejor de la serie...
-[FEC_PSH]
-Disparar Peatón
+[SAL7_A6:SAL7]
+~w~¡Ah! ¡La crisis de los cincuenta!
-[FEC_TLF]
-Siguiente objetivo a la izq.
+[SAL7_07:SAL7]
+~w~¡Cállate! Escucha, Toni.
-[FEC_TRG]
-Siguiente objetivo a la dcha.
+[SAL7_08:SAL7]
+~w~Tengo la polla de dinero que hay que recoger en mi almacén, en Callahan Point.
-[FEC_CCM]
-Centrar cámara detrás del jugador
+[SAL7_10:SAL7]
+~w~No me fío de otro para esto.
-[FEC_SZI]
-Acercar vista rifle francotirador
+[SAL7_11:SAL7]
+~w~Chicas, ¿charlamos todo el día o nos vamos?
-[FEC_SZO]
-Alejar vista rifle francotirador
+[SAL7_12:SAL7]
+~w~¡Que te zurzan, mujer! ¿Quién te ha dicho que podías hablar?
-[FEC_LKL]
-Mirar izq. en primera persona
+[SAL7_20:SAL7]
+~w~¡Vamos! ¡Deprisa!
-[FEC_LRT]
-Mirar dcha. en primera persona
+[SAL7_21:SAL7]
+~w~Vale...
-[FEC_LUP]
-Mirar arr. en primera persona
+[SAL7_22:SAL7]
+~w~¡Venga!
-[FEC_LDN]
-Mirar abj. en primera persona
+[SAL7_23:SAL7]
+~w~¡Eh, Toni! ¿Come stai?
-[FEC_LBH]
-Mirar hacia atrás en vehículo
+[SAL7_30:SAL7]
+~w~Ve al ~y~almacén~w~.
-[FEC_LLF]
-Mirar a la izq. en vehículo
+[SAL7_40:SAL7]
+~w~¡Recoge el dinero de Salvatore antes de que se queme!
-[FEC_LRG]
-Mirar a la dch. en vehículo
+[SAL7_50:SAL7]
+~w~Lleva el botín a casa de ~y~Salvatore~w~.
-[FEC_HRN]
-Claxon
+[SAL7_NM:SAL7]
+~w~¡Vuelve! Aún no tienes todo el ~g~dinero~w~.
-[FEC_HBR]
-Freno de mano del vehículo
+[SAL7_E1:SAL7]
+~w~¡Matadlo!
-[FEC_ACL]
-Acelerar vehículo
+[SAL7_E2:SAL7]
+~w~¡Muere!
-[FEC_BRK]
-Frenar vehículo
+[SAL7_E3:SAL7]
+~w~¡Solo es uno!
-[FEC_TSM]
-Misiones secundarias
+[SAL7_E4:SAL7]
+~w~¡Ya le veo!
-[FEC_CRD]
-Cambiar emisora de radio
+[SAL7_T1:SAL7]
+~w~¡Atrás!
-[FEC_ENT]
-Entrar/salir de vehículo
+[SAL7_T2:SAL7]
+~w~¿Y ahora cómo te sientes?
-[FEC_WPN]
-Disparar arma
+[SAL7_T3:SAL7]
+~w~¡Vamos!
-[FEC_PAS]
-Pausa
+[SAL7_T4:SAL7]
+~w~¡Chúpate ésa!
-[FEC_FPO]
-Cambiar armas primera persona
+[SAL7_F1:SAL7]
+~r~¡No has recogido todo el dinero de Salvatore a tiempo!
-[FEC_SMS]
-Mostrar puntero del ratón
+[SAL7_06:SAL7]
+~w~¿Qué es ese olor?
-[FEC_CMS]
-Cambiar modo cámara en todas situaciones.
+[SAL7_42:SAL7]
+~w~¡Recoge el ~g~dinero~w~ antes de que se queme!
-[FEC_TSS]
-Capturar pantalla
+{=================================== MISSION TABLE SAL8 ===================================}
-[FEC_DBG]
-DEBUG MENU
+[SAL8_VE:SAL8]
+~r~V 1.2
-[FEC_TGD]
-Cambiar mando de juego/depuración
+[SAL8_11:SAL8]
+~w~Toni, consigue un coche y vámonos...
-[FEC_TDO]
-Cambiar cámara depuración No
+[SAL8_12:SAL8]
+~w~Dirígete a la terminal del ferry.
-[FEC_IVH]
-Invertir horizontalidad ratón
+[SAL812A:SAL8]
+~w~Pero la huelga sigue... No habrá ferris.
-[FEC_MSL]
-BIR
+[SAL812B:SAL8]
+~w~Tú conduces. Yo pienso.
-[FEC_MSM]
-BCR
+[SAL8_14:SAL8]
+~w~¡Dios Santo! ¡Está infestado de policías! ¡Salgamos cagando leches!
-[FEC_MSR]
-BDR
+[SAL8_15:SAL8]
+~w~¿Adónde vamos?
-[FEC_QUE]
-???
+[SAL8_16:SAL8]
+~w~¡Al puente Callahan!
-[FEC_TWO]
-Permitidas sólo dos teclas del teclado.
+[SAL816A:SAL8]
+~w~Pero si el puente aún no está acabado...
-[FEC_UMS]
-Por favor sólo teclas de ratón.
+[SAL816B:SAL8]
+~w~¡Nosotros sí que estaremos acabados si no conduces! ¡Písale!
-[FEC_OMS]
-Permitida sólo una tecla del ratón.
+[SAL816C:SAL8]
+~w~Dirígete al ~y~puente Callahan~w~.
-[FEC_UJS]
-Por favor sólo botones de joystick.
+[SAL8_17:SAL8]
+~w~¿Qué diablos haces?
-[FEC_OJS]
-Permitido sólo un botón de joystick por acción.
+[SAL8_18:SAL8]
+~w~¡Toni! ¡Vamos a necesitar un coche!
-[FEC_PTL]
-Usar Bloquear objetivo al cambiar arma a izq.
+[SAL818A:SAL8]
+~w~¡No pienso ir andando!
-[FEC_PTR]
-Usar Bloquear objetivo al cambiar arma a dcha.
+[SAL8_19:SAL8]
+~w~Has dejado atrás a ~b~Salvatore~w~. ¡Vuelve y recógelo!
-[FEC_LBC]
-Usar Mirar a izq. con Mirar a la dcha.
+[SAL8_20:SAL8]
+~w~¡Sácanos de aquí!
-[FEC_JBO]
-JOY ~1~
+[SAL8_22:SAL8]
+~w~¡Lo has logrado, Toni! ¡Sabía que podía confiar en ti!
-[FEC_WAR]
-Aviso
+[SAL822B:SAL8]
+Escucha, sé de un lugar seguro donde podemos escondernos un tiempo.
-[FEC_OKK]
-Aceptar
+[SAL822C:SAL8]
+Venga, en marcha.
-[FEC_DLF]
-Error al borrar.
+[SAL8_25:SAL8]
+~w~¡Vamos a necesitar que este trasto lo dé todo de sí! ¡Pisa a fondo, Toni!
-[FEC_SVU]
-Error al guardar.
+[SAL825A:SAL8]
+~w~¡OH, MIEEEERDA!
-[FEC_LUN]
-Error al cargar. Archivo dañado, por favor bórralo.
+[SAL8_26:SAL8]
+Velocidad del salto
-[FEC_PAD]
-Gamepad
+[SAL8_27:SAL8]
+~w~Sí, aquí es.
-[FEC_JOY]
-Joystick
+[SAL8_28:SAL8]
+~w~Voy a echar un vistazo, a ver qué se cuece.
-[FES_CSA]
-Seleccionar aspecto de la lista inferior:
+[SAL828A:SAL8]
+~w~Puede que luego nos veamos.
-[FET_HRD]
-AJUSTES POR DEFECTO RESTAURADOS
+[SAL8_29:SAL8]
+~r~¡Sal ha muerto!
-[FET_MST]
-CONDUCCIÓN CONTROLADA POR EL RATÓN
+[SAL829A:SAL8]
+~w~¡La poli te ha descubierto!
-[FEC_STR]
-NUM. INICIO
+[SAL831:SAL8]
+~w~Ya está disponible el piso franco de Staunton.
-[FET_MIG]
-IZQUIERDA, DERECHA, RUEDA DEL RATÓN PARA AJUSTAR
+[SAL833:SAL8]
+~w~¡Escapa de la poli!
-[FET_CIG]
-RETROCESO PARA QUITAR - BIR, VOLVER A CAMBIAR
+[SAL823A:SAL8]
+~w~¿O no?
-[FET_DSN]
-Apariencia predeterminada del jugador.bmp
+[SAL8_24:SAL8]
+~w~Aunque las líneas del metro y el ferry ya están abiertas oficialmente,
-[FET_RSO]
-RESTAURADO AJUSTE ORIGINAL
+[SAL824A:SAL8]
+~w~trabajadores militantes siguen con el bloqueo en partes de la ciudad.
-[FET_RSC]
-HARDAWARE NO DISPONIBLE. RESTAURADO AJUSTE ORIGINAL
+[SAL824B:SAL8]
+~w~El puente levadizo que conecta Staunton Island y Shoreside Vale permanece cerrado.
-[FEA_3DH]
-HARDWARE DE SONIDO
+[SAL824C:SAL8]
+~w~Los huelguistas se niegan a dar crédito a las garantías dadas por el ayuntamiento sobre el futuro de los ferris.
-[FEA_SPK]
-AJUSTE DE ALTAVOCES
+[SAL824D:SAL8]
+~w~Como nota positiva, el nuevo puente Callahan está casi a punto.
-[FEM_LOD]
-DIST. DE REPRESENTACIÓN
+[SAL824E:SAL8]
+~w~Pero este viajero de Liberty City no puede permitirse más retrasos.
-[FEM_VSC]
-SINCRONÍA DE IMAGEN
+[SAL8_23:SAL8]
+~w~Las protestas de los trabajadores, que habían aislado Portland del resto de la ciudad, han terminado por fin.
-[FEM_FRM]
-LIMITADOR DE CUADROS
+[SAL812C:SAL8]
+~w~Ve a la ~y~terminal del ferry~w~.
-[FEM_MM]
-MENÚ PRINCIPAL
+[SAL8WAN:SAL8]
+¡La poli se ha emperrado con Salvatore! Repintar el vehículo solo la despistará un rato.
-[FED_RES]
-RESOLUCIÓN DE PANTALLA
+[SAL8_21:SAL8]
+~w~Ve al ~y~puente~w~.
-[FET_CTL]
-CONFIGURAR MANDO
+[SAL830:SAL8]
+~w~Ve al ~y~piso franco~w~.
-[FET_OPT]
-OPCIONES
+[SAL822A:SAL8]
+~w~¡Te besaría si te hubieras afeitado!
-[FEC_MSH]
-SENSIBILIDAD DEL RATÓN
+[SAL832:SAL8]
+~w~¡Necesitas un vehículo!
-[FEC_IVV]
-INVERTIR VERTICALIDAD RATÓN
+[DRIV_01:SAL8]
+¿Y bien?
-[FEC_FNC]
-F~1~
+[DRIV_02:SAL8]
+¿Y bien qué?
-[FEC_IRT]
-INSERT
+[DRIV_03:SAL8]
+No te hagas el tonto conmigo, chico.
-[FEC_DLL]
-SUPR
+[DRIV_06:SAL8]
+Sé lo que has ido diciendo de mí.
-[FEC_HME]
-INICIO
+[DRIV_07:SAL8]
+Crees que me chupo el dedo, ¿eh?
-[FEC_END]
-FIN
+[DRIV_08:SAL8]
+¿Eso te crees?
-[FEC_PGU]
-RE PÁG
+[DRIV_09:SAL8]
+Jefe, yo no he ido diciendo nada de usted.
-[FEC_PGD]
-AV PÁG
+[DRIV_10:SAL8]
+Qué cojones. Ni yo sé qué me está pasando.
-[FEC_UPA]
-ARRIBA
+[DRIV_11:SAL8]
+Jesús.
-[FEC_DWA]
-ABAJO
+[DRIV_12:SAL8]
+Me estoy volviendo paranoico, Toni. Un puto paranoico.
-[FEC_LFA]
-IZDA
+[DRIV_13:SAL8]
+Que yo crea que todos me odian no significa que no sea así, ¿sabes a qué me refiero?
-[FEC_RFA]
-DCHA
+[DRIV_14:SAL8]
+Alguien viene a por mí. ¡Es ese maldito alcalde!
-[FEC_NUM]
-NUM.
+[DRIV_15:SAL8]
+Quiere cargarme el muerto por toda la mierda que corre por el barrio.
-[FEC_NMN]
-NUM. ~1~
+[DRIV_16:SAL8]
+¡Por toda! No solo la mía, sino la de todos.
-[FEC_FWS]
-NUM. /
+[DRIV_17:SAL8]
+Venga, vamos a ocuparnos de esto.
-[FEC_PLS]
-NUM. +
+[DRIV_04:SAL8]
+- Yo ya sabía de eso cuando tu madre hacía la calle. ~n~ - ¿Qué mosca le ha picado?
-[FEC_MIN]
-NUM. -
+{=================================== MISSION TABLE JDT1 ===================================}
-[FEC_DOT]
-NUM. .
+[JDT1_CA:JDT1]
+~w~Creo que las chicas me están robando.
-[FEC_NLK]
-BLOQ NUM
+[JDT1_CB:JDT1]
+~w~Vamos a 'apatrullar' el barrio, a ver qué pescamos.
-[FEC_ETR]
-INTRO
+[JDT1_DA:JDT1]
+~w~¡Ésa es una de mis chicas!
-[FEC_SLK]
-BLOQ DESPL
+[JDT1_DB:JDT1]
+~w~¡Eh! Reconozco a esa chica.
-[FEC_PSB]
-PAUSA INTER
+[JDT1_DC:JDT1]
+~w~¡Es una de mis chicas!
-[FEC_BSP]
-RETROCESO
+[JDT1_DD:JDT1]
+~w~Esa chica es de las nuestras.
-[FEC_TAB]
-TAB
+[JDT1_DE:JDT1]
+~w~Esa chica de allí...
-[FEC_CLK]
-BLOQ MAYÚS
+[JDT1_DF:JDT1]
+~w~Para cerca de ella.
-[FEC_RTN]
-INTRO
+[JDT1_DG:JDT1]
+~w~Ponte a su lado.
-[FEC_LSF]
-MAYÚS IZQ
+[JDT1_DH:JDT1]
+~w~Vamos hasta ella.
-[FEC_RSF]
-MAYÚS DCH
+[JDT1_DI:JDT1]
+~w~Aparca junto a ella.
-[FEC_LCT]
-CTRL I
+[JDT1_DJ:JDT1]
+~w~Ve hasta ella.
-[FEC_RCT]
-CTRL D
+[JDT1_MA:JDT1]
+~w~Hola, J.D. ¡Iba a llevarte esto, de verdad!
-[FEC_LAL]
-ALT I
+[JDT1_MB:JDT1]
+~w~¡Dios! ¿Es que ya no te fías de mí, J.D.?
-[FEC_RAL]
-ALT D
+[JDT1_MC:JDT1]
+~w~Eh, J.D. Ha sido un día muy malo... Esto es todo lo que tengo.
-[FEC_LWD]
-WIN I
+[JDT1_MD:JDT1]
+~w~¡"El Gran Hermano te vigila"! ¡Toma el puto dinero!
-[FEC_RWD]
-WIN D
+[JDT1_ME:JDT1]
+~w~Eh, J.D. Tengo el dinero justo aquí.
-[FEC_WRC]
-APMENÚ
+[JDT1_MF:JDT1]
+~w~¿Pensabas que no te lo iba a dar o algo así?
-[FEC_SPC]
-ESPACIO
+[JDT1_MG:JDT1]
+~w~¿Nos estás controlando, J.D.?
-[WIN_TTL]
-Grand Theft Auto VC
+[JDT1_MH:JDT1]
+~w~Está todo... ¡Cuéntalo si quieres!
-[WIN_95]
-Grand Theft Auto VC no se puede ejecutar bajo W95
+[JDT1_EA:JDT1]
+~w~¡Eh! ¡Ese chulo le está mangando a una de mis chicas!
-[WIN_DX]
-Grand Theft Auto VC necesita al menos la versión 8.1 de DirectX
+[JDT1_EB:JDT1]
+~w~¡Recupera el dinero, Toni!
-[FET_EIG]
-NO SE PUEDE DEFINIR UN CONTROL PARA ESTA ACCIÓN
+[JDT1_EC:JDT1]
+~w~¿Qué demonios hace ese chulito?
-[FET_DAM]
-MODELADO ACÚSTICO DINÁMICO
+[JDT1_ED:JDT1]
+~w~¡Se está llevando mi pasta!
-[FEQ_SRE]
-¿Seguro que quieres salir? Se perderán todos los progresos desde la última partida guardada. ¿Quieres proceder?
+[JDT1_EE:JDT1]
+~w~¡A por él, Toni!
-[FEQ_SRW]
-¿Seguro que quieres salir del juego?
+[JDT1_45:JDT1]
+~w~Quítale el ~g~dinero~w~ al chulo.
-[FET_QG]
-SALIR DEL JUEGO
+[JDT1_46:JDT1]
+~w~¡El chulo se ha escapado!
-[FEN_STA]
-INICIAR JUEGO
+[JDT1_FA:JDT1]
+~w~¡En ese coche va una de mis chicas!
-[FET_PAU]
-MENÚ PAUSA
+[JDT1_FB:JDT1]
+~w~Da marcha atrás hasta el ~b~coche~w~ y acércate para que eche un vistazo.
-[REPLAY]
-VOLVER A JUGAR
+[JDT1_FC:JDT1]
+~w~Poco a poco... No queremos molestarles.
-[FEC_ANS]
-Acción
+[JDT1_FD:JDT1]
+~w~Más cerca...
-[CVT_MSG]
-Convertir texturas a un formato óptimo para tu tarjeta de vídeo
+[JDT1_FE:JDT1]
+~w~Más cerca...
-[FEC_SFT]
-MAYÚS
+[JDT1_FF:JDT1]
+~w~Tranquilo...
-[FEH_VMP]
-VER MAPA
+[JDT1_IA:JDT1]
+~w~¡Por el amor de Dios, Toni! ¡Los has espantado!
-[FES_DEE]
-¡Error al eliminar! Por favor, inténtalo de nuevo.
+[JDT1_GA:JDT1]
+~w~¡Dios, Toni! ¡No veo una leche!
-[FES_CMP]
-¡Error al guardar! Por favor, inténtalo de nuevo.
+[JDT1_75:JDT1]
+~w~Espera a que la ~b~chica~w~ le dé a J.D. su dinero.
-[FESZ_WR]
-Guardando partida actual. Por favor, espera...
+[JDT1_HA:JDT1]
+~w~¡Oh, sí...!
-[FELD_WR]
-Cargando el juego. Por favor, espera...
+[JDT1_HB:JDT1]
+~w~¡Vamos, nena!
-[FEDL_WR]
-Eliminando partida guardada. Por favor, espera...
+[JDT1_HC:JDT1]
+~w~Así, así...
-[PCRESRT]
-Iniciando nueva partida. Por favor, espera...
+[JDT1_HD:JDT1]
+~w~¡Oh, SÍ...!
-[FET_STI]
-Controles estándar
+[JDT1_HE:JDT1]
+~w~¡Qué pasada!
-[FET_CTI]
-Controles clásicos
+[JDT1_HF:JDT1]
+~w~¿Ya hemos terminado aquí?
-[FEH_NA]
-OPCIÓN NO DISPONIBLE
+[JDT1_JA:JDT1]
+~w~¡Buen trabajo, Toni!
-[FEH_MPH]
-RATÓN, CURSORES PARA MOVERSE - RE. PAG, AV. PAG, RUEDA RATÓN PARA ZOOM, L - LEYENDA
+[JDT1_JB:JDT1]
+~w~No creo que las chicas de este turno me vayan a dar más problemas.
-[FEA_MP3]
-REPRODUCTOR MP3
+[JDT1_LA:JDT1]
+~w~¡Toni! ¡Esta vez la has cagado bien!
-[NO_PCCD]
-Por favor, introduce tu CD de GTA Vice City o pulsa ESC para cancelar
+[JDT1_LB:JDT1]
+~w~¡Me vuelvo al club!
-[FEH_SSA]
-CURSORES PARA MOVERSE - S PARA GUARDAR EN UN ARCHIVO
+[JDT1_ML:JDT1]
+~w~ Quedan ~1~ $ por recaudar.
-[FES_CMI]
-ÚLTIMA MISIÓN SUPERADA
+[JDT1O01:JDT1]
+~w~Sube a la ~b~furgoneta~w~ de J.D.
-[FET_STS]
-ESTADÍSTICAS GUARDADAS EN 'STATS.HTML' + 'STATS.TXT'
+[JDT1O02:JDT1]
+~w~Has dejado atrás a ~b~J.D.~w~. ¡Vuelve y recógelo!
-[WIN_VDM]
-Grand Theft Auto VC no pudo encontrar suficiente memoria de vídeo disponible
+[JDT1O03:JDT1]
+~w~Espera a que suba ~b~J.D.~w~.
-[FEC_ERI]
-¡Error! Una o más acciones de control no están vinculadas a ninguna tecla o botón. Comprueba que todas las acciones de control estén definidas.
+[JDT1O04:JDT1]
+~w~Busca a las chicas de J.D. en el Red Light District.
-[FEC_TFU]
-Torreta + Inclinar arriba
+[JDT1O05:JDT1]
+~w~Vuelve al ~y~club de J.D.~w~.
-[FEC_TFD]
-Torreta + Inclinar abajo
+[JDT1O07:JDT1]
+~w~Para cerca de la ~b~chica~w~.
-[FET_RIG]
-ELIGE UN NUEVO CONTROL PARA ESTA ACCIÓN
+[JDT1O08:JDT1]
+~w~Mata al ~r~chulo~w~.
-[FEA_NM3]
-NO SE ENCONTRARON ARCHIVOS MP3
+[JDT1O09:JDT1]
+~w~Recauda el dinero de una de las ~b~chicas~w~ de J.D.
-[FEA_MPB]
-SUBIR VOLUMEN DE MP3
+[JDT1_F1:JDT1]
+~r~La furgoneta de J.D. está destrozada.
-[FEA_MUS]
-VOLUMEN DE MÚSICA
+[JDT1_F2:JDT1]
+~r~¡J.D. ha muerto!
-[FEA_SFX]
-VOLUMEN DE EFECTOS
+[JDT1_F3:JDT1]
+~r~¡No has recaudado dinero suficiente en este turno!
-[CVT_ERR]
-Te has quedado sin espacio en el disco duro. Por favor, antes de seguir consigue algo de espacio en tu disco duro. Pulsa ESC para cancelar.
+[JDT1_D1:JDT1]
+~w~Las chicas de J.D. trabajan en el ~y~Red Light District~w~. ¡Vuelve allí!
-[FEA_ADP]
-DETECTAR EL HARDWARE AUTOMÁTICAMENTE
+[JDT1_F4:JDT1]
+~r~¡Han muerto demasiadas chicas de J.D.!
-{=================================== MISSION TABLE AMBULAE ===================================}
+[JDT1_KA:JDT1]
+~w~¿Qué diablos ha sido eso?
-[ATUTOR2:AMBULAE]
-~g~Lleva a los pacientes al hospital CON CUIDADO. Cada bache reduce sus posibilidades de supervivencia.
+[JDT1_KB:JDT1]
+~w~¿Le hemos dado a algo?
-[A_FULL:AMBULAE]
-~r~¡Ambulancia llena!
+[JDT1_KC:JDT1]
+~w~¡Conduce con cuidado, Toni!
-[A_FAIL2:AMBULAE]
-~r~¡Tu falta de urgencia ha sido mortal para el paciente!
+[JDT1_81:JDT1]
+~w~¡Has asustado al putero! ¡No quiere que haya mirones!
-[A_FAIL3:AMBULAE]
-~r~¡El paciente está muerto!
+[JDT1O10:JDT1]
+~w~Lleva el ~b~coche~w~ hasta el callejón.
-[A_PASS:AMBULAE]
-¡Rescatado!
+[JDT1O11:JDT1]
+~w~Toca el claxon para llamarles la atención.
-[A_COMP2:AMBULAE]
-¡Nunca te cansarás!
+[JDT1O12:JDT1]
+~w~Cuanto más dejes trabajar a la chica, más dinero ganará.
-[A_CANC:AMBULAE]
-~r~¡Misión de ATS cancelada!
+[JDT1_MO:JDT1]
+Deuda
-[A_COMP3:AMBULAE]
-¡Misiones de ATS completadas! ¡Nunca te cansarás cuando estés corriendo!
+[JDT1_H1:JDT1]
+~w~Usa ~k~ ~VEHN~ para tocar el claxon.
-[ALEVEL:AMBULAE]
-Misión de ATS nivel ~1~
+[JDT1_WA:JDT1]
+~w~¡Date prisa! ¡El turno de las ~b~chicas~w~ termina a las ~1~:~1~!
-[A_FAIL1:AMBULAE]
-Misión de ATS terminada.
+[JDT1_WB:JDT1]
+~w~¡Date prisa! ¡El turno de las chicas termina a las ~1~:~1~!
-[A_SAVES:AMBULAE]
-PERSONAS SALVADAS: ~1~
+[JDT1O06:JDT1]
+~w~Recauda el dinero de J.D. entre sus prostitutas. Ve rápido, el turno acaba a las ~1~:~1~.
-[A_COMP1:AMBULAE]
-Misiones de ATS completas: ~1~ $
+[JDT1_WC:JDT1]
+~w~¡Deprisa! ¡El turno de las ~b~chicas~w~ termina a las ~1~:0~1~!
-{=================================== MISSION TABLE ASSIN1 ===================================}
+[JDT1_WD:JDT1]
+~w~¡Deprisa! ¡El turno de las chicas termina a las ~1~:0~1~!
-[ASM1_5:ASSIN1]
-~r~¡Completó sus entregas!
+[JDT1P06:JDT1]
+~w~Ve a pedirles el dinero a las putas de J.D. Date prisa, porque su turno termina a las ~1~:0~1~.
-[ASM1_6:ASSIN1]
-Entregas restantes:
+[BONE_01:JDT1]
+¡Eh, J.D., sal un momento!
-[ASM1_7:ASSIN1]
-~g~Carl Pearson, repartidor de pizza. Mátale antes que finalice el reparto.
+[BONE_02:JDT1]
+Eh, J.D., pervertido, ven cagando leches,
-[ASM1_A:ASSIN1]
-Sr. Teal, su ayuda en erradicar a esos forasteros fue inestimable para el negocio. Tengo más trabajo para usted y más cercano a la ''intervención''.
+[BONE_03:JDT1]
+¡o entro ahí y te parto las piernas!
-[ASM1_D:ASSIN1]
-Sr. Teal, su ayuda en erradicar a esos forasteros fue inestimable para el negocio.
+[BONE_04:JDT1]
+Voy corriendo... pero sin correrme, ¡ja, ja, ja!
-{=================================== MISSION TABLE ASSIN2 ===================================}
+[BONE_05:JDT1]
+Eh, Toni, ¿'qué pasa'? Un abrazote.
-[ASM2_1:ASSIN2]
-~g~La Sra. Dawson dejará pronto la joyería de Vice Point. Mátala. Debe parecer un accidente de coche.
+[BONE_06:JDT1]
+¡Puaj, estás pegajoso!
-[ASM2_3:ASSIN2]
-~g~¡Va a estallar! ¡Largo de aquí!
+[BONE_07:JDT1]
+La porquería que se ponen las strippers, que se me pega.
-[ASM2_4:ASSIN2]
-~r~Dañaste su coche ¡y ni siquiera está en él! ¡Ahora no se subirá ahí!
+[BONE_08:JDT1]
+Les gusta, ya sabes. Se la ponen por todas partes y... Bueno, ¿cómo te va?
-[ASM2_5:ASSIN2]
-~r~¡Se escapó!
+[BONE_09:JDT1]
+¿Qué cojones llevas puesto?
-[ASM2_6:ASSIN2]
-~r~¡Estabas demasiado cerca de la escena del ''accidente''!
+[BONE_10:JDT1]
+¿El qué, esto? Soy un amante creativo.
-[ASM2_7:ASSIN2]
-~g~¡No utilices armas! ¡Se supone que debe parecer un accidente! ¡En vez de eso, sácala de la carretera!
+[BONE_11:JDT1]
+Ya sabes, me gusta... experimentar, ¿no?
-[ASM2_8:ASSIN2]
-~g~Debes hacer que la muerte de la Sra. Dawson parezca un accidente. No utilices ningún arma.
+[BONE_16:JDT1]
+Mira, ése es el problema. Nos lo están mangando.
-[ASM2_9:ASSIN2]
-~g~¡Necesitas un coche para este trabajo!
+[BONE_17:JDT1]
+Bueno, tú espera aquí.
-[ASM2_10:ASSIN2]
-~g~Cuando el coche explote en llamas vete lo más lejos posible de la escena del accidente.
+[BONE_18:JDT1]
+Tengo que quitarme... uh... esto, ¿sabes?
-[ASM2_11:ASSIN2]
-¡Ayúdame!
+[BONE_19:JDT1]
+Eh, Raven, hora de guardar el consolador doble.
-[ASM2_12:ASSIN2]
-¡Que alguien me ayude!
+[BONE_20:JDT1]
+Eh, Toni, vamos a dar una vuelta en la furgoneta.
-[ASM2_13:ASSIN2]
-¡oh, Dios mío!
+[BONE_21:JDT1]
+Tenemos que revisar unas cosas... ¡Vale! ¡Vale!
-[ASM2_A:ASSIN2]
-Felicidades por un trabajo bien hecho, Sr. Teal. Mi cliente está muy satisfecho.
+[BONE_12:JDT1]
+- No hay nada malo en ello, ¿no? Puedes mirar si quieres. ~n~ - Oh, eres un enfermo. Cierra la bocaza de una vez.
-[ASM2_2:ASSIN2]
-salud:
+[BONE_14:JDT1]
+- Vale, cálmate, Toni... ~n~ - ¿Y mi dinero?
-{=================================== MISSION TABLE ASSIN3 ===================================}
+{=================================== MISSION TABLE JDT2 ===================================}
-[ASM3_11:ASSIN3]
-TIEMPO:
+[JDT2_I1:JDT2]
+~w~¡Gracias a Dios que has venido, Toni!
-[ASM3_C:ASSIN3]
-Una banda europea planea atracar un banco en Vice City. A mis jefes les gustaría que esto no sucediese.
+[JDT2_I2:JDT2]
+~w~¡Me han soplado que la poli va a hacernos una redada!
-[ASM3_D:ASSIN3]
-Cada miembro de la banda tiene una tapadera mientras está aquí en Vice City. Algunos tienen trabajos sin importancia y otros están de vacaciones.
+[JDT2_I3:JDT2]
+~w~¿Y...? Tienes los permisos...
-[ASM3_E:ASSIN3]
-Cada objetivo y sus posibles paraderos están pegados con cinta adhesiva bajo el teléfono.
+[JDT2_I4:JDT2]
+~w~¡No para algunas cosas que se hacen aquí!
-[ASM3_14:ASSIN3]
-~g~Dick Tanner está ubicado junto al DBP de Seguridad en Ocean Drive.
+[JDT2_I5:JDT2]
+~w~Salvatore está aquí. Haciendo a las chicas una... 'visita especial', ¿sabes?
-[ASM3_15:ASSIN3]
-~g~Marcus Hammond y Franco Carter están ubicados junto a la joyería en Vice Point.
+[JDT2_I6:JDT2]
+~w~¡Tenemos que sacarlo de aquí antes de que llegue la poli!
-[ASM3_16:ASSIN3]
-~g~Nick Kong está en su barco cerca de Washington Beach.
+[JDT2_I7:JDT2]
+~w~¡Reúnete con él ahí delante!
-[ASM3_18:ASSIN3]
-~g~¡No te acerque demasiado al objetivo o te descubrirá y tendrás que perseguirle hasta atraparle!
+[JDT2_I8:JDT2]
+~w~Ni un momento de respiro...
-[ASM3_19:ASSIN3]
-~g~¡Te ha visto! ¡Acaba con él!
+[JDT2_05:JDT2]
+~w~¡Sácame de aquí cagando leches!
-[ASM3_20:ASSIN3]
-~g~¡Te han visto! ¡Asegúrate de acabar con los dos!
+[JDT2_06:JDT2]
+~w~¿Toni? ¡Despista a la poli! ¡Que no quiero llevármelos a casita!
-[ASM3_21:ASSIN3]
-~r~¡No mataste a todos los miembros de la banda a tiempo!
+[JDT2_A1:JDT2]
+~w~Sube al ~b~coche~w~.
-[ASM3_22:ASSIN3]
-~g~¡No te acerques demasiado a los objetivos o te descubrirán e intentarán escapar.
+[JDT2_A2:JDT2]
+~w~¡No pierdas a ~b~Salvatore~w~! ¡Vuelve y recógelo!
-[ASM3_12:ASSIN3]
-~g~Se ha dejado cerca una selección de armas en caso de necesidad. Dispones de ~h~9 MINUTOS ~g~para matar a todos los miembros de la banda.
+[JDT2_A3:JDT2]
+~w~Lleva a Salvatore a ~y~casa~w~.
-[ASM3_13:ASSIN3]
-~g~Mike Griffin está trabajando en una valla de publicidad en Washington.
+[JDT2_A5:JDT2]
+~r~¡Salvatore ha muerto!
-[ASM3_17:ASSIN3]
-~g~Charlie Dilson está dando una vuelta en su moto en Washington.
+[JDT2_C1:JDT2]
+~w~Lo has hecho muy bien, hijo. Me gusta tu estilo. Siempre me ha gustado.
-{=================================== MISSION TABLE ASSIN4 ===================================}
+[JDT2_C2:JDT2]
+~w~Gracias, Sr. Leone.
-[ASM4_10:ASSIN4]
-~g~¡Parece que no eres el único que persigue el maletín! ¡Llévalo deprisa a Ammu- Nation!
+[JDT2_C3:JDT2]
+~w~Mira, creo que Vincenzo abusa demasiado de tu tiempo.
-[ASM4_12:ASSIN4]
-Distancia:
+[JDT2_C4:JDT2]
+~w~Me vendría bien un buen tipo como tú.
-[ASM4_15:ASSIN4]
-~g~Busca el rifle de francotirador hacia tu derecha.
+[JDT2_C5:JDT2]
+~w~Llámame un día de éstos. El tío Sal cuidará de ti.
-[ASM4_16:ASSIN4]
-~g~Observa a la mujer de la galería, bajará por las escaleras mecánicas y preguntará a alguien la hora.
+[JDT2_A9:JDT2]
+~r~¡Han trincado a Salvatore!
-[ASM4_17:ASSIN4]
-~g~Solamente cuando la conversación haya concluido, mata a la persona con la que habló, pero no la mates a ella.
+[JDT2_B2:JDT2]
+~w~¡Despista a la poli!
-[ASM4_18:ASSIN4]
-~g~Cuando el objetivo haya muerto, recupera el maletín y llévalo a Ammu-Nation, en el centro.
+[JDT2_A6:JDT2]
+~w~Vuelve al ~b~coche~w~ de Salvatore antes de que lo trinque la poli.
-[ASM4_19:ASSIN4]
-~g~Mantén tu distancia del objetivo, la barra de distancia de la parte superior de la pantalla te indica lo cerca que estás del objetivo.
+[JDT2_F1:JDT2]
+~r~¡Has perdido a Salvatore!
-[ASM4_20:ASSIN4]
-~g~No dejes que se llene o te verá.
+[JDT2_A4:JDT2]
+~w~¡Aleja a Salvatore del club y despista a la poli!
-[ASM4_21:ASSIN4]
-~g~¡Recoge el maletín!
+{=================================== MISSION TABLE JDT3 ===================================}
-[ASM4_22:ASSIN4]
-~g~Lleva el maletín a Ammu-Nation, en el centro.
+[JDT3_AA:JDT3]
+~w~Eh, Toni. Ahora no puedo salir, estoy ocupado... ¿sabes?
-[ASM4_23:ASSIN4]
-~g~¡Te ha visto y se escapa, atrápale y consigue el maletín!
+[JDT3_AB:JDT3]
+~w~¿Por qué? ¿Qué está pasando ahí? ¿Y qué diablos es ese olor...?
-[ASM4_25:ASSIN4]
-~r~¡Has matado a la mujer, idiota!
+[JDT3_AC:JDT3]
+~w~Mira, Toni, hoy estamos haciendo... auténticos 'servicios especiales'.
-[ASM4_26:ASSIN4]
-~r~¡El objetivo ha subido a su avión!
+[JDT3_AD:JDT3]
+~w~¡Esto vale su peso en oro en Internet!
-[ASM4_27:ASSIN4]
-~r~¡El objetivo te ha visto! ¡Deberías mantener tu distancia!
+[JDT3_AE:JDT3]
+~w~Lo que debe preocuparte es esa casa de juego de los Leone, en Saint Mark's.
-[ASM4_28:ASSIN4]
-~r~¡El objetivo te ha visto! ¡Te ha escuchado disparar el arma!
+[JDT3_AG:JDT3]
+~w~A los Sindacco les toca mucho las narices.
-[ASM4_29:ASSIN4]
-~r~¡Mátale sólo después que haya hablado con la mujer!
+[JDT3_AH:JDT3]
+~w~He oído que quieren borrarla del mapa, volándola.
-[ASM4_A:ASSIN4]
-Es hora de ir a por el pez gordo, Sr. Teal. Hay un rifle a su derecha, tras la maceta.
+[JDT3_B:JDT3]
+~w~¡Elimina a los ~r~saboteadores de los Sindacco~w~!
-[ASM4_B:ASSIN4]
-Observe a la mujer que está en la galería por encima de los mostradores de facturación. Caminará por entre la gente y le preguntará a alguien la hora.
+[JDT3_C:JDT3]
+~w~Han puesto una ~r~bomba~w~ fuera del ~y~casino~w~.
-[ASM4_C:ASSIN4]
-Debe matar a esa persona, recoger el maletín y llevarlo al lugar adherido con cinta bajo el teléfono.
+[JDT3_D:JDT3]
+La bomba explota
-{=================================== MISSION TABLE ASSIN5 ===================================}
+[JDT3_E:JDT3]
+~w~Un par como éstas y adiós muy buenas al ~y~casino~w~.
-[ASM5_A:ASSIN5]
-Un valioso canje va a tener lugar en el tejado de la compañía de helados Cherry Popper.
+[JDT3_F:JDT3]
+~w~Una más y el ~y~casino~w~ será historia.
-[ASM5_B:ASSIN5]
-Liquide a todos los implicados, robe el maletín y llévelo al helipuerto del aeropuerto.
+[JDT3_H:JDT3]
+~w~¡Hay más ~r~Sindacco~w~ de camino! ¡Páralos!
-[ASM5_C:ASSIN5]
-Hay una puerta a su izquierda que conduce a la parte trasera de la fábrica.
+[JDT3_I:JDT3]
+~w~¡La bomba de la furgoneta está activada!
-[ASM5_1:ASSIN5]
-~g~Entra al complejo por detrás de la compañía de helados Cherry Popper y dirígete al tejado donde va a tener lugar el trato.
+[JDT3_J:JDT3]
+~w~El ~y~casino~w~ está a salvo. ¡Sal de allí!
-[ASM5_2:ASSIN5]
-~g~Consigue el maletín y llévalo al helipuerto del aeropuerto.
+[JDT3_K:JDT3]
+~w~¡Deben de haber manipulado la furgoneta! ¡Está atascada en primera!
-[ASM5_3:ASSIN5]
-~g~¡Lleva el maletín al helipuerto del aeropuerto!
+[JDT3_L:JDT3]
+~w~¡Los ~r~refuerzos de los Sindacco~w~ van al ~y~casino~w~!
-{=================================== MISSION TABLE BANKJ1 ===================================}
+[JDT3_M:JDT3]
+~w~Los ~r~Sindacco~w~ aún no se rinden, ¡vienen más!
-[WANTED1:BANKJ1]
-~g~¡Quítate de encima a los polis y pierde tu nivel de se busca!
+[JDT3_N:JDT3]
+~w~Se están retirando. ¡Que no escape ni uno de los ~r~Sindacco~w~!
-[BJM1_A:BANKJ1]
-¡Tommy! ¡Eh, Tommy, mira esto, es genial! ¡He hecho que nos instalen un minibar!
+[JDT3_O:JDT3]
+Distancia segura
-[BJM1_B:BANKJ1]
-Tenemos todo un bar abajo, Ken.
+[JDT3_P:JDT3]
+~w~¡Los Sindacco han cargado una enorme furgoneta bomba! ¡Van a volar el casino de un solo golpe!
-[BJM1_C:BANKJ1]
-Sí, sí, vale. Bueno, tengo la pizarra que pediste.
+[JDT3_Q:JDT3]
+~w~Defiende el ~y~casino~w~.
-[BJM1_D:BANKJ1]
-Eso es lo bueno de estudiar derecho: te enseñan a seguir las instrucciones.
+[JDT3_R:JDT3]
+~w~Inspecciona el ~y~Casino~w~.
-[BJM1_E:BANKJ1]
-Necesito un hombre para la caja fuerte.
+[JDT3_S:JDT3]
+~w~¡Impide que la ~r~furgoneta bomba~w~ destruya el ~y~casino~w~!
-[BJM1_F:BANKJ1]
-De acuerdo, bueno, déjame pensar... caja fuerte, caja fuerte, caja fuerte, caja fuerte... ¡Lo tengo! ¡Este tipo te va a encantar!
+[JDT3_T:JDT3]
+~w~¡Aleja la ~r~furgoneta~w~ del ~y~casino~w~ antes de que estalle!
-[BJM1_G:BANKJ1]
-Ah, ese idiota no. Está encerrado.
+[JDT3_BA:JDT3]
+~w~¿Toni? Soy J.D.
-[BJM1_H:BANKJ1]
-¿Encerrado dónde?
+[JDT3_BB:JDT3]
+~w~Mira, acabo de oír que un puñado de gorilas de los Sindacco van a por ti.
-[BJM1_I:BANKJ1]
-En la celda de una comisaría esperando el traslado.
+[JDT3_BC:JDT3]
+~w~¡Son duros y van bien armados!
-[BJM1_J:BANKJ1]
-Creo que está a punto de conseguir la libertad condicional...
+[JDT3_BD:JDT3]
+~w~¡Ten cuidado!
-[BJM1_1:BANKJ1]
-~g~¡Libera a Cam Jones de la comisaría de policía!
+[JDT3_BE:JDT3]
+~w~Gracias, J.D.
-[BJM1_3:BANKJ1]
-~g~Encontrarás algo útil en el vestuario de la comisaría.
+[JDT3_BF:JDT3]
+~w~Te debo una.
-[BJM1_21:BANKJ1]
-~g~Puedes encontrar la llave de las celdas en el piso de arriba de la comisaría.
+[JDT3_G:JDT3]
+~r~¡El casino está destruido!
-[BNK1_7:BANKJ1]
-¿Cam Jones?
+{=================================== MISSION TABLE JDT4 ===================================}
-[BNK1_8:BANKJ1]
-¡Te voy a sacar de aquí!
+[JDT4_3:JDT4]
+~w~Los Sindacco que vigilan The Doll's House solo confiarán en ~h~sus coches~w~.
-[BNK1_10:BANKJ1]
-Sí, soy yo...
+[JDT4_A1:JDT4]
+~w~¡Eso es clase! Si pierdes en la mesa, ¡puedes desquitarte en la cama!
-[BNK1_11:BANKJ1]
-¡Lo que tú digas!
+[JDT4_B0:JDT4]
+~w~Busca un vehículo apropiado y ponle una bomba.
-[BNK1_13:BANKJ1]
-Voy a hacer un trabajo y tu serás mi revienta cajas fuertes.
+[JDT4_B1:JDT4]
+~w~Súbete al ~b~vehículo~w~ con la bomba.
-[BNK1_14:BANKJ1]
-¡Eso es mejor que pudrirse en una celda!
+[JDT4_B3:JDT4]
+~w~Ahora, baja y sal de aquí.
-[BJM1_22:BANKJ1]
-~g~¡Lleva a Cam de vuelta a su casa!
+[JDT4_B4:JDT4]
+~w~¡Detona la bomba!
-[BJM1_23:BANKJ1]
-~g~¡Necesitas coger la tarjeta llave primero!
+[JDT4_B5:JDT4]
+~w~Lleva el vehículo al ~h~taller de bombas~w~ y haz que lo equipen con una.
-[BNK1_12:BANKJ1]
-¡Piérdeles el rastro y llévame a mi casa!
+[JDT4_B6:JDT4]
+~w~¡No te acerques demasiado!
-[BJM1_20:BANKJ1]
-¡Guarda el arma o te enfréntate a las consecuencias!
+[JDT4_C0:JDT4]
+~r~Estabas muy cerca de la explosión.
-[BJM1_5:BANKJ1]
-¡Sólo personal autorizado más allá de este punto!
+[JDT4_C1:JDT4]
+~w~¡Esto es de parte de J.D.!
-[BJM1_2:BANKJ1]
-~r~¡Se supone que tenías que sacar a rastras a Cam, no matarle!
+[JDT4_D0:JDT4]
+~w~¿Quién es ése?
-[BJM1_4:BANKJ1]
-¡Está armado! ¡Mátale!
+[JDT4_D2:JDT4]
+~w~Debe de ser uno de los nuevos.
-{=================================== MISSION TABLE BANKJ2 ===================================}
+[JDT4_0:JDT4]
+CUENTA ATRÁS
-[BJM2_A:BANKJ2]
-Necesitamos a un atracador. ¿Conoces a alguno?
+[JDT4_1:JDT4]
+~w~No puedes ponerle una bomba a esto.
-[BJM2_B:BANKJ2]
-Eh, Tommy, Tommy, Tommy, esta mierda te pone a tono, tío.
+[JDT4_2:JDT4]
+~w~Sigue el ~h~punto de la bomba~w~ en el radar hasta ~h~el taller de 8-Ball~w~.
-[BJM2_C:BANKJ2]
-¡Guauuuuu!
+[JDT4_A0:JDT4]
+~w~Mira, Toni, los Sindacco tienen un local, The Doll's House.
-[BJM2_D:BANKJ2]
-¡Yo podría ser tu atracador! ¡Manos arriba! ¡Manos arriba!
+[JDT4_AA:JDT4]
+~w~Es a la vez un casino y un burdel.
-[BJM2_E:BANKJ2]
-Tú no eres un atracador, tú eres un idiota.
+[JDT4_A2:JDT4]
+~w~¡Je, je! Bueno, el lugar es clave para su despliegue por aquí.
-[BJM2_F:BANKJ2]
-Ahora ponte una copa y cállate.
+[JDT4_A3:JDT4]
+~w~Si lo dejaras, eh... fuera de juego... ya sabes, eh... volándolo o algo así...
-[BJM2_G:BANKJ2]
-Eh. ¡Quítate de mi camino! Sí, sí, sí, eh, eh.
+[JDT4_A4:JDT4]
+~w~... mira lo que te digo: ¡le caeríamos en gracia a Salvatore!
-[BJM2_H:BANKJ2]
-¿Cam, tú qué opinas?
+[JDT4_D1:JDT4]
+~w~No me suena...
-[BJM2_I:BANKJ2]
-Bueno, el mejor tirador de esta ciudad es un tipo llamado Cassidy.
+[JDT4_B2:JDT4]
+~w~Ve hasta el ~y~garaje~w~ de The Doll's House y aparca allí el vehículo.
-[BJM2_J:BANKJ2]
-¿Seguro?
+[JDT4_B7:JDT4]
+~w~Conduce con cuidado porque si recibe demasiado daño explotará.
-[BJM2_K:BANKJ2]
-Sí. Un militar, o al menos él piensa que lo es.
+[JDT4_B8:JDT4]
+~w~Aparca el vehículo en el ~y~garaje~w~ de The Doll's House.
-[BJM2_L:BANKJ2]
-Dudo que estuviese alguna vez en el ejército, pero desde luego sabe manejar las armas.
+[JDT4_4:JDT4]
+~w~Pulsa~h~ ~k~ ~PDFW~ ~w~para ~h~detonar~w~ la bomba.
-[BJM2_M:BANKJ2]
-Estará en el campo de tiro.
+[JDT4_B9:JDT4]
+~w~¡Los Sindacco han desactivado la bomba!
-[BJM2_2A:BANKJ2]
-¿Tú eres Phil Cassidy?
+{=================================== MISSION TABLE JDT5 ===================================}
-[BJM2_2B:BANKJ2]
-¿Por qué?
+[JDT5_B0:JDT5]
+~w~¡Es uno de los tipos que se llevaron a Salvatore!
-[BJM2_2C:BANKJ2]
-Estoy buscando a un hombre que sepa manejar un arma. Pero ahora que te veo, no estoy muy convencido.
+[JDT5_D0:JDT5]
+~w~¿Y él dónde está? ¿En el maletero?
-[BJM2_2D:BANKJ2]
-Hijo, podría quitarte una mosca de la cabeza de un solo disparo a 100 metros.
+[JDT5_D1:JDT5]
+~w~Bien. Nos lo llevamos a la trituradora. El jefe lo quiere más plano que una pizza.
-[BJM2_2E:BANKJ2]
-Oh, ¿de verdad?
+[JDT5_E:JDT5]
+~w~¡Rescata a Salvatore del ~b~coche~w~ antes de que lo trituren!
-[BJM2_2F:BANKJ2]
-Sí. Aprendí en el ejército.
+[JDT5_E0:JDT5]
+~w~¡Te han calado!
-[BJM2_2G:BANKJ2]
-¿Se suele disparar a las moscas en el ejército? Me alegra no pagar impuestos.
+[JDT5_E1:JDT5]
+~w~¡Nadie vigila el ~b~coche~w~! ¡Cógelo!
-[BJM2_2H:BANKJ2]
-¿Intentas ser gracioso?
+[JDT5_E2:JDT5]
+~w~Lleva el coche a ~y~casa de Salvatore~w~.
-[BJM2_2I:BANKJ2]
-~n~
+[JDT5_E3:JDT5]
+~w~¡Vuelve a meterte en el ~b~coche~w~!
-[BJM2_2J:BANKJ2]
-Vamos a disparar.
+[JDT5_F0:JDT5]
+~w~Mmmfff... mmmfff... mffff.
-[BJM2_1:BANKJ2]
-~g~Ve a Ammu-Nation en el centro de la ciudad y habla con Phil Cassidy.
+[JDT5_F3:JDT5]
+~w~Mmfff... arrgghh... mmffff.
-[BJM2_3:BANKJ2]
-TASA DE IMPACTOS: ~1~%
+[JDT5_F4:JDT5]
+~w~Mmmfff... arrgghh... arrggghh... arrg.
-[BJM2_4:BANKJ2]
-PUNTUACIÓN PRIMERA FASE: ~1~
+[JDT5_F5:JDT5]
+~w~Yarrgghh... yarragh... mmffff.
-[BJM2_6:BANKJ2]
-PUNTUACIÓN SEGUNDA FASE: ~1~
+[JDT5_G0:JDT5]
+~w~¿Qué manera de conducir es ésa? ¿Intentabas matarme?
-[BJM2_7:BANKJ2]
-PUNTUACIÓN TOTAL DE DISPARO: ~1~
+[JDT5_G1:JDT5]
+~w~Sr. Leone. Jefe. Lo siento.
-[BJM2_9:BANKJ2]
-~g~Ve al punto de inicio de la segunda fase.
+[JDT5_G2:JDT5]
+~w~¿Qué puedo decirle?
-[BJM2_11:BANKJ2]
-~r~¡Phil está muerto!
+[JDT5_G4:JDT5]
+~w~¡Les voy a sacar los ojos! ¡Esto no va quedar así!
-[BJM2_12:BANKJ2]
-~r~¡Uno de los tiradores está muerto!
+[JDT5_G5:JDT5]
+~w~Por los clavos de Cristo, Toni. ¡Me has salvado! ¡Llámame Sal!
-[BJM2_14:BANKJ2]
-~g~¡Pasa a la siguiente fase!
+[JDT5_X0:JDT5]
+~r~Es difícil seguir a un muerto.
-[BJM2_15:BANKJ2]
-PUNTUACIÓN:
+[JDT5_X1:JDT5]
+~r~¡Lo has perdido!
-[BJM2_17:BANKJ2]
-~g~Ve y habla con Phil.
+[JDT5_F1:JDT5]
+~w~¿Es usted, Sr. Leone? Soy yo, Toni.
-[BJM2_18:BANKJ2]
-PUNTUACIÓN A SUPERAR:
+[JDT5_F2:JDT5]
+~w~No se preocupe. Voy a sacarle de ahí.
-[BJM2_19:BANKJ2]
-~g~¡Acierta a tantos blancos como puedas dentro del límite de tiempo!
+[JDT5_G3:JDT5]
+~w~¡Hijos de la grandísima! ¿Creen que pueden hacerme esto a mí?
-[BJM2_22:BANKJ2]
-~r~¡Has abandonado el campo de tiro!
+[JDT5_X2:JDT5]
+~r~¡Sal no ha sobrevivido!
-[BJM2_23:BANKJ2]
-~g~Si abandonas el campo de tiro durante la competición, fracasarás en la misión.
+[JDT5_X4:JDT5]
+~r~Te ha calado. Ahora nunca encontrarás a Sal.
-[BJM2_24:BANKJ2]
-~g~El objetivo más cercano vale un punto.
+[JDT5_X3:JDT5]
+~r~¡Salvatore ha sido triturado!
-[BJM2_25:BANKJ2]
-~g~El objetivo del medio vale dos puntos.
+[JDT5_C:JDT5]
+~w~Sigue al ~r~coche~w~, pero que no te vean.
-[BJM2_27:BANKJ2]
-~g~Todos los objetivos de esta ronda valen un punto.
+[JDT5_0:JDT5]
+~w~Si disparas al coche, podrías darle a Salvatore.
-[BNK2_2:BANKJ2]
-APUNTA, 3, 2, 1... ¡FUEGO!
+[JDT5_H0:JDT5]
+~w~Sigue al ~r~coche~w~ pero no te acerques mucho.
-[BNK2_3:BANKJ2]
-¡ZONA DESPEJADA!
+[JDT5_H1:JDT5]
+~w~¡Estás demasiado cerca!
-[BNK2_4:BANKJ2]
-¡Yupiiiiiii!
+[JDT5_H2:JDT5]
+~w~Evita alejarte demasiado y perder el ~r~coche~w~.
-[BNK2_5:BANKJ2]
-¡No podrías darle ni a un elefante a 2 metros!
+[JDT5_H3:JDT5]
+~w~¡Te has retrasado demasiado!
-[BNK2_7:BANKJ2]
-Entonces, ¿quieres hacerme un favor y ayudarme a preparar un atraco?
+[KIDN_01:JDT5]
+¡J.D.!
-[BNK2_8:BANKJ2]
-Hijo, disparando de ese modo, si me pidieras que sea tu mujer, te diría que sí.
+[KIDN_02:JDT5]
+Toni, gracias a Dios que has venido.
-[BNK2_9A:BANKJ2]
-Hijo, mejor será que te vayas y te metas tus ideas y palabrería donde te quepan. Eres una mierda disparando.
+[KIDN_03:JDT5]
+Estoy sudando más que mi tío en un patio de recreo. ¡Me voy a volver loco!
-[BNK2_9B:BANKJ2]
-Eres una mierda disparando.
+[KIDN_06:JDT5]
+Ay, Dios. No me lo puedo creer... Me va a cortar las pelotas.
-[BJM2_28:BANKJ2]
-PUNTUACIÓN RONDA TRES: ~1~
+[KIDN_07:JDT5]
+¡Y las colgará en la pared! Y no necesariamente en ese orden.
-[BJM2_20:BANKJ2]
-~g~¡La ronda se acabará cuando te quedes sin ~w~tiempo ~g~o ~w~munición~g~!
+[KIDN_08:JDT5]
+¡Dios! Me siento como el día que el FBI me registró el disco duro.
-[BJM2_26:BANKJ2]
-~g~El objetivo más lejano vale tres puntos.
+[KIDN_13:JDT5]
+Ay, Dios, no me lo puedo creer...
-[BNK2_1:BANKJ2]
-MUNICIÓN CARGADA
+[KIDN_14:JDT5]
+¿Por qué yo? ¡Yo no tengo la culpa!
-[RANGE_1:BANKJ2]
-PUNTUACIÓN POR DISPARO: ~1~
+[KIDN_15:JDT5]
+Pero con eso de Salvatore, los de antivicio me la meterán doblada.
-[BJM2_2:BANKJ2]
-~g~Para abandonar la ronda, pulsa ~h~~k~~PED_JUMPING~.
+[KIDN_16:JDT5]
+Dios, va a ser peor que aquellas acusaciones por abuso de menores.
-[BJM2_N:BANKJ2]
-Tranqui.
+[KIDN_17:JDT5]
+¿Has estado alguna vez en la trena por abuso de menores, tío?
-{=================================== MISSION TABLE BANKJ3 ===================================}
+[KIDN_18:JDT5]
+¡Te dan por el culo en las duchas!
-[BJM3_A:BANKJ3]
-Las cosas empiezan a ir bien.
+[KIDN_19:JDT5]
+¡Pero si la tía ya tenía los 18! ¡Dios! Esto va a ser peor.
-[BJM3_B:BANKJ3]
-¿Cuál es el plan, Tommy? ¿Qué pasa, amigo?
+[KIDN_20:JDT5]
+Escucha, tarado chupapollas. Por el amor de Dios, ¿qué pasa?
-[BJM3_C:BANKJ3]
-El plan es que tú sigas haciendo el imbécil. En fin, necesitamos a un conductor.
+[KIDN_04:JDT5]
+- ¿Qué vamos a hacer? ~n~ - ¿Con qué?
-[BJM3_D:BANKJ3]
-Tommy, yo lo haré. Sé conducir.
+[KIDN_11:JDT5]
+- No, no... De eso ya voy hasta el culo... ~n~ - Pero ¿qué te pasa?
-[BJM3_E:BANKJ3]
-Necesitamos a Hilary, señor, no a un picapleitos charlatán.
+[KIDN_09:JDT5]
+Ay, el corazón me va a mil. ¿Tienes un Bellium?
-[BJM3_F:BANKJ3]
-Hilary es nuestra mejor opción. Seguro que no has visto nunca conducir a nadie tan rápido. Voy a darle un toque.
+[KIDN_10:JDT5]
+¿O un Rohiphop? Lo que sea...
-[BJM3_G:BANKJ3]
-Eh, Hil, soy Phil. ¿Cómo te va? No, no hables. Recordaremos los viejos tiempos más tarde. ¿Quieres hacerme un favor?
+[KIDN_21:JDT5]
+Se trata de Salvatore. Lo han secuestrado cuando salía del club.
-[BJM3_H:BANKJ3]
-Tengo a un tipo del norte... No, no, no creo que sirviese en el ejército, pero quiere un conductor.
+[KIDN_23:JDT5]
+¿Y por qué no me lo has dicho, en vez de contarme tanta chorrada?
-[BJM3_I:BANKJ3]
-Por un poco de acción. De acuerdo, comprendo.
+{=================================== MISSION TABLE JDT6 ===================================}
-[BJM3_J:BANKJ3]
-¿Qué dijo?
+[JDT6_A0:JDT6]
+~w~¡Gracias a Dios, Toni!
-[BJM3_K:BANKJ3]
-Bueno, lo hará, no hay problema. Bueno, podría haber un pequeño problema... Verás, tiene miedo al abandono.
+[JDT6_A1:JDT6]
+~w~¿J.D.? Eh, estoy aquí atrás...
-[BJM3_L:BANKJ3]
-Y parece que no trabajará para nadie que no pueda derrotarle. Tiene algo que ver con su madre o algo así.
+[JDT6_A2:JDT6]
+~w~Ya lo sé. Te he visto entrar. ¡Rezaba para que aparecieras!
-[BJM3_M:BANKJ3]
-De todas formas primero quiere echarte una carrera, dice que se encontrará contigo fuera...
+[JDT6_A3:JDT6]
+~w~¡Salvatore ha perdido la chaveta!
-[BJM3_2A:BANKJ3]
-¿Eres Tommy? Por supuesto que eres Tommy, quiero decir,
+[JDT6_A6:JDT6]
+~w~Asegúrate de que no le pase nada a Salvatore.
-[BJM3_2B:BANKJ3]
-¿quién más querría hablar conmigo?
+[JDT6_0:JDT6]
+Salud de Sal
-[BJM3_2C:BANKJ3]
-Vale. Esto es lo que hay.
+[JDT6_1:JDT6]
+~r~Salvatore no ha sobrevivido.
-[BJM3_2D:BANKJ3]
-Conduciré para ti solamente si me demuestras que conduces bien.
+[JDT6_3:JDT6]
+~w~Salvatore estará aquí en ~1~ s.
-[BJM3_2E:BANKJ3]
-Déjame tirado, y nunca te perdonaré.
+[JDT6_5:JDT6]
+~w~Protege a ~b~Salvatore~w~ de los ~r~Sindacco~w~.
-[BJM3_2:BANKJ3]
-~r~¡Hilary está muerto!
+[JDT6_6:JDT6]
+~w~¡Ha muerto uno de los ~b~guardias de Salvatore~w~!
-[BJM3_4:BANKJ3]
-~g~¡Necesitas un coche para participar!
+[JDT6_7:JDT6]
+~w~¡Han matado a ambos ~b~guardias de Salvatore~w~!
-[BNK3_1:BANKJ3]
-Vale. Te llevaré pero por favor, machácame un poco.
+[JDT6_8:JDT6]
+~w~¡Es la poli!
-[BNK3_3A:BANKJ3]
-Carrera callejera ilegal en progreso en Vice Point.
+[JDT6_10:JDT6]
+~w~Apóstate en un buen lugar antes de que llegue Salvatore.
-[BNK3_3B:BANKJ3]
-Llamando a todos los agentes.
+[JDT6_11:JDT6]
+~w~¿Adónde vas? Salvatore necesita protección en el Red Light District.
-[BNK3_3C:BANKJ3]
-Corredores callejeros, ¡esto es ilegal y no está permitido!
+[JDT6_12:JDT6]
+Llega Salvatore
-{=================================== MISSION TABLE BANKJ4 ===================================}
+[JDT6_D1:JDT6]
+~w~Eh...
-[BNK4_A:BANKJ4]
-~w~Como podéis ver, caballeros, éste va a ser el dinero más fácil que hayamos ganado jamás.
+[JDT6_D4:JDT6]
+~w~¡A alguien se le ha caído un dólar!
-[BNK4_B:BANKJ4]
-~w~Tommy, de verdad, tienes que plantearte seriamente el meterte en la abogacía.
+[JDT6_C0:JDT6]
+~w~¿Esto es lo mejor que tenéis?
-[BNK4_C:BANKJ4]
-~w~Pero, ¿qué coño te estás fumando, tío? ¡Este no es un plan sencillo!
+[JDT6_C1:JDT6]
+~w~¡Vamos!
-[BNK4_D:BANKJ4]
-~w~Bueno, de todas formas, ¿quién necesita un plan sencillo?
+[JDT6_C2:JDT6]
+~w~¡Lucháis como mariconas!
-[BNK4_E:BANKJ4]
-~w~Mira el comunismo, bien, pues ese era un plan sencillo. Y jodió bien a Rusia ¿no?
+[JDT6_C3:JDT6]
+~w~Oh, ¿tú también quieres un poco?
-[BNK4_F:BANKJ4]
-~w~Cálmate, ¿vale? Con un equipo como éste, no va a haber problemas.
+[JDT6_C4:JDT6]
+~w~¡Chúpate ésa!
-[BNK4_G:BANKJ4]
-~w~Tenemos a Cam en la caja fuerte. ¿Phil? Tú y yo nos encargaremos de la seguridad y Hilary conducirá el coche de huída.
+[JDT6_C5:JDT6]
+~w~¡Sois unas putas ratas!
-[BNK4_H:BANKJ4]
-~w~Uh, je, je, ¿no te olvidas de alguien? ¿Alguien que te ayudó siempre en esta ciudad? ¿Alguien...?
+[JDT6_C6:JDT6]
+~w~Mami, ¡esto es la leche puta!
-[BNK4_I:BANKJ4]
-~w~Ken... Ken, es cierto. Aquí Ken, él nos lavará el dinero y mantendrá las bebidas frías.
+[JDT6_A4:JDT6]
+~w~Va a bajar aquí en persona para cargarse a todo Sindacco que vea...
-[BNK4_J:BANKJ4]
-~w~No comprendo qué se supone que debo hacer aquí.
+[JDT6_A5:JDT6]
+~w~Así que yo he escurrido el bulto. Mira, he dejado un rifle en el tejado, al otro lado de la calle.
-[BNK4_K:BANKJ4]
-~w~Mira, es sencillo. ¿No has visto nunca una película?
+[JDT6_9:JDT6]
+~w~Coge el ~g~rifle de francotirador~w~ del tejado.
-[BNK4_L:BANKJ4]
-~w~Entramos en el banco, enseñamos las armas y nos marchamos siendo hombres muy ricos.
+{=================================== MISSION TABLE JDT7 ===================================}
-[P_DEAD:BANKJ4]
-~r~¡Phil está muerto!
+[JDT7_VE:JDT7]
+~r~v1.00
-[C_DEAD:BANKJ4]
-~r~¡Cam está muerto!
+[JDT7_02:JDT7]
+~w~Así que Salvatore ya ha limpiado su casa... ¡y ahora está arreglando la tuya!
-[H_DEAD:BANKJ4]
-~r~¡Hilary está muerto!
+[JDT7_03:JDT7]
+~w~¡Ahora es todo mío, Toni!
-[P_HIND:BANKJ4]
-~r~¡Has perdido a Phil!
+[JDT703A:JDT7]
+~w~Hemos echado a esos chupapollas de los Sindacco.
-[C_HIND:BANKJ4]
-~r~¡Cam se ha quedado atrás!
+[JDT7_04:JDT7]
+~w~He oído que los sicilianos intentan negociar la paz entre las familias.
-[H_HIND:BANKJ4]
-~r~¡Hilary ha sido abandonado!
+[JDT7_4A:JDT7]
+~w~Ahora mismo hay un pez gordo en casa de Sal.
-[GETCAR:BANKJ4]
-~g~¡Sube en el coche de escapada para hacer el trabajito del banco!
+[JDT7_4B:JDT7]
+~w~Pero le huele a gato encerrado.
-[TRASHED:BANKJ4]
-~r~¡DESTROZASTE EL COCHE DE FUGA!
+[JDT7_4C:JDT7]
+~w~Quiere que alguien se acerque allí y lo siga, a ver adónde va.
-[BNK4_1:BANKJ4]
-Yo conduciré.
+[JDT7_06:JDT7]
+~r~No has alcanzado el helicóptero a tiempo, ¡Massimo ya se ha ido!
-[BNK4_2:BANKJ4]
-Genial. Un pasajero. Espera a que les hable de esto al grupo.
+[JDT7_07:JDT7]
+~w~Sigue a ~r~Massimo~w~ y no lo pierdas.
-[BNK4_3A:BANKJ4]
-¡Eh, cuidado con las ruedas, Tommy!
+[JDT7_08:JDT7]
+~r~Está a punto de~w~ escaparse.
-[BNK4_3B:BANKJ4]
-¡Tommy, Hilary está ocupando mucho espacio!
+[JDT7_09:JDT7]
+~r~¡Massimo se te ha escapado!
-[BNK4_3C:BANKJ4]
-¡No es verdad!
+[JDT7_10:JDT7]
+~w~Parece que el helicóptero aterriza. No te acerques demasiado o los espantarás...
-[BNK4_3D:BANKJ4]
-¡Sí!
+[JDT7_11:JDT7]
+~r~Te has acercado demasiado. ¡Te han descubierto!
-[BNK4_3E:BANKJ4]
-Eh, callaos los dos o iréis andando.
+[JDT7_14:JDT7]
+~r~Se está~w~ yendo... ~r~Síguele~w~ otra vez...
-[BNK4_3F:BANKJ4]
-Sí, Hilary.
+[JDT7_15:JDT7]
+Parece que ~w~Massimo~w~ está aterrizando allá arriba...
-[BNK4_3I:BANKJ4]
-Por el amor de Dios, Phil, deja de agitar esa cosa.
+[JDT7_16:JDT7]
+~w~Tienes que ~y~acercarte más~w~...
-[BNK4_3J:BANKJ4]
-¡Sí, le sacarás un ojo a alguien!
+[JDT7_17:JDT7]
+~r~¡Te has cargado la tapadera!
-[BNK4_3M:BANKJ4]
-¡Mi pequeña! ¡Está hecha un desastre!
+[JDT7_21:JDT7]
+~w~¡Te han visto! ¡Liquida a ~r~los de la Tríada~w~!
-[BNK4_3O:BANKJ4]
-Te aferras a la ilusión de una permanencia perpetua...
+[JDT7_12:JDT7]
+~w~Come siamo rimasti d'accordo,
-[BNK4_3P:BANKJ4]
-¿Qué?
+[JDT712A:JDT7]
+~w~si haces que mis socios trabajen para ellos, se te recompensará bien.
-[BNK4_3Q:BANKJ4]
-Crees que todas las cosas durarán.
+[JDT7_13:JDT7]
+~w~Hepburn Heights será para los Diablos.
-[BNK4_3R:BANKJ4]
-La juventud, los seres queridos, la pizza...
+[JDT7_18:JDT7]
+~w~Así que sigue acorralando a quei bastardi dei Leone en Portland...
-[BNK4_3S:BANKJ4]
-Todo pasará o terminará y debes aceptar eso.
+[JDT718A:JDT7]
+y cuando mis socios controlen esta ciudad, se cuidará de ti.
-[BNK4_3T:BANKJ4]
-Sí, tienes razón. Gracias, Cam.
+[JDT718B:JDT7]
+Ci pensiamo noi.
-[BNK4_3U:BANKJ4]
-No hay de que.
+[JDT7_20:JDT7]
+~w~¡Por allí! ¡Es un Leone!
-[BNK4_3V:BANKJ4]
-Eh, Tommy, ¿por qué nos hemos detenido?
+[JDT7_22:JDT7]
+Distancia
-[BNK4_4A:BANKJ4]
-~w~Hilary, sigue conduciendo en torno a la manzana.
+[JD_FIN:JDT7]
+~w~¡Termina con los de la ~r~Tríada~w~!
-[BNK4_5:BANKJ4]
-~w~De acuerdo, Tommy, de acuerdo.
+[JDT7_05:JDT7]
+~w~Llega a la ~y~mansión de Salvatore~w~ antes de que se marche Massimo.
-[BNK4_6:BANKJ4]
-~w~¡ESTO ES UN ATRACO!
+[JDT7O07:JDT7]
+~w~Ve a la ~y~mansión de Salvatore~w~. Massimo se irá a las ~1~:~1~.
-[BNK4_7:BANKJ4]
-~w~¡QUE NADIE SE MUEVA!
+[JDT7O08:JDT7]
+~w~Son casi las ~1~:~1~. ¡Massimo está a punto de irse!
-[BNK4_8:BANKJ4]
-~w~¡TODO EL MUNDO CONTRA ESA PARED!
+{=================================== MISSION TABLE JDT8 ===================================}
-[BNK4_9:BANKJ4]
-¡Phil, quédate vigilando!
+[JDT8_A0:JDT8]
+~w~Toni... ¡hoy es un gran día! ¡Me van a tomar juramento, seré un "bautizado"!
-[BNK4_10:BANKJ4]
-¡No problemo!
+[JDT8_A1:JDT8]
+~w~¿J.D., un intocable? ¡Que Dios nos coja confesados!
-[BNK4_11:BANKJ4]
-Vamos, Cam, la cámara acorazada está arriba...
+[JDT8_A2:JDT8]
+~w~He esperado mucho para esto... y nunca lo habría conseguido sin ti, Toni.
-[BK4_12A:BANKJ4]
-¡Maldición! ¡Es una Flange 9000!
+[JDT8_A3:JDT8]
+~w~¡Eh! ¡Que me voy a echar a llorar!
-[BK4_12B:BANKJ4]
-Podría tardar horas en abrirla,
+[JDT8_A4:JDT8]
+~w~¡Eh, Mickey! ¿Cómo va?
-[BK4_12C:BANKJ4]
-o cinco minutos si encuentras al director.
+[JDT8_A5:JDT8]
+~w~Bien... Yo me sentaré atrás...
-[BNK4_13:BANKJ4]
-Iré a averiguar en qué agujero se ha metido.
+[JDT8_C:JDT8]
+~w~Sube al ~b~coche~w~ y lleva a J.D. a su 'bautizo'.
-[BK4_14A:BANKJ4]
-Phil, ¿van bien las cosas?
+[JDT8_C2:JDT8]
+~w~¡Métete en el ~b~coche~w~!
-[BNK4_15:BANKJ4]
-Sí. Todo está muy tranquilo.
+[JDT8_C3:JDT8]
+~w~Ve hasta la ~y~ceremonia~w~.
-[BNK4_16:BANKJ4]
-¡Tú, ven conmigo!
+[JDT8_B0:JDT8]
+~w~¡Eh, Toni, ya te digo! No puedo creerme que esté ocurriendo.
-[BNK4_17:BANKJ4]
-¡De acuerdo! ¡De acuerdo! ¡Por favor, no dispare!
+[JDT8_B1:JDT8]
+~w~He esperado tanto...
-[BNK4_18:BANKJ4]
-¡DIJE QUE NO SE MOVIESE NADIE!
+[JDT8_B2:JDT8]
+~w~¡Trabajé como un negro para los Sindacco durante años y nada!
-[BK4_19A:BANKJ4]
-Tiene un cierre temporizado.
+[JDT8_B3:JDT8]
+~w~Esos cabrones me mantuvieron al margen...
-[BK4_19B:BANKJ4]
-¡Podríais rendiros ahora mismo!
+[JDT8_B5:JDT8]
+~w~Pero Salvatore, Dios lo bendiga, no ha permitido que una minucia así sea un obstáculo.
-[BK4_20A:BANKJ4]
-Diablos, puedo hacer un puente en el cierre temporizado,
+[JDT8_B6:JDT8]
+~w~¡Ya te digo!
-[BK4_20B:BANKJ4]
-¡Así que solo necesitaremos tu código de acceso y ya está!
+[JDT8_B7:JDT8]
+~w~¡Es genial!
-[BNK4_21:BANKJ4]
-Quédate aquí. Intenta algo y serás comida para los peces. ¿Lo captas?
+[JDT8_B8:JDT8]
+~w~Toni, ¡estoy tan emocionado!
-[BNK422A:BANKJ4]
-Cam, ¿cuánto tiempo?
+[JDT8_B9:JDT8]
+~w~Toni, nunca sé qué hacer cuando me pongo tan nervioso.
-[BK4_23A:BANKJ4]
-¡Dame cinco minutos!
+[JDT8_BA:JDT8]
+~w~Mírame, no puedo creer lo que me está ocurriendo.
-[BK4_24A:BANKJ4]
-Voy a comprobar qué tal va Phil, volveré.
+[JDT8_BB:JDT8]
+~w~Al fin, ¿eh, Toni? ¡Seré un 'bautizado'!
-[BK4_24B:BANKJ4]
-¡Te dije que no tocases esa alarma!
+[JDT8_D1:JDT8]
+~w~¿Dónde está Salvatore?
-[BNK4_25:BANKJ4]
-¡Los de operaciones especiales estarán aquí en cualquier momento!
+[JDT8_D2:JDT8]
+~w~Toni, la primera ronda es mía...
-[BNK4_27:BANKJ4]
-¡Me vendría bien un poco de ayuda aquí, Tommy!
+[JDT8_D3:JDT8]
+~w~¡BANG!
-[BNK4_28:BANKJ4]
-¡SWAT de Vice City! ¡Estáis rodeados!
+[JDT8_H0:JDT8]
+~w~Eh, ese tipo era una puta rata.
-[BNK4_29:BANKJ4]
-¿Rodeados?
+[JDT8_H1:JDT8]
+~w~¡Se la jugó a su propio jefe! Disgrazia'.
-[BNK4_30:BANKJ4]
-La están cagando, ¡bastardos corruptos!
+[JDT8_H2:JDT8]
+~w~Salvatore nunca podría haber confiado en ese capullo.
-[BK4_31A:BANKJ4]
-¡Tommy! ¡La cámara acorazada está abierta!
+[JDT8_H3:JDT8]
+~w~Hunde el puto coche en el río.
-[BK4_34A:BANKJ4]
-De acuerdo, tenemos el fondo de pensiones de los SWAT. ¡Salgamos de aquí!
+[JDT8_H4:JDT8]
+~w~Puedes dejarme de camino.
-[BK4_34B:BANKJ4]
-¡De acuerdo, vosotros lo habéis pedido! ¡Habéis tenido vuestra última oportunidad!
+[JDT8_J:JDT8]
+~w~Sube al ~b~coche~w~ y lleva a Mickey a casa.
-[BK4_35A:BANKJ4]
-¡Van a arrasar el lugar!
+[JDT8_J1:JDT8]
+~w~¡La poli te ha visto con el coche!
-[BK4_35B:BANKJ4]
-¡A cubierto!
+[JDT8_J2:JDT8]
+~w~¡La poli te ha visto con el ~b~coche~w~!
-[BNK4_94:BANKJ4]
-~w~De acuerdo chicos. Ha sido tan fácil como lo habíamos planeado.
+[JDT8_J3:JDT8]
+~w~¡Vuelve a meterte en el ~b~coche~w~!
-[BM_DEAD:BANKJ4]
-~r~¡Necesitas al director del banco vivo!
+[JDT8_J4:JDT8]
+~w~Deja a Mickey en ~y~su casa~w~.
-[ASSET_A:BANKJ4]
-¡ATRACO AL BANCO COMPLETADO!
+[JDT8_K0:JDT8]
+~w~¡Yo salgo de aquí a toda hostia!
-[ASSET_B:BANKJ4]
-~g~El Club Malibú generará ahora unos ingresos máximos de hasta ~1~ $ al día. ¡Asegúrate de recaudarlos regularmente!
+[JDT8_K1:JDT8]
+~w~Recuerda. Hunde el coche en el río.
-[IDIOT:BANKJ4]
-~r~ Eso es, ve por ahí vestido como un chiflado y llamando la atención, ¡IDIOTA!
+[JDT8_F:JDT8]
+~w~Hunde el coche en el río.
-{=================================== MISSION TABLE BARON1 ===================================}
+[JDT8_F1:JDT8]
+~w~Hunde el ~b~coche~w~ en el río.
-[COK1_A:BARON1]
-Vamos nena, vamos, sí, ¡sí!
+[JDT8_G5:JDT8]
+~r~¡J.D. ha muerto!
-[COK1_B:BARON1]
-¡Estúpido caballo! ¡Te cortaré la cabeza!
+[JDT8_G6:JDT8]
+~r~¡Mickey ha muerto!
-[COK1_C:BARON1]
-¿Quién es este gilipollas?
+[JDT8_G8:JDT8]
+~r~Se supone que tenías que llevar el coche al río.
-[COK1_D:BARON1]
-Tommy Vercetti, ¿me recuerdas?
+[JDT8_X0:JDT8]
+~w~¿Adónde vas, Toni?
-[COK1_E:BARON1]
-Perdóname, estoy un poco alterado. ¡Nunca te fíes de un maldito caballo!
+[JDT8_X3:JDT8]
+~w~Vamos a llegar tarde.
-[COK1_F:BARON1]
-Hiciste un buen trabajo... ahora trabajas para mí.
+[JDT8_X1:JDT8]
+~w~Si la poli ve el coche así, fijo que nos buscará las cosquillas.
-[COK1_H:BARON1]
-Como dije amigo, trabajas para mí. Ahora, cállate. Algún Judas me ha traicionado.
+[JDT8_X2:JDT8]
+~w~La ceremonia es en Harwood.
-[COK1_I:BARON1]
-Él cree que no sé cuando dinero debería sacar con esto, pero robar un 3% es tan malo como robar el 100%.
+[JDT8_A6:JDT8]
+~w~Toni... ¡Hoy es un gran día!
-[COK1_J:BARON1]
-Nadie me hace esto a mí. ¡NADIE!
+[JDT8_A7:JDT8]
+~w~¡Van a tomarme juramento, seré un 'bautizado'!
-[COK1_K:BARON1]
-¡Le sigues desde su apartamento y ves a dónde va! Más tarde, le mataremos.
+[JDT8_A8:JDT8]
+~w~¿J.D., un intocable?
-[COK1_1:BARON1]
-¡Mierda!
+[JDT8__1:JDT8]
+~w~He esperado mucho para esto...
-[COK1_2:BARON1]
-¡Demasiado lento, abuelo!
+[JDT8__2:JDT8]
+~w~Y nunca lo habría logrado sin ti, Toni.
-[COK1_4:BARON1]
-Perdedor.
+[JDT8_A9:JDT8]
+~w~¡Que Dios nos coja confesados!
-[COK1_5:BARON1]
-¡Mejor sigue corriendo, gilipollas!
+[JDT8_D0:JDT8]
+~w~¿Eh, es aquí?
-[COK1_8:BARON1]
-~g~¡Rápido! ¡Consigue un vehículo y síguele!
+[JDT8_B4:JDT8]
+~w~solo por tener sangre irlandesa en las venas.
-[COK1_9:BARON1]
-~r~¡Se supone que debes seguirle, no matarle!
+[JDT8_G7:JDT8]
+~r~¡Los pasajeros han muerto!
-[COK1_10:BARON1]
-~r~Ve a la casa del ladrón y descubre dónde esconde el dinero.
+[JDT8_C4:JDT8]
+~w~¡Acaba con los ~r~sicarios de los Sindacco~w~ antes de que se carguen a J.D.!
-[COK1_11:BARON1]
-~g~Echa un vistazo por su ventana.
+[JDT8_0:JDT8]
+~w~Repintar el coche te hará ganar algo de tiempo, pero la poli volverá a pisarte los talones en cuanto vea el fiambre en el asiento del copiloto.
-[COK1_7:BARON1]
-~g~¡Se ha escapado por el tejado, ve tras él pero no le mates!
+[JDT8_K:JDT8]
+~w~¡Oh, no, tío!
-[COK1_G:BARON1]
-Trabajo por dinero.
+[JDT8_BC:JDT8]
+~w~Toni, colega, tienes que tranquilizarte.
-{=================================== MISSION TABLE BARON2 ===================================}
+[JDT8_C5:JDT8]
+~w~Acaba con los ~r~sicarios de los Sindacco~w~.
-[COK2_A:BARON2]
-¿Qué clase de tonto incompetente eres?
+{=================================== MISSION TABLE MAC1 ===================================}
-[COK2_B:BARON2]
-¡TONTO! ¡TONTO! ¡TONTO! ¡TONTO!
+[MAC1_AA:MAC1]
+~w~¿Mamá?
-[COK2_C:BARON2]
-Tommy...
+[MAC1_AB:MAC1]
+~w~¡Soy yo! ¡He vuelto!
-[COK2_D:BARON2]
-¿Qué pasa, Ricardo?
+[MAC1_AC:MAC1]
+~w~¿Toni...? ¿Dónde diablos te habías metido?
-[COK2_E:BARON2]
-Estos idiotas... Siempre intentan joderle a uno.
+[MAC1_AM:MAC1]
+~w~¡Ni una llamada mientras estabas desaparecido!
-[COK2_F:BARON2]
-Ese es el problema de este negocio.
+[MAC1_AD:MAC1]
+~w~¿No tenían teléfono donde estabas?
-[COK2_G:BARON2]
-¿Qué crees que estás haciendo?
+[MAC1_AE:MAC1]
+~w~¡Vamos, mamá! Sabes que no podía llamarte.
-[COK2_H:BARON2]
-Estos mamones me han fallado miserablemente.
+[MAC1_AF:MAC1]
+~w~Un hombre de verdad habría llamado a su madre.
-[COK2_I:BARON2]
-Pronto cualquier madre o padre creerán que pueden vender farlopa en Vice City.
+[MAC1_AG:MAC1]
+~w~Podrías tomar ejemplo de Giovanni Casa.
-[COK2_J:BARON2]
-¿Y ahora qué, eh? ¿La apestosa Mafia?
+[MAC1_AN:MAC1]
+~w~Él llama a su madre cada día,
-[COK2_K:BARON2]
-Ese antro de mafiosos es una fortaleza inexpugnable desde el suelo,
+[MAC1_AH:MAC1]
+~w~se ha reformado...
-[COK2_L:BARON2]
-así que Quentin... ¡Quentin! ¡QUENTIN!
+[MAC1_AO:MAC1]
+~w~¡y sus salchichas sicilianas son las mejores de la ciudad!
-[COK2_M:BARON2]
-¡Volará sobre la zona!
+[MAC1_AI:MAC1]
+~w~¡Casa! Pero mamá, Casa no se ha reformado. ¡Es un pervertido!
-[COK2_N:BARON2]
-¡Hacedles desaparecer!
+[MAC1_AJ:MAC1]
+~w~¡Eso no es más que un marujeo! ¿Qué clase de hombre eres, Toni?
-[COK2_O:BARON2]
-¿Qué crees que estás haciendo?
+[MAC1_AK:MAC1]
+~w~Muy bien, mamá, lo que tú digas.
-[COK2_P:BARON2]
-¿Qué haces aquí?
+[MAC1_AL:MAC1]
+~w~Igual le hago a Giovanni una visita... a ver en qué anda metido.
-[COK2_Q:BARON2]
-He estado haciendo preguntas por ahí, y es obvio
+[MAC1_HA:MAC1]
+~w~Creo que tengo ganas de mimitos.
-[COK2_R:BARON2]
-que Diaz se saltó el trato y se cargó a mi hermano.
+[MAC1_17:MAC1]
+~w~Demuéstrale a mamá que Giovanni Casa no es un buen tipo.
-[COK2_S:BARON2]
-¡Y te matará a ti también!
+[MAC1_B:MAC1]
+~w~Ve a tu ~y~piso~w~ a recoger la cámara.
-[COK2_T:BARON2]
-¡Puedo encargarme de Diaz!
+[MAC1_B0:MAC1]
+~w~Ve a la ~y~charcutería de Casa~w~.
-[COK2_U:BARON2]
-No. ¡Escúchame! Yo me encargaré de Diaz...
+[MAC1B2:MAC1]
+~w~¡Buen disparo! Ahora lleva la foto a ~y~casa de mamá~w~.
-[COK2_V:BARON2]
-Está empezando a confiar en mí.
+[MAC1_B3:MAC1]
+~w~Acércate en silencio a ~r~Casa~w~ y sácale una foto comprometedora.
-[COK2_1:BARON2]
-Hay una cosa que me mosquea... ¿por qué Quentin?
+[MAC1_B5:MAC1]
+~w~No espantes a ~r~Casa~w~.
-[COK2_2:BARON2]
-No sé, siempre me ha gustado... Quentin Vance...
+[MAC1_B6:MAC1]
+~r~¡Se te ha acabado el carrete! No has conseguido la foto comprometedora de Casa para llevársela a mamá.
-[COK2_3:BARON2]
-¿Vance? ¿Tu nombre es Lance Vance?
+[MAC1_B7:MAC1]
+~w~Recoge la ~g~cámara~w~.
-[COK2_4:BARON2]
-¡Eh! ¡Ya tuve bastante con eso en la escuela!
+[MAC1_C0:MAC1]
+~w~No te acerques demasiado o ~r~Casa~w~ se olerá algo.
-[COK2_5:BARON2]
-¿Alguna vez has disparado uno de esos desde un helicóptero?
+[MAC1_C1:MAC1]
+~r~¡Le has espantado! ¡Ya nunca conseguirás esa foto!
-[COK2_8:BARON2]
-En fin, ¿a dónde nos dirigimos?
+[MAC1_C2:MAC1]
+~r~¡Algo ha espantado a Casa!
-[COK2_9:BARON2]
-A Prawn Island.
+[MAC1_C3:MAC1]
+~r~¡Has perdido a Casa!
-[COK2_13:BARON2]
-Lance Vance. Pobre desgraciado.
+[MAC1_C4:MAC1]
+~r~¡Casa la ha diñado!
-[COK2_14:BARON2]
-Bien, casi hemos llegado.
+[MAC1_C5:MAC1]
+~w~¡Estás muy cerca de ~r~Casa~w~!
-[COK2_15:BARON2]
-Daremos un par de pasadas.
+[MAC1_C6:MAC1]
+~w~¡No pierdas a ~r~Casa~w~!
-[COK2_16:BARON2]
-Así que elimina a tantos como puedas.
+[MAC1_D0:MAC1]
+~w~Parece que Casa ha encontrado un poco de acción.
-[COK2_17:BARON2]
-Después te dejaré abajo y te las arreglarás solo.
+[MAC1_JA:MAC1]
+~w~Bien, señoritas, hora del biberón.
-[COK2_20:BARON2]
-¡Mierda! ¡Ésto es una zona de guerra! ¡Elimina a algunos de esos pistoleros!
+[MAC1_JB:MAC1]
+~w~¿Quién va a hacer de mamá?
-[COK2_21:BARON2]
-¡Nos están alcanzando, tío!
+[MAC1_JC:MAC1]
+~w~¡Ay, la...!
-[COK2_22:BARON2]
-¡Arreglar esta cosa no sale barato! ¡Elimínalos!
+[MAC1_IA:MAC1]
+~w~Bien, señoritas. Un segundo y estoy con vosotras.
-[COK2_23:BARON2]
-Vale, de ahora en adelante es cosa tuya... ¡Buena suerte, hermano!
+[MAC1_IB:MAC1]
+~w~Me voy a poner algo un poco más... propio de mí.
-[COK2_24:BARON2]
-Helicóptero:
+[MAC1_CA:MAC1]
+~w~¡El nene quiere un abrazo!
-[COK2_25:BARON2]
-~g~Ve y recoge el dinero del tejado.
+[MAC1_CB:MAC1]
+~w~¡Me he hecho popó!
-[COK2_27:BARON2]
-¡Estás en mi territorio, gilipollas!
+[MAC1_DA:MAC1]
+~w~¡Chupa mi muñequito! ¡Chúpalo!
-[COK2_28:BARON2]
-¡Vas a desaparecer!
+[MAC1_EA:MAC1]
+~w~¡Eh, venga, chicas! ¡Seguidme el rollo!
-[COK2_6:BARON2]
-No. Practicaré un poco por el camino.
+[MAC1_FA:MAC1]
+~w~¡MIERDA! ¡Aquí hay alguien!
-[OPEN_B:BARON2]
-Los controles policiales con dirección a la península han sido levantados
+[MAC1_FB:MAC1]
+~w~¡Rápido! ¡Meteos en la furgo!
-{=================================== MISSION TABLE BARON3 ===================================}
+[MAC1_GA:MAC1]
+~w~¡Ay, Dios! ¡Ay, Dios!
-[COK3_A:BARON3]
-Ahora ya no os sentís tan complacidas, ¿eh?
+[MAC1_GB:MAC1]
+~w~¡NO... ME... MIRES!
-[COK3_B:BARON3]
-~n~
+[MAC1_BA:MAC1]
+~w~Eh, mamá.
-[COK3_C:BARON3]
-¡Guau! Mira hacia donde mueves esa cosa.
+[MAC1_BB:MAC1]
+~w~¡Mira esta foto! El 'bueno' de Giovanni Casa... en pañales, nunca mejor dicho.
-[COK3_D:BARON3]
-Ya no habrá más mierda de paloma en mi coche, ¿eh, Tommy?
+[MAC1_BC:MAC1]
+~w~¿Así es como pasas el tiempo?
-[COK3_E:BARON3]
-Supongo que no.
+[MAC1_BD:MAC1]
+~w~¿Arrastrándote por el suelo para sacar fotos de hombres?
-[COK3_F:BARON3]
-Tienes toda la razón. Ahora escucha,
+[MAC1_BE:MAC1]
+~w~¿Qué te pasa, Antonio? ¡Me avergüenzas!
-[COK3_G:BARON3]
-¿sabes quién posee el barco más rápido de la costa este?
+[MAC1_BF:MAC1]
+~w~¡Pero...!
-[COK3_H:BARON3]
-Ni idea.
+[MAC1_BG:MAC1]
+~w~Y, con pañales o sin ellos, es mucho más bueno que tú.
-[COK3_I:BARON3]
-Yo. Y quiero que siga siendo así.
+[MAC1_B8:MAC1]
+~w~Ahora sal.
-[COK3_J:BARON3]
-Cada traficante de aquí a Caracas tiene un sueño, un barco más rápido.
+[MAC1_B1:MAC1]
+~w~Sigue a ~r~Casa~w~ pero no te acerques mucho.
-[COK3_K:BARON3]
-Se rumorea que el astillero acaba de terminar un barco así
+[MAC1_C7:MAC1]
+~w~Acerca el zoom a ~r~Casa~w~ para hacerle la foto de la ~r~vergüenza~w~.
-[COK3_L:BARON3]
-para algún mamón costarricense.
+[MAC1_D1:MAC1]
+~w~No te despegues de ~r~Casa~w~. Podría ser una oportunidad para una foto.
-[COK3_M:BARON3]
-Y Tommy... ¡QUIERO ESE BARCO!
+{=================================== MISSION TABLE MAC2 ===================================}
-[COK3_N:BARON3]
-Creo que han vuelto tus palomas.
+[MAC2_AA:MAC2]
+~w~¡Mamá...! ¡Mamá...! Vamos, mamá... háblame.
-[COK3_O:BARON3]
-¡Ah! Pensé que te tenía. ¿De dónde has salido?
+[MAC2_AB:MAC2]
+~w~¡Yo ya no soy tu 'mamá', cobarde, gallina...!
-[COK3_P:BARON3]
-¡Palomas! ¡Boom! ¡Aaaaah!
+[MAC2_AC:MAC2]
+~w~A mí no me engañas... Sé muy bien por qué no has vuelto a vivir aquí.
-[COK3_5:BARON3]
-~g~Localiza el interruptor para bajar el barco.
+[MAC2_AD:MAC2]
+~w~¡Te dan miedo los de la Tríada!
-[COK3_6:BARON3]
-~g~Lleva el barco a la mansión.
+[MAC2_AE:MAC2]
+~w~Tu padre, que el Señor lo guarde, no habría dejado que nadie le echara de su propia casa.
-[COK3_7:BARON3]
-~r~¡Destruiste el barco!
+[MAC2_AF:MAC2]
+~w~¡Pero mamá...!
-[COK3_8:BARON3]
-~g~Ve al astillero, en los muelles y roba el barco más rápido.
+[MAC2_AG:MAC2]
+~w~Pero, a diferencia de ti, tu padre no era un cagueta.
-[COK3_9:BARON3]
-~g~Ahora sube al barco.
+[MAC2_AH:MAC2]
+~w~¡Hasta que los de la Tríada no te muestren respeto, no eres mi hijo!
-{=================================== MISSION TABLE BARON4 ===================================}
+[MAC2_AI:MAC2]
+~w~Mi hija quizás, pero no mi hijo...
-[COK4_A:BARON4]
-¡Expúlsala! ¡MIERDA DE PLÁSTICO!
+[MAC2_B1:MAC2]
+~w~Demuéstrale a mamá que esa gente no te asusta. ¡Ocúpate de las ~r~dos bandas de la Tríada~w~ de Chinatown!
-[COK4_B:BARON4]
-¿Por qué me haces esto?
+[MAC2_I1:MAC2]
+~w~Hay un líder de la Tríada en esa ~r~furgoneta blindada~w~ del pescado. ¡Échalo de la carretera!
-[COK4_C:BARON4]
-¿Quién te crees que eres, maldita mierda de plástico?
+[MAC2_I2:MAC2]
+~w~La ~r~furgoneta~w~ está huyendo... ¡Y se le cae la carga! ¡Cuidado!
-[COK4_D:BARON4]
-¡QUE TE JODAN!
+[MAC2_I3:MAC2]
+~w~¡Están saliendo! ¡Acaba con esa escoria de la ~r~Tríada~w~!
-[COK4_E:BARON4]
-Se traga mi película favorita de El burro, ¡se muere!
+[MAC2_I4:MAC2]
+~w~¡Te han descubierto! ¡Cárgate a todos los ~r~miembros de la Tríada~w~!
-[COK4_F:BARON4]
-¿Qué más podría haber hecho?
+[MAC2_I5:MAC2]
+~w~Estás en territorio de la ~r~Tríada~w~. ¡Ten cuidado!
-[COK4_G:BARON4]
-Probablemente no estaba enchufado.
+[MAC2_I6:MAC2]
+~w~Una menos, queda otra más. ¡Acaba con la otra ~r~banda~w~!
-[COK4_H:BARON4]
-¿Qué?
+[MAC2_BA:MAC2]
+~w~¡Sí! ¿Me estás viendo, mamá?
-[COK4_I:BARON4]
-Maldición... No importa, puedo comprar cien más.
+[MAC2_BB:MAC2]
+~w~¡Aquí Toni Cipriani, dándoos para el pelo!
-[COK4_J:BARON4]
-Ahora, Tommy,
+[MAC2_BC:MAC2]
+~w~¡Recordad este nombre, merluzos!
-[COK4_K:BARON4]
-cada mes un camello autónomo navega hasta Vice City y amarra su yate.
+{=================================== MISSION TABLE MAC3 ===================================}
-[COK4_L:BARON4]
-Vende su partida al primer barco.
+[MAC3_A0:MAC3]
+~w~¿Mamá? Ya he vuelto...
-[COK4_M:BARON4]
-Quiero que cojas la lancha motora
+[MAC3_A1:MAC3]
+~w~¡Pero mírate! ¡Estás hecho un fideo!
-[COK4_N:BARON4]
-y que elimines a todos los otros cabrones,
+[MAC3_A2:MAC3]
+~w~Si aún vivieras aquí, con tu madre, como un hijo de verdad, ¡estarías comiendo bien!
-[COK4_O:BARON4]
-luego me traes aquí el alijo, ¿entendido?
+[MAC3_A3:MAC3]
+~w~¡Y mira esos coches que llevas!
-[COK4_P:BARON4]
-Déjame adivinar, pensaste que me podía venir bien un ángel guardián.
+[MAC3_A4:MAC3]
+~w~Me avergüenzo de ti, Antonio, de verdad.
-[COK4_Q:BARON4]
-Solo digo que tienes que dejarme participar, tío.
+[MAC3_A5:MAC3]
+~w~¡La gente va a creer que te he educado mal!
-[COK4_R:BARON4]
-Ahora ya puedes contarme toda esa basura del 'chico duro solitario',
+[MAC3_A6:MAC3]
+~w~¿Qué puedo hacer, mamá? Sabes que haría cualquier cosa por ti.
-[COK4_S:BARON4]
-pero sé que un día te voy a salvar el culo
+[MAC3_A7:MAC3]
+~w~Ese chico de los Sucho corre hoy en el centro.
-[COK4_T:BARON4]
-¡y probablemente querrás darme un beso!
+[MAC3_A8:MAC3]
+~w~¡Si fueras un poco más como él!
-[COK4_U:BARON4]
-Colgado.
+[MAC3_A9:MAC3]
+~w~Él respeta a su madre de verdad.
-[COK4_V:BARON4]
-~n~
+[MAC3_AA:MAC3]
+~w~Claro que, si tu padre estuviera aquí, ganaría la carrera...
-[COK4_1:BARON4]
-Así que Tommy, sabemos que fue Díaz quien jodió nuestro trato...
+[MAC3_AB:MAC3]
+~w~¡Y borraría de la cara esa sonrisa de chuleta a Sucho!
-[COK4_3:BARON4]
-Así que, ¿por qué coño vamos por ahí haciéndole recados?
+[MAC3_AC:MAC3]
+~w~Sí, haría que tragase plomo.
-[COK4_4:BARON4]
-Cuanto más aprendamos ahora, ¡menos tendremos que aprender cuando tomemos el control de esta ciudad!
+[MAC3_AD:MAC3]
+~w~¡Tu padre sí que era un hombre! ¡Los tenía bien puestos!
-[COK4_5:BARON4]
-Me encanta tu estilo, tío. Muy fresco.
+[MAC3_B0:MAC3]
+~w~Demuestra que ningún Sucho es rival para ti. Gana la carrera y acaba con él.
-[COK4_12:BARON4]
-¡Cuidado, vienen de todas partes!
+[MAC3_C0:MAC3]
+~w~Has derrotado al ~r~Sucho~w~, ¡ahora acaba con él!
-[COK4_13:BARON4]
-Ya está. ¡Dirígete hacia Díaz tan rápido como puedas!
+[MAC3_C1:MAC3]
+~w~¡~r~El Sucho~w~ se está largando!
-[COK4_14:BARON4]
-¿Queréis un poco de esto?
+[MAC3_X0:MAC3]
+~r~¡Has dejado que el Sucho se escape!
-[COK4_15:BARON4]
-¡A dormir con los peces!
+[MAC3_C2:MAC3]
+~w~¡~r~Sucho~w~ se está escapando!
-[COK4_16:BARON4]
-¡Comed! ¡COMED!
+{=================================== MISSION TABLE MAC4 ===================================}
-[COK4_19:BARON4]
-¡Más problemas ahí adelante!
+[MAC4_A0:MAC4]
+~w~¡Mamá...! ¡Mamá...! ¿Estás ahí?
-[COK4_20:BARON4]
-¡Hay más pistoleros en el malecón!
+[MAC4_A1:MAC4]
+~w~¡No pienso dirigirte la palabra, Toni!
-[COK4_24:BARON4]
-Buen disparo, amigo mío. Eres un verdadero y auténtico lunático de categoría A.
+[MAC4_A2:MAC4]
+~w~¡Traicionas tus raíces sicilianas!
-[COK4_25:BARON4]
-Bueno, gracias.
+[MAC4_A3:MAC4]
+~w~Cuando le hiciste esa foto a Casa, dejó de pagarnos por la protección.
-[COK4_26:BARON4]
-Nos vemos, Tommy.
+[MAC4_A4:MAC4]
+~w~¿Y qué haces tú al respecto?
-[COK4_27:BARON4]
-Vale, Sr. Lance Vance.
+[MAC4_A5:MAC4]
+~w~¡NADA!
-[COK4_28:BARON4]
-~g~¡Ve hasta el yate antes de que lleguen los otros barcos!
+[MAC4_A6:MAC4]
+~w~¡Tu padre ya lo habría hecho picadillo!
-[COK4_31:BARON4]
-~g~¡Ve al barco más rápido del embarcadero!
+[MAC4_A8:MAC4]
+~w~¡pero hace falta valor para ofender a un Cipriani!
-[COK4_32:BARON4]
-~r~¡Demasiado lento!
+[MAC4_A9:MAC4]
+~w~¡Ojalá tuvieras tú tantas pelotas!
-[COK4_33:BARON4]
-~r~¡Has destruido el barco!
+[MAC4_AA:MAC4]
+~w~¿Quieres que tenga las pelotas de Casa?
-[COK4_34:BARON4]
-~g~¡Hunde esos barcos!
+[MAC4_AB:MAC4]
+~w~¡Vale, mamá! ¡Tú lo has querido!
-[COK4_35:BARON4]
-Estado del barco:
+[MAC4_B:MAC4]
+~w~Pasa por la ~y~charcutería de Giovanni Casa~w~ y convéncelo de que dé una vuelta en coche contigo.
-{=================================== MISSION TABLE BARON5 ===================================}
+[MAC4_B0:MAC4]
+~w~Hola, Toni... ¿Cómo estás?
-[PROP_A:BARON5]
-¡PROPIEDAD ADQUIRIDA!
+[MAC4_B1:MAC4]
+~w~¿Qué pasa?
-[COK4_30:BARON5]
-~r~¡Lance está muerto!
+[MAC4_B2:MAC4]
+~w~¿Se te ha comido la lengua el gato?
-[ASS1_A:BARON5]
-He conseguido unos juguetes nuevos. Están en el maletero.
+[MAC4_B3:MAC4]
+~w~Tú y yo tenemos que hablar, Casa...
-[ASS1_B:BARON5]
-¡Mierda! ¿Dónde conseguiste todo este material?
+[MAC4_B4:MAC4]
+~w~Pero en un lugar más discreto.
-[ASS1_C:BARON5]
-Lo he estado guardando para un momento como éste.
+[MAC4_C:MAC4]
+~w~No dejes que ~r~Casa~w~ salga con vida.
-[ASS1_D:BARON5]
-¿Te gusta?
+[MAC4_C1:MAC4]
+~w~¡Pagaré por la protección, Toni! ¡Te juro que lo haré!
-[ASS1_E:BARON5]
-Sí, me gusta.
+[MAC4_C2:MAC4]
+~w~¡Au! ¡Venga, Toni! ¡Te daré todo lo que quieras!
-[ASS1_F:BARON5]
-Estúpidos mamones...
+[MAC4_C3:MAC4]
+~w~¡Haré lo que sea, Toni! ¡Lo que sea! ¡Pero no me hagas daño!
-[ASS1_G:BARON5]
-Mi hermosa casa.
+[MAC4_D1:MAC4]
+~w~¡Vale! ¡Vale! ¡Tú ganas!
-[ASS1_H:BARON5]
-¡Mirad lo que le habéis hecho!
+[MAC4_D2:MAC4]
+~w~¡Vale! ¡Vale! ¡Me rindo! ¡Me rindo! ¡Pero no me pegues más!
-[ASS1_I:BARON5]
-¡Esto es por mi hermano!
+[MAC4_D3:MAC4]
+~w~¡Ven conmigo, caraculo!
-[ASS1_J:BARON5]
-Confiaba en ti, Tommy.
+[MAC4_E0:MAC4]
+~w~Lleva a Casa al ~y~aserradero~w~.
-[ASS1_K:BARON5]
-Te hubiese convertido en...
+[MAC4_E1:MAC4]
+~w~¡No dejes a ~b~Casa~w~!
-[ASS1_L:BARON5]
-Diga buenas noches, Sr. Díaz.
+[MAC4_F0:MAC4]
+~w~Bueno y... eeh... ¿Adónde vamos?
-[ASS1_1:BARON5]
-Este lugar va a estar hasta arriba de capullos... ten cuidado...
+[MAC4_F1:MAC4]
+~w~Aún somos amigos, ¿no, Toni?
-[ASS1_2:BARON5]
-No te preocupes Tommy, te cubro.
+[MAC4_F2:MAC4]
+~w~Te daré el dinero que te debo... De verdad.
-[ASS1_13:BARON5]
-¡DÍAZ! ¡He venido a encargarme de tu negocio!
+[MAC4_F3:MAC4]
+¡Solo necesito un poco más de tiempo!
-[ASS1_14:BARON5]
-¡TOMMY! Me has traicionado... ¡Imbécil! Voy a acabar contigo muy pronto...
+[MAC4_F4:MAC4]
+~w~¿Aún le gustan a tu mamá las salchichas picantes?
-[ASS1_15:BARON5]
-~g~¡Arrasa esa mansión y mata a Diaz!
+[MAC4_F5:MAC4]
+¡Le llevaré algunas, no hay problema!
-[ASS1_16:BARON5]
-~g~¡Mata a Diaz!
+[MAC4_G0:MAC4]
+~w~Bueno... ejem... ¿Y de qué querías hablarme, Toni?
-[ASS1_17:BARON5]
-~g~Hay múltiples caminos para entrar en la mansión.
+[MAC4_G1:MAC4]
+~w~¿Es del dinero de la protección?
-[BUD1:BARON5]
-Lance
+[MAC4_G2:MAC4]
+~w~¿Es eso o no?
-[ASS1_18:BARON5]
-~g~La puerta está cerrada con llave, intenta otra ruta.
+[MAC4_G3:MAC4]
+~w~¿... Toni?
-[ASS1_19:BARON5]
-¡Por aquí!
+[MAC4_G4:MAC4]
+~w~Podemos hablarlo. ¿No, Toni?
-[ASS1_20:BARON5]
-¡Tommy, mi problema es con Quentin, no contigo, tío!
+[MAC4_G6:MAC4]
+~w~Y la gente no habla mucho estos días, Toni.
-{=================================== MISSION TABLE BIKE1 ===================================}
+[MAC4_G7:MAC4]
+~w~Ponte allí y cierra la bocaza, Casa.
-[BM1_A:BIKE1]
-¿Dónde está Baker?
+[MAC4_G8:MAC4]
+~w~Vale, Toni. Pero esto... esto me da muy mala espina.
-[BM1_B:BIKE1]
-Estoy buscando al gran Mitch Baker...
+[MAC4_G9:MAC4]
+~w~¡Eh! ¡Cuidado con eso, Toni! Es el interruptor de...
-[BM1_C:BIKE1]
-¿Quién le busca?
+[MAC4_GA:MAC4]
+~w~¡AAARRRGGGHHHHHHHH!
-[BM1_D:BIKE1]
-Tommy Vercetti.
+[MAC4_GB:MAC4]
+~w~¡Sal de aquí a toda pastilla!
-[BM1_E:BIKE1]
-Vercetti.
+[MAC4_H:MAC4]
+~w~El picadillo para las 'salchichas a la Casa' está en la ~b~furgoneta~w~, listo para llevarlo a la charcutería.
-[BM1_F:BIKE1]
-No pareces policía, así que eso te concede un minuto.
+[MAC4_H1:MAC4]
+~w~Lleva la mercancía a la ~y~charcutería de Casa~w~.
-[BM1_G:BIKE1]
-Habla rápido.
+[MAC4_H2:MAC4]
+~w~¡No dejes la ~b~furgoneta~w~ ahí!
-[BM1_H:BIKE1]
-Kent Paul dijo que podrías estar interesado en llevar la seguridad de una gira que él ha organizado.
+[MAC4_H3:MAC4]
+¡Líbrate de la poli!
-[BM1_I:BIKE1]
-¿Kent Paul? No me extraña que te enviase en su lugar.
+[MAC4_I0:MAC4]
+~w~¿Una entrega especial de picadillo...?
-[BM1_J:BIKE1]
-La última vez que estuvo aquí, se marchó por la ventana sin nada, tal cual le trajo su madre al mundo.
+[MAC4_I1:MAC4]
+~w~Nadie me había avisado.
-[BM1_K:BIKE1]
-¿Estás interesado o no?
+[MAC4_I2:MAC4]
+~w~¡Guau! ¿Qué zoo hemos asaltado esta vez?
-[BM1_L:BIKE1]
-Sólo hacemos favores a los nuestros.
+[MAC4_I3:MAC4]
+~w~¡Ahí atrás hay un montón de carne!
-[BM1_M:BIKE1]
-¿Cómo puedo unirme a vosotros?
+[MAC4_I4:MAC4]
+~w~¡Mm! ¡Deliciosa! Vale, me la llevo.
-[BM1_N:BIKE1]
-Este no es un club de campo, chico. ¿Sabes montar en moto?
+[MAC4_I6:MAC4]
+~w~Si lo descubre, se pondrá hecho una furia.
-[BM1_O:BIKE1]
-¿Sabes sentarte en un taburete y beber?
+[MAC4_I7:MAC4]
+~w~¡Y yo estaré jodido!
-[BM1_P:BIKE1]
-Cougar, Zeppelin, id a ver cómo se le da la moto a esta nenaza...
+[MAC4_X0:MAC4]
+~r~¡Demasiado rápido e indoloro para ser un castigo siciliano!
-[BM1_2:BIKE1]
-~g~¡Necesitas una Freeway o una Ángel para competir!
+[MAC4_X1:MAC4]
+~r~Se supone que tenías que entregar la furgoneta.
-[BM1_3:BIKE1]
-~r~¡Los corredores han sido atacados!
+[MAC4_X2:MAC4]
+~r~¡Has perdido a Casa!
-[BIKE1_1:BIKE1]
-Bien, modelitos caros. Veamos qué puedes hacer.
+[MAC4_E2:MAC4]
+~w~¡No te largues del ~y~aserradero~w~!
-[BM1_1:BIKE1]
-~g~Consigue una Freeway o una Ángel y ve a la parrilla de salida.
+[MAC4_I5:MAC4]
+~w~Es una suerte que Casa no esté aquí.
-{=================================== MISSION TABLE BIKE2 ===================================}
+[MAC4_G5:MAC4]
+~w~¡Sí! ¡Sí! Hablando se entiende la gente.
-[BM2_1:BIKE2]
-CAOSMETRO:
+[MAC4_CN:MAC4]
+~w~¡Policía!
-[BM2_A:BIKE2]
-Te he vuelto a ganar.
+[MAC4_CO:MAC4]
+~w~¡Ayuda!
-[BM2_B:BIKE2]
-Eh, Vercetti.
+[MAC4_CP:MAC4]
+~w~¡Que alguien pida ayuda!
-[BM2_C:BIKE2]
-Cougar dice que sabes manejar muy bien una moto.
+[MAC4_CQ:MAC4]
+~w~¡Socorro!
-[BM2_D:BIKE2]
-Sí, ¿cuántos recados más voy a tener que hacer?
+[MAC4_CR:MAC4]
+~w~¡Que alguien me ayude!
-[BM2_E:BIKE2]
-Soy un hombre muy ocupado.
+[MAC4_CS:MAC4]
+~w~¡Que alguien me saque de aquí!
-[BM2_F:BIKE2]
-Si es un combate lo que va arreglarlo todo, entonces adelante.
+[MAC4_A7:MAC4]
+~w~Puede que Casa sea un payasete,
-[BM2_G:BIKE2]
-Ser uno de nosotros no va solo de fanfarronear. Va de ser parte de una familia.
+[MAC4_C0:MAC4]
+~w~¿No podemos hablarlo civilizadamente, Toni?
-[BM2_H:BIKE2]
-Sí, he sido parte de una familia antes. No funcionó.
+[MAC4_1:MAC4]
+~w~Acércate sigilosamente a ~r~Casa~w~ por la espalda.
-[BM2_I:BIKE2]
-Sí, seguro, pero esta familia cuida de los suyos.
+{=================================== MISSION TABLE MAC5 ===================================}
-[BM2_J:BIKE2]
-No le pedimos a un hombre que haga el trabajo sucio y luego le dejamos pasar quince años de sequía.
+[MAC5_AA:MAC5]
+~w~¿Mamá? ¿Estás ahí?
-[BM2_K:BIKE2]
-Sí, es verdad. He hecho mis deberes.
+[MAC5_AB:MAC5]
+~w~¿Toni? Estoy al teléfono...
-[BM2_L:BIKE2]
-Ésta de aquí es la familia más grande de inadaptados, rebeldes y tipos duros.
+[MAC5_AC:MAC5]
+~w~Si, sí. Está aquí. Vale, de acuerdo. No se irá. Adiós.
-[BM2_M:BIKE2]
-Diablos, algunos de nosotros incluso hemos sido traicionados por nuestro propio país.
+[MAC5_AD:MAC5]
+~w~¿Toni? Has venido a enfadar a tu madre otra vez, ¿no?
-[BM2_N:BIKE2]
-Estuve preso durante Vietnam. Un tema desagradable.
+[MAC5_AE:MAC5]
+~w~Te pasas todo el día haciéndote el duro.
-[BM2_O:BIKE2]
-Por eso es por lo que voy a pedirte que vayas a armar jaleo.
+[MAC5_AF:MAC5]
+~w~No vienes a verme ni me presentas a ninguna chica apañadita.
-[BM2_P:BIKE2]
-Este maldito país necesita una patada en el culo, y nosotros se la vamos a dar.
+[MAC5_AG:MAC5]
+~w~Pero, ¿quién iba a quererte? ¡Si estás pálido y en los huesos!
-[BM2_Q:BIKE2]
-¡Así que sal de ahí, pilla una moto, demuestra a esta ciudad lo cabreado que estás!
+[MAC5_AH:MAC5]
+~w~Intentas matarme a disgustos y bochornos. ~w~Pero se acabó.
-[BM2_R:BIKE2]
-De acuerdo.
+[MAC5_AI:MAC5]
+~w~Desde ya... hemos terminado.
-[BM2_2:BIKE2]
-~g~¡Debes llenar el Caosmetro en el tiempo determinado para demostrarnos lo duro que eres!
+[MAC5_AJ:MAC5]
+~w~He encargado que te maten. Ésa es la única manera, Antonio...
-[BM2_3:BIKE2]
-~g~Este sonido indica que has llenado una parte del contador, continúa así.
+[MAC5_AK:MAC5]
+~w~Siempre has sido un chico desobediente.
-[BM2_4:BIKE2]
-~r~¡Has fracasado en llenar el Caosmetro a tiempo!
+[MAC5_AL:MAC5]
+~w~¿Qué? ¡Mamá!
-{=================================== MISSION TABLE BIKE3 ===================================}
+[MAC5_AM:MAC5]
+~w~Es lo mejor, hijo... ¡Al menos intenta morir como un hombre!
-[BM3_A:BIKE3]
-Hola, Mitch.
+[MAC5_AN:MAC5]
+~w~¡Y deja de avergonzarme!
-[BM3_B:BIKE3]
-Bueno, si es el ''tipo duro'' Vercetti.
+[MAC5_B1:MAC5]
+~w~¡Los sicarios de mamá ya están aquí!
-[BM3_C:BIKE3]
-Ahora quiero ver lo bien que sabes luchar por tu territorio.
+[MAC5_B2:MAC5]
+~w~Demuéstrale a mamá que sus ~r~sicarios~w~ no son rivales para ti. ¡Mátalos!
-[BM3_D:BIKE3]
-Una banda callejera local cometió el error de robar mi moto,
+[MAC5_B3:MAC5]
+~w~¡Ahora sí que se han enfadado! ~r~Elimínalos~w~.
-[BM3_E:BIKE3]
-probablemente para hacerse los machos o algo así.
+[MAC5_B4:MAC5]
+~w~Los ~r~sicarios~w~ saben que estás aquí. Debes alejarte de Saint Mark's.
-[BM3_F:BIKE3]
-Los chicos y yo iríamos a darles una lección sobre el respeto a las propiedades ajenas y todo eso.
+[MAC4_B6:MAC5]
+~w~¡Vienen más ~r~sicarios~w~! Sal de Saint Mark's. ¡Saben dónde estás!
-[BM3_G:BIKE3]
-En fin...
+[MAC4_B7:MAC5]
+~w~¡GRANADA! ¡CORRE!
-[BM3_H:BIKE3]
-Entonces empecé a pensar que esto sería una buena iniciación para ti.
+[MAC5_C1:MAC5]
+~w~Te has librado de ellos... pero ahora que les han pagado, harán su trabajo, por mucho que cueste.
-[BM3_I:BIKE3]
-Devuélveme mi moto y puedes decirle a Paul que tiene su seguridad.
+[MAC5_C2:MAC5]
+~w~Quedas avisado... ¡Volverán!
-[BM3_2:BIKE3]
-~r~¡Se suponía que debías traer de vuelta la moto, no destruirla!
+[HM1:MAC5]
+~w~¡No se rinden! Más ~r~sicarios~w~ van a por ti. ¡Cárgatelos!
-[BM3_3:BIKE3]
-~g~¡Lleva la moto de vuelta al bar!
+[HM2:MAC5]
+~w~¡Cuidado! Los ~r~sicarios~w~ se te acercan. ¡Liquídalos!
-[BM3_4:BIKE3]
-~g~¡Sube a la moto!
+[HM3:MAC5]
+~w~Se acercan más ~r~sicarios~w~. ¡Acaba con ellos!
-[INTRUDE:BIKE3]
-~g~¡Te han visto!
+[HM4:MAC5]
+~w~¡Hay más ~r~sicarios~w~ en camino! ¡Elimínalos!
-[BM3_6:BIKE3]
-~g~Están refugiados detrás de Ammu-Nation en la zona del centro.
+[MAC5_B5:MAC5]
+~w~Encárgate de los ~r~sicarios~w~ restantes pero no te acerques a Saint Mark's.
-[BM3_7:BIKE3]
-~g~Necesitarás una moto rápida para conseguir acceder al tejado.
+{=================================== MISSION TABLE MAR1 ===================================}
-[BM3_8:BIKE3]
-~g~Utiliza la moto para saltar desde esas escaleras hasta el tejado que hay en el extremo opuesto de la carretera.
+[MAR1M1:MAR1]
+~w~¡Llegas tarde! Típico de los hombres.
-[BM3_1:BIKE3]
-~g~Una banda local ha robado la Ángel de Mitch Baker. ¡Recupérala!
+[MAR1M2:MAR1]
+~w~Quiero ir de compras y tú vas a conducir.
-[BM3_9:BIKE3]
-~g~¡Recupera la Ángel de Mitch y sal de ahí!
+[MAR1M3:MAR1]
+~w~Así que ayúdame. Hoy quiero divertirme. ¡Aunque te dejes la piel!
-{=================================== MISSION TABLE BMX_1 ===================================}
+[MAR1M4:MAR1]
+~w~Solo tengo que acabar de arreglarme.
-[GETBIK2:BMX_1]
-¡Tienes ~1~ segundos para subirte a una moto de motocross!
+[MAR1M5:MAR1]
+~w~¡Joder! Estoy divina. Vamos, Toni.
-{=================================== MISSION TABLE BOATBUY ===================================}
+[MAR1_B:MAR1]
+~w~Lleva a María a la ~y~tienda~w~.
-[DRUG_1:BOATBUY]
-¿Hola?
+[MAR1_D:MAR1]
+~w~Espera aquí, corazón, no tardo mucho...
-[DRUG_2:BOATBUY]
-Apágalo. Hay un tipo ahí afuera.
+[MAR1_D2:MAR1]
+~w~Solo quería ver qué aspecto tenía a la luz del día.
-[DRUG_3:BOATBUY]
-¡Eh, el tipo del traje! Supongo que eres el nuevo propietario.
+[MAR1_E:MAR1]
+~w~¡Salgamos de aquí!
-[DRUG_4:BOATBUY]
-Sí. ¿Cuál de los barcos es el más rápido?
+[MAR1_E3:MAR1]
+~w~Vuelve y recoge a ~b~María~w~.
-[DRUG_5:BOATBUY]
-Ya está en el agua, tío,
+[MAR1_F:MAR1]
+~w~¡Qué divertido! Pero ahora tengo que coger algunas cosas más.
-[DRUG_6:BOATBUY]
-Pensé que querrías probarlo.
+[MAR1_G:MAR1]
+~w~No apagues el motor...
-[DRUG_7:BOATBUY]
-Tío, funciona con un motor de 300 caballos...
+[MAR1_GB:MAR1]
+~w~¡Vamos, María! ¡Basta de mangar!
-[DRUG_8:BOATBUY]
-y el casco es de fibra de vidrio, ¡sale disparado por las olas!
+[MAR1_GC:MAR1]
+~w~Ay, tranquilo, nene. ¡Solo ha sido un malentendido!
-[DRUG_9:BOATBUY]
-Puede ponerse de cero a noventa tan sólo en cuatro segundos, tío...
+[MAR1_G2:MAR1]
+~w~¡Te digo que aquí no llevo nada escondido!
-[DRUG_10:BOATBUY]
-¡y puede llevar como veinte contenedores de la mejor hierba jamaicana justo en el casco!
+[MAR1_H:MAR1]
+~w~¡Llévame a casa!
-[DRUG_11:BOATBUY]
-Así que adelante, tío, ¡está preparada para volar!
+[MAR1_I:MAR1]
+~w~¡Si me dejas aquí, haré que Salvatore te corte las pelotas!
-[DRUG_12:BOATBUY]
-Tipo trajeado, ¿tienes fuego?
+[MAR1_J:MAR1]
+~r~¡María ha muerto! ¡Madre del amor hermoso!
-[DRUG_13:BOATBUY]
-¿Colega?
+[MAR1_K:MAR1]
+~w~Toni, cariño, hoy me lo he pasado pipa.
-{=================================== MISSION TABLE CAP_1 ===================================}
+[MAR1_K2:MAR1]
+~w~Igual podrías pasarte más tarde y lo pasaríamos mejor.
-[CAP1_B1:CAP_1]
-~g~La mafia está imponiendo impuestos a tus negocios. Encuéntrales y mátales.
+[MAR1_K3:MAR1]
+~w~¡Nos vemos luego, guapetón!
-[CAP1_B2:CAP_1]
-~g~¡La mafia ha saqueado el astillero!
+[MAR1_L:MAR1]
+~w~¡Nos sigue la poli! ¡Será mejor que la despistes!
-[CAP1_B3:CAP_1]
-~g~¡La mafia ha saqueado la fábrica de helados!
+[MAR1_L2:MAR1]
+~w~¡Creo que les has despistado! ¡Vamos de compras!
-[CAP1_B4:CAP_1]
-~g~¡La mafia ha saqueado el salón de autos!
+[MAR1_M:MAR1]
+~w~¡QUE ME ROBA!
-[CAP1_B5:CAP_1]
-~g~¡La mafia ha saqueado la compañía de taxis!
+[MAR1EXT:MAR1]
+~w~Lleva a María a su ~y~apartamento~w~.
-[CAP_01:CAP_1]
-¿Cuál es la emergencia?
+[MAR1_1:MAR1]
+NONE
-[CAP_02:CAP_1]
-¿QUIÉN?
+[MAR1_D3:MAR1]
+~w~¡Quítame tus sucias manos de encima!
-[CAP_03:CAP_1]
-Tommy... unos matones mafiosos... dijeron que vendrían a recoger su parte...
+[MAR1_G3:MAR1]
+~w~¡Que me dejes en paz!
-[CAP_04:CAP_1]
-Dijeron que era dinero del Sr. Forello... me siento una basura.
+[MAR1_E2:MAR1]
+~w~¡Líbrate de la presión policial!
-[CAP_05:CAP_1]
-¿Forelli? ¿SONNY Forelli?
+{=================================== MISSION TABLE MAR2 ===================================}
-[CAP_06:CAP_1]
-Sí, ése es el tipo... creo... insistieron mucho...
+[MAR2_AA:MAR2]
+~w~¡Corta! Uno de los perros de Salvatore me llevará...
-[CAP_07:CAP_1]
-No te preocupes, abuelo, no estoy enfadado contigo.
+[MAR2_AB:MAR2]
+~w~Ay, es un encanto...
-[CAP_08:CAP_1]
-Llevadle al hospital.
+[MAR2_AC:MAR2]
+~w~aunque un poco delgadito.
-[CAP_09:CAP_1]
-Tommy... rájale un nuevo culo a ese tipo por mí...
+[MAR2_AE:MAR2]
+~w~Escucha. Quiero dar una fiesta, pero tengo el armario vacío.
-[CAP_10:CAP_1]
-Voy a rajarle en dos.
+[MAR2_AF:MAR2]
+~w~¿Tienes 'harina'? De la fina, ¿eh?
-[CAP1_2:CAP_1]
-¡Conoces las reglas, Vercetti!
+[MAR2_AG:MAR2]
+~w~Estupendo. ¡Ciao!
-[CAP1_3:CAP_1]
-¡El Sr. Forelli envía sus saludos!
+[MAR2_AH:MAR2]
+~w~Vamos, Toni. Tengo que ir a un sitio.
-[CAP1_4:CAP_1]
-¡Es el carnicero de Harwood!
+[MAR2_BA:MAR2]
+~w~¿No tienes coche?
-[CAP1_5:CAP_1]
-Decidle a Sonny... ¡Que permanezca alejado!
+[MAR2_BB:MAR2]
+~w~En marcha. El camello no me esperará todo el día.
-[CAP1_6:CAP_1]
-Vice City ahora es MÍA, NO suya.
+[MAR2_3F:MAR2]
+~w~Lleva a María a ver a los ~y~camellos~w~.
-[CAP1_7:CAP_1]
-¿Crees que puedes eliminarme, Vercetti?
+[MAR2_BC:MAR2]
+~w~Allí están. Ponte detrás de ellos. Buen chico.
-[CAP1_8:CAP_1]
-Seguiremos yendo tras de ti hasta que mueras, Vercetti.
+[MAR2_GA:MAR2]
+~w~Tú espérame aquí.
-[CAP1_9:CAP_1]
-No tienes ni una oportunidad, mamón psicótico.
+[MAR2_GB:MAR2]
+~w~Esto no me gusta...
-[CAP1_10:CAP_1]
-Te mataré, Vercetti.
+[MAR2_GC:MAR2]
+~w~Qué detalle que te preocupes. Pero soy la chica de Salvatore, tranqui.
-[CAP1_11:CAP_1]
-Siempre fuiste un gilipollas.
+[MAR2_GE:MAR2]
+~w~¡No voy a ir a ningún sitio contigo! ¿Quién diablos te crees que eres?
-[CAP1_12:CAP_1]
-Vas a morir, Vercetti.
+[MAR2_GF:MAR2]
+~w~¡En marcha!
-[CAP1_B6:CAP_1]
-~g~Has encontrado al cobrador, remátale.
+[MAR2_GG:MAR2]
+~w~¡Toni!
-[CAP1_B7:CAP_1]
-~g~Has perdido al cobrador.
+[MAR2_GH:MAR2]
+~w~¡Oh, mierda!
-[CAP1_B8:CAP_1]
-~r~El cobrador ha saqueado todos tus negocios.
+[MAR2_19:MAR2]
+~w~¡Mata a los ~r~Sindacco~w~!
-[CAP1_B9:CAP_1]
-~g~¡La mafia ha saqueado a El Malibu!
+[MAR2_EA:MAR2]
+~w~¿Ya estás contenta?
-[CAP1_B0:CAP_1]
-~g~¡La mafia ha saqueado al estudio cinematográfico!
+[MAR2_EB:MAR2]
+~w~Toni Cipriani. ¡Mi héroe!
-[CAP1_C2:CAP_1]
-~g~¡La mafia ha llegado al astillero!
+[MAR2_EC:MAR2]
+~w~¿Sabes qué? Estoy rota. Llévame a casa, machote.
-[CAP1_C3:CAP_1]
-~g~¡La mafia ha llegado a la fábrica de helados!
+[MAR2_HA:MAR2]
+~w~¿No quieres pasarte a... hacer... eh... un café o algo?
-[CAP1_C4:CAP_1]
-~g~¡La mafia ha llegado al concesionario de coches!
+[MAR2_HB:MAR2]
+~w~Paso.
-[CAP1_C5:CAP_1]
-~g~¡La mafia ha llegado a la compañía de taxis!
+[MAR2_HC:MAR2]
+~w~¿Seguro? Bueno, llámame.
-[CAP1_C9:CAP_1]
-~g~¡La mafia ha llegado al Malibú!
+[MAR2_O2:MAR2]
+~w~Lleva a María a su ~y~apartamento~w~.
-[CAP1_C0:CAP_1]
-~g~¡La mafia ha llegado al estudio cinematográfico!
+[MAR2_CA:MAR2]
+~w~¡Vamos, Toni!
-[CAP1_D2:CAP_1]
-~g~¡La mafia abandona el astillero!
+[MAR2_CB:MAR2]
+~w~¡Por Dios, Toni, ven!
-[CAP1_D3:CAP_1]
-~g~La mafia abandona la fábrica de helados!
+[MAR2_CC:MAR2]
+~w~¡Sálvame, Toni!
-[CAP1_D4:CAP_1]
-~g~¡La mafia abandona el concesionario de coches!
+[MAR2_CD:MAR2]
+~w~¡Socorro!
-[CAP1_D5:CAP_1]
-~g~¡La mafia abandona la compañía de taxis!
+[MAR2_CE:MAR2]
+~w~¡Veeeengaaaa!
-[CAP1_D9:CAP_1]
-~g~¡La mafia abandona el Malibú!
+[MAR2_FA:MAR2]
+~w~¿Y ahora de dónde se supone que sacaré la droga?
-[CAP1_D0:CAP_1]
-~g~¡La mafia abandona el estudio cinematográfico!
+[MAR2_FB:MAR2]
+~w~¡Eres el colmo, Toni!
-[CAP1B10:CAP_1]
-Has puesto límite a los recaudadores. Vienen más de camino.
+[MAR2_LM:MAR2]
+~w~Has dejado atrás a ~b~María~w~. Vuelve a por ella.
-{=================================== MISSION TABLE CARBUY ===================================}
+[MAR2_MD:MAR2]
+~r~María ha muerto.
-[CAR1_1:CARBUY]
-B.J. Smith. Y usted debe ser el Sr. Vercetti.
+[MAR2_WA:MAR2]
+~w~¡Los ~r~camellos~w~ se están escapando!
-[CAR1_2:CARBUY]
-¿Le gustaría dar una vuelta?
+[MAR2_DM:MAR2]
+~r~¡Has perdido a los camellos!
-[CAR1_3:CARBUY]
-Podría ser.
+[MAR2_DA:MAR2]
+~w~¡Vaya héroe estás hecho!
-[CAR1_4:CARBUY]
-Estoy muy triste por vender el negocio.
+[MAR2_DF:MAR2]
+~r~¡Has asustado a los camellos de María!
-[CAR1_5:CARBUY]
-Esta fue mi primera inversión después de convertirme en profesional.
+[MAR2_18:MAR2]
+~w~Embiste el ~r~coche de los Sindacco~w~ para rescatar a María.
-[CAR1_6:CARBUY]
-Pero es hora de que me mude.
+[MAR2_AD:MAR2]
+~w~... sí.
-[CAR1_7:CARBUY]
-¿Deja la ciudad?
+{=================================== MISSION TABLE MAR3 ===================================}
-[CAR1_8:CARBUY]
-No demasiado deprisa, espero.
+[MAR3_A0:MAR3]
+~w~'Querido Toni, me he puesto como primer premio de una carrera callejera.
-[CAR1_9:CARBUY]
-No. Me estoy retirando pero simplemente para preparar mi regreso.
+[MAR3_A1:MAR3]
+~w~Si Salvatore lo descubre, los dos nos vamos a meter en un marrón.
-[CAR1_10:CARBUY]
-El negocio no era demasiado fuerte,
+[MAR3_A2:MAR3]
+~w~Así que ven y sálvame el culo... Entonces puede que sea para ti...
-[CAR1_11:CARBUY]
-y mi equipo quizás se puso demasiado
+[MAR3_A3:MAR3]
+~w~Tuya para siempre, María.'
-[CAR1_12:CARBUY]
-creativo con la generación de la riqueza.
+[MAR3_E0:MAR3]
+~w~Venga, María. Vámonos.
-[CAR1_13:CARBUY]
-Obviamente, habría podido desmantelar el negocio antes de cederlo.
+[MAR3_E1:MAR3]
+~w~¡Por fin! El señor Tipo Duro mueve ficha.
-[CAR1_14:CARBUY]
-Diablos, podría haber quemado el sitio si hubiese querido.
+[MAR3_E2:MAR3]
+~w~María, eres la chica de Salvatore...
-[CAR1_15:CARBUY]
-Esta es tierra para una urbanización de primera.
+[MAR3_E3:MAR3]
+~w~¡Yo no tengo dueño!
-[CAR1_16:CARBUY]
-Oh, yo no me preocuparía por nada de eso.
+[MAR3_E4:MAR3]
+~w~¡Menudo carca estás hecho!
-[CAR1_17:CARBUY]
-Este lugar parece perfecto.
+[MAR3_E5:MAR3]
+~w~¡Vámonos de marcha, Wayne!
-[CAR1_18:CARBUY]
-Sí, así es, ¿así que entiendo que tenemos un trato?
+{=================================== MISSION TABLE MAR4 ===================================}
-{=================================== MISSION TABLE CARPAR1 ===================================}
+[MAR4_B1:MAR4]
+~w~Wayne está con su banda en ~y~Chinatown~w~.
-[MM_1_A:CARPAR1]
-~g~Atraviesa ~y~5 puntos de control ~r~¡SIN ~g~aplastar ningún ~r~CONO! ~g~Puedes atravesarlos en ~y~CUALQUIER ORDEN.
+[MAR4_B2:MAR4]
+~w~¡Plántate allí y bórralo del mapa!
-[CONE_1:CARPAR1]
-~r~¡Aplastaste un cono!
+[MAR4_C1:MAR4]
+¡~r~Wayne~w~ se escapa! ¡Pilla una moto y mátalo!
-[MM_1_C:CARPAR1]
-~y~PASA POR~g~ un punto de control para activar el temporizador. ~g~Cada punto de control te dará ~y~~1~ SEGUNDOS~g~.
+[MAR4_C3:MAR4]
+~w~¡Lo estás perdiendo! ¡No dejes que ~r~Wayne~w~ escape!
-{=================================== MISSION TABLE COPCAR ===================================}
+[MAR4_D1:MAR4]
+~w~¿Eres Wayne?
-[KILLS:COPCAR]
-MUERTES:
+[MAR4_D2:MAR4]
+~w~¿Quién lo pregunta?
-[C_BREIF:COPCAR]
-~g~Sospechoso visto por última vez en la zona de ~a~.
+[MAR4_D3:MAR4]
+~w~Soy un amigo de María.
-[C_PASS:COPCAR]
-AMENAZA ELIMINADA: ~1~ $
+[MAR4_D4:MAR4]
+~w~Pegar a las mujeres te pone a cien... ¿eh?
-[COPCART:COPCAR]
-~g~Tienes ~1~ segundos para volver al vehículo de policía antes de que termine la misión.
+[MAR4_D5:MAR4]
+~w~¡Esa perra se lo buscó!
-[C_CANC:COPCAR]
-~r~¡Misión de justiciero cancelada!
+[MAR4_D6:MAR4]
+~w~¿Sí? Bueno, pues tú también.
-[C_TIME:COPCAR]
-~r~¡Tu tiempo como representante de la ley se ha terminado!
+[MAR4_D7:MAR4]
+~w~¡A por él!
-[C_COMP1:COPCAR]
-Has completado el nivel 12 de la misión de justiciero: tu armadura personal máxima ha aumentado a 150.
+[MAR4_T1:MAR4]
+~w~¡Vamos, tío duro!
-[CLEVEL:COPCAR]
-Misión de justiciero nivel ~1~
+[MAR4_T2:MAR4]
+~w~¡No tienes huevos!
-{=================================== MISSION TABLE COUNT1 ===================================}
+[MAR4_T3:MAR4]
+~w~¡Conduces la moto con el culo!
-[CM1_A:COUNT1]
-¿Sr. Vercetti? ¿Comprando la vieja imprenta?
+[MAR4_T4:MAR4]
+~w~¡Bésame el culo, si es que logras acercarte!
-[CM1_B:COUNT1]
-Sí, mi viejo solía trabajar con ellas.
+[MAR4_F1:MAR4]
+~r~¡Has dejado que Wayne se escape!
-[CM1_C:COUNT1]
-Iba a seguirle en el negocio, pero... viví una vida diferente.
+[MAR4_P1:MAR4]
+~w~¡Has liquidado al chulito!
-[CM1_D:COUNT1]
-¿Planea vender la vieja maquinaria o destruirla?
+[MAR4_H1:MAR4]
+Salud de Wayne
-[CM1_E:COUNT1]
-Estoy pensando que podíamos imprimir algo, un periódico, una revista...
+[MAR4_C4:MAR4]
+~w~No pierdas a ~r~Wayne~w~. ¡Persíguelo y acaba con él!
-[CM1_F:COUNT1]
-Oh, mierda, hijo, todo eso es mierda de baja calidad. Siempre me ha apetecido imprimir dinero. No es tan difícil.
+[BIK_01:MAR4]
+Y ahora ¿qué te ha dado?
-[CM1_G:COUNT1]
-Ya sabes, llevo haciéndolo a pequeña escala durante años.
+[BIK_02:MAR4]
+Nada.
-[CM1_H:COUNT1]
-¿De verdad?
+[BIK_03:MAR4]
+¿De qué se trata esta vez, eh?
-[CM1_I:COUNT1]
-Claro. Pero necesitamos unas planchas de buena calidad.
+[BIK_04:MAR4]
+¿Jaco? ¿Somníferos? ¿Anfetas? ¿Demasiada coca?
-[CM1_J:COUNT1]
-¡Por supuesto! Hay un sindicato de la falsificación que opera ya en Florida.
+[BIK_08:MAR4]
+¿Quién te ha hecho esto?
-[CM1_K:COUNT1]
-¿Un sindicato?
+[BIK_09:MAR4]
+Nadie.
-[CM1_L:COUNT1]
-Sí. He escuchado algunos rumores.
+[BIK_10:MAR4]
+¿Quién ha sido?
-[CM1_M:COUNT1]
-Conozco a un tipo que es bueno con los rumores...
+[BIK_11:MAR4]
+Ese tío con el que salgo, Wayne.
-[CM1_N:COUNT1]
-Solía pasar las tardes con él, limpiando los rodillos...
+[BIK_12:MAR4]
+¿Sales con un tío? ¡Pero si eres la chica de mi jefe!
-[CM1_2A:COUNT1]
-¡Menudo trasero!
+[BIK_13:MAR4]
+Vamos, Toni, no seas tan carroza. Además, me pasa un 'speed' que flipo, ¿sabes?
-[CM1_2B:COUNT1]
-¡Vale chica, tú te lo pierdes!
+[BIK_14:MAR4]
+Me levanta la moral.
-[CM1_2C:COUNT1]
-Buenas, figura, ¿cómo va todo?
+[BIK_15:MAR4]
+Y me pone muy perra en la cama.
-[CM1_2D:COUNT1]
-¿Qué sabes sobre falsificación?
+[BIK_16:MAR4]
+Cállate. ¿Por qué te ha hecho esto...
-[CM1_2E:COUNT1]
-Estoy bien, Paul, ¿qué tal tú?
+[BIK_17:MAR4]
+ese picha floja de Wayne?
-[CM1_2F:COUNT1]
-¡Ven aquí!
+[BIK_18:MAR4]
+Le he dicho que estaba enamorada de otro.
-[CM1_2G:COUNT1]
-¡Vale! ¡Vale! Obviamente eres un hombre ocupado.
+[BIK_19:MAR4]
+Le he hablado de ti y de mí, Toni.
-[CM1_2H:COUNT1]
-Todo lo que sé sobre los asuntos turbios es que las tríadas suministran las planchas.
+[BIK_22:MAR4]
+¿Dónde está ese Wayne?
-[CM1_2I:COUNT1]
-Tienen una compañía de envíos en los muelles,
+[BIK_23:MAR4]
+Pasa lo suyo en un bar de Chinatown.
-[CM1_2J:COUNT1]
-¡el jefe sabrá cuándo vienen las próximas planchas!
+[BIK_24:MAR4]
+Te amo, Toni Cipriani.
-[CM1_2K:COUNT1]
-Gracias, Paul.
+[BIK_06:MAR4]
+- ¿No estás lo bastante colgada? ~n~ - ¡Cállate, Toni!
-[CM1_2L:COUNT1]
-¡Cuál es tu problema, lunático!
+[BIK_05:MAR4]
+¿No has tomado bastante Ducepán?
-[CM1_2M:COUNT1]
-¡Ponme otra copa, pronto!
+[BIK_20:MAR4]
+- ¡Y entonces me ha pegado! ~n~- ¡Pero si no tenemos nada! Dios, vas a acabar conmigo.
-[CM1_3:COUNT1]
-~g~¡Te han visto!
+{=================================== MISSION TABLE MAR5 ===================================}
-[CM1_5:COUNT1]
-~g~¡Ve a encontrarte con Kent Paul en el Club Malibú!
+[MAR5_EA:MAR5]
+~w~¿Por qué me has traído aquí?
-[CNT1_1:COUNT1]
-¿Quién eres tú? ¡En la cara no! ¡En la cara no!
+[MAR5_EB:MAR5]
+~w~No tengo aquí las pastis... Aquí es por donde Wayne solía pasarse.
-[CM1_1:COUNT1]
-~g~Ve al barco de la línea charter Libertine en el muelle.
+[MAR5_EC:MAR5]
+~w~¡Ya me acuerdo! ¡Tengo algún Zap escondido en Hepburn Heights!
-[CM1_2:COUNT1]
-~g~El encargado de los envíos tendrá toda la información necesaria.
+[MAR5_ED:MAR5]
+~w~¡Eh, es esa perra de María! ¡Y ése es el cabrón que mató a Wayne!
-[CNT1_2:COUNT1]
-Vale, ¡hablaré! ¡hablaré!
+[MAR5_AA:MAR5]
+~w~¡Escondí el Zap detrás del cubo de basura!
-[CM1_6:COUNT1]
-~g~¡Lleva toda la información de vuelta a la imprenta!
+[MAR5_AB:MAR5]
+~w~¡Mierda! ¡Se han llevado la basura!
-{=================================== MISSION TABLE COUNT2 ===================================}
+[MAR5_AC:MAR5]
+~w~¡Espera! ¡Ya me acuerdo! ¡Aún tengo una reserva en el piso!
-[CNT2_B1:COUNT2]
-De acuerdo, hoy el mensajero moverá las planchas de los muelles.
+[MAR5_AD:MAR5]
+~w~¿Esta vez estás segura?
-[CNT2_B2:COUNT2]
-Voy a interceptarles, coger las planchas, deshacerme de las pruebas, y volver aquí.
+[MAR5_AE:MAR5]
+~w~¡Claro que sí!
-[CNT2_B3:COUNT2]
-Dependiendo de lo bien que vaya esto,
+[MAR5_BA:MAR5]
+~w~¡Quería decir en casa de Salvatore! ¡Sí, allí!
-[CNT2_B4:COUNT2]
-podemos tener cinco minutos para imprimir el dinero antes de que el sindicato de falsificación nos encuentre, o puede que tengamos todo el año.
+[MAR5_BB:MAR5]
+~w~¡Por el amor de Dios, María!
-[CNT2_B5:COUNT2]
-De cualquier modo, quiero que los verdes salgan de las prensas cinco minutos después de que vuelva. ¿Entendido?
+[MAR5_FA:MAR5]
+~w~¿Por qué conduces tan lento? ¡Podría haber muerto de sobredosis!
-[CNT2_B6:COUNT2]
-No te preocupes, Tommy. Estaremos preparados.
+[MAR5_FB:MAR5]
+~w~¡Estoy hecha un desastre! Necesito ropa nueva, un planchado de cara... Todo...
-[CNT2_B7:COUNT2]
-Los otros chicos y yo estaremos por aquí en el vecindario, en caso de que necesites que nos ocupemos de cualquier problema.
+[MAR5_FC:MAR5]
+~w~Cariño... ¿tienes algo de dinero?
-[CNT2_B8:COUNT2]
-De acuerdo, ¿todo el mundo está tranquilo? De acuerdo. Os veré luego...
+[MAR5_FD:MAR5]
+~w~Eh... No, la verdad...
-[CNT2_01:COUNT2]
-~g~El ~r~mensajero~g~ con las planchas de falsificación llegará en cualquier momento a los ~y~muelles~g~ en un helicóptero.
+[MAR5_FE:MAR5]
+~w~¿Por qué leches te me has estado insinuando? ¡Soy la chica de Salvatore!
-[CNT2_02:COUNT2]
-~r~El mensajero de las planchas ha huido en el helicóptero.
+[MAR5_FF:MAR5]
+~w~¡Él está forrado! ¡No vuelvas a tirarme los trastos!
-[CNT2_03:COUNT2]
-~r~¡El mensajero ha llegado a su destino sano y salvo, llegas demasiado tarde!
+[MAR5_CA:MAR5]
+~w~(Gemido)
-[CNT2_04:COUNT2]
-~r~¡Has destruido las planchas en la explosión!
+[MAR5_CB:MAR5]
+~w~Mierda, creo que voy a potar.
-[CNT2_05:COUNT2]
-~g~Tienes las planchas de falsificación. Llévalas a la imprenta.
+[MAR5_CC:MAR5]
+~w~¡Voy hasta los ojos, Toni!
-[CNT2_06:COUNT2]
-~g~El mensajero ha muerto y ha dejado caer las planchas, recógelas antes de que lo haga otro.
+[MAR5_CD:MAR5]
+~w~No me encuentro muy bien.
-[CNT2_07:COUNT2]
-~g~Una de las guardias ha recogido las planchas, no la dejes escapar.
+[MAR5_CE:MAR5]
+~w~¡Vas muy rápido! ¡Y muy lento!
-[CNT2_08:COUNT2]
-~g~El ~r~mensajero~g~ ha llegado a los muelles con las planchas.
+[MAR5_NC:MAR5]
+~b~María~w~ apenas puede andar. ¡Consigue un coche!
-[CNT2_4:COUNT2]
-Negocio privado. ¡No eres bienvenido!
+[MAR5_ND:MAR5]
+~w~María apenas puede andar. ¡Consigue un vehículo!
-[CNT2_09:COUNT2]
-IMPRENTA CONSOLIDADA
+[MAR5_DA:MAR5]
+~w~¡Te vamos a matar, cabronazo!
-[CNT2_10:COUNT2]
-~g~La imprenta generará ahora unos ingresos hasta un máximo de ~1~ $. Asegúrate que lo recaudas de manera regular.
+[MAR5_DB:MAR5]
+~w~¡Tú y tu putita moriréis esta noche!
-[CNT2_11:COUNT2]
-~r~¡Las planchas están en el fondo del mar!
+[MAR5_DC:MAR5]
+~w~¡La has cagado bien por tocarnos los cojones!
-{=================================== MISSION TABLE CUBAN1 ===================================}
+[MAR5_LM:MAR5]
+~w~Has dejado atrás a ~b~María~w~. Vuelve a por ella.
-[CUB1_A:CUBAN1]
-¿Sí, tío?
+[MAR5_O1:MAR5]
+~w~Lleva a María al restaurante de ~y~Callahan Point~w~.
-[CUB1_B:CUBAN1]
-Eh, tranquilo papito, este hombre es para mí. Tú, ¿tú eres el chico?
+[MAR5_O2:MAR5]
+~w~Lleva a María a ~y~Hepburn Heights~w~.
-[CUB1_C:CUBAN1]
-Oh, sí. Tú eres el chico. Eso creo, ¿sabes?
+[MAR5_O3:MAR5]
+~w~Lleva a María a ~y~su piso~w~.
-[CUB1_D:CUBAN1]
-No. No creo que lo sepa.
+[MAR5_O4:MAR5]
+~w~Lleva a María a la ~y~mansión de Salvatore~w~.
-[CUB1_E:CUBAN1]
-¿Oh, sí? Ven aquí, tipo duro.
+[MAR5_O5:MAR5]
+~w~Vuelve a por ~b~María~w~.
-[CUB1_F:CUBAN1]
-¿Crees que puedes desafiarme?
+[MAR5_MD:MAR5]
+~r~¡María ha muerto!
-[CUB1_G:CUBAN1]
-¿Crees que puedes jugar a ese estúpido juego conmigo?
+[MAR5_O6:MAR5]
+~w~Recoge a ~b~María~w~.
-[CUB1_H:CUBAN1]
-No, creo que ya lo estás haciendo tú lo suficientemente estúpido por los dos.
+[OVER_01:MAR5]
+Oh, eh, cariño... Creía que nunca vendrías.
-[CUB1_I:CUBAN1]
-Eh, te llamó tonto, hijo.
+[OVER_02:MAR5]
+Pero ¿qué pasa contigo?
-[CUB1_J:CUBAN1]
-Y yo le llamé niñita, papá.
+[OVER_03:MAR5]
+¡Ay! Nada, cariño. Va todo bien.
-[CUB1_K:CUBAN1]
-Mírale, vestido así.
+[OVER_04:MAR5]
+Levántate, sonada de mierda. ¿Qué te has metido ahora?
-[CUB1_L:CUBAN1]
-¿Qué es esto, un traje de noche?
+[OVER_05:MAR5]
+¿Metido, ahora? No gran cosa.
-[CUB1_M:CUBAN1]
-¿Eres alguna clase de tipo duro y vistes como una mujer?
+[OVER_06:MAR5]
+Un par de... un par de las verdes... un par de las rojas fuertes.
-[CUB1_N:CUBAN1]
-También llevas pantis como una mujer, ¿eh?
+[OVER_07:MAR5]
+Y esas pastillas tan guays que me traen de Holanda.
-[CUB1_O:CUBAN1]
-¿Qué tienes contra las mujeres? ¿Prefieres a los hombres, grandullón?
+[OVER_08:MAR5]
+¡Pura dinamita! Estoy de puta madre.
-[CUB1_P:CUBAN1]
-¡Me gustan las mujeres! ¡Me gustan las mujeres! ¡Amo a mi madre, chico!
+[OVER_09:MAR5]
+No, qué va.
-[CUB1_Q:CUBAN1]
-De acuerdo, de acuerdo. Aceptaré tu palabra.
+[OVER_10:MAR5]
+¡Necesito un Zap y estaré como nueva!
-[CUB1_R:CUBAN1]
-¿Sabes conducir, amigo?
+[OVER_11:MAR5]
+Los tengo por aquí.
-[CUB1_S:CUBAN1]
-Sí... como una mujer.
+[OVER_12:MAR5]
+¿Qué es un Zap?
-[CUB1_T:CUBAN1]
-Muy gracioso. Me gustas, grandullón. Quizás puedas ayudarme.
+[OVER_13:MAR5]
+¿Un Zap? ¿No sabes lo que es un Zap?
-[CUB1_U:CUBAN1]
-Quizás puedas demostrar que eres un hombre. ¿Eh?
+[OVER_14:MAR5]
+Ay, Toni, eres tan carroza...
-[CUB1_V:CUBAN1]
-Saca el barco.
+[OVER_17:MAR5]
+¡Necesito un Zap, Toni! ¡Me muero!
-[CUB1_W:CUBAN1]
-Demuéstrame que tienes un par de cojones,
+[OVER_18:MAR5]
+Ya he estado así, es una sobredosis.
-[CUB1_X:CUBAN1]
-y no unos chiquitos de ratón.
+[OVER_19:MAR5]
+¡Consígueme un Zap, Toni!
-[CUB1_02:CUBAN1]
-De acuerdo, tío, trátalo como a una mujer.
+[OVER_20:MAR5]
+Los dejé en un restaurante de Callahan Point.
-[CUB1_03:CUBAN1]
-No está mal, un hombre de verdad.
+[OVER_21:MAR5]
+No te quedes ahí sentada, venga.
-[CUB1_04:CUBAN1]
-Tío, tienes unas pelotas bien grandes, amigo.
+[OVER_15:MAR5]
+- Toni, te quiero. ~n~ - Vamos, no digas chorradas.
-[CUB1_05:CUBAN1]
-Amigo, eres un tío.
+{=================================== MISSION TABLE VIC1 ===================================}
-[CUB1_06:CUBAN1]
-¿Puedes decir que eres un machote, tío?
+[VIC1I11:VIC1]
+~w~Te he buscado un buen rincón donde vivir, Toni.
-[CUB1_07:CUBAN1]
-Eres un ratón asustado, niñito, vete a llorar con tu mamá.
+[VIC1I12:VIC1]
+~w~Parece hecho a tu medida.
-[CUB1_08:CUBAN1]
-Eres una bazofia. Andas como un tío, hablas con un tío, pero conduces como un idiota.
+[VIC1I13:VIC1]
+~w~Vamos primero allí.
-[CUB1_09:CUBAN1]
-Brother, eres un macho. Me gustas, tío. Me gustas un montón.
+[VIC1I14:VIC1]
+~w~Eres un pedazo de pan.
-[CUB1_10:CUBAN1]
-En cualquier momento, tío. Porque tienes un par. Y todos mis amigos tienen un buen par de cojones.
+[VIC1_3:VIC1]
+~w~Lleva a Vincenzo a su ~y~almacén~w~.
-[CUB1_11:CUBAN1]
-~r~¡Mataste a Rico!
+[VIC1_4:VIC1]
+~w~¡Vuelve a meterte en el ~b~coche~w~!
-[CUB1_12:CUBAN1]
-Atraviesa el primer punto de control para comenzar la prueba.
+[VIC1_5:VIC1]
+~w~Lleva a Vincenzo al ~y~piso franco~w~.
-[CUB1_14:CUBAN1]
-¡Vuelve al bote!
+[VIC1_6:VIC1]
+~w~Camina hasta la señal amarilla, en la ~y~entrada~w~.
-[CUB1_15:CUBAN1]
-~r~Brother, eres demasiado lento.
+[VIC1_7:VIC1]
+~w~Ve hasta el icono de la ropa para cambiarte.
-[CUB1_01:CUBAN1]
-Eh, soy Rico. ¿Eres tú el tío de las pelotas grandes?
+[VIC1_8:VIC1]
+~w~Vuelve afuera con Vincenzo.
-[CUB1_13:CUBAN1]
-~g~Tienes tres minutos para recorrer el circuito.
+[VIC1_9:VIC1]
+~w~Lleva a Vincenzo a ~y~Atlantic Quays~w~.
-{=================================== MISSION TABLE CUBAN2 ===================================}
+[VIC1_9A:VIC1]
+~w~Y ahora, llévame a mi casa.
-[CUB2_A:CUBAN2]
-Un cafetito, por favor, Alberto...
+[VIC1_10:VIC1]
+~w~Sube al ~b~coche~w~.
-[CUB2_N:CUBAN2]
-Sin problema, Tommy.
+[VIC1_D1:VIC1]
+~w~¡Joder, Toni! ¡Conduces como una mujer!
-[CUB2_B:CUBAN2]
-¡Papá! ¡Un gran problema!
+[VIC1_D2:VIC1]
+~w~¡Cuidado con el puto coche!
-[CUB2_O:CUBAN2]
-Umberto, mi hijo, ¿qué ocurre?
+[VIC1_D3:VIC1]
+~w~Toni, deja de faltarme el respeto y conduce como un hombre, ¡capullo!
-[CUB2_C:CUBAN2]
-¡Los haitianos! ¡Odio a estos haitianos!
+[VIC1_C1:VIC1]
+~w~Es aquí, Toni. Hogar, dulce hogar. Bonito, ¿no?
-[CUB2_D:CUBAN2]
-¡Me han molestado por última vez!
+[VIC1_C2:VIC1]
+~w~¿Se supone que este agujero va a ser mi casa?
-[CUB2_E:CUBAN2]
-¡Nos desharemos de ellos!
+[VIC1_C3:VIC1]
+~w~¡Venga! Si te va que ni pintado...
-[CUB2_F:CUBAN2]
-Sólo necesitamos un poco de apoyo.
+[VIC1_C4:VIC1]
+~w~Ya le estás faltando el respeto al bueno de Vincenzo.
-[CUB2_G:CUBAN2]
-Ya he perdido algunos hermanos ahí fuera.
+[VIC1_C5:VIC1]
+~w~Venga, tipo duro, sube cagando leches y ponte algo de ropa decente.
-[CUB2_H:CUBAN2]
-¡Amigo, tú conduces bien!
+[VIC1_C6:VIC1]
+~w~No tengo todo el día, espabila.
-[CUB2_I:CUBAN2]
-Para ser una mujer. ¿No?
+[VIC1_C7:VIC1]
+~w~Eh, los pisos no los regalan, Toni.
-[CUB2_J:CUBAN2]
-¡Éste no es momento de bromear!
+[VIC1_C8:VIC1]
+~w~No olvides quién paga las facturas.
-[CUB2_K:CUBAN2]
-¡Vamos, maneja de nuevo para mí!
+[VIC1_C9:VIC1]
+~w~¡YO! Papá Vincenzo, un servidor.
-[CUB2_L:CUBAN2]
-¡Lleva a mis chicos allí y eliminaremos a esos haitianos!
+[VIC1C10:VIC1]
+~w~A partir de ahora, trabajas para mí.
-[CUB2_M:CUBAN2]
-¡Se meten conmigo y se meten con el chico grande de la ciudad!
+[VIC1C11:VIC1]
+~w~Espero volver a verte bien pronto por aquí.
-[CUB2_01:CUBAN2]
-No hay suficiente espacio, brother, necesitas un coche más grande.
+[VIC1_F:VIC1]
+~r~Vincenzo ha muerto.
-[CUB2_02:CUBAN2]
-¡Necesitamos refuerzos del café!
+[HOMS_01:VIC1]
+Eh... ahí lo tenemos, ¿no?
-[CUB2_03:CUBAN2]
-~g~Consigue un coche y recoge a los cubanos frente al Café Robina.
+[HOMS_02:VIC1]
+Escucha, Toni, sé que te has portado muy bien con nosotros,
-[CUB2_04:CUBAN2]
-~g~Ve y deja a los cubanos en la zona de combate.
+[HOMS_03:VIC1]
+y que has estado mucho tiempo pasando inadvertido,
-[CUB2_05:CUBAN2]
-¡Elimina a ese francotirador cobarde!
+[HOMS_04:VIC1]
+así que tómatelo con calma un tiempo, ¿eh?
-[CUB2_07:CUBAN2]
-¡Luchan como nenas! ¡Ponte a cubierto!
+[HOMS_05:VIC1]
+Vincenzo cuidará de ti.
-[CUB2_09:CUBAN2]
-¡Francotirador en el tejado!
+[HOMS_06:VIC1]
+Si necesitas pasta, pídesela.
-[CUB2_11:CUBAN2]
-~r~Estúpido, necesitábamos ese coche.
+[HOMS_07:VIC1]
+Necesitas un trabajo. Lucky se encargará de ti.
-[CUB2_12:CUBAN2]
-¡Eh, amigo! ¡Me alegro de que hayas podido venir!
+[HOMS_08:VIC1]
+¿Qué más puede pedir alguien de la familia?
-[CUB2_13:CUBAN2]
-¡Apestoso nido de haitianos, vamos a matarlos a todos!
+[HOMS_09:VIC1]
+Ni mi hijo tiene tanta suerte.
-[CUB2_14:CUBAN2]
-¡A LA CARGA!
+[HOMS_10:VIC1]
+Sr. Leone, yo me esperaba otra cosa.
-[CUB2_15:CUBAN2]
-¡Ahora, hermanos, A LA CAAARGA!
+[HOMS_11:VIC1]
+Es decir, he hecho mucho por esta familia.
-[CUB2_16:CUBAN2]
-¡Tommy, hemos demostrado nuestro valor y nuestra hombría!
+[HOMS_12:VIC1]
+Y ahora, quiere que acepte órdenes de este... este... este...
-[CUB2_17:CUBAN2]
-¡Vamos a robar esa furgoneta llena de farlopa y pegarnos el piro!
+[HOMS_13:VIC1]
+Bueno, es que no me parece... justo.
-[CUB2_18:CUBAN2]
-~g~Consigue un coche y recoge a los cubanos.
+[HOMS_14:VIC1]
+Toni, sé lo que has hecho, y nadie te está más agradecido que yo, de verdad,
-[CUB2_19:CUBAN2]
-¡Vamos a combatir como machos!
+[HOMS_15:VIC1]
+pero la idea de que vengas aquí...
-[CUB2_21:CUBAN2]
-¡Luchad como machos con un par de cojones!
+[HOMS_16:VIC1]
+y te pongas a cuestionar mi liderazgo es, francamente,
-[CUB2_22:CUBAN2]
-~g~Termina con el resto de los haitianos para que los cubanos puedan avanzar.
+[HOMS_17:VIC1]
+improcedente. ¿Capisci?
-[CUB2_23:CUBAN2]
-~g~Little Haiti estará atestado de haitianos intentando desquitarse con los cubanos. ¡Ten cuidado!
+[HOMS_18:VIC1]
+Entendido, jefe.
-[CUB2_24:CUBAN2]
-~g~Vuelve al Café Robina en la furgoneta y aparca en la parte trasera.
+[HOMS_19:VIC1]
+Bueno, cuando necesites algo, llama a Vincenzo a Atlantic Quay.
-[CUB2_25:CUBAN2]
-¡MATA A TODOS LOS HAITIANOS!
+[HOMS_20:VIC1]
+Él se encargará de ti. ¿No, Lucky?
-{=================================== MISSION TABLE CUBAN3 ===================================}
+[HOMS_21:VIC1]
+Por supuesto, jefe. Lo que usted diga.
-[CUB3_A:CUBAN3]
-Alberto. Un cafetito, señor.
+[HOMS_22:VIC1]
+¿Qué tal si vamos para allá?
-[CUB3_B:CUBAN3]
-Papaíto, no sirvas a esta sabandija.
+{=================================== MISSION TABLE VIC2 ===================================}
-[CUB3_C:CUBAN3]
-¡Tienes dos caras, Tommy!
+[VIC2M2:VIC2]
+Pero hace días que ese colgado no nos trae pasta.
-[CUB3_D:CUBAN3]
-¡Tú, guapito de cara, o eres un falso o eres un calzonazos!
+[VIC2M3:VIC2]
+Igual hay que meterle una patada en el culo para espabilarlo y que trabaje.
-[CUB3_E:CUBAN3]
-¡Los haitianos! Tío, se están riendo de mí.
+[VIC2M4:VIC2]
+Es como una zorra... Me recuerda un poco a ti.
-[CUB3_F:CUBAN3]
-Vale, vale. ¿Qué problema tienes?
+[VIC2M5:VIC2]
+~w~¿Qué insinúas?
-[CUB3_G:CUBAN3]
-Se están riendo de mí, Tommy. ¡De mí!
+[VIC2M6:VIC2]
+¡No INSINÚO nada!
-[CUB3_H:CUBAN3]
-¡Umberto Robina! ¡Están haciendo lo que quieren!
+[VIC2M7:VIC2]
+Te digo directamente que vayas allí y te asegures de que ese capullo empiece a traer el puto dinero.
-[CUB3_I:CUBAN3]
-Nadie hace lo que quiere, Umberto, hacen lo que les dejes hacer.
+[VIC2_B:VIC2]
+~W~Consigue un coche.
-[CUB3_J:CUBAN3]
-¿Qué?
+[VIC2OB1:VIC2]
+~w~Lleva al camello a ~y~trabajar~w~.
+
+[VIC2_C:VIC2]
+~w~¡Necesitas un coche para llevarlo a su zona habitual!
+
+[VIC2_D:VIC2]
+~w~Recoge al camello de Vincenzo en el distrito de ~y~St. Mark~w~.
+
+[VIC2_E:VIC2]
+~w~Vincenzo dice que eres un rajado de mierda que no se curra su zona...
+
+[VIC2_E2:VIC2]
+~w~¡Eh! No soy ningún rajado.
+
+[VIC2_EX:VIC2]
+~w~He... estado enfermo, nada más.
+
+[VIC2_E3:VIC2]
+~w~Volveré a currar mañana... o puede que pasado.
+
+[VIC2_E4:VIC2]
+~w~Creo que vas a ir ahora mismo... ¡Te guste o no!
+
+[VIC2_F:VIC2]
+~w~¡Eh! ¡No me dejes aquí! ¡Este barrio es muy chungo, colega!
+
+[VIC2_F2:VIC2]
+~w~Has dejado atrás al ~b~camello de Vincenzo~w~, vuelve y recógelo.
+
+[VIC2_G:VIC2]
+~w~¡Escucha, tío! Se lo dije a Vinnie... ¡Chinatown ya no es de los Leone!
+
+[VIC2_G2:VIC2]
+~w~¡Están entrando los Sindacco! Si voy allí, soy hombre muerto.
+
+[VIC2_G3:VIC2]
+~w~Claro... claro...
+
+[VIC2_G4:VIC2]
+~w~¡Lo que yo te diga! Los Sindacco están en el ajo.
+
+[VIC2_G5:VIC2]
+~w~No me encuentro muy bien... Creo que estoy destemplado o algo.
+
+[VIC2_H:VIC2]
+~w~Para cerca del ~b~camello~w~.
+
+[VIC2_I:VIC2]
+~w~Ay, tío...
+
+[VIC2_J:VIC2]
+~r~¡El camello de Vincenzo la ha diñado!
+
+[VIC2_K:VIC2]
+~w~Lleva al camello de Vincenzo a ~y~Chinatown~w~.
+
+[VIC2_1:VIC2]
+NONE
+
+[VIC2M1:VIC2]
+Tenemos a un camello trabajando en la zona norte de Chinatown.
+
+{=================================== MISSION TABLE VIC3 ===================================}
+
+[VIC3_H1:VIC3]
+~w~Mantén pulsado~h~ ~k~ ~PDLT~ ~w~para ~h~fijar un blanco~w~ y pulsa~h~ ~k~ ~PDFW~ ~w~para atacar.
+
+[VIC3_H2:VIC3]
+~w~Pulsa~h~ ~k~ ~PDFW~ ~w~para atacar al ~h~camello~w~.
+
+[VIC3O2:VIC3]
+~w~Dirígete a ~y~Chinatown~w~.
+
+[VIC3O3:VIC3]
+~w~Cárgate al ~r~camello~w~.
+
+[VIC3_1:VIC3]
+~w~Vincenzo te ha dejado un regalito que puede ayudarte.
+
+[VIC3_BA:VIC3]
+~w~¡Fuera del territorio de los Leone, pringado!
+
+[VIC3_BB:VIC3]
+~w~¿Quieres más, caraculo?
+
+[VIC3_BC:VIC3]
+~w~¡Aquí solo trafican los Leone! ¡Y nadie más! ¿Me oís, putos Sindacco?
+
+[VIC3_6:VIC3]
+~w~Los Sindacco están traficando por toda Chinatown.
+
+[VIC3_AA:VIC3]
+~w~¿Vinnie?
+
+[VIC3_AB:VIC3]
+~w~¡Por Dios, Toni! ¿Es que no puedo tener ni un respiro?
+
+[VIC3_AD:VIC3]
+~w~Bastantes 'aprietos' tengo para que encima aparezcas por mi queli...
+
+[VIC3_AE:VIC3]
+~w~Pero ya que estás aquí, que sepas que no he visto nada de pasta...
+
+[VIC3_AF:VIC3]
+~w~... de ese camello. ¿Y sabes por qué?
+
+[VIC3_AG:VIC3]
+~w~Ilústrame...
+
+[VIC3_AJ:VIC3]
+~w~Los Sindacco han empezado a traficar, ¡y encima en nuestro territorio!
+
+[VIC3_AK:VIC3]
+~w~¿Vas a permitirlo, Toni?
+
+[VIC3_AL:VIC3]
+~w~¡Quiero que vayas para Chinatown!
+
+[VIC3_AM:VIC3]
+~w~Muy bien, 'jefe', voy para allá.
+
+[VIC3_AN:VIC3]
+~w~¡Santo Dios! ¿Es que nunca está el puto papel a mano?
+
+[VIC3_AH:VIC3]
+~w~¡Porque está muerto, idiota! Alguien se lo ha cargado.
+
+[VIC3O4:VIC3]
+~r~Los Sindacco~w~ están traficando por toda Chinatown. ¡Dales una lección que no olviden!
+
+{=================================== MISSION TABLE VIC4 ===================================}
+
+[VIC4_H2:VIC4]
+~w~Sigue el ~h~punto del bote de spray~w~ en el radar para encontrar el ~h~Pay 'n' Spray~w~.
+
+[VIC4_A2:VIC4]
+~w~Ponte en la ~h~señal~w~ para ver las armas disponibles.
+
+[VIC4_A3:VIC4]
+Selecciona diferentes armas usando~h~ ~k~ ~AMMOV~.
+
+[VIC4_A4:VIC4]
+~w~Compra el arma seleccionada pulsando~h~ ~k~ ~AMBUY~ ~w~, pero solo si tienes el dinero suficiente.
+
+[VIC4_A6:VIC4]
+~w~Hay ocho tipos de armas que puedes usar.
+
+[VIC4_A7:VIC4]
+~w~Solo puedes llevar una de cada tipo a la vez: un tipo de pistola, un tipo de escopeta, etc.
+
+[VIC4_H1:VIC4]
+~w~Sigue el ~h~punto de la pistola~w~ en el radar para encontrar ~h~Ammu-Nation~w~.
+
+[VIC4_H3:VIC4]
+~w~Sigue el ~h~punto de la pistola~w~ en el radar para volver a encontrar ~h~Ammu-Nation~w~.
+
+[VIC4_AB:VIC4]
+~w~Es difícil de olvidar...
+
+[VIC4_AD:VIC4]
+~w~Lo interesante es que ahora quiere ser un Leone.
+
+[VIC4_AE:VIC4]
+~w~¡Que le den! Ya eligió en su momento.
+
+[VIC4_AG:VIC4]
+~w~Hola, ¿cerebrito? Dios, Toni, Sal dice que eres un matón lerdo,
+
+[VIC4_AH:VIC4]
+~w~pero no me imaginaba que tanto.
+
+[VIC4_AJ:VIC4]
+~w~Va a ser nuestro infiltrado.
+
+[VIC4_AK:VIC4]
+~w~Solo hay un detalle.
+
+[VIC4_AL:VIC4]
+~w~Un gorila de los Sindacco no le deja ni respirar.
+
+[VIC4_AM:VIC4]
+~w~Quiero que elimines ese pequeño obstáculo...
+
+[VIC4_AN:VIC4]
+~w~y pongas a J.D. de nuestra parte. ¿Capisci?
+
+[VIC4_2:VIC4]
+~w~Coge el ~g~móvil~w~ como prueba de que has hecho el trabajo.
+
+[VIC4_BA:VIC4]
+~w~Toni... ¡me has dado material para una 'snuff' del copón!
+
+[VIC4_BB:VIC4]
+~w~¿J.D.? ¿Lo has visto? ¿ME HAS ESTADO FILMANDO?
+
+[VIC4_BC:VIC4]
+~w~Ay, solo estaba... ¡Es para uso privado!
+
+[VIC4_BD:VIC4]
+~w~¡Qué ganas tengo de que estemos en el mismo equipo!
+
+[VIC4_BE:VIC4]
+~w~No te emociones demasiado. Aún me debes dinero.
+
+[VIC4_BF:VIC4]
+~w~Quédate en prenda el coche del tarugo de los Sindacco, ¿eh?
+
+[VIC4_BG:VIC4]
+~w~Lo repintas un poco, y nadie lo reconocerá.
+
+[VIC4_BH:VIC4]
+~w~Ya me encargo yo del fiambre.
+
+[VIC4_CA:VIC4]
+~w~¡Eh! ¡Fuera de aquí!
+
+[VIC4_CB:VIC4]
+~w~¡Aquí no se te ha perdido nada!
+
+[VIC4_61:VIC4]
+~w~Sube al ~b~coche~w~.
+
+[VIC4_62:VIC4]
+~w~Ve hasta el Pay 'n' Spray.
+
+[VIC4_DC:VIC4]
+~r~¡J.D. te ha dicho que repintes el buga!
+
+[VIC4_PR:VIC4]
+(Ring, ring...)
+
+[VIC4O1A:VIC4]
+~w~Ve ~y~adentro.
+
+[VIC4_O2:VIC4]
+~w~Compra una pistola.
+
+[VIC4_O4:VIC4]
+~w~Mata al ~r~gorila de los Sindacco~w~.
+
+[VIC4_FA:VIC4]
+~r~¡Ahora no te venderá armas!
+
+[VIC4_O3:VIC4]
+~w~Dirígete a las ~y~obras~w~.
+
+[VIC4_AC:VIC4]
+~w~Ahora lleva un bar de guarras controlado por los Sindacco, quiero decir... un 'club de alterne'.
+
+[VIC4_AA:VIC4]
+~w~Eh, ¿te acuerdas de J.D. O'Toole?
+
+[VIC4_AI:VIC4]
+~w~Usemos a J.D. para sacar ventaja de los planes de los Sindacco.
+
+[HELP42:VIC4]
+~w~Cuando apuntes, pulsa ~h~ ~k~ ~FREE1~ ~w~para entrar en el ~h~modo puntería libre~w~ y luego usa ~h~ ~k~ ~FREE2~ ~w~para mover el punto de mira.
+
+[VIC4_A1:VIC4]
+~w~Ve a la tienda ~y~Ammu-Nation~w~ más cercana para conseguir un arma.
+
+[VIC4_O1:VIC4]
+~w~Vuelve a ~y~Ammu-Nation~w~ y consigue un arma.
+
+[VIC4_1:VIC4]
+~w~El ~r~capo de los Sindacco~w~ está detrás de las obras. ¡Mátalo!
+
+{=================================== MISSION TABLE VIC5 ===================================}
+
+[VIC5_H:VIC5]
+Leone
+
+[VIC5_I0:VIC5]
+~w~Ah, eres tú.
+
+[VIC5_I1:VIC5]
+~w~Sí, soy yo. ¡Qué te parece! ¿Qué sabes tú?
+
+[VIC5_I2:VIC5]
+~w~Te diré lo que sé, tío duro.
+
+[VIC5_I3:VIC5]
+~w~Unos chicos nuestros han cagado un puto trabajo que era para imbéciles.
+
+[VIC5_I4:VIC5]
+~w~Capullos de mierda, no pueden ni con un simple atraco.
+
+[VIC5_I5:VIC5]
+~w~Y ahora la poli los ha acorralado en Chinatown.
+
+[VIC5_I6:VIC5]
+~w~¡Pardillos! ¿Por qué estoy rodeado de tantos putos idiotas?
+
+[VIC5_I7:VIC5]
+~w~No sé... ¿'Dime con quién andas...'?
+
+[VIC5_I8:VIC5]
+~w~¡Vaya, así que eres un payaso!
+
+[VIC5_I9:VIC5]
+~w~Bueno, pues ríete de esto, listillo:
+
+[VIC5I10:VIC5]
+~w~¡Vas a limpiarme el culito en este asunto!
+
+[VIC5I11:VIC5]
+~w~Venga, ve allí y trae de vuelta a esos capullos.
+
+[VIC5_F1:VIC5]
+~r~Ha muerto uno de la banda.
+
+[VIC5_G0:VIC5]
+~w~Consigue un coche de 4 plazas.
+
+[VIC5_O1:VIC5]
+~w~Rescata a los ~b~hombres de Vincenzo~w~.
+
+[VIC5_O2:VIC5]
+~w~¡Saca a ~b~la banda~w~ de aquí!
+
+[VIC5_O3:VIC5]
+~w~¡Despista a la poli!
+
+[VIC5_O4:VIC5]
+~w~Lleva a la banda con ~y~Vincenzo~w~.
+
+[VIC5_O5:VIC5]
+~w~¡Mantén a ~b~la banda~w~ unida!
+
+[VIC5_O6:VIC5]
+~w~Necesitas un vehículo con más espacio.
+
+[VIC5_G1:VIC5]
+~w~¿Qué vamos a hacer?
+
+[VIC5_G2:VIC5]
+~w~¡La cagamos!
+
+[VIC5_G3:VIC5]
+~w~¡No pienso ir a la trena por ese bastardo de Vincenzo!
+
+[VIC5_G4:VIC5]
+~w~¡Salgamos cagando leches!
+
+[VIC5_G5:VIC5]
+~w~¡Espérame!
+
+[VIC5_G6:VIC5]
+~w~¡Pisa a fondo, Toni!
+
+[VIC5_E1:VIC5]
+~w~¿Habéis traído el botín o qué?
+
+[VIC5_E2:VIC5]
+~w~Lo teníamos todo, jefe...
+
+[VIC5_E3:VIC5]
+~w~Oye, mira, no pudimos hacer nada...
+
+[VIC5_E4:VIC5]
+~w~No pudisteis hacer nada...
+
+[VIC5_E5:VIC5]
+~w~Las cosas se torcieron... No podría haber salido peor.
+
+[VIC5_E6:VIC5]
+~w~¿Qué te parece...? ¿Están mejor las cosas ahora, o peor?
+
+[VIC5_E7:VIC5]
+~w~Si la volvéis a cagar alguna vez, las cosas también os irán peor.
+
+[VIC5_E8:VIC5]
+~w~Y ahora limpiad esta mierda y fuera de mi vista.
+
+[VIC5_E9:VIC5]
+~w~Tengo que hacer una llamada.
+
+[VIC5E10:VIC5]
+~w~Te lo juro, Toni, el día que volviste, mi suerte se fue a tomar por culo.
+
+[VIC5E11:VIC5]
+~w~Eres un puto gafe.
+
+{=================================== MISSION TABLE VIC6 ===================================}
+
+[VIC6_BA:VIC6]
+~w~¡Alto!
+
+[VIC6_BB:VIC6]
+~w~¡Quieto, capullo!
+
+[VIC6_P0:VIC6]
+~w~Recoge el ~b~coche de Vincenzo~w~.
+
+[VIC6_P1:VIC6]
+~w~¡Es una trampa de la poli! ¡Saca el coche de aquí!
+
+[VIC6_P2:VIC6]
+~w~¡Despista a la poli!
+
+[VIC6_P3:VIC6]
+~w~¡Has despistado a la poli! ¡Lleva el coche al ~y~garaje de Vincenzo~w~.
+
+[VIC6_P4:VIC6]
+~w~Haz que Vincenzo no vuelva a tomarte el pelo. ¡Tritúrale el ~b~coche~w~!
+
+[VIC6_P5:VIC6]
+~w~¡Súbete al ~b~coche~w~ de Vincenzo!
+
+[VIC6_P6:VIC6]
+~w~Lleva el coche al ~y~garaje de Vincenzo~w~.
+
+[VIC6_PA:VIC6]
+~r~¡Has destruido el coche!
+
+[VIC6_D1:VIC6]
+~w~Sube al ~b~coche~w~.
+
+[VIC6_D3:VIC6]
+~w~Lleva el coche a la ~y~trituradora~w~.
+
+[VIC6_D4:VIC6]
+~w~Sal y espera a que la trituradora haga su trabajo.
+
+[VIC6_D5:VIC6]
+~r~¡Tenías que haber triturado el coche!
+
+[VIC6_AA:VIC6]
+~w~¡Eh! Toni, ¿y el coche?
+
+[VIC6_AB:VIC6]
+~w~¡Eres un hijo de puta, Vinnie! ¡Me la has jugado!
+
+[VIC6_AC:VIC6]
+~w~¿Que te la he jugado? ¿JUGÁRTELA?
+
+[VIC6_AD:VIC6]
+~w~¡Cuando volviste a la ciudad no tenías nada! ¡NADA!
+
+[VIC6_AE:VIC6]
+~w~¿Eso es jugártela, cabrón desagradecido?
+
+[VIC6_AF:VIC6]
+~w~¡Te di un piso y un trabajo!
+
+[VIC6_AG:VIC6]
+~w~Y por tanta generosidad solo espero que asumas algunos riesgos.
+
+[VIC6_AH:VIC6]
+~w~No soy una hermanita de la caridad, ¿vale? Ni tu querido papá.
+
+[VIC6_AI:VIC6]
+~w~¿Que había unos polis vigilando el coche? ¡Pues que les jodan!
+
+[VIC6_AJ:VIC6]
+~w~Cuando te diga que hagas algo, lo haces. ¿Capisci?
+
+[VIC6_AK:VIC6]
+~w~Oh, sí. Ya lo entiendo, Vinnie.
+
+[VIC6_AL:VIC6]
+~w~Entiendo que mientras trabaje para ti seré el pito del sereno.
+
+[VIC6_AM:VIC6]
+~w~Yo ya estaba en el ajo cuando tú aún te comías los mocos.
+
+[VIC6_AN:VIC6]
+~w~Quédate con tu trabajo de mierda, 'jefe'. Lo dejo.
+
+[VIC6_AO:VIC6]
+~w~Toni, te vas a arrepentir de...
+
+[VIC6_D2:VIC6]
+~w~Para en la ~y~señal~w~.
+
+[HOTW_01:VIC6]
+Claro, mamá. Luego te llamo.
+
+[HOTW_28:VIC6]
+¡Vincenzo!
+
+[HOTW_02:VIC6]
+Por supuesto que me estoy portando bien.
+
+[HOTW_03:VIC6]
+Te quiero.
+
+[HOTW_04:VIC6]
+Eh, Cheryl, encanto, date un respiro.
+
+[HOTW_05:VIC6]
+Y ahora vete de aquí.
+
+[HOTW_06:VIC6]
+Toma, para que te empolves.
+
+[HOTW_11:VIC6]
+Das asco. ¿Es que no tienes respeto?
+
+[HOTW_12:VIC6]
+¿Respeto? Esto es 'multitarea', Antonio.
+
+[HOTW_15:VIC6]
+Si para ti es un problema, le pido a Ray que te ayude.
+
+[HOTW_16:VIC6]
+Que te jodan.
+
+[HOTW_17:VIC6]
+Solo te estaba tocando los huevos, cálmate.
+
+[HOTW_18:VIC6]
+Escucha, tío duro. Necesito que me hagas un favor.
+
+[HOTW_19:VIC6]
+Las chicas están locas por la coca. Tengo un coche lleno aparcado en Trenton.
+
+[HOTW_20:VIC6]
+Ve a recogerlo... y dame un telefonazo.
+
+[HOTW_21:VIC6]
+¿Acaso soy tu chófer? Que te den.
+
+[HOTW_22:VIC6]
+Escucha, escucha, escucha...
+
+[HOTW_23:VIC6]
+Lo haría yo, pero los federales me vigilan.
+
+[HOTW_24:VIC6]
+Sabes que no te dejaré colgado. Confía en mí.
+
+[HOTW_25:VIC6]
+Y recuerda que aquí tenemos una jerarquía. ¿Capisci? Ahora sé un buen chico.
+
+[HOTW_07:VIC6]
+- Eh, ¿quién te quiere a ti, ángel? ~n~ - Tú, Vinnie.
+
+[HOTW_09:VIC6]
+- ¿Hablabas con tu madre? ~n~ - Claro.
+
+[HOTW_13:VIC6]
+- ¿Qué, es que a ti no te gusta que una tía buena te la chupe? ~n~ - ¿Qué?
+
+{=================================== MISSION TABLE VIC7 ===================================}
+
+[VIC7_VE:VIC7]
+~r~V 1.01
+
+[VIC7_1:VIC7]
+~w~¡Vinnie, estoy aquí! ¿Dónde diablos te metes? ¿Qué es esto?
+
+[VIC7_2:VIC7]
+~w~¿Toni? ¿Come stai...? Sabía que llamarías.
+
+[VIC7_3:VIC7]
+~w~Escucha, estoy en los muelles de Portland.
+
+[VIC7_3A:VIC7]
+~w~Nos está llegando un gran cargamento. Pásate. Estoy a bordo del carguero grande.
+
+[VIC7_3B:VIC7]
+~w~No sé, Vinnie... Tengo cosas que hacer.
+
+[VIC7_3D:VIC7]
+~w~Pero a partir de ahora seremos como socios. Más que socios... ¡Hermanos!
+
+[VIC7_3E:VIC7]
+~w~Venga, vamos. ¿Qué me dices? Es lo que quiere Salvatore.
+
+[VIC7_3F:VIC7]
+~w~Vale. Por Salvatore.
+
+[VIC7_3G:VIC7]
+~w~Pero si me vuelves a salir con el rollo paternalista, te mato.
+
+[VIC7_4:VIC7]
+~w~¡Buaja, ja, ja! ¡Te voy a descuartizar, hombrecillo!
+
+[VIC7_4A:VIC7]
+~w~Reúnete con Vincenzo en el ~y~carguero~w~.
+
+[VIC7_5:VIC7]
+~w~¡Mueeeeere!
+
+[VIC7_6:VIC7]
+~w~¡Ja, ja, ja, ja, ja, ja, ja, ja!
+
+[VIC7_7:VIC7]
+~w~¿Ya está muerto ese baboso tontolculo?
+
+[VIC7_8:VIC7]
+~w~Odio decepcionarte, Vinnie.
+
+[VIC7_9:VIC7]
+~w~¡Hijo de puta! ¿Es que ni siquiera sabes morirte?
+
+[VIC7_10:VIC7]
+~w~No deberías haber vuelto, Toni.
+
+[VIC710A:VIC7]
+~w~Yo me he dejado los riñones por Salvatore.
+
+[VIC710B:VIC7]
+~w~Y tú simplemente vuelves a la ciudad y, hala, él que si 'Toni esto', que si 'Toni aquello'...
+
+[VIC7_11:VIC7]
+~w~¡Ésta es mi ciudad, Toni! ¡MI CIUDAD!
+
+[VIC711A:VIC7]
+~w~¡No me la vas a quitar!
+
+[VIC7_12:VIC7]
+~w~Voy a disfrutar con esto.
+
+[VIC7_4B:VIC7]
+~w~El lugar parece desierto. Sube al ~y~barco~w~.
+
+[VIC7_13:VIC7]
+~w~Dirígete a la ~y~salida~w~.
+
+[VIC7_3C:VIC7]
+~w~Mira, sé que he sido muy capullo contigo, Toni. Y lo siento mucho.
+
+[VIC7HUL:VIC7]
+~w~Baja a la ~y~bodega~w~.
+
+{=================================== MISSION TABLE SALS1 ===================================}
+
+[SALS1_1:SALS1]
+NONE
+
+[SALS1_6:SALS1]
+Mata al ~r~alcalde R.C. Hole~w~.
+
+[SALS1_7:SALS1]
+Hazte con el ~g~teléfono móvil~r~ del alcalde.
+
+[SALS1_8:SALS1]
+~r~El alcalde ha terminado sus ejercicios.
+
+[SALS1_9:SALS1]
+~r~El alcalde ha escapado.
+
+[SALS110:SALS1]
+Llévale el teléfono a ~y~Salvatore~w~.
+
+[SALS111:SALS1]
+¡Suelta el arma o disparo!
+
+[SALS112:SALS1]
+¡Te persiguen! ¡El ~r~alcalde~w~ se está largando!
+
+[SS1_AA:SALS1]
+¿Sí? Soy Toni.
+
+[SS1_AB:SALS1]
+¡Ese bastardo del alcalde me está jodiendo y no pienso tolerarlo!
+
+[SS1_AC:SALS1]
+Cálmate, Sal. Veré si puedo resolver el problema por ti.
+
+[SS1_AD:SALS1]
+Eres un buen chico, Toni, tu padre se sentiría orgulloso de ti.
+
+[SS1_AE:SALS1]
+Escucha, ese puto gordo del alcalde suele ir a correr a diario por el parque.
+
+[SS1_AF:SALS1]
+Asegúrate de que pierda el aliento... ¡para siempre!
+
+[SS1_AG:SALS1]
+¡Y trae su teléfono!
+
+[SS1_AH:SALS1]
+A ver con quién ha estado hablando.
+
+[SALS1AA:SALS1]
+¿Sí? Soy Toni.
+
+[SALS1AB:SALS1]
+Ese puto alcalde me está jodiendo.
+
+[SALS1AC:SALS1]
+¡Y no pienso tolerarlo!
+
+[SALS1AD:SALS1]
+Tranquilo. Yo lo quitaré de en medio.
+
+[SALS1AE:SALS1]
+Eres un buen chico, Toni.
+
+[SALS1AF:SALS1]
+Ese puto gordo suele ir a correr a diario por el parque.
+
+[SALS1AG:SALS1]
+Que pierda el aliento... ¡para siempre!
+
+[SALS1AH:SALS1]
+Ah sí, y trae su teléfono.
+
+[SALS1AI:SALS1]
+A ver con quién ha estado hablando...
+
+[SALS1C1:SALS1]
+¡Suelte al arma, señor!
+
+[SALS1C2:SALS1]
+¡Alto o disparo!
+
+[SALS1C3:SALS1]
+¡Quieto!
+
+[SALS1C4:SALS1]
+¡No haga una estupidez!
+
+[SALS113:SALS1]
+~r~El teléfono del alcalde ha sido destruido.
+
+[SALS114:SALS1]
+¡Cuidado! Te dispararán si te ven entrar armado en el parque.
+
+{=================================== MISSION TABLE SALS2 ===================================}
+
+[SALS2_1:SALS2]
+~w~Sube al ~b~coche~w~.
+
+[SALS2_2:SALS2]
+~w~Ve al ~y~lugar de reunión~w~.
+
+[SALS2_3:SALS2]
+~w~Vuelve al ~b~coche~w~.
+
+[SALS2_4:SALS2]
+~r~¡Han matado a Mickey!
+
+[SALS2_5:SALS2]
+~r~¡Han matado a un hombre de Salvatore!
+
+[SALS2AA:SALS2]
+'Toni.
+
+[SALS2AB:SALS2]
+Unos cuantos chicos pasarán a recogerte.
+
+[SALS2AC:SALS2]
+Asegúrate de estar cuando lleguen.
+
+[SALS2AD:SALS2]
+Ciao, Salvatore.'
+
+[SALS2CA:SALS2]
+Eh, ¿Toni?
+
+[SALS2CC:SALS2]
+Vamos, sube, tú conduces.
+
+[SALS2CD:SALS2]
+Mickey, qué... eeh... ¿qué pasa?
+
+[SALS2CE:SALS2]
+Vamos, Cipriani. ¿Qué, te crees que he venido a liquidarte?
+
+[SALS2BA:SALS2]
+Salvatore está ahí abajo...
+
+[SALS2BC:SALS2]
+Toni, hijo mío,
+
+[SALS2BD:SALS2]
+¡hoy es el día en que te bautizaremos!
+
+[SALS2BE:SALS2]
+Oh, Salvatore. Sr. Leone.
+
+[SALS2BF:SALS2]
+Mamá ha estado esperando este día.
+
+[SALS2CB:SALS2]
+Venga, sube, vamos a dar una vuelta.
+
+[SALS2BB:SALS2]
+Madonna mia, ¿a qué estás esperando?
+
+[SALS2AF:SALS2]
+Eh, Toni, gracias. Estamos en contacto.
+
+{=================================== MISSION TABLE SALS3 ===================================}
+
+[SALS3_1:SALS3]
+NONE
+
+[SALS3_2:SALS3]
+Daño
+
+[SALS313:SALS3]
+~r~¡El consejero del alcalde es historia!
+
+[SALS314:SALS3]
+~r~¡Salvatore es historia!
+
+[SALS3AA:SALS3]
+Toni, ¡sube!
+
+[SALS3AB:SALS3]
+¿Adónde vamos?
+
+[SALS3AC:SALS3]
+Vamos a tener una charlita con el ayudante del alcalde sobre Franco Forelli.
+
+[SALS3BA:SALS3]
+¡Eh, fuera de mi barco!
+
+[SALS3BB:SALS3]
+Usted se viene conmigo.
+
+[SALS3BC:SALS3]
+¡No puede hacerme esto!
+
+[SALS3BD:SALS3]
+Rápido, ¡el servicio secreto estará vigilando!
+
+[SALS3CA:SALS3]
+Toni, cuidado, ¡hay pistoleros en esas rocas!
+
+[SALS3CB:SALS3]
+¡Pistoleros al frente!
+
+[SALS3CC:SALS3]
+¡Cuidado a la derecha, Toni!
+
+[SALS3CD:SALS3]
+¡A la izquierda, Toni, izquierda!
+
+[SALS3CE:SALS3]
+¡Hay más en el embarcadero!
+
+[SALS3CF:SALS3]
+Hostia puta, ¡el servicio secreto viene en helicóptero!
+
+[SALS3DA:SALS3]
+¡... El alcalde no hacía una mierda sin el beneplácito de Franco!
+
+[SALS3DB:SALS3]
+¡Al alcalde nadie le daba órdenes!
+
+[SALS3DC:SALS3]
+¡Aargh! ¡Espere, espere, tiene razón!
+
+[SALS3DE:SALS3]
+¿Los sicilianos? ¿Por qué?
+
+[SALS3DF:SALS3]
+Son los amos de Franco y quieren una guerra entre las Familias de Liberty.
+
+[SALS3DG:SALS3]
+Cuando las cosas se apacigüen, se harán con todo.
+
+[SALS3DH:SALS3]
+Toni, te llamo luego.
+
+[SALS3DI:SALS3]
+Ahora voy a echar a este truño a la bahía.
+
+[SALS3DD:SALS3]
+Esos sicilianos... Ellos forzaron a Franco a hacerlo.
+
+{=================================== MISSION TABLE SALS4 ===================================}
+
+[SALS4_1:SALS4]
+NONE
+
+[SALS4BA:SALS4]
+Sí.
+
+[SALS4BB:SALS4]
+¡Gracias a Dios que lo has cogido!
+
+[SALS4BC:SALS4]
+¿Qué pasa, Sal?
+
+[SALS4BD:SALS4]
+¡He ido a espiar a los Forelli a Fort Staunton y se ha montado un pollo!
+
+[SALS4BE:SALS4]
+Los Sindacco han declarado la guerra a los Forelli,
+
+[SALS4BF:SALS4]
+¡y estoy en medio de este Cristo!
+
+[SALS4BG:SALS4]
+Voy para allá.
+
+[SALS4BH:SALS4]
+Trae la limusina, está blindada. ¡Vamos a necesitarla!
+
+[SALS4AA:SALS4]
+¡Larguémonos de aquí, Toni!
+
+[SALS4AB:SALS4]
+¡Llévame a la limusina!
+
+[SALS4AE:SALS4]
+Vale, tengo un sitio en Newport. ¡Llévame allí!
+
+[SALS4AF:SALS4]
+Eh, Toni, gracias. Estamos en contacto.
+
+[SAL4_1:SALS4]
+Recoge la ~b~limusina~w~ del Sr. Leone.
+
+[SAL4_2:SALS4]
+~r~¡Has destruido el coche!
+
+[SAL4_3:SALS4]
+Lleva el coche a ~y~Fort Staunton~w~.
+
+[SAL4_4:SALS4]
+~r~¡Has dejado que Salvatore muera!
+
+[SAL4_6:SALS4]
+~b~Salvatore~w~ está en el callejón.
+
+[SAL4_9:SALS4]
+Ve al ~y~garaje~w~.
+
+[SAL4_11:SALS4]
+Has dejado atrás a ~b~Salvatore~w~.
+
+[SAL4_12:SALS4]
+Está bloqueada, deja la limusina aquí y sigue a pie.
+
+[SAL4_13:SALS4]
+Vuelve a la ~b~limusina~w~.
+
+[SAL4_14:SALS4]
+Lleva a Salvatore y la limusina al ~y~garaje~w~ de Newport.
+
+[SAL4_15:SALS4]
+¡Encuentra a ~b~Salvatore~w~!
+
+[SAL4_16:SALS4]
+Lleva a Salvatore a la ~b~limusina~w~.
+
+[SAL4_17:SALS4]
+Espera a que ~b~Salvatore~w~ se meta en la limusina.
+
+{=================================== MISSION TABLE SALS5 ===================================}
+
+[SALS5_1:SALS5]
+~w~Pulsa~h~ ~k~ ~VEACC~ ~w~para controlar el coche de Paul Sindacco.
+
+[SALS5_2:SALS5]
+~w~Acaba con los ~r~Forelli~w~ en la reunión antes de que Sindacco encuentre el sistema de control.
+
+[SALS5_3:SALS5]
+~r~¡Paul Sindacco ha muerto!
+
+[SALS5_4:SALS5]
+~r~La furgoneta de Salvatore ha sido destruida.
+
+[SALS5_5:SALS5]
+~r~Sindacco ha llegado a la reunión.
+
+[SALS5_6:SALS5]
+~w~Ve a la ~b~furgoneta~w~.
+
+[SALS5_7:SALS5]
+~w~Tiempo restante
+
+[SALS5_8:SALS5]
+~r~¡Sindacco ha encontrado el sistema de control!
+
+[SALS5_9:SALS5]
+~w~El control por satélite del coche de Sindacco tendrá una respuesta lenta.
+
+[SALS510:SALS5]
+~w~Daño
+
+[SALS5AA:SALS5]
+¡Eh!
+
+[SALS5AB:SALS5]
+Toni, soy yo, tengo algo para ti...
+
+[SALS5AC:SALS5]
+Te va a encantar, te lo pasarás pipa.
+
+[SALS5AD:SALS5]
+¿Qué quiere que haga, Sal?
+
+[SALS5AE:SALS5]
+Hay una furgoneta por allí.
+
+[SALS5AF:SALS5]
+Llámame cuando la encuentres.
+
+[SALS5BA:SALS5]
+Vale, Sal, ya estoy en la furgoneta.
+
+[SALS5BB:SALS5]
+Bien. Hemos estado trasteando en el coche de Paulie Sindacco.
+
+[SALS5BC:SALS5]
+¿Y qué quiere que haga?
+
+[SALS5BD:SALS5]
+Paulie se va a reunir con los Forelli.
+
+[SALS5BE:SALS5]
+Está intentando negociar una tregua.
+
+[SALS5BF:SALS5]
+Usa el equipo de la furgoneta para controlar el coche de Paulie...
+
+[SALS5BG:SALS5]
+y joder la reunión.
+
+[SALS5CA:SALS5]
+Pero ¿qué...?
+
+[SALS5CC:SALS5]
+¡Dios, socorro!
+
+[SALS5CD:SALS5]
+¡Quita de en medio!
+
+[SALS5CF:SALS5]
+¡Que alguien me ayude!
+
+[SALS5CG:SALS5]
+¡Mi coche está poseíííídooo!
+
+[SALS5CE:SALS5]
+¡Este coche intenta matarme!
+
+[SALS5CB:SALS5]
+Eh, ¿qué está pasando aquí?
+
+{=================================== MISSION TABLE SALS6 ===================================}
+
+[SALS601:SALS6]
+~w~Sal ha dejado una ~b~embarcación ~w~en el muelle sudoeste, detén al consejero.
+
+[SALS602:SALS6]
+~w~Va por la costa. ¡A por ~r~él~w~!
+
+[SALS603:SALS6]
+~r~Está volviendo ~w~con Franco Forelli.
+
+[SALS604:SALS6]
+~r~El consejero ha regresado a Fort Staunton.
+
+[SALS605:SALS6]
+~r~¡Se ha escapado!
+
+[SALS606:SALS6]
+¡~r~Se escapa ~w~a pie!
+
+[SALS607:SALS6]
+~w~Se escapa en un ~r~coche robado~w~.
+
+[SALS608:SALS6]
+~r~¡No puedes perseguirle sin una embarcación!
+
+[SALS6AA:SALS6]
+Hola.
+
+[SALS6AC:SALS6]
+Forelli-Sindacco feud.
+
+[SALS6AD:SALS6]
+Se dirige a ver a Franco Forelli justo ahora.
+
+[SALS6AE:SALS6]
+A nosotros nos iría muy bien que Franco no se enterara de nada,
+
+[SALS6AF:SALS6]
+y que esta guerra continuara.
+
+[SALS6AG:SALS6]
+Encárgate de ese charlatán.
+
+[SALS6AH:SALS6]
+Dalo por hecho, Sal.
+
+[SALS6AB:SALS6]
+Toni, un consejero ha descubierto que la Mafia siciliana está tras la guerra entre los Forelli y los Sindacco.
+
+[SLS6_20:SALS6]
+~w~Está volviendo con Franco Forelli, ¡acaba con ~r~él~w~!
+
+[SLS6_21:SALS6]
+~w~¡Acaba con ~r~él~w~!
+
+{=================================== MISSION TABLE NEDS1 ===================================}
+
+[NEDS1_1:NEDS1]
+El FBI va de camino a recoger un informe manipulado que salpica a estrellas del deporte.
+
+[NEDS1_2:NEDS1]
+Si el informe llega a manos de los federales, encerrarán a gente inocente.
+
+[NEDS1_3:NEDS1]
+Quiero que lo interceptes y me lo entregues, yo lo esconderé.
+
+[NEDS1_4:NEDS1]
+Necesitarás un vehículo del FBI.
+
+[NEDS1_5:NEDS1]
+Ha habido un atraco a mano armada frustrado. El FBI está en la escena del crimen.
+
+[NEDS1_6:NEDS1]
+Róbales el coche y ve al lugar de reunión antes de que sea tarde.
+
+[NEDS1_8:NEDS1]
+Vuelve al ~b~coche del FBI~w~.
+
+[NEDS1_9:NEDS1]
+Ve al ~y~lugar de reunión~w~.
+
+[NEDS111:NEDS1]
+¡Líbrate de la poli!
+
+[NEDS113:NEDS1]
+Aquí tengo el informe que prometí...
+
+[NEDS114:NEDS1]
+¡Qué...! ¿Ya hay un agente aquí?
-[CUB3_K:CUBAN3]
-¿Quieres que alguien se ocupe del asunto?
+[NEDS115:NEDS1]
+¿Otro coche del FBI? ¡Espera! ¡Eres un impostor!
-[CUB3_L:CUBAN3]
-Puedo manejarlo, pero va a costarte.
+[NEDS116:NEDS1]
+¡Detén al ~r~confidente~w~!
-[CUB3_M:CUBAN3]
-Sé que somos hermanos y todo eso, pero esto es un negocio.
+[NEDS117:NEDS1]
+Recupera el ~g~informe~w~.
-[CUB3_N:CUBAN3]
-Tommy. Eres un verdadero macho. Un tío de negocios, un caballero.
+[NEDS118:NEDS1]
+Entrega el informe en el ~y~Liberty Tree~w~.
-[CUB3_O:CUBAN3]
-Estos haitianos. Tienen un alijo de producto que va a venir desde alta mar, un material de primera.
+[NEDS119:NEDS1]
+~r~El coche del FBI que necesitabas es historia.
-[CUB3_P:CUBAN3]
-Lo agarraremos y acabaremos con ellos.
+[NEDS120:NEDS1]
+~r~¡Has llegado demasiado tarde! ¡El confidente le ha dado el informe al FBI!
-[CUB3_Q:CUBAN3]
-Tú lo agarrarás y yo cuidaré de ti. Como a un hermano. Como a un hijo.
+[NEDS121:NEDS1]
+Buen trabajo, Toni. Dios estará muy contento contigo.
-[CUB3_R:CUBAN3]
-Creo que prefiero el dinero a que me mezas en tus rodillas, amigo.
+[NEDS122:NEDS1]
+Me aseguraré de que quede en buenas manos.
-[CUB3_01:CUBAN3]
-Eh, Rico. Bonito barco, ¿estás preparado?
+[NEDS123:NEDS1]
+"Taluego".
-[CUB3_03:CUBAN3]
-~g~Recoge todos los maletines llenos de nieve y dinero.
+[NEDS124:NEDS1]
+~r~¡El informe se ha estropeado!
-[CUB3_04:CUBAN3]
-~g~Lleva la nieve y la pasta de vuelta a Umberto.
+[NEDS1AA:NEDS1]
+Perdóneme, padre, porque he pecado...
-[CUB3_05:CUBAN3]
-Sí, Tommy. Tienes que apuntar bien.
+[NEDS1AB:NEDS1]
+Mierda, el diablo se va a poner las botas contigo, Antonio.
-[CUB3_06:CUBAN3]
-Mi barco, no me sirve lleno de agujeros, ¿eh?
+[NEDS1AE:NEDS1]
+Un pobre diablo me ha confesado que ha falsificado un informe de dopaje sobre los mejores atletas del país.
-[CUB3_07:CUBAN3]
-~g~Ve y reúnete con Rico. Te llevará al punto de encuentro.
+[NEDS1AF:NEDS1]
+Si impides que se lo dé al FBI, salvarás la carrera de muchos inocentes.
+[NEDS1AG:NEDS1]
+Considérelo hecho, padre.
-[CUB3_02:CUBAN3]
-~g~¡MATA A TODOS LOS HAITIANOS DEL BARCO!
-[CUB3_08:CUBAN3]
-Oh, oh... Una banda de cubanos. ¡Nos atacan!
+[NEDS1BA:NEDS1]
+Llegas pronto.
-{=================================== MISSION TABLE CUBAN4 ===================================}
+[NEDS1BB:NEDS1]
+No te conozco, ¿dónde está John-O?
-[CUB4_A:CUBAN4]
-Ey, señoritas. ¿Sabéis qué voy a hacer?
+[NEDS1BC:NEDS1]
+¿John-O? No ha podido venir.
-[CUB4_B:CUBAN4]
-Primero voy a matar un haitiano. ¿Y después?
+[NEDS1BD:NEDS1]
+Eh, ¡ahí está John-O!
-[CUB4_C:CUBAN4]
-Voy a hacer el amor como un hombre.
+[NEDS1BE:NEDS1]
+¡Dame eso!
-[CUB4_D:CUBAN4]
-¿Sabes chica? Algo así.
+[NEDS1BF:NEDS1]
+¡Que te den!
-[CUB4_E:CUBAN4]
-¡Perdedor!
+[NEDS1AD:NEDS1]
+Ah, la segunda opción va más con mi estilo...
-[CUB4_F:CUBAN4]
-Mamón.
+[NEDS1AC:NEDS1]
+Ahora puedes irte y rezar un rosario, o hacer el trabajo sucio del Señor.
-[CUB4_G:CUBAN4]
-¡Ey, nena, no te tocaría ni con una pértiga de tres metros!
+[NEDS1_7:NEDS1]
+Ve a la escena del crimen, roba un ~b~coche del FBI~w~ y llega al punto de reunión antes de las ~1~:~1~.
-[CUB4_H:CUBAN4]
-¡A Umberto Robina le gustan las damas! ¡No una cabra con faldas!
+[NEDS125:NEDS1]
+Ve a la escena del crimen, roba un ~b~coche del FBI~w~ y llega al punto de reunión antes de las 0~1~:~1~.
-[CUB4_I:CUBAN4]
-¡Tommy! ¡Tommy, te quiero, te quiero! ¡Vámonos!
+[NEDS126:NEDS1]
+Ve a la escena del crimen, roba un ~b~coche del FBI~w~ y llega al punto de reunión antes de las 0~1~:0~1~.
-[CUB4_J:CUBAN4]
-¿Irnos a donde? ¿No me puedo tomar primero una taza de café?
+[NEDS127:NEDS1]
+Ve a la escena del crimen, roba un ~b~coche del FBI~w~ y llega al punto de reunión antes de las ~1~:0~1~.
-[CUB4_K:CUBAN4]
-¡No hay tiempo para café! Además, acabo de tomarme uno.
+{=================================== MISSION TABLE NEDS2 ===================================}
-[CUB4_L:CUBAN4]
-Vamos a eliminar a los haitianos.
+[NEDS2_1:NEDS2]
+NONE
-[CUB4_M:CUBAN4]
-Tommy, ¿qué tiene un elefante dentro de la trompa?
+[NEDS2AA:NEDS2]
+Perdóneme, padre, porque he pecado...
-[CUB4_N:CUBAN4]
-¡Dos metros de mocos! ¡Ja, ja, ja!
+[NEDS2AB:NEDS2]
+Hostia puta, Toni, ¿qué has hecho ahora?
-[CUB4_O:CUBAN4]
-Lo que tú digas, Umberto.
+[NEDS2AC:NEDS2]
+¡Eh! Esa boca, padre...
-[CUB4_P:CUBAN4]
-Tommy, ve y consíguenos un cochecito haitiano.
+[NEDS2AD:NEDS2]
+Ah sí, Ave María, llena eres de lo que sea...
-[CUB4_Q:CUBAN4]
-Cuando lo tengas, regresa y recoge a mi chico
+[NEDS2AE:NEDS2]
+Un alma descarriada ha confesado ser un perista de diamantes.
-[CUB4_R:CUBAN4]
-Pepe, y llévale a donde los haitianos.
+[NEDS2AF:NEDS2]
+Ayuda a esa oveja descarriada a redimirse, quítale el botín y devolveremos los diamantes...
-[CUB4_S:CUBAN4]
-Luego te vas hasta la planta de procesamiento de los haitianos y utilizas su disolvente como explosivo.
+[NB2_2:NEDS2]
+Coge el ~g~maletín~w~ y mata a todos los miembros de la banda.
-[CUB4_T:CUBAN4]
-¡Boom! Y ¡Bye bye!
+[NB2_3:NEDS2]
+Lleva el maletín a las ~y~oficinas del Liberty Tree~w~.
-[CUB4_U:CUBAN4]
-Umberto, ¿qué hay de ti?
+[NB2_4:NEDS2]
+¡Hazte con el ~g~maletín~w~!
-[CUB4_V:CUBAN4]
-Oh, voy a quedarme atrás, a vigilar el café con papá.
+[NB2_1:NEDS2]
+¡Esto es una encerrona!
-[CUB4_W:CUBAN4]
-No se siente muy bien, ¿sabes?
+[NB2_6:NEDS2]
+¡Mata a todos los ~r~guardias~w~!
-[CUB4_02:CUBAN4]
-~g~Las bombas se colocarán con un temporizador de 45 segundos.
+[NB2_7:NEDS2]
+¡Destruye el ~r~helicóptero~w~!
-[CUB4_04:CUBAN4]
-~r~¡Alertaste a la base, ahora no habrá modo de entrar!
+[NB2_5:NEDS2]
+Acaba con el ~r~helicóptero~w~ y los ~r~guardias~w~ y coge el ~g~maletín~w~.
-[CUB4_07:CUBAN4]
-El disolvente está a la vuelta, amigo.
+{=================================== MISSION TABLE NEDS3 ===================================}
-[CUB4_08:CUBAN4]
-Hola, amigos.
+[NEDS3AA:NEDS3]
+Perdóneme, padre, porque he pecado...
-[CUB4_09:CUBAN4]
-Bueno. Haitianos putas. Muerte.
+[NEDS3AB:NEDS3]
+Toni, comparado con los degenerados que hay en esta ciudad, eres un santo.
-[CUB4_10:CUBAN4]
-Vamos.
+[NEDS3AC:NEDS3]
+Sus coches sueltan el nocivo gas del diablo en los pulmones de nuestros hijos. ¡Están profanando el Edén!
-[CUB4_11:CUBAN4]
-Sí, vamos.
+[NEDS3AD:NEDS3]
+Demuéstrales a esos pecadores lo equivocados que están.
-[CUB4_12:CUBAN4]
-¡Ey, necesitamos un coche de la banda haitiana!
+[NEDS3_1:NEDS3]
+Coge el coche de bomberos y causa tantos choques en cadena, accidentes y actos de destrucción como puedas.
-[CUB4_13:CUBAN4]
-¡Oye, vamos a encontrar a nuestros muchachos!
+[NEDS3_2:NEDS3]
+~w~Roba el ~b~coche de bomberos~w~.
-[CUB4_14:CUBAN4]
-Sigue a mis compadres.
+[NEDS3_3:NEDS3]
+~w~Tienes ~1~ s. para volver al ~b~coche de bomberos~w~.
-[CUB4_15:CUBAN4]
-De acuerdo, allá vas...
+[NEDS3_4:NEDS3]
+Puntuación
-[CUB4_16:CUBAN4]
-¡Voy a colocar la bomba, cubridme!
+[NEDS3_5:NEDS3]
+¡Ve a provocar tantos choques en cadena, accidentes y actos de destrucción como puedas!
-[CUB4_17:CUBAN4]
-¡CORRED!
+[NEDS3_6:NEDS3]
+¡Peatón chafado!
-[CUB4_18:CUBAN4]
-Tío, esta es una parte bonita de la ciudad...
+[NEDS3_7:NEDS3]
+¡Vehículo hundido!
-[CUB4_19:CUBAN4]
-Compadre, este lugar es un vertedero.
+[NEDS3_8:NEDS3]
+¡Vehículo destruido!
-[CUB4_20:CUBAN4]
-Yo tenía una hermosa mujer... vivía por este barrio.
+[NEDS3_9:NEDS3]
+¡Vehículo volcado!
-[CUB4_21:CUBAN4]
-Sabes, allí hacen unas buenas pizzas.
+[NEDS310:NEDS3]
+~r~El coche de bomberos está destrozado.
-[CUB4_22:CUBAN4]
-¡Tío! ¡Conduces como un loco!
+[NEDS311:NEDS3]
+¡Trompo de 360°!
-[CUB4_23:CUBAN4]
-¿Te has perdido tío?
+[NEDS312:NEDS3]
+¡Trompo de 720°!
-[CUB4_24:CUBAN4]
-Dejaste atrás a Pepe, ve a por él.
+[NEDS313:NEDS3]
+¡Trompo de 1080°!
-[CUB4_03:CUBAN4]
-~g~Permanece en el coche hasta que puedas aparcar sin percances dentro del recinto.
+[NEDS314:NEDS3]
+~r~Has bajado del coche de bomberos.
-[CUB4_26:CUBAN4]
-~g~Recoge a Pepe, dirígete al norte a Little Haiti y roba un coche Voodoo.
+[NEDS315:NEDS3]
+¡Vueltas de campana!
-[CUB4_27:CUBAN4]
-~g~Ve y reúnete con Rico y los otros cubanos.
+[NEDS316:NEDS3]
+¡Tres choques de una tacada!
-[CUB4_28:CUBAN4]
-~g~Reúnete con los otros cubanos en el laboratorio de sustancias químicas haitiano.
+[NEDS317:NEDS3]
+¡Cuatro choques de una tacada!
-[CUB4_29:CUBAN4]
-~g~Camina hacia cada uno de los marcadores para colocar la bomba en ese lugar.
+[NEDS318:NEDS3]
+¡Cinco choques de una tacada!
-[CUB4_30:CUBAN4]
-~g~Después de colocar las tres bombas, aléjate de la fábrica antes que salte por los aires.
+[NEDS319:NEDS3]
+¡Bonif. por choque en cadena masivo!
-[CUB4_31:CUBAN4]
-~g~¡Aléjate de la fábrica!
+[NEDS320:NEDS3]
+~r~¡No has conseguido suficientes puntos a tiempo!
-[CUB4_32:CUBAN4]
-~g~Aparca el coche en el marcador y bájate de él.
+[NEDS321:NEDS3]
+¡Bonif. por desmontar!
-[CUB4_06:CUBAN4]
-~r~No te alejaste lo suficiente de la base, ¡y hemos tenido que abortar la explosión!
+[NEDS322:NEDS3]
+¡Bonif. por desmontar y chafar!
-{=================================== MISSION TABLE FINALE ===================================}
+[NEDS323:NEDS3]
+¡Bonif. por salto de altura!
-[FIN1_01:FINALE]
+[NEDS324:NEDS3]
+¡Bonif. por salto de altura masivo!
+
+[NEDS325:NEDS3]
+~w~Tienes menos de 1 s. para volver al ~b~coche de bomberos~w~.
+
+[NEDS326:NEDS3]
+¡Felicidades! Lo has conseguido con ~1~ s. de sobra.
+
+[NEDS327:NEDS3]
+~w~Ahora destruye el ~r~coche de bomberos~w~. No dejes pruebas.
+
+[NEDS328:NEDS3]
+Puntúa más cada choque espectacular, o cada vehículo que vuelque, dé vueltas de campana o quede destruido.
+
+[NEDS329:NEDS3]
+Vehículo volcado x ~1~
+
+[NEDS330:NEDS3]
+Vueltas de campana x ~1~
+
+[NEDS332:NEDS3]
+~w~Tienes 1 s. para volver al ~b~coche de bomberos~w~.
+
+[NEDS333:NEDS3]
+¡Felicidades! NUEVO MEJOR TIEMPO con ~1~ s. de sobra.
+
+[NEDS334:NEDS3]
+~w~Ahora destruye el coche de bomberos. No dejes pruebas.
+
+[NEDS335:NEDS3]
+¡Trompo de 180°!
+
+[NEDS337:NEDS3]
+Coge el coche de bomberos y causa choques en cadena, accidentes y destrucción antes de las ~1~:~1~.
+
+[NEDS338:NEDS3]
+Coge el coche de bomberos y causa choques en cadena, accidentes y destrucción antes de las ~1~:0~1~.
+
+[NEDS339:NEDS3]
+Coge el coche de bomberos y causa choques en cadena, accidentes y destrucción antes de las 0~1~:~1~.
+
+[NEDS340:NEDS3]
+Coge el coche de bomberos y causa choques en cadena, accidentes y destrucción antes de las 0~1~:0~1~.
+
+[NEDS341:NEDS3]
+Causa tantos choques en cadena, accidentes y actos de destrucción antes de las ~1~:~1~.
+
+[NEDS342:NEDS3]
+Causa tantos choques en cadena, accidentes y actos de destrucción antes de las ~1~:0~1~.
+
+[NEDS343:NEDS3]
+Causa tantos choques en cadena, accidentes y actos de destrucción como puedas antes de las 0~1~:~1~.
+
+[NEDS344:NEDS3]
+Causa tantos choques en cadena, accidentes y actos de destrucción como puedas antes de las 0~1~:0~1~.
+
+[NEDS331:NEDS3]
+¡Causa tantos choques en cadena, accidentes y actos de destrucción como puedas!
+
+{=================================== MISSION TABLE NEDS4 ===================================}
+
+[NEDS4_1:NEDS4]
+NONE
+
+[NEDS4_2:NEDS4]
+~w~Tres estrellas se dirigen a la radio del centro para una entrevista antes del estreno de esta noche.
+
+[NEDS4_3:NEDS4]
+~w~La actriz, Faith W, vuela desde el aeropuerto Francis en un helicóptero privado.
+
+[NEDS4_4:NEDS4]
+~w~DB-P, el gánster convertido en actor, viene en barco desde Portland.
+
+[NEDS4_5:NEDS4]
+~w~Black Lightman, un actor alcohólico y envejecido, saldrá de rehabilitación e irá en una limusina.
+
+[NEDS4_8:NEDS4]
+~w~Faith ha caído.
+
+[NEDS4_9:NEDS4]
+~w~DB-P ha caído.
+
+[NEDS410:NEDS4]
+~w~Black Lightman ha caído.
+
+[NEDS411:NEDS4]
+~w~Todas las estrellas han sido eliminadas. Vuelve a la ~y~iglesia~w~ y díselo al padre.
+
+[NEDS412:NEDS4]
+~r~¡Faith ha llegado a la emisora!
+
+[NEDS413:NEDS4]
+~r~¡DB-P ha llegado a la emisora!
+
+[NEDS414:NEDS4]
+~r~¡Black Lightman ha llegado a la emisora!
+
+[NEDS415:NEDS4]
+~w~Se subirá a un Patriot blindado.
+
+[NEDS417:NEDS4]
+~w~El Patriot está blindado.
+
+[NEDS418:NEDS4]
+~w~Cuidado con el tirador.
+
+[NEDS421:NEDS4]
+~w~La armería Phil Cassidy's tiene el icono de una bandera en el radar.
+
+[NEDS4AA:NEDS4]
+Perdóneme, padre, porque he vuelto a pecar...
+
+[NEDS4AB:NEDS4]
+Y una vez más serás redimido, hijo mío.
+
+[NEDS4AC:NEDS4]
+¡El culto a la celebridad ha llegado demasiado lejos!
+
+[NEDS4AD:NEDS4]
+¿Qué clase de zorra le da una exclusiva a una emisora de radio en vez de al diligente periodista de un diario?
+
+[NEDS4AF:NEDS4]
+¡Destruye a esos falsos ídolos!
+
+[NEDS4BA:NEDS4]
+He hecho lo que me pidió, padre.
+
+[NEDS4BB:NEDS4]
+¡Estupendo! El diario ha triplicado su tirada desde que encontraste el camino.
+
+[NEDS4BC:NEDS4]
+¿Qué?
+
+[NEDS4BD:NEDS4]
+¡Gracias de nuevo por toda tu ayuda, Toni!
+
+[NEDS4BE:NEDS4]
+Eh, ¿qué carajo?
+
+[NEDS4BF:NEDS4]
+¿QUIÉN ERES?
+
+[NEDS422:NEDS4]
+Consigue un lanzacohetes en la armería Phil Cassidy's Fully Cocked.
+
+[NEDS4_7:NEDS4]
+~w~No dejes que ninguna ~r~estrella~w~ llegue a la emisora LCFR.
+
+[NEDS416:NEDS4]
+~w~No dejes que ninguna ~r~estrella~w~ llegue a la emisora LCFR.
+
+[NEDS419:NEDS4]
+~w~Encontrarás armamento pesado en la armería Phil Cassidy's Fully Cocked.
+
+[NEDS420:NEDS4]
+~w~El padre Ned ha pagado un lanzacohetes. Recógelo en la armería Phil Cassidy's Fully Cocked.
+
+[NEDS4_6:NEDS4]
+~w~Si necesitas armas pesadas, ve a la armería Phil Cassidy's Fully Cocked.
+
+{=================================== MISSION TABLE DONS1 ===================================}
+
+[MORG_01:DONS1]
+2-2-3, 3-2-3, 4-2-3, 5-2-3...
+
+[MORG_02:DONS1]
+¡Antonio! ¡Cómo me alegro de verte!
+
+[MORG_03:DONS1]
¿Qué está pasando?
-[FIN1_02:FINALE]
-¡Tommy! Oh, bien, bien. Escucha, escucha. Uh, escucha,
+[MORG_04:DONS1]
+Estamos dando una fiesta, chico, una fiesta.
-[FIN1_03:FINALE]
-me gusta el pescado. Me encanta el pescado.
+[MORG_05:DONS1]
+¡Sí, una fiesta de fiambres!
-[FIN1_04:FINALE]
-Me encantan como mascotas en peceras, o como comida en un plato,
+[MORG_08:DONS1]
+¿Una fiesta de fiambres? ¿De qué cojones hablas?
-[FIN1_05:FINALE]
-pero aunque los adoro, no quiero dormir con ellos.
+[MORG_09:DONS1]
+Vamos a tener una nochecita de las buenas.
-[FIN1_06:FINALE]
-De acuerdo, pero ahora mismo, tus hermanos italianos van a salir de ahí para ponerme esos zapatos de cemento y yo...
+[MORG_10:DONS1]
+Pero primero tenemos que ir a recoger a los invitados...
-[FIN1_07:FINALE]
-Cállate, Ken. Siéntate.
+[MORG_11:DONS1]
+Venga, antes de que se mueran de aburrimiento.
-[FIN1_08:FINALE]
-Lance, ¿qué demonios ocurre?
+[MORG_12:DONS1]
+Y no lo decía con segundas...
-[FIN1_09:FINALE]
-Es tu amigo del norte, Tommy. No está muy contento de que matases a su hombre.
+[MORG_13:DONS1]
+Porque ya están muertos, ¿sabes...?
-[FIN1_10:FINALE]
-Vienen hoy para ver el negocio.
+[MORG_14:DONS1]
+El invitado de honor va camino del instituto forense.
-[FIN1_11:FINALE]
-Tardaron más de lo que pensaba...
+[MORG_15:DONS1]
+No le hagamos esperar.
-[FIN1_12:FINALE]
-Chicos, tenemos que acabar con esto y no dejar duda de que ésta es mi operación. ¡Mía!
+[MORG_06:DONS1]
+- ¡La primera de la temporada! ~n~ - Epa, epa, epa, epa...
-[FIN1_13:FINALE]
-Ken, pon tres millones de la primera tanda de dinero falsificado en maletines.
+[DONS1_1:DONS1]
+Nada
-[FIN1_14:FINALE]
-Lance, reúne a los muchachos...
+[DL1_A:DONS1]
+Voy a dar una fiesta de fiambres y quiero que recojas a los "invitados".
-[FIN2_01:FINALE]
-¡Tommy!
+[DL1_2:DONS1]
+~r~Has destruido el coche.
-[FIN2_02:FINALE]
-¿Qué? ¿No hay un gran abrazo para tu viejo colega?
+[DL1_3:DONS1]
+La poli ha sido alertada, ¡quítate el nivel de búsqueda!
-[FIN2_03:FINALE]
-He pasado quince años fuera del negocio,
+[DL1_4:DONS1]
+Lleva el coche al ~y~garaje~w~ de Donald.
-[FIN2_04:FINALE]
-estoy un poco oxidado respecto a las costumbres de la familia.
+[DL1_6:DONS1]
+~r~El coche fúnebre ha llegado a la comisaría.
-[FIN2_05:FINALE]
-Siempre enfadado, ¿eh? Tommy.
+[DL1_9:DONS1]
+Mete el coche en el taller de pintura.
-[FIN2_06:FINALE]
-No te dije que tu temperamento te metería en problemas, ¿eh?
+[DL1_5:DONS1]
+Roba el ~b~coche fúnebre~w~ antes de que llegue a su destino.
-[FIN2_07:FINALE]
-Hay tres millones en los maletines...
+{=================================== MISSION TABLE DONS2 ===================================}
-[FIN2_08:FINALE]
-¿Cuántos fueron? ¿Diez? No, once hombres.
+[DONS2AA:DONS2]
+¿D.L.?
-[FIN2_09:FINALE]
-¡Así es como llegaron a llamarte el Carnicero de Harwood! ¡Je je je!
+[DONS2AB:DONS2]
+¡Toni!
-[FIN2_10:FINALE]
-Me enviaste a matar a un hombre, UN HOMBRE. Sabían que iba para allá.
+[DONS2AC:DONS2]
+¿Cómo va la campaña?
-[FIN2_11:FINALE]
-Vigila tu tono.
+[DONS2AD:DONS2]
+Pende de un hilo. ¡Hasta el último voto va a contar!
-[FIN2_12:FINALE]
-Cualquiera pensaría que me echas la culpa por ese desafortunado conjunto de circunstancias.
+[DONS2AE:DONS2]
+Los militantes de O'Donovan trabajan duro en las zonas de voto indeciso.
-[FIN2_13:FINALE]
-Simplemente coge el dinero...
+[DONS2AF:DONS2]
+Bueno, tenemos nuestro vehículo de megafonía, ¡hagamos contracampaña!
-[FIN2_14:FINALE]
-¿Que coja el maldito dinero?
+[DONS2BA:DONS2]
+¡Vota a O'Donovan para alcalde!
-[FIN2_15:FINALE]
-¿Sabes, Tommy? Hice lo que pude por ti, tiré de algunos hilos, pedí favores.
+[DONS2BB:DONS2]
+¡Vota a O'Donovan para acabar con la corrupción!
-[FIN2_16:FINALE]
-Yo era tu amigo, Tommy. Esperaba que entraras en razón, ver qué es bueno para el negocio.
+[DONS2BC:DONS2]
+¡Dale tu confianza a O'Donovan para alcalde!
-[FIN2_17:FINALE]
-Confié en ti, Tommy, y me decepcionaste.
+[DONS2BD:DONS2]
+¡Basta de delincuencia! ¡Vota a O'Donovan!
-[FIN2_18:FINALE]
-Pero al menos alguno de tu organización de mierda sabe hacer negocios,
+[DONS2BE:DONS2]
+¡Vota a la justicia! ¡Vota a O'Donovan!
-[FIN2_19:FINALE]
-¿No es verdad, Lance?
+[DONS2CA:DONS2]
+¡O'Donovan tiene tres concubinas!
-[FIN2_20:FINALE]
-Lo siento, Tommy. Esto es Vice City. Son negocios.
+[DONS2CB:DONS2]
+¿Quién se comió todas las galletitas? ¡O'Donovan!
-[FIN2_21:FINALE]
-Nos vendiste.
+[DONS2CC:DONS2]
+¡O'Donovan es un yonqui!
-[FIN2_22:FINALE]
-No. Te vendí a TI, Tommy, te vendí a TI.
+[DONS2CD:DONS2]
+¡O'Donovan es un sodomita compulsivo!
-[FIN2_23:FINALE]
-El dinero de verdad está arriba, en la caja fuerte.
+[DONS2CE:DONS2]
+¡O'Donovan es comunista!
-[FIN2_24:FINALE]
-Así que Tommy, ¿cuál es el gran plan?
+[DONS2CF:DONS2]
+¡O'Donovan se pone la ropa interior de su hija!
-[FIN2_25:FINALE]
-¿Creías que solo me llevaría el dinero falso?
+[DONS2CG:DONS2]
+¡A O'Donovan se la ponen dura los gorrinos!
-[FIN2_26:FINALE]
-¿Salvar el culo y huir con el rabo entre las piernas?
+[DONS2CH:DONS2]
+¡O'Donovan odia a América!
-[FIN2_27:FINALE]
-No.
+[DONS2CI:DONS2]
+¡Love no gravará a los ricos!
-[FIN2_28:FINALE]
-Solo quería joderte antes de matarte.
+[DONS2CJ:DONS2]
+¡Vota a Love para tener clases de medicina forense en el cole!
-[FIN3_01:FINALE]
-¿Tommy?
+[DONS2CK:DONS2]
+¡Donald Love cree en el acceso a la morgue para todos!
-[FIN3_02:FINALE]
-Oh, Dios mío, ¡Tommy! ¿Qué ha sucedido?
+[DONS2CL:DONS2]
+¡Donald Love es un héroe de guerra!
-[FIN3_03:FINALE]
-¿A ti qué te parece?
+[DONS2CM:DONS2]
+¡Votar por Love es votar por la felicidad!
-[FIN3_04:FINALE]
-¡Parece que te han arruinado el traje!
+[DONS2CN:DONS2]
+Donald Love, ¡duro con los vegetarianos!
-[FIN3_05:FINALE]
-¡Y Tommy, era un traje muy bonito! Tommy, ¿qué diablos ha ocurrido?
+[DONS2_1:DONS2]
+~w~Sube a la ~b~camioneta~w~.
-[FIN3_06:FINALE]
-Tuve un desacuerdo con un socio del negocio, ya sabes cómo son estas cosas.
+[DONS2_3:DONS2]
+~w~¡O'Donovan ha sacado sus ~r~camionetas~w~ para recuperar votos!
-[FIN3_07:FINALE]
-Tommy, cuando tengo un desacuerdo con un socio, le envío una carta muy enfadado.
+[DONS2_4:DONS2]
+~r~¡No has conseguido votos suficientes!
-[FIN3_08:FINALE]
-Quizás me mee en su buzón. No empiezo la tercera guerra mundial.
+[DONS2_6:DONS2]
+~w~Tiempo restante
-[FIN3_09:FINALE]
-¿Sabes? Quizás deberías hablar con mi psiquiatra...
+[DONS2_7:DONS2]
+~w~Vuelve a la ~b~camioneta~w~ y prosigue la misión.
-[FIN3_10:FINALE]
-Ése estúpido mamón, Lance...
+[DONS2_9:DONS2]
+~w~¡O'Donovan ha sacado otra ~r~camioneta~w~!
-[FIN3_11:FINALE]
-Tommy. A mí nunca me gustó ese tipo, ¿de acuerdo?
+[DONS210:DONS2]
+~w~Zonas
-[FIN3_12:FINALE]
-Era neurótico, era inseguro, era egocéntrico... ¡ese tipo era un gilipollas!
+[DONS211:DONS2]
+~r~¡Has perdido todas las zonas de voto!
-[FIN3_13:FINALE]
-¡Me alegro de que lo eliminases!
+[DONS212:DONS2]
+~r~¡No has conseguido acabar con la oposición!
-[FIN3_14:FINALE]
-No creo que vayamos a tener más líos desde la parte norte...
+[DONS2_2:DONS2]
+~w~Pasa por los ~y~puntos de control de las zonas de voto indeciso~w~ para conseguir su apoyo.
-[FIN3_15:FINALE]
-porque ya no hay 'parte norte'.
+[DONS215:DONS2]
+~w~¡O'Donovan te ha arrebatado una ~y~zona~w~!
-[FIN3_16:FINALE]
-Ahora es todo sur.
+[DONS216:DONS2]
+~w~¡No dejes que O'Donovan recupere todas las ~y~zonas~w~!
-[FIN3_17:FINALE]
-Espera, eso quiere decir lo que creo que quiere decir, Tommy, ¿nene?
+[DONS213:DONS2]
+~w~Ya tienes zonas suficientes, ahora acaba con las ~r~camionetas de la oposición~w~ para impedir que O'Donovan consiga más.
-[FIN3_18:FINALE]
-¿Qué crees que significa?
+[DONS2_8:DONS2]
+~w~Consigue al menos cinco ~y~zonas de voto~w~.
-[FIN3_19:FINALE]
-Que estamos al mando... Quiero decir, que tú estás al mando. Oh, Tommy...
+[DONS214:DONS2]
+~w~Tienes menos de cinco ~y~zonas~w~, ¡recupéralas!
-[FIN3_20:FINALE]
-¿Sabes, Ken? Este podría ser el comienzo de una hermosa relación comercial...
+[DONS217:DONS2]
+~w~Hazte con más zonas para que aumente la gratificación por terminar.
-[FIN3_21:FINALE]
-Después de todo, eres un cómplice, traicionero, ladrón de tres al cuarto
+[DONS2_5:DONS2]
+~r~La camioneta electoral ha sido destruida.
-[FIN3_22:FINALE]
-y yo soy un asesino psicópata convicto y además paso farlopa.
+[DONS218:DONS2]
+~w~Consigue al menos 5 ~y~zonas de voto~w~ antes de las ~1~:~1~.
-[FIN3_23:FINALE]
-Lo sé. ¿No es sencillamente hermoso?
+[DONS219:DONS2]
+~w~Consigue al menos 5 ~y~zonas de voto~w~ antes de las 0~1~:~1~.
-[FIN_B1:FINALE]
-~g~Ve y liquida al traidor de ~y~Lance Vance~g~.
+[DONS220:DONS2]
+~w~Consigue al menos 5 ~y~zonas de voto~w~ antes de las 0~1~:0~1~.
-[FIN_B2:FINALE]
-~g~Liquida a ~p~Sonny~g~ y acaba con esto de una vez por todas.
+[DONS221:DONS2]
+~w~Consigue al menos 5 ~y~zonas de voto~w~ antes de las ~1~:0~1~.
-[FIN_B3:FINALE]
-~g~La mafia está intentando robarte el dinero. Protege la caja fuerte.
+[DONS230:DONS2]
+~w~Ya tienes zonas suficientes, ahora acaba con la ~r~camioneta de la oposición~w~ para impedir que O'Donovan consiga más.
-[FIN_B4:FINALE]
-~g~Estás casi muerto, consigue ~w~salud~g~ en el piso de abajo.
+{=================================== MISSION TABLE DONS3 ===================================}
-[FIN_B5:FINALE]
-~g~La mafia está robándote el dinero, protege la ~c~caja fuerte~g~.
+[CAMP_01:DONS3]
+¡Antonio! '¿Qué pasa, amigo?'
-[FIN_B7:FINALE]
-~r~La mafia te ha robado todo el dinero.
+[CAMP_02:DONS3]
+Sabes muy bien que soy italiano, Don, no español.
-[DEFSAFE:FINALE]
-~g~Regresa a la caja fuerte y protégela.
+[CAMP_03:DONS3]
+Claro, qué despiste el mío. Es que me encantan todas las lenguas romances.
-{=================================== MISSION TABLE FIRETRK ===================================}
+[CAMP_04:DONS3]
+Dios mío, qué bueno está.
-[F_PASS1:FIRETRK]
-¡Fuego extinguido!
+[CAMP_05:DONS3]
+Sabe como el pollo, pero es como algo más... eeh... inteligente.
-[F_FAIL2:FIRETRK]
-~r~¡Llegas demasiado tarde!
+[CAMP_06:DONS3]
+¿Quieres un poco?
-[F_CANC:FIRETRK]
-~r~¡Misión de bombero cancelada!
+[CAMP_07:DONS3]
+Ya he comido, gracias.
+
+[CAMP_08:DONS3]
+Muy mal. Está de muerte.
+
+[CAMP_09:DONS3]
+Y están a punto de servirme más exquisiteces...
+
+[CAMP_10:DONS3]
+Los liberales disfrutarán de lo suyo, por supuesto,
+
+[CAMP_11:DONS3]
+¡pero qué poco saben de los verdaderos placeres de la vida!
+
+[CAMP_12:DONS3]
+La sofisticación y la democracia nunca han sido buenos compañeros de cama.
+
+[CAMP_13:DONS3]
+Escucha, Don, tenemos que ganar estas elecciones.
+
+[CAMP_14:DONS3]
+Vale, tenemos que asegurarnos de que no haya huesos que desenterrar,
+
+[CAMP_15:DONS3]
+si sabes a lo que me refiero...
+
+[CAMP_16:DONS3]
+Claro.
+
+[CAMP_17:DONS3]
+Lo que quiero decir es...
+
+[CAMP_18:DONS3]
+¿cómo podemos ocuparnos de ese O'Donovan que encubre...
+
+[CAMP_19:DONS3]
+digo... representa a los Forelli?
+
+[CAMP_20:DONS3]
+El tío tiene un montón de gente que le hace campaña,
+
+[CAMP_21:DONS3]
+toda clase de gente 'ilusa', no sé si me explico.
+
+[CAMP_22:DONS3]
+Creo que debemos socavar la fe que tienen en la democracia, no sé si me entiendes.
+
+[CAMP_23:DONS3]
+¿Quieres decir que tengo que espabilarlos a hostias?
+
+[CAMP_24:DONS3]
+Ah, esa pasión tuya, Antonio, es... es... magnífica.
+
+[CAMP_25:DONS3]
+Es tan... um... um...um... ¡wagneriana! ¿Sabes? Arriverdici, 'amigo'.
+
+[CAMP_26:DONS3]
+Humphries, ¡traiga las asaduras!
+
+[DONS3_1:DONS3]
+Toni debe librarse de los militantes de la oposición, debilitando así la eficacia de la campaña electoral de O'Donovan, candidato de los Forelli.
+
+[DONS3_2:DONS3]
+~w~Mata a los ~r~militantes~w~ de la oposición.
+
+[DONS3_3:DONS3]
+~r~Se te ha acabado el tiempo.
+
+[DONS3_4:DONS3]
+Ya has terminado con estos ~r~militantes~w~. Ocúpate de los siguientes.
+
+[DONS3_5:DONS3]
+~w~Mata a los ~r~militantes~w~ de la oposición antes de las ~1~:~1~.
+
+[DONS3_6:DONS3]
+~w~Mata a los ~r~militantes~w~ de la oposición antes de las ~1~:0~1~.
+
+[DONS3_7:DONS3]
+~w~Mata a los ~r~militantes~w~ de la oposición antes de las 0~1~:~1~.
-[F_EXTIN:FIRETRK]
-FUEGOS:
+[DONS3_8:DONS3]
+~w~Mata a los ~r~militantes~w~ de la oposición antes de las 0~1~:0~1~.
-[F_START:FIRETRK]
-~g~Se ha informado de un vehículo ardiendo en la zona de ~a~. Ve y extingue el fuego.
+{=================================== MISSION TABLE DONS4 ===================================}
-[SIREN_1:FIRETRK]
-Para activar la sirena de este vehículo, pulsa ~h~~k~~VEHICLE_HORN~~w~.
+[DONS410:DONS4]
+Ve al ~y~almacén de los Forelli~w~ y quema sus papeletas.
-[SIREN_2:FIRETRK]
-Para activar la sirena de este vehículo, pulsa ~h~~k~~VEHICLE_HORN~~w~.
+[DONS411:DONS4]
+Quema las ~r~papeletas~w~ y destroza las ~r~imprentas~w~.
-[FIREPRO:FIRETRK]
-Nivel 12 de la misión del camión de bomberos completado. ¡Ahora eres completamente ignífugo!
+[DONS412:DONS4]
+Destroza la ~r~imprenta~w~.
-[F_FAIL1:FIRETRK]
-Misión de bombero terminada.
+[DONS413:DONS4]
+Quema TODAS las ~r~papeletas~w~.
-[F_STAR1:FIRETRK]
-~g~Se ha informado de que hay vehículos ardiendo en la ~a~ zona. Ve y apaga el fuego.
+[DONS414:DONS4]
+Destruye las ~r~camionetas de los Forelli~w~ restantes.
-[SPRAY_4:FIRETRK] { reVC update }
-Pulsa ~h~~k~~VEHICLE_FIREWEAPON~ ~w~para disparar el cañón de agua y ~h~~k~~VEHICLE_TURRETLEFT~~w~ o ~h~~k~~VEHICLE_TURRETRIGHT~~w~ para apuntar con él.
+[DONS416:DONS4]
+~r~¡Has perdido una camioneta de los Forelli! ¡Amañarán las elecciones!
-[SPRAY_1:FIRETRK] { reVC update }
-Pulsa ~h~~k~~VEHICLE_FIREWEAPON~ ~w~para disparar el cañón de agua y ~h~~k~~VEHICLE_TURRETLEFT~~w~ o ~h~~k~~VEHICLE_TURRETRIGHT~~w~ para apuntar con él.
+[DONS418:DONS4]
+Quedan ~r~~1~ palés~w~ de votos falsos.
-{=================================== MISSION TABLE GENERA1 ===================================}
+[DONS419:DONS4]
+Solo queda ~r~1 palé~w~ de votos falsos.
-[GEN1_A:GENERA1]
-¡Sr. Vercetti!
+[DONS420:DONS4]
+Destruye la ~r~camioneta de los Forelli~w~ restante.
-[GEN1_B:GENERA1]
-Coronel.
+[DONS421:DONS4]
+¡Ya has destruido una! Ahora destroza la otra ~r~imprenta~w~.
-[GEN1_D:GENERA1]
-No, gracias.
+[DONS422:DONS4]
+¡Imprenta destrozada!
-[GEN1_E:GENERA1]
-Me avergüenza admitir que una de las causas de nuestro mutuo problema parece ser la lengua larga de un hombre en el que solía confiar.
+[DONS423:DONS4]
+¡Ahora sal de aquí!
-[GEN1_F:GENERA1]
-He tenido conmigo a González durante años, pero ahora su incompetencia alcanza nuevas cotas.
+[DONS424:DONS4]
+¡Destroza las ~r~imprentas~w~!
-[GEN1_G:GENERA1]
-Lo correcto es que mates a González...
+[DS4_AA:DONS4]
+Tanta gente. Tanto dinero esperando a que le echen mano.
-[GEN1_H:GENERA1]
-¿Lo hizo él? El dinero es lo único importante para mí.
+[DS4_AB:DONS4]
+No pretendo entender de política.
-[GEN1_I:GENERA1]
-Por tu gentileza te compensaré y después buscaremos juntos tu dinero.
+[DS4_AC:DONS4]
+Nadie la entiende. Todo es charlatanería y corrupción.
-[GEN1_J:GENERA1]
-Estará en su ático, probablemente medio borracho. Utiliza esto...
+[DS4_AD:DONS4]
+Los Forelli tienen en secreto una participación en la compañía que hace las máquinas de votar.
-[GEN1_K:GENERA1]
-Utiliza esto...
+[DS4_AE:DONS4]
+Eso es malo, ¿no?
-[GEN1_06:GENERA1]
-¡Eh! ¡Tiene una sierra!
+[DS4_AF:DONS4]
+Está claro que no podemos fiarnos de ellos.
-[GEN1_07:GENERA1]
-¡Mantente alejado de mí, cabrón miserable!
+[DS4_AG:DONS4]
+No, es mejor que se estropeen, y así "menuda papeleta". Tú ya me entiendes.
-[GEN1_08:GENERA1]
-¡Maldición, he desperdiciado mi vida y mi belleza!
+[DONS4H1:DONS4]
+Encontrarás armamento pesado en la armería Phil Cassidy's Fully Cocked.
-[GEN1_10:GENERA1]
-¡Te voy a cerrar esa bocaza tuya!
+[DONS4AA:DONS4]
+¡Antonio, me alegro de verte!
-[GEN1_11:GENERA1]
-¡Deja de correr gorda bola de sebo!
+[DONS4AB:DONS4]
+No soy un demócrata, pero lo de amañar las votaciones no va conmigo.
-[GEN1_12:GENERA1]
-¡Estate quieto y haré que sea rápido!
+[DONS4AC:DONS4]
+¿Sabías que los Forelli participan en secreto en la compañía que hace las máquinas de votar?
-[GEN1_13:GENERA1]
-Deja de chillar, a nadie le importa, ¡gordo!
+[DONS4AD:DONS4]
+Eso es malo, ¿no?
-[GEN1_C:GENERA1]
-Gracias por venir. Por favor siéntese. ¿Langosta?
+[DONS4AE:DONS4]
+Está claro que no podemos fiarnos de ellos.
-[GEN1_05:GENERA1]
-~g~¡Ve y liquida a González!
+[DONS4AF:DONS4]
+No, es mejor que se estropeen, y así 'menuda papeleta'. Tú ya me entiendes.
-[GEN1_09:GENERA1]
-Te pagaré el doble, Tommy, ¡EL DOBLE!
+[DONS4_8:DONS4]
+Ve a la armería Phil Cassidy's Fully Cocked.
-[GEN1_18:GENERA1]
-~r~¡González ha conseguido llegar a la Jefatura de Policía!
+[DONS4H2:DONS4]
+La armería Phil Cassidy's Fully Cocked tiene el icono de una bandera en el radar.
-[GEN1_19:GENERA1]
-~g~¡La policía de Vice City viene a por ti!
+[DONS427:DONS4]
+¡Ahora sal de Fort Staunton!
-[GEN1_20:GENERA1]
-~g~Sube a un vehículo.
+[DONS4_9:DONS4]
+La armería Phil Cassidy's Fully Cocked te proporcionará equipo para malograr la campaña de los Forelli.
-[GEN1_21:GENERA1]
-~g~Ve al~h~ taller de pintura~g~ de~h~ Vice Point~g~.
+[DONS417:DONS4]
+Hay otro lanzallamas en la armería Phil Cassidy's Fully Cocked.
-[GEN1_22:GENERA1]
-~g~Conduce tu vehículo hasta el interior del ~h~taller de pintura~w~ para perder tu ~h~nivel de se busca~w~, reparar y volver a pintar tu vehículo. El precio es ~h~100 $~g~. Esta vez es gratis.
+[DONS425:DONS4]
+Recoge el lanzallamas en la armería Phil Cassidy's Fully Cocked.
-[GEN1_01:GENERA1]
-Cuando estés corriendo, mantén pulsado ~h~~k~~PED_FIREWEAPON~~w~ para preparar un ataque cuerpo a cuerpo.
+[DONS426:DONS4]
+~r~¡El dependiente es historia!
-[GEN1_02:GENERA1]
-Cuando estés corriendo, mantén pulsado ~h~~k~~PED_FIREWEAPON~~w~ para preparar un ataque cuerpo a cuerpo.
+[DONS4H3:DONS4]
+Donald Love ha pagado un lanzallamas. Ve al mostrador a recogerlo.
-[GEN1_03:GENERA1]
-Cuando estés corriendo, mantén pulsado ~h~~k~~PED_FIREWEAPON~~w~ para preparar un ataque cuerpo a cuerpo.
+{=================================== MISSION TABLE DONS5 ===================================}
-[GEN1_14:GENERA1]
-Suelta ~h~~k~~PED_FIREWEAPON~~w~ para atacar.
+[DONS5_7:DONS5]
+Protege la limusina de Donald.
-[GEN1_15:GENERA1]
-Suelta ~h~~k~~PED_FIREWEAPON~~w~ para atacar.
+[DONS5_9:DONS5]
+~r~¡Donald Love es historia!
-[GEN1_16:GENERA1]
-Suelta ~h~~k~~PED_FIREWEAPON~~w~ para atacar.
+[DONS513:DONS5]
+Daño en limusina
-[GEN1_23:GENERA1]
-~g~Vuelve pasando por las puertas para regresar a la planta baja.
+[DONS516:DONS5]
+Sube a la ~b~limusina~w~.
-{=================================== MISSION TABLE GENERA2 ===================================}
+[DONS517:DONS5]
+¡Te has dejado a ~b~Donald Love~w~!
-[COL2_A:GENERA2]
-¡Tommy! Ven, acércate.
+[DONS519:DONS5]
+¡Lleva a Donald al ~y~piso franco~w~!
-[COL2_B:GENERA2]
-Qué buena pinta, ¿eh? ¿Hocico de tapir?
+[DONS520:DONS5]
+¡Mata a los ~r~atacantes~w~!
-[COL2_C:GENERA2]
-No. No, gracias.
+[DONS521:DONS5]
+Sube a la ~b~limusina~w~.
-[COL2_D:GENERA2]
-Tommy, eres como una brisa de la pampa que me ha liberado de la peste de la corrupción,
+[DS5_AA:DONS5]
+Cómo odio la publicidad, pero forma parte del juego, ¿no?
-[COL2_E:GENERA2]
-aunque, parece que debo llorar su paso y seguir con el negocio como siempre.
+[DS5_AB:DONS5]
+Eso me temo.
-[COL2_F:GENERA2]
-Esto no me está acercando mucho a mi dinero...
+[DS5_AC:DONS5]
+Los Forelli van a intentar matarme, ¿no?
-[COL2_G:GENERA2]
-Tommy, amigo mío, ahora no estás en Liberty. Aquí hacemos las cosas de un modo diferente.
+[DS5_AD:DONS5]
+No te preocupes, yo iré de copiloto.
-[COL2_H:GENERA2]
-Continuaré con mis investigaciones pero mientras tanto tengo un valioso trato que cerrar.
+[DS5_AE:DONS5]
+Oh, muy bien. De perdidos al río...
-[COL2_I:GENERA2]
-Un favor para un amigo, Cortez.
+[DS5_BA:DONS5]
+¡Mierda! ¡Esto es ridículo!
-[COL2_J:GENERA2]
-Eres un buen amigo, Tommy. Sabía que no me decepcionarías.
+[DS5_BB:DONS5]
+No te asustes, ¡yo me encargo de esos capullos!
-[COL2_K:GENERA2]
-Necesito que te encuentres con un mensajero que ha conseguido una tecnología valiosa para mí...
+[DS5_BC:DONS5]
+¡Hay un rifle en el maletero!
-[COL2_1:GENERA2]
-La lluvia, está muy húmeda esta época del año...
+[DS5_BD:DONS5]
+¡Cierra las puertas, esto será rápido!
-[COL2_2:GENERA2]
+[DS5_CA:DONS5]
+Vale, podemos irnos.
+
+[DS5_CB:DONS5]
+¡Tenemos otro sicario en los talones!
+
+[DS5_DA:DONS5]
+No puedo ganar unas elecciones si estoy encerrado todo el día.
+
+[DS5_DB:DONS5]
+Tendremos que pensar en una táctica diferente.
+
+[DONS522:DONS5]
+~w~¡Lleva a Donald de vuelta a su ~y~edificio~w~!
+
+{=================================== MISSION TABLE DONS6 ===================================}
+
+[DONS6_1:DONS6]
+NONE
+
+[DS6_00:DONS6]
+Sigue a la ~b~camioneta electoral~w~.
+
+[DS6_01:DONS6]
+Espera a que el ~b~mensajero~w~ haga el cambio.
+
+[DS6_02:DONS6]
+Róbale los votos al ~r~mensajero~w~.
+
+[DS6_03:DONS6]
+Mata al ~r~mensajero~w~.
+
+[DS6_04:DONS6]
+Coge el ~g~paquete~w~.
+
+[DS6_05:DONS6]
+Sigue a la ~b~camioneta electoral~w~ otra vez.
+
+[DS6_06:DONS6]
+~r~¡Has matado al mensajero antes del cambio!
+
+[DS6_07:DONS6]
+¡Has fallado uno de los intercambios, no puedes fallar otro!
+
+[DS6_08:DONS6]
+~r~¡Has fallado los dos cambios, no se puede amañar el voto!
+
+[DS6_09:DONS6]
+~r~¡Le has espantado!
+
+[DS6_10:DONS6]
+~r~¡La camioneta ha sido destruida!
+
+[DS6_11:DONS6]
+¡Se te ha acabado el tiempo!
+
+[DS6_12:DONS6]
+~r~¡No has alcanzado a la camioneta!
+
+[DS6_13:DONS6]
+~r~¡La camioneta no puede ir sin conductor!
+
+[DS6_15:DONS6]
+~r~¡Has espantado al conductor, ahora nunca lo atraparás!
+
+[DS6_16:DONS6]
+~1~
+
+[DS6_17:DONS6]
+~w~El conductor perseguido ha muerto, lleva la camioneta al ~y~garaje de Donald~w~.
+
+[DONS6AA:DONS6]
+¡Malas noticias, Toni!
+
+[DONS6AB:DONS6]
¿Qué?
-[COL2_3:GENERA2]
-Ah, comment?
+[DONS6AC:DONS6]
+Los sondeos están muy ajustados.
+
+[DONS6AD:DONS6]
+Es hora del plan B.
+
+[DONS6AE:DONS6]
+Robaremos algunos votos aún por contabilizar y los cambiaremos por unos nuestros.
+
+[DONS6AF:DONS6]
+¿Y eso que decías de no amañar las votaciones?
+
+[DONS6AG:DONS6]
+¡Venga, cierra la boca!
+
+[DS6_14:DONS6]
+¡Vuelve a por los ~g~votos~w~, no puedes dejarlos atrás!
+
+[DS6_66:DONS6]
+~r~¡Has destruido el coche del mensajero antes del cambio!
+
+[DS6_18:DONS6]
+¡Has matado al mensajero antes del cambio! ¡No mates a más!
+
+[DS6_21:DONS6]
+¡Rápido! ¡Se está produciendo un cambio!
+
+[DS6_22:DONS6]
+No has llegado al primer cambio, ¡no vuelvas a fallar!
+
+[DS6_23:DONS6]
+No has llegado al segundo cambio, ¡no vuelvas a fallar!
+
+[DS6_24:DONS6]
+No has llegado al tercer cambio, ¡no vuelvas a fallar!
+
+[DS6_25:DONS6]
+No has llegado al cuarto cambio, ¡no vuelvas a fallar!
+
+[DS6_26:DONS6]
+Has asustado al mensajero antes del cambio. ¡Que no vuelva a pasar!
+
+[DS6_28:DONS6]
+~r~¡La has cagado! ¡Ya no se puede amañar la votación!
+
+{=================================== MISSION TABLE DONS7 ===================================}
+
+[ELEC_01:DONS7]
+Hola, Don. Ya te he sacado del lío.
+
+[ELEC_02:DONS7]
+Ahora todo irá sobre ruedas.
+
+[ELEC_03:DONS7]
+¿Seguro?
+
+[ELEC_04:DONS7]
+Ya no tienes vínculos con el crimen organizado.
+
+[ELEC_05:DONS7]
+Estás más limpio que el culo de un bebé. Más que el Papa.
+
+[ELEC_07:DONS7]
+Aunque no se ha podido relacionar a Donald Love...
+
+[ELEC_08:DONS7]
+con el crimen organizado de Liberty City,
+
+[ELEC_09:DONS7]
+parece que su amistad con mafiosos, incluyendo a Toni Cipriani,
+
+[ELEC_11:DONS7]
+ha influido muy negativamente en los votantes.
+
+[ELEC_12:DONS7]
+En las últimas horas su popularidad ha caído en picado.
+
+[ELEC_13:DONS7]
+Se le considera indigno de un cargo público...
+
+[ELEC_14:DONS7]
+¡Indigno! Por tu culpa...
+
+[ELEC_15:DONS7]
+Sí. Todo por tu culpa.
+
+[ELEC_16:DONS7]
+¿Mi culpa?
+
+[ELEC_17:DONS7]
+Oh, sí.
+
+[ELEC_18:DONS7]
+¿Mi culpa?
+
+[ELEC_19:DONS7]
+Con los sacrificios que he hecho por esta ciudad,
+
+[ELEC_20:DONS7]
+¿y sabes cuál ha sido mi punto débil todo este tiempo...?
+
+[ELEC_21:DONS7]
+¡La humildad! Y ahora estoy arruinado.
+
+[ELEC_22:DONS7]
+¡En BANCARROTA! 20 millones a hacer puñetas.
+
+[ELEC_23:DONS7]
+Acabado... Arruinado... ¡Arriverdici! ¡BANCARROTA!
+
+[ELEC_06:DONS7]
+¡Que el Papa! Mira esto...
+
+[DONS7_1:DONS7]
+O'Donovan relaciona a Donald Love con Salvatore Leone. La carrera política de Donald Love pende de un hilo. Toni debe destruir las pruebas.
+
+[DONS7_2:DONS7]
+~w~Ve a robar la ~b~furgoneta~w~ que contiene las pruebas.
+
+[DONS7_3:DONS7]
+~r~Has matado al contacto.
+
+[DONS7_4:DONS7]
+~w~Lleva la furgoneta al ~y~punto de entrega~w~.
+
+[DONS7_5:DONS7]
+~w~Vuelve a la ~b~furgoneta~w~.
+
+[DONS7_7:DONS7]
+Sube al ~b~coche del contacto~w~.
+
+[DONS7CA:DONS7]
+Ah, Toni.
+
+[DONS7CB:DONS7]
+Las pruebas están en esa furgoneta de delante.
+
+[DONS7CC:DONS7]
+Tendrás que abrirte paso.
+
+[DONS7CD:DONS7]
+Lleva la furgoneta a casa de D.L.
+
+[DONS7CE:DONS7]
+¡Buena suerte!
+
+[DONS713:DONS7]
+~w~Aparca la furgoneta en el ~y~garaje~w~.
+
+[DONS714:DONS7]
+~r~Has destruido la furgoneta.
+
+[RMN_AA:DONS7]
+Esta noche se celebrará que las protestas laborales que habían paralizado Liberty City...
+
+[RMN_AB:DONS7]
+por fin se han terminado.
+
+[RMN_AC:DONS7]
+Se han restablecido los servicios regulares de ferry y metro.
+
+[RMN_AD:DONS7]
+Hasta el puente levadizo que une Staunton Island con Shoreside Vale se ha reabierto al tráfico.
+
+[RMN_AE:DONS7]
+Lo huelguistas por fin han guardado las pancartas y vuelto a sus puestos de trabajo...
+
+[RMN_AF:DONS7]
+después de que el recién elegido alcalde O'Donovan les hiciera esta promesa:
+
+[RMN_AG:DONS7]
+Como su alcalde, les garantizo que SIEMPRE habrá un servicio de ferry en Liberty City.
+
+[RMN_AH:DONS7]
+Pero algunos temen que estas promesas caigan en saco roto,
-[COL2_4:GENERA2]
-Mira, me envía Cortez. Tan sólo dame los malditos chips.
+[RMN_AI:DONS7]
+ya que siguen las obras del nuevo túnel de Porter Road.
-[COL2_5:GENERA2]
-Oh... d'accord.
+[DONS7_6:DONS7]
+~w~Reúnete con el ~b~hombre~w~ de Donald Love bajo el paso elevado de Newport.
-[COL2_B1:GENERA2]
-~g~Encuéntrate con el mensajero en el centro comercial.
+{=================================== MISSION TABLE RAYS1 ===================================}
-[COL2_B2:GENERA2]
-~g~El mensajero está huyendo con los chips guía, ¡no le dejes escapar!
+[SAYO_01:RAYS1]
+Así que tú eres la mosca cojonera, ¿eh?
-[COL2_B3:GENERA2]
-~g~Recupera los chips guía y llévaselos de vuelta al Coronel.
+[SAYO_02:RAYS1]
+¿Perdón?
-[COL2_F1:GENERA2]
-~r~¡Mataste al contacto!
+[SAYO_03:RAYS1]
+Mucha gente importante se está cagando en tus muelas.
-[COL2_F2:GENERA2]
-~r~El mensajero está muerto. Coge los chips guía.
+[SAYO_04:RAYS1]
+Leon McAffrey, de la policía de LC.
-[COL2_6A:GENERA2]
-¡Alto, cerdo imperialista americano! Eso es propiedad del gobierno francés. ¡Y se acabó!
+[SAYO_05:RAYS1]
+No sé de qué me está hablando.
-[BLIPHLP:GENERA2]
-Cuando el icono en el radar es un triángulo apuntando hacia arriba, indica que el objetivo está por encima del jugador.
+[SAYO_06:RAYS1]
+Yo me dedico a la restauración.
-[COL2_F3:GENERA2]
-~r~Los chips de orientación están en el fondo del mar.
+[SAYO_07:RAYS1]
+Lo que tú digas, tipo duro.
-[COL2_F4:GENERA2]
-~r~¡El mensajero ha escapado! Has fracasado en conseguir los chips de orientación.
+[SAYO_08:RAYS1]
+Si los macarronis os queréis matar a tiros, me importa una mierda.
-{=================================== MISSION TABLE GENERA3 ===================================}
+[SAYO_09:RAYS1]
+Lo único que me importa es mi tajada.
-[GEN3_A:GENERA3]
-Thomas, agradezco que hayas venido.
+[SAYO_12:RAYS1]
+¿Dónde está mi tajada?
-[GEN3_B:GENERA3]
-Perdóname por ir directamente a los negocios.
+[SAYO_13:RAYS1]
+En tu puto culo, amigo. No me hagas reír.
-[GEN3_C:GENERA3]
-Díaz me ha pedido que supervise una transacción comercial poco importante.
+[SAYO_14:RAYS1]
+Si sigues jodiéndome, te liquido a ti, a tus amigos,
-[GEN3_D:GENERA3]
-Esperemos que vaya mejor que la última vez, ¿eh?
+[SAYO_15:RAYS1]
+a sus familias y a toda esta puta ciudad.
-[GEN3_E:GENERA3]
-Por eso es por lo que pensé en ti, amigo mío.
+[SAYO_16:RAYS1]
+Cálmate. Echa un buen polvo o algo así.
-[GEN3_F:GENERA3]
-He dejado protección en un aparcamiento de varias plantas.
+[SAYO_17:RAYS1]
+Esto es un negocio -una sociedad- a partes iguales.
-[GEN3_G:GENERA3]
-Recógela... luego ve a vigilar a los hombres de Díaz en el punto de entrega.
+[SAYO_18:RAYS1]
+Yo te quito de encima a la ley -federales, antimafia...-
-[GEN3_H:GENERA3]
-Gracias, amigo.
+[SAYO_19:RAYS1]
+y tú me pagas los vicios que me gustan.
-[GEN3_1:GENERA3]
-Monopolizando toda la acción, ya veo...
+[SAYO_20:RAYS1]
+¿Y qué garantía tengo de que no me va extorsionar...
-[GEN3_2:GENERA3]
-Mira, ¿quieres dejar de seguirme a todas partes? ¿Por qué no vienes y me demuestras que vales para algo?
+[SAYO_21:RAYS1]
+hasta el último poli corrupto de aquí a Vice City?
-[GEN3_3:GENERA3]
-Podría hacerlo. Mi nombre es Lance, por cierto.
+[SAYO_22:RAYS1]
+Te voy a ayudar a hacerte con esta ciudad.
-[GEN3_5:GENERA3]
-Tú debes de ser el nuevo matón de Cortez.
+[SAYO_23:RAYS1]
+A cambio, quiero pasta y unos cuantos favores.
-[GEN3_6:GENERA3]
-Hasta que surjan oportunidades mejor pagadas.
+[SAYO_24:RAYS1]
+Vamos, Toni, demos una vuelta...
-[GEN3_7:GENERA3]
-Estarán aquí en cualquier momento. Será mejor que consigamos una posición ventajosa...
+[SAYO_25:RAYS1]
+Vamos a ver a unos viejos amigos tuyos, los Sindacco.
-[GEN3_8:GENERA3]
-¡De acuerdo! Yo iré al balcón, tú sube a ese tejado al otro lado del patio.
+[SAYO_10:RAYS1]
+- Me encantan los hombres con principios. ~n~ - A mí también. Voy a sus funerales en un cochazo lleno de tías buenas.
-[GEN3_9:GENERA3]
-¡Estoy vivo! ¡Mamones! ¡Y todo gracias a ti! ¿Cómo te llamas?
+[RS1_YK:RAYS1]
+Daño
-[GEN3_10:GENERA3]
-Tommy.
+[RS1_01:RAYS1]
+Liquida a los ~r~Sindacco~w~.
-[GEN3_11:GENERA3]
-Nos veremos pronto, ¡creo!
+[RS1_02:RAYS1]
+~r~¡El coche ha sido destruido!
-[GEN3_12:GENERA3]
-Mierda. ¿Dónde está Lance?
+[RS1_03:RAYS1]
+~r~¡Los yakuza han sido masacrados!
-[GEN3_14:GENERA3]
-¡Tommy! ¡Necesito ayuda aquí!
+[RS1_04:RAYS1]
+~w~Mata a algunos ~r~Sindacco~w~ para llamar su atención.
-[GEN3_15:GENERA3]
-¡No te preocupes, te tengo cubierto!
+[RS1_05:RAYS1]
+~w~Sube al ~b~coche~w~ de Leon.
-[GEN3_16:GENERA3]
-¡Los hombres de Díaz están siendo eliminados!
+[RS1_06:RAYS1]
+~w~Ve al ~y~territorio de los Sindacco~w~.
-[GEN3_19:GENERA3]
-~g~¡Haitianos! ¡Están saboteando el trato! ¡Protege a Díaz!
+[RS1_07:RAYS1]
+~w~Vuelve al ~b~coche~w~.
-[GEN3_20:GENERA3]
-~g~Ve al aparcamiento donde podrás recoger el arma que te dejó el Coronel.
+[RS1_10:RAYS1]
+~r~¡Has matado a Leon!
-[GEN3_22:GENERA3]
-Salud de Díaz:
+[RAYS1AA:RAYS1]
+¡Bien, yo cojo el volante, tú disparas!
-[GEN3_23:GENERA3]
-~g~¡Has dejado a Lance atrás! ¡Ve a por él!
+[RAYS1AB:RAYS1]
+Pero ¿no habías dicho que los yakuza harían el trabajo sucio?
-[GEN3_25:GENERA3]
-~r~¡Lance murió!
+[RAYS1AC:RAYS1]
+Adaptarse o morir, Cipriani. Adaptarse o morir.
-[GEN3_28:GENERA3]
-~g~Devuélvele el maletín a Díaz.
+[RAYS1BA:RAYS1]
+Mierda, esto se está yendo de madre.
-[GEN3_29:GENERA3]
-~g~Recoge el maletín y llévaselo a Díaz.
+[RAYS1BB:RAYS1]
+Yo me las piro. Nos vemos, Toni.
-[GEN3_30:GENERA3]
-~r~¡Se escapó con el dinero! ¡Díaz te arrancará las pelotas por ésto!
+[RAYS1CA:RAYS1]
+¡No bajes la vista, Toni!
-[GEN3_33:GENERA3]
-~r~¡Mira adónde disparas! Se supone que tienes que proteger a Díaz y a sus hombres, ¡no dispararles!
+[RAYS1CB:RAYS1]
+¡Detrás de nosotros, Toni, detrás!
-[GEN3_34:GENERA3]
-~r~¡No va a haber ningún trato si disparas a los cubanos!
+[RAYS1CC:RAYS1]
+¡Cuidado, a la izquierda!
-[GEN3_35:GENERA3]
-~g~¡Ha robado el dinero de Díaz!
+[RAYS1CD:RAYS1]
+¡A la derecha, Toni, la derecha!
-[GEN3_36:GENERA3]
-~g~¡Pilla una moto, persíguele y recupera el dinero de Díaz!
+[RAYS1CE:RAYS1]
+Vuelve al coche.
-[GEN3_37:GENERA3]
-~g~Aquí vienen los cubanos. Vigila el trato y asegúrate que Díaz y Lance están a salvo.
+[RAYS1CF:RAYS1]
+¡Mira lo que estás haciendo!
-[GEN3_38:GENERA3]
-~r~¡Díaz ha muerto! ¡Has fallado en protegerle!
+[RAYS1OS:RAYS1]
+¡Oh, mierda!
-[GEN3_39:GENERA3]
-~g~Ve a tu posición estratégica en el piso de arriba.
+{=================================== MISSION TABLE RAYS2 ===================================}
-[GEN3_44:GENERA3]
-~g~Ve con Lance al punto de entrega y vigila a Díaz.
+[RS2_02:RAYS2]
+~w~¡Rápido, súbete a una ~b~moto~w~!
-[GEN3_45:GENERA3]
-Estarán aquí en cualquier minuto, mejor será que vayamos tomando posiciones estratégicas.
+[RS2_03:RAYS2]
+~w~¡Atrae a los motoristas a la ~y~emboscada~w~!
-[GEN3_40:GENERA3] { reVC update }
-Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RS2_04:RAYS2]
+~w~Vuelve, ¡no puedes dejar atrás a ningún ~r~Forelli~w~!
-[GEN3_41:GENERA3] { reVC update }
-Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RS2_05:RAYS2]
+~w~Vuelve a la ~b~moto~w~.
-[GEN3_46:GENERA3]
-¡Mierda!
+[RS2_06:RAYS2]
+~r~Necesitas una moto para atraer a los Forelli.
-[GEN3_47:GENERA3]
-¡Tommy!
+[RS2_07:RAYS2]
+~r~Los Yardies quieren derramar personalmente la sangre de los Forelli.
-[GEN3_48:GENERA3]
-¡Maldición!
+[RS2_08:RAYS2]
+~r~¡No ha sobrevivido ni un Yardie!
-[GEN3_49:GENERA3]
-Salud de Lance:
+[RS2_09:RAYS2]
+~1~
+
+[RS2_10:RAYS2]
+~r~¡No pueden perseguirte si no tienen ni una moto!
+
+[RAYS2AA:RAYS2]
+Te has tomado tu tiempo, Toni.
+
+[RAYS2AB:RAYS2]
+Tú dices 'salta', yo digo 'jódete'.
+
+[RAYS2AD:RAYS2]
+Qué bonito. Ahora escucha.
+
+[RAYS2AE:RAYS2]
+Los Yardies ansían el territorio de los Forelli en Newport.
+
+[RAYS2AF:RAYS2]
+Ve allí y atrae a los soldados de los Forelli al hospital de Rockford.
+
+[RAYS2AG:RAYS2]
+Los Yardies les estarán esperando.
+
+[RAYS2AH:RAYS2]
+¿Y tú qué ganas?
+
+[RAYS2AI:RAYS2]
+Les debo una. Nos vemos luego.
+
+[RS2_11:RAYS2]
+¡No mates a ningún Forelli!
+
+[RS2_12:RAYS2]
+¡~r~Elimínalos~w~!
+
+[RS2_01:RAYS2]
+~w~Roba una ~b~moto~w~ de los Forelli pero no mates a ninguno.
+
+[RAYS2DB:RAYS2]
+Sí. ¡Venga, vamos a darles!
+
+[RS2_13:RAYS2]
+~r~¡Han muerto demasiados Yardies!
+
+{=================================== MISSION TABLE RAYS3 ===================================}
+
+[CRAZ_01:RAYS3]
+No sé qué hice mal en mi otra vida para merecerte.
+
+[CRAZ_02:RAYS3]
+Ray, tienes 40 tacos y no tienes ni idea de cómo va todo este rollo.
+
+[CRAZ_03:RAYS3]
+No sé cómo has llegado tan lejos.
+
+[CRAZ_04:RAYS3]
+No entiendo cómo nadie te ha volado esa carita de Madre Teresa que tienes.
+
+[CRAZ_05:RAYS3]
+Eh, esa boca, Leon.
+
+[CRAZ_06:RAYS3]
+No puedo creer que tengamos esta puta conversación.
+
+[CRAZ_07:RAYS3]
+¿Qué, te vas a ir corriendo con mamá?
+
+[CRAZ_08:RAYS3]
+¿A jugar al caballito con papá?
+
+[CRAZ_09:RAYS3]
+¿O a pedirles un besito?
+
+[CRAZ_10:RAYS3]
+¡Eh, Toni!
+
+[CRAZ_14:RAYS3]
+Se asegurará de que lo haga todo según el reglamento.
+
+[CRAZ_15:RAYS3]
+Toni Cipriani, Ray Machowski.
+
+[CRAZ_16:RAYS3]
+Está con nosotros. Vamos a combatir la delincuencia organizada.
+
+[CRAZ_17:RAYS3]
+Ahora vete corriendo a comisaría y haz un atestado.
+
+[CRAZ_18:RAYS3]
+Buen chico... Vamos, Toni.
+
+[CRAZ_19:RAYS3]
+Eres un cabronazo, Leon.
+
+[CRAZ_11:RAYS3]
+- Quieto, capullo. ~n~ - ¡EPA! ¡Epa! ¡Epa! ¡Tranqui! Te presento a mi nuevo socio. ¡El Sr. Chupiguay!
+
+[RAYS3_1:RAYS3]
+Ayuda a los yakuza a conquistar el territorio de los Forelli en Belleville Park. Hay que matar a ~1~ Forelli usando solo la katana.
+
+[RAYS3_2:RAYS3]
+~w~Mata a ~1~ ~r~Forelli~w~ usando solo la katana que te han dado.
+
+[RAYS3_3:RAYS3]
+Abat.
+
+[RAYS3_4:RAYS3]
+~w~Tienes que matar a los ~r~Forelli~w~ con la katana.
+
+[RAYS3_5:RAYS3]
+~w~No tienes katana. Coge otra ~g~de repuesto~w~.
+
+[RAYS3_6:RAYS3]
+~r~Se te ha acabado el tiempo.
+
+[RAYS3_7:RAYS3]
+~w~Mata a ~1~ ~r~Forelli~w~ usando solo la katana que te han dado antes de las ~1~:~1~.
+
+[RAYS3_8:RAYS3]
+~w~Mata a ~1~ ~r~Forelli~w~ usando solo la katana que te han dado antes de las ~1~:0~1~.
+
+[RAYS3_9:RAYS3]
+~w~Mata a ~1~ ~r~Forelli~w~ usando solo la katana que te han dado antes de las 0~1~:~1~.
+
+[RAYS310:RAYS3]
+~w~Mata a ~1~ ~r~Forelli~w~ usando solo la katana que te han dado antes de las 0~1~:0~1~.
-[GEN3_50:GENERA3]
-~r~¡Has perdido el dinero de Díaz! ¡La próxima vez intenta no convertir mi dinero en cenizas!
+{=================================== MISSION TABLE RAYS4 ===================================}
-[GEN3_51:GENERA3]
-¡Más condenados haitianos en una furgoneta apestosa!
+[RAYS4_1:RAYS4]
+~w~Están atacando a los Yardies en Newport. Ocúpate de los ~r~Sindacco~w~ atacantes.
-[GEN3_54:GENERA3]
-¡No os quedéis ahí, panda de gilipollas, perseguid a ese haitiano cabrón!
+[RAYS4_2:RAYS4]
+~w~Ve a hablar con el ~b~líder de la banda de los Yardies~w~.
-[GEN3_55:GENERA3]
-¡Tommy! ¡Yo me quedo aquí a proteger a Díaz!
+[RAYS4_3:RAYS4]
+~w~Sigue al ~b~líder de la banda de los Yardies~w~.
-[GEN3_18:GENERA3]
-~g~Aquí llegan los cubanos, mantente cerca de Díaz. Asegúrate de que la negociación entre Díaz y Lance sea segura.
+[RAYS4_4:RAYS4]
+~r~¡Han matado a uno de los Yardies!
-[GEN3_56:GENERA3]
-~r~¡Díaz ha caído en una emboscada y ha muerto! ¡La próxima vez no le pierdas de vista!
+[RAYS4_5:RAYS4]
+~w~Protege a los Yardies hasta que llegue la ambulancia.
-[GEN3_57:GENERA3]
-El Kruger es un rifle de asalto que te permite apuntar en primera persona manualmente.
+[RAYS4_6:RAYS4]
+~w~Vuelve y protege a los Yardies.
-[GEN3_58:GENERA3]
-Mantén pulsado ~h~~k~~PED_LOCK_TARGET~~w~ para ~h~apuntar~w~ con un rifle de asalto.
+[RAYS4_7:RAYS4]
+~w~Abre un camino para que los Yardies lleguen a la ambulancia.
-[GEN3_59:GENERA3]
-Mantén pulsado ~h~~k~~PED_LOCK_TARGET~~w~ para ~h~apuntar~w~ con un rifle de asalto.
+[RAYS4_8:RAYS4]
+~w~Ve a encontrarte con la ~y~ambulancia~w~.
-[GEN3_60:GENERA3]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ un rifle de asalto.
+[RAYS4AA:RAYS4]
+Cipriani, debemos dejar de vernos así.
-[GEN3_61:GENERA3]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ un rifle de asalto.
+[RAYS4AB:RAYS4]
+Por mí, bien.
-[GEN3_62:GENERA3]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ un rifle de asalto.
+[RAYS4AC:RAYS4]
+Vamos, anímate un poco.
-[GEN3_63:GENERA3]
-Además de realizar maniobras de acercamiento,~h~ las motos ~w~te permiten ~h~disparar hacia adelante~w~.
+[RAYS4AD:RAYS4]
+¿Qué tienes para mí, McAffrey?
-[GEN3_64:GENERA3] { reVC update }
-Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RAYS4AE:RAYS4]
+A esos Yardies les cuesta un poco conservar el territorio que acaban de conseguir en Newport.
-[GEN3_65:GENERA3] { reVC update }
-Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RAYS4AF:RAYS4]
+Parece que los Sindacco quieren recuperarlo.
-[GEN3_66:GENERA3] { reVC update }
-Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~.
+[RAYS4BA:RAYS4]
+¡Han perforado a Boy Rudyard!
-[GEN3_67:GENERA3]
-Para disparar hacia el frente en una moto deberás tener un subfusil.
+[RAYS4BB:RAYS4]
+¡Venga, tenemos que meterlo en una ambulancia!
-[GEN3_53:GENERA3]
-¡Mi dinero!
+[RAYS4BC:RAYS4]
+Mierda, más payasos de los Sindacco.
-[GEN3_52:GENERA3]
-¿Esos haitianos creen que pueden enfrentarse a RICARDO DÍAZ?
+[RAYS4BD:RAYS4]
+¡Yo traigo la ambulancia, tú ayuda a mis chicos!
-{=================================== MISSION TABLE GENERA4 ===================================}
+[RAYS4BE:RAYS4]
+¡Salgamos de aquí!
-[DETON:GENERA4]
-DETONACIÓN:
+[RAYS4BF:RAYS4]
+¡Aquí viene la ambulancia!
-[COL4_3:GENERA4]
-¡CONVOY, ALTO!
+[RAYS4BG:RAYS4]
+Gracias, Sr. Cipriani, ¡Le debemos una!
-[COL4_6:GENERA4]
-¡NOS ESTÁN DISPARANDO!
+{=================================== MISSION TABLE RAYS5 ===================================}
-[COL4_7:GENERA4]
-¡Civil, aléjese del tanque!
+[RAYS5_1:RAYS5]
+NONE
-[COL4_8:GENERA4]
-¡DIJE, alejaos, INMEDIATAMENTE!
+[RAYS5AA:RAYS5]
+¿No hay flores?
-[COL4_9:GENERA4]
-¡POSICIONES DEFENSIVAS!
+[RAYS5AB:RAYS5]
+No sabía que fuera tu funeral.
-[COL4_11:GENERA4]
-- ¡Quite a esos civiles fuera de mi camino, soldado! - ¡Señor, sí, señor!
+[RAYS5AC:RAYS5]
+Eres un payaso de la hostia, Toni, un tío muy cachondo.
-[COL4_12:GENERA4]
-¡Civil en el TANQUE! ¡DETENEDLE!
+[RAYS5AD:RAYS5]
+Los Forelli se están poniendo serios.
-[COL4_13:GENERA4]
-Este es un convoy militar, no obstruyan nuestra ruta.
+[RAYS5AE:RAYS5]
+Están transportando armas y quedándose con una parte para ellos...
-[COL4_14:GENERA4]
-Tírelo, soldado.
+[RAYS5AF:RAYS5]
+Preparándose por si hay marrones.
-[COL4_15:GENERA4]
-- ¡Mueva ese vehículo civil fuera de nuestro camino! - ¡Señor! ¡Moviendo el vehículo, señor!
+[RAYS5AG:RAYS5]
+Están llevando las armas a Fort Staunton en camiones.
-[COL4_17:GENERA4]
-¡Bien, PELOTÓN, MUÉVANSE!
+[RAYS5AH:RAYS5]
+Bueno, ha sido muy 'díver'.
-[COL4_18:GENERA4]
-¡Hay alguien en el tanque, señor!
+[RAYS5AI:RAYS5]
+Lo mismo digo.
-[COL4_19:GENERA4]
-- ¡Vaya a conseguir unos donuts, soldado! - ¡Señor, sí, señor!
+[RAY5_2:RAYS5]
+Han pedido refuerzos.
-[COL4_20:GENERA4]
-Blanco localizado, señor.
+[RAY5_3:RAYS5]
+~r~Los Forelli tienen la munición.
-[COL4_21:GENERA4]
-¡FRANCOTIRADOR!
+[RAY5_4:RAYS5]
+Eh, ¡es Cipriani!
-[COL4_22:GENERA4]
-Me voy de aquí.
+[RAY5_5:RAYS5]
+¡Cargáoslo!
-[COL4_23:GENERA4]
-- ¡Objetivo completado! ¡Pelotón, rompan filas! - Vamos a comer unos cuantos donuts.
+[RAY5_6:RAYS5]
+Uno menos, ahora destruye el otro ~r~camión~w~.
-[COL4_24:GENERA4]
-¡Activado protocolo de seguridad Delta India Eco! ¡Iniciada autodestrucción del vehículo!
+[RAY5_1:RAYS5]
+Destruye los ~r~camiones~w~ antes de que lleguen a su destino.
-[COL4_26:GENERA4]
-¡Prepárate para morir, basura comunista!
+[RAY5_7:RAYS5]
+Destruye el ~r~camión~w~ antes de que saquen munición suficiente de él.
-[COL4_B2:GENERA4]
-~r~El tanque llegó a su destino a salvo!
+[RAY5_8:RAYS5]
+~r~¡No has destruido el camión a tiempo!
-[COL4_B5:GENERA4]
-~r~¡El tanque ha sido destruido!
+{=================================== MISSION TABLE SALH1 ===================================}
-[COL4_01:GENERA4]
-Díaz estaba complacido, y le gustaría verte de nuevo.
+[SLH1_F1:SALH1]
+~r~Has matado a uno de los Hoods.
-[COL4_02:GENERA4]
-¿Es eso algo bueno?
+[SLH1_F2:SALH1]
+~w~Atrae a los Forelli destrozando sus ~r~coches~w~.
-[COL4_03:GENERA4]
-¡Por supuesto! Aunque estoy empezando a pensar que Díaz fue el responsable de nuestra desafortunada pérdida...
+[SLH1_F3:SALH1]
+~w~Véngate de los ~r~Forelli~w~.
-[COL4_04:GENERA4]
-¿Qué te hace decir eso?
+[SLH1_F4:SALH1]
+~w~Atrae a más Forelli destrozando otro ~r~coche~w~.
-[COL4_05:GENERA4]
-Uno no esgrime acusaciones contra un hombre como Díaz... Solo estoy pensando en voz alta...
+[SLH1_F5:SALH1]
+~w~No dejes a los ~b~Hoods~w~ detrás.
-[COL4_06:GENERA4]
-No importa. Tengo una propuesta de la que te podrías beneficiar...
+[SLH1_B0:SALH1]
+~w~Vale, blanco. Quememos la ciudad.
-[COL4_07:GENERA4]
-No tengo tiempo para hacer más recados, Cortez.
+[SLH1_B1:SALH1]
+~w~¡Eh! ¡Vuelve aquí, tarado!
-[COL4_08:GENERA4]
-Yo habría pensado que un hombre con unas deudas tan grandes estaría ansioso por encontrar oportunidades. Por favor, Tommy, al menos escúchame.
+[SLH1_B2:SALH1]
+~w~¡Venga, estás colgado! ¡Mi culo no cabe en eso!
-[COL4_09:GENERA4]
-Adelante...
+[SLH1_B3:SALH1]
+~w~¡Ya era hora! No llegarías a ninguna parte sin mí.
-[COL410:GENERA4]
-Tengo un comprador para una pieza de equipo militar que está siendo transportada a través de la ciudad. Recógela para mí...
+[SLH1_B4:SALH1]
+~w~¡Joder! ¡Ha sido difícil, tío!
-[COL411:GENERA4]
-y una vez que la tengas, quiero que me llames inmediatamente, entonces...
+[SLH1_B6:SALH1]
+~w~... No pretendía ofender, Toni.
-[COL4_B4:GENERA4]
-~g~El tanque está bloqueado. Busca un modo de engañar a los ocupantes.
+[SLH1_B7:SALH1]
+~w~¡Es hora de que los Hoods se levanten y hagan lo correcto!
-[COL4_1:GENERA4]
-- ¿Que qué pasa con el artillero? - ¡No lo sé, señor!
+[SLH1_B8:SALH1]
+~w~¡Venga! ¡Vamos a freírlos!
-[COL4_4:GENERA4]
-- Ve arriba soldado. - ¡Sí, señor!
+[SLH1_C0:SALH1]
+~w~¡Hermano!
-[COL4_B1:GENERA4]
-~g~Ve y adquiere el vehículo militar que se está paseando por la ciudad.
+[SLH1_C1:SALH1]
+~w~¿Estás 'apollardao'? ¿Adónde vas?
-[COL4_B3:GENERA4]
-~g~Deja el tanque en el escondite del Coronel antes que se autodestruya.
+[SLH1_C2:SALH1]
+~w~¿Y dónde cojones se supone que debo sentarme?
-[COL4_B6:GENERA4]
-~g~¡Encuentra el modo de robar el tanque!
+[SLH1_C3:SALH1]
+~w~¡Ya era hora! No llegarías a ninguna parte sin mí.
-[COL4_B7:GENERA4]
-~g~Conduce el tanque al garaje.
+[SLH1_C4:SALH1]
+~w~¡Mierrrda! ¡He visto más panolis allí!
-[COL4_B8:GENERA4]
-~g~Bájate del tanque y sal del garaje.
+[SLH1_D0:SALH1]
+~w~¡Eh! ¡Que es mi coche!
-{=================================== MISSION TABLE GENERA5 ===================================}
+[SLH1_D1:SALH1]
+~w~¡Así está más ventilado!
-[COL5A_1:GENERA5]
-Las circunstancias fuerzan una apresurada partida, amigo.
+[SLH1_E0:SALH1]
+~w~¿Qué diantres pasa?
-[COL5A_2:GENERA5]
-¿Cuál es el problema?
+[SLH1_E1:SALH1]
+~w~¡Os vamos a sacar a patadas de aquí! ¡Eso es lo que pasa!
-[COL5A_3:GENERA5]
-Los franceses quieren recuperar la tecnología de sus misiles y después del último incidente,
+[SLH1_X0:SALH1]
+Got threat
-[COL5A_4:GENERA5]
-siento que es momento de encontrar puertos más seguros.
+[SLH1_X1:SALH1]
+Had threat
-[COL5A_5:GENERA5]
-¿No sería más seguro volar?
+[SLH1_X2:SALH1]
+Find threat
-[COL5A_6:GENERA5]
-Estaría muerto antes de alcanzar el mostrador de facturación de equipajes. Además, necesito sacar del país mi mercancía.
+[SLH1_F0:SALH1]
+~w~Recoge a los ~b~Hoods~w~ y llama la atención de los ~r~Forelli~w~.
-[COL5A_7:GENERA5]
-¿Necesitas otro guardaespaldas?
+[RUFJ_01:SALH1]
+Su abogado, Sr. Leone.
-[COL5A_8:GENERA5]
-Tú, amigo mío, vales por diez guardaespaldas...
+[RUFJ_02:SALH1]
+Ya sé que es mi abogado, amigo...
-[COL5B_1:GENERA5]
-Thomas, me has protegido y servido bien.
+[RUFJ_03:SALH1]
+Vamos, déjame un rato.
-[COL5B_2:GENERA5]
-Pero ahora debes dejarnos antes de que lleguemos a mar abierto.
+[RUFJ_04:SALH1]
+Venga, chico, vete corriendo a saludar a tu madre de mi parte. ¿Capisci?
-[COL5B_4:GENERA5]
-Gracias, Coronel.
+[RUFJ_05:SALH1]
+Muy bien... Tiene cinco minutos.
-[COL5B_5:GENERA5]
-Una petición más, mientras estoy fuera, ¿podrías vigilar a Mercedes por mí?
+[RUFJ_06:SALH1]
+Escucha... eh... Lionel, tienes buen aspecto.
-[COL5B_6:GENERA5]
-Creo que ella puede cuidarse por sí misma, pero seguro, la vigilaré.
+[RUFJ_07:SALH1]
+¡Mírame a mí!
-[COL5B_7:GENERA5]
-Gracias, amigo mío. Hasta luego.
+[RUFJ_08:SALH1]
+Un buen miembro de la comunidad, y de repente me enchironan.
-[COL5B_8:GENERA5]
-Adiós, amigo.
+[RUFJ_09:SALH1]
+¡Esto sí que pone a prueba mi talante filantrópico!
-[COL5_7:GENERA5]
-¡Deja de dispararme!
+[RUFJ_10:SALH1]
+Por supuesto, Sr. Leone.
-[COL5_9:GENERA5]
-¡Tommy, haz que dejen de dispararme!
+[RUFJ_11:SALH1]
+Estamos haciendo todo lo posible por sacarle de aquí y... uh...
-[COL5_10:GENERA5]
-¡Tengo inmunidad diplomática!
+[RUFJ_12:SALH1]
+procurar que vuelva a ayudar a la comunidad cuanto antes.
-[COL5_11:GENERA5]
-¡No disparen, soy un Coronel!
+[RUFJ_13:SALH1]
+Por supuesto.
+
+[RUFJ_14:SALH1]
+Espero que empapelemos a alguien por este atropello.
+
+[RUFJ_15:SALH1]
+Esos hijoputas de los Sindacco, o esos maricones, los Forelli... ¿Quién ha sido?
+
+[RUFJ_16:SALH1]
+¿Quién me ha delatado?
+
+[RUFJ_18:SALH1]
+A por los dos a saco.
+
+[RUFJ_19:SALH1]
+Tal como lo veo, ambos merecen una buena paliza por esto.
-[COL5_12:GENERA5]
-Thomas, mátales, mi país te adorará.
+[RUFJ_22:SALH1]
+Gracias. Toni, de verdad que significas mucho para mí, ya lo sabes.
-[COL5_13:GENERA5]
-¡Tommy, los franceses nos superan!
+[RUFJ_23:SALH1]
+Escucha, igual necesitas algún refuerzo.
-[COL5_14:GENERA5]
-Tommy, mire a donde mire, hay franceses, ¡lo odio!
+[RUFJ_24:SALH1]
+Usa a los Hoods. ¿Vale?
-[COL5_15:GENERA5]
-Tommy, ¿cómo estás?
+[RUFJ_25:SALH1]
+Sus deseos son órdenes, Sr. Leone.
-[COL5_16:GENERA5]
-¡Ésto es por Piaf y Gainesbourg y por vuestro estúpido pan francés!
+[RUFJ_26:SALH1]
+Muy bien... Marchando de aquí... Lionel.
-[COL5_1:GENERA5]
-¡A babor! ¡A babor!
+[RUFJ_20:SALH1]
+- Hijos de perra. ~n~ - Será un placer.
-[COL5_2:GENERA5]
-¡Están atacando desde estribor!
+{=================================== MISSION TABLE SALH2 ===================================}
-[COL5_3:GENERA5]
-¡El puente está ahí delante!
+[SALH2AA:SALH2]
+~w~¡Eh, Sal! Soy yo... Toni.
-[COL5_4:GENERA5]
-¡Tienen un helicóptero!
+[SALH2AB:SALH2]
+~w~¡Toni! Me alegro de oír tu voz, chico.
-[COL5_B1:GENERA5]
-~g~Protege al Coronel y su yate a toda costa.
+[SALH2AC:SALH2]
+~w~Estos mendas no me dejan ver a nadie.
-[COL5_B2:GENERA5]
-~g~Ponte delante y despeja la ruta del yate del Coronel.
+[SALH2AD:SALH2]
+~w~Escucha, hay un montón de asuntos que resolver.
-[COL5_B3:GENERA5]
-~r~¡El Coronel está muerto!
+[SALH2AE:SALH2]
+~w~Encárgate de Paulie Sindacco. Su familia está acabada en esta ciudad.
-[COL5_B4:GENERA5]
-~g~Destruye el helicóptero de ataque.
+[SALH2AF:SALH2]
+~w~Pero cree que puede irse de rositas, como si no tuviera deudas.
-[COL5B_3:GENERA5]
-Bajaré mi lancha personal. Quédatela, amigo, en señal de mi agradecimiento.
+[SALH2AG:SALH2]
+~w~¡Estoy en chirona por culpa de ese bastardo!
-[COL5_B5:GENERA5]
-~g~Dispara para abatir los helicópteros, no pongas en peligro el yate.
+[SALH2AH:SALH2]
+~w~Haz que ese hijo de perra me la pague.
-[COL5_B6:GENERA5]
-~g~Te has quedado sin munición, consigue más de las escaleras en la cubierta superior.
+[SALH2O1:SALH2]
+~w~Intercepta a Paulie Sindacco en la ~y~central de la presa de Cochrane~w~.
-[COL5_B7:GENERA5]
-~g~Te estás quedando sin salud, consigue más de las escaleras en la cubierta superior.
+[SALH2F1:SALH2]
+~r~¡Se ha escapado! ¡Salvatore no se va a alegrar!
-{=================================== MISSION TABLE HAIT1 ===================================}
+[SALH2CA:SALH2]
+~w~¡Idiotas! ¡Es Toni Cipriani! ¡A por él!
-[HAM1_A:HAIT1]
-¿Hola? ¿Hola?
+[SALH2BA:SALH2]
+~w~¡Eh, Toni! ¿Por qué no vienes nadando y me besas el culo?
-[HAM1_B:HAIT1]
-Entra, cielo, y descansa los pies.
+[SALH2BB:SALH2]
+~w~¡Eh, a ver si me coges, capullo!
-[HAM1_C:HAIT1]
-Tú debes de ser el gran hombre malo sobre el que ha estado hablando mi abuelo.
+[SALH2BI:SALH2]
+~w~Dale recuerdos a Salvatore. ¡Le enviaré una postal!
-[HAM1_D:HAIT1]
-Me cuenta cosas sobre ti, ya sabes, cuando me visita,
+[SALH2BC:SALH2]
+~w~¿Qué vas a hacer ahora, pringado?
-[HAM1_E:HAIT1]
-y sobre los otros que te esperan.
+[SALH2BE:SALH2]
+~w~¡Eres hombre muerto!
-[HAM1_F:HAIT1]
-Bien, todos llevamos muertos mucho tiempo, pero tú...
+[SALH2BF:SALH2]
+~w~¡Eres un mierda!
-[HAM1_G:HAIT1]
-No me gustaría estar en tu pellejo.
+[SALH2BG:SALH2]
+~w~¡Sorpresa, saco de mierda!
-[HAM1_H:HAIT1]
-Recibí un mensaje. Para que viniese aquí.
+[SALH2BH:SALH2]
+~w~'Americanos, Paulie Sindacco ha muerto...'
-[HAM1_I:HAIT1]
-¿Puedes oírles?
+[SALH2BD:SALH2]
+~w~¡No vas a pillarme ni en broma, caraculo!
-[HAM1_J:HAIT1]
-Están diciendo tu nombre, deben quererte mucho, ¿no crees?
+[SALH2O2:SALH2]
+~w~Mata a ~r~Paulie Sindacco~w~. ¡No dejes que se escape!
-[HAM1_K:HAIT1]
-Ahora ayudarás a la tía Poulet y quizás ella te ayude.
+[SALH2O3:SALH2]
+Consigue un vehículo y embosca a ~r~Paulie~w~ desde la orilla.
-[HAM1_L:HAIT1]
-Quizás ella pueda darte un pequeño talismán después de todo esto.
+{=================================== MISSION TABLE SALH3 ===================================}
-[HAM1_M:HAIT1]
-¿Darte algo de magia para echar el mal de ojo a la policía?
+[SALH3_1:SALH3]
+~w~¿Sal? ¿Cómo estamos?
-[HAM1_N:HAIT1]
-Mira, esto es todo muy... ¿darme qué?
+[SALH3_2:SALH3]
+~w~¡'Bene' por los cojones! ¡De narices!
-[HAM1_O:HAIT1]
-Yo, yo, creo que recibí la dirección equivocada...
+[SALH3_3:SALH3]
+~w~Uno: el nuevo alcalde se empeña en que no me den la condicional.
-[HAM1_P:HAIT1]
-Haz esto por mí, Tommy...
+[SALH3_4:SALH3]
+~w~Dos: no avanzamos ni un palmo en la lucha contra la Tríada y los Diablos.
-[HAM1_Q:HAIT1]
-Los cubanos, tontos orgullosos y desagradables,
+[SALH3_5:SALH3]
+~w~Tres: me han dicho que la puta Yakuza mueve ficha para quedarse con la ciudad.
-[HAM1_R:HAIT1]
-han estado causando problemas a mis encantadores chicos haitianos.
+[SALH3_6:SALH3]
+~w~Aparte de eso, todo va de perlas.
-[HAM1_S:HAIT1]
-Ahora le han dicho a la policía donde he estado almacenando mis polvos.
+[SALH3_7:SALH3]
+~w~Tras años de control, los mafiosos nos vamos por el desagüe como un vulgar truño.
-[HAM1_T:HAIT1]
-Ellos piensan que es farlopa, pardillos.
+[SALH38:SALH3]
+~w~Yo me encargaré de todo, jefe.
-[HAM1_U:HAIT1]
-Ahora sé un buen chico, Tommy, y ve a conseguir los polvos para la tía Poulet.
+[SALH39:SALH3]
+~w~Los yakuza han recibido un cargamento de armas en Aspatria.
-[HAM1_V:HAIT1]
-Sí, sí, seguro, seguro.
+[SALH310:SALH3]
+~w~¡Ya nada puede pararlos!
-[HAM1_1:HAIT1]
-~g~Los polis se están acercando a nuestros escondites. Ve y consíguelos antes que ellos lo hagan.
+[SALH311:SALH3]
+~w~Eso ya lo veremos.
-[HAM1_2:HAIT1]
-~r~¡Los polis llegaron primero al escondite!
+[SALH3_A:SALH3]
+~w~Registra el ~y~recinto de los yakuza~w~.
-[HAM1_3:HAIT1]
-~g~¡Lleva este material de vuelta al escondite!
+[SALH3C1:SALH3]
+~w~Busca una manera de entrar en el ~y~recinto~w~.
-[HAM1_4:HAIT1]
-~g~¡Bien! ¡Ahora el siguiente!
+[SALH3C2:SALH3]
+~w~¡Hostia puta! ¡La Virgen en tecnicolor!
-[HAM1_6:HAIT1]
-~r~¡Ese almacén está destruido, idiota!
+[SALH3C3:SALH3]
+~w~¡Destruye el ~r~tanque~w~!
-[HAM1_7:HAIT1]
-~g~¡Los polis han conseguido nuestro alijo! ¡Recupéralo antes de que se marchen!
+[SALH3C4:SALH3]
+~w~¿Qué diablos...?
-[HAM1_8:HAIT1]
-~g~Los polis están de camino para recoger el alijo, ¡date prisa!
+[SALH3C5:SALH3]
+~w~¡Matadlo!
-[HAT_1A:HAIT1]
-~g~¡No muevas ni un solo dedo!
+[SALH3C6:SALH3]
+~w~El ~r~tanque ~w~lleva armadura pesada. ¡Armas normales no neutralizarán este monstruo!
-{=================================== MISSION TABLE HAIT2 ===================================}
+[SALH3G1:SALH3]
+~w~Eh 'colega', aquí no se te ha perdido nada.
-[HAT2_B1:HAIT2]
-~g~Ve hasta la camioneta que contiene las bombas aéreas.
+[SALH3G2:SALH3]
+~w~Parece que esta zona es solo para los yakuza.
-[HAT2_B2:HAIT2]
-Mata a los cubanos...
+[SALH3G3:SALH3]
+~w~¡Cómprate un desierto y piérdete!
-[HAT2_B4:HAIT2]
-¡Y destruye sus barcos!
+[SALH3_B:SALH3]
+~w~¡El coche de los yakuza les ha engañado!
-[HAT2_B5:HAIT2]
-~g~Los cubanos están huyendo. ¡No les dejes escapar!
+[SALH3_C:SALH3]
+~w~Entra en el ~y~recinto~w~ con el coche y echa un vistazo.
-[HAT2_B6:HAIT2]
-~r~¡El avión RC está yendo demasiado lejos del alcance!
+{=================================== MISSION TABLE SALH4 ===================================}
-[HAT2_B7:HAIT2]
-~g~Uno de los cubanos está escapando en un coche. ¡No dejes ningún testigo!
+[SALH4_1:SALH4]
+~w~¿Sal? ¿Estás ahí?
-[HAT2_B8:HAIT2]
-~r~¡No te quedan aviones RC!
+[SALH4_2:SALH4]
+~w~¡Anthony! ¡Ahora salgo!
-[HAT2_B9:HAIT2]
-Aviones RC:
+[SALH42A:SALH4]
+~w~¡Hoy comparezco ante el juez!
-[HAT2_1:HAIT2]
-Oh. Lo siento, debo tener la dirección equivocada...
+[SALH4_3:SALH4]
+~w~¡Estupendo!
-[HAT2_2:HAIT2]
-Bueno, también podrías entrar y descansar los pies y tomarte una taza de té.
+[SALH44C:SALH4]
+~w~Sí, Toni. Lo que tú digas...
-[HAT2_3:HAIT2]
-¿Tienes algo ahí para mí?
+[SALH44E:SALH4]
+~w~Eh, ya vienen los guardias... Nos vemos en la puerta de delante.
-[HAT2_4:HAIT2]
-Sí...
+[SALH4_5:SALH4]
+~w~¡Consigue un coche de policía!
-[HAT2_5:HAIT2]
-Este lugar me parece familiar. Un olor de la niñez... un deja vu...
+[SALH45A:SALH4]
+~w~¡Necesitas un coche de policía o espantarás al convoy!
-[HAT2_6:HAIT2]
-Bien, Tommy, te voy a susurrar un pequeño recado para que lo hagas. Escúchame bien, ¿vale?
+[SALH4_6:SALH4]
+~w~Ocupa tu puesto en la ~y~comisaría~w~.
-[HAT2_7:HAIT2]
-Te pareces a alguien que yo...
+[SALH4_7:SALH4]
+~w~¡Hostia puta!
-[HAT2_8:HAIT2]
-Los cubanos tienen barcos rápidos que usan para cruzar el charco cargados de polvo.
+[SALH4_8:SALH4]
+~w~Protege el ~b~furgón celular~w~ y asegúrate de que llegue entero.
-[HAT2_9:HAIT2]
-Es su sustento.
+[SALH4_9:SALH4]
+~w~No te alejes demasiado del ~b~furgón celular~w~.
-[HAT2_10:HAIT2]
-Mi sobrino ha estado preparando pequeñas bombas aéreas para eliminarles.
+[SALH410:SALH4]
+~w~Vas a perder el ~b~furgón celular~w~.
-[HAT2_11:HAIT2]
-Vuela los barcos y conviértelos en madera de ataúd.
+[SALH411:SALH4]
+~r~¡Has perdido el furgón celular! ¡Han asesinado a Sal!
-[HAT2_12:HAIT2]
-Muchas gracias por el té.
+[SALH412:SALH4]
+~r~¡Han destruido el furgón celular!
-[HAT2_B3:HAIT2] { reVC update }
-Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para soltar una bomba. Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para cancelar.
+[SALH413:SALH4]
+~w~No cabrees a la poli o Salvatore no conseguirá la condicional.
-{=================================== MISSION TABLE HAIT3 ===================================}
+[SALH416:SALH4]
+~w~Escolta el ~b~convoy~w~ hasta su destino.
-[HAM3_A:HAIT3]
-¿Hola? Hola, eh... Estaba buscando a alguien por aquí...
+[SALH417:SALH4]
+~r~¡La has cagado! ¡La poli ha anulado la vista!
-[HAM3_B:HAIT3]
-Pareces hambriento, Tommy,
+[SALH420:SALH4]
+~r~¡Sal ha muerto!
-[HAM3_C:HAIT3]
-¿Te conozco?
+[SALH421:SALH4]
+~r~¡Has perdido el furgón celular!
-[HAM3_D:HAIT3]
-Silencio.
+[SALH422:SALH4]
+~w~Líbrate de la presión policial o atraerás la atención sobre el convoy.
-[HAM3_E:HAIT3]
-Una cosa más y te podré dejar marchar, Tommy.
+[SALH424:SALH4]
+~w~Destruye la ~y~barricada~w~.
-[HAM3_F:HAIT3]
-Mis chicos están en guerra con los cubanos.
+[SALH415:SALH4]
+~w~Es una delicia volver a ser libre.
-[HAM3_G:HAIT3]
-Pero sin armas.
+[SALH418:SALH4]
+~w~Escucha. Voy a casa a cambiarme estos trapos inmundos, ¿vale?
-[HAM3_H:HAIT3]
-Pero los cubanos tienen una sorpresa por llegar.
+[SALH419:SALH4]
+~w~Nos vemos allí.
-[HAM3_I:HAIT3]
-Mientras combaten en las calles, tú tomarás este rifle y los matarás en medio del alboroto.
+[SALH414:SALH4]
+~w~Se informa de barricada ilegal en el área...
-[HAM3_J:HAIT3]
-Nadie te verá, nadie te oirá.
+[SALH44A:SALH4]
+~w~Conmigo aquí dentro, ¿quién va a pararles los pies?
-[HAM3_K:HAIT3]
-Tommy, si haces esto por mí, ya no estarás atado a los lazos de mi delantal.
+[SALH4_4:SALH4]
+~w~Sí, pero me da en la nariz que los sicilianos no quieren que llegue al juzgado.
-[HAM3_1:HAIT3]
-~g~Debemos ganar esta batalla. Si todos los haitianos mueren, perdemos nosotros.
+[SALH44B:SALH4]
+~w~Eh, antes tendrían que acabar conmigo, Sal.
-[HAM3_3:HAIT3]
-~g~Espero que los cubanos hagan trampas así que permanece alerta.
+[SALH44D:SALH4]
+~w~¡Tú asegúrate de que yo llegue al juzgado!
-[HAM3_4:HAIT3]
-~r~¡Te han visto! ¡La misión ha fracasado!
+{=================================== MISSION TABLE SALH5 ===================================}
-[HAM3_5:HAIT3]
-~g~Debes matar a los cubanos desde lejos. No deben verte.
+[SALH51A:SALH5]
+~w~Pisa a fondo, Toni.
-[HAM3_8:HAIT3]
-~g~¡Los haitianos están muriendo! Mejora tu puntería.
+[SALH51B:SALH5]
+~w~Mucho me da que los sicilianos van a por el alcalde.
-[HAM3_7:HAIT3]
-~g~¡Cuidado! Los cubanos han traído refuerzos. ¡¡Acaba con todos ellos!!
+[SALH51C:SALH5]
+~w~Tenemos que llegar a él antes que ellos.
-[HAM3_2:HAIT3]
-~r~¡Los haitianos han muerto!
+[SALH511:SALH5]
+~w~Esto pinta mal...
-[HAM3_L:HAIT3]
-Vale, tía...
+[SALH554:SALH5]
+~w~¡A todo gas, Toni!
-{=================================== MISSION TABLE HOTEL ===================================}
+[SALH512:SALH5]
+~w~Te has dejado atrás a ~b~Sal~w~. Vuelve y recógelo.
-[INTB_A:HOTEL]
-¡Tommy! Tommy, ha pasado tanto tiempo.
+[SALH513:SALH5]
+~w~¡Maldita sea! ¡Ya están aquí!
-[INTB_B:HOTEL]
-Hola, Sonny.
+[SALH560:SALH5]
+~w~¡Fríelos, Toni!
-[INTB_C:HOTEL]
-Lo sé, lo sé. Te abruma la emoción.
+[SALH561:SALH5]
+~w~¡Voy a por el alcalde!
-[INTB_D:HOTEL]
-Quince años... si parece que fue ayer.
+[SALH514:SALH5]
+~w~¡Esos cabronazos ya lo han cogido!
-[INTB_E:HOTEL]
-Supongo que es cuestión de perspectiva.
+[SALH555:SALH5]
+~w~¡Vamos, Toni! ¡Por aquí!
-[INTB_F:HOTEL]
-Eh, estar en el talego por la familia no es agradable,
+[SALH515:SALH5]
+~w~¡Allí están!
-[INTB_G:HOTEL]
-aunque la familia cuida de los suyos, ¿no es verdad?
+[SALH517:SALH5]
+~w~¿De dónde han salido esos bastardos?
-[INTB_H:HOTEL]
-Y bien, cómo fue el negocio... ¿estás sentado en una pila de oro blanco?
+[SALH556:SALH5]
+~w~¡Detrás, Toni!
-[INTB_I:HOTEL]
-Mira, Sonny, nos tendieron una trampa. El negocio fue una emboscada. Harry y Lee están muertos.
+[SALH562:SALH5]
+~w~¡Toni, ahí delante!
-[INTB_J:HOTEL]
-Me estás tomando el pelo, ¿no? Tommy. Dime que aún tienes el dinero.
+[SALH519:SALH5]
+~w~¡Toni! ¡Derriba el helicóptero!
-[INTB_K:HOTEL]
-No Sonny... no tengo el dinero.
+[SALH522:SALH5]
+~w~Creen que pueden esconderse en el faro.
-[INTB_L:HOTEL]
-Ése era mi dinero, Tommy, ¡mi dinero!
+[SALH557:SALH5]
+~w~¡A por esos bastardos!
-[INTB_M:HOTEL]
-¡Espero que no me andes jodiendo, Tommy, porque sabes que soy un hombre con el que no se puede jugar!
+[SALH558:SALH5]
+~w~¡Bonito disparo, Toni!
-[INTB_N:HOTEL]
-Espera Sonny.
+[SALH559:SALH5]
+~w~Ahora acabemos con esto.
-[INTB_O:HOTEL]
-Tienes mi garantía personal de que voy a conseguir recuperar el dinero y el alijo.
+[SALH526:SALH5]
+~w~¡Yo conduzco! ¡Tú cúbrenos!
-[INTB_P:HOTEL]
-Y te voy a enviar por correo las pelotas de los responsables.
+[SALH527:SALH5]
+~w~Vale, Toni... Es aquí.
-[INTB_Q:HOTEL]
-Eh, ya lo sé. No eres tonto, Tommy, pero te prevengo, yo tampoco lo soy.
+[SALH528:SALH5]
+~w~Pero ¿cuántos bastardos hay en esta roca?
-[INTB_R:HOTEL]
-Si se tratase de cualquier otro, ya estarías MUERTO.
+[SALH553:SALH5]
+~w~¡Tumbas a un bastardo y aparece otro a darte por culo!
-[INTB_S:HOTEL]
-Pero como se trata de ti, como hemos hecho historia, voy a dejar que te ocupes de esto.
+[SALH523:SALH5]
+~r~Has abandonado a Salvatore a su suerte con los sicilianos.
-[INTB_T:HOTEL]
-Mira, Sonny, tienes mi palabra.
+[SALH524:SALH5]
+~r~¡Salvatore ha muerto!
-[INTB_U:HOTEL]
-Estaremos en contacto.
+[SALH552:SALH5]
+~r~¡El alcalde ha muerto!
-{=================================== MISSION TABLE ICECRE1 ===================================}
+[SALH573:SALH5]
+~r~¡Has destrozado la embarcación! ¡Los has perdido!
-[ICC1_1:ICECRE1]
-~g~Utiliza la furgoneta de los helados para distribuir perica en Vice City.
+[SALH516:SALH5]
+<NOT USED>~w~Take out the guards and then let's get after them in that boat!
-[ICC1_3:ICECRE1]
-~g~Recibirás dinero por cada venta que hagas, pero cuantas más transacciones hagas más atraerás la atención de la policía.
+[SALH518:SALH5]
+<NOT USED>~w~Another ~r~boat~w~ incoming...
-[ICC1_4:ICECRE1]
-~g~No hay ningún cliente en esta zona, inténtalo en otra.
+[SALH525:SALH5]
+<NOT USED>~w~Ha! They've left a rocket launcher on this thing!
-[ICC1_5:ICECRE1]
-Negocios hechos:
+[SALH520:SALH5]
+<NOT USED>~y~I'll move closer to shore so we're more protected... Take it down!
-[ICC1_6:ICECRE1]
-~g~Utiliza la furgoneta Mr. Whoopee para distribuir los productos Cherry Popper por Vice City.
+[SALH521:SALH5]
+<NOT USED>~w~Good work! Let's move out!
-[ICC1_7:ICECRE1]
-~g~Por cada transacción que hagas recibirás dinero, aunque cuantas más operaciones lleves a cabo más atención provocarás de la policía.
+[SALH53A:SALH5]
+~w~Torini... Tenía que ser él.
-[ICC1_8:ICECRE1]
-~g~Para llevar a cabo el negocio ~h~aparca la furgoneta, ~g~y pulsa el ~h~~k~~VEHICLE_HORN~ ~g~para que suene la música que llamará la atención de la gente.
+[SALH53B:SALH5]
+~w~¡Suéltale!
-[ICC1_9:ICECRE1]
-~g~A las bandas locales no les gustará que hagas negocios en su territorio así que si haces esto, prepárate para hostilidades.
+[SALH53C:SALH5]
+~w~¡El alcalde es mío!
-[ICC1_10:ICECRE1]
-~g~Has hecho ~1~ tratos!
+[SALH53D:SALH5]
+~w~¡ESTA CIUDAD es mía!
-[ICC1_11:ICECRE1]
-~g~Has hecho ~1~ trato!
+[SALH53E:SALH5]
+~w~Salvatore...
-[ICC1_12:ICECRE1]
-¡PROPIEDAD ADQUIRIDA!
+[SALH53F:SALH5]
+~w~Sicilia nunca quiso questo schifo di città.
-[ICC1_13:ICECRE1]
-~r~¡No conseguiste ningún trato!
+[SALH53G:SALH5]
+~w~Pero, cuando el tributo se acabó, ¿qué más podíamos hacer...?
-[ICC1_14:ICECRE1]
-FÁBRICA DE HELADOS CONSOLIDADA
+[SALH53H:SALH5]
+~w~No ha sido nada personal.
-[ICC1_15:ICECRE1]
-~g~La fábrica de helados generará ahora unos ingresos máximos de hasta ~1~ $. Asegúrate de recaudarlos regularmente.
+[SALH53I:SALH5]
+~w~¿Nada personal?
-[ICC1_2:ICECRE1]
-~g~Aparca la furgoneta y pulsa ~h~~k~~VEHICLE_HORN~~w~ para que suene la música indicando a los clientes que estás listo para hacer empezar.
+[SALH53J:SALH5]
+~w~¡Después de lo que me has hecho!
-[ICC1_16:ICECRE1]
-~g~Utiliza la furgoneta Mr. Whoopee para distribuir los productos Cherry Popper por Vice City.
+[SALH53K:SALH5]
+~w~¡Te voy a sacar los higadillos!
-[ICE_AT1:ICECRE1]
-FÁBRICA DE HELADOS CONSOLIDADA
+[SALH5TD:SALH5]
+~w~¡Derriba el ~r~helicóptero de Massimo~w~!
-[ICE_AT2:ICECRE1]
-~g~La fábrica Cherry Popper generará ahora unos ingresos hasta un máximo de ~1~ $. Asegúrate de recaudarlos de manera regular.
+[SALH5MO:SALH5]
+¡~r~Massimo~w~ se está largando!
-[ICC1_17:ICECRE1]
-Misión de Distribución finalizada
+[SALH5GO:SALH5]
+~r~¡Massimo se ha escapado!
-[ICC1_18:ICECRE1]
-Venta total de helados: ~1~ $
+[SALH571:SALH5]
+~w~Dirígete al ~y~muelle~w~.
-[ICC1_19:ICECRE1]
-Total de negocios hechos: ~1~
+[SALH570:SALH5]
+~w~¡Elimina a esos ~r~mafiosos sicilianos~w~!
-{=================================== MISSION TABLE ICECUT ===================================}
+[SALH572:SALH5]
+~w~¡Ocúpate de ese ~r~listillo siciliano~w~!
-[ICC1_A:ICECUT]
-¿Quién eres tú?
+[SALH510:SALH5]
+~w~Ve al ~y~ayuntamiento~w~. ¡Ten cuidado con esos listillos sicilianos!
-[ICC1_B:ICECUT]
-El nuevo propietario.
+[SICI_01:SALH5]
+No, luego hablamos...
-[ICC1_C:ICECUT]
-¿Fuiste ahora o en cualquier momento un niño?
+[SICI_04:SALH5]
+Ambos hemos vuelto. ¡Tú y yo!
-[ICC1_D:ICECUT]
-¿De qué estás hablando?
+[SICI_05:SALH5]
+Lo hemos conseguido, ¿eh?
-[ICC1_E:ICECUT]
-¿Fuiste niño?
+[SICI_06:SALH5]
+Y que lo diga.
-[ICC1_F:ICECUT]
-¡Sí! ¡Calma! ¿Qué pasa contigo?
+[SICI_07:SALH5]
+Hemos borrado del mapa a los Forelli.
-[ICC1_G:ICECUT]
-Lo sabía. Un niño.
+[SICI_08:SALH5]
+Hemos enviado a los Sindacco con los peces.
-[ICC1_H:ICECUT]
-¡Un maldito, apestoso, lloriqueante, mocoso, vil, vomitivo y pequeño bebé chillón!
+[SICI_09:SALH5]
+Y ahora tengo a los sicilianos al teléfono, que quieren la paz.
-[ICC1_I:ICECUT]
-Bebés... Criaturas repugnantes, horribles y espantosas.
+[SICI_10:SALH5]
+¡Todos la queremos! Pero la mía, no la de esos cabrones.
-[ICC1_J:ICECUT]
-Mami no te quiere. ¡mierdecilla!
+[SICI_11:SALH5]
+Ahora soy el puto amo.
-[ICC1_K:ICECUT]
-Cálmate.
+[SICI_12:SALH5]
+Ningún menda de la vieja patria me va a decir lo que debo hacer.
-[ICC1_L:ICECUT]
-ODIO los bebés, odio los niños.
+[SICI_13:SALH5]
+Les he dicho que se vayan a tomar por culo.
-[ICC1_M:ICECUT]
-Son unos pequeños guarros, llorones, mocosos, perversos y vomitivos...
+[SICI_14:SALH5]
+¿Sí? ¿Es eso prudente?
-[ICC1_N:ICECUT]
-¡Ya es suficiente!
+[SICI_15:SALH5]
+Eh, ahora el jefe soy yo. ¡YO!
-[ICC1_O:ICECUT]
-¿Qué pasa contigo?
+[SICI_16:SALH5]
+Vamos a ver al alcalde para que me retire los cargos...
-[ICC1_P:ICECUT]
-¿Fabricas helado, de acuerdo? Es básicamente para los niños.
+[FIN1_01:SALH5]
+¡Eh! ¡Sr. alcalde!
-[ICC1_Q:ICECUT]
-¿Qué clase de psicópata eres tú?
+[FIN1_03:SALH5]
+Sí, gracias.
-[ICC1_R:ICECUT]
-Solo para que lo entienda, ¿para qué hacer felices a los niños si los odias?
+[FIN1_04:SALH5]
+Y eso significa que...
-[ICC1_S:ICECUT]
-Oh, estúpido, apestoso, lloriqueante...
+[FIN1_05:SALH5]
+Eeh... ¿que la ciudad se lo agradece?
-[ICC1_T:ICECUT]
-¡Cállate!
+[FIN1_06:SALH5]
+Inténtelo de nuevo.
-[ICC1_U:ICECUT]
-¡Mocoso!
+[FIN1_07:SALH5]
+Que usted trabaja para mí, ¿estamos?
-[ICC1_V:ICECUT]
-El helado es una tapadera.
+[FIN1_08:SALH5]
+Ah, sí. Que yo trabajo para usted.
-[ICC1_W:ICECUT]
-Distribuimos otros productos no lácteos.
+[FIN1_09:SALH5]
+Bien. No nos llame. Ya lo haremos nosotros.
-[ICC1_X:ICECUT]
-Y si veo un niño, le saco provecho.
+[FIN1_10:SALH5]
+Largo de aquí, capullo.
-[ICC1_Y:ICECUT]
-¿Verdad, niños? Sí, sí, lo hago. Mamá no os quiere.
+[FIN1_11:SALH5]
+Gracias, Sr. Leone.
-[ICC1_Z:ICECUT]
-¡Os ODIA!
+[FIN1_12:SALH5]
+Toni. Lo hemos conseguido. Ahora mandamos tú y yo.
-[ICC1_ZA:ICECUT]
-¡PROPIEDAD ADQUIRIDA!
+[FIN1_13:SALH5]
+Somos un equipo, ¿no?
-{=================================== MISSION TABLE INTRO ===================================}
+[FIN1_14:SALH5]
+Y ahora necesito que me hagas una cosita de nada.
-[INT1_A:INTRO]
-Tommy Vercetti... Mierda.
+[FIN1_15:SALH5]
+Tengo ciertos problemas que hay que resolver...
-[INT1_B:INTRO]
-No pensé que le fueran a soltar nunca.
+[FIN2_01:SALH5]
+Hola, tío. ¿Cómo le va, eh?
-[INT1_C:INTRO]
-Mantuvo la cabeza gacha, ayuda a la gente a olvidar.
+[FIN2_02:SALH5]
+Tiene buen aspecto.
-[INT1_D:INTRO]
-La gente lo recordará antes de lo que crees.
+[FIN2_03:SALH5]
+Ahhhh Salvatore, lo único que queríamos era claridad.
-[INT1_E:INTRO]
-Cuando le vean paseando por las calles de su barrio.
+[FIN2_04:SALH5]
+Sí, tío. Y yo lo aprecio.
-[INT1_F:INTRO]
-Será malo para el negocio.
+[FIN2_07:SALH5]
+Bien, muy bien.
-[INT1_G:INTRO]
-Bien, ¿qué vamos a hacer, Sonny?
+[FIN2_08:SALH5]
+Víbora de mierda.
-[INT1_H:INTRO]
-Le tratamos como a un viejo amigo y le tenemos ocupado fuera de la ciudad. ¿De acuerdo?
+[FIN2_09:SALH5]
+No confiaría en él ni harto de vino.
-[INT1_I:INTRO]
-Hemos estado hablando de expandirnos hacia el sur. ¿Verdad?
+[FIN2_23:SALH5]
+A todo cerdo le llega su San Martín...
-[INT1_J:INTRO]
-Hoy en día Vice City es oro de veinticuatro quilates.
+[FIN2_10:SALH5]
+Sí, al menos lo hemos conseguido.
-[INT1_K:INTRO]
-Los colombianos, los mejicanos, demonios,
+[FIN2_11:SALH5]
+Sí. Hemos hecho limpieza. Lo has hecho bien, Toni. Bien de verdad.
-[INT1_L:INTRO]
-incluso esos refugiados cubanos se están repartiendo un buen pedazo de la acción.
+[FIN2_12:SALH5]
+Siempre supe que eras un gran tío. Me has salvado unas cuantas veces.
-[INT1_M:INTRO]
-Pero todo es por la nieve, Sonny.
+[FIN2_13:SALH5]
+Y aprecio una lealtad así.
-[INT1_N:INTRO]
-¡Ninguna de las familias tocará esa mierda!
+[FIN2_14:SALH5]
+Gracias.
-[INT1_O:INTRO]
-Los tiempos cambian.
+[FIN2_15:SALH5]
+Un buen trabajador. Me gusta tu respeto.
-[INT1_P:INTRO]
-Las familias no pueden seguir dando la espalda mientras nuestros enemigos recogen las recompensas.
+[FIN2_19:SALH5]
+¿Puedes ponerle precio a la amistad?
-[INT1_Q:INTRO]
-Así que enviaremos a alguien para que nos hagan el trabajo sucio
+[FIN2_20:SALH5]
+¿La clase de amistad que tenemos tú y yo?
-[INT1_R:INTRO]
-y tranquilamente nos llevaremos un buen cacho. ¿Vale?
+[FIN2_21:SALH5]
+¡Qué vergüenza! Ven aquí.
-[INT1_S:INTRO]
-¿Quién es nuestro contacto allí?
+[FIN2_22:SALH5]
+Eres buen chico, debería darte vergüenza.
-[INT1_T:INTRO]
-Ken Rosenberg, un estúpido abogado.
+[SICI_02:SALH5]
+- ¡Eh, Toni! ~n~ - ¡Sal! Ha vuelto a donde pertenece.
-[INT1_U:INTRO]
-¿Cómo va a atar corto a Vercetti?
+[FIN2_05:SALH5]
+- Entonces, ¿estamos ya en paz? ¿La vieja patria y tú? ~n~ - Por supuesto. Toda mi gente y yo.
-[INT1_V:INTRO]
-No necesitamos que lo haga.
+[FIN2_16:SALH5]
+- Así que aquí tienes el medio millón que te prometí. ~n~ - ¿Medio? ¡Eh! ¿No había dicho que dos?
-[INT1_W:INTRO]
-Simplemente le soltaremos en Vice City
+[FIN2_18:SALH5]
+¡Dije un millón de dólares! ¿Y qué?
-[INT1_X:INTRO]
-y le daremos un poco de dinero para que empiece. ¿De acuerdo?
+[FIN1_02:SALH5]
+Le acabamos de salvar de ese hatajo de sicilianos chalados.
-[INT1_Y:INTRO]
-Le damos unos cuantos meses.
+{=================================== MISSION TABLE DONH1 ===================================}
-[INT1_Z:INTRO]
-Luego vamos,
+[DONH1JA:DONH1]
+~w~Toni, mi ex mentor, Avery Carrington, viene hoy aquí en avión...
-[INT1_A1:INTRO]
-y le hacemos una pequeña visita, ¿de acuerdo?
+[DONH1JB:DONH1]
+~w~Me han comunicado que trabaja para la Panlantic Corporation.
-[INT1_A2:INTRO]
-Para ver cómo le va.
+[DONH1JC:DONH1]
+~w~Harán lo que sea por conseguir inmuebles de primera.
-[INT2_A:INTRO]
-¡Eh, eh, tíos! ¡Aquí, eh, Ken Rosenberg! ¡Je, je, genial!
+[DONH1JD:DONH1]
+~w~Tenemos que conseguir sus planes de compra de terrenos.
-[INT2_B:INTRO]
-Bueno, voy a llevaros a la reunión, ¿vale?
+[DONH1JE:DONH1]
+~w~¡Vamos, Toni! ¡A por él!
-[INT2_C:INTRO]
-He hablado con los proveedores, y ellos están muy...
+[DONH1CA:DONH1]
+~w~Eh, Toni, nos iría bien un medio de transporte.
-[INT2_D:INTRO]
-interesados en empezar una relación de negocios, así que...
+[DONH1DA:DONH1]
+~w~Dirígete al aeropuerto, Toni.
-[INT2_E:INTRO]
-si todo esto va bien, deberíamos...
+[DONH1DB:DONH1]
+~w~No tenemos tiempo que perder.
-[INT2_F:INTRO]
-empezar a obtener beneficios, lo cual es, ya sabes...
+[DONH1EA:DONH1]
+~w~Oh, sí. Éste es uno de mis mejores planes, no cabe duda...
-[INT2_G:INTRO]
-Bueno.
+[DONH1EB:DONH1]
+~w~Nunca había caído en la cuenta...
-[INT2_H:INTRO]
-Entonces. Son hermanos, ¿vale?
+[DONH1EC:DONH1]
+~w~Me voy a forrar con esto...
-[INT2_I:INTRO]
-Uno dirige el negocio,
+[DONH1ED:DONH1]
+~w~Sí, señor, me voy a forrar...
-[INT2_J:INTRO]
-y el otro se encarga de los vuelos.
+[DONH1EE:DONH1]
+~w~Hasta Avery estaría orgulloso.
-[INT2_K:INTRO]
-Ahora operan fuera de Méjico
+[DONH1GA:DONH1]
+~w~¡Ahí está!
-[INT3_A:INTRO]
-Bien, son los del helicóptero.
+[DONH1GB:DONH1]
+~w~¡Mátalo, Toni!
-[INT3_B:INTRO]
-De acuerdo, este es el trato.
+[DONH1GC:DONH1]
+~w~¡Necesito esos planes!
-[INT3_C:INTRO]
-Quieren un intercambio directo en campo abierto.
+[DONH1HA:DONH1]
+~w~Por favor, Toni... ¡se escapa!
-[INT3_D:INTRO]
-¿De acuerdo? De acuerdo, permanece firme, vamos.
+[DONH1IA:DONH1]
+~w~¡Oh, mayúsculo, Toni...! ¡De verdad!
-[INT3_E:INTRO]
-De acuerdo, ahora con cuidado.
+[DONH1IB:DONH1]
+~w~Ahora volvamos a la seguridad de mi... ejem... 'residencia'.
-[INT3_F:INTRO]
-Estoy aquí. ¡El coche está en marcha, nena!
+[DONH1O0:DONH1]
+~w~Lleva a Donald Love al ~y~aeropuerto~w~.
-[INT3_G:INTRO]
-¿Lo tienes?
+[DONH1O1:DONH1]
+~w~Mata a ~r~Avery Carrington~w~ y cógele los planes.
-[INT3_H:INTRO]
-Colombiana, 100% con un grado de pureza A, amigo.
+[DONH1O2:DONH1]
+¡~r~Avery~w~ se larga! ¡Párale los pies!
-[INT3_I:INTRO]
-¿Los verdes?
+[DONH1O3:DONH1]
+~r~Avery~w~ ya tiene otro vehículo. ¡No dejes que escape!
-[INT3_J:INTRO]
-De diez y de veinte... usados.
+[DONH1O4:DONH1]
+¡~r~Avery~w~ se está largando! ¡Cógelo!
-[INT3_L:INTRO]
-¡Vamos, fuera de aquí! ¡Arranca!
+[DONH1O5:DONH1]
+~w~Recoge a ~b~Donald Love~w~.
-[INT4_A:INTRO]
-¡Jodidos! ¡Estamos jodidos!
+[DONH1O6:DONH1]
+~w~¡Bien hecho! Coge los ~g~planes~w~.
-[INT4_B:INTRO]
-Muy típico,
+[DONH1O7:DONH1]
+~w~Lleva a Donald y los planes de vuelta al ~y~centro de acogida~w~.
-[INT4_C:INTRO]
-saco la cabeza del agujero un jodido segundo,
+[DONH1O8:DONH1]
+~w~¡Se te han caído los ~g~planes~w~! Vuelve y recógelos.
-[INT4_D:INTRO]
-¡Y el destino me echa la mierda a la cara!
+[DONH1OA:DONH1]
+~w~¡Van a por ti y ~r~Avery~w~ se está escapando! ¡Mátalo!
-[INT4_E:INTRO]
-Bueno, ¡jódete!
+[DONH1OB:DONH1]
+~w~Necesitas un vehículo.
-[INT4_F:INTRO]
-Cierra el pico y deja de quejarte. Estás vivo, ¿no?
+[DONH1OC:DONH1]
+~w~¡No pierdas a ~b~Donald~w~!
-[INT4_G:INTRO]
-Déjame justo aquí.
+[DONH1OD:DONH1]
+~w~¡Ten cuidado! Los planes se perderán si el ~r~coche de Avery~w~ se destruye con él dentro.
-[INT4_H:INTRO]
-Ve y abandona el coche y luego vete a dormir un poco.
+[DONH1OE:DONH1]
+~r~Avery Carrington~w~ se escapa. ¡Ve tras él!
-[INT4_I:INTRO]
-Mañana me pasaré por tu oficina y podemos empezar a solucionar esto.
+[DONH1F0:DONH1]
+~r~¡Los planes se han destruido!
-[INT4_J:INTRO]
-De acuerdo, es una buena idea, iré a dormir un poco.
+[DONH1F1:DONH1]
+~r~¡Avery Carrington se ha escapado!
-[INT4_K:INTRO]
-¿Qué vas a hacer tú.
+[DONH1F2:DONH1]
+~r~¡Donald ha muerto!
-[INT4_L:INTRO]
-Me las arreglaré para volver a mi hotel.
+[DONH1OF:DONH1]
+~r~Avery Carrington~w~ casi ha llegado a su destino. ¡Detenlo!
-[INT4_M:INTRO]
-A despejar la mente y a pensar sobre esta mierda.
+[DONH1O9:DONH1]
+~w~¡No dejes a ~b~Donald~w~ atrás! ¡Esos colombianos lo matarán!
-[INT4_N:INTRO]
+[DONH1FA:DONH1]
+~w~Mmm, Panlantic debe de haber contratado al Cártel para proteger a Avery.
+
+[LAND_01:DONH1]
+Sé lo que estarás pensando, Toni. Cómo caen los poderosos...
+
+[LAND_02:DONH1]
+Pero solo es un bache temporal, amigo.
+
+[LAND_03:DONH1]
Vale.
-[INTRO1:INTRO]
-Saco la cabeza del agujero un jodido segundo y el destino, ¡me echa la mierda en la cara!
+[LAND_04:DONH1]
+Ay, no seas tan susceptible.
-[INTRO2:INTRO]
-Vete a dormir un poco.
+[LAND_05:DONH1]
+Sé que dije cosas horribles, que era culpa tuya y todo eso,
-[INTRO3:INTRO]
-¿Qué es lo que vas a hacer?
+[LAND_06:DONH1]
+pero el orgullo es mal compañero de cama, casi tanto como las termitas.
-[INTRO4:INTRO]
-Mañana me pasaré por tu oficina y empezaremos a solucionar todo este desorden.
+[LAND_07:DONH1]
+Créeme, he tenido de ambos recientemente.
-[INT3_K:INTRO]
-Creo que hemos llegado a un acuerdo, amigo mío.
+[LAND_08:DONH1]
+Espera, tú y yo... ¡volvemos a encontrarnos!
-[INT3_M:INTRO]
-Déjame ver.
+[LAND_09:DONH1]
+Yo nunca me he ido...
-[INT2_L:INTRO]
-no, no, no, espera...
+[LAND_10:DONH1]
+Estamos juntos en esto, 'amigo'.
-[INT3_N:INTRO]
-¡Mierda!
+[LAND_11:DONH1]
+No, te equivocas.
-{=================================== MISSION TABLE KENT1 ===================================}
+[LAND_12:DONH1]
+¡Por favor!
-[KPM1_A:KENT1]
-A ver tío, te voy a salvar el culo, colega.
+[LAND_13:DONH1]
+Por favor... ¿favor? Olvídalo, colega.
-[KPM1_B:KENT1]
-¿De qué coño me estás hablando?
+[LAND_18:DONH1]
+Vamos, te lo explico de camino.
-[KPM1_C:KENT1]
-Conoces a ese bastardo de Díaz, Don Farlopa.
+[LAND_19:DONH1]
+Espero que hayas traído coche. El mío está en... la tienda... ¡Sí!
-[KPM1_D:KENT1]
-Tiene a tu colega, Lance. Dicen que tu amigo intentó atacarle por sorpresa...
+[LAND_16:DONH1]
+- ¿Un 10% de qué? ¿De esto? ¡Oh, qué amable! ~n~ - De esto no... De algo gordo de verdad.
-[KPM1_E:KENT1]
-pero no fue lo suficientemente sorprendente, si entiendes lo que te quiero decir.
+[LAND_14:DONH1]
+- 'Es todo por tu culpa.' Patético. ~n~ - ¿Un 10%?
-[KPM1_F:KENT1]
-¿A dónde le llevó?
+{=================================== MISSION TABLE DONH2 ===================================}
-[KPM1_G:KENT1]
-¡Tranquilo! Le hicieron cruzar la ciudad hasta el desguace.
+[DONH2_1:DONH2]
+~w~Ve a la ~y~iglesia~w~ de Staunton Island.
-[KPM1_H:KENT1]
-Maldita sea... ¡Chalado!
+[DONH2_2:DONH2]
+~w~Sacúdele al ~r~reportero~w~ o apúntale con un arma para que te dé las fotos.
-[KPM1_2:KENT1]
-~r~¡Se suponía que debías sacar con vida a Lance!
+[DONH2_3:DONH2]
+~w~Tienes algunas fotos mías. ¿Dónde están?
-[KPM1_3:KENT1]
-SALUD DE LANCE:
+[DONH2_4:DONH2]
+~w~¡No me hagas nada!
-[RESC_1:KENT1]
-¿Crees que puedes usar un arma?
+[DONH2_5:DONH2]
+~w~¿Dónde están las malditas fotos?
-[RESC_2:KENT1]
-Sí... supongo... yo también me alegro de verte.
+[DONH2_6:DONH2]
+~w~¡No sé de qué me hablas!
-[RESC_3:KENT1]
-Salgamos de aquí.
+[DONH2_7:DONH2]
+~w~¿Dónde están?
-[RESC_4:KENT1]
-Ahí va todo mi cuidadoso plan, directo a la mierda, gracias a ti. La jodiste bien.
+[DONH2_8:DONH2]
+~w~¡No, por favor!
-[RESC_5:KENT1]
-Mató a mi hermano. ¿Qué esperabas que hiciese, cortarle el césped?
+[DONH2_9:DONH2]
+~w~¡Vamos, mariquita! ¡Dámelas!
-[RESC_6:KENT1]
-Vamos a tener que eliminar a ese mamón de Díaz antes de que él nos elimine a nosotros.
+[DONH210:DONH2]
+~w~¡Vale! ¡Vale!
-[RESC_7:KENT1]
-Haz que te curen y encuéntrate conmigo en el puente que va a Star Island, ¿de acuerdo?
+[DONH2EX:DONH2]
+~w~¡Te daré las fotos!
-[RESC_8:KENT1]
-De acuerdo, entendido.
+[DONH211:DONH2]
+~w~¡Escondí el carrete en mi garaje!
-[KPM1_1:KENT1]
-~g~¡Lance está siendo retenido en el desguace, ve y libérale!
+[DONH212:DONH2]
+~w~Ve al ~y~garaje del reportero~w~.
-[KPM1_4:KENT1]
-~g~¡Lleva a Lance al hospital!
+[DONH213:DONH2]
+~w~¡Socorro! ¡Auxilio! ¡Que me secuestran!
-[M_PASSN:KENT1]
-¡MISIÓN SUPERADA!
+[DONH214:DONH2]
+~w~¡Ayuda! ¡Me va a matar!
-[KPM1_5:KENT1]
-~g~¡Los hombres de Díaz te están buscando! Lleva a Lance al hospital.
+[DONH215:DONH2]
+~w~¡Soy demasiado bueno para morir!
-{=================================== MISSION TABLE KICKSTT ===================================}
+[DONH216:DONH2]
+~w~No puedo morir, ¡aún estoy acabando mi libro!
-[KICK1_2:KICKSTT]
-~r~¡No volviste a la moto lo suficientemente rápido!
+[DONH217:DONH2]
+~w~¡Mi editor nunca me habló de estas cosas!
-[KICK1_7:KICKSTT]
-~r~¡Has destrozado la moto!
+[DONH218:DONH2]
+~w~¡No muevas ni un músculo, soplapollas!
-[KICK1_8:KICKSTT]
-~g~¡Sube a la moto!
+[DONH219:DONH2]
+~w~¡Quieto parado, gilipollas!
-[KICK1_T:KICKSTT]
-TIEMPO EMPLEADO:
+[DONH220:DONH2]
+~w~¡Por el amor de Dios! ¿Vas a dejar de correr o qué?
-[KICKTM:KICKSTT]
-~b~TIEMPO DE PRUEBA: ~1~:~1~
+[DONH221:DONH2]
+~w~¡Toni! ¡Por fin!
-[KICKTM2:KICKSTT]
-~b~TIEMPO DE PRUEBA: ~1~:0~1~
+[DONH222:DONH2]
+~w~¡Un reportero vio cómo matábamos a Avery!
-[GETBIKE:KICKSTT]
-~g~Tienes ~1~ segundos para volver a subir a una moto antes de que termine la misión.
+[DONH223:DONH2]
+~w~¡Y tiene fotos! ¡Oh, Dios! ¡Estoy acabado!
-[KICK1_1:KICKSTT]
-~g~Completa el circuito lo más rápidamente posible.
+[DONH224:DONH2]
+~w~Cálmate, ¿quieres? ¿Dónde está ese reportero?
-[KICK1_6:KICKSTT]
-~g~¡Bien hecho!
+[DONH225:DONH2]
+~w~¡Oh, Toni, eres maravilloso!
-[KICK_10:KICKSTT]
-~g~Utiliza la Sanchez para completar el circuito pasando por todos los puntos de control.
+[DONH226:DONH2]
+~w~Al parecer ha estado trabajando de tapadillo en la iglesia de Staunton Island.
-[KICK_12:KICKSTT]
-~r~¡La has cagado!
+[DONH227:DONH2]
+~w~¡Consigue las fotos y liquídalo!
-[KICK_13:KICKSTT]
-~r~¡Has tardado mucho tiempo!
+[DONH228:DONH2]
+~r~¡Ned ha escapado!
-[KICK_11:KICKSTT]
-~g~Para abandonar la misión, sitúate en el ~q~marcador rosa~g~.
+[DONH230:DONH2]
+~w~Mata a ~r~Ned Burner~w~.
-{=================================== MISSION TABLE LAWYER1 ===================================}
+[DONH231:DONH2]
+~r~¡Ned ha muerto antes de que consiguieras las fotos!
-[LAW1_A:LAWYER1]
-Ve a dormir un poco, dice...
+[DONH229:DONH2]
+CACA DE LA VACA
-[LAW1_B:LAWYER1]
-¡Llevo sentado en esta silla toda la noche con las luces apagadas y bebiendo café!
+[DONCUTA:DONH2]
+~w~Aquí están... ¡Cógelas! Aún no las he revelado.
-[LAW1_C:LAWYER1]
-Esto es un desastre. ¡Estamos muy jodidos, tío!
+[DONCUTB:DONH2]
+~w~¡Cabronazo!
-[LAW1_D:LAWYER1]
-Estos gorilas, escúchame, van a venir aquí a arrancarme la cabeza. ¡Es ridículo!
+[DONH2SM:DONH2]
+Sustómetro
-[LAW1_E:LAWYER1]
-¡NO fui a la universidad para ésto! De acuerdo, ¿ahora qué coño vamos a hacer?
+[DONH233:DONH2]
+Sigue intimidando al reportero. Si el Sustómetro baja demasiado, intentará escapar.
-[LAW1_F:LAWYER1]
-Cállate, siéntate y relájate. Te diré lo que vamos a hacer.
+[DONH2LB:DONH2]
+~w~Has dejado atrás al ~b~periodista~w~. Vuelve a por él.
-[LAW1_G:LAWYER1]
-Vas a descubrir quién se llevó nuestra nieve... y después voy a cargármelos.
+[DONH2LC:DONH2]
+~r~Has abandonado al periodista.
-[LAW1_H:LAWYER1]
-Es una buena idea. Es una idea GENIAL. Déjame pensar, déjame pensar, déjame pensar.
+{=================================== MISSION TABLE DONH3 ===================================}
-[LAW1_I:LAWYER1]
-¡Oh! Está este Coronel retirado, el coronel Juan García Cortez.
+[DONH3I1:DONH3]
+~w~¡He vuelto!
-[LAW1_J:LAWYER1]
-Él es el que me ayudó a montar esta operación
+[DONH3I2:DONH3]
+~w~¡He vuelto de la muerte, Toni! Como el fénix de sus cenizas.
-[LAW1_K:LAWYER1]
-bien lejos de los matones establecidos de Vice City. ¿Entendido?
+[DONH3I3:DONH3]
+~w~Como Lázaro... sí... ¡Lázaro Love!
-[LAW1_L:LAWYER1]
-Bien, escucha. Está dando una fiesta en su lujoso yate en la bahía
+[DONH3I4:DONH3]
+~w~¡Ah, volveré a ser rico!
-[LAW1_M:LAWYER1]
-y todos los hombres más importantes de Vice City van a estar allí.
+[DONH3I5:DONH3]
+~w~Panlantic me va a pagar una fortuna por cerrar este trato.
-[LAW1_N:LAWYER1]
-Tengo invitación, por supuesto que tengo invitación,
+[DONH3I6:DONH3]
+~w~¡Lo hemos conseguido, Toni!
-[LAW1_O:LAWYER1]
-pero no sueñes que vaya a asomar la cabeza por esa puerta... ¡ni lo sueñes!
+[DONH3I7:DONH3]
+~w~Lo que tú digas.
-[LAW1_P:LAWYER1]
-¡Te lo dije, cállate! Iré yo mismo...
+[DONH3I8:DONH3]
+~w~Es hora de dar un sarao con una lista de invitados muy selecta.
-[LAW1_Q:LAWYER1]
-A mí también me gusta el estilo de 1978, pero esto no va a ser una fiesta con cerveza y tías en pelotas.
+[DONH3I9:DONH3]
+~w~¡Vamos!
-[LAW1_R:LAWYER1]
-Quiero decir, sin ánimo de ofender, creo que podrías hacer que la gente se volviese a mirar por razones equivocadas.
+[DONH3C1:DONH3]
+~w~Necesitaremos un medio de transporte, Toni. No tenemos mucho tiempo.
-[LAW1_S:LAWYER1]
-¿Qué hay de malo con cómo voy vestido?
+[DONH3L1:DONH3]
+~w~Necesitas a ~b~Donald~w~. ¡Vuelve y recógelo!
-[LAW1_T:LAWYER1]
-Vale, mira, ten. Pásate por donde Rafael, dile que te envío yo, hará que parezcas respetable.
+[DONH3L2:DONH3]
+~w~¡Venga, Toni! ¡Vamos apurados!
-[LAW1_U:LAWYER1]
-Bien, ve, vamos...
+[DONH3L3:DONH3]
+~w~¡Vuelve a dejar el cadáver!
-[LAWP_1:LAWYER1]
-Buenas noches.
+[DONH3_5:DONH3]
+~w~Toni, me moría por esta fiesta.
-[LAWP_2:LAWYER1]
-Tengo entendido que viene de parte del Sr. Rosenberg,
+[DONH35D:DONH3]
+~w~Igual que mis invitados.
-[LAWP_3:LAWYER1]
-Espero que ningún problema reciente le haya afectado a su salud física, o uh,
+[DONH35A:DONH3]
+~w~Encuentra un ~b~cadáver~w~.
-[LAWP_4:LAWYER1]
-o mental, Sr... ¿eh?
+[DONH35B:DONH3]
+~w~Consigue el ~b~cadáver de Avery~w~.
-[LAWP_5:LAWYER1]
-Vercetti. Tan sólo tiene un poco de... agorafobia.
+[DONH35C:DONH3]
+~w~Consigue el ~b~cadáver de Ned~w~.
-[LAWP_6:LAWYER1]
-Excelente, excelente. ¿Y usted?
+[DONH3_6:DONH3]
+~w~Lleva a Donald y a Avery al ~y~aeropuerto~w~.
-[LAWP_7:LAWYER1]
-Yo solo quiero mi farlopa.
+[DONH36A:DONH3]
+~w~¡Eh! ¡Devuelve esa ambulancia!
-[LAWP_8:LAWYER1]
-Ah. Ha sido un desgraciado cúmulo de circunstancias para todos los interesados.
+[DONH36B:DONH3]
+~w~Avery.
-[LAWP_9:LAWYER1]
-Por supuesto, he iniciado mis propias pesquisas
+[DONH36C:DONH3]
+~w~¡Avery! Cómo has envejecido desde la última vez que nos vimos.
-[LAWP_10:LAWYER1]
-pero un asunto tan delicado llevará tiempo.
+[DONH36D:DONH3]
+~w~Tú me alimentabas con esas perlas de sabiduría...
-[LAWP_11:LAWYER1]
-Quizás hablemos más tarde. ¿Eh?
+[DONH36E:DONH3]
+~w~... que pronto volveré a saborear.
-[LAWP_12:LAWYER1]
-Mientras tanto, permítame presentarle a mi hija.
+[DONH36F:DONH3]
+~w~¡Dios! ¡Si lleva peluquín!
-[LAWP_13:LAWYER1]
-¡Mercedes!
+[DONH36G:DONH3]
+~w~Toni. Llévanos a Avery y a mí a su jet privado, en el aeropuerto.
-[LAWP_14:LAWYER1]
-Cara mía, ¿podrías acompañar a nuestro invitado mientras atiendo a mis obligaciones?
+[DONH3_7:DONH3]
+~w~Lleva a Donald y a Ned al ~y~aeropuerto~w~.
-[LAWP_15:LAWYER1]
-Por supuesto, papá.
+[DONH37F:DONH3]
+~w~Toni. Llévanos al bueno de Ned y a mí al aeropuerto.
-[LAWP_16:LAWYER1]
-Por favor, discúlpeme.
+[DONH37A:DONH3]
+~w~¡Eh! ¡Ese tío está mangando el fiambre!
-[LAWP_17:LAWYER1]
-¿Mercedes?
+[DONH37B:DONH3]
+~w~Ah, Ned Burner, reportero intrépido.
-[LAWP_18:LAWYER1]
-Intenta acostumbrarte.
+[DONH37C:DONH3]
+~w~Ah, Ned. Te voy a dar la exclusiva...
-[LAWP_19:LAWYER1]
-En fin, déjame presentarte a algunos de nuestros invitados más distinguidos...
+[DONH37D:DONH3]
+~w~para que cubras mi maravillosa fiesta.
-[LAWP_20:LAWYER1]
-Ese es nuestro congresista Alex Shrub con la sonriente estrella de la silicona Candy Suxxx...
+[DONH37E:DONH3]
+~w~No invitaría a cualquiera a mi pequeño guateque.
-[LAWP_21:LAWYER1]
-¿Conoces a mi encantadora esposa, Laura? ¿No?
+[DONH37G:DONH3]
+~w~Las invitaciones son... para morirse.
-[LAWP_22:LAWYER1]
-Bueno, desafortunadamente ella está en Alabama. Te presento a Candy.
+[DONH3_8:DONH3]
+~w~Lleva el cadáver de Avery al ~y~aeropuerto~w~.
-[LAWP_23:LAWYER1]
-Y por ahí tenemos a la estirada estrella de las Mambas de Vice City, BJ.
+[DONH3_9:DONH3]
+~w~Lleva el cadáver de Ned al ~y~aeropuerto~w~.
-[LAWP_24:LAWYER1]
-Siempre tan encantador.
+[DONH3A1:DONH3]
+~w~Deja aquí los restos putrefactos del viejo Avery antes de que seguridad nos descubra.
-[LAWP_25:LAWYER1]
-Le paré en seco, lo hice, ¡y le dejé en una silla de ruedas!
+[DONH3A2:DONH3]
+~w~Le van a hacer la autopsia en cualquier momento.
-[LAWP_26:LAWYER1]
-¡Ja, ja, ésa es buena!
+[DONH3N1:DONH3]
+~w~Deja el cadáver de Ned Burner aquí antes de que seguridad nos descubra. Lo van a enterrar enseguida.
-[LAWP_27:LAWYER1]
-Bien, ahora estoy mirando una verdadera propiedad de primera.
+[DONH3F1:DONH3]
+~r~Love ha muerto.
-[LAWP_28:LAWYER1]
-Y ese anfibio al lado de la piscina es Jezz Torrent,
+[DONH3F2:DONH3]
+~r~¡Has perdido el cadáver de Avery!
-[LAWP_29:LAWYER1]
-cantante principal de Love Fist.
+[DONH3F3:DONH3]
+~r~¡Has perdido el cadáver de Ned!
-[LAWP_30:LAWYER1]
-¿Sabéis cómo juegan al ping-pong en Tailandia?
+[DONH3C2:DONH3]
+~w~Los vigilantes del aeropuerto cerrarán el hangar de Avery Carrington a las 22:00.
-[LAWP_31:LAWYER1]
-Dejad que os lo cuente,
+[DONH3F4:DONH3]
+~r~Demasiado tarde. Los vigilantes del aeropuerto han cerrado el hangar.
-[LAWP_32:LAWYER1]
-¡no hace falta una pala precisamente! ¿entendéis lo que quiero decir?
+[DONH3F5:DONH3]
+~r~Demasiado tarde. Los vigilantes del aeropuerto han encontrado a Donald con el cadáver de Avery.
-[LAWP_33:LAWYER1]
-Impotente.
+[DONH3W1:DONH3]
+~w~¡Deprisa! Los vigilantes del aeropuerto cerrarán el hangar de Avery Carrington a las 22:00.
-[LAWP_34:LAWYER1]
-Y el trío charlatán.
+[DONH3F6:DONH3]
+~r~Demasiado tarde. ¡Los vigilantes del aeropuerto han encontrado a Donald con el cadáver de Ned!
-[LAWP_35:LAWYER1]
-Esa glándula sudorípara durmiente es la mano derecha de papá, González
+{=================================== MISSION TABLE DONH4 ===================================}
-[LAWP_36:LAWYER1]
-y los otros dos son el pastor Richards
+[DONH4A:DONH4]
+~w~Donald me envía a recoger... los 'petardos'.
-[LAWP_37:LAWYER1]
-y el director de cine seudointelectual, Steve Scott.
+[DONH4B:DONH4]
+~w~Muy bien.
-[LAWP_38:LAWYER1]
-Pasión con las invasoras ninfómanas,
+[DON4EX1:DONH4]
+~w~Tengo lo que necesitáis. Pero vale su pasta.
-[LAWP_39:LAWYER1]
-entonces aparece el tiburón gigante y...
+[DON4EX2:DONH4]
+~w~Don ha dicho que me pagues tú, que él ya te lo apoquinaría luego.
-[LAWP_40:LAWYER1]
-¡Les arranca las pollas de un mordisco!
+[DONH4C:DONH4]
+~w~Típico de él.
-[LAWP_41:LAWYER1]
-Ja, bien. Nunca has visto nada igual, ¿Verdad?
+[DONH4D:DONH4]
+~w~¡Sí, claro! ¿Por qué no a nombre de 'bésame el culo'?
-[LAWP_42:LAWYER1]
-¡Coronel!
+[DONH4E:DONH4]
+~w~Bueno, ¿dónde están los petardos?
-[LAWP_43:LAWYER1]
-¡Sus fiestas tienen siempre un gran éxito!
+[DONH4F:DONH4]
+~w~¡Mierda, tío! Preparar unos petardos así lleva su tiempo.
-[LAWP_44:LAWYER1]
-Sólo puedo pedir disculpas por mi tardía llegada.
+[DON4EX4:DONH4]
+~w~Estaremos en contacto.
-[LAWP_45:LAWYER1]
-Ah, de nada amigo. ¿Cómo nos encontramos?
+[DONH4G:DONH4]
+¡Misión superada!
-[LAWP_46:LAWYER1]
-Nuestro negocio es muy estresante, siempre intentan desbancarnos.
+[DONH4_1:DONH4]
+NONE
-[LAWP_47:LAWYER1]
-Hay un momento para recompensar a los amigos de uno y para liquidar a los enemigos, amigo.
+[DONH4PS:DONH4]
+8-Ball te avisará cuando los petardos estén listos.
-[LAWP_48:LAWYER1]
-¿Quién es el bocazas?
+{=================================== MISSION TABLE DONH5 ===================================}
-[LAWP_49:LAWYER1]
-Ricardo Díaz, alias Don Farlopa.
+[DONH5_0:DONH5]
+Camioneta
-[LAWP_50:LAWYER1]
-¡Mercedes!
+[DNH5_A0:DONH5]
+~w~Mira, esta camioneta va cargadita. ¿Me explico? Conduce con cuidado.
-[LAWP_51:LAWYER1]
-Oh, estaba a punto de llevar a mi amigo de vuelta a la ciudad.
+[DNH5_A1:DONH5]
+~w~¿Sí? Todo en orden.
-[LAWP_52:LAWYER1]
-¡En otro momento, Ricardo!
+[DNH5_A2:DONH5]
+~w~Claro. Ahora se pone.
-[LAWP_53:LAWYER1]
-Salgamos de aquí.
+[DNH5_A3:DONH5]
+~w~Toni, estamos a un trabajito de ser fabulosamente ricos.
-[LAWP_54:LAWYER1]
-Mejor llévame al club Pole Position.
+[DNH5_A4:DONH5]
+~w~Hemos repasado los planos de Fort Staunton. Sus puntos débiles están a lo largo del antiguo metro que va por debajo del área.
-[LAW1_2:LAWYER1]
-~g~Ve al barco del Coronel.
+[DNH5_A5:DONH5]
+~w~¡Genial, Don! Solo tengo que burlar a un centenar de italianos pirados.
-[LAW1_4:LAWYER1]
-~r~¡Mataste a la hija del Coronel!
+[DNH5_A6:DONH5]
+~w~Tú entra por el túnel de Porter y encontrarás el camino sin problemas.
-[LAW1_5:LAWYER1]
-¿Trabajarás para mi padre?
+[DNH5_B0:DONH5]
+~w~¡Eh! ¡Se supone que no puedes estar aquí!
-[LAW1_6:LAWYER1]
-Quizás.
+[DNH5_B1:DONH5]
+~w~¡Sal de aquí a toda pastilla!
-[LAW1_7:LAWYER1]
-¿Te importa que pose mi mano en tu regazo?
+[DNH5_C0:DONH5]
+~w~Sube a la ~b~camioneta~w~.
-[LAW1_8:LAWYER1]
-Quizás...
+[DNH5_C4:DONH5]
+~w~Pon los ~y~explosivos~w~.
-[LAW1_9:LAWYER1]
-Es tan difícil tener un padre rico y poderoso. Vamos.
+[DNH5_C5:DONH5]
+~w~Pon los ~y~explosivos~w~ restantes.
-[LAW1_10:LAWYER1]
-¡Nos vemos, guapo!
+[DNH5_C6:DONH5]
+~w~Escapa por la ~y~entrada del metro~w~.
-[LAW1_11:LAWYER1]
-Estoy seguro.
+[DNH5_D0:DONH5]
+~w~¿Qué hacen aquí los Forelli?
-[LAW1_12:LAWYER1]
-Bonita moto.
+[DNH5_D1:DONH5]
+~w~No dejes que los Forelli destrocen la camioneta.
-[LAW1_13:LAWYER1]
-¡No! ¡Mi moto!
+[DNH5_1:DONH5]
+~w~Usa un vehículo para reventar las puertas.
-[LAW1_3:LAWYER1]
-~g~Lleva a la hija del Coronel al club Pole Position.
+[DONH5_2:DONH5]
+~w~¡Golpea las puertas con más fuerza!
-[HELP20:LAWYER1]
-Ve al icono de la ~h~camiseta~w~ que hay en el radar para encontrar la tienda de Rafael.
+[DNH5_X0:DONH5]
+~r~¡Has destrozado la camioneta!
-[LAW1_14:LAWYER1]
-¡Guau!, Me encantaría probar tu moto.
+[DNH5_C1:DONH5]
+~w~Vuelve a la ~b~furgoneta~w~.
-[LAW1_15:LAWYER1]
-Sí pequeño, pues recógela de Howlin' Pete's
+[DNH5_C2:DONH5]
+~w~Dirígete a una de las ~y~entradas~w~ del túnel de Porter Road.
-{=================================== MISSION TABLE LAWYER2 ===================================}
+[DNH5_C3:DONH5]
+~w~Sigue el ~y~túnel~w~.
-[LAW2_A:LAWYER2]
-¡Ah! Espero que te lo estés pasando bien. Porque yo me estoy volviendo loco de preocupación. ¿Qué has descubierto?
+[DNH5_E0:DONH5]
+~w~Mata a esos ~r~obreros~w~.
-[LAW2_B:LAWYER2]
-Que hay más criminales en esta ciudad que en la cárcel. Necesitamos un confidente de las calles...
+[DNH5_E1:DONH5]
+~w~Mata a ese ~r~obrero~w~.
-[LAW2_C:LAWYER2]
-Vale, déjame pensar, déjame pensar, déjame pensar...
+[DNH5_E2:DONH5]
+~w~Los Forelli han bloqueado el camino de vuelta. Busca otra ~y~salida~w~.
-[LAW2_D:LAWYER2]
-¡AH! ¡Lo tengo!
+[DNH5_E3:DONH5]
+~w~Usa un vehículo para reventar las puertas y alcanzar la ~y~salida~w~.
-[LAW2_E:LAWYER2]
-Está este inglés, un baboso de la industria musical,
+[DNH5_X1:DONH5]
+~r~¡Los Forelli han destrozado la camioneta!
-[LAW2_F:LAWYER2]
-se hace llamar Kent Paul.
+[DNH5_W1:DONH5]
+~w~¡No te alejes demasiado de la ~b~camioneta~w~!
-[LAW2_G:LAWYER2]
-Bueno, tiene la cabeza tan metida en la mayoría de los culos de Vice City
+[DNH5_E4:DONH5]
+~w~No dejes ningún ~r~testigo~w~.
-[LAW2_H:LAWYER2]
-que si alguien sabe el paradero de 20 kilos de farlopa,
+{=================================== MISSION TABLE DONH6 ===================================}
-[LAW2_I:LAWYER2]
-es este tío, ¿de acuerdo? Siempre está en el Malibú.
+[DONH6_V:DONH6]
+~r~v1.00
-[LAW2_J:LAWYER2]
-Le haré una visita.
+[DONH6_1:DONH6]
+~w~Dirígete a la ~y~casa~w~.
-[LAW2B_A:LAWYER2]
-¿De dónde saliste?
+[DONH6_5:DONH6]
+~w~¡Oh, Dios mío! ¡Toni! ¡Haz algo!
-[LAW2B_B:LAWYER2]
-He estado buscando una chica como tú durante siglos, tía...
+[DONH6_6:DONH6]
+~w~Tienes ~1~ s. para volver a la finca.
-[LAW2B_C:LAWYER2]
-Kent Paul, tía. Por aquí soy el que manda.
+[DONH6_7:DONH6]
+Tiempo para volver
-[LAW2B_D:LAWYER2]
-Estoy buscando a un tipo inglés...
+[DONH6_8:DONH6]
+~r~No has conseguido volver a la mansión... ¡Han liquidado a Donald!
-[LAW2B_E:LAWYER2]
-Muevo hilos, ¿entiendes lo que quiero decir?
+[DONH610:DONH6]
+~w~¡Consigue un coche!
-[LAW2B_F:LAWYER2]
-Te invitaré. Lo que quieras, te lo conseguiré, chica.
+[DONH611:DONH6]
+~w~¡Santo Dios! ¡Allí vienen más!
-[LAW2B_G:LAWYER2]
-No te preocupes por nada, tía.
+[DONH624:DONH6]
+~w~¡Pisa a fondo, Toni!
-[LAW2B_H:LAWYER2]
-Piérdete, guapa.
+[DONH612:DONH6]
+~w~¡Lo hemos conseguido!
-[LAW2B_I:LAWYER2]
-¡Eh, eh, eh, eh, eh!
+[DONH623:DONH6]
+~w~Llévame al jet de Avery. Ned y él siguen a bordo, así que no viajaré solo.
-[LAW2B_J:LAWYER2]
-¿Eres Kent Paul? Soy amigo de Rosenberg...
+[DONH622:DONH6]
+~w~Ve al ~y~jet de Avery~w~.
-[LAW2B_K:LAWYER2]
-Rosenberg... Rosenberg... ¡Oh, ese chalado abogado de pacotilla!
+[DONH613:DONH6]
+~w~Vamos al aeropuerto.
-[LAW2B_L:LAWYER2]
-¡Ese tipo podría defender a un inocente y mandarle directamente al corredor de la muerte!
+[DONH625:DONH6]
+~w~Dirígete al ~y~aeropuerto~w~.
-[LAW2B_M:LAWYER2]
-Ponnos otra copa, hermano.
+[DONH615:DONH6]
+~w~Te has dejado atrás a ~b~Donald~w~. Vuelve y recógelo.
-[LAW2B_N:LAWYER2]
-Todo el mundo es cómico.
+[DONH619:DONH6]
+~r~¡Donald ha muerto!
-[LAW2B_O:LAWYER2]
-Escúchame, he perdido veinte kilos y un montón de pasta...
+[DONH6_9:DONH6]
+~w~¿D? ¡Adelante! ¡Vamos!
-[LAW2B_P:LAWYER2]
-¿Drogas, tío? Es un juego de tontos.
+[DONH614:DONH6]
+~w~¿Seguro que no hay peligro, Toni?
-[LAW2B_Q:LAWYER2]
-¿Qué sabes al respecto?
+[DONH616:DONH6]
+~w~¡Oh... mi... JARDÍN!
-[LAW2B_R:LAWYER2]
-¡Eh, eh! A lo que iba es que,
+[DOH616A:DONH6]
+~w~¡Mira cómo has dejado mi precioso jardín!
-[LAW2B_S:LAWYER2]
-hay un chef-camello que tiene su negocio en la cocina de un hotel en Ocean Drive.
+[DONH617:DONH6]
+~w~D... O hacemos paisajismo o escapismo. Tú decides.
-[LAW2B_T:LAWYER2]
-Últimamente parece muy satisfecho de sí mismo. ¿Podrías ir y tantearle?
+[DONH618:DONH6]
+~w~¡Llévame al aeropuerto!
-[LAW2B_U:LAWYER2]
-Lo haré... y ya nos veremos.
+[DONH620:DONH6]
+~w~Odio decir adiós, amigo mío.
-[LAW2B_V:LAWYER2]
-Sí, está bien. Venga... vete, idiota. ¡Te voy a quitar las luces de un puñetazo!
+[DOH620A:DONH6]
+~w~Así que solo diré 'adieu'.
-[LAW2B_W:LAWYER2]
-Ponme una copa... ¡y dónde está esa zorra!
+[DONH621:DONH6]
+~w~D... Ha sido muy instructivo.
-[LAW2C_A:LAWYER2]
-Oh, así se hace, tipo duro. Machácale. Eso debería hacerle muy parlanchín.
+[DONH66S:DONH6]
+~w~Tienes ~1~ s. para volver a la finca.
-[LAW2C_B:LAWYER2]
-¿Tú también quieres un poco?
+[DONH66A:DONH6]
+~w~¡Elimina a esos ~r~gánsteres colombianos~w~!
-[LAW2C_C:LAWYER2]
-Eh, relájate. Quiero lo que tú quieres, hermano.
+[DONP_01:DONH6]
+Érase una oruguita... guita... guita... No, así no funciona.
-[LAW2C_D:LAWYER2]
-¿Oh, sí? ¿Y qué es eso?
+[DONP_02:DONH6]
+Ohmmmmmmmm. Maldita sea.
-[LAW2C_E:LAWYER2]
-Tu dinero... y la nieve de mi hermano muerto. Desgraciadamente, hiciste callar a nuestro contacto.
+[DONP_03:DONH6]
+Es que... Ay, mierda, si tuviera algo frío a lo que abrazarme,
-[LAW2C_F:LAWYER2]
-Los accidentes ocurren. Piérdete.
+[DONP_06:DONH6]
+¡Antonio! Jo, solo busco iluminación espiritual,
-[LAW2C_G:LAWYER2]
-Eh, eh, guau. No hay necesidad de hacerte el llanero solitario conmigo.
+[DONP_07:DONH6]
+por si te interesa, pero no hay manera.
-[LAW2C_H:LAWYER2]
-Tal y como yo lo veo... somos dos hombres en una ciudad extraña. Necesitamos cubrirnos las espaldas mutuamente.
+[DONP_08:DONH6]
+Quizá mañana.
-[LAW2C_I:LAWYER2]
-Mi espalda está bien, hermano...
+[DONP_09:DONH6]
+Por el mensaje parecías un poco inquieto.
-[LAW2C_J:LAWYER2]
-¿Estás seguro de eso? Ten, toma esto...
+[DONP_10:DONH6]
+¿Inquieto? Estoy meditando. ¿Inquieto, moi?
-[LAW2C_K:LAWYER2]
-¡Sígueme!
+[DONP_11:DONH6]
+Soy uno con el universo. Lo que dices es imposible.
-[LAW2_1:LAWYER2]
-¿Qué estás mirando?
+[DONP_12:DONH6]
+Oh, mierda, tienes razón.
-[LAW2_2:LAWYER2]
-Mejor empieza a hablar...
+[DONP_13:DONH6]
+Um, va a venir una horda de colombianos...
-[LAW2_3:LAWYER2]
-¡Oblígame, mamón!
+[DONP_14:DONH6]
+a matarme si no cierro la bocaza y les pago todo lo que les debo.
-[LAW2_4:LAWYER2]
-¡Por aquí!
+[DONP_15:DONH6]
+Ah. Supongo que eso explica todos esos colombianos que rondan por fuera.
-[LAW2_5:LAWYER2]
-Voy a ver qué puedo averiguar. Te estaré vigilando, Tommy.
+[DONP_16:DONH6]
+¡Mierda! Por favor, Antonio, ¡tienes que sacarme de aquí!
-[LAW2_6:LAWYER2]
-~g~Ve al club Malibú y busca a Kent Paul.
+[DONP_17:DONH6]
+No quiero... ¡Por favor! ¡No quiero morir! No...
-[LAW2_7:LAWYER2]
-~g~Ve y busca al chef en Ocean Drive.
+[DONP_18:DONH6]
+Ya ves lo que vale eso de ser uno con el universo...
-[LAW2_10:LAWYER2]
-~g~Regresa al hotel.
+[DONP_19:DONH6]
+¡Gracias, Toni! Te recompensaré... Te recompensaré por esto, prometido.
-[LAW2_11:LAWYER2]
-~g~Recoge su teléfono móvil.
+[DONP_04:DONH6]
+- sería más fácil... ~n~ - ¿Qué pasa, D?
-[LAW2_12:LAWYER2]
-¡Adquirido un teléfono móvil! Ahora puedes recibir llamadas telefónicas.
+{=================================== MISSION TABLE TOSH1 ===================================}
-[LAW2_13:LAWYER2]
-~g~¡Has dejado a Lance atrás! ¡Ve y tráele!
+[TOSH1AB:TOSH1]
+~w~¡Detenedlo!
-[LAW2_14:LAWYER2]
-¡Tenemos que salir pitando de aquí!
+[TOSH1AC:TOSH1]
+~w~¡A por él!
-[GUN_2A:LAWYER2]
-¡Mantén ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar automáticamente~w~ y pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para ~h~disparar!
+[TOSH1AD:TOSH1]
+~w~¡Matadlo!
-[GUN_2C:LAWYER2]
-¡Mantén ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar automáticamente~w~ y pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para ~h~disparar!
+[TOSH1AA:TOSH1]
+~w~¡Ahí está!
-[GUN_2D:LAWYER2]
-¡Mantén ~h~~k~~PED_LOCK_TARGET~ ~w~para ~h~apuntar automáticamente~w~ y pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para ~h~disparar!
+[TOSH120:TOSH1]
+~w~Roba el ~b~cargamento de armas~w~ de los yakuza de Bedford Point.
-[HELP17:LAWYER2]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para atacar al chef.
+[TOSH121:TOSH1]
+~w~Tendrás que eludir a los ~r~guardias de los yakuza~w~.
-[HELP18:LAWYER2]
-Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para atacar al chef.
+[TOSH122:TOSH1]
+~w~Estáte atento a más ~r~embarcaciones de los yakuza~w~.
-[LAW3_11:LAWYER2]
-Sitúate en el ~q~marcador rosa~w~ para ver las armas disponibles.
+[TOSH130:TOSH1]
+~w~Lleva las armas al ~y~contacto de Toshiko~w~.
-[LAW3_12:LAWYER2]
-Puedes seleccionar armas pulsando ~h~izquierda~w~ o ~h~derecha~w~ en los ~h~botones de dirección~w~.
+[TOSH131:TOSH1]
+~w~Vuelve junto al ~b~cargamento de armas~w~.
-[LAW3_13:LAWYER2]
-Si dispones de suficiente dinero, puedes comprar armas pulsando ~h~~k~~PED_SPRINT~~w~.
+[TOSH1BA:TOSH1]
+~w~¡Chico, aquí tienes artillería de la buena!
-[LAW3_14:LAWYER2]
-Puedes salir de la tienda pulsando ~h~~k~~VEHICLE_ENTER_EXIT~~w~.
+[TOSH1BB:TOSH1]
+~w~Mira, hago tantos negocios en estos muelles que debería establecerme aquí,
-[LAW3_15:LAWYER2]
-Ve al ~h~icono de la pistola~w~ que hay en el radar para encontrar el ~h~Ammu-Nation~w~.
+[TOSH1BC:TOSH1]
+~w~¡y no a medio camino de la maldita isla!
-[LAW2_15:LAWYER2]
-~g~Ve a Ammu-Nation.
+[TOSH1BD:TOSH1]
+~w~¡Bueno, ha estado genial!
-[LAW2_K:LAWYER2]
-Tómatelo con calma.
+[TOSH1DB:TOSH1]
+~r~¡Las armas han sido destruidas!
-[LAW2_16:LAWYER2]
-Tienes que entender una cosa sobre esta ciudad. Tienes que saber protegerte.
+[TOSH1PH:TOSH1]
+~w~Los yakuza estarán protegiendo el cargamento. Puede que necesites pasarte por Phil Cassidy's de camino.
-[LAW2_17:LAWYER2]
-Venga, la tienda de armas local está a un par de manzanas de aquí.
+[DEAD_01:TOSH1]
+¿Así que éste es ese famoso gánster tan duro?
-[LAW2_18:LAWYER2]
-Tommy, cada hombre necesita un poco de rock de vez en cuando.
+[DEAD_02:TOSH1]
+Pues no parece tan duro.
-[LAW2_19:LAWYER2]
-Este de aquí es el club de striptease Pole Position. Quizás quieras entrar alguna vez.
+[DEAD_03:TOSH1]
+... Gracias.
-{=================================== MISSION TABLE LAWYER3 ===================================}
+[DEAD_04:TOSH1]
+¿Sabe lo que es vivir sin amor, Sr. Cipriani?
-[LAW3_A:LAWYER3]
-¡Aagh! ¡Oh, por el amor de Dios, eres tú! Oh, Jesús, ¡voy a necesitar pantalones nuevos!
+[DEAD_05:TOSH1]
+Es vivir llena de odio...
-[LAW3_B:LAWYER3]
-Eh, esos psicópatas del norte han estado entrometiéndose y pronto vendrán aquí.
+[DEAD_06:TOSH1]
+Pues si usted lo dice...
-[LAW3_C:LAWYER3]
-Bien, ¿dónde está el maldito dinero?
+[DEAD_07:TOSH1]
+Lo que más anhelo es destruir a un hombre, Sr. Cipriani.
-[LAW3_D:LAWYER3]
-Relájate, relájate. Aún no hemos llegado a esa parte.
+[DEAD_08:TOSH1]
+Destruirlo... No basta con matarlo.
-[LAW3_E:LAWYER3]
-Pensé que te estabas ocupando de esto, de verdad que sí.
+[DEAD_09:TOSH1]
+Quiero que él y toda su organización mermen y muerdan el polvo antes de que muera.
-[LAW3_F:LAWYER3]
-Y ahora esos tipos dicen que les tenemos que hacer un favor.
+[DEAD_10:TOSH1]
+Quiero que sufra.
-[LAW3_G:LAWYER3]
-Quieres decir que yo tengo que hacerles un favor.
+[DEAD_11:TOSH1]
+Vale.
-[LAW3_H:LAWYER3]
-Oh, por supuesto, eso es lo que quiero decir. ¿Doy yo la impresión de poder intimidar a un jurado?
+[DEAD_12:TOSH1]
+El hombre al que quiero que destruya es mi marido, Kazuki Kasen.
-[LAW3_I:LAWYER3]
-No podría intimidar a un niño y créeme, lo he intentado.
+[DEAD_13:TOSH1]
+No se preocupe.
-[LAW3_J:LAWYER3]
-Ahora mira, es eso, o al primo de Forelli, Giorgio, le caerán cinco años por fraude.
+[DEAD_14:TOSH1]
+Será recompensado generosamente por sus servicios.
-[LAW3_K:LAWYER3]
-¡Tienes que encargarte de esos tipos!
+[DEAD_15:TOSH1]
+Bueno, ¿y si digo que no?
-[LAW3_L:LAWYER3]
-Comprendo. Ayuda al jurado a que cambie de idea. No te preocupes por ello.
+[DEAD_16:TOSH1]
+No lo hará... porque yo quiero que muera, pero usted necesita que muera.
-[LAW3_M:LAWYER3]
-¡No no no no... NO! Ya intenté eso. El caso del jurado no fue tan bien,
+[DEAD_17:TOSH1]
+A decir verdad, ya le ha infligido una gran herida, Sr. Cipriani.
-[LAW3_N:LAWYER3]
-así que HAZ que cambien de idea.
+[DEAD_18:TOSH1]
+Sin embargo, hoy recibirá otra entrega de municiones.
-[LAW3_1:LAWYER3]
-Giorgio envía sus saludos.
+[DEAD_19:TOSH1]
+Quiero que usted le robe esas armas en sus ignorantes narices.
-[LAW3_2:LAWYER3]
-Recuerda, ''culpable'' es una palabra fea.
+{=================================== MISSION TABLE TOSH2 ===================================}
-[LAW3_3:LAWYER3]
-Inocente hasta que yo diga lo contrario.
+[TOSH2AA:TOSH2]
+~w~Sr. Toni.
-[LAW3_4:LAWYER3]
-Sabes que no es culpable.
+[TOSH2AL:TOSH2]
+~w~Mi marido se ha enfadado mucho por sus actos.
-[LAW3_5:LAWYER3]
-¿Recuerdas a Giorgio? Recuerda que es inocente.
+[TOSH2AB:TOSH2]
+~w~Ha conseguido que él, y sus hombres,
-[LAW3_6:LAWYER3]
-No culpable. ¿Comprendido? Bien.
+[TOSH2AM:TOSH2]
+~w~queden como los payasos que son.
-[LAW3_8:LAWYER3]
-~r~¡Mataste a un miembro del jurado!
+[TOSH2AC:TOSH2]
+~w~Estoy para complacerla. ¿Y ahora qué, princesa?
-[LAW3_9:LAWYER3]
-~g~¡Destroza el coche del miembro del jurado para sacarle de ahí!
+[TOSH2AE:TOSH2]
+~w~Mi marido quiere retirar una gran cantidad de dinero de su casino.
-[HELP40:LAWYER3]
-Puedes destrozar coches usando el martillo o un arma similar.
+[TOSH2AF:TOSH2]
+~w~Quiero que destruya todo ese dinero.
-[HELP41:LAWYER3]
-o puedes aplastarlas con un vehículo
+[TOSH2AG:TOSH2]
+~w~Yo podría darle un uso mucho mejor, encanto.
-[LAW3_20:LAWYER3]
-~g~¡Destroza el coche del miembro del jurado!
+[TOSH2AH:TOSH2]
+~w~Quiero que ese dinero se queme en la calle, para que todos lo vean.
-[LAW3_21:LAWYER3]
-¡No puedo creer lo que está pasando!
+[TOSH2AI:TOSH2]
+~w~Vale... vale... ¿Cuándo van a hacerlo?
-[LAW3_22:LAWYER3]
-¡Increíble!
+[TOSH2AJ:TOSH2]
+~w~Ya están en ello.
-[LAW3_23:LAWYER3]
-¡Ya! ¡Ya! ¡Entendido!
+[TOSH2AK:TOSH2]
+~w~Están saliendo del casino justo ahora, así que no tiene mucho tiempo.
-[LAW3_24:LAWYER3]
-~g~Ese martillo será útil.
+[TOSH2O0:TOSH2]
+~w~Destruye TODOS los ~r~furgones~w~. Que no llegue ninguno al ~y~recinto de los yakuza~w~.
-[LAW3_7:LAWYER3]
-~g~¡Ve y coacciona a los dos miembros del jurado pero NO los mates!
+[TOSH2O1:TOSH2]
+~w~¡Están huyendo! ¡Que no escape ni un ~r~furgón~w~.
-[HELP23:LAWYER3]
-Puedes ir al ~h~icono del martillo~w~ que hay en el radar si quieres comprar armas blancas en la ferretería.
+[TOSH2O2:TOSH2]
+~w~¡Los has espantado! ¡No dejes que los ~r~furgones~w~ escapen!
-[LAW3_16:LAWYER3]
-Estúpido cretino de Florida.
+[TOSH2E1:TOSH2]
+~w~El ~r~convoy~w~ se aproxima al ~y~recinto de los yakuza~w~.
-[LAW3_17:LAWYER3]
-¡Quítate de en medio!
+[TOSH2E2:TOSH2]
+~w~Un ~r~furgón~w~ ya está casi en el ~y~recinto de los yakuza~w~.
-{=================================== MISSION TABLE LAWYER4 ===================================}
+{=================================== MISSION TABLE TOSH3 ===================================}
-[LAW4_A:LAWYER4]
-Avery, ni que decir tiene... ¡Tommy! ¡Tommy! ¿Algún progreso? No, no, no... cuéntamelo luego, cuéntamelo luego.
+[TOSH3M1:TOSH3]
+~w~¿Hay alguien en casa?
-[LAW4_B:LAWYER4]
-Tommy, éste es Avery Carrington... ¿Creo que os conocisteis en la fiesta?
+[TOSH3M2:TOSH3]
+~w~¿Sr. Toni? Un momento, por favor...
-[LAW4_C:LAWYER4]
-No en persona.
+[TOSH3M3:TOSH3]
+~w~Mi esposo está enfadado.
-[LAW4_D:LAWYER4]
-¿Qué tal?
+[TOSH3EA:TOSH3]
+~w~Se pregunta cómo llegó usted a enterarse con tanta precisión de dónde y cuándo atacar.
-[LAW4_E:LAWYER4]
-Avery tiene una proposición.
+[TOSH3M4:TOSH3]
+~w~A menos que sea necio, lo descubrirá pronto.
-[LAW4_F:LAWYER4]
-¿No tenemos otras cosas en mente?
+[TOSH3M5:TOSH3]
+~w~Deberíamos ayudarle. Sus hombres chismorrean como viejas.
-[LAW4_G:LAWYER4]
-Estoy intentando mantener todo bajo control así que, ¿podrías darme un respiro?
+[TOSH3EB:TOSH3]
+~w~Vamos a darles algo de lo que hablar.
-[LAW4_H:LAWYER4]
-Estoy tenso como un alambre e incluso si estoy muerto al final de la semana, me gustaría pensar que no moriré pobre.
+[TOSH3M6:TOSH3]
+~w~¿Adónde vamos?
-[LAW4_I:LAWYER4]
-Bien, calmaos, los dos.
+[TOSH3M7:TOSH3]
+~w~A la ópera.
-[LAW4_J:LAWYER4]
-Hijo, si me ayudas, me encargaré de que cualquier capullo que te esté molestando se eche una buena siesta.
+[TOSH3M8:TOSH3]
+~w~¿A la ópera? ¿Yo? ¿Bromea?
-[LAW4_K:LAWYER4]
-De acuerdo, ¿qué puedo hacer por ti?
+[TOSH3M9:TOSH3]
+~w~No sea ridículo, Sr. Toni. A todo el mundo le gusta la ópera.
-[LAW4_L:LAWYER4]
-Esta compañía de reparto tiene el almacén en unos terrenos de primera. No venderán.
+[TOSH3A:TOSH3]
+~w~Si me trae el coche, podremos ir a recoger su esmoquin.
-[LAW4_M:LAWYER4]
-Están aguantando como una vieja rata de la pradera, así que tenemos que ir allí y ahumar a esas alimañas para hacerlas salir.
+[TOSH3EC:TOSH3]
+~w~No tenemos mucho tiempo, va a empezar pronto.
-[LAW4_N:LAWYER4]
-Ve allí y alborota el avispero.
+[TOSH3B:TOSH3]
+~w~Trae el ~b~coche de Toshiko~w~.
-[LAW4_O:LAWYER4]
-Los de seguridad tendrán las manos ocupadas y entonces podrás colarte y dejarles fuera de combate.
+[TOSH3C:TOSH3]
+~w~Recoge a ~b~Toshiko~w~.
-[LAW4_P:LAWYER4]
-Y podrías pasarte por Rafael para cambiarte de ropa. Podrías estar allí un rato, pero sí, ve.
+[TOSH3C2:TOSH3]
+~w~Hazte con un esmoquin en ~y~Mr. Benz~w~.
-[LAW4_Q:LAWYER4]
-Debería ser un motín.
+[TOSH3B3:TOSH3]
+~w~Lleva a Toshiko de vuelta a su ~y~apartamento~w~.
-[LAW4_R:LAWYER4]
-Si las cosas salen como deberían, pásate alguna vez por mi oficina...
+[TOSH3B4:TOSH3]
+~r~Has dejado atrás a Toshiko.
-[LAW4_1:LAWYER4]
-Por favor, dispérsense. ¡La dirección discutirá cualquier queja de la forma apropiada!
+[TOSH3B2:TOSH3]
+Vuelve al ~b~coche de Toshiko~w~.
-[LAW4_2:LAWYER4]
-Por favor, dispérsense. ¡Vuelvan a sus casas!
+[TOSH3C3:TOSH3]
+~w~Ve a la ~y~ópera~w~.
-[LAW4_3:LAWYER4]
-¡Por favor, dispérsense! ¡Esto no es apropiado!
+[TOSH3D:TOSH3]
+~w~¿Adónde va? ¡Vamos a llegar tarde!
-[LAW4_4:LAWYER4]
-Por favor, dispérsense. Todos acabaréis en la calle.
+[TOSH3D2:TOSH3]
+~w~Por favor, no me deje aquí, Toni-san.
-[LAW4_5:LAWYER4]
-¡Desenfundad, chicos! ¡Vamos a romper unos cuantos cráneos comunistas!
+[TOSH3Z1:TOSH3]
+~w~¿Cree que soy una mala persona, Sr. Toni?
-[LAW4_13:LAWYER4]
-~g~Empieza a luchar con al menos 4 trabajadores para iniciar una revuelta.
+[TOSH3Z2:TOSH3]
+~w~Princesa, no soy lo que se dice un santo.
-[LAW4_14:LAWYER4]
-~g~¡Destruye las furgonetas del complejo!
+[TOSH3Z3:TOSH3]
+~w~No... Un santo no es lo que me hace falta.
-[HELP38:LAWYER4]
-Si matas a alguien que lleva un arma, la dejará caer.
+[TOSH3Z4:TOSH3]
+~w~Mi marido es un samurái, Sr. Toni.
-[HELP39:LAWYER4]
-Puedes disparar a los barriles explosivos, pero mantén la distancia.
+[TOSH3Z5:TOSH3]
+~w~Es muy fuerte... pero muy, muy malo.
-{=================================== MISSION TABLE MIAMI_1 ===================================}
+[TOSH3Z6:TOSH3]
+~w~Solo se casó conmigo para ser el waka-gashira de Liberty City.
-[T4X4_1A:MIAMI_1]
-~g~Tienes ~1~ segundos para pasar por ~y~24~g~ puntos de control. ~g~Puedes atravesarlos en ~y~CUALQUIER ORDEN.
+[TOSH3Z7:TOSH3]
+~w~Nunca me ha amado... Prefiere la compañía de sus hombres.
-[T4X4_1B:MIAMI_1]
-~y~ATRAVIESA~g~ el primer punto de control para poner en marcha el ~r~CRONÓMETRO.
+[TOSH3Z8:TOSH3]
+~w~¿Comprende?
-[T4X4_1C:MIAMI_1]
-¡~1~ de 24!
+[TOSH3Z9:TOSH3]
+~w~Sepa que, cuando descubra lo que está usted haciendo, querrá matarle.
-[GETBIK1:MIAMI_1]
-¡Tienes ~1~ segundos para subirte en una PCJ 600!
+[TOSH3Z0:TOSH3]
+~w~Ya no me importan la vida o la muerte, solo la libertad.
-[GETBIK3:MIAMI_1]
-~r~Necesitas una PCJ 600 para realizar esta misión!
+[TOSH3ZB:TOSH3]
+~w~Qué visión del mundo tan relajante.
-{=================================== MISSION TABLE MM ===================================}
+[TOSH3E:TOSH3]
+~w~La sangre italiana no se mezcla con la nipona.
-[BLOD_04:MM]
-ESTADO DEL COCHE:
+[TOSH3F:TOSH3]
+~w~¡Pero se mezclarán bien en la acera!
-[BLOD_05:MM]
-~g~TIEMPO OBJETIVO: ~1~ Minuto
+[TOSH3G:TOSH3]
+~w~Protege a Toshiko y escapa en ~b~su coche~w~.
-[BLOD_06:MM]
-~g~TIEMPO OBJETIVO: ~1~ Minutos
+[TOSH3H:TOSH3]
+~w~Protege a ~b~Toshiko~w~ y llévala a su ~y~apartamento~w~.
-[BLOD_07:MM]
-NUEVO Mejor Tiempo: ~1~ Segundos
+[TOSH3S1:TOSH3]
+~w~¡Mi coche!
-[BLOD_08:MM]
-Coches destrozados: ~1~
+[TOSH3S2:TOSH3]
+~w~¡Sálvenos, Toni!
-[BLOD_09:MM]
-~1~ $
+[TOSH3S3:TOSH3]
+~w~¡Vamos, Toni!
-[BLOD_10:MM]
-¡GANADOR!
+[TOSH3S4:TOSH3]
+~w~¡Sáquenos de aquí!
-[BLOD_01:MM]
-Pasa por todos los puntos de control para aumentar tu tiempo total.
+[TOSH3S5:TOSH3]
+~w~¡SÁLVEME!
-[BLOD_02:MM]
-Fracasarás si tu tiempo total llega a cero.
+[TOSH3S6:TOSH3]
+~w~¡SOCORRO!
-[BLOD_03:MM]
-¡Consigue que tu tiempo total sean superior al objetivo a superar!
+[TOSH3S7:TOSH3]
+~w~¡No vamos a conseguirlo!
-{=================================== MISSION TABLE OVALRIG ===================================}
+[TOSH3S8:TOSH3]
+~w~¡SOCORRO!
-[HOTR_01:OVALRIG]
-~g~La carrera dura 12 vueltas. Solamente los puestos 1, 2 y 3 obtienen premios en metálico.
+[TOSH3S9:TOSH3]
+~r~¡Toshiko ha muerto!
-[HOTR_02:OVALRIG]
-~g~Si destrozas tu coche serás descalificado.
+[TOSH310:TOSH3]
+~r~¡El coche de Toshiko ha quedado destruido!
-[HOTR_03:OVALRIG]
-~g~Cuando tu coche sufra daños podrás repararlo en boxes.
+[TOSH311:TOSH3]
+~r~¡Se te ha acabado el tiempo!
-[HOTR_04:OVALRIG]
-~g~Este es el camino para salir del estadio.
+[TOSH3_1:TOSH3]
+NONE
-[HOTR_05:OVALRIG]
-Estado del coche:
+[TOS3NE1:TOSH3]
+~w~Protege a Toshiko y mata a los ~r~gánsteres Forelli~w~.
-[HOTR_06:OVALRIG]
-Vueltas:
+[TOS3NE2:TOSH3]
+~w~Escapa en el ~b~coche de Toshiko~w~.
-[HOTR_07:OVALRIG]
-Nuevo mejor tiempo: ~1~:0~1~
+[TOSH3EI:TOSH3]
+~w~La ópera empieza a las 20:00. ¡Sé puntual!
-[HOTR_08:OVALRIG]
-Tiempo: ~1~:~1~
+{=================================== MISSION TABLE TOSH4 ===================================}
-[HOTR_10:OVALRIG]
-Tiempo de carrera:
+[TOSH4O2:TOSH4]
+~w~El helicóptero de Kazuki se dirige al ~y~casino~w~.
-[HOTR_09:OVALRIG]
-Posición:
+[TOSH4O4:TOSH4]
+~w~¡Mata a ~r~Kazuki~w~!
-[HOTR_12:OVALRIG]
-~r~¡Tu coche está destrozado!
+[TOSH4O5:TOSH4]
+~w~Ve al ~y~apartamento de Toshiko~w~.
-[HOTR_13:OVALRIG]
-~r~¡No ganaste la carrera!
+[TOSH4_3:TOSH4]
+~w~Kazuki llega en ese helicóptero. Ábrete paso hasta el helipuerto y mátalo.
-[HOTR_14:OVALRIG]
-~r~¡Has sido descalificado!
+[TOSH4Y1:TOSH4]
+~w~¡A por él!
-[HOTR_15:OVALRIG]
-Tiempo: ~1~:~1~
+[TOSH4Y2:TOSH4]
+~w~¡Matadlo!
-[HOTR_16:OVALRIG]
-Tiempo: ~1~:0~1~
+[TOSH4CA:TOSH4]
+~w~Mis hombres me deshonran...
-[HOTR_17:OVALRIG]
-Mejor Tiempo: ~1~:~1~
+[TOSH4CB:TOSH4]
+~w~Es más adecuado que te mate yo mismo.
-[HOTR_18:OVALRIG]
-Mejor Tiempo: ~1~:0~1~
+[TOSH4CC:TOSH4]
+~w~¡Vosotros dos! ¡Dejadnos solos!
-[HOTR_19:OVALRIG]
-Mejor Tiempo: NA
+[TOSH4CD:TOSH4]
+~w~Voy a disfrutar cuando te atraviese con la espada.
-[HOTR_20:OVALRIG]
-Nuevo Mejor Tiempo: ~1~:~1~
+[TOSH4CE:TOSH4]
+~w~Sí, ya he oído hablar de ti.
-[HOTR_21:OVALRIG]
-Nuevo Mejor Tiempo: ~1~:0~1~
+[TOSH4K1:TOSH4]
+~w~¡Matadlo!
-[HOTR_22:OVALRIG]
-Mejor Resultado: NA
+[TOSH4K2:TOSH4]
+~w~¡Matadlo!
-[HOTR_23:OVALRIG]
-Mejor resultado: 1
+[TOSH4_7:TOSH4]
+~w~Llévale la espada de Kazuki a Toshiko como prueba de que ha muerto.
-[HOTR_24:OVALRIG]
-Mejor resultado: 2
+[TOSH4_8:TOSH4]
+~w~¡Has espantado a Kazuki! ¡Se escapa! .¡Has perdido la oportunidad de matarlo!
-[HOTR_25:OVALRIG]
-Mejor resultado: 3
+[TOSH4_C:TOSH4]
+Kazuki
-[HOTR_26:OVALRIG]
-Mejor resultado: ~1~
+[TOSH4AA:TOSH4]
+~w~¿Hola?
-[HOTR_27:OVALRIG]
-Mejor Tiempo de Vuelta: ~1~.~1~ segundos
+[TOSH4AB:TOSH4]
+~w~Me estoy bañando, Toni-san.
-[HOTR_28:OVALRIG]
-Mejor Tiempo de Vuelta: ~1~.0~1~ segundos
+[TOSH4AC:TOSH4]
+~w~Nos queda poco tiempo.
-[HOTR_29:OVALRIG]
-~1~ $
+[TOSH4AD:TOSH4]
+~w~Mi marido ya sabe quién está en realidad detrás de sus derrotas.
-[HOTR_30:OVALRIG]
-PUESTO: 1
+[TOSH4AE:TOSH4]
+~w~Va a venir a matarme... y a usted de paso.
-[HOTR_31:OVALRIG]
-PUESTO: 2
+[TOSH4AF:TOSH4]
+~w~Bueno, no voy a quedarme aquí esperándole. ¿Dónde está?
-[HOTR_32:OVALRIG]
-PUESTO: 3
+[TOSH4AG:TOSH4]
+~w~En Belleville, reuniendo a sus hombres.
-[HOTR_33:OVALRIG]
-Mejor tiempo de vuelta: ninguno
+[TOSH4AJ:TOSH4]
+~w~Pero pronto estará aquí.
-[HOTR_11:OVALRIG]
-Nuevo mejor tiempo de vuelta: ~1~,~1~ segundos
+[TOSH4AH:TOSH4]
+~w~Sayonara, preciosa.
-[HOTR_34:OVALRIG]
-Nuevo mejor tiempo de vuelta: ~1~,0~1~ segundos
+[TOSH4AI:TOSH4]
+~w~Mis plegarias van con usted, Toni-san. Buena suerte.
-{=================================== MISSION TABLE PHIL1 ===================================}
+[TOSH4F1:TOSH4]
+~r~¡Kazuki se ríe de ti!
-[PHIL1_A:PHIL1]
-¿Phil?
+[TOSH4OA:TOSH4]
+~w~¡Mata a los ~r~guardias~w~ de Kazuki!
-[PHIL1_B:PHIL1]
-¡CORRE!
+[TOSH4OB:TOSH4]
+~w~¡Vuelve a la casa de ~y~Kazuki~w~!
-[PHIL1_C:PHIL1]
-¡Corre!
+[TOSH4OC:TOSH4]
+~w~¡Cuidado, que vienen más ~r~yakuza~w~!
-[PHIL1_E:PHIL1]
-Mierda Phil, ¿te bebes ese mejunje?
+[TOSH4DA:TOSH4]
+~w~¡Disparadle!
-[PHIL1_F:PHIL1]
-Diablos, no tienes que bebértelo...
+[TOSH4DB:TOSH4]
+~w~¡Matadlo!
-[PHIL1_G:PHIL1]
-solo tienes que olerlo para colocarte.
+[TOSH4DC:TOSH4]
+~w~¡Matadlo, capullos!
-[PHIL1_H:PHIL1]
-Escucha, Phil, dijiste que podrías proporcionarme algo de potencia de fuego...
+[TOSH4O1:TOSH4]
+~w~Ve a ~y~casa de Kazuki~w~ y mátalo.
-[PHIL1_I:PHIL1]
-Por supuesto.
+[TOSH4O3:TOSH4]
+~w~Dirígete al ~y~helipuerto~w~.
-[PHIL1_J:PHIL1]
-Hay un traficante de armas mejicano que me ha estado pisando el negocio últimamente.
+[CASH_01:TOSH4]
+Esto, eh... Toshiko. Asunto resuelto.
-[PHIL1_K:PHIL1]
-Suele realizar su ronda semanal a esta hora.
+[CASH_02:TOSH4]
+Sí, sí, ya lo sé... Hola, señor Toni.
-[PHIL1_L:PHIL1]
-Haz caer la mercancía de la parte de atrás de sus camiones antes de que acabe fuera de nuestro alcance.
+[CASH_03:TOSH4]
+Eh. Así que... usted ha ganado.
-[PHIL1_M:PHIL1]
-Y mientras estás en ello me estarás haciendo un favor.
+[CASH_04:TOSH4]
+Tiene lo que quería. Todo ha salido a pedir de boca.
-[PHIL1_N:PHIL1]
-Luego acaba con él.
+[CASH_06:TOSH4]
+Estupendo, sí, estupendo. Magnífico.
-[PHI1_01:PHIL1]
-~g~Ve y pilla las armas de la parte trasera de los camiones del traficante.
+[CASH_07:TOSH4]
+Entonces... es hora de pagar, tesoro...
-[PHI1_02:PHIL1]
-~g~El traficante de armas ha perdido la carga. Destroza la caja y recoge el arma.
+[CASH_08:TOSH4]
+Ambos somos unos asesinos insensatos, señor Toni.
-[PHI1_03:PHIL1]
-~g~Parece que han llamado pidiendo refuerzos.
+[CASH_09:TOSH4]
+Supongo que sí.
-[PHI1_04:PHIL1]
-~g~Ahora ve y acaba con el resto de los traficantes.
+[CASH_10:TOSH4]
+El mundo le pasa una factura tan terrible al espíritu, ¿no le parece, señor Toni?
-[PHI1_HP:PHIL1]
-Cuando utilices Detonador de Granadas, lanza una granada y después provoca la explosión en cualquier momento.
+[CASH_11:TOSH4]
+Supongo.
-[PHIL1_O:PHIL1]
-¡Jooooodeeeeer!
+[CASH_12:TOSH4]
+Pero ahora es libre. Es decir, puede irse a Costa Rica o Aruba o adónde sea.
-[PHIL1_D:PHIL1]
-¡Nunca acerques una llama a uno de los alambiques de boomshine de Phil Cassidy!
+[CASH_13:TOSH4]
+Empezar de cero, que es lo que siempre quiso.
-{=================================== MISSION TABLE PHIL2 ===================================}
+[CASH_14:TOSH4]
+No creo que esté lista para irme a la playa, señor Toni.
-[PHIL2_A:PHIL2]
-Hola, Phil, ¿cómo te va?
+[CASH_15:TOSH4]
+Lo he perdido todo, y lo he hecho deliberadamente.
-[PHIL2_B:PHIL2]
-Ehhh, Tommy. ¿Cómo estás? Hace tanto tiempo...
+[CASH_16:TOSH4]
+Se me ha concedido cuanto pedí.
-[PHIL2_C:PHIL2]
-Te juro que deberías dejar ese mejunje, tío.
+[CASH_17:TOSH4]
+Ahora solo quiero ser libre de verdad.
-[PHIL2_D:PHIL2]
-Huele como decapante de pintura. Hace que me ardan los ojos...
+[CASH_18:TOSH4]
+Sayonara, Toni-san.
-[PHIL2_E:PHIL2]
-Shhh, shhh, tú mismo, Tommy,
+{=================================== MISSION TABLE COPCAR ===================================}
-[PHIL2_F:PHIL2]
-y ven aquí porque hay algo que quiero enseñarte... algo.
+[C_COMP1:COPCAR]
+~w~Misión de vigilante: nivel 12 completado. Aumenta la protección del blindaje corporal.
-[PHIL2_G:PHIL2]
-¡Dios! ¿Debería poder oler eso desde aquí? Me estoy mareando.
+[C_BREIF:COPCAR]
+~r~Sospechoso~w~ visto por última vez por ~a~.
-[PHIL2_H:PHIL2]
-No te preocupes por el olor, Tommy, mira esto.
+[C_BREIG:COPCAR]
+~r~Sospechosos~w~ vistos por última vez por ~a~.
-[PHIL2_I:PHIL2]
-Las malditas pilas baratas o algo así. Hay más en el banco.
+[C_RANGE:COPCAR]
+~r~La radio del coche patrulla no recibe nada, ¡acércate a una comisaría!
-[PHIL2_J:PHIL2]
-¡TA-DAAA!
+[C_TIMEA:COPCAR]
+~w~¡Bonif. de tiempo! +~1~ s.
-[PHIL2_K:PHIL2]
-¡Maldición!
+[COPCART:COPCAR]
+~w~Tienes ~1~ s. para volver al vehículo policial antes de que termine la misión.
-[PHI2_01:PHIL2]
-~g~Rápido, lleva a Phil al hospital.
+[COPCARU:COPCAR]
+~w~Tienes ~1~ s. para volver al vehículo policial antes de que termine la misión.
-[PHI2_03:PHIL2]
-~r~¡Phil Cassidy está muerto! ¿Ahora quién va a suministrar armas en Vice City?
+[C_CANC:COPCAR]
+~r~¡Misión de vigilante cancelada!
-[PHI2_05:PHIL2]
-¡Al hospital no, tío! ¡Demasiados polis y vietcongs!
+[C_TIME:COPCAR]
+~r~¡Tu tiempo como justiciero ha terminado!
-[PHI2_06:PHIL2]
-Hay un excirujano del ejército que me debe unos cuantos favores... y un cortador de césped.
+[C_PASS3:COPCAR]
+~w~¡AMENAZA ELIMINADA! Recompensa: ~1~ $
-[PHI2_07:PHIL2]
-Tiene un lugar llamado Little Havana, oh mira, un pez gigante.
+[C_LEVEL:COPCAR]
+~r~¡Has dejado que los criminales se escapen!
-[PHI2_08:PHIL2]
-¡Cuidado! ¡Charlies en la línea de los árboles!
+[C_RANG2:COPCAR]
+~r~La radio de la policía no funciona en el metro.
-[PHI2_09:PHIL2]
-¿Soy yo o las carreteras están hechas de gelatina?
+{=================================== MISSION TABLE CARS ===================================}
-[PHI2_10:PHIL2]
-Cuchara rota a madre gallina, ¿me recibes?
+[CARS_10:CARS]
+Sube a un coche para probarlo o sal del aparcamiento para cancelar la misión.
-[PHI2_11:PHIL2]
-¡Cucharita, rita, rit, rit!
+[CARS_12:CARS]
+~w~Si bajas del coche, fallarás la misión.
-[PHI2_12:PHIL2]
-¡Viene a por mí, chico!
+[CARS_1:CARS]
+~w~Lleva a uno de los clientes a probar un vehículo.
-[PHI2_13:PHIL2]
-Hay alas de plumas negras aleteando por todas partes...
+[CARS_2:CARS]
+~w~Tendrás que discernir qué prestaciones quiere cada cliente en un coche.
-[PHI2_14:PHIL2]
-Es hermoso, tío... es hermoso... pero hace tanto frío...
+[CARS_3:CARS]
+~w~Luego usa tu habilidad para demostrarles que el coche tiene exactamente lo que quieren.
-[PHI2_15:PHIL2]
-10-4 tenemos un conductor borracho.
+[CARS_5:CARS]
+~w~Impresiona al cliente.
-[PHI2_04:PHIL2]
-SALUD DE PHIL:
+[CARS_6:CARS]
+~w~¡Cliente fastidiado! ¡Elige un coche diferente!
-[PHI_AS1:PHIL2]
-LOCAL DE PHIL CONSOLIDADO
+[CARS_30:CARS]
+~w~¡Vuelve al ~y~aparcamiento~w~ para cerrar el trato!
-[PHI_AS2:PHIL2]
-~g~Nuevas armas disponibles para comprar en el Local de Phil.
+[CARS_C1:CARS]
+~w~¡Muy bien, tío! Sacándote a la poli de encima, ¿eh?
-{=================================== MISSION TABLE PIZZA ===================================}
+[CARS_C2:CARS]
+~w~¡Sí! ¡Esa rata se lo merecía!
-[PIZ1_01:PIZZA]
-~g~Ve a entregar estas pizzas, debes lanzar la pizza a los clientes. Pasa cerca para lanzar las pizzas.
+[CARS_P1:CARS]
+~w~¡Guau! ¡Este carro es supersónico!
-[PIZ1_02:PIZZA]
-~g~Has lanzado todas tus pizzas, vuelve y recoge algunas más.
+[CARS_P2:CARS]
+~w~¡Yujuuuu!
-[PIZ1_05:PIZZA]
-~g~Tienes cinco minutos para entregar los pedidos antes de que los clientes telefoneen a otra pizzería.
+[CARS_P3:CARS]
+~w~¡Mi abuelita va a esta velocidad!
-[PIZ1_07:PIZZA]
-~r~¡Mataste al cliente! Estás despedido.
+[CARS_P4:CARS]
+~w~¿Y esto tiene airbag?
-[PIZ1_08:PIZZA]
-~r~Te has quedado sin tiempo. Estás despedido.
+[CARS_M1:CARS]
+~w~Ah, qué paseíto más relajante.
-[PIZ1_09:PIZZA]
-~r~¡Destruiste nuestra moto! Estás despedido.
+[CARS_M2:CARS]
+~w~¿Sabe cuál es el límite de velocidad aquí?
-[PIZ1_11:PIZZA]
-¡Eh! ¡Vuelve a subir a la moto!
+[CARS_M3:CARS]
+~w~¡Ay, Dios mío! ¡Nos vamos a matar!
-[PIZ1_12:PIZZA]
-Pizzas restantes:
+[CARS_O1:CARS]
+~w~¡Oh, sí! ¡Sin asfalto que nos estorbe!
-[PIZ1_06:PIZZA]
-Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ cuando estés en la moto para cancelar la misión.
+[CARS_O2:CARS]
+~w~¡Hasta el cielo, colega!
-[PIZ1_13:PIZZA]
-Reparte éstas bien calentitas.
+[CARS_O3:CARS]
+~w~¡Vuelta de la hostia, tío!
-[PIZ1_14:PIZZA]
-Amigo, te toca repartir éstas.
+[CARS_SC:CARS]
+~w~Venta cerrada. Comisión: ~1~ $ Bonif. tiempo: ~1~ s.
-[PIZ1_15:PIZZA]
-A ver, tío, repártelas rápido.
+[CARS_SD:CARS]
+~w~Nivel ~1~ completado. Comisión: ~1~ $ Bonif. tiempo: ~1~ s.
-[PIZ1_16:PIZZA]
-¿Qué estás esperando, tío? Tienes pizzas que repartir.
+[CARS_IR:CARS]
+¡~1~ SEGUIDOS! ¡Bonificación! ~1~ $
-[PIZ1_17:PIZZA]
-Ya sé que no querías ser el chico de las pizzas, vale me importa un cuerno.
+[CARS_RE:CARS]
+~w~¡Un incentivo para el vendedor estrella!
-[PIZ1_18:PIZZA]
-Reparte éstas.
+[CARSIC1:CARS]
+~w~Necesito algo jodido de alcanzar, tío.
-[PIZ1_19:PIZZA]
-Hay que repartir éstas.
+[CARSIC2:CARS]
+~w~Necesito una máquina para que los 'peatontos' se caguen.
-[PIZ1_20:PIZZA]
-Venga hombre, reparte estas cosas o estás despedido.
+[CARSIP1:CARS]
+~w~¡Esta preciosidad parece rápida!
-[PIZ1_21:PIZZA]
-Tenemos gente esperando amigo.
+[CARSIP2:CARS]
+~w~¡Jo, tío! ¡Seguro que este buga vuela y todo!
-[PIZ1_22:PIZZA]
-¿Qué estás esperando? ¡Hay que repartir esto!
+[CARSIM1:CARS]
+~w~Dicen que estos vehículos son lentos pero seguros.
-[PIZ1_23:PIZZA]
-Haz el reparto de la maldita comida hombre.
+[CARSIM2:CARS]
+~w~Desde que me operaron, necesito coches más lentos.
-[PIZ1_24:PIZZA]
-Hay que repartir éstas, amigo.
+[CARSIO1:CARS]
+~w~¡Cómo se agarra! ¡Vamos por el campo!
-[PIZ1_25:PIZZA]
-Tío, ¿te puedes llevar éstas?
+[CARSIO2:CARS]
+~w~Mi colega hace unos trompos que te cagas con su buga. ¡Me flipan!
-[PIZ1_26:PIZZA]
-Oye, haz el reparto pronto, vamos amigo.
+[CARS_N1:CARS]
+~w~¡No voy a comprar este trasto!
-[PIZ1_27:PIZZA]
-Venga, tenemos prisa, haz ya el reparto.
+[CARS_N2:CARS]
+~w~¿Te crees que voy a comprar esto?
-[PIZ1_28:PIZZA]
-¿Otra vez tú? Bueno, reparte éstas deprisa, amigo.
+[CARS_N3:CARS]
+~w~¡Todos los vendedores de coches usados sois iguales!
-[PIZ1_29:PIZZA]
-No pierdas el tiempo amigo.
+[CARS_Y1:CARS]
+~w~¡Me lo llevo!
-[PIZ1_30:PIZZA]
-Venga ya vago hijo de puta, reparte esta mierda de una vez.
+[CARS_Y2:CARS]
+~w~¡Es el coche perfecto para mí!
-[PIZ1_31:PIZZA]
-No tendrás nunca un ascenso a menos que te muevas más rápido esta vez.
+[CARS_Y3:CARS]
+~w~¡Trato hecho!
-[PIZ1_32:PIZZA]
-~r~¿La pizza es demasiado caliente para encargarte de ella?
+[CARS_R1:CARS]
+~w~Me gusta el coche, pero no el color...
-[PIZ1_33:PIZZA]
-~g~Vuelve al restaurante a por más pedidos.
+[CARS_R2:CARS]
+~w~Repinta el coche.
-[PIZ1_34:PIZZA]
-~g~Pizza repartida, aquí está tu dinero.
+[CARS_D1:CARS]
+~w~Me gusta, pero está un poco cascado.
-[PIZ_WON:PIZZA]
-Misión de Pizza Completada. Tu salud Personal máxima ha aumentado a 150.
+[CARS_D2:CARS]
+~w~Lleva el coche a reparar.
-{=================================== MISSION TABLE PORN1 ===================================}
+[CARS_F1:CARS]
+~r~¡Has destruido el coche!
-[POR1_A:PORN1]
-Acción.
+[CARS_F2:CARS]
+~r~¡Has matado al cliente!
-[POR1_B:PORN1]
-¡Guau! Eso sí que es grande.
+[CARS_F3:CARS]
+~r~¡Has tardado demasiado! ¡El cliente se ha aburrido!
-[POR1_C:PORN1]
-30 cm, eso es para pensárselo, nene.
+[CARS_F4:CARS]
+~r~¡Al cliente no le gusta el coche!
-[POR1_D:PORN1]
-¡CORTEN! ¿Quién es este idiota? ¡Tú! ¡Tú! ¿Por qué estás en el set? ¿POR QUÉ?
+[CARS_F5:CARS]
+~r~Tu trabajo de vendedor de coches se ha terminado.
-[POR1_E:PORN1]
-¿De qué va toda esta basura?
+[CARS_F6:CARS]
+~r~Al cliente no le gusta el coche, ¡lo has destrozado!
-[POR1_F:PORN1]
-¿Alienígenas? ¿Cañas de pescar?
+[CARS_F7:CARS]
+~r~Al cliente no le gusta el coche, ¡has ido demasiado rápido!
-[POR1_G:PORN1]
-¿Quién ha visto alguna vez a un tiburón tan grande?
+[CARS_F8:CARS]
+~r~Al cliente no le gusta el coche, ¡has ido demasiado lento!
-[POR1_H:PORN1]
-Hay que desechar todo este material.
+[CARS_SA:CARS]
+Venta
-[POR1_I:PORN1]
-¿Por qué te metiste en este negocio, mamón?
+[CARS_7:CARS]
+~w~¡Sube a un ~b~coche~w~!
-[POR1_J:PORN1]
-¿Eh?
+[CARS_RF:CARS]
+~w~Capital Autos ahora está bajo tu 'protección'. No dejes de recoger los pagos regularmente.
-[POR1_K:PORN1]
-¡Por los chochos, evidentemente! ¿Qué es esto?
+{=================================== MISSION TABLE BIKE ===================================}
-[POR1_L:PORN1]
-Éste es mi arte. ¡SEGURIDAD!
+[BIKE_10:BIKE]
+~w~Sube a una moto para probarla o sal de la pista para cancelar la misión.
-[POR1_M:PORN1]
-Mira, pomposo gilipollas, ahora eres de mi propiedad. Yo poseo todo esto.
+[BIKE_12:BIKE]
+~w~Si bajas de la moto, fallarás la misión.
-[POR1_N:PORN1]
-Vamos a cambiar este lugar...
+[BIKE_1:BIKE]
+~w~Lleva a uno de los clientes a probar un vehículo.
-[POR1_O:PORN1]
-Voy a hacerte rico.
+[BIKE_2:BIKE]
+~w~Tendrás que discernir qué prestaciones quiere cada cliente en una moto.
-[POR1_P:PORN1]
-Usted es... Usted... ¿Usted es Tommy Vercetti? Pero yo creí que usted era...
+[BIKE_3:BIKE]
+~w~Luego usa tu habilidad para demostrarles que la moto tiene exactamente lo que quieren.
-[POR1_Q:PORN1]
-Eso es.
+[BIKE_5:BIKE]
+~w~Impresiona al cliente.
-[POR1_R:PORN1]
-Vamos a hacer algunos cambios por aquí y vamos a empezar a hacer dinero de verdad.
+[BIKE_30:BIKE]
+~w~¡Vuelve a la ~y~tienda de motos~w~ para cerrar el trato!
-[POR1_S:PORN1]
-En realidad, alguna vez has pensado en...
+[BIKE_C1:BIKE]
+~w~¡Muy bien, tío! Sacándote a la poli de encima, ¿eh?
-[POR1_T:PORN1]
-Pero primero, vamos a necesitar unas chicas guapas de verdad...
+[BIKE_C2:BIKE]
+~w~¡Sí! ¡Esa rata se lo merecía!
-[POR1_U:PORN1]
-Sí, las chicas están bien, pero tú... ¡guau!
+[BIKE_P1:BIKE]
+~w~¡Sí! ¡Esta moto es impresionante!
-[POR1_02:PORN1]
-~g~ Ve y elimina al chulo de Candy, luego vuelve y recoge a Candy.
+[BIKE_P2:BIKE]
+~w~¡Bien!
-[POR1_04:PORN1]
-Candy. Estoy buscando una estrella de cine. ¿Estás interesada?
+[BIKE_P3:BIKE]
+~w~Vamos, ¿no puedes ir más rápido?
-[POR1_05:PORN1]
-¡Claro! Pero tendrás que hablar con mi agente...
+[BIKE_P4:BIKE]
+~w~¡Cuidado!
-[POR1_06:PORN1]
-¿Qué DEMONIOS estás haciendo?
+[BIKE_M1:BIKE]
+~w~Ah, qué vueltecita más relajante.
-[POR1_07:PORN1]
-¡Hoy deberías haberte quedado en casa!
+[BIKE_M2:BIKE]
+~w~¿Sabe cuál es el límite de velocidad aquí?
-[POR1_7B:PORN1]
-¿Puedes creer a este gilipollas?
+[BIKE_M3:BIKE]
+~w~¡Ay, Dios mío! ¡Nos vamos a matar!
-[POR1_08:PORN1]
-¡Eh, Mercedes!
+[BIKE_O1:BIKE]
+~w~¡Oh, sí! ¡Sin asfalto que nos estorbe!
-[POR1_09:PORN1]
-¡Eh, Tommy! ¿Quieres ir de fiesta?
+[BIKE_O2:BIKE]
+~w~¡Hasta el cielo, colega!
-[POR1_10:PORN1]
-Ahora no, preciosa. ¿Te interesa hacer algunas películas?
+[BIKE_O3:BIKE]
+~w~¡Unas acrobacias del copón!
-[POR1_11:PORN1]
-Por supuesto. Mientras que sea una peli barata y cutre.
+[BIKE_SC:BIKE]
+~w~Venta cerrada. Comisión: ~1~ $ Bonif. tiempo: ~1~ s.
-[POR1_13:PORN1]
-~g~Lleva a las chicas de vuelta al Estudio para que conozcan a Steve.
+[BIKE_IR:BIKE]
+¡~1~ SEGUIDOS! ¡Bonificación! ~1~ $
-[POR1_14:PORN1]
-¡Contratada!
+[BIKE_RE:BIKE]
+~w~¡Un incentivo para el vendedor estrella!
-[POR1_15:PORN1]
-Eh Tommy, ¿¡qué, vienes a entrar en calor!?
+[BIKE_RF:BIKE]
+~w~Hogs & Cogs ahora está bajo tu 'protección'. No dejes de recoger los pagos regularmente.
-[POR1_17:PORN1]
-¡Guau, un tiburón genial!
+[BIKEIC1:BIKE]
+~w~Necesito algo jodido de alcanzar, tío.
-[POR1_18:PORN1]
-~r~¡Mercedes está muerta!
+[BIKEIC2:BIKE]
+~w~Necesito una máquina para que los 'peatontos' se caguen.
-[POR1_20:PORN1]
-Tommy, ¿a dónde vas? ¡Vuelve aquí!
+[BIKEIP1:BIKE]
+~w~¡Este pepino parece rápido!
-[POR1_21:PORN1]
-¿A dónde vas?
+[BIKEIP2:BIKE]
+~w~¡Quiero algo que impresione a las chicas!
-[POR1_22:PORN1]
-Tommy, ¿cuando vamos a pasar algún tiempo a solas?
+[BIKEIM1:BIKE]
+~w~Dicen que estos vehículos son lentos pero seguros.
-[POR1_01:PORN1]
-~g~¡Candy Suxxx sería perfecta para el papel principal!
+[BIKEIM2:BIKE]
+~w~Aún estoy un poco débil, así que necesito una moto lenta.
-[POR1_12:PORN1]
-~g~Ve con Candy a encontrarte con Mercedes.
+[BIKEIO1:BIKE]
+~w~¡Cómo se agarra! ¡Vamos por el campo!
-[POR1_16:PORN1]
-Quizás después, nena...
+[BIKEIO2:BIKE]
+~w~Estos cacharros hacen unas acrobacias de muerte, ¿no?
-[POR1_24:PORN1]
-~g~Vuelve y recoge a Candy.
+[BIKE_N1:BIKE]
+~w~¡No voy a comprar este trasto!
-[POR1_25:PORN1]
-~g~Te has dejado atrás a Candy, ve y tráela.
+[BIKE_N2:BIKE]
+~w~¿Te crees que voy a comprar esto?
-[POR1_23:PORN1]
-~g~Candy estará ocupándose de unos asuntos en el ~h~centro de la ciudad~g~.
+[BIKE_N3:BIKE]
+~w~¡Todos los vendedores de motos usadas son iguales!
-[POR1_26:PORN1]
-~g~Aquí está Candy, parece que ha estado otra vez con el congresista Shrub.
+[BIKE_Y1:BIKE]
+~w~¡Me la llevo!
-[POR1_27:PORN1]
-Venga, vamos.
+[BIKE_Y2:BIKE]
+~w~¡Es la moto perfecta para mí!
-[POR1_28:PORN1]
-¡Tommy ten cuidado! ¡Aún no he asegurado mis implantes!
+[BIKE_Y3:BIKE]
+~w~¡Trato hecho!
-[POR1_29:PORN1]
-¿Y a esto le llamas conducir?
+[BIKE_R1:BIKE]
+~w~Me gusta la moto, pero no el color...
-[POR1_30:PORN1]
-¡No podré hacer ningún numerito porno después de esto!
+[BIKE_R2:BIKE]
+~w~Repinta la moto.
-[POR1_31:PORN1]
-¿Qué? ¿Me estás intentando matar? ¡Creía que era la estrella era yo!
+[BIKE_D1:BIKE]
+~w~Me gusta, pero está un poco cascada.
-{=================================== MISSION TABLE PORN2 ===================================}
+[BIKE_D2:BIKE]
+~w~Repara la moto.
-[POR2_A:PORN2]
-¿Cómo va el rodaje, Steve?
+[BIKE_F1:BIKE]
+~r~¡Has destruido la moto!
-[POR2_B:PORN2]
-Bien, Candy es una fuera de serie y esa chica nueva ¡es insaciable!
+[BIKE_F2:BIKE]
+~r~¡Has matado al cliente!
-[POR2_C:PORN2]
-Se repasó a la mitad del reparto antes de que pudiese medir la luz.
+[BIKE_F3:BIKE]
+~r~¡Has tardado demasiado! ¡El cliente se ha aburrido!
-[POR2_D:PORN2]
-De todas formas, eh, mañana vamos a exteriores a rodar las escenas del barco...
+[BIKE_F4:BIKE]
+~r~¡Al cliente no le gusta la moto!
-[POR2_E:PORN2]
-¿Escenas del barco, qué escenas del barco?
+[BIKE_F5:BIKE]
+~r~Tu trabajo de vendedor de motos se ha terminado.
-[POR2_F:PORN2]
-Los pescadores son presa de la pasión cuando aparece el tiburón gigante...
+[BIKE_F6:BIKE]
+~r~Al cliente no le gusta la moto, ¡la has destrozado!
-[POR2_G:PORN2]
-¿Qué te dije del tiburón gigante?
+[BIKE_F7:BIKE]
+~r~Al cliente no le gusta la moto, ¡has ido demasiado rápido!
-[POR2_H:PORN2]
-Dije, ''SIN TIBURÓN GIGANTE'', ¿de acuerdo?
+[BIKE_F8:BIKE]
+~r~Al cliente no le gusta la moto, ¡has ido demasiado lento!
-[POR2_I:PORN2]
-¡Tú solo tienes que mantener las cámaras apuntando a los conejos!
+[BIKE_B1:BIKE]
+~w~¡Tienes ~1~ s. para volver a subir a la ~b~moto~w~!
-[POR2_J:PORN2]
-De acuerdo, de acuerdo, eh Tommy, uno tiene que intentarlo, ¿de acuerdo?
+[BIKE_B2:BIKE]
+~w~Que el ~b~cliente~w~ vuelva a subir a la moto.
-[POR2_K:PORN2]
-¿Has hecho que impriman esos folletos?
+[BIKE_B3:BIKE]
+~w~¡Deja que el ~b~cliente~w~ se suba a la moto!
-[POR2_L:PORN2]
-Sí, pero nadie va a distribuir esas cosas, quiero decir que...
+[BIKE_SA:BIKE]
+Venta
-[POR2_M:PORN2]
-son demasiado... poco imaginativos.
+[BIKE_7:BIKE]
+~w~¡Sube a una ~b~moto~w~!
-[POR2_N:PORN2]
-No te preocupes por eso.
+[BIKE_S1:BIKE]
+~w~¡Has vendido todas las Freeway que teníamos en stock!
-[POR2_O:PORN2]
-Tengo mis propias ideas para la distribución.
+[BIKE_S2:BIKE]
+~w~¡Has vendido todas las PCJ-600 que teníamos en stock!
-[POR2_P:PORN2]
-Vale. Candy, ven a mi caravana.
+[BIKE_S3:BIKE]
+~w~¡Has vendido todas las Faggio que teníamos en stock!
-[POR2_01:PORN2]
-~g~Hay un hidroavión que se utilizó como atrezzo en una antigua película independiente a la vuelta de los estudios.
+[BIKE_S4:BIKE]
+~w~¡Has vendido todas las Sánchez que teníamos en stock!
-[POR2_02:PORN2]
-~g~Escoge uno de los puntos de control para empezar a dejar caer los folletos.
+[BIKE_SN:BIKE]
+~w~¡Han llegado nuevas existencias!
-[POR2_03:PORN2]
-~g~Deja caer los folletos por todo el camino hasta el último punto de control.
+{=================================== MISSION TABLE RAC1 ===================================}
-[POR2_04:PORN2]
-~r~¡COMBUSTIBLE BAJO!
+[RAC1_A0:RAC1]
+~w~Demuestra que no conduces de pena y ponte en la línea de salida de la carrera callejera.
-[POR2_05:PORN2]
-Utilízalo para distribuir los folletos por toda la ciudad.
+{=================================== MISSION TABLE RAC2 ===================================}
-[DILDO:PORN2]
-Combustible del Skimmer:
+[RAC2_A0:RAC2]
+~w~Eh, sobran las palabras, va a haber una carrera callejera. Pon tu carro en la línea de salida.
-[POR2_Q:PORN2]
-¡Jo!, tío.
+{=================================== MISSION TABLE RAC3 ===================================}
-[PORN2_9:PORN2]
-~g~Tienes ~1~ segundos para volver a subir a una Skimmer antes de que termine la misión.
+[RAC3_A0:RAC3]
+~w~No hay coche más rápido. Ni conductor más intrépido.
-{=================================== MISSION TABLE PORN3 ===================================}
+[RAC3_A1:RAC3]
+~w~Te veré en la próxima carrera callejera... por el retrovisor.
-[POR3_A:PORN3]
-Vale, ¿cuál es el problema ahora?
+{=================================== MISSION TABLE BIK1 ===================================}
-[POR3_B:PORN3]
-¡SSShhhh!
+[BIK1_A0:BIK1]
+~w~¿Crees que me puedes adelantar? ¡Lo llevas claro, pardillo!
-[POR3_C:PORN3]
-Bien, después de este encuentro cercano con las invasoras ninfómanas
+[BIK1_A1:BIK1]
+~w~¡Pon tu moto en la parrilla de salida y empecemos de una vez!
-[POR3_D:PORN3]
-nuestro héroe se encuentra incapaz de pensar en nada excepto en esta enorme montaña fálica...
+{=================================== MISSION TABLE BIK2 ===================================}
-[POR3_E:PORN3]
-y es entonces cuando queremos hacer la escena con la tina de puré de patatas, pero entonces...
+[BIK2_A0:BIK2]
+~w~Si crees que puedes ganarme, demuéstramelo con la burra.
-[POR3_F:PORN3]
-¡Me importa una mierda!
+[BIK2_A1:BIK2]
+~w~Te veo en la línea de salida.
-[POR3_G:PORN3]
-¡Sigue, sigue!
+{=================================== MISSION TABLE BIK3 ===================================}
-[POR3_H:PORN3]
-Eh Tommy...
+[BIK3_A0:BIK3]
+~w~Es muy sencillo. A dos ruedas, soy imbatible. Voy a demostrarlo en la calle.
-[POR3_I:PORN3]
-¿Mencionaste algo sobre un problema legal al teléfono?
+{=================================== MISSION TABLE TT1 ===================================}
-[POR3_J:PORN3]
-¡Vaya que sí! El congresista Alex Shrub se ha subido al tren preelectoral y va tras el voto puritano.
+[TT1_A0:TT1]
+~w~~k~ ~AMBUY~ ~w~ correr. ~n~~k~ ~AMEXI~ ~w~ salir.
-[POR3_K:PORN3]
-Hay rumores de que va a apoyar medidas restrictivas, digamos,
+[TT1_0:TT1]
+Tiempo
-[POR3_L:PORN3]
-para el aspecto más lujurioso de la gran industria del entretenimiento de esta nación.
+[TT1_1:TT1]
+~w~Nuevo récord de vuelta ~1~:~1~
-[POR3_M:PORN3]
-Genial.
+[TT1_1A:TT1]
+~w~Nuevo récord de vuelta ~1~:0~1~
-[POR3_N:PORN3]
-¡Candy! Tú conoces a Shrub,
+[TT1_C1:TT1]
+~w~3
-[POR3_O:PORN3]
-¿llegasteis a algo pervertido?
+[TT1_C2:TT1]
+~w~2
-[POR3_P:PORN3]
-¡Oh sí, oh sí, oh sí! ¡Sí sí sí SÍ! ¡OOOoooh!
+[TT1_C3:TT1]
+~w~1
-[POR3_Q:PORN3]
-Por favor dime que filmaste eso.
+[TT1_C4:TT1]
+~w~¡YA!
-[POR3_R:PORN3]
-¿Eso era parte del eh... o estaba hablando conmigo...?
+[TT1_D1A:TT1]
+~w~Altura: ~1~ pies
-[POR3_S:PORN3]
-Eh, uno nunca podría decirlo... De todas formas...
+[TT1_D2:TT1]
+~w~Tiempo de la vuelta ~1~ ~1~:~1~
-[POR3_T:PORN3]
-Probablemente sea mejor que la sigas después del rodaje,
+[TT1_D3:TT1]
+~w~Tiempo de la vuelta ~1~ ~1~:0~1~
-[POR3_U:PORN3]
-para ver si te lleva a su nuevo nido de amor.
+[TT1_D4:TT1]
+~w~Vuelta
-[POR3_V:PORN3]
-¿Tienes una cámara?
+[TT1_F2:TT1]
+~r~¡Has abandonado la carrera!
-[POR3_X:PORN3]
-Vale, conseguidle una cámara.
+[TT1_F3:TT1]
+~r~¡Has destruido la moto!
-[POR3_02:PORN3]
-~r~¡Has asesinado al Congresista! Ahora no habrá modo de que puedas chantajearle.
+[TT1_D5A:TT1]
+~w~Altura: ~1~ pies. Bonif.: 10 $
-[POR3_03:PORN3]
-~r~Has alertado a la protección del Congresista, le sacarán de aquí inmediatamente.
+[TT1_D1:TT1]
+~w~Altura: ~1~ m.
-[POR3_04:PORN3]
-Candy, ¿podrías llamarme Marta?
+[TT1_D5:TT1]
+~w~Altura: ~1~ m. Bonif.: 10 $
-[POR3_05:PORN3]
-Oh Alex, quiero decir Marta. Lo que tú digas.
+[TT1_2:TT1]
+~w~¡Has superado la marca! Desbloqueado el siguiente trazado. ¡Bonif. de 100 $!
-[POR3_06:PORN3]
-Marta, alguien está mirando... qué pervertido.
+[TT1_3:TT1]
+~w~¡Has superado la marca! ¡Bonif. de 100 $!
-[POR3_07:PORN3]
-Tú, el de ahí. Dame esa cámara.
+[TTDONE:TT1]
+~w~¡Completados todos los trazados! Has desbloqueado la Mánchez.
-[POR3_01:PORN3]
-~g~Sigue la ~h~limusina~g~ de Candy.
+[TT1_2A:TT1]
+~r~No has conseguido superar la marca.
-[POR3_15:PORN3]
-~r~¡Has destruido la limusina de Candy!
+[TT1_2B:TT1]
+~r~No has conseguido batir el récord del trazado.
-[POR3_17:PORN3]
-~g~Regresa a la compañía de pornografía con las fotos.
+{=================================== MISSION TABLE RCR ===================================}
-[POR3_19:PORN3]
-~r~¡Te has quedado sin película!
+[RCRACE3:RCR]
+~w~Derrota a los demás vehículos de RC en una carrera de ~1~ vuelta(s) por el parque.
-[POR3_21:PORN3]
-~g~¡Has perdido la limusina de Candy!
+[RCRACE4:RCR]
+~w~Derrota a los demás vehículos de RC en una carrera de ~1~ vuelta(s) por el aeropuerto.
-[POR3_22:PORN3]
-~g~El Hotel WK Chariot frente a este balcón debería proporcionar el lugar ideal para la sesión fotográfica.
+[RCRACE7:RCR]
+~w~Preparados...
-[POR3_23:PORN3]
-~g~Hay una puerta lateral que te permitirá acceder al hotel.
+[RCRLAP5:RCR]
+~w~Nuevo récord: ¡vuelta en ~1~ s.!
-[POR3_08:PORN3]
-Mantén pulsado ~h~~k~~PED_LOCK_TARGET~ ~w~para~h~ enfocar~w~ con la cámara.
+[RCRLAP6:RCR]
+~w~¡~1~ vueltas para terminar!
-[POR3_09:PORN3]
-Mantén pulsado ~h~~k~~PED_LOCK_TARGET~ ~w~para~h~ enfocar~w~ con la cámara.
+[RCRLAP7:RCR]
+~w~¡Última vuelta!
-[POR3_10:PORN3]
-Pulsa ~h~~k~~PED_SNIPER_ZOOM_IN~ ~w~para ~h~acercar el zoom ~w~con la cámara y ~h~~k~~PED_SNIPER_ZOOM_OUT~ ~w~para ~h~alejarlo ~w~de nuevo.
+[RCRLTME:RCR]
+Tiempo de vuelta
-[POR3_11:PORN3]
-Pulsa ~h~~k~~PED_SNIPER_ZOOM_IN~ ~w~para ~h~acercar el zoom ~w~con la cámara y ~h~~k~~PED_SNIPER_ZOOM_OUT~ ~w~para ~h~alejarlo ~w~de nuevo.
+[RCRLOSE:RCR]
+~r~¡Has perdido! ¡Siempre llegas tarde!
-[POR3_12:PORN3]
-Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para sacar una foto.
+[RCRLOS2:RCR]
+~r~¡Nunca ganarás una carrera si te sales del recorrido!
-[POR3_13:PORN3]
-Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para sacar una foto.
+[RCRTIME:RCR]
+~w~Tienes ~h~~1~ ~w~s. para volver al recorrido.
-[POR3_14:PORN3]
-Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para sacar una foto.
+[RCRWIN1:RCR]
+~w~¡Felicidades! Has ganado pero no has batido el récord de vuelta.
-[POR3_20:PORN3]
-~g~Si necesitas transporte, utiliza el ~h~Sparrow~g~ que está en la parte de atrás.
+[RCRWIN2:RCR]
+~w~La próxima carrera será a ~1~ vueltas.
-[POR3_16:PORN3]
-~g~Necesitas tres buenas fotos de Alex Shrub con Candy para chantajearle.
+[RCRWIN3:RCR]
+~w~Ya está disponible la carrera de RC en el parque de Belleville, Staunton.
-[POR3_24:PORN3]
-FOTOS HECHAS:
+[RCRWIN4:RCR]
+~w~Ya está disponible la carrera de RC en el aeropuerto de Shoreside.
-{=================================== MISSION TABLE PORN4 ===================================}
+[RCRWIN5:RCR]
+~w~¡Ya has superado todos los niveles! ¡Ahora ve y bate tus récords de vuelta!
-[POR4_A:PORN4]
-Lo siento, pero no puedo tragarme eso ahora.
+[RCR1:RCR]
+~w~1
-[POR4_B:PORN4]
-¡Oh, VENGA, cariño!
+[RCR2:RCR]
+~w~2
-[POR4_C:PORN4]
-La tiene como un cachalote, por el amor de Dios,
+[RCR3:RCR]
+~w~3
-[POR4_D:PORN4]
-¿cómo es que no puedes sentir el papel?
+[RCRGO:RCR]
+~w~¡YA!
-[POR4_E:PORN4]
-Pero Stevie...
+[RCBLAP:RCR]
+El mejor tiempo de vuelta es de ~1~:~1~
-[POR4_F:PORN4]
-¿Cómo está mi director estrella?
+[RCBLAP1:RCR]
+El mejor tiempo de vuelta es de ~1~:0~1~
-[POR4_G:PORN4]
-Oh, tío. La lucha entre la integridad artística y
+[RCBLA2:RCR]
+Tiempo de vuelta récord de ~1~:~1~
-[POR4_H:PORN4]
-la acción cargante y bombeante continúa sin perder intensidad.
+[RCBLA3:RCR]
+Tiempo de vuelta récord de ~1~:0~1~
-[POR4_I:PORN4]
-Y antes de que puedas preguntarlo, sí, los cuatro vídeos serán lanzados en sus...
+[RCRRLA1:RCR]
+~w~Nuevo récord: ¡vuelta en ~1~:~1~!
-[POR4_J:PORN4]
-Cariño, podrías POR FAVOR mantener la anaconda dentro del plano,
+[RCRRLA2:RCR]
+~w~Nuevo récord: ¡vuelta en ~1~:0~1~!
-[POR4_K:PORN4]
-¡cuesta por hora más de lo que cuestas tú!
+[RCRACEA:RCR]
+Thrashin' RC
-[POR4_L:PORN4]
-Oh, lo siento, Steve.
+[RCRACEB:RCR]
+Ragin' RC
-[POR4_M:PORN4]
-Estaba pensando, necesitamos algún tipo de gran truco publicitario para promover de verdad el lanzamiento.
+[RCRACEC:RCR]
+Chasin' RC
-[POR4_N:PORN4]
-Algo que tenga un verdadero impacto en la ciudad, ¿tienes alguna idea?
+[RCLE11:RCR]
+NIVEL UNO de Thrashin' RC
-[POR4_O:PORN4]
-Bueno, en los viejos tiempos solían organizar fiestas,
+[RCLE12:RCR]
+NIVEL DOS de Thrashin' RC
-[POR4_P:PORN4]
-estrellas, limusinas, el cielo nocturno con los focos entrecruzados...
+[RCLE13:RCR]
+NIVEL TRES de Thrashin' RC
-[POR4_Q:PORN4]
-¿Focos? Tengo una idea...
+[RCLE21:RCR]
+NIVEL UNO de Ragin' RC
-[POR4_R:PORN4]
-...sí, sí, sí. Los numeritos de lentejuelas, y las limusinas, oh, premieres.
+[RCLE22:RCR]
+NIVEL DOS de Ragin' RC
-[POR4_S:PORN4]
-Oh, sí, madam, por supuesto madam,
+[RCLE23:RCR]
+NIVEL TRES de Ragin' RC
-[POR4_T:PORN4]
-y la prensa, y el bombardeo de luces...
+[RCLE31:RCR]
+NIVEL UNO de Chasin' RC
-[POR4_01:PORN4]
-~g~Ve al ~y~centro~g~ y ajusta los focos sobre lo alto del edificio.
+[RCLE32:RCR]
+NIVEL DOS de Chasin' RC
-[POR4_02:PORN4]
-~g~Necesitarás una moto rápida para saltar de un tejado a otro. El guardia de seguridad normalmente lleva una ~y~PCJ 600~g~ para ir a trabajar...
+[RCLE33:RCR]
+NIVEL TRES de Chasin' RC
-[POR4_03:PORN4]
-~g~Necesitarás subir a los tejados de los edificios. Debería de haber un ascensor que lleve a una de las oficinas superiores...
+[RCRACE2:RCR]
+~w~Derrota a los demás vehículos de RC en una carrera de ~1~ vuelta(s) por las obras.
-[POR4_06:PORN4]
-~g~Vuelve a la oficina inferior si de nuevo necesitas acceso a los tejados.
+[RCRWIN6:RCR]
+~w~Vuelve a correr para intentar superar tu mejor vuelta.
-[POR4_07:PORN4]
-~g~Necesitarás una moto para poder saltar de un edificio a otro.
+[RCQUIT:RCR]
+~r~¿Te estás quedando sin batería?
-[POR4_08:PORN4]
-~g~Atraviesa la ventana para empezar el recorrido. Tienes hasta las 07:00 antes de que haya demasiada luz como para subir allí sin ser visto.
+[RCRFAIL:RCR]
+~r~¡No has conseguido llegar el primero!
-[POR4_09:PORN4]
-~g~Los marcadores rosas te mostrarán a qué edificio saltar después.
+[RCRLAP1:RCR]
+~c~1ª ~w~VUELTA
-[POR4_10:PORN4]
-~r~Hay demasiada luz como para subir ahí sin ser visto.
+[RCRLAP2:RCR]
+~c~2ª ~w~VUELTA
-[POR4_11:PORN4]
-~g~Vuelve a la escalera si necesitas acceder de nuevo a los tejados.
+[RCRLAP3:RCR]
+~c~3ª ~w~VUELTA
-[POR4_05:PORN4]
-~g~Estas escaleras llevan a una oficina en el piso inferior.
+[RCRLAP4:RCR]
+~c~4ª ~w~VUELTA
-[POR_AS1:PORN4]
-ESTUDIO CINEMATOGRÁFICO CONSOLIDADO
+[RCRWIN:RCR]
+~w~¡Felicidades! ¡Has ganado con un mejor tiempo de vuelta de ~1~:~1~! ¡500 $ de bonif.!
-[POR_AS2:PORN4]
-~g~Inter Global Films generará ahora unos ingresos máximos de hasta ~1~ $. Asegúrate que lo recaudas de forma regular.
+[RCRWINB:RCR]
+~w~¡Felicidades! ¡Has ganado con un mejor tiempo de vuelta de ~1~:0~1~! ¡500 $ de bonif.!
-{=================================== MISSION TABLE PROT1 ===================================}
+{=================================== MISSION TABLE TOUR ===================================}
-[PRO1_B:PROT1]
-No puedo soportar este look. Tommy, ¿Tú que dices? ¿Qué te parece si ponemos un bar en...
+[TOUR_H1:TOUR]
+~w~Consejo: ponte ~h~delante~w~ del turista, ~h~no muy lejos~w~. Asegúrate de que el ~h~turista y el escenario de fondo~w~ salgan en la foto.
-[PRO1_D:PROT1]
-Escúchame,
+[TOUR_I2:TOUR]
+~w~Recibirás gratificaciones adicionales por fotos de gran calidad.
-[PRO1_E:PROT1]
-Es hora de tomar esta ciudad. Está ahí, esperándonos.
+[TOUR_S0:TOUR]
+~w~Te queda carrete para ~h~~1~~w~ fotos.
-[PRO1_F:PROT1]
-Necesitamos empezar a ampliar nuestro territorio,
+[TOUR_S1:TOUR]
+~w~Solo te queda carrete para una foto. ¡Asegúrala!
-[PRO1_G:PROT1]
-vamos a dejar que Vice City sepa que somos los nuevos tíos importantes de la ciudad, ¿sabes a lo que me refiero?
+[TOUR_S2:TOUR]
+~w~¡No desperdicies carrete! Solo te queda para ~h~~1~~w~ fotos.
-[PRO1_I:PROT1]
-Lo que necesitas es un frente legítimo, Tommy, una verdadera propiedad. A mí nunca me ha hecho daño.
+[TOUR_S4:TOUR]
+~w~Tienes que encuadrar bien al ~b~turista~w~. Te queda carrete para ~h~~1~~w~ fotos.
-[PRO1_J:PROT1]
-Necesitamos empezar a utilizar la fuerza o podemos despedirnos de todo el trabajo duro que hemos hecho.
+[TOUR_F1:TOUR]
+~r~¡El turista ha muerto!
-[PRO1_K:PROT1]
-¡Los negociantes locales saben que Díaz está muerto, y se niegan a pagar la protección!
+[TOUR_F2:TOUR]
+~r~¡Has perdido al turista!
-[PRO1_L:PROT1]
-Oh. Podríamos intentar el soborno...
+[TOUR_F3:TOUR]
+~r~¡No le has sacado una foto al turista!
-[PRO1_M:PROT1]
-¿Soborno? ¡Que le jodan al soborno! Te mostraré cómo hacer que se asusten.
+[TOUR_F4:TOUR]
+~r~¡Se te ha acabado el tiempo!
-[PRO1_01:PROT1]
-~g~Ve a atracar los escaparates de las tiendas y tendrás a los propietarios suplicando protección.
+[TOUR_F5:TOUR]
+~r~Cancelada la misión del turista.
-[PRO1_03:PROT1]
-~r~Se suponía que deberías atacar y salir corriendo, no atacar y tomarte un café.
+[TOUR_F6:TOUR]
+~r~¡El tironero se ha escapado con la cámara del turista!
-[PRO1_04:PROT1]
-¡Mi sustento, destruido!
+[TOUR_O1:TOUR]
+~w~Lleva al turista al ~y~lugar turístico~w~.
-[PRO1_05:PROT1]
-¡Arruinado... ESTOY ARRUINADO!
+[TOUR_O2:TOUR]
+~w~No dejes atrás al ~b~turista~w~.
-[PRO1_06:PROT1]
-¡Pagaré lo que sea por protección!
+[TOUR_O3:TOUR]
+~w~Sigue al ~b~turista~w~ a pie hasta el lugar de la foto.
-[PRO1_07:PROT1]
-¡Mi hermoso escaparate destruido!
+[TOUR_O4:TOUR]
+~w~Usa la cámara del propio ~b~turista~w~ para sacar la foto.
-[PRO1_08:PROT1]
-Mi tienda. Mi maravillosa tienda.
+[TOUR_O5:TOUR]
+~w~Lleva al turista de vuelta al ~y~aeropuerto~w~.
-[PRO1_09:PROT1]
-Vercetti. Recuerda el nombre.
+[TOUR_O6:TOUR]
+~w~¡Rápido! ¡Se acaba el tiempo!
-[PRO1_10:PROT1]
-Ahora dirijo esta ciudad. ¡YO!
+[TOUR_O7:TOUR]
+~w~Recoge al ~b~turista~w~.
-[BUYP1:PROT1]
-Ahora puedes comprar propiedades en ciertas zonas de la ciudad.
+[TOUR_O8:TOUR]
+~w~Recoge al siguiente ~b~turista~w~ antes de que se acabe el tiempo.
-[BUYP2:PROT1]
-Si ves un indicador con una casa verde, puedes comprar esa propiedad.
+[TOUR_O9:TOUR]
+~w~Tendrías que estar siguiendo al ~b~turista~w~. Estás perdiendo el tiempo.
-[PRO1_N:PROT1]
-Volveré aquí en cinco minutos...
+[TOUR_OA:TOUR]
+~w~El ~b~turista~w~ espera a que le saques la foto. Date prisa, ¡el tiempo se agota!
-[PRO1_11:PROT1]
-~g~Ve al ~y~Centro Comercial North Point~g~ en ~y~Vice Point~g~.
+[TOUR_W1:TOUR]
+~w~Tarifa pagada: ~h~~1~ $~w~ No hay gratificación esta vez.
-[PRO1_12:PROT1]
-~g~Destroza los escaparates de todas las tiendas y los propietarios te suplicarán para obtener nueva protección.
+[TOUR_W2:TOUR]
+~w~Tarifa pagada: ~h~~1~ $~w~ más gratificación de ~h~~1~ $~w~ por una buena foto.
-[PRO1_A:PROT1]
-Oh, tenemos que volver a pintar este sitio. Tenemos que hacer que parezca más viejo.
+[TOUR_W3:TOUR]
+~w~Tarifa pagada: ~h~~1~ $~w~ más gratificación de ~h~~1~ $~w~ por una foto estupenda.
-[PRO1_C:PROT1]
-Rosenberg, eres mi abogado, no mi diseñador de interiores, ¿lo entiendes?
+[TOUR_W4:TOUR]
+~w~Tarifa pagada: ~h~~1~ $~w~ más gratificación de ~h~~1~ $~w~ por una foto excelente.
-[BUYP3:PROT1]
-Sitúate en el marcador, a continuación pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para comprar la propiedad.
+[TOUR_W5:TOUR]
+~w~¡Bien hecho! Completadas todas la misiones 'See the Sight...' ~1~ $ de gratificación por terminarlas.
-[PRO1_13:PROT1]
-~g~Dispones de cinco minutos para machacarlos a todos.
+[TOURDAM:TOUR]
+~w~VISTA ~1~: ~w~Lleva a este turista a la presa de Cochrane y sácale una foto que demuestre que ha estado allí.
-{=================================== MISSION TABLE PROT2 ===================================}
+[TOURBRI:TOUR]
+~w~VISTA ~1~: ~w~Esta señorita quiere ver el puente Callahan desde el lado de Portland.
-[PRO2_A:PROT2]
-¿Cuál es el problema?
+[TOURDRK:TOUR]
+~w~VISTA ~1~: ~w~Sácale una foto a esta fan de las películas de Black Lightman delante de la casa de éste, en Cedar Grove, Shoreside Vale.
-[PRO2_B:PROT2]
-Un bar se niega a pagar.
+[TOURSTA:TOUR]
+~w~VISTA ~1~: ~w~Sácale una foto a esta loca del deporte delante del Liberty Memorial Coliseum, en Staunton.
-[PRO2_C:PROT2]
-Creen que están protegidos por una banda de matones locales.
+[TOURCHU:TOUR]
+~w~VISTA ~1~: ~w~Guía a este peregrino a la histórica catedral de Liberty, en Staunton.
-[PRO2_D:PROT2]
-Pero no te preocupes, Tommy, yo me encargo.
+[TOURBCH:TOUR]
+~w~VISTA ~1~: ~w~Muestra a esta turista las bellas vistas de Portland Rock y su faro desde la playa de Portland.
-[PRO2_E:PROT2]
-¿Llamas a esto encargarte?
+[TOURCHI:TOUR]
+~w~VISTA ~1~: ~w~El ambiente oriental de Chinatown Plaza, en Portland, es el exótico destino de este turista.
-[PRO2_F:PROT2]
-Vosotros dos, en pie...
+[TOURSHO:TOUR]
+~w~VISTA ~1~: ~w~Esta turista quiere que sus amigas piensen que ha comprado en los selectos grandes almacenes de Staunton. Llévala allí y sácale una foto.
-[PRO2_G:PROT2]
-Vamos.
+[TOURCAS:TOUR]
+~w~VISTA ~1~: ~w~Aquí un jugador que quiere sacarse una foto delante del mundialmente famoso casino de Staunton.
-[PRO2_01:PROT2]
-~g~Elimina a los guardias que vigilan el Bar Front Page y descubre quién los ha puesto ahí.
+[TOURMUS:TOUR]
+~w~VISTA ~1~: ~w~Esta investigadora quiere visitar el museo en Staunton y obtener una imagen del edificio.
-[PRO2_10:PROT2]
-~g~Dos más han huido. Sígueles la pista y acaba con ellos.
+[TOURHAL:TOUR]
+~w~VISTA ~1~: ~w~Este turista quiere visitar el ayuntamiento, en Staunton, una vez más antes de irse.
-[PRO2_11:PROT2]
-Sube al coche, inútil.
+[TOURRED:TOUR]
+~w~VISTA ~1~: ~w~Sus amigos dicen que no se atreve a visitar un club de striptease del Red Light District de Portland. ¡Demuéstrales que sí!
-[PRO2_02:PROT2]
-Tu seguridad necesita un poco más de seguridad.
+[TOURMU0:TOUR]
+~w~¡El ~r~tironero~w~ le ha robado la cámara! ¡Recúperala!
-[PRO2_03:PROT2]
-¡Ahh! demonios, ¡otra vez no! ¡no necesito esta basura!
+[TOURMU1:TOUR]
+~w~¡Un chorizo menos del que preocuparse! Recoge la ~g~cámara~w~.
-[PRO2_04:PROT2]
-Estos idiotas pertenecen al DBP de Seguridad que hay a la vuelta de la esquina.
+[TOUR00:TOUR]
+~w~Lleva al turista a la ~y~presa de Cochrane~w~, en Shoreside Vale.
-[PRO2_05:PROT2]
-¡Eh tíos! Arregladlo entre vosotros.
+[TOUR01:TOUR]
+~w~Lleva a la turista al ~y~Liberty Memorial Coliseum~w~, en Staunton.
-[PRO2_06:PROT2]
-Nos vemos en un rato.
+[TOUR02:TOUR]
+~w~Lleva al turista a ~y~Chinatown Plaza~w~, en Portland.
-[PRO2_07:PROT2]
-Sí, vale, lo que tú digas.
+[TOUR03:TOUR]
+~w~Lleva al turista a la ~y~catedral de Liberty~w~, en Staunton.
-[PRO2_08:PROT2]
-~g~El DBP de Seguridad sabrá que estás de camino, ve y atrápalos antes que escapen.
+[TOUR06:TOUR]
+~w~Lleva al turista al ~y~club de striptease~w~ del Red Light District de Portland.
-[PRO2_09:PROT2]
-~g~Ve y habla con el dueño del bar Front Page.
+[TOUR07:TOUR]
+~w~Lleva a la turista al ~y~museo de Liberty City~w~, en Staunton.
-{=================================== MISSION TABLE PROT3 ===================================}
+[TOUR08:TOUR]
+~w~Lleva al turista al ~y~casino~w~ de Staunton.
-[PRO3_A:PROT3]
-¡Idiota! ¿En qué estabas pensando?
+[TOUR10:TOUR]
+~w~Lleva al turista al ~y~ayuntamiento~w~ en Staunton.
-[PRO3_B:PROT3]
-¿Te das cuenta de lo que significa ésto?
+[TOUR11:TOUR]
+~w~Lleva a la turista a la ~y~playa de Portland~w~.
-[PRO3_C:PROT3]
-¡Podríamos estar todos hundidos!
+[TOUR04:TOUR]
+~w~Lleva a la turista al ~y~puente Callahan~w~, por el lado de Portland.
-[PRO3_D:PROT3]
-El temporizador debe haberse jodido.
+[TOUR09:TOUR]
+~w~Lleva a la turista a la ~y~casa del actor Black Lightman~w~, en Cedar Grove, Shoreside Vale.
-[PRO3_E:PROT3]
-Ese lugar estaba preparado para estallar como una fábrica de fuegos artificiales.
+[TOUR_I1:TOUR]
+~w~Lleva a los turistas a los parajes más famosos de Liberty City.
-[PRO3_F:PROT3]
-Entonces alguien avisó a la poli...
+[TOUR_IA:TOUR]
+~w~Hazles fotos de recuerdo cuando estén allí.
-[PRO3_G:PROT3]
-¿Cuál es el problema, colegas?
+[TOUR_IB:TOUR]
+~w~Luego, llévalos de vuelta al avión antes de que despegue.
-[PRO3_H:PROT3]
-Se suponía que Mike iba a quemar algún sitio en el centro comercial,
+[TOURMEM:TOUR]
+~w~VISTA ~1~: ~w~Este veterano quiere rendir homenaje a sus camaradas en el Liberty City War Memorial, en el parque de Belleville, Staunton.
-[PRO3_I:PROT3]
-pero la cagó con los fusibles y ahora eso está plagado de polis.
+[TOUR05:TOUR]
+~w~Lleva al turista al ~y~Liberty City War Memorial~w~, en el parque de Belleville, Staunton.
-[PRO3_J:PROT3]
-¡Tenemos que conseguir nuestras cosas y salir de aquí!
+{=================================== MISSION TABLE PIZZA ===================================}
-[PRO3_K:PROT3]
-¡Relajaos los dos, dejadme pensar un segundo!
+[PIZ1_06:PIZZA]
+~w~Pulsa~h~ ~k~ ~TGSUB~ ~w~cuando estés en la moto para cancelar la misión.
-[PRO3_L:PROT3]
-Tommy Vercetti no corta por lo sano y huye.
+[PIZ1_02:PIZZA]
+~w~¡Te has quedado sin pizzas! Vuelve al ~y~Joe's Pizza Restaurant~w~ para conseguir más.
-[PRO3_M:PROT3]
-Los polis van a repasar ese edificio con un buen cepillo de dientes, ¿verdad?
+[PIZ1_07:PIZZA]
+~r~¡Has matado al cliente! ¡Estás despedido!
-[PRO3_N:PROT3]
-Pero eso lleva tiempo.
+[PIZ1_08:PIZZA]
+~r~¡Te has quedado sin tiempo y sin trabajo!
-[PRO3_O:PROT3]
-Tenemos que ir y quemar nosotros mismos ese sitio.
+[PIZ1_09:PIZZA]
+~r~¡Has estrellado la moto! ¡Fuera de aquí!
-[PRO3_P:PROT3]
-Sí, pero...
+[PIZ1_11:PIZZA]
+~w~Necesitas la ~b~moto de repartidor~w~ para hacer las entregas.
-[PRO3_Q:PROT3]
-¡Nadie excepto un poli podría acercarse a una milla de ese lugar!
+[PIZ1_12:PIZZA]
+Pizzas
-[PRO3_R:PROT3]
-Así que iremos como polis.
+[PIZ1_13:PIZZA]
+~w~¡Pizza! ¡Calentita y lista! ¡Me encanta!
-[PRO3_S:PROT3]
-Tenemos que conseguir uniformes, y vamos a necesitar un coche patrulla.
+[PIZ1_14:PIZZA]
+~w~¡Listas para repartir! ¡Venga!
-[PRO3_T:PROT3]
-Todo gracias a ti, Mike.
+[PIZ1_15:PIZZA]
+~w~¡Ésta lleva extra de picante!
-[PRO3_U:PROT3]
-Lo siento.
+[PIZ1_16:PIZZA]
+~w~¡Deja de tocarte los huevos y repártelas! ¡'Pronto'!
-[PRO3_V:PROT3]
-Lo capto.
+[PIZ1_17:PIZZA]
+~w~¡Estas pizzas hay que repartirlas hoy, no el año que viene!
-[PRO3_W:PROT3]
-Lo que tenemos que hacer es atraer a los polis enseñándoles el dedo,
+[PIZ1_18:PIZZA]
+~w~¿Repartir pizzas no está a su altura? Usted perdone, señor doctor.
-[PRO3_X:PROT3]
-encerrarles
+[PIZ1_19:PIZZA]
+~w~¿Vas a repartirlas o qué?
-[PRO3_Y:PROT3]
-y asaltarles.
+[PIZ1_20:PIZZA]
+~w~¡Despedido! Es broma... ¡Pero no lo será si no las entregas a tiempo!
-[PRO3_Z:PROT3]
-Buen plan. ¡Vamos!
+[PIZ1_21:PIZZA]
+~w~¡Pizzas! ¡Vamos! ¡Hay gordos esperándolas!
-[PRO3_A1:PROT3]
-De acuerdo.
+[PIZ1_22:PIZZA]
+~w~¿Has estado escupiendo en las pizzas? ¡Pues deberías! ¡Les da más saborcito!
-[PRO3_01:PROT3]
-De acuerdo, Lance, ¡vamos a por los polis!
+[PIZ1_23:PIZZA]
+~w~¿Crees que van a repartirse solas?
-[PRO3_02:PROT3]
-~g~ Roba el coche de policía y coloca la bomba en el Café Tarbrush del centro comercial.
+[PIZ1_24:PIZZA]
+~w~¡Si llegan frías, no va a pagarte ni Dios!
-[PRO3_03:PROT3]
-~g~ Has dejado atrás a Lance, vuelve y recógele.
+[PIZ1_25:PIZZA]
+~w~¡Esta vez date caña!
-[PRO3_04:PROT3]
-~g~ Vamos.
+[PIZ1_26:PIZZA]
+~w~¡Eh, reparte esto!
-[PRO3_05:PROT3]
-~r~¡Has matado a Lance!
+[PIZ1_27:PIZZA]
+~w~Vale, entrega éstas y vuelve a por más.
-[PRO3_07:PROT3]
-~g~ Te has descubierto. ¡Date prisa y coloca la bomba!
+[PIZ1_28:PIZZA]
+~w~¡Nuestras pizzas son la polla! ¡Reparte éstas o te la corto!
-[PRO3_08:PROT3]
-~g~Vuelve a la ~h~finca de Vercetti~g~ en ~h~Starfish Island~g~.
+[PIZ1_29:PIZZA]
+~w~¿Quieres más? Pues me he quedado sin insultos, colega.
-[PRO3_09:PROT3]
-¡Átales y amordázales!
+[PIZ1_30:PIZZA]
+~w~¡Creo que he estornudado en una de ésas! No importa. ¡Repártelas!
-[PRO3_10:PROT3]
-¡Me queda como un guante!
+[PIZ1_31:PIZZA]
+~w~¡Odio este trabajo! Pero al menos me dejan mangonearte.
-[PRO3_11:PROT3]
-Un poco ajustado en la entrepierna...
+[PIZ1_3A:PIZZA]
+~w~Si no llegan a tiempo, la pasta de la pizza será la única que veas hoy.
-[PRO3_12:PROT3]
-Oh, sí, sí, el mío también. El mío también.
+[PIZ1_32:PIZZA]
+~r~¿No tragas con nuestras pizzas?
-[PRO3_13:PROT3]
-¡Relájate, hermano! ¡Ningún poli conduce tan mal!
+[PIZ1_33:PIZZA]
+~w~Vuelve al ~y~Joe's Pizza Restaurant~w~ a por más pedidos.
-[PRO3_14:PROT3]
-Recuerda, sonríe a los otros polis.
+[PIZ1_34:PIZZA]
+~w~¡Entrega realizada, dinero cobrado!
-[PRO3_15:PROT3]
-Hola, agente. Bonita placa, bonita placa.
+[PIZ_WON:PIZZA]
+~w~Completada la misión eventual de repartidor de pizzas, ¡bien hecho! ¡Ha aumentado tu salud máxima!
-[PRO3_16:PROT3]
-Muy desenvuelto, Lance.
+[PIZ_WO1:PIZZA]
+~w~Joe's Pizza Restaurant ahora está bajo tu 'protección'. No dejes de recoger los pagos regularmente.
-[PRO3_17:PROT3]
-De acuerdo, los temporizadores están colocados, 5 segundos.
+[PIZ1_01:PIZZA]
+~w~Lleva estas pizzas a los ~b~clientes~w~ tan rápido como puedas.
-[PRO3_18:PROT3]
-¿5 segundos? ¡Tenemos que salir de aquí pitando!
+[PIZ1_05:PIZZA]
+~w~Para entregarlas, lánzaselas en marcha a sus dueños.
-[PRO3_19:PROT3]
-Ahora que los hemos enfadado de verdad.
+{=================================== MISSION TABLE TAXI ===================================}
-[PRO3_20:PROT3]
-~g~ Haz que dos polis te sigan hasta el garaje.
+[TAXI1:TAXI]
+~w~Busca un ~b~cliente~w~.
-[PRO3_21:PROT3]
-~g~Consigue un nivel de se busca suficiente para que los polis te sigan hasta el garaje.
+[TAXI1A:TAXI]
+~w~Por aquí no hay clientes. ¡Sigue buscando!
-[PRO3_22:PROT3]
-~g~¡La puerta del garaje está bloqueada! El acceso tiene que estar despejado para que se pueda cerrar.
+[TAXI2:TAXI]
+~r~¡Se te acabó el tiempo!
-[PRO3_23:PROT3]
-~g~Camina hacia el marcador para colocar la bomba.
+[TAXI3:TAXI]
+~w~¡El pasajero ha huido aterrorizado!
-[PRO3_24:PROT3]
-~g~¡Aléjate del Café!
+[TAXI4:TAXI]
+~w~Viaje completado: ~1~ $
-[PRO_AS1:PROT3]
-ANILLO DE PROTECCIÓN COMPLETADO
+[TAXI4A:TAXI]
+~w~Viaje completado: ~1~ $ + bonif. por ~1~ SEGUIDOS: ~1~ $
-[PRO_AS2:PROT3]
-~g~La finca de Vercetti generará ahora unos ingresos máximos de hasta ~1~ $. Asegúrate de recaudarlo regularmente.
+[TAXI5:TAXI]
+~w~BONIF. VELOCIDAD: ~1~ $
-{=================================== MISSION TABLE RACES ===================================}
+[TAXI5A:TAXI]
+~w~BONIF. VELOCIDAD: ~1~ $ + bonif. por ~1~ SEGUIDOS: ~1~ $
-[RACES_2:RACES]
-~g~¡Necesitas un vehículo para correr, esto no es una carrera a pie!
+[TAXI7:TAXI]
+~w~El coche está dañado, llévalo a reparar.
-[RACES_3:RACES]
-3... 2... 1... ¡ADELANTE! ¡ADELANTE! ¡ADELANTE!
+[TAXI8:TAXI]
+~r~Misión de taxista cancelada.
-[RACES_8:RACES]
-~r~¡No has ganado la carrera!
+[TAXI9:TAXI]
+~r~¡El taxi ha quedado destrozado!
-[RACES00:RACES]
-Carrera ~1~:
+[FARES:TAXI]
+Viajes
-[RACES01:RACES]
-Velocidad terminal
+[TIP:TAXI]
+Propinas
-[RACES02:RACES]
-Ocean Drive
+[FARE9:TAXI]
+~w~Destino: ~y~los muelles de Portland~w~.
-[RACES03:RACES]
-Carrera por el borde
+[FARE20:TAXI]
+~w~Destino: ~y~el parque~w~ de Belleville.
-[RACES04:RACES]
-Capital Cruise
+[FARE22:TAXI]
+~w~Destino: ~y~presa de Cochrane~w~.
-[RACES05:RACES]
-¡Tour!
+[FARE2:TAXI]
+~w~Destino: ~y~Head Radio~w~, en Harwood.
-[RACES06:RACES]
-Aguante en V.C.
+[FARE3:TAXI]
+~w~Destino: ~y~el puerto del ferry~w~ de Harwood.
-[RACES07:RACES]
-Precio de entrada: ~1~ $
+[FARE4:TAXI]
+~w~Destino: ~y~el hospital~w~ de Portland View.
-[RACES08:RACES]
-Mejor tiempo: ~1~:~1~
+[FARE7:TAXI]
+~w~Destino: ~y~las obras~w~ de Hepburn Heights.
-[RACES09:RACES]
-Mejor resultado: 1
+[FARE8:TAXI]
+~w~Destino: ~y~Cipriani Restaurant~w~, en Saint Mark's.
-[RACES10:RACES]
-Mejor resultado: 2
+[FARE10:TAXI]
+~w~Destino: ~y~Punk Noodles~w~, en Chinatown.
-[RACES11:RACES]
-Mejor resultado: 3
+[FARE12:TAXI]
+~w~Destino: ~y~el puerto del ferry~w~ de Rockford.
-[RACES12:RACES]
-Mejor resultado: 4
+[FARE13:TAXI]
+~w~Destino: ~y~la iglesia~w~ de Bedford Point.
-[RACES13:RACES]
-Longitud de pista: ~1~.~1~ km
+[FARE14:TAXI]
+~w~Destino: ~y~oficinas del Liberty Tree~w~, en Bedford Point.
-[RACES15:RACES]
-Mejor tiempo: NA
+[FARE15:TAXI]
+~w~Destino: ~y~Liberty University~w~, en Liberty Campus.
-[RACES16:RACES]
-Mejor resultado: NA
+[FARE16:TAXI]
+~w~Destino: ~y~Hogs 'n' Cogs~w~, en la zona del parque de Belleville.
-[RACES19:RACES]
-No puedes permitirte entrar en esta carrera.
+[FARE17:TAXI]
+~w~Destino: ~y~los juzgados~w~, en la zona del parque de Belleville.
-[RACES22:RACES]
-Mejor tiempo: ~1~:0~1~
+[FARE18:TAXI]
+~w~Destino: el ~y~Mr. Benz~w~ de Bedford Point.
-[RACES23:RACES]
-Longitud de la pista: ~1~.~1~ millas
+[FARE19:TAXI]
+~w~Destino: ~y~Joe's Pizza~w~, en Bedford Point.
-[RACES_1:RACES]
-~g~Consigue un vehículo rápido y ve a la parrilla de salida.
+[FARE21:TAXI]
+~w~Destino: ~y~la terminal A~w~ del aeropuerto internacional Francis.
-[RACEHLP:RACES]
-~w~Pulsa ~h~~k~~PED_SPRINT~~w~ para empezar la carrera seleccionada. Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para salir.
+[FARE23:TAXI]
+~w~Destino: ~y~la mansión~w~ de Cedar Grove.
-{=================================== MISSION TABLE RCHELI1 ===================================}
+[FARE24:TAXI]
+~w~Destino: ~y~el hospital~w~ de Pike Creek.
-[WRECKED:RCHELI1]
-~r~¡El vehículo está destrozado!
+[FARE25:TAXI]
+~w~Destino: ~y~el parque~w~ de Shoreside Vale.
-[RCH1_4:RCHELI1]
-Puntos de control:
+[FARE26:TAXI]
+~w~Destino: ~y~North West Towers~w~, en Wichita Gardens.
-[RCH1_7:RCHELI1]
-~g~Hay 20 puntos de control en total.
+[FARE27:TAXI]
+~w~Destino: ~y~las cocheras~w~, en Trenton.
-[RCH1_12:RCHELI1]
-~g~¡El helicóptero RC está saliendo fuera de su alcance de control!
+[FARE28:TAXI]
+~w~Destino: ~y~el Mr. Benz~w~ de Chinatown.
-[RCH1_13:RCHELI1]
-~r~¡El helicóptero RC se ha salido de su radio de alcance!
+[FARE29:TAXI]
+~w~Destino: ~y~el Mr. Benz~w~ de Pike Creek.
-[RCH1_8:RCHELI1] { reVC update }
-~g~Si deseas abandonar esta misión, pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~ para detonar tu helicóptero RC.
+[FARE30:TAXI]
+~w~Destino: ~y~la terminal C~w~ del aeropuerto internacional Francis.
-{=================================== MISSION TABLE RCPLNE1 ===================================}
+[FARE31:TAXI]
+~w~Destino: ~y~AM Petroleum~w~, en Pike Creek.
-[RCPL1_4:RCPLNE1]
-~g~Compite en una CARRERA DE PUNTOS DE CONTROL contra otros tres aviones RC.
+[FARE32:TAXI]
+~w~Destino: ~y~Liberty Pharmaceuticals~w~, en Pike Creek.
-[RCPL1_5:RCPLNE1]
-~g~Vuela a través de los puntos de control dispersados por Vice City.
+[FARE11:TAXI]
+~w~Destino: ~y~armería Phil Cassidy's Fully Cocked~w~, en Bedford Point.
-[RCPL1_6:RCPLNE1] { reVC update }
-~g~Si deseas abandonar esta misión, pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~ para detonar tu avión RC.
+[FARE1A:TAXI]
+~w~Destino: ~y~Paulie's Revue Bar~w~, en el Red Light District.
-[RCPL1_8:RCPLNE1]
-~g~¡Tu avión RC está saliendo fuera del alcance!
+[FARE1C:TAXI]
+~w~Destino: ~y~Sex Club Seven~w~, en el Red Light District.
-[RCPL1_9:RCPLNE1]
-~r~¡Tu avión RC se salió del alcance!
+[FARE5:TAXI]
+~w~Destino: ~y~Ammu-Nation~w~, en el Red Light District.
-{=================================== MISSION TABLE RCRACE1 ===================================}
+[FARE6:TAXI]
+~w~Destino: ~y~Capital Autos~w~, en Saint Mark's.
-[RCRC1_1:RCRACE1]
-~g~Compite en una CARRERA DE PUNTOS DE CONTROL contra 3 Barón RC durante dos vueltas.
+{=================================== MISSION TABLE AMBU ===================================}
-[RCRC1_3:RCRACE1]
-~g~¡Vuelta final!
+[A_FAIL2:AMBU]
+~r~¡Has llegado tarde y el paciente no lo cuenta!
-[RCR1_4:RCRACE1]
-vueltas restantes:
+[A_FAIL3:AMBU]
+~r~¡El paciente ha muerto!
-[RCR1_1:RCRACE1]
-~g~Compite en una carrera de puntos de control contra otros tres coches RC.
+[ATUTOR4:AMBU]
+~w~Los golpes reducen las posibilidades de supervivencia del paciente.
-[RCR1_2:RCRACE1]
-~g~¡Consigue ser el primero en completar las dos vueltas del circuito para ganar!
+[A_TIME:AMBU]
+~w~¡Recogido! +~1~ s.
-[RCR1_6:RCRACE1]
-~g~¡Tu coche RC se está saliendo fuera del alcance!
+[A_TIME2:AMBU]
+~w~¡Bonificación! +~1~ s.
-[RCR1_7:RCRACE1]
-~r~¡Tu coche RC se salió del alcance!
+[AREWARD:AMBU]
+~w~¡Nivel ~1~ completado! Recompensa: ~1~ $
-{=================================== MISSION TABLE ROCK1 ===================================}
+[A_RANGE:AMBU]
+~r~La radio de la ambulancia no recibe nada, ¡acércate a un hospital!
-[RBM1_A:ROCK1]
-~n~
+[ATUTOR5:AMBU]
+~w~Recoge a un ~b~paciente~w~.
-[RBM1_B:ROCK1]
-¡Brillante, jodidamente brillante!
+[ATUTOR6:AMBU]
+~w~¡Llévalo al ~y~hospital~w~!
-[RBM1_D:ROCK1]
-¿Eh, habías conocido antes a los Love Fist?
+[ATUTOR7:AMBU]
+~w~Recoge a más ~b~pacientes~w~ o lleva a éste al ~y~hospital~w~.
-[RBM1_E:ROCK1]
-No, pero siempre me encantó vuestra música.
+[A_FULL:AMBU]
+~w~¡La ambulancia está llena! Deja a los pacientes en el ~y~hospital~w~.
-[RBM1_F:ROCK1]
-Déjame presentarte a la banda.
+[A_RANG2:AMBU]
+~r~La radio de la ambulancia no funciona en el metro.
-[RBM1_G:ROCK1]
-Estos son P, Percy, Dick, y Willy está en el kaze, y ese de antes de la cabina era Jezz,
+{=================================== MISSION TABLE TV ===================================}
-[RBM1_H:ROCK1]
-y tíos, quiero que conozcáis a un buen amigo mío.
+[TV_01:TV]
+Slash TV
-[RBM1_I:ROCK1]
-Este es Tommy. Nos conocemos desde hace mucho.
+[TV_02:TV]
+~w~Mata a todos los locos psicópatas... ¡No dejarán de aparecer!
-[RBM1_J:ROCK1]
-De acuerdo, colega.
+[TV_03:TV]
+~w~Cada nivel se pone más difícil y hay más enemigos... ¡y también más premios!
-[RBM1_K:ROCK1]
-Y, eh, ¿cuál era tu nombre?
+[TV_04:TV]
+~w~NIVEL ~1~
-[RBM1_L:ROCK1]
-Déjalo, Jezz, lo recuerdas,
+[TV_10:TV]
+~w~¡Has ganado un premio extra!
-[RBM1_M:ROCK1]
-no juegues a eso conmigo, colega,
+[TV_09:TV]
+Premio en metálico total ganado en este juego: ¡~1~ $!
-[RBM1_N:ROCK1]
-¡soy demasiado astuto para eso, encanto!
+[TV_05:TV]
+~w~¡NIVEL COMPLETADO!
-[RBM1_O:ROCK1]
-Verás, Tom, la cosa es que los chicos necesitan algo de ayuda.
+[TV_06:TV]
+~w~¡Ganas ~1~ $ de premio!
-[RBM1_P:ROCK1]
-No tienen muchos contactos en la zona, gente a la que preguntarle ''¿vienes mucho por aquí?'' y todo eso.
+[TV_07:TV]
+~w~PREPARADOS...
-[RBM1_Q:ROCK1]
-¡Necesitamos unos tiritos, colega!
+[TV_08:TV]
+~w~¡YA!
-[RBM1_R:ROCK1]
-¿Vamos a pillar la vieja furia Love Fist, sabes?
+{=================================== MISSION TABLE NOODLE ===================================}
-[RBM1_S:ROCK1]
-Bueno, esto es Vice City, tío. ¿Cuál es el problema?
+[NDL1_02:NOODLE]
+~w~Oh-oh. ¡Se acabaron los fideos! Vuelve a ~y~Punk Noodles~w~ y consigue más.
-[RBM1_U:ROCK1]
-¡Love juice, tío!
+[NDL1_06:NOODLE]
+~w~Pulsa~h~ ~k~ ~TGSUB~ ~w~cuando estés en la moto para cancelar la misión.
-[RBM1_V:ROCK1]
-¿Love juice?
+[NDL1_07:NOODLE]
+~r~¡Has matado al cliente! ¡Estás despedido!
-[RBM1_W:ROCK1]
-Sí, dos partes de boomshine, una parte de farlopa, cinco caramelos con picapica y un litro de gasolina.
+[NDL1_08:NOODLE]
+~r~Se te ha acabado el tiempo. ¡Estás despedido!
-[RBM1_X:ROCK1]
-¿Puedes ayudarnos, colega?
+[NDL1_09:NOODLE]
+~r~¡Has estrellado la motocicleta! ¡Estás despedido!
-[RBM1_Y:ROCK1]
-De verdad significaría mucho para los chicos.
+[NDL1_11:NOODLE]
+~w~Vuelve a la ~b~moto~w~.
-[RBM1_Z:ROCK1]
-Puedes hacer eso por los muchachos, ¿verdad?
+[NDL1_12:NOODLE]
+Fideos
-[RBM1_7:ROCK1]
-~r~¡No conseguiste a tiempo el ''love juice''!
+[NDL1_13:NOODLE]
+~w~¡Fideos! ¡'Peazo' de fideos pala lepaltil con salelo!
-[RBM1_8:ROCK1]
-~r~¡Mercedes está muerta!
+[NDL1_14:NOODLE]
+~w~Clientes no cansa de mis fideos.
-[RBM1_10:ROCK1]
-~r~¡Idiota! ¡Has destruido el material!
+[NDL1_15:NOODLE]
+~w~¡Aquí tiene fideos pala dal y tomal!
-[RBM1_13:ROCK1]
-~g~Lleva el ''love juice'' y a Mercedes a la banda antes de que sean requeridos en el escenario.
+[NDL1_16:NOODLE]
+~w~¡Tú intental que estos fideos llega a tiempo!
-[RBM1_15:ROCK1]
-~r~¡Has perdido al camello, nuestra pasta y la nieve!
+[NDL1_17:NOODLE]
+~w~¡Eh, basula! ¡Estos fideos cole plisa!
-[RBM1_17:ROCK1]
-~g~¡Mata al camello y consigue los ingredientes!
+[NDL1_18:NOODLE]
+~w~Tú entlegal estos fideos lapidito.
-[MOB_07A:ROCK1]
-Eh colega, a los chicos les vendría bien algo de compañía, si entiendes lo que quiero decir...
+[NDL1_19:NOODLE]
+~w~Los clientes quiele fideos calientes, no flíos.
-[MOB_07B:ROCK1]
-Conozco a la chica apropiada.
+[NDL1_20:NOODLE]
+~w~¿Tú no aguanta el calol del fogón? 'Mejol tú bajal llama', Confucio decil.
-[ROK1_5:ROCK1]
-¡Hola, Mercedes!
+[NDL1_21:NOODLE]
+~w~Tú lepaltil estos fideos, ¿de acueldo?
-[ROK1_6:ROCK1]
-Hola, Tommy. ¿Cómo estás?
+[NDL1_22:NOODLE]
+~w~Más fideos pala lepaltil con salelo.
-[ROK1_7:ROCK1]
-Bien. Escucha, ¿te apetece acostarte con los Love Fist?
+[NDL1_23:NOODLE]
+~w~¡Fideos, fideos, fideos! ¡Tú lepalte bien calentitos!
-[ROK1_8:ROCK1]
-De acuerdo, pero sólo como un favor que espero que me sea devuelto...
+[NDL1_24:NOODLE]
+~w~¡Habel gente espelando! ¡Lo que hay que vel...!
-[RBM1_14:ROCK1]
-~g~¡Necesitas un coche o una moto!
+[NDL1_25:NOODLE]
+~w~¿Tú aún no habel entlegado este pedido?
-[RBM1_1:ROCK1]
-~g~Ve y recoge a Mercedes en su apartamento.
+[NDL1_26:NOODLE]
+~w~¿A qué está espelando? ¿Al Año Nuevo chino?
-[RBM1_12:ROCK1]
-~g~Ve y reúnete con el camello para conseguir los ingredientes del ''love juice''.
+[NDL1_27:NOODLE]
+~w~Estos fideos estal enfliando. ¡Tú dal plisa!
-[ROK1_2:ROCK1]
-YA NO ES NECESARIO
+[NDL1_28:NOODLE]
+~w~Yo quiele sel astlonauta, pelo mi padle solo dejal esto. ¡Hay que jodelse!
-[ROK1_3:ROCK1]
-YA NO ES NECESARIO
+[NDL1_29:NOODLE]
+~w~¿Tú quiele conselval tlabajo? ¡Tú movel culo y lepaltil esto!
-[MERC_39:ROCK1]
-Hasta luego grandullón.
+[NDL1_30:NOODLE]
+~w~Fideos flitos clujientitos... Yo no entiende, pelo a mí me encanta.
-[RBM1_C:ROCK1]
-¡Eh, Tommy! Me alegro que pudieras venir.
+[NDL1_31:NOODLE]
+~w~Cleo que tú vale mejol pala lepaltil pizzas.
-[RBM1_9:ROCK1]
-~g~¡Ve y reúnete con el camello de los Love Fist para conseguir algo de ''love juice''!
+[NDL1_3A:NOODLE]
+~w~Ellos siemple quiele más. Así que tú vuelve cuando telminal.
-[ROK1_1A:ROCK1]
-¿Buscas algo especial? ¡Yo tengo lo que necesitas!
+[NDL1_32:NOODLE]
+~r~¿Qué ploblema? ¿No gusta los fideos?
-[ROK1_9:ROCK1]
-¡Gracias por el dinero, mamón!
+[NDL1_33:NOODLE]
+~w~Vuelve a ~y~Punk Noodles~w~ a por más pedidos.
-[RBM1_T:ROCK1]
-Necesitamos ''love juice'', tío, ¿sabes?
+[NDL1_34:NOODLE]
+~w~¡Fideos entregados, dinero cobrado!
-{=================================== MISSION TABLE ROCK2 ===================================}
+[NDL_WON:NOODLE]
+~w~Completada la misión eventual de repartidor de fideos, ¡bien hecho! ¡Ha aumentado tu salud máxima!
-[RBM2_A:ROCK2]
-Tommy, tío. ¡Me alegro de verte!
+[NDL_WO1:NOODLE]
+~w~Punk Noodles ahora está bajo tu 'protección'. No dejes de recoger los pagos regularmente.
-[RBM2_B:ROCK2]
-¿Qué sucede?
+[NDL1_01:NOODLE]
+~w~Tú entlega a ~b~clientes~w~ estos fideos lapidito.
-[RBM2_C:ROCK2]
-Malas vibraciones, Tommy...
+[NDL1_05:NOODLE]
+~w~Para entregarlos, lánzaselos en marcha a sus dueños.
-[RBM2_E:ROCK2]
-Hay un tipo, apenas le conocemos, pero él nos conoce a nosotros.
+{=================================== MISSION TABLE MPSURV ===================================}
-[RBM2_F:ROCK2]
-Como este tipo, que lo sabe todo de nosotros.
+[SAL01:MPSURV]
+~w~María, me voy al hospital a arreglarme lo que tú ya sabes.
-[RBM2_G:ROCK2]
-Sabe que a Willy le gusta ponerse ropa interior de mujeres.
+[SAL02:MPSURV]
+~w~Cuando salga, el cochino semental galopará como antes...
-[RBM2_H:ROCK2]
-¡O que a Percy le gusta Duran Duran!
+[SAL04:MPSURV]
+~w~P.S. ¡Prepárate para un buen rodeo cuando salga, nena!
-[RBM2_K:ROCK2]
-Sí, bien, tu cohete del amor. Pero escucha, este tipo...
+[SAL05:MPSURV]
+~w~P.S.S. ¡No dejes esta nota a la vista de todos!
-[RBM2_L:ROCK2]
-El tipo, quiere ver a los Love Fist muertos.
+[SAL03:MPSURV]
+~w~No te metas en líos, porque hay miembros de la Familia que 'se mueren' por hacerse con el poder.
-[RBM2_M:ROCK2]
-Muertos, Tommy.
+[SAL03A:MPSURV]
+~w~¡Literalmente!
-[RBM2_N:ROCK2]
-El final Love Fist. Ya sabes lo que dicen, los buenos mueren jóvenes.
+{=================================== MISSION TABLE JDREF ===================================}
-[RBM2_O:ROCK2]
-¡Pero Tommy, tienes que salvar a los Love Fist!
+[JDT1_BA:JDREF]
+~w~¡No tengo trabajo para ningún Leone!
-[RBM2_P:ROCK2]
-Tenemos que firmar en dos horas y creo...
+[JDT1_BB:JDREF]
+~w~Eh, Toni, vuelve cuando seas menos cantoso.
-[RBM2_Q:ROCK2]
-Los chicos creen que el sospechoso va a intentar hacer algún recibimiento infame.
+[CHNGOUT:JDREF]
+~w~Quítate el traje de Leone. De lo contrario, no pueden verte hablando con J.D.
-[RBM2_1:ROCK2]
-~g~Conduce la limusina a la firma de autógrafos e intenta encontrar al psicópata.
+{=================================== MISSION TABLE CRED01 ===================================}
-[RBM2_2:ROCK2]
-~r~¡Destrozaste el coche de la banda!
+[CR01_01:CRED01]
+~n~ ~n~ ~n~ ~n~CREDITS
-[RBM2_3:ROCK2]
-~g~¡Ve a la firma de autógrafos!
+[CR01_02:CRED01]
+~n~ ~n~ ~n~ ~n~ROCKSTAR NORTH
-[RBM2_4:ROCK2]
-~g~¡Atrapa al psicópata! ¡No le dejes escapar!
+[CR01_03:CRED01]
+~n~ ~n~ ~n~ ~n~Producer ~n~Leslie Benzies
-[RBM2_5:ROCK2]
-~r~¡Lo perdiste, idiota!
+[CR01_04:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Aaron Garbut
-[RBM2_7:ROCK2]
-~r~¡Los fans han sido atacados, el psicópata no aparecerá!
+[CR01_05:CRED01]
+~n~ ~n~ ~n~ ~n~Technical Direction ~n~Obbe Vermeij, Adam Fowler
-[RBM2_8:ROCK2]
-~r~¡Los guardas de seguridad han sido atacados, el psicópata no aparecerá!
+[CR01_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~Written By ~n~Dan Houser, James Worrall ~n~ & David Bland
-[PSYCH_1:ROCK2]
-¡Me encantaría ver arder a los Love Fist!
+[CR01_07:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Alexander Roger, Alexander Illes, ~n~Andrzej Madajczyk, Barane Chan, ~n~Derek Payne, Derek Ward,
-[PSYCH_2:ROCK2]
-¡Los Love Fist arruinaron mi vida!
+[CR01_08:CRED01]
+~n~ ~n~Gordon Yeoman, Graeme Williamson, ~n~Greg Smith, James Broad, ~n~John Gurney, John Whyte,
-[RBM2_I:ROCK2]
-Cállate, idiota. Sólo porque Jezz se folla ovejas.
+[CR01_09:CRED01]
+~n~ ~n~Keith McLeman, Mark Nicholson, ~n~Shaun McKillop
-[RBM2_R:ROCK2]
-¡Eh, cierra la boca!
+[CR01_10:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Programmer ~n~Matthew Smith
-[RBM2_D:ROCK2]
-Sí, no estoy de broma, es un tema muy gordo tío, muy gordo, ¿sabes?
+[CR01_11:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Design and Mastering ~n~Allan Walker
-[RBM2_J:ROCK2]
-Es lo que atrae a mi cohete del amor, ¿entiendes?
+[CR01_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Cut Scene Animator ~n~Mondo Ghulam
-{=================================== MISSION TABLE ROCK3 ===================================}
+[CR01_13:CRED01]
+~n~ ~n~ ~n~ ~n~Cut Scene Animator ~n~Dermot Bailie
-[RBM3_A:ROCK3]
-¡Tommy! ¡Tommy! ¡Tommy, tío, ese psicópata ha vuelto!
+[CR01_14:CRED01]
+~n~ ~n~ ~n~ ~n~Character Animator ~n~Felipe Busquets
-[RBM3_B:ROCK3]
-¿Qué está pasando?
+[CR01_15:CRED01]
+~n~ ~n~ ~n~ ~n~In-Game Animation ~n~Gus Braid, Terry Kenny
-[RBM3_C:ROCK3]
-¡Ese psicópata no dejará en paz a los Love Fist!
+[CR01_16:CRED01]
+~n~ ~n~ ~n~ ~n~Characters Artist ~n~Ian McQue
-[RBM3_D:ROCK3]
-No le mataste, tío. Y ahora ha vuelto.
+[CR01_17:CRED01]
+~n~ ~n~ ~n~ ~n~Vehicle Artist ~n~Joylon Orme
-[RBM3_E:ROCK3]
-Sí, sí, sí, y la cuestión es...
+[CR01_18:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Art ~n~Rick Stirling, Alisdair Wood
-[RBM3_F:ROCK3]
-La cuestión es que necesitamos alguien en quien poder confiar para que conduzca la limo,
+[CR01_19:CRED01]
+~n~ ~n~ ~n~ ~n~Music Producer ~n~Craig Conner
-[RBM3_G:ROCK3]
-¡porque ese chiflado sigue con las amenazas!
+[CR01_20:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Design and Dialogue Editor ~n~Will Morton
-[RBM3_I:ROCK3]
-Aquí estamos todos acojonados, tío.
+[CR01_21:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Dialogue Editor ~n~Jon McCavish
-[RBM3_J:ROCK3]
-De acuerdo tíos, calmaos, yo me encargaré de esto.
+[CR01_22:CRED01]
+~n~ ~n~ ~n~ ~n~Development Support ~n~Milly Cottam
-[RBM3_K:ROCK3]
-Normalmente, no me ocuparía de ir por ahí haciendo de chófer para una panda de bisexuales escoceses bebidos,
+[CR01_23:CRED01]
+~n~ ~n~ ~n~ ~n~Graphic Designers ~n~Stuart Petri, Steve Walsh
-[RBM3_L:ROCK3]
-pero, en vuestro caso, haré una excepción.
+[CR01_24:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~William Mills
-[RBM3_4:ROCK3]
-~r~¡Has matado a los Love Fist!
+[CR01_25:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Chris Rothwell, Andy Duthie, ~n~Chris McMahon, Neil Ferguson
-[RBM3_6:ROCK3]
-DETONACIÓN:
+[CR01_26:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Craig Arbuthnott
-[RBM3_1:ROCK3]
-~g~Conduce a los Love Fist al local del concierto.
+[CR01_27:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Test ~n~Neil Corbett
-[RBM3_2:ROCK3]
-Si intentas abandonar el coche mientras la bomba está armada explotará...
+[CR01_28:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Test ~n~David Murdoch, Neil Meikle, ~n~Alex Bazlinton, Brenda Carey
-[RBM3_3:ROCK3]
-Si la barra de detonación se llena completamente la bomba explotará.
+[CR01_29:CRED01]
+~n~ ~n~ ~n~ ~n~Build Engineer / Lead Test ~n~Neil Walker
-[RBM3_8:ROCK3]
-Cuanto más rápido conduzcas más despacio se moverá la barra de detonación.
+[CR01_30:CRED01]
+~n~ ~n~ ~n~ ~n~Audio Test ~n~George Williamson
-[RBM3_7:ROCK3]
-~g~¡BOMBA DESACTIVADA!
+[CR01_31:CRED01]
+~n~ ~n~ ~n~ ~n~Test ~n~Brian Kelly, Lindsay Robertson, ~n~Sundram Soosay, Eugene Kuczerepa, ~n~Christopher Soosay, Ben Abbott,
-[ROK3_62:ROCK3]
-y pensamos que podríamos enseñarte nuestro Templo del Rock.
+[CR01_32:CRED01]
+~n~ ~n~Oliver Elliott, Louis Dinan, ~n~Bobby Wright, Thomas Philips, ~n~Nick Rees, Ivor Williams
-[ROK3_63:ROCK3]
-¡Para que te vayas acostumbrando a la furia de Love Fist!
+[CR01_33:CRED01]
+~n~ ~n~ ~n~ ~n~Test Tools Programming ~n~James Whitcroft, Alex Carter
-[ROK3_64:ROCK3]
-Escúchate a ti mismo, tío. Es papel maché y cinta aislante.
+[CR01_34:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Lorraine Roy
-[ROK3_65:ROCK3]
-Eh, para los chavales, ¡esto es un templo y nosotros somos los sacerdotes!
+[CR01_35:CRED01]
+~n~ ~n~ ~n~ ~n~IT Support ~n~Christine Chalmers, Dave Bruce
-[ROK3_66:ROCK3]
-Si, vale, si a los chavales les gustan los sacerdotes colgados y sin oído musical,
+[CR01_36:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Andrew Semple
-[ROK3_67:ROCK3]
-¿quién soy yo para discutirlo?
+[CR01_37:CRED01]
+~n~ ~n~ ~n~ ~n~Office Administration ~n~Kim Gurney
-[ROK3_68:ROCK3]
-Vaya por Dios, se está comiendo la cinta otra vez.
+[CR01_38:CRED01]
+~n~ ~n~ ~n~ ~n~Administration Support ~n~Charlene Maguire, Kim Wilson
-[ROK3_69:ROCK3]
-Con este ritmo tendremos que tocar en directo.
+[CR02_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LEEDS
-[ROK3_70:ROCK3]
-Oohh ¡mierda! Mis tripas...
+[CR02_02:CRED01]
+~n~ ~n~ ~n~ ~n~Studio Director ~n~Gordon Hall
-[ROK3_73:ROCK3]
-Jezz está escuchando la cinta,
+[CR02_03:CRED01]
+~n~ ~n~ ~n~ ~n~Head of Development ~n~David Box
-[RBM3_9:ROCK3]
-Si te paran o reduces la velocidad la barra de detonación aumentará.
+[CR02_04:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Programming ~n~Andrew Greensmith, Matthew Shepcar ~n~ ~n~ ~n~ ~n~Console Programming ~n~Nigel Conroy, Richard Frankish, ~n~Andrew Greensmith, Robin Mangham, ~n~Damian McKenna, Finlay Munro, ~n~Stuart Roskell, Matthew Shepcar
-[RBM3_H:ROCK3]
-¡Me estoy cagando de miedo tío. Necesito a mi, mamá!
+[CR02_05:CRED01]
+~n~ ~n~ ~n~ ~n~Programming ~n~Jon Bellamy, Ross Childs, ~n~Nigel Conroy, Neil Dodwell, ~n~Alastair Dukes, David Huebner,
-[ROK3_71:ROCK3]
-Tenemos que seguir con esto. Gracias de nuevo Tommy, ya sabes lo que quiero decir, apúntate una, ¡adiós!
+[CR02_06:CRED01]
+~n~ ~n~Robin Mangham, Jason McGann, ~n~Warren Merrifield, Stephen McGreal
-[ROK3_1:ROCK3]
-Al fin tío, hora de un merecido trago. La sala de conciertos está solo a unos cientos de metros calle abajo.
+[CR02_07:CRED01]
+~n~ ~n~ ~n~ ~n~Sound Programming ~n~Finlay Munro, Charles Waddington
-[ROK3_2:ROCK3]
-Mejor ponme uno doble. Eh Tommy, cambia los temas, tío.
+[CR02_08:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Ian Bowden
-[ROK3_3:ROCK3]
-Me siento perdido si la cabeza no me estalla. Ah, mira, ¿Qué es esto? Eh Tommy, pon esta cinta.
+[CR02_09:CRED01]
+~n~ ~n~ ~n~ ~n~Art Department Director ~n~Chris Smart
-[ROK3_4:ROCK3]
-Love Fist. Vuestro tiempo contaminando las ondas se ha terminado. Os di la oportunidad de ser amigos.
+[CR02_10:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Character Artist ~n~Paul Smith
-[ROK3_5:ROCK3]
-Ahora os doy la oportunidad de morir. ¡Intentad aminorar la marcha y vuestra limusina explotará junto con vuestros GRANDES Y PELUDOS CULOS!
+[CR02_11:CRED01]
+~n~ ~n~ ~n~ ~n~Character Artist ~n~Chris Allison
-[ROK3_6:ROCK3]
-Tommy amigo, ¡tienes que salvar a la banda! Yo me estoy cansando de esto. ¡Mantén pisado el acelerador!
+[CR02_12:CRED01]
+~n~ ~n~ ~n~ ~n~Lead City Artist ~n~Dan Roberts
-[ROK3_7:ROCK3]
-¡Tenemos que encontrar la bomba! ¿Podremos conducir por ahí todo el día? Sí, tenemos suficiente bebida..
+[CR02_13:CRED01]
+~n~ ~n~ ~n~ ~n~City Artists ~n~Paul McKee, James McHale, ~n~Siu Lee
-[ROK3_8:ROCK3]
-¿La bomba no estará en el motor? Tendremos que parar y cogerla. ¡Vamos a morir todos! ¡Me voy a emborrachar!
+[CR02_14:CRED01]
+~n~ ~n~ ~n~ ~n~Cutscene Interiors ~n~Izzy Stewart
-[ROK3_9:ROCK3]
-Eh, ¡amigo, aquí hay cola! ¡La respuesta no está en el mueble bar! ¡Sal de mi camino!
+[CR02_15:CRED01]
+~n~ ~n~ ~n~ ~n~Concept Artist ~n~John Wigley
-[ROK3_10:ROCK3]
-Eh, ¡a la botella de vodka le salen unos cables! ¡Eso no es vodka!, ¡Eso es una BOMBA!
+[CR02_16:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Character Animation ~n~Alan Bowker
-[ROK3_11:ROCK3]
-¡Y está preparada para explotar!
+[CR02_17:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Artists ~n~Andy Walker, Jason Gee, ~n~Chris Edwards, Lee Clark
-[ROK3_12:ROCK3]
-Siempre me dijeron que la bebida acabaría conmigo. He visto esto en la tele. Tienes que tirar de uno de los cables. ¿De qué cable? Pues no sé tío.
+[CR02_18:CRED01]
+~n~ ~n~ ~n~ ~n~Design Director ~n~David Bland
-[ROK3_13:ROCK3]
-No tengo ni idea. Willy, di algo. Voy a tocar el bajo en el otro mundo.
+[CR02_19:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Level Design ~n~John Li
-[ROK3_14:ROCK3]
-Tommy tío, sigue conduciendo deprisa, amigo. Que alguien haga algo. Si, ¡qué listo!
+[CR02_20:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Level Design ~n~Tony Gowland, Martyn Bramall
-[ROK3_15:ROCK3]
-''Que alguien haga algo'', qué mierda es esa, he visto a niñas con más valor. Tipo duro, haz tú algo.
+[CR02_21:CRED01]
+~n~ ~n~ ~n~ ~n~Level Design ~n~Sam Hackett, Stephen Robertson, ~n~Tom Kingsley, Chris Edwards, ~n~Kris Gormley
-[ROK3_16:ROCK3]
-Mira tío, yo toco un instrumento y no tengo ni idea de desactivar bombas. Willy podrías beberte el líquido de la bomba con una pajita.
+[CR02_22:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Designer ~n~Mark McGinley
-[ROK3_17:ROCK3]
-Sí, he oído que eres bueno en ese tipo de cosas. ¡Eh, aquella noche estaba muy colgado, como bien sabes!
+[CR02_23:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Paul Colls
-[ROK3_18:ROCK3]
-¡Anda pásale una pajita a Willy! ¿Una pajita? ¡Este es el autobús de la gira de los Love Fist!
+[CR02_24:CRED01]
+~n~ ~n~ ~n~ ~n~QA ~n~Jody Cobb, ~n~ ~n~Luke Brown, Nick Robey, ~n~Matthew Haven
-[ROK3_19:ROCK3]
-¿De dónde voy a sacar yo una pajita? ¿me entiendes? ¿Qué cable Tommy? El verde. No hay ninguno verde.
+[CR02_25:CRED01]
+~n~ ~n~ ~n~ ~n~Company Secretary ~n~Naomi Martin
-[ROK3_20:ROCK3]
-¿O es que este es verde? ¿Te parece verde alguno de estos cables?
+[CR02_26:CRED01]
+~n~ ~n~ ~n~ ~n~IT Manager ~n~Chris Waring
-[ROK3_21:ROCK3]
-¡Oh no! ¡La muerte está en las cartas! ¡Todo parece verde! Tenía que haberos dejado tirados cuando tuve la oportunidad.
+[CR03_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC
-[ROK3_22:ROCK3]
-Buscador de gloria. Capitalista. He estado tirando de ti durante años. Cállate. Eres un espantajo.
+[CR03_02:CRED01]
+~n~ ~n~ ~n~ ~n~Executive Producer ~n~Sam Houser
-[ROK3_23:ROCK3]
-Una nena grande y chillona. Sí. Cállate y tira del cable. ¿Qué cable? Este...
+[CR03_03:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Creative ~n~Dan Houser
-[ROK3_24:ROCK3]
-¡NO, tío! estamos bien. ¡No hemos saltado por los aires, amigo.
+[CR03_04:CRED01]
+~n~ ~n~ ~n~ ~n~VP of Development ~n~Jamie King
-[ROK3_25:ROCK3]
-Tommy, tío, chachi. Rock and roll, tío. ¿No tenemos que actuar?
+[CR03_05:CRED01]
+~n~ ~n~ ~n~ ~n~Art Director ~n~Alex Horton
-[ROK3_26:ROCK3]
-¿Meter bulla? ¿Abusar de las fans? ¡LOVE FIST!
+[CR03_06:CRED01]
+~n~ ~n~ ~n~ ~n~Chief Technology Officer ~n~Gary J. Foreman
-[ROK3_27:ROCK3]
-¿Has terminado con esa botella?
+[CR03_07:CRED01]
+~n~ ~n~ ~n~ ~n~Associate Producer ~n~Rich Rosado
-{=================================== MISSION TABLE SERG1 ===================================}
+[CR03_08:CRED01]
+~n~ ~n~ ~n~ ~n~Director of Quality Assurance ~n~Jeff Rosa
-[TEX1_A:SERG1]
-Entra y disfruta de los asientos de cuero, hijo.
+[CR03_09:CRED01]
+~n~ ~n~ ~n~ ~n~Senior Lead Analyst ~n~Lance Williams
-[TEX1_B:SERG1]
-Demonios, mi padre solía decir, a caballo regalado no le mires el diente, y por Dios que nunca lo hizo.
+[CR03_10:CRED01]
+~n~ ~n~ ~n~ ~n~Project Lead ~n~Jameel Vega
-[TEX1_C:SERG1]
-¿Te gustaría un trago del viejo Kentucky?
+[CR03_11:CRED01]
+~n~ ~n~ ~n~ ~n~Rockstar Test Team ~n~Ethan Abeles, William Rompf, ~n~Christopher Mansfield, Chris Choi, ~n~Mike Hong, Tamara Carrion,
-[TEX1_D:SERG1]
-No gracias.
+[CR03_12:CRED01]
+~n~ ~n~Rich Huie, Mike Nathan, ~n~Vance Wallace, Marc Rodriguez, ~n~Adam Tetzloff
-[TEX1_E:SERG1]
-Alguien con la mente despejada, me gusta eso.
+[CR03_13:CRED01]
+~n~ ~n~ ~n~ ~n~Business Development Director ~n~Sean Macaluso
-[TEX1_F:SERG1]
-El negocio de la propiedad no se trata solo de papeleo pretencioso.
+[CR03_14:CRED01]
+~n~ ~n~ ~n~ ~n~Soundtrack Supervision ~n~Heinz Henn, Ivan Pavlovich, ~n~Tim Sweeney
-[TEX1_G:SERG1]
-¡Se trata de tierra! ¡Y el derecho a reclamarla! ¿Me sigues, hijo?
+[CR04_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUT SCENES & DIALOGUE
-[TEX1_H:SERG1]
-Sí.
+[CR04_02:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Director ~n~Navid Khonsari
-[TEX1_J:SERG1]
-Y yo creo que eres la clase de tío para persuadirle.
+[CR04_03:CRED01]
+~n~ ~n~ ~n~ ~n~Motion Capture Performed by ~n~Danny Mastrogiorgio, Jeffrey C. Hawkins, ~n~Bruce MacVittie, David Zayas, ~n~Peter Appel, Hannah Moon, ~n~Alyssa Truppelli, Joe Lotruglio
-[TEX1_K:SERG1]
-La persuasión es mi fuerte.
+[CR04_04:CRED01]
+~n~ ~n~ ~n~ ~n~Voices Performed by ~n~Salvatore Leone - Frank Vincent ~n~Toni Cipriani - Danny Mastrogiorgio ~n~Donald Love - Will Janowitz
-[TEX1_L:SERG1]
-Sí, estará en el club de campo, en el campo de golf.
+[CR04_05:CRED01]
+~n~ ~n~ Vincenzo Cilli - Joe Lotruglio ~n~Maria Latore - Fiona Gallagher ~n~JD O'Toole - Greg Wilson
-[TEX1_M:SERG1]
-Allí no permiten armas, así que sus guardaespaldas no llevarán protección.
+[CR04_06:CRED01]
+~n~ ~n~Leon McAffrey - Ron Orbach ~n~Ray Machowski - Peter Appel ~n~Toshiko Kasen - Hannah Moon
-[TEX1_N:SERG1]
-Ve y dale una paliza inolvidable.
+[CR04_07:CRED01]
+~n~ ~n~ Ned Burner - Peter Bradbury ~n~Ma Cipriani - Sondra James ~n~Giovanni Casa - Joel Jones
-[TEX1_O:SERG1]
-Bien, toma... te he conseguido un carné de socio, y chico, vas a necesitar un tipo de ropa más apropiada.
+[CR04_08:CRED01]
+~n~ ~n~Kazuki Kasen - Keenan Shimizu, ~n~Massimo Torini - Duccio Faggella ~n~Mickey Hamfists - Chris Tardio
-[TEX1_2:SERG1]
-~g~Ahora ve al Club de golf Leaf Links.
+[CR04_09:CRED01]
+~n~ ~n~Jane Hopper - Gordana Rashovich ~n~Mayor O'Donovan - John Braden ~n~8 Ball - Guru
-[TEX1_0:SERG1]
-~g~El objetivo está en el campo de prácticas disfrutando de una partida de golf. ¡Asegúrate de que sea la última!
+[CR04_10:CRED01]
+~n~ ~n~Radio Newscaster - Sharon Washington ~n~TV Reporter - Brooke Alexander
-[TEX1_3:SERG1]
-¿Quién es este tipo? Chicos, ocuparos de él.
+[CR04_11:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Dialogue ~n~Una Cruickshank, Gregory Johnson, ~n~Sanford Santacroce, Ayana Osada
-[TEX1_6:SERG1]
-¡Bonito culo nena!
+[CR04_12:CRED01]
+~n~ ~n~ ~n~ ~n~Pedestrian Voices ~n~Jamie Hector, Jackson Loo, ~n~Bruce MacVittie, Jeff Gurner, ~n~Jamie Hector, Andrea Kessler,
-[TEX1_7:SERG1]
-¿Este soy yo?
+[CR04_13:CRED01]
+~n~ ~n~Lynne Horton, Phil Mikkelson, ~n~Koji Nonoyama, Devin Bennett, ~n~Jay Capozello, Mike Nathan,
-[TEX1_I:SERG1]
-Bueno, necesito algún cabrón obstinado que suelte algo de mierda.
+[CR04_14:CRED01]
+~n~ ~n~Ethan Abeles, Lance Williams, ~n~Natalya Wilson, Jay Gladstone, ~n~Craig Blair, Dave Edwards,
-[TEX1_8:SERG1]
-Cada vez que subas a un Caddy recibirás automáticamente un palo de golf, siempre que la ranura de armas blancas esté vacía.
+[CR04_15:CRED01]
+~n~ ~n~Gregory Johnson, John Zurhellen, ~n~Blair Sadler, Georgia Sadler, ~n~Nicole Sadler, Judy Henderson,
-[TEX1_9:SERG1]
-¡Atrapadle!
+[CR04_16:CRED01]
+~n~ ~n~Kim Graham, Kerry Shaw, ~n~Tamara Carrion, Franceska Clemens, ~n~Navid Khonsari, Noelle Sadler,
-[TEX1_10:SERG1]
-¡Mata a ese psicópata!
+[CR04_17:CRED01]
+~n~ ~n~Nicholas Mongomery, Anthony Macbain, ~n~Ryan Rayhill, Josh Slater, ~n~Carmelo Gaeta, Hikari Yokoyama,
-[TEX1_1:SERG1]
-~g~Ve y consigue ropa de golf en Jocksports.
+[CR04_18:CRED01]
+~n~ ~n~Chris Jobin, Michael Rothstein, ~n~Stacey Rachels, Jennifer Koontz, ~n~Dan Merrill, Ali Khonsari,
-{=================================== MISSION TABLE SERG2 ===================================}
+[CR04_19:CRED01]
+~n~ ~n~Ellen Rose, Chris Standal, ~n~Lorie Goodman, Neal Johnston, ~n~Son Garth, James Larsen,
-[TEX_2A:SERG2]
-~g~¡Excelente! ¡Te han visto!
+[CR04_20:CRED01]
+~n~ ~n~Karl Weibel, Ramin Khonsari, ~n~Ed. Thomas Jr., Stanton Sargent, ~n~Oswald Greene, Audrey Amey,
-[TEX_2B:SERG2]
-~r~¡Idiota! ¡La gente debe PRESENCIAR a un cubano haciendo el trabajito!
+[CR04_21:CRED01]
+~n~ ~n~Sanford Santacroce, Jeff Madrick, ~n~Ben Weaver, Andrea Kessler, ~n~CS Lee, Yoshi Amao,
-[TEX_2C:SERG2]
-~g~¡Ve y consígue algo con los colores de la banda cubana en Little Havana!
+[CR04_22:CRED01]
+~n~ ~n~ Jackson Loo, Martha Morrison, ~n~Sarah Bloodsworth, Adam Deher, ~n~Billy Gonzalez
-[TEX_2D:SERG2]
-~g~¡Ahora elimina al capo de la banda haitiana en la Funeraria de Romero!
+[CR04_23:CRED01]
+~n~ ~n~ ~n~ ~n~Additional Motion Graphics ~n~Maryam Parwana
-[TEX2_A:SERG2]
-Tommy, este es Donald Love. Donald, te presento a Tommy Vercetti,
+[CR04_24:CRED01]
+~n~ ~n~ ~n~ ~n~Dialogue Recording & Mixing ~n~Nicholas Montgomery
-[TEX2_B:SERG2]
-el último tirador más rápido en llegar a estos lares.
+[CR04_25:CRED01]
+~n~ ~n~ ~n~ ~n~Foley Recording ~n~Bryan Scibinico
-[TEX2_C:SERG2]
-Si... eh...
+[CR04_26:CRED01]
+~n~ ~n~ ~n~ ~n~Foley recorded at Dig It Studios
-[TEX2_D:SERG2]
-Donald, ahora cállate y escucha, puede que aprendas algo.
+[CR04_27:CRED01]
+~n~ ~n~ ~n~ ~n~Production Team ~n~Noelle Sadler, Eli Weissman, ~n~Kerry Shaw, John Zurhellen, ~n~Peter Adler, Anthony Carvalho,
-[TEX2_E:SERG2]
-Veamos. Nada hace que los precios de las propiedades bajen más rápido que una guerra entre bandas al viejo estilo.
+[CR04_28:CRED01]
+~n~ ~n~Phil Poli, Jaesun Celebre, ~n~Franceska Clemens, Anthony Litton
-[TEX2_F:SERG2]
-Excepto un desastre quizás, como la peste de la que habla la biblia o algo así,
+[CR04_29:CRED01]
+~n~ ~n~ ~n~ ~n~Casting ~n~Judy Henderson and Associates
-[TEX2_G:SERG2]
-aunque puede que en este caso vayamos demasiado lejos.
+[CR04_30:CRED01]
+~n~Motion Capture recorded at Perspective Studios
-[TEX2_H:SERG2]
-¿Te estás enterando, capullo cuatro ojos?
+[CR05_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO
-[TEX2_I:SERG2]
-Hace poco murió un capo de una banda haitiana. Al parecer lo hicieron los cubanos, nadie lo sabe.
+[CR05_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ Banter, Talk Radio, Commercials and Imaging written by ~n~Dan Houser and Lazlow
-[TEX2_J:SERG2]
-¡Pero se lo haremos saber! Disfrázate de cubano
+[CR05_03:CRED01]
+~n~ ~n~ ~n~ ~n~Production by ~n~Lazlow
-[TEX2_K:SERG2]
-y ve a reventar el funeral. Crea confusión y después le sigues bien de cerca.
+[CR05_04:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LCFR
-[TEX2_L:SERG2]
-¿Te estás enterando, Donald?
+[CR05_05:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Smith Harrison, Karen Saltus
-[TEX2_M:SERG2]
-Eso debería meter al zorro en el gallinero. ¿Eh?
+[CR05_06:CRED01]
+~n~ ~n~ ~n~ ~n~Heartland Values with Nurse Bob ~n~Nurse Bob - Chuck Montgomery
-[TEX2_N:SERG2]
-y ahora sólo tenemos que sentarnos a esperar y ver cómo caen los precios.
+[CR05_07:CRED01]
+~n~ ~n~ ~n~ ~n~Guests and Callers ~n~Ayana Osada, Nick Montgomery, ~n~Russell Lewis, Nick Born, ~n~Sean Macaluso, Kerry Shaw,
-[TEXEXIT:SERG2]
-~g~¡Lárgate de Little Haiti ahora!
+[CR05_08:CRED01]
+~n~ ~n~Chad Johnson, Craig Conner, ~n~Mary Elizabeth, Rob Cross, ~n~Josh Bitney
-{=================================== MISSION TABLE SERG3 ===================================}
+[CR05_09:CRED01]
+~n~ ~n~ ~n~ ~n~Electron Zone ~n~Steve - Ptolemy Slocum ~n~Bill - Michael Urichek
-[TEX3_A:SERG3]
-Bien, mira, hijo. Tengo un problema y creo que podrías ayudarme con él.
+[CR05_10:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Alice Saltzman, Jeremy Wheaton, ~n~Ryan Rayhill, Maine Anderson, ~n~Patton Oswalt, Wil Wheaton, ~n~Anthony Cumia, Madena Parwana
-[TEX3_B:SERG3]
-No soy constructor.
+[CR05_11:CRED01]
+~n~ ~n~ ~n~ ~n~Breathing World ~n~Lee Chowder - Ashley Albert ~n~Crow - Gregg Martin
-[TEX3_C:SERG3]
-No, estaba pensando más bien en tus habilidades para la demolición.
+[CR05_12:CRED01]
+~n~ ~n~ ~n~ ~n~Coq 'O' Vin ~n~Richard Goblin - Mike Shapiro
-[TEX3_D:SERG3]
-Bien, esto de aquí es el centro empresarial tal y como se ha planeado, y éste
+[CR05_13:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Ben Krech
-[TEX3_E:SERG3]
-es el solar que estamos buscando.
+[CR05_14:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Franceska Clemins, Sarah Bloodsworth, ~n~Adam Deher, Martha Morrison, ~n~Carmelo Gaeta
-[TEX3_F:SERG3]
-Intentas decir que este nuevo bloque de oficinas está en medio.
+[CR05_15:CRED01]
+~n~ ~n~ ~n~ ~n~Chatterbox ~n~Lazlow as himself
-[TEX3_G:SERG3]
-Lo captas rápido.
+[CR05_16:CRED01]
+~n~ ~n~ ~n~ ~n~Callers ~n~Susan Lewis, Ben Weaver, ~n~Jacky Bam Bam, Ben Sparks, ~n~Deanna Moyer, Liezl Jacinto,
-[TEX3_H:SERG3]
-Bien, voy a irme de esta ciudad durante un tiempo
+[CR05_17:CRED01]
+~n~ ~n~Joshua Batista, Gregg Opie Hughes, ~n~Sondra James, Elizabeth Satterwhite
-[TEX3_I:SERG3]
-y si ese centro de oficinas se enfrentase a problemas estructurales repentinos e insalvables, entonces yo...
+[CR06_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~HEAD RADIO
-[TEX3_J:SERG3]
-¿Como buen ciudadano se sentirá obligado a intervenir y
+[CR06_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Michael Hunt - Russ Mottla
-[TEX3_K:SERG3]
-salvar la remodelación de una zona tan importante de la ciudad?
+[CR06_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jeff Berlin, Katelyn Hutchinson
-[TEX3_L:SERG3]
-¿Dónde puedo conseguir más tipos como tú?
+[CR06_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jeff Berlin
-[TEX3_1:SERG3]
-~g~Utiliza el helicóptero RC para transportar las bombas a los cuatro objetivos del edificio que debes demoler.
+[CR06_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Train" ~n~Conor & Jay ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Guitars by Jon McCavish ~n~Vocals by Julie Wemyss and Craig Conner
-[TEX3_2:SERG3]
-~g~Debes colocar una bomba en cada objetivo. Puedes colocarlas en cualquier orden.
+[CR06_06:CRED01]
+~n~ ~n~ ~n~ ~n~"The One For Me" ~n~Cloud Nineteen ~n~Written & Produced by ~n~Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Guitars by Allan Walker & Chris Morton ~n~Lead Vocals by Raff ~n~Backing Vocals by Paul Mackie & Raff
-[TEX3_3:SERG3]
-~g~Para recoger una bomba, dirige el helicóptero RC hasta a ella. Solo puedes llevar las bombas de una en una.
+[CR06_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Take The Pain" ~n~Purser ~n~Written & Produced by ~n~Will Morton, Chris Morton ~n~Additional Lyrics by Paul Mackie ~n~Lead Vocals by Paul Mackie ~n~Additional Vocals by Will Morton
-[TEX3_4:SERG3] { reVC update }
-~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~.
+[CR06_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Free Yourself" ~n~L-Marie featuring Raff ~n~Written & Produced by Craig Conner ~n~Vocals by L-Marie and Raff ~n~Backing Vocals by Craig Conner
-[TEX3_5:SERG3]
-~g~Si fallas al colocar una bomba podrás recogerla e intentarlo de nuevo.
+[CR06_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Drive" ~n~15 Ways ~n~Written & Produced by Colin Entwistle ~n~Vocals by Paul Mackie
-[TEX3_6:SERG3]
-~g~Cuando hayas recogido una bomba por primera vez, el temporizador de detonación se pondrá en marcha.
+[CR06_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Welcome To The Real World" ~n~Rosco Stow ~n~Written & Produced by Craig Conner ~n~Guitars Written, Produced and Performed by Allan Walker ~n~Lead Vocals by Andy Dorrat ~n~Backing Vocals by Craig Conner, ~n~Anna Stuart and Kim Gurney
-[TEX3_7:SERG3]
-~g~¡A continuación deberás conseguir colocar el resto de las bombas en 7 minutos!
+[CR06_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Keep Dreaming" ~n~Vanilla Smoothie ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Allan Walker ~n~Vocals by Fiona Stoddart
-[TEX3_8:SERG3]
-~g~¡Has fallado en el objetivo! ¡Recoge la bomba e inténtalo de nuevo!
+[CR07_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~LIPS 106
-[TEX3_10:SERG3]
-~g~Suelta la bomba en el objetivo.
+[CR07_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJs ~n~Cliff - Ed McMann ~n~Andee - Shelley Miller
-[TEX3_11:SERG3]
-objetivos restantes:
+[CR07_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jonathan Hanst
-[TEX3_17:SERG3]
-~r~¡Te has quedado sin tiempo!
+[CR07_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jonathan Hanst
-[TEX3_18:SERG3]
-~r~¡Tu helicóptero RC ha sido destruido!
+[CR07_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Funk In Time" ~n~Rudy La Fontaine ~n~Written & Produced by Jon McCavish ~n~Guitars by Julian Pais ~n~Vocals by Julian Pais
-[TEX3_19:SERG3]
-~r~¡Has lanzado la bomba en el agua! ¡Esa no es manera de pescar!
+[CR07_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Love Is The Feeling" ~n~Sawarr ~n~Written by Craig Conner & Julie Wemyss ~n~Produced by Craig Conner ~n~Vocals by Julie Wemyss
-[TEX3_20:SERG3]
-~g~¡Tu Helicóptero RC está casi fuera del alcance del control remoto!
+[CR07_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Mine Until Monday" ~n~Sunshine Shine ~n~Written & Produced by Will Morton ~n~Additional Lyrics by Paul Mackie ~n~Vocals by Paul Mackie & Raff
-[TEX3_21:SERG3]
-~r~¡Tu Helicóptero RC está fuera del alcance del control remoto!
+[CR07_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Get Down" ~n~Credit Check ~n~Written & Produced by ~n~Alastair MacGregor ~n~Guitars by Martyn Livingstone ~n~Bass by Andy Wilson ~n~Vocals by Louise Ferrier
-[TEX3_24:SERG3]
-Pulsa ~h~~k~~VEHICLE_LOOKLEFT~ ~w~para girar el helicóptero en sentido contrario a las agujas del reloj.
+[CR07_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Tonight" ~n~Cool Timers ~n~Written & Produced by Craig Conner ~n~Vocals by Julie Wemyss
-[TEX3_25:SERG3]
-Pulsa ~h~~k~~VEHICLE_LOOKLEFT~ ~w~para girar el helicóptero en sentido de las agujas del reloj.
+[CR07_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Bassmatic" ~n~Nina Barry ~n~Written & Produced by Jon McCavish ~n~Vocals by Riz Maslen
-[TEX3_27:SERG3]
-~g~Una escalera central permite el acceso a todas las plantas del edificio.
+[CR07_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Into Something (C'mon Get Down)" ~n~The Jackstars ~n~Written & Produced By ~n~Craig Conner ~n~Vocals by Lucie Danti-Juan ~n~Backing vocals by ~n~Kevin Stacey & Craig Conner
-[TEX3_31:SERG3]
-~r~¡Has destruido la furgoneta de TOPFUN que tenía las bombas y el helicóptero RC!
+[CR08_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~DOUBLE CLEF FM
-[TEX3_32:SERG3]
-Puedes ~h~mirar atrás~w~ si ~h~pulsas simultáneamente ~k~~VEHICLE_LOOKLEFT~ y ~k~~VEHICLE_LOOKRIGHT~~w~.
+[CR08_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Sergio Boccino - Robert Blumenfeld
-[TEX3_29:SERG3] { reVC update }
-~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~.
+[CR08_03:CRED01]
+~n~ ~n~ ~n~ ~n~Caller ~n~Gerald Cosgrove
-[TEX3_26:SERG3]
-Pulsa ~h~~k~~VEHICLE_BRAKE~~w~ para disminuir la velocidad del rotor y ~h~descender~w~.
+[CR08_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Anvil Chorus" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~& Munich State Opera Choir ~n~Courtesy of Point Classics, LLC
-[TEX3_22:SERG3]
-Pulsa ~h~~k~~VEHICLE_ACCELERATE~~w~ para aumentar la velocidad del rotor y así ~h~ascender~w~.
+[CR08_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Il Trovatore: Tacea la notte placida" ~n~Composed by Giuseppe Verdi ~n~Performed by ~n~Nuremberg Symphonic Orchestra & ~n~Munich State Opera Choir ~n~(Eva Illes, Soprano) ~n~Courtesy of Point Classics, LLC
-[TEX3_16:SERG3]
-~g~Ve a la furgoneta ~w~TOPFUN ~g~cercana al solar de construcción que se va a demoler.
+[CR08_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Nabucco: Chorus of the Hebrew Slaves" ~n~Composed by Giuseppe Verdi ~n~Performed by Philharmonia Slavonica ~n~Courtesy of Point Classics, LLC
-[TEX3_33:SERG3]
-Una vez que recojas una bomba el radar te mostrará la posición del objetivo con relación al helicóptero RC.
+[CR08_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Così fan tutte: È amore un ladroncello" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~Bratislava Opera Soloists, ~n~Choir and Orchestra ~n~(Ida Kirilova "Dorabella") ~n~Courtesy of Point Classics, LLC
-[TEX3_34:SERG3]
-Un ~h~icono triangular apuntando hacia arriba ~w~indica que el objetivo está ~h~por encima ~w~del helicóptero RC.
+[CR08_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Marriage of Figaro: Overture" ~n~Composed by Wolfgang Amadeus Mozart ~n~Performed by ~n~London Philharmonic Orchestra ~n~Courtesy of Point Classics, LLC
-[TEX3_35:SERG3]
-Un ~h~icono triangular apuntando hacia abajo ~w~indica que el objetivo está ~h~por debajo ~w~del helicóptero RC.
+[CR08_09:CRED01]
+~n~ ~n~ ~n~ ~n~"I Pagliacci: Vesti la giubba" ~n~Composed by Ruggiero Leoncavallo ~n~Performed by ~n~Nuremberg Symphonic Orchestra ~n~(José Maria Perez, Tenor) ~n~Courtesy of Point Classics, LLC
-[TEX3_36:SERG3]
-Un ~h~icono cuadrado ~w~indica que el objetivo está al ~h~mismo nivel ~w~que el helicóptero RC.
+[CR09_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RISE FM
-[TEX3_28:SERG3]
-Para ~h~recoger una bomba~w~, simplemente dirige el helicóptero RC hasta ella. El helicóptero RC sólo puede transportar una bomba.
+[CR09_02:CRED01]
+~n~ ~n~ ~n~ ~n~Engineered by Mike Callaghan
-[TEX3_30:SERG3]
-~g~Para recoger una bomba, simplemente dirige el helicóptero RC hasta ella. El helicóptero RC sólo puede transportar una bomba.
+[CR09_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Boy Sanchez - Oliver Vaquer
-[TEX3_12:SERG3]
-~g~¡Bomba colocada! ¡Quedan 3 objetivos más! Vuelve a por otra bomba.
+[CR09_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~DJ Andre, Lupus Thunder, ~n~Andi Hanley, Mat Ckillz, ~n~Couzin Ed, Lazlow,
-[TEX3_13:SERG3]
-~g~¡Bomba colocada! ¡Quedan 2 objetivos más! Vuelve a por otra bomba.
+[CR09_05:CRED01]
+~n~ ~n~Terry Donovan, Bill Brissette, ~n~Juan Aller, Ed Andrews, ~n~Xeni Jardin, Matthew Orr, ~n~Jeff Berlin
-[TEX3_14:SERG3]
-~g~¡Bomba colocada! ¡Queda 1 objetivo más! Vuelve a por otra bomba.
+[CR09_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Sing It Back ~n~(Boris Musical Mix)" ~n~Moloko ~n~Written by M. Brydon, R. Murphy ~n~Published by Chrysalis Music (ASCAP) ~n~Remix and Additional Production by ~n~Boris Dlugosch ~n~(p) + © 1998 The Echo Label ~n~Courtesy of Chrysalis Music Limited
-[TEX3_15:SERG3]
-~r~¡El temporizador de detonación se ha puesto en marcha! ~g~Debes colocar las ~w~4 bombas ~g~en el tiempo restante!
+[CR09_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Free" ~n~Ultra Nate ~n~Written by U. Nate, L. Springsteen, ~n~J. Ciafone ~n~Published by Warner/ Chappell Music/ BMG Music ~n~(p) + © 1997 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
-[TEX3_37:SERG3]
-Si empujas ~h~el joystick analógico derecho hacia atrás~w~, aumentarás la velocidad del rotor y así ~h~ascenderá~w~.
+[CR09_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I Believe" ~n~Happy Clappers ~n~Written by C. Scott, G. Ripley, M. Knotts, M. Topham ~n~Published by All Boys Music Ltd ~n~(p) + © 1994 C J Scott Productions ~n~Courtesy of C J Scott Productions
-[TEX3_38:SERG3] { reVC update }
-{Pulsa ~h~~k~~VEHICLE_ACCELERATE~~w~ para aumentar la velocidad del rotor y así ~h~ascender~w~.}
-Si empujas ~h~el joystick analógico derecho hacia adelante ~w~la velocidad del rotor aumenta, haciendo que el helicóptero ~h~descienda.
+[CR09_09:CRED01]
+~n~ ~n~ ~n~ ~n~"House Music" ~n~Eddie Amador ~n~Written by Eddie Amador ~n~Published by ~n~Deep Dish Music ~n~(p) + © 1998 Yoshitoshi Records ~n~Courtesy of ~n~Deep Dish Recordings, Inc. ~n~by arrangement with ~n~Nasseri Music Business Solutions
-[TEX3_39:SERG3]
-~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_HANDBRAKE~~w~.
+[CR09_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Feel What You Want" ~n~Kristine W ~n~Written by R. Dougan, R. Armstrong, ~n~K. Weitz ~n~Published by BMG Music/Weitz House Publishing (ASCAP)/ EMI Music Publishing ~n~(p) + © 1996 RCA/ BMG ~n~Courtesy of Sony BMG Entertainment
-[TEX3_40:SERG3]
-~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_HANDBRAKE~~w~.
+[CR09_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Hideaway ~n~(Deep Dish Vocal Remix)" ~n~De'Lacy ~n~Written by K. Hedge, J. Milan ~n~Published by ~n~Warner-Tamerlane Publishing Corp ~n~Remix and Additional Production by ~n~Deep Dish ~n~(p) 1995 Easy Street Recordings Inc ~n~© 1998 Kickin Music Ltd ~n~Courtesy of Easy Street Recordings Inc. and Slip n' Slide Records
-[TEX3_23:SERG3]
-Pulsa ~h~~k~~VEHICLE_TURRETUP~~w~ y ~h~~k~~VEHICLE_TURRETDOWN~~w~ para inclinar el helicóptero en la dirección deseada.
+[CR09_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Spin Spin Sugar ~n~(Armand's Dark Garage Mix)" ~n~Sneaker Pimps ~n~Written by I. Pickering, L. Coverdale Howe, C. Corner ~n~Remix and Additional Production by ~n~Armand Van Helden ~n~Published by BMG Songs, Inc ~n~(p) + © 1997 Clean Up Records Ltd ~n~Courtesy of EMI Music / ~n~One Little Indian, Ltd
-{=================================== MISSION TABLE TAXI1 ===================================}
+[CR09_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Plastic Dreams" ~n~Jaydee ~n~Written by R. Albers ~n~Published by TBM Holland ~n~(p) 1992 R & S Records ~n~© Robin Albers ~n~Courtesy of Robin "Jaydee" Albers
-[FARES:TAXI1]
-CARRERAS:
+[CR09_14:CRED01]
+~n~ ~n~ ~n~ ~n~"Altered States" ~n~Ron Trent ~n~Written by R. Trent ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
-[TAXI1:TAXI1]
-~g~Busca un cliente.
+[CR09_15:CRED01]
+~n~ ~n~ ~n~ ~n~"There Will Come A Day (Half Tab Dub)" ~n~The Absolute featuring Suzanne Palmer ~n~Written by M. Pichiotti, C.J. Snider ~n~Published by Much Noyse Music/ ~n~Hoobini Music (ASCAP) ~n~(p) + © 1995 Mark Productions, Inc ~n~Courtesy of Mark Productions, Inc
-[TSCORE2:TAXI1]
-~1~ $
+[CR09_16:CRED01]
+~n~ ~n~ ~n~ ~n~"Positive Education" ~n~Slam ~n~Written by S. McMillan, O. Meikle, ~n~G. Gibbons, J. Muotone ~n~Published by EMI Music Publishing ~n~(p) + © 1997 Soma Recordings Ltd ~n~Courtesy of Soma Recordings Ltd
-[IN_ROW:TAXI1]
-~1~ ¡Racha de clientes! ~1~ $
+[CR09_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Flash" ~n~Green Velvet ~n~Written by C. Jones ~n~Published by Curtis A. Jones Music (ASCAP) ~n~(p) 1995 Relief Records ~n~© 2000 Warner Bros. Records and N.E.W.S. Records and Relief Records ~n~Courtesy of Warner Strategic Marketing, N.E.W.S. Records, Relief Records
-[TAXI3:TAXI1]
-~r~¡Tu pasajero huye aterrorizado!
+[CR09_18:CRED01]
+~n~ ~n~ ~n~ ~n~"Circus Bells (Hardfloor Remix)" ~n~Robert Armani ~n~Written by R. Armani ~n~Published by ~n~High Fashion Music/ Nanada Music ~n~(p) + © 1993 Warehouse/ ~n~Djax-Up Beats ~n~Courtesy of High Fashion Music/ ~n~Djax-Up Beats
-[TAXI7:TAXI1]
-~r~Tu coche está destrozado, haz que lo reparen.
+[CR09_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Higher State Of Consciousness" ~n~Wink ~n~Written by J. Wink ~n~Published by Strictly Rhythm Publishing, Inc. (ASCAP) / Warner/Chappell Music / Wink Inc. (ASCAP) / EMI Music Publishing ~n~(p) + © 1995 Strictly Rhythm Records LLC ~n~Courtesy of Warner Strategic Marketing
-[TAXI4:TAXI1]
-¡Viaje completado!
+[CR10_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~RADIO DEL MUNDO
-[TAXI5:TAXI1]
-¡VIAJE RÁPIDO!
+[CR10_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Panjit Gavaskar - Hajaz Akram
-[TAXI6:TAXI1]
-Misión de taxista cancelada
+[CR10_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Jessica Wachsman
-[TAXIH1:TAXI1]
-Detente cerca de un peatón que esté resaltado para recogerle y llevarle a su destino antes de que se agote el tiempo.
+[CR10_04:CRED01]
+~n~ ~n~ ~n~ ~n~"Raghupati (Folk Tune)" ~n~Ananda Shankar ~n~Arranged by A. Shankar, Lewinson, Hassilev ~n~Published by Warner Chappell Inc ~n~(p) + © 1970 Reprise Records for the U.S. and WEA International Inc ~n~Courtesy of Warner Strategic Marketing
-[FARE1:TAXI1]
-~g~Destino ~w~''el club Pole Position'' ~g~en Ocean Beach.
+[CR10_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Dum Maro Dum" ~n~Asha Bhosle ~n~Written by RD Burman, Anand Bakshi ~n~Published by Saregama India Ltd ~n~(p) + © 1971 Saregama India Ltd ~n~Courtesy of Saregama India Ltd
-[FARE3:TAXI1]
-~g~Destino ~w~''el club náutico'' ~g~en Ocean Beach.
+[CR10_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Neeve Nanna (Only You Were Mine)" ~n~Vijaya Anand ~n~Written by Vijaya Anand ~n~Published by Shake Boom! (ASCAP)/ ~n~Luaka Bop Inc ~n~(p) 1988 Lahari/Audiovision ~n~© 1992 Sire Records Company ~n~Courtesy of ~n~Luaka Bop Records
-[FARE4:TAXI1]
-~g~Destino ~w~''Ammu-Nation'' ~g~en Ocean Beach.
+[CR10_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Kidda" ~n~Natacha Atlas ~n~Written by N. Atlas, J. Reynolds, J. Adams ~n~Published by Warner Chappell Music Ltd ~n~(p) + © 1997 Nation Records Ltd/ ~n~Beggars Banquet Records Ltd ~n~Courtesy of Nation Records Ltd/ ~n~Beggars Banquet Records Ltd
-[FARE5:TAXI1]
-~g~Destino ~w~''la ferretería'' ~g~en Washington Beach.
+[CR10_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Hebeena Hebeena" ~n~Farid El Atrache ~n~Written by Barakat, Atrache ~n~Published by Voices Of Lebanon ~n~(p) + © 1974 Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
-[FARE6:TAXI1]
-~g~Destino ~w~''el centro comercial North Point'' ~g~en Vice Point.
+[CR10_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Aini Bet Ref" ~n~Ahmed Mneimneh ~n~Written by A. Alishaan ~n~Published by D. Dersahakian (ASCAP) ~n~(p) + © Voice of Stars & ~n~Lys Records ~n~Courtesy of Voice of Stars & ~n~Lys Records
-[MFARE1:TAXI1]
-~g~Destino ~w~''Ammu-Nation'' ~g~en el centro.
+[CR10_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Im Nin'Alu" ~n~Ofra Haza ~n~Traditional, Arranged by I. Ashdot, B. Nagari ~n~Published by Blue Lake Music ~n~ (p) + © 1988 Sire Records Company ~n~Courtesy of Warner Strategic Marketing
-[MFARE2:TAXI1]
-~g~Destino ~w~''la terminal'' ~g~en el aeropuerto Escobar International.
+[CR10_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ballaa Tsoubou Hal Kahwa" ~n~Samira Tawfic ~n~Written by R. Al Khylani, J. Al A'ss ~n~Published by Copyright Control ~n~(p) + © Voices Of Lebanon ~n~Courtesy of EMI Music/ EMI Music Arabia
-[WFARE3:TAXI1]
-~g~Destino ~w~''Coches Sunshine'' ~g~en Little Havana.
+[CR11_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~K-JAH
-[WFARE4:TAXI1]
-~g~Destino ~w~''Taxis Kaufman'' ~g~en Little Haiti.
+[CR11_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Natalee Walsh Davis - Pascale Armand
-[WFARE5:TAXI1]
-~g~Destino ~w~''la ferretería'' ~g~en Little Havana.
+[CR11_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Karl Weibel, Pat McKay
-[WFARE6:TAXI1]
-~g~Destino ~w~''Emporio Howlin Petes Bike'' ~g~en el centro.
+[CR11_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
-[FARE7:TAXI1]
-~g~Destino ~w~''la joyería'' ~g~en Vice Point.
+[CR11_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Pick a Sound" ~n~Selah Collins, Ruddy Ranks, Redeye ~n~Written by S. Collins, H. Burke, ~n~E. Donaldson ~n~Published by Copyright Control/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE8:TAXI1]
-~g~Destino ~w~''la playa'' ~g~en Ocean Beach.
+[CR11_06:CRED01]
+~n~ ~n~ ~n~ ~n~"What a Wonderful Feeling" ~n~Errol Bellot, Ruddy Ranks, Redeye ~n~Written by E. Bellot, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE9:TAXI1]
-~g~Destino ~w~''la playa'' ~g~en Washington Beach.
+[CR11_07:CRED01]
+~n~ "Watch How the People Dancing" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by K. Wright ~n~Published by Jetstar ~n~Courtesy of Honest Jons Records
-[FARE10:TAXI1]
-~g~Destino ~w~''la playa'' ~g~en Vice Point.
+[CR11_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Lean Boot" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson ~n~Published by Westbury Music/ MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE11:TAXI1]
-~g~Destino ~w~''el hospital'' ~g~en Ocean Beach.
+[CR11_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Ready For the Dancehall Tonight" ~n~Peter Bouncer, Ruddy Ranks, Redeye ~n~Written by Peter McKenzie, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE12:TAXI1]
-~g~Destino ~w~''el hospital'' ~g~en Vice Point.
+[CR11_10:CRED01]
+~n~ ~n~ ~n~ ~n~"You Ha Fe Cool" ~n~Richie Davis, Ruddy Ranks, Redeye ~n~Written by R. Davis, H. Burke, ~n~E. Donaldson. ~n~Published by Westbury Music/MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE13:TAXI1]
-~g~Destino ~w~''la comisaría de policía'' ~g~en Washington Beach.
+[CR11_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Ring My Number" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson. ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE14:TAXI1]
-~g~Destino ~w~''la comisaría de policía'' ~g~en Vice Point.
+[CR11_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Run Come Call Me" ~n~Kenny Knots, Ruddy Ranks, Redeye ~n~Written by Kenneth Wright, H. Burke, ~n~E. Donaldson ~n~Published by MCPS ~n~(p) 1988 by R. Fearon ~n~Courtesy of Honest Jons Records
-[FARE15:TAXI1]
-~g~Destino ~w~''la pizzería'' ~g~en Vice Point.
+[CR12_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THE LIBERTY JAM
-[WFARE7:TAXI1]
-~g~Destino ~w~''la comisaría de policía'' ~g~en Little Havana.
+[CR12_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~DJ Clue as himself
-[WFARE8:TAXI1]
-~g~Destino ~w~''la comisaría de policía'' ~g~en el centro de la ciudad.
+[CR12_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voices ~n~Jay Wright, Tom Yankowski, Chris Mercado, Vanessa Grullon
-[WFARE9:TAXI1]
-~g~Destino ~w~''el hospital'' ~g~en el centro de la ciudad.
+[CR12_04:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Production ~n~Jay Wright Productions
-[WFARE10:TAXI1]
-~g~Destino ~w~''el hospital'' ~g~en Little Havana.
+[CR12_05:CRED01]
+~n~ ~n~ ~n~ ~n~"All I Need" ~n~Method Man ~n~Written by C. Smith, R. Diggs ~n~Published by Sony BMG Music ~n~(p) + © 1994 Def Jam Recordings ~n~Courtesy of Def Jam Recordings/ UME
-[WFARE11:TAXI1]
-~g~Destino ~w~''el estadio'' ~g~en el centro de la ciudad.
+[CR12_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Shook Ones Pt. II" ~n~Mobb Deep ~n~Written by A. Johnson, K. Muchita ~n~Published by ~n~BMG Songs Inc. (ASCAP) ~n~(p) + © 1995 BMG Music ~n~Courtesy of RCA Records by arrangement with Sony BMG Ent
-[WFARE12:TAXI1]
-~g~Destino ~w~''la pizzería'' ~g~en Little Haiti.
+[CR12_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Incarcerated Scarface" ~n~Raekwon ~n~Written by R. Diggs, C. Woods, A. Tilman ~n~Published by ~n~Careers-BMG Music Publishing Inc./ ~n~Wu Tang Publishing (BMI)/ ~n~Bridgeport Music ~n~(p) + © 1995 BMG Music
-[WFARE13:TAXI1]
-~g~Destino ~w~''la pizzería'' ~g~en el centro de la ciudad.
+[CR12_08:CRED01]
+Courtesy of RCA Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "You're Getting A Little Too Smart" as performed by The Detroit Emeralds. Courtesy of Westbound Records. Used by permission. All rights reserved
-[WFARE14:TAXI1]
-~g~Destino ~w~''los muelles'' ~g~en Viceport.
+[CR12_09:CRED01]
+~n~ ~n~ ~n~ ~n~"N.O.R.E." ~n~Noreaga ~n~Written by V. Santiago, J. Olivier, ~n~S. Barnes ~n~Published by Suite 1202 Music/ Jose Luis Gotcha Music (BMI)/ Slamuwell Productions/ Jelly's Jam LLC (ASCAP)/ ~n~12 & Under Music/
-[WFARE15:TAXI1]
-~g~Destino ~w~''la farmacia'' ~g~en Little Haiti.
+[CR12_10:CRED01]
+Jumping Bean Songs LLC (BMI) ~n~(p) + © 1998 Penalty Recordings ~n~Courtesy of Warner Strategic Marketing
-[FARE2:TAXI1]
-~g~Destino ~w~''el club Malibú'' ~g~en Vice Point.
+[CR12_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Shut 'Em Down (Remix)" ~n~Onyx featuring Noreaga & Big Pun ~n~Written by F. Scruggs, K. Jones, T. Taylor, E. Hinson, E. Simmons ~n~Published by Universal Music/ ~n~Let Me Show You Music/ ~n~Jelly Jams Music/
-{=================================== MISSION TABLE TAXICUT ===================================}
+[CR12_12:CRED01]
+III Posse Music/ Ill Hill Billy'z Music/ Warner-Tamerlane Music ~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
-[TAXC_A:TAXICUT]
-Supongo que eres el nuevo propietario.
+[CR12_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Beware" ~n~Big Pun ~n~Written by C. Rios, J. Tineo ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP), ~n~Administered by Jelly Jams Music (BMI)/ ~n~P.H.D. Music (ASCAP)
-[TAXC_B:TAXICUT]
-¿Qué eres, mafioso? ¿Del cártel? No pareces mejicano...
+[CR12_14:CRED01]
+(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent
-[TAXC_C:TAXICUT]
-En fin, será mejor que sueltes el rollo de ''las cosas van a cambiar por aquí'',
+[CR12_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Twinz (Deep Cover 98)" ~n~Big Pun ~n~Written by C. Rios, J. Cartegena, ~n~C. Brodus, A. Young, C. Wolfe ~n~Published by Let Me Show You Music/ ~n~Joe Cartegena Music (ASCAP)/ ~n~Jelly Jams Music (BMI)/ ~n~Sony Tunes Inc. (ASCAP)
-[TAXC_D:TAXICUT]
-quizás amenazar a alguno de los conductores...
+[CR12_16:CRED01]
+~n~(p) + © 1998 Loud Records LLC ~n~Courtesy of Columbia Records by arrangement with Sony BMG Ent ~n~This track contains a sample of "Deep Cover" as performed by Dr. Dre. Courtesy of Solar Records. Used by permission. All rights reserved
-[TAXC_E:TAXICUT]
-ve con calma con Ted, el de ahí, acaban de curarle la hernia.
+[CR12_17:CRED01]
+~n~ ~n~ ~n~ ~n~"Get At Me Dog" ~n~DMX featuring Sheek of The Lox ~n~Written by E. Simmons, D. Blackman, ~n~A. Fields, S. Taylor ~n~Published by Universal Music Publishing/ EMI April Music/ ~n~Sony ATV Tunes
-[TAXC_F:TAXICUT]
-Bueno, sí. Las cosas van a cambiar por aquí, señora.
+[CR12_18:CRED01]
+~n~(p) + © 1998 Rush Associated Labels Recordings ~n~Courtesy of Universal Music Enterprises
-[TAXC_G:TAXICUT]
-Oh, mierda, hijo. Anda dejarme esto a mí...
+[CR12_19:CRED01]
+~n~ ~n~ ~n~ ~n~"Ruff Ryders Anthem (Remix)" ~n~DMX featuring DJ Clue, Jadakiss, Styles, Drag-On & Eve ~n~Written by J. Phillips, M.J. Smalls, E. Shaw, K. Ifill, E. Simmons, K. Dean, E. Jeffers ~n~Published by Universal Music Publishing/ EMI Music Publishing
-[TAXC_H:TAXICUT]
-Llevo haciéndolo años.
+[CR12_20:CRED01]
+(p) + © 1998 Roc-a-Fella Records ~n~Courtesy of Universal Music Enterprises
-[TAXC_I:TAXICUT]
-Ahora oíd esto.
+[CR12_21:CRED01]
+~n~ ~n~ ~n~ ~n~"Do What You Feel" ~n~Redman featuring Method Man ~n~Written by P. Michael, R. Noble, C. Smith ~n~Published by Careers BMG/ Sony ATV Tunes/ Famous Music ~n~(p) + © 1996 Def Jam ~n~Courtesy of Universal Music Enterprises
-[TAXC_J:TAXICUT]
-Ahora tenemos una nueva dirección y las cosas van a cambiar por aquí.
+[CR12_22:CRED01]
+~n~ ~n~ ~n~ ~n~"Chain Gang Freestyle" ~n~The Lox & Black Rob ~n~Written by Frierson, Phillips, Styles, Jacobs, Ross, Shaw ~n~Published by EMI Music Publishing ~n~Courtesy of Bad Boy Records
-[TAXC_K:TAXICUT]
-Nuestra nueva dirección, los...
+[CR12_23:CRED01]
+~n~ ~n~ ~n~ ~n~"Chest2chest Freestyle" ~n~The Lox ~n~Written by Phillips, Styles, Jacobs, Shaw, Barnes, Lemay, Montgomery ~n~Published by Taggie Music (BMI)/ ~n~Universal Polygram Int'l. (ASCAP)/ ~n~EMI Music Publishing ~n~Courtesy of Bad Boy Records
-[TAXC_L:TAXICUT]
-¿De qué banda eres?
+[CR12_24:CRED01]
+This track contains a sample of "Next Level" as performed by Showbiz & AG. Courtesy of Universal Music Enterprises. Used by permission. All rights reserved
-[TAXC_M:TAXICUT]
-Bueno, en realidad no formo parte de ninguna banda.
+[CR13_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~MSX 98
-[TAXC_N:TAXICUT]
-¿Cómo coño te llamas, muchacho?
+[CR13_02:CRED01]
+~n~ ~n~ ~n~ ~n~MC ~n~Codebreaker as himself
-[TAXC_O:TAXICUT]
-Vercetti, Tommy Vercetti.
+[CR13_03:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Timecode
-[TAXC_P:TAXICUT]
-Nuestra nueva administración, la banda de Vercetti,
+[CR13_04:CRED01]
+~n~ ~n~ ~n~ ~n~Station Production ~n~Timecode
-[TAXC_Q:TAXICUT]
-se va a encargar de que no tengamos problemas.
+[CR13_05:CRED01]
+~n~ ~n~ ~n~ ~n~"Renegade Snares" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_R:TAXICUT]
-¿Capiche? ¡Corto!
+[CR13_06:CRED01]
+~n~ ~n~ ~n~ ~n~"Terrorist" ~n~Renegade ~n~Written, Produced & Engineered by ~n~A. Dookith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_S:TAXICUT]
-¿Te gustó el ''capiche''? A mí me gustó el ''capiche''.
+[CR13_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Finest Illusion (Legal Mix)" ~n~Foul Play ~n~Written, Produced & Engineered by ~n~J. Morrow, S. Bradshaw, ~n~S. Gurley ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1993 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_T:TAXICUT]
-Así que así es como funcionaban las cosas en el pasado,
+[CR13_08:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future (FBD Project Remix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_U:TAXICUT]
-Dirigimos la compañía como siempre.
+[CR13_09:CRED01]
+~n~ ~n~ ~n~ ~n~"Stay Calm (Foul Play Remix)" ~n~DJ Pulse ~n~Written, Produced & Engineered by ~n~A. Brown ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_V:TAXICUT]
-Si tenemos algún problema con las compañías rivales, tú les das una somanta de palos.
+[CR13_10:CRED01]
+~n~ ~n~ ~n~ ~n~"Disturbance (Tango Remix)" ~n~Hyper-On Experience ~n~Written, Produced & Engineered by ~n~A. Banks, D. Demierre ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_W:TAXICUT]
-Luego ellos nos la dan a nosotros,
+[CR13_11:CRED01]
+~n~ ~n~ ~n~ ~n~"Cold Fresh Air" ~n~Higher Sense ~n~Written, Produced & Engineered by ~n~A. Miles, DJ Rhythm ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_X:TAXICUT]
-y después, se la vuelves a dar a ellos,
+[CR13_12:CRED01]
+~n~ ~n~ ~n~ ~n~"Living For the Future" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_Y:TAXICUT]
-etcétera, etcétera. ¿Lo captas?
+[CR13_13:CRED01]
+~n~ ~n~ ~n~ ~n~"Thru The Vibe (2 on 1 Mix)" ~n~Omni Trio ~n~Written, Produced & Engineered by ~n~R. Haigh ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_Z:TAXICUT]
-Sí, supongo...
+[CR13_14:CRED01]
+~n~ ~n~ ~n~ ~n~"The Helicopter Tune" ~n~Deep Blue ~n~Written, Produced & Engineered by ~n~S. O'Keefe ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-[TAXC_A1:TAXICUT]
-Simplemente toma un taxi del garaje si tienes ganas de subir a bordo.
+[CR13_15:CRED01]
+~n~ ~n~ ~n~ ~n~"Dred Bass" ~n~Dead Dred ~n~Written, Produced & Engineered by ~n~W. Smith, L. Smith ~n~Published by Moving Shadow Music Ltd ~n~(p) + © 1994 Moving Shadow Ltd ~n~Courtesy of Moving Shadow Ltd
-{=================================== MISSION TABLE TAXIWA1 ===================================}
+[CR14_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~FLASHBACK FM
-[OUTTIME:TAXIWA1]
-~r~¡Demasiado lento, tío, demasiado lento!
+[CR14_02:CRED01]
+~n~ ~n~ ~n~ ~n~DJ ~n~Reni Wassulmaier - Barbara Rosenblatt
-[TAX1_1:TAXIWA1]
-Tenemos un cliente importante que necesita que lo recojan en Starfish Island. ¿Alguien me recibe?
+[CR14_03:CRED01]
+~n~ ~n~ ~n~ ~n~Imaging Voice ~n~Mike Shapiro
-[TAX1_2:TAXIWA1]
-¡Aquí Tommy, yo lo recogeré!
+[CR14_04:CRED01]
+~n~ ~n~ ~n~ ~n~"First Hand Experience ~n~In Second Hand Love" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
-[TAX1_3:TAXIWA1]
-¡Este es mi cliente, lárgate, gilipollas!
+[CR14_05:CRED01]
+~n~ ~n~ ~n~ ~n~"I Wanna Rock You" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~K. Forsey ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
-[TAX1_4:TAXIWA1]
-Venga, venga, entre, ¡rápido!
+[CR14_06:CRED01]
+~n~ ~n~ ~n~ ~n~"E=MC2" ~n~Giorgio ~n~Written by G. Moroder, H. Faltermeyer, ~n~P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1979 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
-[TAX1_5:TAXIWA1]
-¡Vale, vale! ¡No me haga daño!
+[CR14_07:CRED01]
+~n~ ~n~ ~n~ ~n~"Chase" ~n~Giorgio Moroder ~n~Written by G. Moroder ~n~Published by Warner/ Chappell Music ~n~(p) + © 1978 Casablanca Films/ ~n~Columbia Pictures ~n~Courtesy of Sony Pictures Entertainment
-[TAXW1_1:TAXIWA1]
-~g~Recoge al V.I.P. en Starfish Island.
+[CR14_08:CRED01]
+~n~ ~n~ ~n~ ~n~"I'm Left, You're Right, She's Gone" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Giorgio Moroder ~n~Courtesy of Giorgio Moroder
-[TAXW1_2:TAXIWA1]
-~g~¡Recupera al V.I.P! ¡Destroza el otro coche!
+[CR14_09:CRED01]
+~n~ ~n~ ~n~ ~n~"From Here To Eternity" ~n~Giorgio ~n~Written by G. Moroder, P. Bellotte ~n~Published by WB Music Corp. (ASCAP) ~n~(p) + © 1977 Casablanca Records ~n~Courtesy of Universal Music Enterprises
-[TAXW1_3:TAXIWA1]
-~r~¡El V.I.P. está muerto!
+[CR15_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~COMMERCIAL VOICES
-[TAXW1_4:TAXIWA1]
-~r~¡El V.I.P. se ha apeado!
+[CR15_02:CRED01]
+~n~ ~n~ ~n~ ~n~Alex Anthony, Anouchka Benson, ~n~Audrey Amey, Bill Smith, ~n~Billy Gonzalez, Brian Thomas,
-[TAXW1_6:TAXIWA1]
-~g~¡Lleva al V.I.P. al aeropuerto!
+[CR15_03:CRED01]
+~n~ ~n~Chris Jobin, Chris Silvestro, ~n~Craig Blair, Dan Houser, ~n~Dan Merrill, Ed Thomas,
-{=================================== MISSION TABLE TAXIWA2 ===================================}
+[CR15_04:CRED01]
+~n~ ~n~Ethan Abeles, Garth Johnston, ~n~Gregg Martin, Gregory Johnson, ~n~Hikari Yokoyama, James Ferrante,
-[TAX2_1:TAXIWA2]
-Llamando a todos los taxis, estamos perdiendo clientes por toda la ciudad. ¿Qué os pasa, tíos?
+[CR15_05:CRED01]
+~n~ ~n~James Larson, Jay Capozello, ~n~Jayson Gladstone, Jeff Berlin, ~n~Jen Sweeney, Jessica Wachsman,
-[TAX2_2:TAXIWA2]
-Taxis VC sigue llevándonos la delantera. ¡Tienen tantos coches que no podemos competir!
+[CR15_06:CRED01]
+~n~ ~n~ JJ Adler, Jonathan Hanst, ~n~Joshua Batista, Karen Saltus, ~n~Koji Nonoyami, Lance Williams,
-[TAX2_3:TAXIWA2]
-Sr. Vercetti, si está ahí escuchando, ¡tiene que poner fuera de circulación unos cuantos Taxis VC antes de que nos hundan!
+[CR15_07:CRED01]
+~n~ ~n~Lazlow, Lynne Horton, ~n~Michael Nathan, Mike Ferrante Jr., ~n~Chris Ferrante, Mike Shapiro,
-[TAXW2_1:TAXIWA2]
-~g~¡Destruye 3 de los taxis rivales!
+[CR15_08:CRED01]
+~n~ ~n~Natalya Wilson, Noelle Sadler, ~n~Phil Mikkelson, Ron Reeve, ~n~Smith Harrison, Stacy Rachels,
-{=================================== MISSION TABLE TAXIWA3 ===================================}
+[CR15_09:CRED01]
+~n~ ~n~ Steve Carlesi, Julie Wemyss, ~n~Kim Gurney
-[TAX3_1:TAXIWA3]
-Coche 13, tengo a una tal Señorita Cortez, preguntó especialmente por usted.
+[CR16_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~CUTSCENE MUSIC
-[TAX3_2:TAXIWA3]
-Vale, entendido. ¡Coche 13 en ruta!
+[CR16_02:CRED01]
+~n~ ~n~ ~n~ ~n~"Japanese Geisha" ~n~Sonia Slany ~n~Written by Sonia Slany ~n~Published by West One Music ~n~Courtesy of APM Music, LLC
-[TAX3_3:TAXIWA3]
-No hay rastro de Mercedes...
+[CR16_03:CRED01]
+~n~ ~n~ ~n~ ~n~"The Heist" ~n~Bugz in the Attic ~n~Written by K. Tatham ~n~Published by Copyright Control ~n~(p) 2005 Bugz In The Attic ~n~Courtesy of Bugz In The Attic ~n~www.bugzintheattic.co.uk
-[TAXW3_3:TAXIWA3]
-~g~Destrulle al taxi principal!
+[CR16_04:CRED01]
+~n~ ~n~ ~n~ ~n~"A Dark March" ~n~Danger Mouse ~n~Written by Danger Mouse ~n~Published by ~n~Underground Animals (ASCAP)
-[TAXW3_2:TAXIWA3]
-~g~Permanece con vida hasta que se agote el temporizador.
+[CR17_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR NYC PUBLISHING TEAM
-[TAX_AS1:TAXIWA3]
-COMPAÑÍA DE TAXIS CONSOLIDADA
+[CR17_02:CRED01]
+~n~ ~n~ ~n~ ~n~Terry Donovan, Jenefer Gross, ~n~Jennifer Kolbe, Devin Winterbottom, ~n~Adam Tedman, Michael Elkind,
-[TAX_AS2:TAXIWA3]
-~g~Los taxis Kaufman generarán ahora unos ingresos de hasta ~1~ $ máximo. Asegúrate de recaudarlos regularmente.
+[CR17_03:CRED01]
+~n~ ~n~Paul Yeates, Hosi Simon, ~n~Daniel Einzig, Marlene Yamaguchi, ~n~Gauri Khindaria, Stanton Sarjeant,
-[TAX3_4:TAXIWA3]
-¡Es hora que el ángel guardián de Taxis Kaufman coma algo del parachoques!
+[CR17_04:CRED01]
+~n~ ~n~Jordan Chew, Ryan Rayhill, ~n~Devin Bennett, Todd Zuniga, ~n~Thomas O'Donnell, Maria Tabia,
-[TAX3_5:TAXIWA3]
-¡Eh chico te voy a zurrar la badana!
+[CR17_05:CRED01]
+~n~ ~n~Anthony Carvalho, Lyonel Tollemache, ~n~John Notarfrancesco, Jerry Luna, ~n~Stuart Petri, Stephen Walsh,
-{ reVC updates }
-{ new languages }
-[FEL_JAP]
-JAPONÉS
+[CR17_06:CRED01]
+~n~ ~n~Michael Carnevale, Andrea Borzuku, ~n~John Schuhmann, Alice Chuang, ~n~Mike Torok, Mayumi Kobayashi,
-[FEL_POL]
-POLACO
+[CR17_07:CRED01]
+~n~ ~n~Elizabeth Satterwhite, Bruce Dugan, ~n~Eli Weissman, Phil Poli, ~n~Jaesun Celebre, Russell Lewis,
-[FEL_RUS]
-RUSO
+[CR17_08:CRED01]
+~n~ ~n~Sean Mackenzie, Megan Henretta, ~n~Angus Wong, Kristine Severson
-{ new display menus }
-[FET_GFX]
-CONFIGURACIÓN DE GRÁFICOS
+[CR17_09:CRED01]
+~n~ ~n~ ~n~ ~n~Cover Art ~n~Steven Olds, Stephen Bliss, ~n~Anthony Macbain
-[FED_MIP]
-MIPMAPPING
+[CR17_10:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LONDON PD
-[FED_AAS]
-SUAVIZADO DE BORDES
+[CR17_11:CRED01]
+~n~ ~n~ ~n~ ~n~ Chris Madgwick, Chris Wood, ~n~Daimion Pinnock, David McCarthy, ~n~Graham Ainsley, Jurgen Mol,
-[FED_FIL]
-FILTRO DE TEXTURAS
+[CR17_12:CRED01]
+~n~ ~n~ Laura Battistuzzi, Maike Köhler, ~n~Shino Hori, Lucien King
-[FED_BIL]
-BILINEAL
+[CR18_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ROCKSTAR LINCOLN
-[FED_TRL]
-TRILINEAL
+[CR18_02:CRED01]
+~n~ ~n~ ~n~ ~n~QA Manager ~n~Mark Lloyd
-[FED_WND]
-VENTANA
+[CR18_03:CRED01]
+~n~ ~n~ ~n~ ~n~Deputy QA Manager ~n~Tim Bates
-[FED_FLS]
-PANTALLA COMPLETA
+[CR18_04:CRED01]
+~n~ ~n~ ~n~ ~n~QA Supervisor ~n~Kevin Hobson
-[FEM_CSB]
-BORDES EN CINEMÁTICAS
+[CR18_05:CRED01]
+~n~ ~n~ ~n~ ~n~Lead Tester ~n~Eddie Gibson ~n~ ~n~ ~n~ ~n~Secondary Lead Tester ~n~Mike Bennett
-[FEM_SCF]
-FORMATO DE IMAGEN
+[CR18_06:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Jonathan Stones, Mike Emeny, ~n~Andy Mason, Lee Johnson, ~n~Carl Young, Matthew Lunnon, ~n~Dan Goddard, Steve McGagh, ~n~Craig Reeve, Joby Luckett
-[FEM_ISL]
-USO DE MEMORIA
+[CR18_07:CRED01]
+~n~ ~n~ ~n~ ~n~Localization Team ~n~ ~n~ ~n~ ~n~Localization Supervisor ~n~Chris Welsh
-[FEM_LOW]
-BAJO
+[CR18_08:CRED01]
+~n~ ~n~ ~n~ ~n~Testers ~n~Antoine Cabrol, Dominic Garcia, ~n~Paolo Ceccotti, Ferruccio Cinquemani, ~n~Nicolas Klimoff, Jesús Pérez Rosales ~n~ ~n~ ~n~ ~n~IT Support ~n~Nick McVey
-[FEM_MED]
-MEDIO
+[CR19_01:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~SPECIAL THANKS
-[FEM_HIG]
-ALTO
+[CR19_02:CRED01]
+~n~ ~n~ ~n~ ~n~Scooter, Ross Wallace, ~n~Steve Taylor, Kevin Wong, ~n~Kevin Bolt, John Haime,
-[FEM_2PR]
-ALPHA TEST TIPO PS2
+[CR19_03:CRED01]
+~n~ ~n~Dave Watson, Thomas French, ~n~James Arthur, Martin Connor, ~n~Brendon McDonald, Julie Wemyss,
-[FEC_FRC]
-CÁMARA LIBRE
+[CR19_04:CRED01]
+~n~ ~n~Raff Crolla, James Duffy, ~n~Kim Gurney, Andrew Ness, ~n~Andy Brooks (Gearbox), Alan Mcgregor,
-{ Linux joy detection }
-[FEC_JOD]
-DETECTAR JOYSTICK
+[CR19_05:CRED01]
+~n~ ~n~Chris McCallum, Fred, Narns, ~n~Alan, Taruki, Red, ~n~Big Foot, Rita Liberator, ~n~Elliot Torres
-[FEC_JPR]
-Pulsa cualquier botón del joystick que quieras usar con el juego para seleccionarlo.
+[CR19_06:CRED01]
+~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~THANKS
-[FEC_JDE]
-Joystick detectado
+[CR19_07:CRED01]
+~n~ ~n~ ~n~ ~n~Deborah Mannis-Gardner ~n~and Mark Schwartz. ~n~Randy Acker, Karen Adams, ~n~Mark Ainley, Robin Albers,
-{ mission restart }
-[FET_RMS]
-REPETIR MISIÓN
+[CR19_08:CRED01]
+~n~ ~n~Duncan Baker, Armen Boladian, ~n~Tanya Bridges, Richard Brown, ~n~Matt Brookman, Elena Byington,
-[FESZ_RM]
-¿REINTENTAR?
+[CR19_09:CRED01]
+~n~ ~n~Ed Butts, Rob Cairns, ~n~Mike Callaghan, Joseph Carlone, ~n~Kevin Carson, Jason Chin,
-[FED_VPL]
-FLUJO DE VEHÍCULOS
+[CR19_10:CRED01]
+~n~ ~n~Allison Cipris, Alimah Deen, ~n~James Ellis, Helen English, ~n~Nasko Fejza, Scott Gardner,
-[FED_PRM]
-LUCES EN PEATONES
+[CR19_11:CRED01]
+~n~ ~n~Jochem Gerrits, ~n~Laurie Goldstein Thomas Golubic, ~n~Nick Guarino, Jon Handle, ~n~Millie Hysu, Robert Jo,
-[FED_RGL]
-BRILLO DE CARRETERAS
+[CR19_12:CRED01]
+~n~ ~n~Paul Johannes, Gavin Johnson, ~n~Curtis A. Jones, Jennifer Justice, ~n~Rod Kotler, Diana La Pointe,
-[FED_CLF]
-FILTRO DE COLOR
+[CR19_13:CRED01]
+~n~ ~n~Michael Lau, Jim Long, ~n~Alex De Maegd, John Massa, ~n~Kendall Minter, Steve Morgan,
+
+[CR19_14:CRED01]
+~n~ ~n~Giorgio Moroder, Suzanne Moss, ~n~Melissa Munana, Kirin Murphy, ~n~Kurosh Nasseri,
+
+[CR19_15:CRED01]
+~n~ ~n~Gwen Niles Sean Ogden ~n~aka DJ Nightshade, ~n~Robin Orlowski, Jonathan Palmer, ~n~Tanvi Patel, Jane Peterer,
+
+[CR19_16:CRED01]
+~n~ ~n~Mark Picchiotti, Rob Playford, ~n~Dan Quan, R. Ramnarayan, ~n~Mary Beth Roberts, ~n~Virgil Roberts, Lindsay Rodman,
+
+[CR19_17:CRED01]
+~n~ ~n~Jim Romano, Craig Roseberry, ~n~Gerry Rosenblatt, RZA, ~n~Ali Samii, Alan Scholefield,
+
+[CR19_18:CRED01]
+~n~ ~n~Christopher Scott, Suzi Scott, ~n~Fredro Scruggs, Jennefer Showalter, ~n~Alan Skiena, Saskia Slegers,
+
+[CR19_19:CRED01]
+~n~ ~n~Fran Spero, Lem Springsteen, ~n~David Steel, Jane Ventom, ~n~Christian Wiseman, Debi Wylde,
+
+[CR19_20:CRED01]
+~n~ ~n~Donna Young, Richie Zito
+
+{ reLCS - new strings }
+{ main menu }
+
+[FEM_MM]
+INICIO
+
+[FEP_STG]
+Iniciar juego
+
+[FEP_OPT]
+Opciones
+
+[FEP_QUI]
+Salir
+
+[FET_QG]
+SALIR
+
+[FEQ_SRW]
+¿Seguro que quieres salir?
+
+{ options }
+
+[FET_OPT]
+OPCIONES
+
+[FET_GRA]
+Configuración de gráficos
+
+[FET_PS]
+Configuración de hugador
-[FED_WLM]
-MAPAS DE LUZ DEL MUNDO
+[FET_MIG]
+IZQUIERDA, DERECHA, RUEDA DEL RATÓN PARA AJUSTAR
+
+[FET_HRD]
+SE HA RESTAURADO LA CONFIGURACIÓN PREDETERMINADA
+
+[FET_APP]
+APLICAR
+
+{ controls }
+
+[FET_CTL]
+Configuración de controles
+
+[FET_CTI]
+Controles clásicos
+
+[FET_STI]
+Controles estándar
+
+[FEC_RED]
+Redefinir controles
+
+[FEC_MOUSE]
+Configuración del ratón
+
+[FET_DEF]
+Restaurar valores por defecto
+
+{ mouse settings }
+
+[FEC_MSH]
+SENSIBILIDAD DEL RATÓN:
+
+[FEC_IVV]
+INVERTIR VERTICALIDAD RATÓN:
+
+[FET_MST]
+CONDUCIR CON EL RATÓN:
+
+{ audio }
+
+[FEA_NM3]
+NO HAY ARCHIVOS MP3
+
+[FEA_3DH]
+HARDWARE DE SONIDO:
+
+[FEA_2SP]
+2 altavoces
+
+[FET_DAM]
+MODELADO ACÚSTICO DINÁMICO:
+
+[FEA_4SP]
+Más de 2 altavoces
+
+[FEA_EAR]
+Auriculares
+
+[FEA_MPB]
+SUBIR VOLUMEN DE MP3:
+
+[FEA_SPK]
+CONFIGURACIÓN DE ALTAVOCES:
+
+[FEA_ADP]
+DETECTAR AUTOMÁTICAMENTE
+
+[FET_RSC]
+HARDAWARE NO DISPONIBLE. RESTAURADO AJUSTE ORIGINAL
+
+{ display }
+
+[FEM_LOD]
+DISTANCIA DE DIBUJADO:
+
+[FEM_CSB]
+BORDES EN CINEMÁTICAS:
+
+[FEC_FRC]
+CÁMARA LIBRE:
+
+{ graphics }
+
+[FED_RES]
+RESOLUCIÓN DE PANTALLA:
+
+[FED_FLS]
+PANTALLA COMPLETA
+
+[FED_WND]
+VENTANA
+
+[FEM_VSC]
+SINCRONIZAR IMAGEN:
+
+[FEM_FRM]
+LIMITADOR DE FOTOGRAMAS:
+
+[FED_AAS]
+SUAVIZADO DE BORDES:
+
+[FEM_2PR]
+ALPHA TEST TIPO PS2:
+
+[FEM_MOB]
+MÓVIL
[FED_MBL]
-DESENFOQ. MOVIMIENTO
+DESENFOQUE DE MOVIMIENTO:
+
+[FEM_NRM]
+NORMAL
[FEM_SIM]
SIMPLE
-[FEM_NRM]
-NORMAL
+[FEM_SCF]
+FORMATO DE IMAGEN:
-[FEM_MOB]
-MÓVIL
+[FED_CLF]
+FILTRO DE COLOR:
+
+{ skin }
+
+[FES_SKN]
+NOMBRE DE APARIENCIA
+
+[FES_DAT]
+FECHA
-[FED_MFX]
-MATFX
+[FES_SET]
+Utilizar apariencia
-[FED_NEO]
-NEO
+[FET_DSN]
+Apariencia predeterminada del jugador.bmp
-[FEM_PS2]
-PS2
+{ pause menu }
-[FEM_XBX]
-XBOX
+[FET_PAU]
+MENÚ PAUSA
-[FEC_IVP]
-INVERTIR VERTICALIDAD MANDO
+[FEP_RES]
+Continuar
-[FEM_NON]
-NADA
+[FEQ_SRE]
+¿Seguro que quieres salir? Se perderán todos los progresos desde la última partida guardada. ¿Quieres proceder?
+
+{ map }
+
+[MAP_YAH]
+ESTÁS AQUÍ
+
+[FEH_MPH]
+RATÓN, CURSORES PARA DESPLAZAR - RE PÁG, AV PÁG, RUEDA RATÓN PARA HACER ZOOM, L - LEYENDA
+
+{ control keys }
+
+[FET_CFT]
+A PIE
+
+[FET_CCR]
+EN COCHE
+
+[FEC_NMN]
+NUM. ~1~
+
+[FEC_ETR]
+ENTRAR
+
+[FEC_DOT]
+NUM. .
+
+[FEC_UPA]
+ARRIBA
+
+[FEC_DWA]
+ABAJO
+
+[FEC_RFA]
+DERECHA
+
+[FEC_PGU]
+RE PÁG
+
+[FEC_PGD]
+AV PÁG
+
+[FEC_RTN]
+INTRO
+
+[FEC_NUS]
+NO UTILIZADO
+
+[FEC_HME]
+INICIO
+
+[FEC_RCT]
+CTRL DCHO.
+
+[FEC_LSF]
+MAYÚS IZQ.
+
+[FEC_DLL]
+SUPR
+
+[FEC_TAB]
+TAB
+
+[FEC_IBT]
+-
+
+[FEC_LCT]
+CTRL IZQ.
+
+[FEC_MSL]
+RATÓN IZDO.
-[FEC_DS2]
-DUALSHOCK 2
+[FEC_MWB]
+RUEDA RATÓN ABAJO
+
+[FEC_MWF]
+RUEDA RATÓN ARRIBA
+
+[FEC_SPC]
+ESPACIO
+
+[FEC_RSF]
+MAYÚS DCHA.
+
+[FEC_MSR]
+RATÓN DCHO.
+
+[FEC_CLK]
+BLOQ MAYÚS
+
+[FEC_MSM]
+RATÓN CENTRAL
+
+[FET_CIG]
+RETROCESO: QUITAR - BIR, INTRO: CAMBIAR
+
+[FET_EIG]
+NO SE PUEDE DEFINIR UN CONTROL PARA ESTA ACCIÓN
+
+[FEC_CMP]
+COMBO: MIRAR I+D
+
+[FEC_LOR]
+Mirar hacia la derecha
+
+[FEC_LOL]
+Mirar hacia la izquierda
+
+[FEC_LBA]
+Mirar hacia atrás
+
+[FEC_IRT]
+INSERT
+
+[FEC_PLS]
+NUM. +
+
+[FEC_QUE]
+¿¿¿???
+
+[FEC_UNB]
+SIN ASIGNAR
+
+[FEC_ERI]
+¡Error! Una o más acciones de control no están asignadas a una tecla o botón. Comprueba que todas las acciones de control estén asignadas.
+
+[FEC_TFD]
+Torreta /morro abajo
-[FEC_DS3]
-DUALSHOCK 3
+[FET_RIG]
+ELIGE UN NUEVO CONTROL PARA ESTA ACCIÓN
-[FEC_DS4]
-DUALSHOCK 4
+[FEC_TFU]
+Torreta /morro arriba
-[FEC_360]
-MANDO DE XBOX 360
+[FEC_TFR]
+Mirar /Torreta a dcha.
-[FEC_ONE]
-MANDO DE XBOX ONE
+[FEC_TFL]
+Mirar /Torreta a izda.
+
+[FEC_ANS]
+Acción
+
+[FEC_HND]
+Freno de mano
-[FEC_NSW]
-MANDO DE NINTENDO SWITCH
+[FEC_SPN]
+Esprintar
-[FEC_TYP]
-TIPO DE MANDO
+[FEC_JMP]
+Saltar
-[FET_AGS]
-AJUSTES DE MANDO
+[FEC_CMR]
+Cambiar cámara
-[FEM_AUT] { aspect ratio related }
-AUTO
+[FEC_SUB]
+Misión secundaria
-[FEM_PED]
-PED DENSITY
+[FEC_HRN]
+Claxon
+
+[FEC_RAD]
+Radio
+
+[FEC_EEX]
+Entrar y salir
+
+[FEC_ZOT]
+Alejar zoom
+
+[FEC_ZIN]
+Acercar zoom
+
+[FEC_RIG]
+Derecha
+
+[FEC_LEF]
+Izquierda
+
+[FEC_CEN]
+Centrar cámara
-[FEM_CAR]
-CAR DENSITY
+[FEC_BAC]
+Retroceder
+
+[FEC_PTT]
+Objetivo anterior
+
+[FEC_FOR]
+Avanzar
+
+[FEC_PWE]
+Arma anterior
+
+[FEC_NWE]
+Siguiente arma
+
+[FEC_FIR]
+Disparar
+
+[FEC_NTR]
+Siguiente objetivo
+
+[FEC_LDU]
+Mirar abajo
+
+[FEC_LUD]
+Mirar arriba
+
+{ improvements & fixes }
+
+[FED_HUD]
+INTERFAZ:
+
+[FED_RDM]
+MAPA E ICONOS
+
+[FED_RDB]
+SOLO ICONOS
+
+[FEA_MUS]
+VOLUMEN DE RADIO:
+
+[FEA_SFX]
+VOLUMEN DE EFECTOS:
+
+[BUSTED]
+¡TRINCADO!
+
+[FEM_SL1]
+Archivo 1 no presente
+
+[FEM_SL2]
+Archivo 2 no presente
+
+[FEM_SL3]
+Archivo 3 no presente
+
+[FEM_SL4]
+Archivo 4 no presente
+
+[FEM_SL5]
+Archivo 5 no presente
+
+[FEM_SL6]
+Archivo 6 no presente
+
+[FEM_SL7]
+Archivo 7 no presente
+
+[FEM_SL8]
+Archivo 8 no presente
+
+[FES_DEL]
+Borrar partida
+
+[FEO_CON]
+Configuración de controles
+
+[FEO_AUD]
+Configuración de audio
+
+[FEO_DIS]
+Configuración de pantalla
+
+[FEO_LAN]
+Configuración de idioma
+
+[FEO_PLA]
+Configuración del jugador
+
+[FEB_AUD]
+Audio
+
+[FEP_AUD]
+AUDIO
+
+[FEH_AUD]
+AUDIO
+
+[SOUND]
+AUDIO
+
+[FEC_LFA]
+IZQUIERDA
+
+[FEH_SGA]
+Iniciar nueva partida
-{ end of file }
[DUMMY]
THIS LABEL NEEDS TO BE HERE !!!
AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file